※ 引述《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