※ 引述《dharma (達)》之銘言:
: 像Google、蘋果、微軟、Facebook...
: 這些大公司都有發展自家的程式語言
: Google:Dart、Go、Kotlin...
: 蘋果:Swift、Obj-C...
: 微軟:Basic、C#…
: Facebook:Hack、D語言
: 中國的騰訊、百度、阿里巴巴
當我一開始寫程式的時候 (三十年前了 :p)
程式語言選擇少, 所以語言間的特色都很明顯,
雖然用 C 也可以寫 OO,
但是用一堆 function pointer 很麻煩,
所以學個 C++ 省點事, 別找自己碴。
或是雖然 C/C++ 一樣可以靠自己做到 garbage collection,
但是算來算去麻煩死了,
所以能用 Java 的地方就用 Java,
讓我可以不用管釋放記憶體這種鳥事。
所以怎麼說呢? 以前的主流語言的特色都很明顯,
但是到現在新語言一直出來,
我雖然還是一直學, 可是語言間的特色越來越少,
都是一些小地方在改來改去, 要說方便...
說真的花在搞懂那些小地方所浪費的時間,
都遠多於後來省下的時間了,
常常到最後就只是翻翻語法就直接開工,
根本沒有在用 "新語言" 寫程式的感覺 = =a
舉了例子, 如果去找 "Swift 比 Obj-C 好在哪?",
網路上會給的答案大概有比較好讀啦 (沒有醜陋的 [[]])
比較不會因為 null pointer crash 啦,
memory management 比較好用啦之類的,
呃... 所以功能上 (不是語法上) 來說,
就是把 Obj-C 搞得更接近 Java?
這個問題如果拿去問, "Kotlin 比 Java 好在哪?"
網路上依然會給一串列表,
然後你一個個看完後, 很難不反問,
為這些不同去 "精通" 另一個新語言的價值是甚麼? = =a
更不要說 C++11/C++14 的新語法用了除了給後人帶來維護麻煩外,
根本沒啥實質意義
(真人真事, 我上週花了快一星期, 找一個演算法的 bug,
最後找到的只是當初寫程式的人,
用了個 C11 的語法去 assign complex number,
然後這語法在 gcc 會正常運作, 在 clang 不丟 error 的情況下,
但居然不放虛數值進去 = =,
用 std::complex<double> cplx = new std::complex<double>(1,1)
這種老派的寫法是會多花多少時間我真的搞不懂 :p)
最後大概會跟我一樣, Swift 寫的跟 Obj-C 差不多,
Kotline 寫的跟 Java 差不多,
有時 C++ 寫的跟 C 也差不多, (哈)
反正新的語法和功能不用也不會怎樣,
這年紀也不用去白板上給人面試,
所以不花時間去精通它也沒差了 :p
至於為啥新語言一直出來,
我老覺得政治與商業運作才是背後主要原因吧? :p