2022 年该怎样自学 Reactive programming?

2022-09-01 10:13:48 +08:00
 ShikiSuen

威注音专案已经有半年多了,目前也已经找出了使用 IMK 选字窗的的方法。于是可以慢慢开始考虑让整个专案“去 zonble 化”的可行性。其中的一个方法是 Apple Japan 的输入法工程师 Mzp 写的 InputMethodKit 日文教材当中的利用 ReactiveSwift 与 Actomaton (ReactiveAutomaton) 做状态管理的方法(与 Zonble 采用的“状态与策略结合”的 design pattern 完全不同)。

然而,我智商不够。Mzp 的教材当中,唯独 Reactive Programming 这一点,我目前实在想不明白究竟该怎样将这些与威注音的产品功能需求结合起来实现。不过我不是来问这个的,因为太个案了。

结论就是:我可能需要重头理解 Reactive Programming 究竟是怎样一回事。所以想在这个版请教一下各位大神、看看有没有相关的易懂的理念入门自学资源。

P.S.: 特别是在做东亚中日韩语言处理这一块,乃至至少中文纵排,懂日语都是一个很好的工程师技能加分项。我不是工程师出身,只是在维护我这一个小案子,但能看懂日语写的资工材料已经很幸福了:原来 InputMethodKit 的高端知识并非被 Zonble 垄断着。

9613 次点击
所在节点    iDev
11 条回复
imzcg2
2022-09-01 10:43:40 +08:00
除了反应式编程能看懂,其他都在说些啥啊!有大把的视频和文字教程可以学
lmshl
2022-09-01 11:19:49 +08:00
我的学习路线是 《 SICP 》-> Node.TS + Ramda.js + React + RxJS -> Akka Stream -> 工作中用 Scala 写了有 5 年代码 -> ZIO ZStream/Cats-Effect fs2 等纯函数式流库

书的话国内有一本 《响应式设计模式 reactive design patterns 》,但主要讲的是架构层面的,具体到状态管理与框架,还是得多写多练才行。掌握(纯)函数式编程可以让你在各种 Reactive Programming library 中自由切换,因为背后的理念都是相通的
yazinnnn
2022-09-01 11:42:24 +08:00
你在说啥
ljpCN
2022-09-01 11:54:58 +08:00
看来是台湾网友。有一些用词根大陆有差异。比如专案->项目,个案->个例。
当然,用词应该不是最根本的楼上不懂楼主的原因。
应该还是楼主没有说清楚自己的问题背景。楼主标题里说的是响应式编程,但开篇却开始提输入法的开发。不知道楼主是不是想问,响应式编程是什么,怎么应用到输入法的开发中?
ljpCN
2022-09-01 11:55:21 +08:00
@ljpCN typo:根->跟
yannxia
2022-09-01 11:57:16 +08:00
网上很多的 Blog ,差不多看看就懂了,几年前我还写过一个源码分析,就不嫌丑了。reactive 重点显然就是线程切换的部分,那部分理解了其他的 operator 也只是顺带的事情。
ShikiSuen
2022-09-01 12:35:24 +08:00
@ljpCN 输入法开发用 Reactive Programming 的话,有个现成的案子: https://github.com/mzp/EmojiIM 但我看不懂他的实现逻辑。
ShikiSuen
2022-09-01 12:36:40 +08:00
@ljpCN 我不是台湾人,但你当我语文老师是台湾人就好。
这篇提问文本来是贴在脸书的,直接复制粘贴到 V2EX 忘记转术语了。
lmshl
2022-09-01 13:33:32 +08:00
这人明显函数式厨,看他 GitHub 还玩 ML ,Coq 定理证明,还有他用的这些符号 <|>,这是 Alternative 的 or 操作: https://en.wikibooks.org/wiki/Haskell/Alternative_and_MonadPlus

https://github.com/mzp/EmojiIM/blob/a3b10281c7/Sources/Automaton/ReactiveAutomaton%2BAction.swift
amon
2022-09-01 14:44:48 +08:00
之前搞 iDev 时眼熟孙志贵这个名字,记得喜欢折腾字体,哈哈。
diagnostics
150 天前
@yannxia great blog post, thanks.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/876919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX