好 我们开始吧嗨 大家好新一期的 WebWorker 播客又来了 WebWorker 播客是几个前端程序而闲聊的音频播客节目这一次是我们的技术专场我们邀请到了几位熟悉的老朋友加入我们来一起来做一个技术闲聊在线上有 Smart 嗨 大家好我是又来学习的 Smart 我们邀请到了韩老师哈喽 大家好我是小韩老师然后我们这次邀请的嘉宾我们邀请到了 Jason
大家好,我是富尔做的 Johnson 然后我们邀请到了 Dr.Wu 大家好,我是 Viu 的 team member Dr.我也是现场看到了又重新见到了两位我们这会在旁边有 EvaHello,我是又来旁边的 Eva 这次我们邀请了 Johnson 和 Dr.WuJohnson,我们这次聊点什么好?这次我们聊刚刚在
那个那空调什么 VM3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M3M
Evan 在会上讲了一下 Viu 和 Vid 的一些现状然后去我最后看的部分就是他盛赞了就是这个响应式系统的巨大气声然后就是说了一下 Alien Signal 上面有 Yeah PPT 就是白这个东西然后说有多快什么之类的
对,这次就是我们想聊的一个主题了 Alien signals 这个东西我听着好陌生啊这个东西是什么,它能解决什么问题然后它和 vue 有什么关系张先生您能给简单介绍一下吗嗯,那我先从 signal 说起吧首先 signal 就是一个
响应式系统的实践的一个统称然后我们在 Vue3 甚至 Vue2 的时候已经开始有这一个东西去做 UI 画面的一些响应式的更新然后为什么要出来这个 AlienSkiller 因为我其实在 Vue3.4 的时候做了一些 Vue 响应式系统的一些改进然后最后是
把他的 compute 功能做了一些性能的提升然后当时到 vue 3.5 的时候 iPhone 是把那个响应系统切换到基于一个 PUA 的一个实现然后我看到实现的时候就其实那时候发现因为 PUA 它是基于一个顾的模型就是它数据不是更新的时候实时去推送到所有的订阅者它是
订阅者去取职的时候才去检查需不需要更新然后我当时发现其实这样会在某些场景上面会有一个性能问题然后但是 Viu 已经切过去了然后我想再继续研究这个 Bootport 的一个方式的一个改进的方向的话就把它单独拎出来做
这里边有很多有趣的节点和有趣的故事韩老师经历过感受过这一块吗从你的作为一个参与者或旁观者感受这些响应式的一些优化有印象吗这个响应式其实很早就有了之前就是从其实最早就是 realtrain 因为 ref 还有 reactive 这种响应式的话
从 Vue 的 VCA 那个时代就开始了后来从 Preact 可以说是应该不是 Preact 是 SolidJS 把它发芽忘大了它就正式的把 Signal 这个名字给发芽忘大了但实际上从 API 的角度上其实和 Vue 的 VCA 其实差不多了当然我们就统称把它叫做 Signal
Signal 就是有可能有些听众不是特别清楚啊就 Signal 的话你既然就可以说是它有一个 get 函数还有一个 set 函数 get 函数呢我就能去得到当下那个 Signal 最新的值 set 函数呢我就把那个值写到了这个 Signal 里面大家在这么讲大家应该可以熟悉一点
刚才 Johnson 也说了一个特别有意思的点,就是 punch 和 pull。那可能有一些轻动就不是特别了解,那 Johnson 能再讲一讲这个 punch 和 pull 的差别吗?嗯,好,就是其实你要做响应式系统,你首先最原始两个概念就是一个依赖,一个原始值,跟一个定阅值。
然后你订阅者要怎么知道他是不是需要更新是有好几种方法去通知的然后第一种就是 Push 方法就是你的原子的值改变的时候你主动去推送到每一个订阅者上面然后他就知道要更新或者做一些副作用然后第二个方法是要 Pull 方法就是
订阅者是在每次取职的时候你去完整的检查一遍你的依赖有没有更新然后类似一种 Full Diff 的一个方式吧然后这个性能就比较差然后第三种方法就是结合两种是一种叫 Push Pull 的方法首先依赖他更新的时候他通知他会主动通知订阅者
告诉你我现在更新了然后你后面是需要刷新你的新的值然后音乐者他就不会立马去重算而是等他真的需要取值的时候他再去基于他当前的状态比如我收到过我的依赖是张所有我现在需要重算然后他现在才会去重算这是一个 push pull 的一个方式然后这也是 alien scale
采用的方式补充一下就是就是他这个不许和铺其实我我我一开始就是听就是教程他在那个
社交平台上去发这个相关的时候其实我是有点懵的我说诶 这个怎么感觉没听过然后后面我去学习一下它其实就是比较学术的说法呢就是这个响应式系统它有那个求值模型的说法就是我到底是怎样求值的就是它其实可以分为两大种就是刚刚说到的 push 就是推模型和 pull 拉模型
如果说要类比到我们 JavaScript 里面就是像那种普通的函数函数不是我们作为生产者我只是
我生产内容但是具体什么时候你想要这个值你就你什么时候调用我什么时候给你最终就是拉曲拉模型的这个一个在加 scribbling 的一个映射然后像那种推送体系呢如果也可以找一个加 scribbling 映射的话就是我觉得可能比较像 promise 就是我自己决定我的值什么时候好好了我就 dan 给你相当于是这样一个 gan
然后刚刚 Johnson 说到 push/pull 的结合因为两种模型各有优劣嘛它有一些比如说闪烁什么 glitch 那种
会有那种依赖闪烁的问题然后应该是基于这个解决这个问题的道路上去做了一些做一些优化然后就得出了现在这个这个模型之前我们深入去了解过这部分但听起来看起来还是有这个技术的路线的演进嗯
也也也问问看看各位那如果我们是不是还可以从比较基础的部分开始讲比如刚才海老师也谈到了我们提到这个 signals 是一个是一个名词是一个背后里边有很多演练的意义那对于咱国内很多人来说可能更熟悉的是 web red 生态那其他的生态刚才也提到了 sold web red 这一块那这里边我们是不是可以先我们慢慢讲我们从 signals 开始讲
那 signals 刚才海老师也提到了一些背后的演进那我从问一些作为小白问一些基础问题比如这个 signals 和我们 vue 中 vue2 也好 vue3 也好不同的想象式体系背后这里边有哪些呃关联关系他们有哪些相似和不同那为什么大家认可是 signals 而不是说类似于 reactive 或者说想象式是这这种呃称呼呢其实我觉得刚刚刚刚刚提到就 signals 只是大家对这个
其实就是大家对响应式系统的一个叫法区别吧我个人感觉也可能不对因为 Signal 从我看的话他们是在我接触 Solid 之前我其实都不知道这个但是我知道响应式系统但是我看了他们做的东西之后其实 Signal 其实就是
我以为是那个响应式系统的另一个名字而已这个上来就聊这么硬核的吗行 斯拉特提醒我其实这个就是之前咱们邀请 Evan 那一期 Evan 就也说过现在前端的眼镜响应式这块大部分都是用 Signal 去做的包括 Solid 然后 Svelte 然后 Vue 说 Vue 可能是最早用 Signal 做这个响应式系统的
signal 就是翻译过来就是信号的意思
我个人理解就可能是我通知你的时候我不会告诉你我这个值到底是从 A 变到了 B 而是我只是告诉你我改变了至于你用的时候你拿我的时候我在从我在直接再把 B 告诉你我在直接把 B 给到你就可以了不会再像之前我只改变一轮我就把我所有最新的值都给到都提供给我的消费者
这样的话就可能会能节约一个最新的节约内存的开销这可能我们就是平时你在那个控制台你可以看到你每个页面 Java 虚拟机它所就是 JavaScript 它所占用的一个内存这方面应该是有很大的优化然后我们这期聊的我听下来感觉是在原来的 Signal 系统上又
重新做了优化 Johnson 和 Dog2Woo 他们是重新做了优化然后使性能更加快了好像是在最新版本就已经上了是吗现在还是 3.5 3.6 还没出这个是 3.5 的版本是已经支持了这个吗没有 3.6 才会发布出来我感觉 3.6 好像是一个必须要更新的版本确实
那这个之前有在开发过程中碰到一些兼容性的问题之类的吗?开发过程的话对就比如说我如何兼容我之前也有的一些数据收集模式呀或者就说这种通知的模式呀这种
其实兼容性问题倒没有遇到很多因为我在做这个 Signal 之前我在改进这个 View 3.4 的响应系统的时候我这个工作已经做了差不多可能有一年多了然后是断断续续把 View 的响应系统整个呃湿透了吧算然后最后再去做这个 Alien Signal 的时候我就比较清楚会有
会有什么需要架构上面需要兼容的一些行为然后我可以在算法上面就把它兼容掉这有些东西我就可以比如说那个在 view3.4 的时候它的 compute 跟 effect 其实是基于一个同一个鸡肋的然后但是我发现你这样做 compute 会收到通知的时候它会经过一个叫 notif 的一个 hook 然后
在 Hook 里面去处理 Computer 更新但如果这个东西其实我们重做的话我们就可以把它磨掉了对 Computer 来说其实通就是没有必要你可以在算法里面直接去调 ComputerUpdate 然后这个 UFO 塔利部其实就已经是一个系统上的比较大的提升听起来
似乎就是说虽然说 3.6 才会有这个新特性但是从最开始的开发过程中就一直已经未在这个大招做准备了算是吧因为我一开始其实只是想研究一下各种响应系统之间的区别就我之前我在 X 上面我发布过各种响应系统的
性能的一个雷达图就每一个每一个 FMV 的响应系统它在每一种场景上面的表现怎么样然后那时候是各有优势吧有些 GPU 的响应系统呢因为它没有 push 的一个过程它就在某些场景比较快
然后有 push pull 的话就可能表现比较平均然后到我就我就那时候就想说有没有可能有一种算法是在全部场景下面都会可以有比较好的性能然后那时候就开始
把那个 view 3.4 的显示系统单独拿出来然后慢慢去看有什么地方可以改进去针对每一个使用场景去改进每一个性能瓶颈后面发现其实可以做到在全部场景里面都是最快的性能这个是可以做到然后后面就是 Aliens 就出来了当作发出来其实这些小故事可以分享就挺多人是
对我这个呃挺怀疑的就你真的这么快吗或者说你这个这么快肯定是嗯没有处于全部情况也这样情况然后我会给他们呃分享我的那时候原代码还还没有公开我就会把他们拉到我的库里面让他们去看通常他们看啊都
我记得当时那时候 Alien Signal 还不叫 Alien Signal 最开始的时候叫 Native Signal 就是会有人在抨击中等说你这个东西真的有这么快他们不从那个实现上去挑色发现说真的挑不动真的好快他们就说从名字上去说你这个东西叫 Native Signal 怎么听起来像是你是拿 Native 实现的或者怎么样的
他可能觉得说我占了 Native 这个名字是想可能是炒作或者就是想占 Native 这个名字但其实我到时候确实不知道原来 Native 是代表 CES Look 的缘分实现这个意思我到时候没有再改良不然他虽然说我是因为不用 JavaScript 的动态语言的特性所以我用 Native 这个词
但后面有人给我提了个建议用 alien signal 听起来也挺合适就改过去里边还有一个小故事像你刚刚说是基于 Vue 做的基于 Vue 做的 alien signal 它是和 Vue 绑定的吗比如说我们其他的其他的底层库可以用这个东西吗它是和 Vue 不绑定的其实我现在
虽然说是基于 Vue 3.4 去重写但是我重写过程其实也经历非常多次的重写又重写又重写就已经完全跟 Vue 3.4 不一样了然后我们是重写完之后我们把代码是移植到 Vue 的原代码里面而不是说一种依赖的方式
所以 AlienScaler 跟 Vue 的响应系统它们是两个独立的运行时如果其他库要用的话它们可以用 Vue Relativity 或者 AlienScaler 两个都可以
这里我们其实那在 vue 3.6 的时候引入了这个 signals 那个 alien signal 它是怎么来作为引入比如我们以往去去拆去看那个 vue 这个库本身的话可能区分出来 at vue reactive 这个库现在也是作为一个独立库去使用的还是融合打碎了融合进去的这个我可以说一下就是如果从那个就是如果大家感兴趣你可以去看那个 alien signal
的 API 它其实对外暴露了一个叫 Create Reactive System 的一个 API 就是你可以通过因为 Johnson 他是把他刚说的就是可以从算法层面上做到各种情况都比较快的一个实现他将来是把这个算法实现封装起来的你可以利用这套算法去创建就是适用于你场景的一个 Reactive System
Vue 接入方式也是说我用 API 去创建一套适用于 Vue 的 reactivity system 而已对于 Vue 来说它是不是把 AlienSignals 作为一个依赖了然后去把抽象的 API 然后做比如有一个初始化的方式或传达参的方式去直接使用它
Dotter 我刚刚提到,Analytics 有个 Create Relative System 的 API 是可以创造你自己的一个响应系统的。然后 Vue 的话,像 Vue 3.6 的话,它是把这个 Create Relative System 里面的代码移植过去。
而不是说把 AlanSiglo 当成一个依赖来应用原来如此那后续比如有去和其他框架或其他框架有感对对这个使用过程感兴趣有尝试接触或准备进一步的去那个做推广或者做使用其实我
原本做这个 Agencies Guild 的目的可能不是说像你刚刚说的那样是推广响应系统到其他方面而是我可以介绍一下 FOLA 它现在虚拟代码生成的过程首先我们要把一个 vue 文件 vue 代码
生成成一个可以合法的 type script 数据代码我们要经过主要是两步第一步是把那个 view 源代码 pass 成一个合法的一个 view 的 astsfc 的 ast 然后再把 template ast 漏了再把 template 的代码
它成一个合法的 template AST 然后我们再用 template AST 去生成最后的 ts 虚拟代码这里有两步这两步它都是全量的就是说我每次在 template 里面插入一个字 fsc ast 跟 template AST 它都是还有最后的虚拟代码生成它都是要全量的重算
然后我就在想能不能做到一件事情就是我们基于 signal 去把 templateSFC 的 AST 跟 templateAST 跟序域代码的生成增量做掉对所以我们要做的这件事首先就是 signal 它的
offer head 要很低然后这个就是我为什么要做 alien signal 来做这件事情然后第二步就是我们需要一种架构去把 signal 跟 astparts 和 code generation 去连接起来这个是我后面可能要做的东西你刚刚问的问题不放心能不能再问一下什么他问一下
你刚刚问的问题是刚刚的问题就是说有没有考虑过会像别的一些前端框架库就是说我其实做 A2S 就是为了做 FOLA 的虚拟蛋白生成所以后面应该是做那个东西应该 C 楼这边应该已经结束了它的发展那比如说我现在就突然又想造轮子想再重新做一个前端的框架
我使用 Alien Signals 的成本会高吗?就是它如何使用?重新做一个前端框架你是可以直接用应用 Eli 这个 Alien Signal 就像 Johnson 刚刚说的就是你其实直接 Eli Alien Signal 然后用它提供的一个 API 去 create Reactive System 你就可以去让你的框架就是接入到 Alien Signal 这套算法
其实在那个 Johnson 之前在社区上有发过就是其实已经有不少小伙伴就是拿 Alien Signal 去 port 到不同的语言了包括说就是 Reactor 还有什么甚至 Go 我记得我好像看到过就是有人把那个 Alien Signal 直接 port 到 Go 了快语对是的我觉得由此可以看出就是 Alien Signal 他去你想你有一个新东西想去接 Alien Signal 他应该是成本没有那么高的
嗯但是听起来应该是通用性会比较好甚至能抹平对能抹平语言的差异韩老师有在追踪这一块吗然后我之前追踪的不太多我觉得那个 smart 可能想问的问题是这个 alien signal 能不能像 vite 一样一统江湖就大家都用它做响应式我不知道我这个解读是不是对的对对对也有这个想法
对吧,因为这个就比较有意思,因为这个框架圣战里面大家都喜欢讲,哎,这个你的响应是怎么做?所以大家肯定会想,是不是有一个一统天下?怎么说呢?我觉得这个可能有点困难,为什么?首先 SIGNAL 有很多,它已经是 TD39 的一个标准了。
所以他后面背后就是 Letterdown 来推这个 proposal 了所以很多很多框架实际上他都有自己的实现快不快慢不慢这个是他们自己的想法但是呢大家都有自己的一套东西
因为一旦如果我们真的用 alien signal 或者用别人的 code 的话那其实很大一部分上来说你的框架有很多东西你都不自己做了其实这个就打个问号大家是不是真的想这么搞所以这个可能有点困难有时候他们现在是有在讨论用直接套用在规范里面直接套用 alien signal 的算法的但不是做一个依赖
因为现在确实是 Alien Signal 这个算法是目前 overhead 最低的诶,那个 Chance 能不能解释一下为什么 Alien Signal 能那么快然后这个算法说的非常神秘我觉得听众朋友们肯定都特别想知道诶,它为什么那么快它的 overhead 为什么会这么低
有一个很大的原因是我们除了我们做 push-pull 之外我们还结合了 P-Vet 的双链表双链表这个有点难解释就是本来
一个依赖跟一个订阅者他们各有一个宿主是依赖他需要他有一组什么订阅者然后订阅者他有一组什么依赖然后这是两个宿主但是基于 PVI 的双向链表他就可以把两个宿主变成一个四个方向的一个链表然后
但是 AlienSync 其实在此之上还做了一个改进是我们只用了三个方向来实现相同功能所以在内存方面比 PWA 还更低一点然后 AlienSync 也是目前唯一把 Push-Pull 模型跟
双向链表结合在一起的一个详细。这边要不要再给听众朋友们科普一下,这个双向链表是怎么回事?或者说那个算法里面怎么会用到这两个链表?这个链表其实还挺少见的,对不对?我们那个除了面试的时候让你 leadcode 的 link list,我们基本上应该就没怎么用过了。这个要不多说一下。
我说一下吧,就是在这个,我记得当时 Viu 刚放不到 3.5 的时候,就是 Aaron 不是说,就是他其实那个版本已经是基于双向链表做了一次优化了。那个时候在社区上看到一个叫海老师大佬发了一个
我从中就订真了图看两个小时总算是看出一些端面就是在一个想象式系统中它其实有两个很重要的角色一个是依赖一个是定阅者就是依赖其实就是 dependency 它其实更多的是作为一个信号源的存在就是说我会不断的去相当于是你可以想象我是个天线我会不断的往外发送一些信号
这可能也是 Signal 的来源,就是会发送一些信号出去。然后订阅者他们就会去接收这个信号。在这个过程中,如果一个 E-Lite 想要去让所有自己的订阅者都能收到自己最新的信号的话,之前我们做法就是说拿一个数组去把我这个 E-Lite 所有的订阅者都装起来。
然后然后我再去一一通知然后这个时候然后我讲说我是自己身为一个 subscriber 就是我是一个订阅者的时候嗯有有的时候我会要去就是要去知道我的那个我自己的 dapps 有有什么吗然后去做一些做一些工作然后那那我自己就会有一些有一个有一个之前做做法是有一个数组去维护所有的一个 dapps 那在这个 system 里面呢他这个
你就有两个数字去各自装各自的东西它会非常的庞大然后这个双向电表它这个算法复杂度我现在一时半会儿我算不出来但是它肯定是比双向电表要高很多的然后
双三链是说,我记得一个节点,它是当作两个的签手人,就是说你俩是好朋友,我记住你俩好朋友,下一个关系,在实现同样的需求,
创建链表用到了更少的节点去做到了这个事情因为他只能去维护那个 dependent 结合 subscriber 的关系就行了相对是一个连接者我不确定我说的是不是有点太抽象了有画面了我觉得这个还是需要结合那个叫海老师大佬那张图要比较清晰一点
我们是播客节目,没有画面。我们这么说,我听下来 Signal 系统就有点像这个,我是小区业主,我去拿快递,拿快递的时候我当中可能可以 subscribe 好几个数据员,什么中通快递,远通快递,顺丰快递。
然后几个数据点里面我又可以有一个中间的收信人就小区门口的老保安对吧然后小区的门口的老保安可以 subscribe 一些快递小哥然后我小区业主又可以 subscribe 老保安这里我们就弄出了一个类似于一个依赖的图业主依赖保安依赖快递
OK 那如果是这个种案例的话我们怎么能套到刚才说的双向链表和数组实现呢就比方说我的数据源和我的依赖项然后我该怎么把它对应到它的链表上面呢大胡博能不能讲一讲这个会更抽象吗然后我们也可以更简单一点有时候我们也不用那么非常的深入
Dr. Wu 真的是博士吗我还好奇我在这里正式澄清一下叫 Dr.是小时候取着玩的一直用下来主动本科看看各位这部分我觉得也可以不那么深入特别深入因为这部分看起来并不是举一些简单例子能够关联起来的或者海老师还可以做一些技术的补充
是的这个如果要关联的话可能还需要再盯着大佬的图再反复的琢磨一下才行嗯可以把它变成比
比使用一个双向列表比使用两个数组要内存更低嗯对那我刚才听下来虽然有些细节还不完全理解那就是意味着我们以往我们使用数组的方式去解决了这个问题那我们现在发现了有一个更好的方式那现在中间我们进入第二阶段发现双向列表那 JSON 后面又发现了一个更好的方式那我看起来使用了三个向量的部分然后这部分就是
逐一从原来的技术上不断的优化优化成了最终现在这个解决方案的样子是的还有一点可以补充一下就是现在那个 JS Framework BunchMath 上面第二第三是 Safir 跟一个叫 Valetyphne 的单独一个生导库这个 Valetyphne 是做 JS Framework BunchMath 的作者然后他
他采用的一个方法算法叫做图形着色就是你一个值改变的时候你是向下传播的
是以颜色为一个状态然后如果只是改变了你就比如说传个黄色然后当你再去访问那个值你确定那个值改变了你再传个红色然后这样一级一级的把这个状态传下去而这个算法其实我发现刚好是我给 view3.4 做的小英系统的
相同的原理,相同的一种原理所以其实 Aliens SQL 现在采用的因为 Aliens SQL 是继承了 Vue 3.4 的那个算法所以其实 Aliens SQL 跟那个排第二的 Vertifity 它算法其实是原理上是一样的所以我们可以发现我们现在第一第二块的 Sql 库都是基于一种算法它可能我觉得有很大机会其实就是我们可以
写到最好的一个算法嗯哎这边聊到这部分我感觉很刚才很多我们讨论了一些技术的细节到一些呃对一般来说可能需要深入理解可能才能理清的一些技术的一些具体点那我们回到最初问题
看起来我们可以回答一些基础的简单的问题那对听众来说可能这种思维负担会更小首先呢就是 Alien Signals 是有其他的后选的有其他的竞争对手的我们为了解决这个 Signals 这个需求或者这个目的那有不同的方案那现在 Alien Signals 毫无疑问的是站在第一的这个位置
那其他的刚才也提到了第二的位置可能背后的一些思想或是一些算法是相似的那未来也可能也有机会共同协作把这部分优化的更好
刚才也提到了,Wave 3.6 是把 Signals 移植到了这个 Wave 体系中,对 A-Line Signals 相当于有一个更好的实践和一个大量的铺开,可能 3.6 发了之后我们会发现,还有各种边缘的,各种各样的,没想到小问题,相当于有一个第一手的反馈,能够借助这个 Wave 框架的 3.6 能够收集到更多的反馈,然后让 A-Line Signals 可以优化得更好。
刚才也提到了一个点说这个 signals 现在已经是作为一个 TC 的规范了那我们很尴尬的发现了那现在的一种非 TC 非规范也能达到比规范性能更好的一个效果那刚才 Jason 也提到了那个这个方案的维护者也在尝试融合或者说那个熟悉理解借鉴这部分的 Alien signals 的这个想法然后把让
让这个原生的这个方案尝试做的更好我看起来现在是到了这个地步了应该还是讨论这一段吧因为我觉得最后采用来一种 FREEMODE 的算法是老实说是有一点政治上的原因的吧就是做的人可能是如果是 Google 的人可能他们更倾向是采用那个 Angular 的算法那其实去年的年度最佳游戏是
叫我經紀人
刚才我还好奇那我去看这个 Alien Signal 库的它的那个代码组成更多的是在比如我看到大部分是在使用 TS 来写的那是不是我意味着我们去实现这个方法的时候刚才也提到并没有依赖 JS 的一些动态的特性那是不是意味着这个你用 TS 去写的语言并没有依赖 JS 的一些特性更多的是做一个抽象抽象的一个通用的一个编程语言的写法它可能
可以移植到刚才提到的购语言上去用还是说他们购语言去移植的时候还是用了一个绑定的那个 JTS 的一个包还是如何来使用的就是你前面说的就是我们算法上面是可以跟语言本身比较切割开的抽象的这么优雅这个我我觉得我可以去我有一些心路历程补充一下就是在这之前就是那个
Alien Signal 还是比较早期版本的时候我当时就抽空我看了一下我发现就是 Johnson 真是个天才我觉得他当时是就是我当时认为他是从 JASGREET 的引擎的优化角度去出发我看到他很多的很多那些地方如果你是一个纯去看你这个代码写的好不好你这个库可维护性怎么样
什么之类的,我这么说吧,这个库的可维护性应该是很差的。如果你说雷震 Johnson 说他突然失忆了,他不记得这个代码怎么写,我觉得你能继续维护这个库的人非常的少。但是这个东西带来了什么呢?就是它带来了极致的性能。它带了为什么 Agent Signal 这么快?就是当时我去看了一下它的一些实现,就是整个 system,
很夸张点什么整个系统大概有核心的逻辑大概有五六百行的代码搜不到一个方括号我们 JavaScript 取值的时候会有的时候动态表达师会去搜用那个动态表达师去获取一个 prop team
根本搜不到一个方工号在那个核心逻辑呢而且他当时还做了很多的那个面向引擎我个人认为是面向引擎的一些优化所以说当时说当时 Johnson 他说就是他社区中有人去把这个 Alien Signal Port 到那个
别的语言我当时还很纳闷我还问教授说这个东西不是我们不是去针对那个加速的引擎去做了很多优化吗怎么在这个别的语言中也这么快刚刚的这一系列解答又告诉我其实它是种算法上面就真的很快只是说刚好是又去迎合了很多引擎的优化路径然后去做到了更极致的性能
这又相当于又一个佐证来证明了这个工具这个库抽象足够好算法的足够的精巧精密
那未来会不会出现比如现在有 go 那会不会出现 go long 之外的比如 rush 的或其他语言的借助这个库来使用或者说这个 go long 去使用这个库的时候它是使用的它原始代码还是借助这个思想做了一个 ts 转 go long 的一个翻译做了一个转译类似如何来理解这个事情
它是人手去转移成 goalang 相当于 ts 里边的逻辑映射到 goalang 语言上它直接用重写 go 重写
诶,这又和未来想提的一个问题相似那是指,其实这个点是指 TS 里边的这些比如这个逻辑这个整体的架构是可以平移到 GoLang 上的因为并不牵扯很多的一些 JS 语法特性它足够的抽象,足够的语言无关所以能够比较轻松或相对容易的能够移植到其他平台上这里我觉得可能就是
我觉得可能是有一点点误解就是他虽然是迁移但并不是说我这个代码你直接粘接过去就能用了你不同语言他那个词法简包括说他的语法比如说你的够里面你去举个词他不在还得 result arrow 吗这样子你直接放回去肯定是不行的他应该是就是把你的比如说每一个关键算法节点的决策
这种路径可以透过去相当于是他拿有点像白皮书并不是我最初以为的 SDK 是吧是吧嗯啊哈老师我理解的对吗啊对但但这个其实你真的要 port signal 的算法去其他语言其实呃很大程度上还是要取决于呃你的你 port 过去的语言它有哪些特性比如说用狗狼可能就稍微简单一点
但你用 RUS 的话你根本就写不出你连单项列表都写不出你更不要说方向列表让你写成单项列表对对 double totem 一下还有的话就是还有的话就是它里面其实有 Alien signal 或者说一般的 signal 库 JS signal 库都是针对 JS 引擎进行优化的这些优化不一定在其他原生语言里面其实是好使的因为一般而言
如果你是写原生源它的链表的 cache 是比较差的当然这个有点扯扬了就是它在内存分布里面比较慢可能没有 array 好到时候可能 pull 的时候你还要再去算一下哪一种情况下你用 array 或者是说连续的内存会更快一点哪一种情况你要用链表这个其实还有很多优化的空间
这个我想补充一下就是刚刚还有谁提到 OS 里面实现不了双天列板或者单天列板这部分其实
因为我们在 SIGNOW 里面那个双向链表只是为了取代 AWAVE 的一个存在所以它跟算法本身是可以切割开的我们是可以再重新再用一个 EGLECT SCROLL 但是把双向链表改成一个基于 AWAVE 的一个方式
嗯,这个就是相当于在回答海老师之前提到我们在 RAS 中实现这个双线链表,比想象中要困难更复杂,张太太其实也提到了,这个方式也是有绕过方案的,或者说直接使用它原生的这些数据格式,数据结构就能解决和绕过我们刚才想象比想象中要复杂的这些问题。
对然后我听下来感觉似乎张森更像是定义了一种开发规范就是说我这个范式就开发范式我这范式是最优的你什么不管是你是什么语言或者是什么框架你可以用我这个范式去达到你最优的结果
然后好像然后听下来说第一第二的库好像目前都是用的这个范式是不是说某种意义上来说这个范式就已经是事实标准的我觉得在 JS 里面是但如果其实有些语言它是可以控制那个内存布局的我觉得其实在类似语言上面可以再探索可能更极致的算法吧
那现在刚才也提到了我们现在也发布了 1.03.6 也会去做一个深度的一个移植那现在你站在现在这个角度上对未来这个版本的这个项目的一个走势未来的发展有什么期待吗比如现在可能还在需要进一步优化或未处理完的一些问题那比如它后面会有 2.0 会有更持续的发展一个迭代路线图或者未解决的问题吗
现在有一个未解的问题是规范 Polyfill 它是想做到因为我们现在 3.6 的这个移植我们是需要主动去做清除的一个过程的就是如果一个 computer 没有被使用它是要在 complement 注下的时候去主动清除那个 computer 内存的然后但是在
对更通用的使用场景来说可能规范它不想要求用户需要主动清除内存所以它想做到类似 PVX 就是就一个 pool 的模型当然就不用把一个依赖跟一个订阅者有一个强连接
然后就可以做到是内存安全的一个算法然后现在 Aliens 有 2.0 的话可能就会主要去解决这一部分的问题但是我们的方式是跟其他 PVF 他们是不太一样这个我不太要深入说因为也比较深奥这个东西我觉得可以不展开说了
哎,Dr. Wu,我看你是在作为那个以怎样的身份来或做了哪些工作来参与到 Alien Signal 是这个库本身还是和那个 viu 移植的部分?关于 Alien Signal 这个部分啊就是我觉得我个人最大的贡献应该是称赞 Johnson 太好了我觉得你解释的比较好因为
其实我平时很少跟人聊技术因为一个人在写代码
如果分要说的话,我觉得可能是就之前因为在 Vue 3.4 的那个响应式系统就是 Johnson 一手重构的,可能是那个时候他可能已经在去研究 Alien Signal 的那个方向,那个时候可能是我在 Vue Core 里去就是当时会有很多人去提相关的 issue 是就响应式系统的,就那个我可能有帮 Johnson 一起去看一些
就是很极端的一些 case,那时候 DotaWoo 也做了很多修改,修正,一些变化情况是 DotaWoo 去调查的。然后主要其实就是我觉得主要的光线可能就是花夸还有这个,我帮他这个顶住这个后背。
刚才你在表达的时候,Johnson 都看不下去了,没有你说的那样,做了很多 bug face 边缘情况的 case。因为当时 Aidin Signal 刚出的那个版本,我还问 Johnson 要了那个,
我私下跟他说了一下就是看看我能不能帮忙去做一些提升什么的然后一看那个代码就当时我在一个飞机上去看它里面有一个很合理的来说叫 PropGate 盯着那个看啊拿着这个看了那趟飞机大概 4 个小时基本上 80%的时间我都在那看我说什么情况为什么要这样搞然后看了好几个小时可能才能
看明白他为什么要这么做主要还是学到了很多其实大家不要觉得就是只是改一些边缘案例这个没什么其实这个是非常难的你要理解那个 3.4 那个响应系统是怎么跑这个是非常难的因为我那时候写这个东西已经写了一年多然后才把我们知道的那些边缘情况解决掉所以这个确实 Doctor Who 是挺厉害的
这才是连搏之力经营连搏之力那对没参与那个 VU Conf 去看那个分享的朋友们也讲 3.6 大概会是现在是个什么阶段然后我们什么时候能够去体验它那我现在还没正式发布的时候我能不能去使用体验 3.6 的功能或者和 A2S 现在是有日程了有时间表了吧
提上日期了嗯嗯嗯 OK 这这个这个也是一个简单的实时核查我这个到时候放在 shownotes 里边就好说不定我发出来的时候 3.6 也那个现在怎么说马上就要发布了嗯哎这里边对那个 3.6 的里边除了这部分你还有额外的了解吗比如其他的功能也可以简单点一点引引你熟悉的或你参与的或你测试过的
3.6 的话,Evan 估计是想把那个 vapor mode 实验性的就集成到 3.6 里面,然后放出去。对,我看他的 PPT 上也提到了。Johnson 好像是有什么想说的?如果我有参与的话,还要参与那个就是重写那个 DeFi Component 的类型推断。哦,天哪,那个好像是非常的复杂或非常的深厚。是的,然后
其实我一开始是想完全重写他这个类型推断的但我发现重写下来太多 back and change 了就所有的下面的依赖全部都坏了然后最后没办法只能在保留他现有的类型的基础上面去做一些增强吧然后主要目的是做一些性能上的提升因为他
现在有很多地方是做了不必要的多余的类型计算然后那些地方就把它可能抽出来然后可以共用掉吧一些计算然后我希望可能 view4 的时候如果有的话我就可以完全重写一下吧嗯这也是一个非常爆炸性的一个性能优化哎道特沃或海老师有有去关注去了解这一部分吗可以做一个补充嗯我关注的应该就是我我我我曾经看到过那个就是他是
他那个地方可能非常的非常夸张非常恐怖犯行猜测都有十几个然后而且只有一个字母你可能看得明白如果你是看你可能可能看得明白就他那个这个重工难度真的是太大就我之前看 Jose 还在那个 X 上去说就是前几天就是
信息满满,投出满,让我来重构这个 define component 的类型后面几天突然看到江泽引用那个会员说让我们看看什么叫搬起石头砸自己的脚海老师有额外的补充吗?没有
其实这个话题我们慢慢这个也慢慢延伸出来了刚才提到几个点只是也是刚才之前在 TS 上也做了很多斗争我们除了现在这个 defend complements 我们再往前数你再去参与 language tools 或者
那个参与这个 Vlog 的时候也和 TS 有很多这个怎么说斗智斗勇希望希望 TS 和这个现有的那个 vue 开发体验能够结合的更好你在这里边也做了很多大量的工作优化工作是的就是我们 vlang2 2.0 出来就是加了一个 Hybrid mode 就是完全于
这个 TX Server 去深度的集合起来然后做到原生的一个新的体验然后我们接下来会做 3.0 就是把这部分做得更好因为 2.0 我们为了跟 VS Code 或者其他插件的兼容性我们还是做了一些兼容的代码比如说你是可以关掉 Hybrid Mode 的然后我们为了让你 Hybrid Mode 可以关掉我们做了一些
非常不好的 hack 然后但 3.5 我会把这个去掉我们就不让你关掉一定是开启了然后这个就可以拿掉然后这性能也会提升
也是这个是个非常好非常啊后面也看合适机会我们单独去做一个展开之前我们在播客呃之前播客最早和这抓紧去聊的时候也是当时想就欧拉当时还是欧拉的那个独立工具的时候去想尝试聊后面我邀请到了呃欧拉的核心贡献者陆老师啊瑞然后当时后面我们也是围绕这个呃
Vola LanguageTool LSP 也展开聊了很多有趣的话题目前你的这个经历对这个 Vola 和其他的现在这个工作分配经历是怎么样的对 Vola 和 LanguageTool 未来有什么期待吗我希望今年可以做到在赞助那边可以完成资源预手去后面毕业之后全职开发了这是我今年的目标
因为确实如果我现在有其他全职工作的话是 Language2 这边确实忙不过来
这个我们在之前的时候和还未发出现在如果听有听到话应该也已经发出来我们之前和安德夫也聊了安德夫看到最新安德夫他有一个安德夫 Found 然后在最新一期的那个 Found 分配的时候看到了你的名字也称赞了你的一些过去的一些那个开源的工作的一些那个经历和称赞了你的一些贡献对安德夫这个确实是很
这确实是很伟大的一件事情他带走的在这也感谢 FDF 这也是一个非常奇妙的和我们播客历史嘉宾起码的一个缘分
这里边其实也慢慢刚才我在提一个问题的时候和我现在下一个问题有点关联刚才提到我们有人有在勾浪里边去尝试把 TS 的这个 A-Line signals 实现了实现成了一个勾浪版本那
反映的一个问题就是我们 TS 和勾浪是相对相似的那近期的一个新闻也是呃看到我看到有新闻说 TS 打算有一个重写和一个正在做的一个使用勾浪一个重写的一个工作那你从你的角度你怎么去看这个事然后如果 TS 改成勾浪去重写那对你的现在的一些产品和工作有影响吗呃
我先补充一下,它其实不止重写到 go-lang 还有两个重写一个是 DUT,一个是路网然后你刚才说 Type-C 给它用 go 重写,这其实我估计影响还是挺大的但具体还是看它最后那个 lang-surface 的 API 会怎么设计吧
它是想设计成相互兼容但我看来是有点难度的然后第二点就是现在 Vue TSC 是做法是代理的 FS 的 read file 来修改 TSC 的代码然后如果它一直在 go 这个东西就不可行了然后也要看
Texco 会不会开类似 TSC 的 API 给我们去实现这还是看他们怎么做因为他们现在还是比较早期的阶段我们现在只能等所以
对,之前我们和 AntFox 聊的时候,他也提问了这个问题,其实他从他的角度去看,他之前可能也是观察到对发现 VoLAR 或者 VLanguage Toast 对 TS 上有支持的一些难度或者是一些问题,
那现在他也是好奇这个如果 TS3 的使用这个勾来去重写了部分这个内容的话对你有没有影响现在看听起来这个因为这个重写的这个实际效果或我们还没有这个进一步的去观察和使用到所以现在这个只是说预期会有些问题和改变对吧
对最糟的情况可能我们要把 Folder 跟 TypeScript plugin 的桥接完全用 go 去重写然后这是也 go 端的东西然后我们 view 的东西我们还是得在 js 端去做然后变成我们要可能做 ICP 去连接 go 端跟 js 端这是最糟的情况吧应该
韩老师昨天你也听到了然后你可以再补充补充这个我就不知道什么特别大的东西那只能等 tst 听出来因为不知道他 ICP 到底是怎么做这个我就不知道了对吧
那现在对其实现在这个结论模糊也是在于他很多东西并没有结束还是说这个规范并没有清晰我们做不了结论还是需要等到出 alpha 或者说等到 release 之后我们去试验测试才能发现的还是我就是这个点比如有新的进展会是在哪个阶段现在对 Jerson
现在还是其实 TypeScript Team 他是比较重视 follow 我们这个用力的然后现在还是看他们打算怎么去兼容我们的用力吧到底是完全向后兼容还是说像刚刚说的要 go 跟 js 端两边都要重构这样我觉得其实完全向下兼容是有点难度的所以但我们现在也真的比较被动要等他们
研究方案最好的做法是开始学购那也是问在场的各位那现在是不是已经开始学购了还在水坝水路上我老师有个问题啊就比如说嗯 ts 他转到购之后对这个生态肯定是有影响但这个生态边缘之外的会对前端有什么影响吗
比如说前端能承载的工作会更多然后会卷一些别的方向我觉得我觉得他这个对我们最大的利好就是他就是他的整个 tsc 是用那个构成写最大利好是我们生成那个 dts 的那个速度能快很多因为现在其实整个因为现在前端很多基建我们就是都拿原生语言去实现了
包括说 bundle 呀以及说一些 lint 之类的所以说现在我们其实工作流程都在相对于过去的一些年在做很很很迅速的一个进步然后他这个他那个我我相信肯定有不少的那种项目里 tsc 已经是他们项目里的一个瓶颈了就是说我我其实跑什么其他 build 呀什么之类的都很快就一个 tsc 我在这里等你半天然后这个这个他这个我相对我觉得是
补强吧,就是在我们这个工具链在逐步往 native 化的这个趋势下去把这个 tsc 的这个这个短板也补上可能对一般来说最直观的那个体验是你在 vscode 里面打一个是可能提示会快 10 倍就是最直观的一个原因对对对还有就是还有就是那个他会对那个
就是我看他的那个 blog 写的会对那个 large codebase 的项目会有利好就是你有一些很大的那个很大的那个项目里你的 ts 甚至都会你的那个 ts 的 program 甚至跑不起来就你的 sourcebar 太多了你得去一个个去拆那个就是他提供的一个方法叫拆那个 reference 你把你的那个项目分成好几个 core 然后你哪些项目引用哪些然后
就是他让他能允许你把一个项目拆开好几个去做编译然后他有了这个之后估计是就是你也能更好的去适配你那种大型的代码对这个部分确实是很多项目一个瓶颈我看也看到反馈或来自机械的反馈也是来自于对这个最终成为的一个期待
刚才顺着刚才提到 AlienSignal 我看还有一个有人提到对这个 AlienSignal 来说它是一个开源项目除了 Conveyor 代码去验证我们的效果之外 Johnson 和 DeltaWoo 还觉得还做了哪些事情去让这开源项目
让更多人来去使用来去验证来去推广那从这些就代码之外你们还做了哪些事情我看这个其实接入 bitmark 也是一个非常好的一个方式其实就像我刚刚说的继续推广可能不是我们后面的方向就是后面还是把我原来的那个目的给达到就是做一个基于 signal 做一个
完全是增量计算的一个 astparts 跟一个 result generation 就是我现在有一个我前面有个库叫做啊你们知道麻瓜这个词吗就是呃哈利波特里面嗯就不会摸我跑来现在叫麻瓜然后现在之前有个库叫那个 string 嘛就我有个库叫麻瓜 string 就是我后面因为在这个库上面啊集成这个
那连这个跟大马生成去做到增量增量生成的事情嗯很期待哎这里边其实张赛做了很多大量的呃这个调优的工作这里边要比想象中的要复杂的多的多哎现在这个
AlienSignalsGitHub 上的数据你目前认为现在现状怎么样比如 STAR 比如 ASIO 比如 Commit 参与者然后对现在有没有进一步的社区贡献提升有更多除了你之外的参与者核心贡献者其实我觉得
现在代码已经很难继续改了我能想到的优化方式我几乎都是每一种方式我几乎都试过好几遍然后才得出现在的版本然后现在基本上是我一行那么的赶不过了要我哪里还可以在已经我想好几年赶不出来就这种情况
就是 Johnson 之前已经扣新闻扣到冒烟了他说电脑扣到冒烟了我觉得他这个是一个很适合对于性能优化感兴趣的就是同好可以来观摩一下这个代码去学习一下他到底在哪些地方做了什么事情就有的时候需要揣摩一下 Johnson 的心思精益求精对
我看这个是谁写的,也有人想提问如果我还是在用 vue 3.6 之前的版本或者 vue 2 版本我是否需要或者有必要或者有没有可能去使用这个 AlienSignals 除非自己去 Folk 一个 3.2 然后去几层不 run 的话可能性不大而且你 port 你还得去适配那个备用情况就是它表现上肯定会有一些出入的
最后的方法就是升级嗯没错 just pump version 那技术部分是不是针对这个技术部分是不是咱聊的就差不多看看各位围绕 alien signals 或围绕 Johnson 的开源项目我们还有没有想问的那后面的话我们可以聊一些轻松简单的一些话题好那我们想到的再再想到再补充对聊一些轻松的吧让我这个麻瓜参与一下斯巴特你来
其实我在想嗯就是赵森他做这个优化然后他本职工作是做什么呀就是还说做全职这目前就全职在做开源平时就老生长产的问题常规的一天是做什么啊什么从从什么一点啊典型的一天嗯典型的一天呃看时期吧我因为我那个 folda 是
那个 stability 对我的全职的资源是到去年的 10 月份然后后来是 voice show 开始支持我在全职开源工作然后所以这段时间我就主要是做 vue 这方面这方面很多东西然后前面做完 alien school 我这段时间都开始在稍微前段时间做完那个 defi component 我是这段时间开始看那个 vpn mode 的性能改进
都是性能优化的一些一些男伙后面还有一个计划应该现在也可以说就是是做我做完回碰之后会去把因为我们一直以来就我们收到很多投诉是说呃代码提示卖然后这其实很多时候的原因是
Vue 的 UI 库那边的 type script 类型写的有点复杂然后所以后面可能有个计划是我去把全部的 Vue UI 库的 type script 的实现过一遍然后去把他们能优化的地方优化一下不过其实后面如果有 type script 这个 10 倍的改进可能这个利益也不是很大了但我觉得还是值得注意的
给他们讲述一下怎样去优化在数位的性能嗯讲过不少开场很期待如果有的话请务必来上我们那现在刚才也提到现在的话对你来说是那个我塞尔来那个
赞助了你的全部的那个这个怎么理解因为是个什么就是他赞助我然后我做发言我自己想做什么做什么但还是我自己要有一个交代吧做出来的东西嗯也看到这也是非常慷慨也是非常非常好的就是互相激励的一个成那个结果嗯但有一点就是有时候还是嗯
压力我觉得会比上班大一点你可能有些东西你不确定能不能做成比如 aliens glow 我一开始研究的时候我本来是以为每一种算法它只能在特定情况下有优势然后我到时候不确定能不能做到全部情况都是最快这个其实也有点不稳定的成分你不一定能做出东西来
对这个和常规的我们想到的公共链的一些优化不一样这个更多的像一个算法级别的像一个研究级别的一个优化那我们以往并没有可以遵循的一些常规的一些优化方式来去做一些简单的一些工作那这里边都是很多探索性的工作对是
这对你的内心也是一个非常大的考验是的我可以说一下 Stable 还在赞助我做 Fuller 的时候其实我这个压力是特别大因为那时候我做 2.0 我要做到 Hybrid mode 之前没有人做东西我要做了差不多七个月然后才把 2.0 做出来然后这个过程可能就一直是很怀疑自己能不能做出来
对所以这个过程就压力特别大有哪些有有还有方式有还有嗯怎么怎么来去排解这个紧张这个氛围呢嗯放松离开代码或者直接就休息做出来做出来就排解嗯这个过程如果一旦是我们还在还还对这个未来的路线图还不清晰的时候确实那个会比较尖压力会比较大
对我觉得在一个开源项目上面在一个任务上面投入 7 个月这个确实是很很大风险的一件事情如果你没做出来可能这 7 个月是怎么去交代的风险对呃但但也也是一个嗯
也是一个阶段那后面应该如果有类似的开也可以邀请对和到看到的物能不能帮上你更多呃有更多的小伙伴来来去参与来去从心理上从这个技术上来去辅助你嗯说尽量的嗯根本开过头
对我印象中之前在推上和我们在之前私下的交流时也看到有时候你会有时候可能正好在那个低谷阶段有时候心情会比较大也是希望你这个遇到技术的困难总能顺顺利的把它搞定然后也能邀请到更多和你相似经历相似这个状态的朋友能够就找到更好的这个消解的这个途径和方式
我觉得其实那个也算我们作为一个男人成长的一个必要的过程吧就我们如果没有经历过一个很大的一个低谷很难说理很成熟的一个成长的一个经历我觉得也挺好的不是每个人都能经历到是的是这个之前交流时候海老师也提过类似的
也问一道客户那最近在参与哪些项目然后对目前在关注哪些那个新的一些技术发展比如 vivo 的和 vivo 之外的毕竟
最近说来惭愧,其实在努力上班。在准上班。然后,但是其实,那其实也会在关注一些,在学习新东西,在关注一些就是看人生的一些新进展。或者说其实,Vapor Mode,Vapor Mode 现在是 Evan 在
在 run time 上在发力可能后面的话在他可能他看到他的设计差不多的话后面会有一些待完善的工作那个时候可能可以去投入还有就是和 Johnson 会一起在看那个性能上就是 Vapor 的话有没有哪些性能是可以优化的
最近也有在学 RUST 已经翻开那个书翻开很多回了都只是在前面几个你在坚持坚持说不好就可以直接写学够了是的坚持坚持发现 RUST 没用了学 RUST 也可以找海老师讨教讨教海老师在 RUST 上也投入了很多的精力和有很多的实践必须讨教
这个也是看后面何时机会和到头物专门的我们更深入的去聊聊你的这个工作和过一些那个过去的参与开展一些经历和想法那这次我们就是还是围绕这个技术主题来 signal 做了一个展开没有对你的一些那个感悟做一个进步的展开我们看何时的机会我们做进步的交流
也问各位刚才也提到 RUS 的话题也问问各位 AI 对各位的编程或者生活或者对工作有哪些辅助然后你用了哪些方式来去使用 AIAI 有没有帮到各位有哪些踩坑或者说哪些感触
我觉得我上班的话就是我在工作中这个 AI 对我帮助还是很大我现在已经是尊贵的 Cursor Pro 的年度会员你要复会然后就是平常的话就会它现在很强大就是它
他会迭代一些新的模型在上面我最近在用那个 Cloud 那个 3.7 的 Thinking Model 然后他强大的就是他在 agent 模式里的话你去给他一些就是你要让他完成某些任务然后达到某个目标然后你可以给他一些输入然后告诉他怎么去校验这个目标然后比如说你把这个测试用力改到通过然后他就会自己去想办法怎么去哪里做一些优化我觉得还是不错嗯
对 Costal 近一年近两年的发展出乎很多人意料尤其是配上现在 3.7 的一个加持更进一步的优化了这些开发体验我看到最近我们讨论更多也是在规划的也是看到 Costal 在去主推或去深度使用 MCP 这个协议 Johnson 日常在有让 AI 能够帮到你很多吗
其实我做 alien 这个时候我是很想 AI 能帮我给一些有用的意见的但代码上面我发现 AI 好像帮的不是很多但他帮我翻译的方面帮帮了很多嗯翻译嗯翻译一万种的时候创造性的工作他可能去帮助你的那个过程是相对有限做常规的做一些应用应用开发业务开发可能会呃受益受益会更高一点嗯对
那刚才也想到他有了这么智能并不举前一些代码写那写 markdown 去拓展去丰富我们的这个拆解我们的一些工作比如去如何让去拆解如何让更多人熟悉和使用这个我的开展项目也是一个非常好的一个探索一个让他去帮我们去拓展我们的思考
也快到最后了各位看看我们是不是问 Smart 是不是可以抛出我们那个初学者问题必问的一个你来吧就想问一下两位大佬平时是怎么提升自己的技术水平然后是怎么去学习的包括我们的听友也有一些年轻的刚参加工作的或者还有在校生对他们有什么意见吗
建议啊,采购,采购经验,对,建议,呃,我我跟你说的话就是不过看一些大佬的可能随手抛出的一些图吧,就是非常的这个精辟,比如说比如说像 Aliens signal 这样的一些非常非常就是极致的抗护,就是这种东西我觉得是可以去看一看学习的,就是大佬们他生产出来的东西你可以去,我就跟看书也类似的,就是你去揣摩他的一些
然后你在这个过程中可以去学到一些就是他为什么这么做的一些知识嗯哦我说我自己吧就是可能特别对初学者来说有时候会特别容易遇到一些你觉得特别难以解决的问题然后在这种情况其实毅力是很重要的嗯
如果你每一个遇到你觉得特别难的问题就用毅力去死扣把它解决掉那其实你就能生长下来有时候之前我们嘉宾也提过一个想法就是他会发现当下我们遇到这个困难可能觉得无限大就像一个小人面前有个巨大一个圆球一样经过一段的努力之后会发现你和这个球可能是一个平等的一个这个球就变小了
那等我们解决完这个问题去回顾的时候可能会发现当时的这个问题变得很小变成一个小皮球那我们一踢就把它给踢开了那同样的问题在不同的这个阶段用不同的努力之后去看待这个困难可能角度或者说这个感觉也是不同的因为人也是在不断成长的 OK 那也看看各位海老师 smart 也和张先生看还有想补充的观点技术观点或想额外展开的话题
我说一下其实就是我是很期待就是 Johnson 以后有机会可以对因为 Johnson 他其实他手上的项目都是非常非常非常有技术含量的项目以后有没有机会就是说比如说去对一些一些把一些东西就是因为像你像 Volard 特别像 Volard 这样庞大的项目可以去从中去摘一些就是比较你认为
很得意或者说是比较 inspire 的一些点专门站出来跟我们分享一下我觉得这样的话就是一来是我们学习的门槛也低一点二来是我们对这个项目的了解多一点的话其实我们也更好的去可以更好的去做一些贡献我会努力点因为对我来说不是很擅长表达一些
想法或者技术观点所以我主要可能还是写代码但我研究一下吧怎么去让别人更好的理解我来说我觉得通过写的方式可能会比说的方式会容易一些因为你可以自己去揣摩这个用词叫下让你就说有足够的思考时间其实我一直都觉得你一个人把一个很难的东西写出来是比他做出来更厉害
因为你已经非常通透这个事情了以至于你可以去交给剩下的人这也是对 Jason 有一个更好的期待说不定可以借助辅助和其他人去交流可以做进步的整理 Jason 目前 BASE 在哪活动然后线下活动和线下开发者交流多吗
哦不多几乎没有我就在家哎你现在在哪个城市我现在在香港 OK 啊也是哎我记得哎后面应该今年也会有继续有这个国内的 vvconfer 或一些其他的技术活动呃今年我看看我能不能参加吧 7 月份去年是不是在深圳对去年去年是不是你你在当时在现场我记得印象中你是在现场当时我当时比较害羞没有没有找到你哦我没看到你嗯嗯 OKOK
韩老师还有补充吗嗯学习到了 Johnson 的此刻精神对对对对我收个尾嗯 OK 那我们刚才聊了好久我们和 Johnson 和 Doucetou 我们聊了好多有趣的技术话题我们从最开始的这个 Alien Signals 聊到了很多过去的一些发展然后遇到的问题和一些优化的经验和采通经历那么后半程我们也聊一些轻松的话题围绕 TS 围绕他 Johnson 和 Doucetou
那个 Johnson 和道德物的一些其他在其他开源项目上的一个投入我们也展开聊了很多在最后我们也谈一谈对 AI 的一些了解和想法那这是我们正片的所有内容了然后这是我我是刚才学到了很多也备受鼓舞认为困难可以永远变得越来越小的一个新矛头 Smart 我是要死磕的 Smart 韩老师我是小孩老师 Johnson
是不是有点怪怪的对 你是 Johnson 我们还有 Doctor Wu 我们还有旁天的 Eva 我是今天旁天的 EvaOK 感谢各位的时间