擁抱程式設計年華(摘錄)——Joe Armstrong,Erlang語言之父
“Gmail編輯器不能正確排版引文格式。”
“這可夠丟人的,”馬傑裡說,“看來他們負責引文格式的程式設計師水平不行,企業文化也在走下坡路。”
“我們該怎麼辦?”
“今後我們招募的程式設計師,一定得通讀過《追憶似水年華》 。”
“讀過全部七卷?”
“沒錯。”
“讀這書能讓人更好地駕馭標點符號,從而不至於在引文格式上犯錯?”
“那倒未必,不過他們會因此擁有更精湛的程式設計技藝。這種感覺只可意會、不可言傳……”
學程式設計就好比學游泳,再好的理論也不如一頭紮下水,撲騰著呼吸新鮮空氣管用。在初次沒入水面的那一刻,你必定會驚慌失措,但當你奮力浮出水面、大口大口地喘著氣,你又會無比喜悅。這時你心裡明白:“我學會游泳了。”至少我當初學游泳那會兒,就是這種感受。
程式設計也同樣如此——邁出第一步最難。因此你需要一位好老師,鼓勵你勇敢地跳入水中。
Bruce Tate正是這樣的好老師。他寫的這本書,帶你從程式設計學習中最困難的地方入手,鼓勵你大膽邁出第一步。
假設你想學習某門語言,而且順利完成了下載安裝編譯器或直譯器的艱鉅任務,接下來要做什麼?你用它寫的第一個程式,會是個什麼樣子?
Bruce回答得十分巧妙。他在這本書裡,展示了許多完整程式和程式碼片段,你只需將它們一一輸入,看看結果是否與書上相同。也就是說,你先不要想著自己編寫程式,而是先把書中範例全都實現一遍。隨著信心漸長,你自然會逐漸擁有獨立完成程式設計專案的能力。
獲得任何新技能的第一步,是先別想著獨立解決什麼,而是重複一遍前人已竟之事,這是掌握一門技能最快的方法。
用一門新語言上手程式設計的過程,與其說是投入大量時間反覆實踐,試圖理解語言背後蘊含的深奧原理,還不如說是讓分號、逗號各就各位,同時讀懂出錯時系統反饋的千奇百怪的錯誤資訊。只有不斷提高程式設計水平,讓自己超越先輸入程式碼、再等待編譯成功的枯燥階段,你才有能力思考程式語言中各種語法結構的含義。
跨過輸入、執行程式的門檻後,你會有如釋重負的感覺,因為潛意識將接管餘下的工作。意識剛琢磨出分號放哪兒,潛意識就已明白了表面結構下的深層含義。這樣下去,你終會有所頓悟,理解某個程式邏輯的更深層含義,某種語言結構如此特殊的原因,等等。
對幾門語言均略知一二,這其實是一項相當實用的技能,因為我常常發現,網上的某個程式有助於解決手頭問題,卻沒法直接拿來使用,還得針對問題稍作調整才行。這程式用什麼語言寫的都有可能,所以懂點兒Python、Ruby什麼的就非常管用。
每門語言都自有一套慣用法。它們各有所長,亦各有所短。通過學習各種不同的程式語言,你會明白,哪門語言最適宜解決當下關注的問題。
Bruce對程式語言的愛好不拘一格,這真是你我之幸。他不僅精通那些聲名卓著的語言,比如Ruby,還了解那些鮮為人知的語言,比如Io。程式設計說到底是個理解問題,理解說到底又是個思想問題,因此,若想深入理解程式設計的方方面面,洞察新近湧現的思想是必不可少的一環。
精於禪宗的大師會告訴你,拉丁語學得越好,數學也就越好。程式設計也同樣如此。通過研究邏輯式程式設計或函數語言程式設計,你能領悟到物件導向程式設計的精華;通過學習組合語言,你能更透徹地理解函數語言程式設計。
在我做程式設計師時,對比各門程式語言的書籍曾一度盛行。這些大部頭書多帶有學術腔調,至於如何去真正用好哪門語言,則少有涉及。這如實反映了那個年代的技術發展水平。當時,我們只能從書本上了解某門語言的諸般理念,想用它實戰幾乎不太可能。
如今,我們不僅能瞭解這些理念,還能對它們實踐一番。佇立池畔、暢想游泳之妙,較之親身跳入水中、暢享戲水之樂,二者終究不可同日而語。
我由衷地推薦這本書。也希望你在閱讀它的時候,能夠像我一樣,盡情享受其中的樂趣。
Joe Armstrong,Erlang語言之父
2010年3月2日
於斯德哥爾摩
摘自《七週七語言》序言部分
相關文章
- Erlang之父Joe Armstrong確認將參加中國軟體開發者大會
- 《Erlang程式設計(第2版)》作者Joe Armstrong訪談問題有獎徵集(圖靈訪談)程式設計圖靈
- 許式偉《Go語言程式設計》章節摘錄:Go語言簡史Go程式設計
- Erlang 之父學習 Elixir 語言的一週
- Joe Armstrong:關於Erlang,有很多東西我想改變(圖靈訪談)圖靈
- 程式設計人生-摘錄程式設計
- 圖形化語言Scratch之父談程式設計程式設計
- [英]Joe Armstrong:關於Erlang,有很多東西我想改變(圖靈訪談)圖靈
- 擁抱原型物件導向程式設計原型物件程式設計
- 擁抱極限程式設計(Do do XP)程式設計
- [程式設計語言]-00:目錄程式設計
- 為何程式設計如此之難?Erlang 之父的感觸程式設計
- 做個清醒的程式設計師之擁抱AI程式設計師AI
- “D語言之父”Walter Bright為《D程式設計語言》寫的序程式設計
- 浪潮之巔,程式設計師如何擁抱新技術?程式設計師
- 擁抱手勢驅動的介面設計
- 看Ruby之父如何預測100 年後的程式語言
- ‘程式語言‘ ’程式設計工具’程式設計
- 程式語言設計,程式設計哲學程式設計
- C語言程式設計C語言程式設計
- 程式猿互相擁抱表示友好
- 擁抱 NamedParameterJdbcTemplateJDBC
- 著名程式設計語錄程式設計
- ChatGPT:程式設計的 “蜜糖” 還是 “砒霜”?告別依賴,擁抱自主程式設計的秘籍在此!ChatGPT程式設計
- 【程式設計大賽刷題記錄】C語言 06程式設計C語言
- 【程式設計大賽刷題記錄】C語言 02程式設計C語言
- 程式設計師必知的程式語言編年史程式設計師
- 程式語言BASIC程式設計師的啟蒙語言C程式程式設計師
- JAVA語言程式設計思想Java程式設計
- 函數語言程式設計函數程式設計
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- Erlang語言的作者教你如何入手
- 擁抱未來:大語言模型解鎖平臺工程的無限可能模型
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- 擁抱 React HooksReactHook
- 程式設計師眼中的程式語言程式設計師
- 團隊文化建設:擁抱黑客文化黑客