Re: [討論] 請大家聊聊 JavaScript的缺陷
其實我覺得戰場大家自己拉開的亂七八糟,
我也不過就是逐一回覆,
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 反駁的更是笑話。
-----
Sent from JPTT on my Google Pixel 3 XL.
--
虛實之間的世界,反抗軍與啟蒙軍的交集
帶著 Android 去旅行、去發現
在身邊渾然不覺的 另一個世界。
全世界,都是我們的 足跡與遊樂場。
~ The world around you is not what it seems. ~ http://ingress.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.44.97 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1605577598.A.805.html
→
11/17 10:00,
5年前
, 1F
11/17 10:00, 1F
→
11/17 10:00,
5年前
, 2F
11/17 10:00, 2F
→
11/17 10:00,
5年前
, 3F
11/17 10:00, 3F
人的學習時間是有限的,你學了 A 就會延後學 B 的時間,我只是在點出這件事情。
當然要說長期來看都是要學的,
這點我沒意見,但不是只有這個方法可以學。
「標示」型別系統只是拆解問題的一環。寫 js 還是有型別,不會因為寫 js 就不寫型別。
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:08:20
→
11/17 10:11,
5年前
, 4F
11/17 10:11, 4F
確實也是有可能,不排除。
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:12:03
噓
11/17 10:19,
5年前
, 5F
11/17 10:19, 5F
樓上黑的真認真,凡是你不同意的,寫再多字都是凹對吧呵呵
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:22:49
噓
11/17 10:26,
5年前
, 6F
11/17 10:26, 6F
→
11/17 10:26,
5年前
, 7F
11/17 10:26, 7F
→
11/17 10:26,
5年前
, 8F
11/17 10:26, 8F
討論區人人得而回之,咬我啊~
→
11/17 10:26,
5年前
, 9F
11/17 10:26, 9F
→
11/17 10:26,
5年前
, 10F
11/17 10:26, 10F
不會啊。
→
11/17 10:27,
5年前
, 11F
11/17 10:27, 11F
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:31:46
噓
11/17 10:32,
5年前
, 12F
11/17 10:32, 12F
→
11/17 10:32,
5年前
, 13F
11/17 10:32, 13F
嗯嗯,免戰牌掛的真溜。沒人不知道你避戰了。
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:32:20
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:32:47
→
11/17 10:39,
5年前
, 14F
11/17 10:39, 14F
→
11/17 10:39,
5年前
, 15F
11/17 10:39, 15F
→
11/17 10:39,
5年前
, 16F
11/17 10:39, 16F
java 還是有 scala/groovy 之爭啊,人多就會有派系。XDD
→
11/17 10:41,
5年前
, 17F
11/17 10:41, 17F
→
11/17 10:41,
5年前
, 18F
11/17 10:41, 18F
uglify 不會在開發期做,我們這裡討論的是「開發成本」。
我以為我前文已經寫過,這篇就沒特別寫了.....
另外 react 因為xml 的 spec 轉譯成本特別高(不少),以上說明。
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:42:12
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:44:27
→
11/17 10:45,
5年前
, 19F
11/17 10:45, 19F
應該還會有幾個老人講,馬的我用 java 就好,陪你們搞一堆 groovy 跟動態類別,在那邊吃我的 meta class 空間。XDDD
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 10:47:11
→
11/17 10:56,
5年前
, 20F
11/17 10:56, 20F
開發時降低轉譯成本,在瀏覽器有增加運算成本。
兩個成本誰高誰低各有見解,但兩個是不同的東西。
推
11/17 10:57,
5年前
, 21F
11/17 10:57, 21F
→
11/17 10:57,
5年前
, 22F
11/17 10:57, 22F
→
11/17 10:58,
5年前
, 23F
11/17 10:58, 23F
→
11/17 10:58,
5年前
, 24F
11/17 10:58, 24F
→
11/17 10:58,
5年前
, 25F
11/17 10:58, 25F
增量編譯不慢,但除非你程式永遠不 shutdown ,不然你還是得處理中間的編譯成本。
我們對開發時間是很敏感的。
至於你說專案肥本身會影響編譯時間,沒錯,但增加一個不小的乘數一樣會讓總數變大。
網路上不少脫離 ts 的討論抱怨的都是 compile slow 。
我在提醒的是這個部分。
噓
11/17 11:06,
5年前
, 26F
11/17 11:06, 26F
→
11/17 11:06,
5年前
, 27F
11/17 11:06, 27F
還有 19 則推文
還有 6 段內文
→
11/17 12:27,
5年前
, 47F
11/17 12:27, 47F
推
11/17 12:29,
5年前
, 48F
11/17 12:29, 48F
這個理由我十年前買 SSD 時就用過了 用了十年SSD了現在對這些細節還是很敏感啊(怒)
→
11/17 12:30,
5年前
, 49F
11/17 12:30, 49F
→
11/17 12:31,
5年前
, 50F
11/17 12:31, 50F
→
11/17 12:56,
5年前
, 51F
11/17 12:56, 51F
→
11/17 12:56,
5年前
, 52F
11/17 12:56, 52F
→
11/17 12:56,
5年前
, 53F
11/17 12:56, 53F
→
11/17 12:56,
5年前
, 54F
11/17 12:56, 54F
你可以寫你的論點是什麼, 但舉幾本書好像不算論點.
這幾本書我都不是沒讀過, 你要不要明確的指出是哪一章的哪一個論點衝突.
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/17/2020 13:10:54
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/17/2020 13:11:53
噓
11/17 13:32,
5年前
, 55F
11/17 13:32, 55F
→
11/17 13:32,
5年前
, 56F
11/17 13:32, 56F
我文中的例子舉的數量,
比這串人所有提到的總數還多。
※ 編輯: TonyQ (223.137.174.34 臺灣), 11/17/2020 13:40:52
→
11/17 13:56,
5年前
, 57F
11/17 13:56, 57F
→
11/17 13:56,
5年前
, 58F
11/17 13:56, 58F
我也覺得是你的問題,看起來我們有共識了。
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/17/2020 14:20:38
推
11/17 18:35,
5年前
, 59F
11/17 18:35, 59F
→
11/17 19:24,
5年前
, 60F
11/17 19:24, 60F
→
11/17 19:24,
5年前
, 61F
11/17 19:24, 61F
重構強調 type 的重要性,關標示 type 有成本屁事。
紅綠燈很重要,代表蓋紅綠燈不用錢喔。
紅綠燈很重要也沒每個路口都蓋啊。
※ 編輯: TonyQ (223.136.191.168 臺灣), 11/17/2020 19:53:39
噓
11/18 10:04,
5年前
, 62F
11/18 10:04, 62F
孩子,該長大了(< 這是你想要的回應嗎?)
→
11/18 10:04,
5年前
, 63F
11/18 10:04, 63F
→
11/18 10:04,
5年前
, 64F
11/18 10:04, 64F
如果你可以舉得出 ts 超棒棒的情境,
你就比我厲害了。
我寫文分享從來就只為了寫給有興趣看的人,
不是讓人覺得我厲害的 。
你們看我文我沒收門票錢,
自然也不用付你們評論費,你說對吧。
看的不爽,寫篇好一點的反駁,
好歹我文章寫的出來,你的文章還在路上。
社群討論是用不同意見論戰的,不是用嘴炮回文的。
噓
11/18 10:07,
5年前
, 65F
11/18 10:07, 65F
對團隊合作這幾個字,你們實踐在哪我不清楚,
但這幾年我的心思倒是都在這幾個字上了。
就是因為重視團隊合作,才更需要一套可以快速訓練上手的 principle,
而不是語法蜜糖。
說 ts 就可以讓舊人避坑,照這說法,
csharp 跟 java 不就都沒坑了。
→
11/18 10:08,
5年前
, 66F
11/18 10:08, 66F
→
11/18 10:09,
5年前
, 67F
11/18 10:09, 67F
是你做不到或放棄做到,別假設我做不到。
→
11/18 10:09,
5年前
, 68F
11/18 10:09, 68F
我覺得是你帶團隊不夠久才不明白,能教會大家做人,
可能 pornhub 都還比較有貢獻一點。
TS 的編輯器會讓你以為自己避開了這些坑,直到你再度的踩進去。
→
11/18 10:35,
5年前
, 69F
11/18 10:35, 69F
→
11/18 12:59,
5年前
, 70F
11/18 12:59, 70F
→
11/18 12:59,
5年前
, 71F
11/18 12:59, 71F
是說先不說小明我對他評價高的從來也都不是他的開發技巧,
啊是說這裡的人討論事情是怎樣, 好好的講話是不行嗎?
動不動烙年紀, 烙朋友, 烙經歷, 啊是回不了正題了是不是.
such a good response . 有夠有格調的回應.
※ 編輯: TonyQ (61.231.44.97 臺灣), 11/18/2020 13:50:50
噓
11/18 19:12,
5年前
, 72F
11/18 19:12, 72F
我一向習慣在戰場上用別人的招式跟對手辯論.
啊一個一直嚷嚷著不用認真, 躲在旁邊噓文,
連這蠢浮點數都要瞎跟的......
不是我要貶低誰, 而是......
※ 編輯: TonyQ (210.61.209.201 臺灣), 11/18/2020 19:25:53
推
11/19 01:37,
5年前
, 73F
11/19 01:37, 73F
推
11/20 09:27,
5年前
, 74F
11/20 09:27, 74F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章
11
45