簡談計算機和程式語言的發展史

2021-02-16 機器人之窗

要說什麼是程式語言?

我們先來說一下什麼是自然語言。

自然語言是我們人類交流的語言,包括漢語、方言、日語、英文、韓語等。

自然語言能夠承載的信息非常豐富,越是高級的程式語言越接近於自然語言。

不同的自然語言,有其獨特的語法規則。

這些年,計算機科學家們一直研究如何能夠讓計算機更好的識別、理解、模擬自然語言,這是人工智慧的一個研究方向領域。

人類發明計算機的時候,根據計算機的特性為它設計了最早的計算機語言——機器語言
這門語言的組合很簡單只有0和1兩個數字,也是計算機會的唯一一門語言。

漢語的基本組成單位是偏旁部首,英語的基本組成單位是26個字母。

一個道理。

為了讓大家能容易理解,我們把計算機擬人化一下。

假設要讓計算機把11和22進行相加,編程人員需要對計算機「說」:「001001001110001111001。」

計算機就明白啦,原來是讓我把11和22進行相加。

後來大家覺的這樣太麻煩了,人類就是這樣,因為嫌上樓麻煩,發明了電梯。

因為嫌走路麻煩,發明了汽車,火車,飛機。

對計算機講機器語言太麻煩了,還容易出錯,萬一多輸入了一個0或者少輸入了一個1,那意思可能完全變了。

研究計算機的前輩大牛們覺的機器語言太不好用了,也不知道折騰了多久,搗鼓出了彙編語言。

如果用彙編語言對計算機說,把11和22進行相加,那就容易多了。

mov ax,11
add ax,22

ax是計算機內部一個存數字的「小盒子」,它有一個專業的名詞叫做「寄存器」,有沒有想到超市裡面臨時存東西的柜子,一個道理。

但計算機理解不了彙編語言,因為計算機只懂機器語言。

所以,大牛們又設計了一種程序,叫做「彙編器」。

彙編器相當於一個翻譯,把人類寫好的彙編代碼翻譯成機器語言,這樣子計算機就聽懂了。

彙編語言的每一行語句都和機器語言相對應,所以彙編語言,我們可以理解成人類能夠直接看懂的「機器語言」。

這個過程聽起來簡單,但其實非常不簡單。

但人類還是嫌麻煩,能不能更簡單一點。

於是又設計了一些程式語言,我們就拿其中的C語言做代表吧。

11+22

那計算機自然就更聽不懂了,於是前輩們又設計了一種程序,叫做「編譯器」。

編譯器負責把高級語言翻譯成彙編語言。

彙編器再把彙編語言翻譯成機器語言。

有的朋友開始忍不住提問了:高級語言不能直接轉換為機器語言嗎?為什麼要先用編譯器,再用彙編器?

這個問題提的非常有水平,從技術上是可以實現的,但不是最優的解決方案,為什麼?將來學完編譯原理就知道了。

機器語言是被設計出來的,只能使用0和1.

但不同的公司設計的機器語言標準不一樣。

讓計算機把兩個數相加:

A公司設計的機器指令是:1000
B公司設計的機器指令是:0001

那麼一個程序如果使用A公司的彙編器生成的機器指令,就無法在B公司的機器上運行。

自然而然就誕生了一些協會,或者有權威的機構企業為了避免讓這種事情發生,會制定一些行業設計標準。

讓大家設計機器語言的是參考某個標準去設計,不要亂定義,和諧是人類一直追求的事情,但有時候為了賺錢,總有人會破壞和諧。

x86架構和Arm架構就是兩種標準指令集(機器語言)的編號縮寫。

想像一下你買的是聯想電腦筆記本,你朋友買的是戴爾筆記本。

但是兩臺電腦的USB口大小不一樣,你的U盤只能插到指定的筆記本上,那是一件多麼糟糕的事情。

(不過USB馬上也要淘汰了,大家插USB口的時候,有沒有一種感覺?第一次插,總是插不進去)

第一圖是現在的USB口,第二張圖是這幾年開始流行的USB-type-C接口,正反插都可以插入。

手機充電器也會慢慢全部改成第二種接口。

在聖經中記載了一段歷史,起初上帝創造人類,語言是相通的,但由於人類太過於驕傲,要合力造巴別塔,上帝讓人類說不同的語言,使人類無法溝通,計劃因此失敗,從此各散東西。

此事件,為世上出現不同語言和種族提供解釋。

直到今天,我相信全球統一化程式語言,是很多人曾經心中的夢想或者現在正在懷揣的夢想。

以上只是為了幫助大家理解程式語言,用擬人化的思維極其簡單的給大家說了一下原理。

慢慢的,計算機不僅僅局限於計算了,當可以處理簡單的文字,圖片信息的時候。

人類開始考慮,能不能讓計算機聯網,信息共享傳輸,有了這個腦洞之後,也不知道過了多久,大牛們就把網際網路就搗鼓出來了。

隨著科技進步,手機、嵌入式等各種電子設備誕生包括網站這個名詞概念的誕生,為了應付不同的行業需求,也誕生了許多相關產業。

在這個過程中,發明了各種各樣的程式語言解決這些需求,當然也有各種各樣的硬體廠商,CPU,顯卡,滑鼠,顯示器,鍵盤,印表機,掃描儀,音響,路由器……

程式語言那也是被發明出來一個接一個的。

Python、Php、Html、Css、Javascript、.Net、Delphi……截止今天,人類歷史上有過幾百種程式語言,今天能夠活下來沒有被淘汰的說明的確有市場還需要它。

有了作業系統、資料庫……

隨著代碼量越來越多,開發軟體難度越來越大,有了軟體工程,代碼管理,多人協同開發,設計模式,框架、類庫等概念,目的都是一個,為了簡化開發難度,保證開發質量,管理開發進度而誕生的相關技術。

但這個過程是非常艱難,不容易的,花費了很多智商頂尖科學家的腦力才有了我們今天的計算機技術。

上述任何一個專業名詞,都可以寫幾千頁的書去詳細描述,學無止境,浩瀚如煙,博大精深等這些詞語,大家以後隨著接觸計算機知識越來越多,越覺的人是多麼渺小卑微。

有些行業,年輕的時候學習的知識,老了還能用得上,只要堅持下去,就會厚積薄發,經驗豐富,越老越吃香。

但計算機行業,有些技術淘汰的很快,你可能還沒學透徹,才使用了沒幾年,某個技術就被淘汰了,如果追求這些皮毛的技術,經驗就不會持續疊加,隨著年老,經驗和記憶力衰退,拼不過年輕人了,中年危機……

這個行業,有深度有深度,要廣度有廣度。

就拿設計來說,有建築設計,工業設計,程序設計,動畫設計。
建築設計又能分為橋梁設計、古建築設計,現代建築設計……
動畫設計分為2D,3D各種,我不清楚的專業術語……
程序設計也能給你分出很多來……

大家千萬不要東學學,西學學,最後都是半桶水,先挑一個領域深入,到了一定的程度,再考慮相關領域的拓展,也就是廣度的發展。

說到這裡,其實不光是計算機行業,醫學行業,生物行業,天文學,物理學,機械學都是如此。

有的人就覺的,學的東西也太多了,有一種非常絕望的感覺!

不要怕,活在當下,怕什麼真理無窮,進一寸有一寸的歡喜。

不要跟別人比較,跟自己比,今天的自己是不是比昨天的自己優秀了一點點。

每天進步一點點,這也是我為什麼一開始就強調,必須把心安靜下來,否則走不遠,即使呆在這個行業,想要走純技術路線也是不現實的。

而且單純的走技術路線,要獲得比較高的成就還是比較難的,我們具體點說,要賺很多錢,有點難。

在這個講究人際關係,情緒管理、為人處世的時代,職業的發展路線也是多元化的,結合自己的性格,找到適合自己的路,才是王者之道。

摘選自《極客編程》之《從零學編程》系列教程之《計算機原理》之《簡談計算機》

相關焦點

  • 戲說程式語言發展史
    (期待地搓手手……)隨著人工智慧時代的來臨,編程也成為了社會的學習大熱門。到底編程是什麼呢?編程就是我們人類,將需解決的問題的思路、方法和手段,通過計算機或者某種智能設備能夠理解的形式,寫出來!這就是編程啦!不懂?!?!沒關係!
  • 計算機程式語言
    它是計算機的設計者通過計算機的硬體結構賦予計算機的操作功能,比如彙編語言(assembly language)。機器語言具有靈活、直接執行和速度快等特點。高級語言比較容易識記和理解,像C B語言等。語言分類編輯機器語言用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。
  • 計算機程式語言的發展簡史,人工智慧與雲計算程式語言!
    學習一兩門計算機程式語言也如當初學習英文一樣的火熱,隨著人工智慧AI和雲計算的不斷發展,Python語言和Scala語言已經成為這兩個領域裡面最為火熱的程式語言了,可以預知未來學習計算機程式語言的人也一樣會如同學習英文一樣的成為一種新常態,並且成為一種穩定的常態。以下筆者將以自己的學習認知,簡單的闡述一下計算機程式語言的發展。
  • 如何快速學習計算機程式語言
    如何快速學習計算機程式語言呢?這是很多零基礎同學想要知道的答案。隨著網際網路的飛速發展,程式設計師的工資越來越高,很多人想加入程式設計師的隊列,想要快速掌握編程技術。那麼應該如何快速學習計算機程式語言呢?1、首先應該知道自己為什麼學習計算機程式語言,如果只是盲目的追求高薪,對電腦程式沒有濃厚的興趣,那麼零基礎想要快速學習計算機程式語言是非常困難的。想計算機程式語言,應該擁有濃厚的興趣,再加上堅持不懈的精神,這樣才能更快地學習程式語言。
  • 編程是什麼——我國的計算機發展史
    之前我們用了好幾篇文章介紹了計算機的發展史,不過那是以美國為代表的計算機發展史,那時候美國有著世界最先進的科學技術,所以美國才能領先世界,下面我簡單的講一下我國的計算機發展史。說到我國的計算機發展,就離不開華羅庚教授。華羅庚教授是我國計算技術的奠基人和最主要的開拓者之一。
  • 【世界上最全的程式語言大集合】計算機各程式語言介紹
    語法是說明程式語言中,哪些符號或文字的組合方式是正確的,語義則是對於編程的解釋。程式語言俗稱「計算機語言」,種類非常的多,總的來說可以分成機器語言、彙編語言、高級語言三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
  • 程序猿必須知道的程式語言發展史——信息圖
    我們都知道,程式語言是一組用來定義電腦程式的語法規則。它是一種被標準化的交流語言,用來向計算機發出指令。
  • C語言怎麼樣?今天聊聊C語言的發展史!
    這裡,我想說一句可能有點片面的話,就是:如今這世界上,凡是帶電的地方,可能都會有她(C語言)或者她的子孫的影子。 一、C語言發展史 1. 語言之父
  • 編程培訓學什麼計算機語言比較好
    網際網路企業在最近這幾年有不錯的發展,網際網路技術不僅僅可以給年輕人帶來高額的薪水,還可以讓年輕人解決很多問題,因此有不少年輕人都想要學習編程。編程培訓也就成為熱門課程了,有很多人都在學習編程技術,而學習編程的話,就必須要學習計算計算機語言,學什麼語言比較好呢?
  • 機器人編程和計算機編程的不同點
    格物斯坦小坦克就大家關心的機器人編程教育和計算機編程教育做一個對比,這樣幫助大家更好地了解二者的共同性和區別。課程的內容由硬體知識和編程知識兩部分組成,往往硬體知識的比重會多於編程知識。硬體知識主要是物理學當中的簡單機械原理、電子電路和電機方面的知識。計算機編程教育:少兒編程課程的目標是系統化地教授兒童編程知識。根據不同年齡的兒童,分階段、系統性地教授兒童程式語言,從最開始的邏輯思維和抽象思維的培養,再到教會孩子學會運用「編程思維」,最後利用算法設計去解決實際問題的教育方式。
  • 計算機專業大一新生如何學習程式語言
    計算機專業在大一期間一定要把學習的重點放在基礎學科上,比如高數和物理等課程,基礎學科對於計算機專業是非常重要的,尤其是高等數學、線性代數、概率論、離散數學等課程,這些課程的掌握情況往往能夠決定研發人員未來的成長高度。
  • 你好,世界 ——計算機程式語言的特點比較、應用與學習
    圖1 計算機屏幕輸出hello world2.  計算機程式語言的發展隨著計算機技術的發展,計算機程式語言也在不停的發展,程式語言總的來說分為機器語言﹑彙編語言﹑高級語言。第三階段出現的計算機語言是今天我們重點講解的對象,這個階段的計算機語言進入了「面向人類」的高級語言,使得計算機語言更接近人類語言的使用習慣,讓編程變得簡單易理解。三個階段的發展,到今天各種計算機語言的蓬勃發展。作為計算機領域的一員,或者即將成為計算機領域的人,或者你根本對計算機語言沒有一個基本的認識,對於不同的計算機程式語言的作用和特點,我們都有必要了解。
  • C 語言發展史的點點滴滴
    ,計算機科學家,為BCPL程式語言的發明者,發展了TRIPOS作業系統。1966年,馬丁·理察德在劍橋大學,以CPL程式語言為基礎,發明了BCPL程式語言。1.3.2 B語言之父在1980年代,C語言的使用廣泛傳播,並且幾乎所有機器體系結構和作業系統都可以使用編譯器。尤其是,它已成為個人計算機的編程工具,無論是用於這些機器的商業軟體製造商,還是對編程感興趣的最終用戶,都非常受歡迎。
  • 學習計算機程式語言最好的方法是什麼?
    ;再就是那幾個大牛級別的,學一門語言就要鼓搗幾個編譯器;通過這些不同的學習方式和不同大神的回答我們可以看出每個人都有著自己不同的學習方式和學習方法,對於那些在某一個程式語言中已經是大神般的存在來說可以自己鼓搗編譯器去學習新的程式語言,那麼對於廣大的讀者而言很多人都是零基礎,那麼零基礎有哪些好的學習方式方法呢?
  • 學習編程和學習程式語言是兩碼事
    你可能正在學習一門程式語言,而不是編程本身計算機科學不是學習計算機,很震驚吧。相反,它是關於藉助計算機來自動解決問題的一門學問。解決問題才是計算機科學,而不是寫代碼。這就是許多計算機科學專業的學生,似乎不理解他們為什麼學習算法和數學的原因。
  • 甘肅專升本公共課計算機理工類編程 C語言編程的複習方法
    甘肅專升本公共課計算機理工類編程 C語言編程基本語法,對於甘肅專升本公共課計算機理工類要求的編程題,考試大綱的具體要求如下:程序和程序設計語言的基本概念。掌握算法的基本概念及表示。掌握程序設計的基本步驟和方法。
  • 計算機專業女生學習程式語言為何感覺特別難
    首先,不論是男生還是女生,在學習計算機知識的初期,都會遇到一些學習障礙,一方面計算機相關知識具有較強的抽象性,另一方面計算機相關知識的學習還需要輔助大量的實踐過程,這都會增加一定的學習難度。即使對於非常聰明的學生來說,學習計算機知識也不能僅僅重視理論知識學習,學習計算機知識除了要學習理論之外,還需要實踐操作,而且往往實踐操作更重要,這與高中時期的學習方式完全不同,這也是很多同學,尤其是女同學感到困惑的地方。
  • 你知道計算機語言、編程、算法及軟體開發之間有什麼聯繫和區別嗎
    總結起來,有很多問題可以歸類於一種問題,那就是有很多初學者,或者剛剛進入到計算機編程領域、軟體開發新手對一些概念還是搞不清楚,不能夠正確理解計算機語言、計算機編程、計算機算法及軟體開發之間的聯繫和區別。我們可以說計算機語言、計算機編程、計算機算法及軟體開發都屬於軟體範疇,最終的目的是開發出一個(套、種)計算機軟體,達到某些功能從而滿足人們的一定需求。
  • 想讓計算機懂你?程式語言請先了解一下
    除此之外,計算機還傲嬌,人類要想編程讓它們做事,必須先學會程式語言,這可比教熊孩子做作業難多了。1什麼是程式語言百度百科上是這麼定義的:程式語言可以簡單的理解為一種計算機和人都能識別的語言。一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。
  • 計算機編程雙語班開放,讓編程和英文齊飛
    ②培養專注力和細心度調試程序和排錯是編程中必不可少的步驟,有時只是少打一個字母或分號,程序都無法運行通過。排錯過程需要聚精會神,可以有效改正孩子粗心馬虎的小毛病。③提高抽象思維能力編程是人類和機器交流的語言。