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