由于今天 DHH 火速 merge 了这个 PR(https://github.com/hotwired/turbo/pull/971),感觉对这些年 Rails 的管理非常失望。水一篇博客: https://blog.wildcat.io/2023/09/goodbye_rails_zh/
最近也在被强迫使用 TypeScript。Ruby 和 JavaScript 用久了,总觉得 强类型(被博客带歪了) 静态类型提供的那些约束本该是程序员自己的意识,主动思考还是被动思考的差别罢了。
我觉得程序员写代码时的思维应该是主动的、清醒的、活跃的,而不是被动的、怠惰的。
另外,没看明白什么叫“不能正确处理代码接口”?
简单来说,就是接口的信息遗失了。调用者更容易出现错误,比如:
https://github.com/hotwired/turbo/pull/971#discussion_r1317383623
尽管 PR 下质疑声一片,但从 PR 创建到 merge 不到 2 个小时,没有事先讨论,直接一个 breaking change。另外还有的代码感觉都没 review
查找替换,快速干掉
退一万步,即使他这么做是对的,但是 PR 里无视反对意见,直接合并,完全是滑天下之大稽。更不用说 PR description 只是一个干巴巴的链接到自己博客了。
锁 thread,不回复。完全是熟悉的味道。
评论区都炸锅了,只能给锁了。 https://github.com/hotwired/turbo/pull/972 Add TypeScript PR 直接被关了
作为一个有用户群体的项目,DHH 这么粗暴的做出破坏改动,确实有点不讲道理了,让人感觉不适
至于改动本身,我感觉当人们说类型的时候,潜台词是我想要 Java 那种类型。。。我打赌大多数附和者并不确定自己真的想要什么。Java 或者类似的语言是有大规模工程的实践,但是不是大规模工程一定需要这样的类型系统,我觉得是存疑的,一个参数标记自己是一个 HashTable<String, String>
并不能让调用变得更加安全
真正强大的,强大到能够消灭逻辑 bug 的类型系统的语言,比如 Haskell、比如 OCaml,实际上并不流行,甚至比 Dead language 还要小众。
如果说是超大规模系统,且追求 Bug-free、性能敏感、算法复杂,显然操作系统就符合标准,而操作系统几乎都是 C 这个没有类型系统的语言开发的...
所以改动本身,我觉得这是一个见仁见智的问题,作为项目的维护者、BDFL,DHH 有权利做出这样的技术决策
另外是 TS,我在 TS、JS 上的经验很少,前段时间我比较大的感慨是 TS 也很割裂,目前最新版是 5.1+ 了,我想尝试,但是项目底下依赖的大量的包只能在最高 4.9 上编译,所以最后作罢
turbo 基本都是他们公司的人在维护,突然发这么大的 PR,突然合并说明这事肯定内部已经推进很久了,但是完全不考虑其他贡献者的意见,这事确实有些不妥。
turbo 改成 JS 其实并不影响你在项目里使用 TS,DHH 他们喜欢 JS,他们要继续维护这个项目,所以改成 JS,我觉得其实没毛病。
Rails 也没有强制你用 turbo,Vue/React,TS/JS 等其他前端技术栈随便选啊,没有任何限制。
在前端工具链如此发达的今天,我觉得 JS 胜任大型项目完全没问题。
程序员写代码时的思维应该是主动的、清醒的、活跃的,而不是被动的、怠惰的。
说的太好了,写的慢不代表想的少,三年程序员码代码速度是最高的,因为他们写下代码的时候,就是在写代码。这种情况的确上 typescript 有助于提高质量。
比较好奇怎么做大家才觉得妥当?核心团队做出 break change 的决定后,然后花几个月时间在社区说服所有人然后再进行?
而且这是 turbo 7 升 8 的"break" change,任何库升大版本都会有很多不兼容旧版本的改动,都会有不同意见,很正常的事。
无聊的我都研究了。。。turbo 目前比较尴尬的地方在于,为了得到一个页面不刷新,导致其他前端库的调用都多少有问题,怎么说呢,有点得不偿失。
稍微看了一些回复,发现很多人都不知道 turbo 基本没有给 end user 的 api,甚至不知道 turbo 是干什么的就来评论
科普一下,对 turbo 库的使用者来说,turbo 是用 js 开发的还是 ts 开发的根本没区别,基本没有 js 方法给你调用。
叠甲:对于 turbo contributors 来说是有资格愤怒的。
雀食,当年 ROR 之所以惊艳,就在于 ruby 与 java 本质上的区别。而现在他们持续折腾 js,不说在前端领域注定失败,但至少是难以超越其他前端工具链的,因为都是 js
看上去感觉是,官方与民间对这个开源项目的认知不同。
官方:我开源出来主要是为了展现实力,顺便让你们了解项目的功能性、安全性,除此之外,没别了,你们直接用就好
民间:我参与这个开源项目是因为我信仰 democracy,人人都可以发表意见……
代码不加 type 的都是好记性!不爱 Type 干嘛搞 Class 这个概念呀?都用 Object 得了。花太多时间来确定老代码的返回 Type。
一开始,的确是觉得 ts 挺好的,甚至是惊叹,但的确随着开发的进行,有时候看一些库源代码的时候,看到里面那些天花乱坠的类型声明,完全没有可行性,加上自己写代码时候,经常也会被一些类型绑住手脚,的确自己也越来越在反省,自己用 ts 对还是不对,说实话,是想打退堂鼓了。至于 turbo 的这个事情,感觉和我们并没有直接的多大关系,从之前 coffeescript 的走势看,我自己的开发里面前端已经脱离了 rails。
作为主要开发人员,换个语言,别人内部讨论好了,直接执行,又不影响使用有啥问题?为什么要失望?苹果公司推出新产品改了好多设计也没跟你商量,苹果的管理是不是也让你失望了。
这种库用了就是影响了(到你 project 代码里了),哪天你需要追踪源码实现、覆盖原功能时,有 Type 声明的肯定帮你节省时间、也可能提高系统稳定性。