- Python大學實用教程
- 齊偉
- 1717字
- 2021-01-22 18:49:47
1.1 編程語言簡史
Programming Language,即“編程語言”或者“程序設計語言”。這種語言不同于漢語、英語等語言。后者是隨著人類文化發展而演化的語言,稱為“自然語言”。而編程語言是“人造”的,屬于“人工語言”(或“人造語言”),是用來定義計算機程序的形式語言。
世界上第一臺電子數字計算設備是1937年設計的“阿塔納索夫-貝瑞計算機”(Atanasoff-Berry Computer,通常簡稱ABC計算機)。當然,ABC計算機并不能進行編程,它能做的就是求解線性方程組,也不是馮·諾伊曼結構的。20世紀40年代以后,逐漸發展出來的電子計算機都是馮·諾伊曼結構的,并延續至今。
相對于計算機的發展,編程語言出現得更早。從19世紀初起,“程序”就被用在提花織機、音樂盒和鋼琴等機器上。只是到后來,隨著電子計算機的飛速發展,“軟件”已經成為不可或缺的組成部分,“編程語言”才與電子計算機密切綁定在一起。
現在,人類所使用的編程語言有多少種?
難以統計!
在《維基百科》上列出了目前已知的編程語言(https://en.wikipedia.org/wiki/List_of_programming_languages)。為什么需要這么多編程語言呢?比較有說服力的回答可能是“不同的語言解決不同的問題”,以及“開發者有自己的喜好”。不管什么理由,現實就是人類創造了多種多樣的編程語言。
所以,在下述“編程語言極簡史”中只能選擇所謂的“主流語言”了。
? 1950年以前是編程語言的“史前”年代。雖然已經有了用“打孔卡”方式編程(見圖1-1-1)的記載,但并沒有被廣泛采用。

圖1-1-1 80列、矩形孔的標準IBM打孔卡(源自《維基百科》網站)
? 1957年,Fortran誕生,它是世界上第一個被正式采用并流傳至今的高級編程語言。發明者是John Warner Backus,此處應當獻上敬意和崇拜(以下列出的各項語言發明者,亦或該語言發明團隊的負責人、主要設計者,為了簡便,統一稱為“發明者”,并且都要獻上敬意和崇拜)。
? 1958年,LISP誕生。發明者John McCarthy。
? 1964年,BASIC誕生。發明者John G.Kemeny 和Thomas E.Kurtz。
? 1970年,Pascal誕生。發明者Niklaus Emil Wirth。此外,他還是Algol W、Modula、Oberon、Euler等語言的發明者。
? 1972年,C誕生。發明者Dennis Ritchie 和Ken Thompson。
? 1983年,C++誕生。發明者Bjarne Stroustrup。
? 1986年,Objective-C誕生。發明者Tom Love 和Brad Cox。
? 1987年,Perl誕生。發明者Larry Wall。
? 1991年,本書的主角Python誕生。發明者Guido van Rossum。有打油詩贊到:Python誕生,天降大任,開源開放,簡潔優雅,獨步天下,人工智能,“唯我不敗”。請牢記這個值得紀念的年份和“仁慈的獨裁者”(BDFL)。
? 1993年,Ruby誕生。發明者松本行弘。
? 1995年,Java誕生。發明者James Gosling。
? 1995年,JavaScript誕生。發明者Brendan Eich。注意,JavaScript與Java在名字上和語法上雖然相似,但它們是兩種完全不同的編程語言。
? 1995年,PHP誕生。發明者Rasmus Lerdorf。
? 2001年,C#誕生。發明者Microsoft 公司。
? 2009年,Go誕生。發明者Robert Griesemer、Rob Pike、Ken Thompson。
? 2011年,Rust誕生。發明者Graydon Hoare。
? 2014年,Swift誕生。發明者Chris Lattner。
圖1-1-2是一些編程語言的擬人化。

圖1-1-2 如果編程語言是人
(源自http://kokizzu.blogspot.com/2017/01/if-programming-language-were-humans.html以一種娛樂的心態看看編程語言,讓枯燥的編程工作也變得愉悅)
本“編程語言極簡史”就停止在了2014年,但是這并不意味著以后沒有新的語言出現。還有很多語言沒有被寫在上述列表中,并不是它不重要或者沒用途,而是使用了很“世俗”的觀點選擇了所謂的“主流語言”罷了。事實上,每種編程語言都有其存在的合理性,也有其應用的領域。
有些機構還會給出“編程語言排行榜”。或許每個人對這種排行榜有不同的解讀,并不意味著排名靠后的是“劣等”語言。學習者不能將排行榜作為選擇學習某種語言的依據。
那么,根據什么來選擇學習某種編程語言呢?
本書作者提供如下參考:依據一,項目需要;依據二,時代發展需要。
依據一就不需要闡述了。依據二貌似有點“空泛”,事實上靜心思考,就能理解。如今是什么時代?可能有各種回答方式,從靠近編程的角度來看,可以用“人工智能”時代來概括。
問:在“人工智能”時代,程序開發工作是否重要?
答:當然重要,雖然有媒體熱炒“機器人替代程序員”,但“機器人”的程序是誰寫的?追根溯源都是要人來做,“機器人”的智能還要靠“人工”。
問:學什么語言能參與這項工作?
答:Python。因為目前它是人工智能領域應用最多的語言。
決定了,學Python。
“歷史是過去的現實,現實是未來的歷史”。編程語言的發展史也緊扣社會的發展。如果讀者把“編程語言極簡史”與相應的社會經濟發展狀況對應,更能理解如何選擇學習某種語言了。
編程語言除了跟時代相關,其實還有“高低”之分,但無“貴賤”之別。
- SPSS數據挖掘與案例分析應用實踐
- Java系統分析與架構設計
- 深度學習經典案例解析:基于MATLAB
- 算法零基礎一本通(Python版)
- Getting Started with PowerShell
- Mastering Business Intelligence with MicroStrategy
- Python函數式編程(第2版)
- Visual Basic程序設計全程指南
- Learning Jakarta Struts 1.2: a concise and practical tutorial
- Python硬件編程實戰
- 算法精解:C語言描述
- RESTful Web API Design with Node.js
- Android開發進階實戰:拓展與提升
- JavaScript設計模式與開發實踐
- Learning Scrapy