官术网_书友最值得收藏!

第1版 代序

學兩種語言

—《我的程序語言實踐》節選—

《程序設計語言—實踐之路》一書對“語言”有一個分類法,將語言分類為“說明式”與“命令式”兩種。Delphi及C、C++、Java、C#等都被分在“命令式”語言范型的范疇,“函數式”語言則是“說明式”范型中的一種。如今我回顧自己對語言的學習,其實十年也就學會了兩種語言:一種是命令式的Pascal/Delphi,另一種則是說明式的JavaScript。當然,從語言的實現方式來看,一種是靜態的,一種是動態的。

這便是我程序員生涯的全部了。

我畢竟不是計算機科學的研究者,而只是其應用的實踐者,因此我從一開始就缺乏在“程序”的某些科學的或學術層面上的認識是很正常的。也許有些人一開始就認識到程序便是如此,或者一種語言就應當是這樣構成和實現的,那么他可能是從計算機科學走向應用的,故而比我了解得多一些。而我,大概在十年前學習編程及在后來很多年的實踐中,僅被要求“寫出代碼”而從未被要求了解“什么是語言”。所以我才會后知后覺,才會在很長的時間里迷失于那些精細的、溝壑縱橫的語言表面而不自知。然而一如我現在所見到的,與我曾相同地行進于那些溝壑的朋友,仍然在持續地迷惑著、盲目著,全然無覺于溝壑之外的瑰麗與宏偉。

前些天我寫過一篇博客,是推薦那篇《十年學會編程》的。那篇文章道出了我在十年編程實踐之后,對程序語言的最深刻的感悟。我們學習語言其實不必貪多,深入一兩種就可以了。如果在一種類型的語言上翻來覆去,例如,不斷地學C、Delphi、Java、C#……無非是求生存、討生活,或者用以裝點個人簡歷,于編程能力提高的作用是不大的。更多的人,因為面臨太多的語言選擇而淺嘗輒止,多年之后仍遠離程序根本,成為書寫代碼的機器,把書寫代碼的行數、程序個數或編程年限作為簡歷中最顯要的成果。這在明眼人看來,不過是熟練的“砌磚工”而已。

我在《大道至簡》中說“如今我已經不再專注于語言”。其實在說完這句話之后,我就已經開始了對JavaScript的深入研究。在如此深入地研究一種語言,進而與另一種全然有別的語言進行比較之后,我對“算法+結構=程序”有了更深刻的理解與認識—盡管這句名言從來未因我的認識而變化過,從來未因說明與命令的編程方式而變化過,也從來未因動態與靜態的實現方法而變化過。

動靜之間,不變的是本質。我之所以寫這篇文章,并非想說明這種本質是什么抑或如何得到,只是期望讀者能在匆忙的行走中,時而停下腳步,遠遠地觀望一下目標罷了。

而我此刻,正在做一個駐足觀望的路人甲。

周愛民

2007年11月于個人博客

主站蜘蛛池模板: 揭西县| 亳州市| 崇信县| 通辽市| 宜宾县| 青田县| 武功县| 西藏| 宁南县| 盘山县| 栖霞市| 江川县| 孝义市| 乳山市| 康马县| 吴桥县| 新泰市| 宜丰县| 忻城县| 永胜县| 平果县| 舞钢市| 广灵县| 禄劝| 九台市| 虎林市| 西乌珠穆沁旗| 南华县| 平罗县| 湟源县| 叙永县| 长葛市| 临江市| 苗栗县| 宾阳县| 溧阳市| 西贡区| 龙胜| 通山县| 铁岭县| 宣汉县|