- JavaScript語言精髓與編程實踐
- 周愛民
- 1001字
- 2018-12-30 08:46:37
第1版代序
學兩種語言
—《我的程序語言實踐》節選—
《程序設計語言——實踐之路》一書對“語言”有一個分類法,將語言分類為“說明式”與“命令式”兩種。Delphi以及C、C++、Java、C#等都被分在“命令式”語言范型的范疇,“函數式”語言則是“說明式”范型中的一種。如今我回顧自己對語言的學習,其實十年也就學會了兩種語言:一種是命令式的Pascal/Delphi,另一種則是說明式的JavaScript。當然,從語言的實現方式來看,一種是靜態的,一種是動態的。
這便是我程序員生涯的全部了。
我畢竟不是計算機科學的研究者,而只是其應用的實踐者,因此我從一開始就缺乏對“程序”的某些科學的或學術層面上的認識是很正常的。也許有些人一開始就認識到程序便是如此,或者一種語言就應當是這樣構成和實現的,那么他可能是從計算機科學走向應用,故而比我了解得多些。而我,大概在十年前學習編程以及在后來很多年的實踐中,僅被要求“寫出代碼”而從未被要求了解“什么是語言”。所以我才會后知后覺,才會在很長的時間里迷失于那些精細的、溝壑縱橫的語言表面而不自知。然而一如我現在所見到的,與我曾相同地行進于那些溝壑的朋友,仍然在持續地迷惑著、盲目著,全然無覺于溝壑之外的瑰麗與宏偉。
前些天寫過一篇博客,是推薦那篇“十年學會編程”的。那篇文章道出了我在十年編程實踐之后,對程序語言的最深刻的感悟。我們學習語言其實不必太多,深入一兩種就可以了。如果在一種類型的語言上翻來覆去,例如不斷地學C、Delphi、Java、C#……無非是求生存、討生活,或者用以裝點個人簡歷,于編程能力的提高用處是不大的。更多的人,因為面臨太多的語言選擇而淺嘗輒止,多年之后仍遠離程序根本,成為書寫代碼的機器,把書寫代碼的行數、程序個數或編程年限作為簡歷中最顯要的成果。這在明眼人看來,不過是熟練的砌磚工而已。
我在《大道至簡》中說“如今我已經不再專注于語言”。其實在說完這句話之后,我就已經開始了對JavaScript的深入研究。在如此深入地研究一種語言,進而與另一種全然有別的語言比較之后,我對“程序=算法+結構”有了更深刻的理解與認識。盡管這句名言從來未因我的認識而變化過,從來未因說明與命令的編程方式而變化過,也從來未因動態與靜態的實現方法而變化過。
動靜之間,不變的是本質。我之所以寫這篇文章,并非想說明這種本質是什么抑或如何得到,只是期望讀者能在匆忙的行走中,時而停下腳步,遠遠地觀望一下目標罷了。
而我此刻,正在做一個駐足觀望的路人。
周愛民
2007年11月于個人博客
- 國際大學生程序設計競賽中山大學內部選拔真題解(二)
- Machine Learning with R Cookbook(Second Edition)
- Symfony2 Essentials
- Learning Probabilistic Graphical Models in R
- Statistical Application Development with R and Python(Second Edition)
- Unity Character Animation with Mecanim
- Exploring SE for Android
- 深度實踐KVM:核心技術、管理運維、性能優化與項目實施
- Modernizing Legacy Applications in PHP
- Mastering VMware Horizon 7(Second Edition)
- Drupal Search Engine Optimization
- DevOps 精要:業務視角
- Learning Alfresco Web Scripts
- 基于JavaScript的WebGIS開發
- JavaScript重難點實例精講