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

第1版代序

學兩種語言

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

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

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

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

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

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

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

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

周愛民

2007年11月于個人博客

主站蜘蛛池模板: 锡林郭勒盟| 阿坝县| 平乡县| 平乡县| 临洮县| 万年县| 昌乐县| 沂源县| 巴青县| 乌兰察布市| 东至县| 乌拉特中旗| 沅陵县| 南川市| 扎鲁特旗| 吉林市| 蓝山县| 临颍县| 昭苏县| 凌海市| 天峨县| 延长县| 喀什市| 馆陶县| 丽水市| 中山市| 临城县| 泾阳县| 昌黎县| 黑山县| 浦东新区| 哈尔滨市| 绵阳市| 锡林浩特市| 静乐县| 普定县| 临湘市| 左权县| 新绛县| 沙湾县| 宾川县|