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

楼主: TonyQ (自立而后立人。)   2020-11-15 23:39:15
是说应该要定义什么是好什么是烂,
我是觉得啦, 能解决问题叫好, 不能解决问题叫烂.
但这就有一个操作空间, 就个人对语言的掌握程度/能力程度,
会影响到一个人对语言的判断.
像是有人对直译器(interpreter) 的理解不够,
对 contract based 的程式逻辑掌握度不够.
所以骑个脚踏车还需要装两个轮子(TS/TSX)在旁边辅助, 才能正常写程式.
这是能力的问题.
但虽然装辅助轮慢了点, 久了总是会到终点了, 欢喜甘愿就好.
当然, 自古以来许多人能力不好就怪环境不好,
这自然是可以理解的, 但这种情况要互相讨论, 可能就有点高处不胜寒了.
动态语言跟强型别语言本来从开发工作,
开发方法, 工作做法都会不一样,
拿十字锹去伐木, 砍不断树是自然的.
所谓的缺点跟优点是相对于要解决的问题的,
就以控制 dom event, render html/css , 发起请求等来说, 他已经够好了.
该有的语法特色都有, 喜欢 class 的也终于在 ES6 迈向皆大欢喜.
主流的 async 处理方针, async/await 也都在ES7 都跟上了.
如果我们今天说的是十年前, CORS 还没发展好, fetch 不完整,
display 还没好好的实装, float 还很难用没有 flexbox 的年代.
要说的话就是要引用的基础类别有点多, 计算量有点大.
当年还要面对 js interface 不统一的问题 (该死的 document.all ),
而且当时还要引入 jQuery 才有 selector.
但到这个年代,早期最被诟病的那些问题早就都有解法,
要讨论优点跟缺点, 要同时把要解决问题拉出来谈, 不然这都是瞎谈.
不然直接说一句 js 要移殖 c++ 程式很难写, 大家就散会就好.
(啊 其实也有 wasm 可以用啦)
每个语言都有他的样态跟生态, 跨语言比较的盲点就在,
你会其中一个, 但你不会另一个啊.
你不懂得理解两个不同的语言的差异之处啊.
程式只是工具, 人才是决定 code 是不是垃圾的载体.
作者: kangan987 (Jon.Snow)   2020-11-16 00:15:00
作者: shter (飞梭之影)   2020-11-16 00:40:00
其实我觉得选择多本来是好事,但就会出现被人为限制的问题
作者: as30385438 (LCT)   2020-11-16 01:30:00
当然不是用啥都行,稍有规模的公司都有coding style吧为了style的一致性用旧语法写应该是满常见的
作者: drakd4d (NULL)   2020-11-16 02:21:00
我个人是觉得TypeScript目的是增加多人协作时的可维护性你自干的时候,当然你的大脑掌握了全局,但别人在读你的程式码时可不见得是这样要开发快速当然不要去搞什么TS,但人多的时候欲速则不达
作者: gocreating (小平)   2020-11-16 02:37:00
推写不好就怪工具
作者: samuel1988 (小羊快跑啊)   2020-11-16 06:40:00
这篇可以被战,就我所知人才不会去写前端xd聪明人不会浪费时间处理特例和例外。
作者: jobintan (Robin Artemstein)   2020-11-16 07:40:00
当年写jq的都去写angular/react/vue了,哪年ARV三大会不被别的技架(如webassembly)取代都不知道,也只能说,长江后浪推前浪,一代新物换旧物,想吃工程这行饭,就得持续学习,让自己的技能与知识与时俱进才行。sorry,打错,是技术框架。:P
作者: onlyeric23 (MiGG)   2020-11-16 07:49:00
js是要编译的喔
作者: LERICAL (统二布丁)   2020-11-16 07:57:00
作者: siriusu (かがみは俺の嫁。)   2020-11-16 07:58:00
从单兵作战角度看也许是这样,但不要忘记软件工程讨论的不只是单兵作战,避免 antipattern 也应该考虑在语言能力之中;讲 js 有他的任务有历史包袱无可厚非但我不觉得相比其他语言精通起来学习成本高不是一个缺陷
作者: leo5916267 (小叶)   2020-11-16 12:03:00
我觉得ts 方便的点在于我们看到变量时我们知道他的资料结构长怎样,不然只能爬code然后console 看他吐出什么样
作者: CoNsTaR ((const *))   2020-11-16 14:01:00
天气预报也会报错啊,所以你也反对天气预报吗?“你不能让世界的天气照着天气预报走”XDDXXD你平常看不懂别人在做什么的时候都不会问“你在做什么”吗?别人给你的回答就像是程式语言的 type,虽然因为语言精细度的关系,别人可能没办法很清楚的解释他在做什么,但是它可以给你一个 idea而在程式里,type 和 value 的关系比现实生活中用嘴巴讲的要强多了虽然大部分语言都没有一个像 Idris, Agda 这样完备的 type system,来保证所有的 type 都是正确的(甚至可以当作数学、逻辑命题验证系统来用,也不可能会出现你讲的偷塞any 的事情),但是我也不认为大部分的人都有能力用像 Idris Agda 那样精确的语言来写程式,ts 对于 js 已经是一个 improvement,而且也是一个符合大部分人的能力的 improvement(不会太难),不认为有什么好 criticize 的
作者: as30385438 (LCT)   2020-11-16 14:17:00
觉得还是类比错误,js到ts几乎是无痛学习吧对于有其他语言经验的人来说,学习成本低到不行扣掉一些进阶特性ts一样是你认识的那个js而已
作者: jason82714 (Jason)   2020-11-16 14:36:00
推 写不好就怪工具
作者: CoNsTaR ((const *))   2020-11-16 14:37:00
看了你的回复,提醒你,理论电脑科学的根基就是 type 和calculus,任何东西只要能够在电脑中出现,一定能够有 introduction 和 elimination rule,也一定可以 reduce成一个 NF,并且它的根本就是离散的而非连续的,所以在电脑的世界里根本就无法存在像你讲的“不能用 type 描述”或“只能 ill typed 描述”的东西,问题只是你的 typesystem 愿不愿意把自己做得这么精确而已,因为会让很多没有数理逻辑底子的人不会用,如果你想要,你可以完全只写 well typed 的程式(就像你讲的不要回到 js),完全没有做不到的事情,问题是我不认为大部分的人有能力做到这样,而 ts 正是这样 compromise 下的产物
作者: newhandfun (新手方)   2020-11-16 17:00:00
前几楼要不要直接回文啊?这也打太长
作者: abraxas (Abr.)   2020-11-16 21:40:00
不错哦,问题都在人身上了,这样也没啥好讨论啦
作者: s06yji3 (阿南)   2020-11-16 22:52:00
工具也是有差
作者: lturtsamuel (港都都教授)   2020-11-17 00:23:00
你是不是对机器语言了解不够才要装程式语言当辅助轮
作者: musie (Sirius)   2020-11-17 00:41:00
唸过PL的人 在这边帮没念书的人上课 我是觉得白费力气你就让他在他的世界活得好好的, 不是很好 他也不介意那些复杂的Church-Turning, Curry-Howard 一点意义
作者: strlen (strlen)   2020-11-17 10:30:00
听起来像是“这烂工具用久了还是有好用的地方啦” 古有为赋新词强说愁 今有为写程式强说赞?笑死不可否认JS烂是有背景因素啦 就是各家大厂对前端各怀鬼胎恶性竞争下来的权宜之计 权久了莫名奇妙就做大了 但原因是一回事 烂不烂又是另一回事
作者: m3gl4a (m3gl4)   2020-11-17 14:24:00
想不到tonyQ大大还蛮懂css,没flexbox的时代切版很累
作者: dophin332 (...)   2020-11-20 08:44:00
推情境和要解决的问题是关键.

Links booklink

Contact Us: admin [ a t ] ucptt.com