怎麼樣算是學會一門編程語言?

學了基本的語法,學習了演算法,編譯原理等等。然後怎麼做呢?學習一大堆相關的庫和模塊嗎?


語法 -&> 語義 -&> 語用——這是學習編程語言的典型順序。不知道是哪位前輩總結出來的,我第一次看到這個說法就覺得特別受用,覺得在此應該繼續把它傳播下去。

每一步都比前一步更為重要,更需要時間和精力。事實上頭兩步加起來所需要的精力可能只算得上最後一步的零頭。

既然問了這個問題,題主可能停留在頭兩步了。

語用最重要的點就是使用這種語言來寫有用的東西。為此需要掌握語言的慣用法、語言特定的術語、各種常用庫與工具等。

如何把現實中要解決的問題映射到抽象概念上,然後再由抽象概念映射到某種語言的具體實現,這部分的能力也包括在「語用」的範疇中。

只掌握頭兩步的話還是沒啥用,除非真的掌握得很紮實然後去寫這種語言的編譯器…


2015-08-06

昨天看 @DeathKing 大大在 GitHub 上的《計算機程序的構造和解釋》公開課中文化項目(DeathKing/Learning-SICP · GitHub)第一講的時候,看到兩段很有感觸的話:

換句話說,任何一門學科起步的時候,你都對它了解不深。這很容易使你混淆所做的事所用之物

學習 Lisp 非常容易。事實上,我會在幾分鐘內教會你整個 Lisp,及其所有的規則。你不必感到很驚訝。這就像你在學習象棋時,認為象棋的規則十分簡單一樣。事實也如此,幾分鐘內你可以與任何人談論象棋的規則。但是,這全然不等同於說,你所知道這些規則所蘊含的東西以及如何利用這些規則去成為象棋大師。

Lisp 也是如此!我將在幾分鐘內道清規則。這說起來非常容易。但真正困難的是如何運用這些規則,以及你如何利用這些規則成為編程大師

References:

https://raw.githubusercontent.com/DeathKing/Learning-SICP/master/Srt/lec1a.srt

2015-09-28T11:12+08:00

《Learn Python the Hard Way》中有這麼一句話:

Programming is problem solving, and that means trying things,
experimenting, failing, scrapping your work, and trying again.

2015-09-29T16:35+08:00

Advice from an Old Programmer Learn Python The Hard Way

實乃金玉良言!

---


  1. 熟悉其語法、常見的代碼風格、調試流程,寫過的代碼屬於同類項目中較上層。
  2. 明白語言中常見的坑、最佳實踐(best practice)、常見的代碼庫(標準庫)及其適合的業務場景,能復現簡單的構架,並能以較流暢、較高的質量實現。
  3. 了解與其他語言的區別、編譯器/解釋器實現、還有其他一些這類語言程序員中常見的項目開發、管理流程、測試維護。


正經的東西 R 大已經說了,我就抖個機靈。。。

能寫出來那個語言的自舉的編譯器就算學會了(逃


怎麼樣算是學會了一門外語?

編程語言就相當於人類語言,只是按照計算機工作模式的方式去交流。

無障礙的用這門語言和別人交流。

能用這門語言表達自己的想法。

每一門語言都是一種世界觀,用這個世界觀的角度,看到獨一無二的世界。


不畏懼Debug?


推薦閱讀:

你們開始是如何學習編程的?
看代碼千行,不如手寫一行,是否在理?為何?
通過什麼可以了解一個程序員/黑客的真實水平?
Unix/Linux socket 編程的一個問題?

TAG:學習 | 編程語言 | 編程 |