JavaScript語言精髓與編程實踐(第2版)

JavaScript語言精髓與編程實踐(第2版)

《JavaScript語言精髓與編程實踐(第2版)》是2012 年 出版的圖書,作者是周愛民。

基本介紹

  • 書名:JavaScript語言精髓與編程實踐(第2 版)
  • ISBN:978-7-121-15640-3
  • 頁數:476頁
  • 定價:79元
  • 出版時間:2012年3月
出版信息,內容簡介,作者簡介,第 2 版 代序,第 1 版 代序,前 言,目 錄,

出版信息

JavaScript語言精髓與編程實踐(第2版)
周愛民 著
ISBN 978-7-121-15640-3
2012年3月出版
定價:79元
16開
476頁
以JavaScript視角看整個計算機語言的世界,小角度引來的大話題

內容簡介

本書詳細講述JavaScript 作為一種混合式語言的各方面特性,包括過程式、面向對象、函式式和動態語言特性等,在動態函式式語言特性方面有著尤為細緻的講述。本書的主要努力之一,就是分解出這些語言原子,並重現將它們混合在一起的過程與方法。通過從複雜性到單一語言特性的還原過程,讀者可了解到語言的本質,以及“層出不窮的語言特性”背後的真相。
本書主要的著述目的是基於一種形式上簡單的語言來講述“語言的本質及其套用”。本書詳細講述了通過框架執行過程來構造一個JavaScript 擴展框架的方法,並完整地講述了框架擴展中各種設計取捨,因此可以作為研究電腦程式設計語言時的參考,用以展示現實系統如何實現經典理論中的各種編程范型。

作者簡介

周愛民(Aimingoo),國內軟體開發界資深軟體工程師、架構師,技術作家。有十餘年的軟體開發、項目管理、團隊建設的經驗。著有《Delphi原始碼分析》、《大道至簡》和《JavaScript語言精髓與編程實踐》等專著。
◆2001年,主持完成的“極光數據處理倉庫中心繫統”被河南省信息產業廳授予省高新技術產品二等獎。
◆2003年,被美國Borland公司授予 “Borland Delphi產品專家”稱號。
◆2004年,出版《Delphi原始碼分析》,被譽為“Delphi領域精品著作”。
◆2005年,發布《大道至簡》電子版(第一版)。
◆2006年,發起開源項目QomolangmaOpenProiect,探討語言系統基礎技術。
◆2007年3月,出版《大道至簡》(第二版)。
◆2008年3月,出版《JavaScript語言精髓與編程實踐》第一版。

第 2 版 代序

要有光
《世界需要一種什麼樣的語言》節選
什麼才是決定語言的未來的思想呢?或者我們也可以換個角度來提出這個問題:世界需要一種什麼樣的語言?
特性眾多、適應性強,就是將來語言的特點嗎?我們知道現在的C#與Java 都在這條道路上前進。與特定的系統相關,就是語言的出路嗎?例如曾經的VC++,以及它面向不同平台的版本。當然,與此類似的語言,還有C,以及彙編語言等。
這些例舉其實都是在特定環境下的特定語言,所不同的無非是此處的環境的大小。這其實也是程式設計師的心病:我們到底選Windows 平台,還是Java 平台,或者Linux 系統,再或者是……我們總是在不同的廠商及其支持的平台中選擇,而最終這種選擇又決定了我們所使用的語言。這與喜好無關,也與語言的好壞無關,不過是一種趨利的選擇罷了。所以你在使用著的也許只是一種“並不那么‘好’”,以及並不能令你那么開心地編程的語言。你越發辛勤地工作,越發地為這些語言搖旗鼓譟,你也就離語言的真相越來越遠。
當然,這不過是一種假設。但是,真相不都是從假設開始的嗎?
語言有些很純粹,有些則以混雜著稱。如果編程世界只有一種語言,無論它何等複雜,也必因毫無比較而顯得足夠純粹。所以只有在多種語言之間比較,才會有純粹或混雜的差異:純粹與混雜總是以一種或多種分類法為背景來描述的。
因此我們了解這些類屬概念的標準、原則,也就回溯到了種種語言的本質:它是什麼、怎么樣,以及如何工作。這本書,將這些分類回溯到兩種極端的對立:命令式與說明式、動態與靜態。我講述除了靜態語言(一般是指類似C、C++、Delphi 等的強類型、靜態、編譯型語言)之外的其他三種類型。正是從根底里具有這三種類型的特性,所以JavaScript 具有令人相當困擾的混合語言特性。分離它們,並揭示將它們混沌一物的方法與過程,如歷經涅槃。在這一經歷中,這本書就是我的所得。
多年以來,我在我所看不見的黑暗與看得見的夢境中追尋著答案。這本書是我最終的結論,或者結論面前的最後一層表象:我們需要從純化的語言中領悟到編程的本質,並以混雜的語言來創造我們的世界。我看到:局部的、純化的語言可能帶來獨特的性質,而從全局來看,世界是因為混雜而變得有聲有色。如果上帝不說“要有光”,那么我們將不能了解世象之表;而世象有了表面,便有了混雜的色彩,我們便看不見光之外的一切事物。我們依賴於光明,而事實是光明遮住了黑暗。如同你現在正在使用的那一種、兩種或更多種語言,阻礙了你看到你的未來。
周愛民
2009 年1 月於本書精簡版序

第 1 版 代序

學兩種語言
《我的程式語言實踐》節選
《程式設計語言——實踐之路》一書對“語言”有一個分類法,將語言分類為“說明式”與“命令式”兩種。Delphi 以及C、C++、Java、C#等都被分在“命令式”語言范型的範疇,“函式式”語言則是“說明式”范型中的一種。如今我回顧自己對語言的學習,其實十年也就學會了兩種語言:一種是命令式的Pascal/Delphi,另一種則是說明式的JavaScript。當然,從語言的實現方式來看,一種是靜態的,一種是動態的。
這便是我程式設計師生涯的全部了。
我畢竟不是計算機科學的研究者,而只是其套用的實踐者,因此我從一開始就缺乏對“程式”的某些科學的或學術層面上的認識是很正常的。也許有些人一開始就認識到程式便是如此,或者一種語言就應當是這樣構成和實現的,那么他可能是從計算機科學走向套用,故而比我了解得多些。而我,大概在十年前學習編程以及在後來很多年的實踐中,僅被要求“寫出代碼”而從未被要求了解“什麼是語言”。所以我才會後知後覺,才會在很長的時間裡迷失於那些精細的、溝壑縱橫的語言表面而不自知。然而一如我現在所見到的,與我曾相同地行進於那些溝壑的朋友,仍然在持續地迷惑著、盲目著,全然無覺於溝壑之外的瑰麗與宏偉。
前些天寫過一篇部落格,是推薦那篇“十年學會編程”的。那篇文章道出了我在十年編程實踐之後,對程式語言的最深刻的感悟。我們學習語言其實不必太多,深入一兩種就可以了。如果在一種類型的語言上翻來覆去,例如不斷地學C、Delphi、Java、C#……無非是求生存、討生活,或者用以裝點個人簡歷,於編程能力的提高用處是不大的。更多的人,因為面臨太多的語言選擇而淺嘗輒止,多年之後仍遠離程式根本,成為書寫代碼的機器,把書寫代碼的行數、程式個數或編程年限作為簡歷中最顯要的成果。這在明眼人看來,不過是熟練的砌磚工而已。
我在《大道至簡》中說“如今我已經不再專注於語言”。其實在說完這句話之後,我就已經開始了對JavaScript 的深入研究。在如此深入地研究一種語言,進而與另一種全然有別的語言比較之後,我對“程式=算法+結構”有了更深刻的理解與認識。儘管這句名言從來未因我的認識而變化過,從來未因說明與命令的編程方式而變化過,也從來未因動態與靜態的實現方法而變化過。
動靜之間,不變的是本質。我之所以寫這篇文章,並非想說明這種本質是什麼抑或如何得到,只是期望讀者能在匆忙的行走中,時而停下腳步,遠遠地觀望一下目標罷了。而我此刻,正在做一個駐足觀望的路人。
周愛民
2007 年11 月於個人部落格

前 言

語言
語言是一種交流的工具,這約定了語言的“工具”本質,以及“交流”的功用。“工具”的選擇只在於“功用”是否能達到,而不在於工具是什麼。
在數千年之前,遠古祭師手中的神杖就是他們與神交流的工具。祭師讓世人相信他們敬畏的是神,而世人只需要相信那柄神杖。於是,假如祭師不小心丟掉了神杖,就可以堂而皇之地再做一根。甚至,他們可以隨時將舊的換成更新或更舊的神杖,只要他們宣稱這是一根更有利於通神的杖。對此,世人往往做出迷惑的表情,或者呈現歡欣鼓舞的情狀。今天,這種表情或情狀一樣地出現在大多數程式設計師的臉上,出現在他們聽聞到新計算機語言被創生的時刻。
神杖換了,祭師還是祭師,世人還是會把頭叩得山響。祭師掌握了與神交流的方法(如果真如同他們自己說的那樣),而世人只看見了神杖。
所以,泛義的工具是文明的基礎,而確指的工具卻是愚人的器物。
計算機語言有很多種分類方法,例如高級語言或者低級語言。其中一種分類方法,就是將計算機語言分為“靜態語言”和“動態語言”——事物就是如此,如果用一對絕對反義的詞來分類,就相當於涵蓋了事物的全體。當然,按照中國人中庸平和的觀點,以及保守人士對未知可能性的假設,我們還可以設定一種中間態:半動態語言。你當然也可以叫它半靜態語言。
所以,我們現在是在討論一種很泛義的計算機語言工具。至少在眼下,它(在分類概念中)涵蓋了計算機語言的二分之一。當然,限於我自身的能力,我只能討論一種確指的工具,例如JavaScript。但我希望你由此看到的是計算機編程方法的基礎,而不是某種愚人的器物。JavaScript 的生命力可能足夠頑強,我假定它比C 語言還頑強,甚至比你我的生命都頑強。但它只是愚人的器物,因此反過來說:它能不能長久地存在並不重要,重要的是它能不能作為這“二分之一的泛義”來供我們討論。

目 錄

第1 部分 語言基礎
第1 章十年 JavaScript....................................................................... 3
第 2 章 JavaScript 的語法................................................................... 31
第 2 部分 語言特性及基本套用
第3 章 JavaScript 的非函式式語言特性.................................................. 117
第 4 章 JavaScript 的函式式語言特性.................................................... 203
第 5 章 JavaScript 的動態語言特性....................................................... 279
第 3 部分 編程實踐
第6 章元語言:QoBean 核心技術與實現............................................... 363
第 7 章一般性的動態函式式語言技巧.................................................... 415
附錄A 術語表................................................................................445
附錄B 主要引擎的特性差異列表..........................................................451
附錄C 附圖..................................................................................453
附錄D 參考書目.............................................................................457
附錄E 本書各版次主要修改...............................................................459

相關詞條

熱門詞條

聯絡我們