最近重新復習了 Java 這門我曾經非常熟悉的語言 , 翻閱到 Bruce Ekecl 的 ON JAVA 一書, 他在卷首就引用了維根斯坦(Ludwig Wittgenstein)的名言: 'The limits of my language means the limits of my world.' 我的語言的局限即我的世界的局限.
作為程序員, 一種語言會悄然無息的引導你進入某種思維模式, 同時遠離其他思維模式.
看到這里, 我深有同感, 我現在用的最多的編程語言是 Python , 而 C++ , Java 和 JavaScript 也是我熟知的語言, 我用它們來謀生, 寫過許多正式項目和 side project.
在語言之間我也曾經有過好惡, 對 JavaScript 我還寫過一篇吐槽的文章 C++程序員眼中丑陋的 JS
可是隨著年歲的增長, 我也漸漸領悟到不應局限于語言的邊界, 很多編程語言為了解決機器語言的復雜性, 引入了更多的自身的復雜性, 當看到 Java 項目中那么多的注解, 那么多的 setter/getter , 各種框架的各種奇技淫巧, 我覺得 Java 把事情搞得有點過于復雜了.
然而晚吞,當我轉過頭來看 Python 時阻肿,它以其簡潔優(yōu)雅贏得了我的心债蓝,卻又讓我在某些場合深感無力路媚。Python 的”人生苦短,我用 Python”儼然是一種哲學艳悔,但苦短的人生里妻味,性能瓶頸和動態(tài)類型引發(fā)的神秘錯誤卻也未必總是浪漫白翻。要處理百萬級請求?C++程序員笑而不語馋贤;要嚴謹的數據類型推導赞别?Kotlin 不禁哼起了歌。
每種語言就像一個國家配乓,有自己的文化仿滔、風俗和治理方式。Java 是個喜歡規(guī)規(guī)矩矩穿西裝打領帶的“商務精英”犹芹,一絲不茍地寫注解崎页,帶著 setter 和 getter 出席每場會議。它的框架讓你覺得這家伙的行事邏輯雖復雜腰埂,卻極其可靠实昨;但有時候你會被它的“繁文縟節(jié)”搞得頭暈。Python 呢盐固,就像那個穿著短褲坐在沙灘邊的哲學家荒给,輕松丈挟、靈活、心態(tài)平和志电。它告訴你“隨便來就好”曙咽,但你一問細節(jié),它卻抬頭望天:“呃……隨緣挑辆±欤”
至于 JavaScript,哼鱼蝉!它是那個瘋狂的藝術家洒嗤,一邊畫著畫一邊對你喊“函數可以是對象!變量可以是全局的魁亦!”它讓人又愛又恨渔隶,一會兒心曠神怡,一會兒吐血三升洁奈。它對 web 世界貢獻頗多间唉,卻總喜歡打破規(guī)則,以至于你時常需要捂著腦袋回憶:undefined和null到底誰是誰利术?
C++ 則是那個老牌將軍呈野,手握重兵,沉穩(wěn)而強大印叁。它的豐富特性和近乎無限的可能性被冒,讓你能寫出火箭程序,也能在調試指針錯誤時痛不欲生轮蜕。它給了你巨大的自由昨悼,但自由的代價是責任,你用 C++ 編程時肠虽,總會感覺背后有一股聲音低語:“用我的力量之前,你得先承擔它的重量玛追∷翱危”
所以,我漸漸學會不再責怪語言的短板痊剖,正如不再對國籍或性格大加評判韩玩。每種語言都有它的獨特優(yōu)勢,也都有讓你抓狂的地方陆馁。我們要做的找颓,是學會揚長避短,借助它們的力量去完成適合的任務叮贩。
比如击狮,寫腳本自動化佛析?Python 是最佳伴侶;搭建高性能服務器彪蓬?C++ 當仁不讓寸莫;做企業(yè)級應用?Java 能幫你一統(tǒng)江湖档冬;開發(fā)動態(tài)的 web 頁面膘茎?JavaScript 是一等一的工具。
當我從這個角度看待編程語言酷誓,它們不再是“對立的陣營”披坏,而是工具箱里的各種工具——螺絲刀、錘子盐数、電鉆棒拂,各有其用,不必爭個高低貴賤娘扩。正如 Bruce Eckel 引用的維根斯坦所言:語言的局限即世界的局限着茸。當你跨越語言的邊界,你的思維模式和解決問題的方式也會更加豐富琐旁。重要的是涮阔,靈活運用這些工具,把復雜的事簡單化灰殴,而不是反過來敬特。
最后,獻上一句編程界流傳的格言:“最好的語言是什么牺陶?適合這項任務的那一種伟阔。”