Re: [讨论] 请大家聊聊 JavaScript的缺陷

楼主: TonyQ (自立而后立人。)   2020-11-17 09:46:27
其实我觉得战场大家自己拉开的乱七八糟,
我也不过就是逐一回复,
autocomplete 我也说了根本不是语言的重点,
是其他人重视,这样可以说你们在讨论缺陷,
我在讨论 autocomplete 我也觉得是有趣。
另外,其实我回文在讨论的,还是应用上的优点跟缺点,
单论“程式语言学”的优点跟缺点,
weak type 跟 strong type 本来就是各有信徒,
这个我觉得再吵十年也不会有结果,
十年前这个争论就在,十年后恐怕还是在。
另外有些人不懂我对转译耗损的看法,
我只能说大家没经历过不需要转译的年代,
认知基础是有差别的。
转译的差别是,es6 在很多地方都已迈入原生支援,而 ts 则否。
目前转译除了 import 跟 react 的 jsx/tsx 需求以外,
很多东西是可以不靠转译的。
而 import 如果跑在 node ,
那就更不需要转译,我在看的是长线规格。
我还是那句话,
没经历过不需要转译的人,很难理解转译的耗损。
当然老古板被认为这是吹毛求疵,我也觉得可以理解。
ts 如果有一天可以进 ecma stanard ,或是 browser native support,
这件事情会很棒,但还远的很。
(要说的话,更希望的是 import 在 web,
能有更稳定的实作,等了十年了不知道有没有等到。
web standard 在 loading,
包括 http2 在内一直都很有野心,
但这题大家目前共识都是把成本花在前面一次打包,
我觉得这应该还是一个过度做法,总有一天会被改掉的。)
国外抨击 typescrip 给 developer 有 false sense of security.
多数人无法反对,而且回到最后本质,
原因还是 developer mindset。
ts 无法帮助你本质上直接上升生产力,
就跟 VAR 也没办法让你速成一个专案一样。
当你要进入一个世界,
那个世界就是有着各种不同的问题。
typescript 让你体会一种安全跟安心感,
但那种安全跟安心感,不是真实的。
换言之,要用 typescript 不用 typescript,
我觉得是无所谓,重点是 coding sense 。
觉得 typescript 写起来比较爽,ok go。
但别忘了他本质还是 js ,不管strong type 看起来多漂亮,
当别人要打要摸要用的时候,终究还是会出问题。
另外当 ecma script 有新的 spec ,
世界有新的 move 时,要有点耐心跟上这个世界。
有些人对这个论点可能会觉得,
啊如果 js 跟 ts 都要学怎么写 code,
为什么我要特别找 ts 麻烦。
因为,js 要学的东西,
包含 callback 包含 promise async await ,
包含 error handing,fetch or request ,
避免 magic number ,避免 bad code pattern 。
更高阶的要处理记忆力耗损跟运算量瓶颈。
这些东西,都需要时间关注,
使用 ts 这类工具,有时候会给新手一个错觉是,
我就跟着使用说明书走就好。
其实包括 VAR 在内都有这个问题。
提出这个问题会让人觉得说,好像在说这些工具都不要用,
但说真的,我觉得真正重要的是,
拿掉这些辅助跟限制,
还能写出稳定的程式码准则( coding principle)。
因为语言层的转换还是会很频繁的,
今日你觉得 ts 好,或许明日他们觉得 dart 更好。
诸如此类。
几个不同层次的命题要分开看:
1. team :
对于 team 来说,
share type definition 是不是一个有帮助的事情,是。
但定义 type 则是个耗损,
这两个权衡过是不是有帮助的,
这取决于团队的平均能力。
在团队里面,每个要做的事情都是耗损,
但别误会,有耗损不代表不值得做,只是要计算结果。
举例,如果在一个只是反复使用既有工具的环境,
如只用某些已经支援 ts 的 VAR 等核心环境,
自己几乎不需要写类别跟操作,
那这种耗损降到最低,结果升到最大化,自然就很有帮助。
如我前文讲的,
讨论这事情要看要解决的问题是什么。
这句话老是被忽略不知道是举不了例子还是怎样。
但 team & code 多到一个阶段,
即使是 java 这种 strong type,
我就看过印度人还是可以写出,
methld1~7 这种莫名其妙的定义的。
这些就得用 coding principle 来约束,
事实上程式码准则比环境要求更值得学,
但讨论度从以前到现在都很低。
在这个年代很多人觉得过 lint 就是有遵守准则,
但 lint 只能处理机器语意,不能处理阅读语意。
这几篇你会看到我对 ts 评论者的敌意,
主要在于,当我们主观推崇 ts 是更好的语言。
一样的事情发生在 VAR 上,
我们引诱新手去学习这些东西,用掉他们的专注力。
学到的却不是让程式码写的更好的技巧,
而是某些高负债高学习曲线的东西。
而那些让程式码写的更好的技巧,
则被埋在这些学习过程里面。
type 这回事对老人家来说,并不是什么太大的问题,
我们是用自己对 application 的经验补完这些认知。
yes , 要说新手没有这种认知我同意,
但要对老人开我们无法掌握 type 的地图砲,
我觉得好像也是有些太有自信。
对新手,我觉得 ts 或 js ,跟着 team 用就好,
但不需要 ts 有比 js 高人一等的错觉。
大家在处理得还是 web 的 layout/event /traffic,
战场是 browser ,不是 type 。
browser 上的铁律就是包含引用在内,少写一点程式码就是快。
所以以前大家在挑核心引用都是千挑万选,
只挑最核心的东西,不会多拿。
这年头因为 VAR 引入的关系,
复杂度越来越高,coding base 也越来越肥,
我还是那句话,感觉不到代价不代表代价不存在。
一个专案会多到 type 是个问题,
就过去经验,通常是复杂度已经到真的太高的程度了。
这是一种天然的抑制器。
而这种时候通常我的目标会是降低复杂度,
来让需要记得的事情比较少。
js 世界最烦的事情是,
前面无脑写的爽,往往后面都是火葬场。
每一个函式把上下游看清楚,
记在心理,本来就很重要。
总之,要用不用是个人选择,但凡事都有代价。
这里的讨论真是越来越无趣了,
都是精神论等级的,
“我用了 ts 以后,团队的 quality 都觉得好一点了呢!”。
好好的就案例范围分析适用性不是很好吗?
反正黑的人就黑,反黑的人就反黑,文章会高来高去是因为,
没有对手可以让我们捉对厮杀进入具体的案例探讨。
如果觉得没有人看得懂,写细节又何必?
反过来说,支持 ts 的又在这串中写了什么?
反驳的也都是软趴趴的,前面拿 double 反驳的更是笑话。
作者: stopcrying (卖考)   2020-11-17 10:00:00
ts并不阻碍人学习你认为重要的哪些技能,不提那些奇怪陌生学术名词,型别系统反映了一种拆解问题的思路ㄚ,有型别没有型别的语言都要会,怎么可以吵那么多篇
作者: testPtt (测试)   2020-11-17 10:11:00
搞不好以后web不再传文字html,js全部不支援
作者: alihue (wanda wanda)   2020-11-17 10:19:00
作者: CoNsTaR ((const *))   2020-11-17 10:26:00
我通篇看下来,你除了讲话大声态度强硬和敢操弄语气嘲讽人以外论点和打太极拳胡扯有什么两样?东扯西西扯东,最后再总结 js 没问题 js 好棒棒自己这样扯都不会心虚吗?
作者: dreamnook (亚龙)   2020-11-17 10:27:00
支持ts的感想真的就是单纯减少火葬场…XD
作者: alihue (wanda wanda)   2020-11-17 10:32:00
讨论到最后就是贬低别人 认为自己才是真理 没必要认真跟你讨论
作者: strlen (strlen)   2020-11-17 10:39:00
没有 今天是因为主角是JS才战得起来 换成python Java c++是没什么人要战的 每个语言当然都有缺点跟弱项 但JS真他妈太扯
作者: lturtsamuel (港都都教授)   2020-11-17 10:41:00
vue跟angular都不用转译吗 在三框架出来前大家难道都不做uglify吗
作者: strlen (strlen)   2020-11-17 10:45:00
那你发一篇s/g有什么缺陷啊 肯定没人理你 因为没人用 哈
作者: lturtsamuel (港都都教授)   2020-11-17 10:56:00
angular在html写一堆js你跟我说成本比较少...?
作者: ldkrsi (衰神)   2020-11-17 10:57:00
因为提到了现代programmer的政治不正确的点 所以反弹特别大wwwwww
作者: lturtsamuel (港都都教授)   2020-11-17 10:58:00
我以为重点是转译制造的复杂度和设置成本 开发途中其实增量编译都不会多慢 你专案如果大的增量编译还慢到靠北 那是你专案架构的问题 不会因为舍弃react就变好
作者: for5566 (Yo)   2020-11-17 11:06:00
程式语言的发展方向就是往把成本损耗转到机器上让开发者更容易用的方向走啊,一直在讲转译耗损怎么不会去写组合语言?或直接2进位,保证耗损最低
作者: BoXeX (心爱骑士团异端审判骑士)   2020-11-17 11:07:00
其实就前端被强迫用js 争议才那么大 就算用啥ts的也不可能不学js 所以讨厌js的我直接不写前端 完美
作者: testPtt (测试)   2020-11-17 11:10:00
我直接学blazor
作者: yeurus (yeurus)   2020-11-17 11:21:00
而且还说大家都没经历不需要转译的时代,哪来的自信?不需要转译的时代不就搞了个jQuery来解决API不相容问题在,现在jQuery呢?
作者: x123356 (x123356)   2020-11-17 11:35:00
JS很烂(X) 烂的人写什么语言都烂(O)
作者: yeurus (yeurus)   2020-11-17 11:36:00
你是看不懂嘲讽?不需要转译的jQuery这么好,怎么大家都不继续用?现在三大frameworks哪个是不需要转译的?而且处理API相容性问题主流也变成babel了
作者: x123356 (x123356)   2020-11-17 11:36:00
以为强型别语言就都没事的人真的满幸福的
作者: strlen (strlen)   2020-11-17 11:40:00
就是不是没事 大家都有事 JS事特多
作者: iterator (rotareti)   2020-11-17 11:57:00
若在80年代,比起C语言,你应该是大声疾呼组合语言那派的若在90年代,比起C++,你应该是大声疾呼C语言那派的..
作者: meowyih (meowyih)   2020-11-17 12:03:00
虽然你叫人咬你, 但网络上咬不到, 所以嘘一个, 说真的你是不是真的太闲了啊? 一页15篇文有5篇是你的 = =a
作者: king22649   2020-11-17 12:21:00
最近确实很频繁
作者: iterator (rotareti)   2020-11-17 12:26:00
那时候也都有类似的说法, 其实是差不多的.当然论点也都有他的理由, 也的确都说得通
作者: superpai (超级白)   2020-11-17 12:29:00
编译时间你买 M1 就没了,根本不需要在意
作者: stopcrying (卖考)   2020-11-17 12:30:00
不幸身为全能接盘侠,legacy js code 清不完,薪情没你好,下班还要自修 PL ,哪有时间写文章 lol
作者: gn01838335 (寂静的生存者)   2020-11-17 12:56:00
我觉得你的损耗论点要不要补充一下。你很多是主观认定,并非软件工程类的认知。人月神话,软件工程之类的都和你相反重构这本书也是
作者: CoNsTaR ((const *))   2020-11-17 13:32:00
要你提出论点什么都讲不出来,反而反过来要别人举例这不是 csfgsj 的招式吗?你怎么可以偷用可能我资质驽钝,只看到自说自话从东讲到西又讲回东,观察举证分析结论通通没看到,大概是我的问题吧 Q
作者: s106667 (PHPJQJS)   2020-11-17 18:35:00
作者: samuel1988 (小羊快跑啊)   2020-11-17 19:24:00
重构就很大部分强调type的重要性你把type当耗损论点哪来的?
作者: Lushen (wind joker!!!)   2020-11-18 10:04:00
还小的时候觉得你蛮厉害的到 30 以后的表现还是只有自己休学可以拿来说嘴以自我为中心的人 QQ问题从来不是你爽就好 事实就是需要团队合作你写 JS 很久可以熟各种 best (坑) practice 好棒棒重点是你很难短时间教会一个新人所有 JS 遗留下来的坑TS 的编译器可以教你做人 带团队这么久还不明白(?
作者: pttworld (批踢踢世界)   2020-11-18 10:35:00
下面几篇谷歌脸书微软文跟这里比较真是讽刺啊
作者: stopcrying (卖考)   2020-11-18 12:59:00
欸,你崇拜的 capita 在学 Rust 、跟青年人打成一片,你在这里跟人战工具与惯例,还要抓图晒在 fb
作者: alihue (wanda wanda)   2020-11-18 19:12:00
你的回应一直贬低别人和硬凹不就超有格调?
作者: lemontea0328 (魔幻柠檬)   2020-11-19 01:37:00
JS很烂(X) 烂的人写什么语言都烂(O)
作者: dophin332 (...)   2020-11-20 09:27:00
谢谢分享

Links booklink

Contact Us: admin [ a t ] ucptt.com