- JavaScript語言精髓與編程實踐(第3版)
- 周愛民
- 1009字
- 2020-07-02 15:37:30
第1版 代序
學兩種語言
—《我的程序語言實踐》節選—
《程序設計語言—實踐之路》一書對“語言”有一個分類法,將語言分類為“說明式”與“命令式”兩種。Delphi及C、C++、Java、C#等都被分在“命令式”語言范型的范疇,“函數式”語言則是“說明式”范型中的一種。如今我回顧自己對語言的學習,其實十年也就學會了兩種語言:一種是命令式的Pascal/Delphi,另一種則是說明式的JavaScript。當然,從語言的實現方式來看,一種是靜態的,一種是動態的。
這便是我程序員生涯的全部了。
我畢竟不是計算機科學的研究者,而只是其應用的實踐者,因此我從一開始就缺乏在“程序”的某些科學的或學術層面上的認識是很正常的。也許有些人一開始就認識到程序便是如此,或者一種語言就應當是這樣構成和實現的,那么他可能是從計算機科學走向應用的,故而比我了解得多一些。而我,大概在十年前學習編程及在后來很多年的實踐中,僅被要求“寫出代碼”而從未被要求了解“什么是語言”。所以我才會后知后覺,才會在很長的時間里迷失于那些精細的、溝壑縱橫的語言表面而不自知。然而一如我現在所見到的,與我曾相同地行進于那些溝壑的朋友,仍然在持續地迷惑著、盲目著,全然無覺于溝壑之外的瑰麗與宏偉。
前些天我寫過一篇博客,是推薦那篇《十年學會編程》的。那篇文章道出了我在十年編程實踐之后,對程序語言的最深刻的感悟。我們學習語言其實不必貪多,深入一兩種就可以了。如果在一種類型的語言上翻來覆去,例如,不斷地學C、Delphi、Java、C#……無非是求生存、討生活,或者用以裝點個人簡歷,于編程能力提高的作用是不大的。更多的人,因為面臨太多的語言選擇而淺嘗輒止,多年之后仍遠離程序根本,成為書寫代碼的機器,把書寫代碼的行數、程序個數或編程年限作為簡歷中最顯要的成果。這在明眼人看來,不過是熟練的“砌磚工”而已。
我在《大道至簡》中說“如今我已經不再專注于語言”。其實在說完這句話之后,我就已經開始了對JavaScript的深入研究。在如此深入地研究一種語言,進而與另一種全然有別的語言進行比較之后,我對“算法+結構=程序”有了更深刻的理解與認識—盡管這句名言從來未因我的認識而變化過,從來未因說明與命令的編程方式而變化過,也從來未因動態與靜態的實現方法而變化過。
動靜之間,不變的是本質。我之所以寫這篇文章,并非想說明這種本質是什么抑或如何得到,只是期望讀者能在匆忙的行走中,時而停下腳步,遠遠地觀望一下目標罷了。
而我此刻,正在做一個駐足觀望的路人甲。
周愛民
2007年11月于個人博客
- 零起步玩轉掌控板與Mind+
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- OpenNI Cookbook
- Spring+Spring MVC+MyBatis整合開發實戰
- Selenium Testing Tools Cookbook(Second Edition)
- Learning Concurrent Programming in Scala
- jQuery炫酷應用實例集錦
- 汽車人機交互界面整合設計
- 零基礎學Scratch 3.0編程
- 測試架構師修煉之道:從測試工程師到測試架構師
- Mastering Gephi Network Visualization
- Learning Bootstrap 4(Second Edition)
- 微前端設計與實現
- 你必須知道的.NET(第2版)
- Serverless工程實踐:從入門到進階