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

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)的記載,但并沒有被廣泛采用。

img

圖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是一些編程語言的擬人化。

img

圖1-1-2 如果編程語言是人

(源自http://kokizzu.blogspot.com/2017/01/if-programming-language-were-humans.html以一種娛樂的心態看看編程語言,讓枯燥的編程工作也變得愉悅)

本“編程語言極簡史”就停止在了2014年,但是這并不意味著以后沒有新的語言出現。還有很多語言沒有被寫在上述列表中,并不是它不重要或者沒用途,而是使用了很“世俗”的觀點選擇了所謂的“主流語言”罷了。事實上,每種編程語言都有其存在的合理性,也有其應用的領域。

有些機構還會給出“編程語言排行榜”。或許每個人對這種排行榜有不同的解讀,并不意味著排名靠后的是“劣等”語言。學習者不能將排行榜作為選擇學習某種語言的依據。

那么,根據什么來選擇學習某種編程語言呢?

本書作者提供如下參考:依據一,項目需要;依據二,時代發展需要。

依據一就不需要闡述了。依據二貌似有點“空泛”,事實上靜心思考,就能理解。如今是什么時代?可能有各種回答方式,從靠近編程的角度來看,可以用“人工智能”時代來概括。

問:在“人工智能”時代,程序開發工作是否重要?

答:當然重要,雖然有媒體熱炒“機器人替代程序員”,但“機器人”的程序是誰寫的?追根溯源都是要人來做,“機器人”的智能還要靠“人工”。

問:學什么語言能參與這項工作?

答:Python。因為目前它是人工智能領域應用最多的語言。

決定了,學Python。

“歷史是過去的現實,現實是未來的歷史”。編程語言的發展史也緊扣社會的發展。如果讀者把“編程語言極簡史”與相應的社會經濟發展狀況對應,更能理解如何選擇學習某種語言了。

編程語言除了跟時代相關,其實還有“高低”之分,但無“貴賤”之別。

主站蜘蛛池模板: 青海省| 宁南县| 唐山市| 天津市| 乐清市| 平果县| 佛教| 建瓯市| 天全县| 久治县| 彰武县| 双鸭山市| 武鸣县| 武胜县| 山西省| 蓬莱市| 三台县| 普格县| 许昌县| 漳浦县| 海盐县| 洛阳市| 兴城市| 会昌县| 张家港市| 咸宁市| 襄樊市| 弋阳县| 哈尔滨市| 射阳县| 万州区| 莱芜市| 观塘区| 门源| 什邡市| 灵璧县| 靖边县| 和平县| 靖江市| 井研县| 长岛县|