一、計(jì)算機(jī)語言發(fā)展史
? 計(jì)算機(jī)已經(jīng)成為人大腦的延伸
? ? ? ? 計(jì)算機(jī)已經(jīng)成為我們這個(gè)時(shí)代的核心設(shè)備,每時(shí)每刻都需要它。計(jì)算機(jī)也不再是大家以前印象中的臺(tái)式機(jī)兽掰、服務(wù)器,已經(jīng)演變成了我們身邊隨處可見的物體徒役。比如:手機(jī)孽尽、平板電腦、筆記本忧勿,以及很多人沒意識(shí)到杉女,但實(shí)際上設(shè)備內(nèi)部包含“計(jì)算機(jī)”的設(shè)備。比如:電視機(jī)鸳吸、微波爐熏挎、汽車,甚至小孩玩的智能小機(jī)器人等晌砾。
? ? ? ? 可以這么說坎拐, 計(jì)算機(jī)已經(jīng)成為了人類身體的延伸、大腦的延伸养匈,成為不可或缺的一部分哼勇。未來,計(jì)算機(jī)將真的進(jìn)入人體呕乎、進(jìn)入大腦积担,真正成為人體的一部分。比如猬仁,在科幻電影《黑客帝國》中帝璧,主角被超級(jí)針頭插在頸部后方先誉,便能使他快速學(xué)習(xí),改變大腦神經(jīng)網(wǎng)絡(luò)的烁,幾秒就成為功夫高手褐耳,如圖 1-1 所示。
? ? ? ? 算法是計(jì)算機(jī)的靈魂渴庆,編程語言是塑造計(jì)算機(jī)靈魂的工具
? ? ? ? 計(jì)算機(jī)是如何工作的漱病?對(duì)于普通人來說,這很神秘把曼。讓計(jì)算機(jī)具備“靈魂”,可以按照人的意志運(yùn)行漓穿,甚至某天按照計(jì)算機(jī)自己的意志運(yùn)行(如果這一天實(shí)現(xiàn)嗤军,科幻電影《終結(jié)者》中的場(chǎng)景也會(huì)成為人類社會(huì)的可能選項(xiàng)),其核心就是“算法”晃危。“算法就是計(jì)算機(jī)的靈魂”算法的實(shí)現(xiàn)又依賴于“計(jì)算機(jī)編程語言”叙赚。
? ? ? ? 計(jì)算機(jī)編程語言的發(fā)展,是隨著計(jì)算機(jī)本身硬件發(fā)展而發(fā)展的僚饭。硬件速度越快震叮、體積越小、成本越低鳍鸵,應(yīng)用到人類社會(huì)的場(chǎng)景就會(huì)越多苇瓣,那么所需要的算法就會(huì)越復(fù)雜,也就要求計(jì)算機(jī)編程語言越高級(jí)偿乖。
? ? ? ? 最初重達(dá)幾十噸但一秒只能運(yùn)算 5000 次的 ENIAC(世界上第一臺(tái)計(jì)算機(jī))击罪,只能做非常小的應(yīng)用,比如:某些情況的彈道計(jì)算√靶剑現(xiàn)在任何一個(gè)人的手機(jī)運(yùn)算能力都可以秒殺那個(gè)年代地球上所有計(jì)算機(jī)運(yùn)算能力的總和媳禁。
? ? ? ? 計(jì)算機(jī)編程語言的發(fā)展歷經(jīng)了從低級(jí)到高級(jí)發(fā)展。發(fā)展的核心思想就是“讓人更容易編程”
? ? ? ? 越容易使用的語言画切,就有越多人使用竣稽;越多人使用,就有越多協(xié)作霍弹;越多協(xié)作毫别,就可以創(chuàng)造越復(fù)雜的物體;現(xiàn)代社會(huì)庞萍,一個(gè)軟件動(dòng)輒幾十人協(xié)作拧烦、幾百人協(xié)作、甚至幾千人協(xié)作也成為可能钝计,這自然就為開發(fā)復(fù)雜軟件提供了“人力基礎(chǔ)”恋博。這是一個(gè)人類普遍的社會(huì)現(xiàn)象齐佳,越容易使用的工具,通過使用數(shù)量债沮,通過大量人的協(xié)作炼吴,徹底改變某個(gè)行業(yè)甚至人類社會(huì)。
? ? ? ? 計(jì)算機(jī)語言經(jīng)歷了三代:第一代是機(jī)器語言疫衩,第二代是匯編語言硅蹦,第三代是高級(jí)語言。
第一代語言:機(jī)器語言(相當(dāng)于人類的原始階段)
? ? ? ? 機(jī)器語言由數(shù)字組成所有指令闷煤。當(dāng)讓你使用數(shù)字編程童芹,寫幾百個(gè)數(shù)字、甚至幾千個(gè)數(shù)字鲤拿,每天面對(duì)的是純數(shù)字假褪,我大膽預(yù)測(cè):“程序員群體 100%會(huì)有精神問題”。
? ? ? ? 機(jī)器語言通常由數(shù)字串組成(最終被簡化成 01)近顷,對(duì)于人類來說生音,機(jī)器語言過于繁瑣。使用機(jī)器語言窒升,人類無法編出復(fù)雜的程序缀遍。如下為一段典型的機(jī)器碼:
1. 0000,0000,000000010000代表 LOAD A, 16
2. 0000,0001,000000000001代表 LOAD B, 1
3. 0001,0001,000000010000代表 STORE B, 16
第二代語言:匯編語言(相當(dāng)于人類的手工業(yè)階段)
? ? ? ? 為了編程的方便,以及解決更加復(fù)雜的問題饱须。程序員開始改進(jìn)機(jī)器語言域醇,使用英文縮寫的助記符來表示基本的計(jì)算機(jī)操作。這些助記符構(gòu)成了匯編語言的基礎(chǔ)蓉媳。如下是一些常見的匯編語言助記符(單詞)比如:LOAD歹苦、MOVE 之類,這樣人更容易使用了督怜。識(shí)別幾百殴瘦、幾千個(gè)單詞,感覺要比幾百幾千個(gè)數(shù)字号杠,美妙多了蚪腋。匯編語言相當(dāng)于人類的手工業(yè)社會(huì),需要技術(shù)極其嫻熟的工匠姨蟋,但是開發(fā)效率也非常低屉凯。
? ? ? ? 匯編語言雖然能編寫高效率的程序,但是學(xué)習(xí)和使用都不是易事眼溶,并且很難調(diào)試悠砚。另一個(gè)復(fù)雜的問題,匯編語言以及早期的計(jì)算機(jī)語言(Basic堂飞、Fortran 等)沒有考慮結(jié)構(gòu)化設(shè)計(jì)原則灌旧,而是使用 goto 語句來作為程序流程控制的主要方法绑咱。這樣做的后果是:一大堆混亂的調(diào)轉(zhuǎn)語句使得程序幾乎不可能被讀懂。對(duì)于那個(gè)時(shí)代的程序員枢泰,能讀懂上個(gè)月自己寫的代碼都成為一種挑戰(zhàn)描融。匯編語言仍然應(yīng)用于工業(yè)電子編程領(lǐng)域、軟件的加密解密衡蚂、計(jì)算機(jī)病毒分析等窿克。
第三代:高級(jí)語言(相當(dāng)于人類的工業(yè)階段)
? ? ? ? 對(duì)于簡單的任務(wù),匯編語言可以勝任毛甲。但是隨著計(jì)算機(jī)的發(fā)展年叮,滲透到了工作生活的更多的方面,一些復(fù)雜的任務(wù)出現(xiàn)了玻募,匯編語言就顯得力不從心(應(yīng)該說是程序員使用匯編語言解決復(fù)雜問題出現(xiàn)了瓶頸)谋右。于是,出現(xiàn)了高級(jí)語言补箍。像我們熟知的 C、C++啸蜜、Java 等等都是高級(jí)語言坑雅。
? ? ? ? 高級(jí)語言允許程序員使用接近日常英語的指令來編寫程序。例如衬横,實(shí)現(xiàn)一個(gè)簡單的任務(wù):A+B=C? ,使用機(jī)器語言裹粤、匯編語言和高級(jí)語言的的實(shí)現(xiàn)如下圖 1-2 所示(OH MY GOD~~).
? ? ? ? 從上面這個(gè)簡單的加法計(jì)算,可以看出越到高級(jí)語言蜂林,越接近人的思維遥诉,人使用起來就越方便。
? ? ? ? 高級(jí)語言的出現(xiàn)噪叙,尤其是面向?qū)ο笳Z言的出現(xiàn)矮锈,相當(dāng)于人類的工業(yè)社會(huì),高級(jí)語言極其易用睁蕾,編程門檻和難度大大降低苞笨,大量的人員進(jìn)入軟件開發(fā)行業(yè),為軟件爆發(fā)性的增長提供了充足的人力資源子眶。目前以及可預(yù)見的將來瀑凝,計(jì)算機(jī)語言仍然處于“第三代高級(jí)語言”階段男娄。
未來簡史中關(guān)于計(jì)算機(jī)和人的核心思想有如下三點(diǎn):
1.? 生物也是算法恨樟,而生命過程就是進(jìn)行數(shù)據(jù)的處理
2. 智能和意識(shí)從碳基進(jìn)入到硅基,實(shí)現(xiàn)人類的終極進(jìn)化
3. 硅基智能生命的進(jìn)化速度將是指數(shù)級(jí)的沐寺,從而實(shí)現(xiàn)“人到神的進(jìn)化”
二渴杆、常見編程語言介紹
? ? ? ? Tiobe 發(fā)布了最新一期編程語言歡迎度榜單寥枝,其榜單根據(jù)互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的程序員宪塔、課程和第三方廠商的數(shù)量,并使用搜索引擎(如 Google脉顿、Bing蝌麸、Yahoo!)以及 Wikipedia、Amazon艾疟、YouTube 統(tǒng)計(jì)出排名數(shù)據(jù)来吩。
? ? ? ? TOP5 幾乎沒有變化,Java 和 C 語言牢牢占據(jù)前兩名蔽莱。Python相較去年上升一位進(jìn)入 TOP3弟疆,C++下降一位,Visual Basic .NET 也超越 C#上升到 TOP 行列盗冷。
C語言
? ? ? ? C語言誕生于 1972 年怠苔,可以稱之為現(xiàn)代高級(jí)語言的鼻祖,由著名的貝爾實(shí)驗(yàn)室發(fā)明仪糖。C 語言是人們追求結(jié)構(gòu)化柑司、模塊化、高效率的“語言之花”锅劝。在底層編程攒驰,比如嵌入式、病毒開發(fā)等應(yīng)用故爵,可以替代匯編語言來開發(fā)系統(tǒng)程序玻粪。在高層應(yīng)用,也可以開發(fā)從操作系統(tǒng)(Unix/Linux/Windows都基于 C 語言開發(fā))到各種應(yīng)用軟件诬垂。
老鳥建議:
? ? ? ? 大學(xué)開這門課請(qǐng)一定認(rèn)真學(xué)習(xí)劲室,而不要覺得老套,那是經(jīng)典结窘;C 語言在現(xiàn)代流行程度仍然排名前三很洋。
C++語言
? ? ? ? 作為 C 語言的擴(kuò)展,C++是貝爾實(shí)驗(yàn)室于80 年代推出的隧枫。C++是一種混合語言蹲缠,既可以實(shí)現(xiàn)面向?qū)ο缶幊蹋部梢蚤_發(fā) C 語言面向過程風(fēng)格的程序悠垛。
? ? ? ? C語言讓程序員第一次可以通過結(jié)構(gòu)化的理念編寫出易于理解的復(fù)雜程序线定; 盡管 C 語言是一個(gè)偉大的語言,但是程序的代碼量達(dá)到 30000 行以上時(shí)确买,程序員就不能很好的從總體上把握和控制這個(gè)程序斤讥。 因此,在 80 年代初期,很多軟件項(xiàng)目都面臨無法解決的問題而不能順利進(jìn)行芭商。 1979 年派草,貝爾實(shí)驗(yàn)室發(fā)明了 C++。 C++最初的名字叫做“帶類的 C”铛楣,后來才改名叫 C++近迁。國內(nèi)通用叫法:“C 加加”,國際通用讀法“C plus plus”。
? ? ? ? C++語言在科學(xué)計(jì)算簸州、操作系統(tǒng)鉴竭、網(wǎng)絡(luò)通訊、系統(tǒng)開發(fā)岸浑、引擎開發(fā)中仍然被大量使用搏存。
Java語言
? ? ? ? 由美國 SUN 公司(被 oracle 公司收購)發(fā)明于 1995 年,是目前業(yè)界應(yīng)用最廣泛矢洲、使用人數(shù)最多的語言璧眠,連續(xù)多年排名世界第一,可以稱之為“計(jì)算機(jī)語言界的英語”读虏。
? ? ? ? Java廣泛應(yīng)用于企業(yè)級(jí)軟件開發(fā)责静、安卓移動(dòng)開發(fā)、大數(shù)據(jù)云計(jì)算等領(lǐng)域盖桥,幾乎涉及 IT 所有行業(yè)灾螃。關(guān)于 Java 的發(fā)展歷史和特性,將在后面專門介紹葱轩。
JavaScript語言
? ? JavaScript是一種腳本語言,已經(jīng)被廣泛用于Web 應(yīng)用開發(fā);應(yīng)用范圍越來越大藐握,重要性越來越高靴拱。目前,流行的 H5 開發(fā)的核心其實(shí)就是 JavaScript 語言猾普。
Python語言
? ? ? ? Python發(fā)明于 1989 年袜炕,語法結(jié)構(gòu)簡單,易學(xué)易懂初家;Python 具有豐富和強(qiáng)大的庫偎窘。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是 C/C++)很輕松地聯(lián)結(jié)在一起溜在。
? ? ? ? Python廣泛應(yīng)用于:圖形處理陌知、科學(xué)計(jì)算、web 編程掖肋、多媒體應(yīng)用仆葡、引擎開發(fā);尤其是在未來大熱方向機(jī)器學(xué)習(xí)和人工智能上有非常大的潛力志笼。
PHP語言
? ? ? ? PHP 原始為 Personal Home Page 的縮寫沿盅,已經(jīng)正式更名為 "PHP: Hypertext Preprocessor"把篓。PHP 語言,一般用于 WEB 開發(fā)領(lǐng)域腰涧;大量的中小型網(wǎng)站以及某些大型網(wǎng)站使用 PHP 開發(fā)韧掩。
Object-C和 Swift 語言
? ? ? ? Object-C通常寫作 Objective-C 或者 Obj-C 或 OC,是根據(jù) C 語言所衍生出來的語言窖铡,繼承了 C 語言的特性疗锐,是擴(kuò)充 C 的面向?qū)ο缶幊陶Z言。OC 主要用于蘋果軟件的開發(fā)万伤。
? ? ? ? Swift窒悔,蘋果于 2014 年 WWDC(蘋果開發(fā)者大會(huì))發(fā)布的新開發(fā)語言,可與 OC 共同運(yùn)行于 Mac OS 和iOS 平臺(tái)敌买,用于搭建基于蘋果平臺(tái)的應(yīng)用程序简珠。
C#(c sharp)語言
? ? ? ? C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework 之上的高級(jí)程序設(shè)計(jì)語言虹钮。C#在基于 windows 操作系統(tǒng)的應(yīng)用開發(fā)這一領(lǐng)域在取代 C++聋庵,占據(jù)主導(dǎo)地位≤搅唬“成也蕭何敗也蕭何”祭玉,C#的微軟身份,也成為了發(fā)展的阻力春畔,在其他 IT 領(lǐng)域應(yīng)用較少脱货。
Kotlin語言
? ? ? ? Kotlin 是一個(gè)用于現(xiàn)代多平臺(tái)應(yīng)用的靜態(tài)編程語言,由 JetBrains 開發(fā)律姨。Kotlin 可以編譯成 Java 字節(jié)碼振峻,也可以編譯成 JavaScript,方便在沒有 JVM 的設(shè)備上運(yùn)行择份。
? ? ? ? Kotlin 已正式成為Android 官方支持開發(fā)語言扣孟,并且是一種可以兼容 java 的語言。
Go語言
? ? ? ? Go(又稱 Golang)是 Google 的Robert Griesemer荣赶,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強(qiáng)類型凤价、編譯型語言。Go 語言語法與 C 相近拔创,但功能上有:內(nèi)存安全利诺,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計(jì)算剩燥。
易語言
? ? ? ? 易語言是一門以中文作為程序代碼編程語言立轧,其以“易”著稱,創(chuàng)始人為吳濤。易語言早期版本的名字為 E 語言氛改。其最早的版本的發(fā)布可追溯至 2000 年 9 月 11 日帐萎。
Fortran語言
? ? ? ? 世界上第一種高級(jí)語言,IBM 公司在 1954 年提出的胜卤,主要用在需要復(fù)雜數(shù)學(xué)計(jì)算的科學(xué)和工程領(lǐng)域〗迹現(xiàn)在仍然被廣泛使用,尤其是工程領(lǐng)域葛躏。Fortran 雖然適合編寫科學(xué)計(jì)算方面的程序澈段,但是不適于編寫系統(tǒng)程序。
Basic語言
? ? ? ? 雖然易學(xué)舰攒,但功能不夠強(qiáng)大败富,應(yīng)用到大程序的有效性令人懷疑。已經(jīng)逐步退出歷史舞臺(tái)摩窃。
COBOL語言
? ? ? ? 于 1959 年提出兽叮。主要用于大量精確處理數(shù)據(jù)的商業(yè)領(lǐng)域中,比如金融猾愿、銀行鹦聪。今天,仍然有超過一半的商業(yè)軟件使用 COBOL 編寫蒂秘。有將近 100 萬人使用 COBOL 編程泽本。
Pascal語言
? ? Pascal 的名稱是為了紀(jì)念十七世紀(jì)法國著名哲學(xué)家和數(shù)學(xué)家 Blaise Pascal 而來的,它由瑞士 Niklaus Wirth 教授于六十年代末設(shè)計(jì)并創(chuàng)立的姻僧。Pascal 語言語法嚴(yán)謹(jǐn)规丽,層次分明,程序易寫撇贺,可讀性強(qiáng)赌莺,是第一個(gè)結(jié)構(gòu)化編程語言。由于沒有大廠商和政府的支持显熏,只是限于大學(xué)教育這一塊雄嚣。
三晒屎、未來的發(fā)展方向
為什么擔(dān)心軟件開發(fā)人才飽和是多余的喘蟆?
? ? ? ? 很多未進(jìn)入或剛進(jìn)入軟件行業(yè)的朋友,特別擔(dān)心一個(gè)問題“這么多人學(xué)鼓鲁,會(huì)不會(huì)飽和蕴轨?”。這其實(shí)是杞人憂天骇吭,越多人編程橙弱,才能為軟件行業(yè)提供巨量的人力資源,才能實(shí)現(xiàn)我們以前都不敢想的應(yīng)用開發(fā)。要以發(fā)展的眼光看問題棘脐,而不是靜態(tài)的眼光斜筐。
? ? ? ? 越多人編程,越多應(yīng)用需要做蛀缝,越多應(yīng)用需要做顷链,更需要越多人編程。這就像一個(gè)農(nóng)夫剛剛進(jìn)入工業(yè)社會(huì)屈梁,擔(dān)心服裝工廠工人招滿了怎么辦? 他沒有想到工業(yè)發(fā)展后嗤练,鋼鐵廠也需要工人、汽車廠也需要工人在讶。年輕朋友請(qǐng)記住“軟件行業(yè)發(fā)展永無止境煞抬,將會(huì)整合人類現(xiàn)有所有行業(yè),也會(huì)創(chuàng)造很多新的行業(yè)”构哺。
未來 30 年必將是軟件人才的世界
? ? ? ? 未來 30 年的世界必將是軟件人才的世界革答;除了普通軟件的應(yīng)用,大批的人工智能應(yīng)用也將出現(xiàn)遮婶;未來自動(dòng)駕駛蝗碎、自動(dòng)翻譯、機(jī)器人保姆甚至機(jī)器人女友都會(huì)進(jìn)入我們的生活旗扑,甚至計(jì)算機(jī)編程和基因工程結(jié)合蹦骑,長生不老都能實(shí)現(xiàn);有興趣的童鞋臀防,推薦大家看《未來簡史》這本書眠菇,把握一下未來的脈搏。 請(qǐng)發(fā)揮我們年輕人的想象力袱衷,盡情的在 IT 的世界中揮灑吧捎废!
? ? ? ? 附:未來簡史,人類社會(huì)的終極變革:從智人到神人
? ? ? ? 經(jīng)過7萬年的演化致燥,人類主題已從饑荒登疗、瘟疫和戰(zhàn)爭,轉(zhuǎn)變?yōu)橛郎釉椤⒖鞓泛蜕袢耍〒碛刑囟ǖ某芰Γ┓妗W诮虅?chuàng)建秩序,科學(xué)尋求力量脱吱,二者共同推動(dòng)人類文明的演進(jìn)智政。人文主義成為我們的信仰,人類相信自由意志箱蝠、個(gè)體價(jià)值续捂。
? ? ? ? 但生命工程等技術(shù)的發(fā)展已經(jīng)顛覆了人文主義的基石垦垂,我們發(fā)現(xiàn)并沒有所謂的自由意志,人類也不是什么不可分割的個(gè)體牙瓢,也沒有靈魂劫拗,只找到了基因、荷爾蒙矾克、神經(jīng)元杨幼,遵守著世界共同遵循的物理和化學(xué)原則。大腦和意志可以被操控聂渊〔罟海“個(gè)人”概念在逐步瓦解消融。
? ? ? ? 人是一堆算法汉嗽,人的感覺欲逃、情緒、想法饼暑,都是算法在支配稳析,生命就是進(jìn)行數(shù)據(jù)處理。人類正在利用人工智能弓叛、生物科技彰居,不斷自我升級(jí),大部分人將淪為“無用階層”撰筷,一小部分人則進(jìn)化成“神人”陈惰,統(tǒng)治世界。
? ? ? ? 以人為中心的世界觀將轉(zhuǎn)換為以數(shù)據(jù)為中心毕籽。取代人文主義的將是數(shù)據(jù)主義抬闯,它將以最大化數(shù)據(jù)流量和系統(tǒng)效率為價(jià)值目標(biāo)。在未來有可能不再需要人類关筒,這是我們應(yīng)該認(rèn)真思考的問題溶握。
? ? ? ? 但科技的發(fā)展并不會(huì)帶來一定的結(jié)果,同樣的科技也會(huì)創(chuàng)造出非常不一樣的社會(huì)蒸播,未來無法真正預(yù)測(cè)睡榆,仍有無限可能。
? ? ? ? 用心做到極致袍榆,堅(jiān)持改變命運(yùn)
? ? ? ? 歡迎大家點(diǎn)擊了解百戰(zhàn)程序員并評(píng)論分享的你的想法和建議胀屿,在下一篇文章中,我們一起走進(jìn)Java語言的大門蜡塌。