DHH 移除 TypeScript 后的反静态类型主义营销号刷屏有点让人绷不住

2023-10-15 06:40:12 +08:00
 netabare

尤其是过了这么久还能看到这些营销号,然后评论区大家都在集火喷 TypeScript 。

实在是不懂为啥静态类型会惹来这么多人厌恶,更不用提这个 PR 还有个更严重的问题 - 在多人协作的项目里直接 force push 了。

本来还想写点啥吐槽一下,然后感觉累觉不爱,只能说这位社区领袖直接把 Ruby 这个语言对我的吸引力拉到近乎于 0 的状态。

顺便引用一下一个算得上是爆典的修改:

68    | async function gotoPageWithFormMode(page: Page, formMode: "on" | "off" | "optin") {
   68 | async function gotoPageWithFormMode(page, formMode) {

用户获得了在formMode里传入 null 、undefined 、114 、5.14 、"1919"和new Date()的自由。

4882 次点击
所在节点    程序员
64 条回复
Bluecoda
2023-10-15 12:02:36 +08:00
@agagega DHH 本质上他是半个 business guy ,他的第一要务是把好产品做出来,成本是最需要去考虑的事情。我觉得 Rails 的 turbo 真的是太好用了,用过一次就知道,如果只是小团队,小而美的产品,前后端分离就是累赘,turbo 把很多事情都变得非常简单。我曾经把一个 2 前端+3 后端前后端分离的 react 项目,用了 turbo 之后,只需要 1 前端+1 后端就基本替代了,并且达到了类似 SPA 的效果。对于他这样的 business guy 来说,简单,易用,方便,节省人力才是第一要务。
我不是说前后端分离是错的,而是对于某些产品来说,前后端分离可能真的不是一个最优解,现在的有些人逢项目必前后端分离真的有点像是邪教。
Bluecoda
2023-10-15 12:09:17 +08:00
对于类型,我一直不觉得这东西有多好,如果在一个程度上我可以减少代码,但是 bug 并没有增加,那为什么需要这个类型系统?大量的代码维护,心智负担,我不觉得我需要去承担这些。
DHH 早年也说过,去查过 github 很多静态类型语言的项目,他们的 bug 数量并不会因此减少,所以引入了大量成本,但是 bug 并没有因此减少,这个成本带来的价值在哪里?只是某些类型 fans 的自我满足吗?
我自己用也是这样的感觉,就像 ruby 的类型系统,看到都不想用,引入的成本实在是太高了,这东西可能对一些超大型项目有一些价值,但是并不是每个人都能碰到这类型的项目,1w 行都对我来说都是大项目了,所以我也感受不到类型有什么用。
walpurgis
2023-10-15 12:16:57 +08:00
确实很反智,python php 不都在推 type hint 吗,动态语言静态化是个趋势
要是说 typescript 的设计方案有问题,写起来麻烦确实是一个合理观点,但有些人上升到反对静态化就没有讨论必要了
oops36
2023-10-15 12:29:32 +08:00
ts 对于 lib dev 和 app dev 完全是两种难度。对于 app dev 来说,ts 基本是直接用就行了,文档都不怎么要看,直接大幅提升 dx(developer experience)。但如果是 lib dev ,ts 根本就是魔鬼难度。dhh 和 svelte 虽然都删掉了 ts ,但完全不是一个性质。svelte 是用 jsdoc 取代了 ts ,类型还是有的,用 ide 的时候 dx 还是一级棒,目的是降低 svelte 本身的开发维护成本。dhh 直接删掉了类型。。。绝对是损害了 dx 。
learningman
2023-10-15 13:02:17 +08:00
这年头不都这样吗,相似观点的人抱团,很明显这种话题下就是反 ts 的抱团
learningman
2023-10-15 13:03:42 +08:00
@jry 新一点的语言不都是这个设计,rust 的 let a:Vec<X>,go 的 var a string
wonderfulcxm
2023-10-15 13:06:08 +08:00
@agagega 这哥们很有意思啊
Al0rid4l
2023-10-15 13:07:38 +08:00
看了一眼 DHH, 脑子里不禁问了句 ROR 作者就这?
Numbcoder
2023-10-15 13:47:31 +08:00
至少他言行一致啊,他反对的东西和推崇的东西,都在他的商业产品力得到了实践,并且能拿出统计数据,有理有据的表明他的这些决定都是有价值的。详见 #16 楼的视频。

比如从云上搬下来,每年节省了 150 万美刀服务器费用。参考: https://shiftmag.dev/leaving-the-cloud-314/ https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0

在技术圈逐渐饭圈化的今天,很多人只会无脑的跟着混圈子,仿佛加入了这个圈子就掌握了未来,对不愿意加入圈子的人无脑诋毁。技术是为产品服务的,产品需要考虑的是效率、成本和质量。DHH 是一个典型务实型的技术人员,他的一切技术选型都是围绕产品出发,而不是为了技术人的自嗨。

PS:DHH 从来没有反对语言静态化,只是他个人不喜欢 TypeScript ,更喜欢 JavaScript ,他也没反对你们用 TypeScript ,被他移除 TypeScript 的项目 turbo 是他们公司主导的开源项目,他们作为项目的主导方,应该有权选择自己的技术实现细节吧。如果某天微软在 TypeScript 上使用了一个你不喜欢的技术实现,你也要组织人是去网暴吗?
Pencillll
2023-10-15 13:48:15 +08:00
@Mark24 汽车出来之前,大家不出行么。

汽车只是代个步而已。汽车出现之前,很多坐骑都可以更好的,无加油解决这个问题。
Knights
2023-10-15 15:18:12 +08:00
高级语言是给人类看的,引入新的语言要能降低项目生命周期内人的心智负担,不然就是扯蛋
Leonard
2023-10-15 15:20:23 +08:00
@jry #3 Swift 的 let/var 只是类型推断,本质还是静态类型
Aloento
2023-10-15 15:21:45 +08:00
@liberty1900 #7 原生支持类型注解 都是微软提的,TS 尴尬什么
DOLLOR
2023-10-15 15:38:21 +08:00
@agagega

DHH 或者 ruby 社区也好意思抨击 webpack ,我觉得他们圈子整的 node-sass 才是前端最大的毒瘤。
前些年跑 npm 踩的坑,至少一半以上都是 node-sass 闹的。
DOLLOR
2023-10-15 15:42:41 +08:00
@liberty1900
讲个笑话,连 TS 都不愿写的人(大神除外),说自己愿意写更啰嗦的 JSDoc 。
solobat
2023-10-15 17:05:19 +08:00
反智而已,小丑
netabare
2023-10-15 18:20:30 +08:00
@cmdOptionKana 说实话我并不讨厌 Ruby ,甚至以前还有一些兴趣(可能因为是比较早就流行函数式写法的原因),只是说现在会觉得没太多兴趣了。

@beginor 看了一下 three.js ,说法并不是移除 ts ,而是把 ts 支持转交给专门的团队来做,这和一个 force push 直接覆盖掉整个主线有本质上区别吧。

@Mark24 类型是和数据建模直接相关的,这难道不是逻辑的一部分吗?静态型才能够提供类型推断,TypeScript 之所以有时候还需要写类型标注恰恰是因为 JavaScript 太灵活。

@kongkongye 所以更不懂关于 TypeScript 的争论了,再不济写 any 也好过吧

@oops36 对于 lib 来说删掉 TS 算是一种选择,但是按理来说删掉 lib 应该引入单元测试和文档来覆盖掉类型本应起到的作用,然后一堆人在那里抨击 TS 却对文档和测试闭口不谈……

@DOLLOR +1
jry
2023-10-15 18:39:01 +08:00
@Leonard 不会 swift,就看了下语法,我想表达的是它这样写代码不用显式申明类型。
WildCat
2023-10-15 18:42:24 +08:00
FightPig
2023-10-15 20:27:52 +08:00
@DOLLOR node-sass 关 DHH 的 p 事?反智过头了

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

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

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

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

© 2021 V2EX