學習本質?
昨天在知乎上看到一個討論,關於如何學習編程語言的,源自某自視甚高的「編程專家」的一篇關於掌握所有編程語言的文章。我本來想在那裡直接說兩句的,但看看問題上的氛圍,覺得去拉仇恨沒有什麼意義,但有些想法,不寫下來又不爽,就寫在這裡吧。
我覺得很多缺乏工程經驗的程序員,都很不健康地追求「本質」,for不就是循環嗎?jump不就是branch嗎?不是的,for就是for,循環就是循環,Python就是Python,Lua就是Lua,本質幾斤幾兩?你在c裡面可以用for寫for(i=0; i<100; i++),我在python里就只能寫for i in range(0, 100):,這就是不同,這是工程的不同。在工程面前,「本質」是不重要的。寫慣了Python,你的Lua自然就會高效率嗎?Pyhton和Lua的正則表達式寫法一樣嗎?你寫慣了Python的re,換成Lua的時候就自動會有效率嗎?
你實現一個模塊,就這些什麼跳轉,遞歸,調用重要嗎?不是的,更重要的是它有哪些庫,這些庫是不是穩定,是有多少工程師可以用。這才是判斷問題的關鍵,老想著你的本質,難怪你一事無成。
我們學語言,為什麼要從Hello world開始?不是因為我們不在乎演算法,不在乎語言特性,而是因為我們要理解一個程序「能幹什麼」,怎麼用最少的邏輯,看到程序work!這比所有的語言特性都重要,因為語言特性沒有「本源」重要,我們寫程序首先是解決問題,而不是語言中存在的「道理」,這叫「絕學無憂」,不要被道理左右了你,要用解決問題來左右你。如果你學習語言,就用這個語言來解決一些問題,這些問題才會帶你找到「本質」。只是「本質」不那麼可靠,今天你覺得跳轉重要,後面可能就變成向量化更重要,後面又可能變成IO才最重要,技術就在這樣一個個的「彎道」中前進,並把不合時宜的老古董拋出主流。
那些醉心於學「本質」的,你別還沒老呢,就成了老古董了。
推薦閱讀:
※【比特幣敲詐者】真的有CCTV宣揚的那樣可怕嗎? 它的原理是什麼?
※同作為最優秀的文件名搜索/篩選軟體,Listary最新版為何取消對Everything的支持?
※喜歡給自己加戲的 APP 巨頭們
TAG:软件 |