程序猿的崛起,一篇文章看懂程式語言

2021-01-08 中國科普博覽

出品:科普中國

製作:科了個普 楊陽

監製:中國科學院計算機網絡信息中心

王國維在《人間詞話》裡寫道:古今之成大事業、大學問者,必經過三種之境界:「昨夜西風凋碧樹。獨上高樓,望盡天涯路。」此第一境也。「衣帶漸寬終不悔,為伊消得人憔悴。」此第二境也。「眾裡尋他千百度,驀然回首,那人卻在,燈火闌珊處。」此第三境界。概括了一種鍥而不捨的堅毅性格和執著態度。

「知道自己不懂」是為第一境界;「不知道自己懂」是為第二境界; 「知道自己懂了」是為第三境界。

無論你是小白,還是小白,還是小白,你在學習編程的過程中都會深深的體會到這三句話太準確了。學習編程意味著我們將要進入一個與日常生活經驗迥然不同的新領域,這最初的曲折辛酸,以及逐漸初窺門徑、小有所成並最終笑傲江湖、獨當一面的欣喜正是上面所說的學習三境界的真實寫照。這篇文章將要介紹計算機編程的前世今生,如果你想要了解程序猿這一高收入人群的真實生態,這篇文章就是IT界的《物種起源》,為你道盡它們的演化歷程和苦樂悲喜。

電腦的誕生

首先我們熱烈歡迎世界上最早的電腦登場,對,它的名字就叫安提基特拉機械,被認為是最初的電腦,展示於雅典國家考古博物館。

此機械是在希臘安提基特拉島附近的安提基特拉沉船裡發現的,所以叫安提基特拉機械。它誕生於公元前100年左右,屬於模擬計算機,至今已有二千多年歷史。類似的複雜工藝技術直到14世紀時歐洲製造了天文鐘後才重新出現。它是古代人類智慧的最高傑作之一。

那麼,真正的近代的電腦誕生於什麼時候呢?答案是1945年,諾伊曼發明數字式電腦。此處應該有掌聲。

諾先生規定用二進位替代十進位運算,並將計算機分成五大組件,他的思想為電子計算機的邏輯結構設計奠定了基礎,並且已成為計算機設計的基本原則。

1951年,EDVAC計算機宣告誕生。由於他在計算機邏輯結構設計上的偉大貢獻,諾先生被譽為「計算機之父」。

由上圖可以得知,直到93年,我們現在一般用戶熟知的window作業系統才誕生。

電腦程式運行的基本原理是什麼?

感謝諾先生,沒有他的發明,小編今天就不能夠在電腦面前給大家科普了。接下來小編首先給大家分析一下開啟計算機主機的那一瞬間,桌面蹦出來的畫面是怎麼回事。

在一臺電腦裡有很多程序。其中,計算機做任何事情之前必須存在和運行的最重要的程序是作業系統程序。對,沒錯。就是你每次開機時候看到的那個熟悉的畫面,伴隨著叮噹叮噹的音樂,世界首富比爾蓋茨的微軟公司就是靠發明這個windows系統發大財的。這是計算機的主要「系統程序」。此作業系統程序不僅控制硬體部件,還控制其他軟體(許多應用程式),還可讓計算機用戶與計算機本身進行互動(比如通過鍵盤,觸控螢幕,語音激活等等)。實在是萬能之神啊。

什麼是計算機語言?

與人類語言的複雜多變一樣,現在世界上已經有200種以上的計算機語言了。當然其中也有很多幾乎很少使用的語言,實際經常用到的語言只有20到30種。儘管如此,一個人要掌握太多計算機語言的話還是比較難的。

在那麼多的程序設計語言中,學習哪個才好?下面是最常用的語言,程序猿們的本事可不僅僅是直立行走那麼簡單,掌握這些工具中的大部分,並且精通其中的一兩種,才是一隻合格的現代程序猿。

人類語言是指,人類用特定的格式和詞彙來向他人發出指令,表達意願,進行交流。不同種類語言的詞彙和格式不盡相同,但可以達到相同的交流目的。

同樣,我們也可以用「語言」來控制電腦,讓電腦為我們做事情,這種語言叫做程式語言(Programming Language)。我們先簡單介紹一下常用程式語言。 程式語言也有固定的格式和詞彙,我們必須學會使用,才能在此基礎上編寫程序控制電腦。常用的程式語言有C語言,C ++,Java,C#,Python,PHP,JavaScript,Go語言,Objective-C,Swift等等,每種語言都有自己的優點。

計算機是如何聽懂程式語言的呢?實際上,如果沒有編譯器(一種專門程序)的存在,計算機是無法理解程式語言的。編譯器用來將程式語言編寫的指令轉換為機器語言。打個比方,人類有自己的人類語言,計算機也有自己的語言系統。它們使用只包含1和0的二進位代碼,1表示「on」,0表示「off」。程式語言更容易被人類所學習和掌握,而編譯器編譯出的計算機語言則更容易讓計算機接受。

程序猿使用程式語言編寫的程序代碼,編譯器可以理解,編譯器會將原始碼轉換為二進位代碼(目標代碼),然後彙編程序幫助這個目標代碼轉換為低級指令,指示機器執行,最後重新獲取結果。

為什麼要有編譯器的存在呢?

簡單的回答是,雖然程式語言已經編寫代碼告訴計算機該怎麼做了,但計算機只能理解兩種不同類型的數據:開和關。實際上,一臺電腦實際上只是一個開/關(電晶體)的集合。計算機所做的任何事情背後的真相只不過是無數電晶體的開閉組合。

二進位碼就是作為1和0的表示的組合,其中每個數字表示一個電晶體。二進位代碼分為字節組,8位數組表示8個電晶體。例如,11101001。現代計算機包含數百萬甚至數十億個電晶體,這意味著無法想像的大量組合。

於是這裡出現了一個問題,為了能夠編寫一個電腦程式,打出數十億的1和0將需要超人的腦力和精力,編一個小程序可能需要一兩年的工作。程式語言和編譯器中,前者對人友好,後者對機器友好,兩者通力合作,才能將人類的想法快捷而準確的傳達給計算機。

為什麼會存在那麼多的計算機語言?

數百種不同的程式語言使我們有可能創建計算機軟體,應用程式和網站。而無需編寫二進位代碼,他們讓我們相對容易的編寫,閱讀和理解代碼。同時,每種語言都帶有自己特殊的編譯器程序,它負責翻譯我們編寫的二進位代碼,讓機器明白我們的意圖。

那麼,為什麼我們有這麼多語言吶?

這是因為不同的語言被設計為用於不同的目的,一些可用於Web開發,一些用於編寫桌面軟體,其他用於解決科學和數字問題等。此外,程式語言也可以是低級或高級的。低級語言更接近計算機所理解的二進位代碼,而高級語言更容易編程,因為它們接近人類的語言和思維模式,設計簡單易於編寫。幾乎所有的主流程式語言都是高級語言。

程式語言生成的程序代碼是什麼樣的?

程序是一種用特定編碼語言編寫的文本文件。程序文件中的代碼稱為原始碼。每個編碼語言都有自己的文件擴展名,用於識別用該語言編寫的代碼文件。例如,Python是'.py'。要編寫程序,可以在純文本編輯器(如記事本)中編寫代碼,並將文件保存到計算機。

如何運行一個程序,並實際得到它來執行命令?編碼語言之間有所不同。一些語言保存到計算機後可以生成可以直接運行的單獨二進位文件,而其他語言的程序由某些軟體間接運行。例如,JavaScript程序文件將通過Chrome瀏覽器等運行。PHP程序文件將由像LAMP這樣的Web伺服器運行。

以hello.py文件為例,Python語言附帶一個命令行,它將顯示程序的輸出文本「Hello,world!」。如果要將代碼輸入命令行並按enter鍵,程序將運行並且命令將被執行。是不是成就感油然而生啊。

運行程序時會發生什麼?

電腦實際上並不了解「Hello,world!」這個短語,不知道如何在屏幕上顯示。它只能理解開關。所以要真正運行一個命令,如列印「Hello,world!」,它必須將程序中的所有代碼翻譯成一系列可以理解的代碼。

首先,原始碼被翻譯成彙編語言。彙編代碼被翻譯成機器語言。機器語言直接作為二進位代碼執行。我們再來理解一些細節。編碼語言首先必須將其原始碼轉換為彙編語言,一種使用單詞和數字來表示二進位模式的超低級語言。根據程式語言不同,這可以用解釋器(程序被逐行翻譯)或編譯器(程序整體翻譯)來完成。

然後,編碼語言將彙編代碼發送到計算機的彙編器,該彙編器將其轉換為計算機可以直接理解並直接作為二進位代碼執行的機器語言。

結論

像二進位代碼(計算機的母語)一樣簡單和原始的東西可以創建計算機軟體這樣複雜的東西,這是不是很令人驚奇呢?屏幕,作業系統,照片,視頻,網際網路,微信,在線銀行帳戶和本網站,所有這些都可以從1和0構建。編碼語言存在的全部原因是為了簡化所有這一切,這是人類智慧成就的象徵。

最後,最重要的是,有一個循序漸進的行動計劃,從學習編碼開始,你就將進入一個全新的世界。加油吧,少年。

「科普中國」是中國科協攜同社會各方利用信息化手段開展科學傳播的科學權威品牌。

本文由科普中國移動端出品,轉載請註明出處。

相關焦點

  • 「程序猿計劃」C語言概述
    科技喵:大家好鴨~我是科技喵本喵~今天是第一次程序猿計劃的專題文章,我帶來了一個好盆友:程序喵~程序喵:各位大盆友小盆友叔叔阿姨爺爺奶奶弟弟妹妹們好!我叫程序喵~鑽研編程已有4年啦!不知各位喵友們的水平怎麼樣呢?
  • 2020年12月程式語言排行榜:Python預訂年度程式語言
    TIOBE 公布了 2020 年 12 月的程式語言排行榜。C語言依然排行第一,隨後分別是Java、Python、C++、C#。前20名排行如下:TIOBE下個月就將宣布2020年年度程式語言,一年內增長最快的程式語言將獲得這個稱號
  • Python程式語言:一種簡單而又實用的語言
    今天跟大家一起分享一下Python程式語言的魅力,以及對它學習心得的分享,在接觸Python語言之前,小編也是一名編程小白,跟它接觸之後才發現它是一門非常有趣,而又簡單易學的語言,在生活中應用非常廣泛。比如說:統計一篇文章中,有多少個相同的詞語,這時候可以寫一段程序進行統計。
  • 學習程式語言,自學還是培訓?
    學習程式語言,不管你是培訓還是自學這都不是關鍵,最關鍵在「編程」這兩個字,說白了就是實踐,親自動手在計算機上把代碼寫出來,調試通過。我是非計算機科班畢業,從事軟體編程工作已經八年有餘,一路過來都是自學,而且不論是大一自學C語言通過計算機二級考試,還是為了賺廣告費自學Android Java開發,以及工作需求學了C#,到後來長期做的C++,都始終遵循一個學習原則「學寫結合」,且寫的時間要遠大於學。
  • 2021程式語言趨勢預測:JavaScript、Python熱度不減,但崛起最快的...
    作為一名開發者,Mr Herath 最喜歡的語言是 JavaScript。在一篇 Medium 文章中,他為我們分析了 2021 年可能最受歡迎的幾種程式語言。JavaScript、Python 或者 Go?在討論每種語言的優點之前,先看一些在線調查的結果。
  • 一篇文章看懂:合肥瑤海區的行知中學(6個校區)
    歷史文章:一篇文章看懂:合肥濱湖新區的那些師範附小一篇文章看懂:合肥五十中(50中共10個校區)一篇文章看懂:合肥三十八中(38中共5個校區)
  • csdn最適合人工智慧開發的程式語言優缺點對比
    和大多數軟體應用程式開發一樣,開發人員正在用多種語言編寫人工智慧項目,但是沒有完美的程式語言能夠全速匹配人工智慧項目。程式語言的編程選擇通常取決於人工智慧應用程式的預期功能。關於最佳人工智慧程式語言的辯論從未停止過,因此本文比較了五個人工智慧項目最常用的程式語言,列出了它們的優缺點。
  • 「輕鬆一刻」那些關於程式語言的互黑(注釋版)
    計算機程式語言經過70多年發展,種類眾多,形成了大大小小不同的門派。這些門派相互之間最大的樂趣之一就是互黑攻擊。有一個笑話:女神:你能讓這個群的人都吵起來,我今晚就跟你走。程序猿聽完就在群裡發了一句:PHP是最好的程式語言!群立馬炸了,各種吵架。女神:服了你了,我們走吧,你想幹啥都行。
  • Java程式語言是什麼
    Java的內容很豐富,實現的功能也很多,我們從以下幾個角度來描述它:一種計算機程式語言一種軟體開發平臺一種軟體運行平臺一種軟體部署環境句法與C++相似,語義與Small Talk 相似用來開發applets,又用來開發
  • 工業機器人程式語言和編程方式
    打開APP 工業機器人程式語言和編程方式 亞洲控制工程 發表於 2020-05-13 16:11:45 本文就給大家介紹下工業機器人程式語言,以及工業機器人的編程方式。   工業機器人程式語言   1、硬體描述語言(HDLs)   硬體描述語言一般是用來描述電氣的編程方式。這些語言對於一些機器人專家來說是相當熟悉的,因為他們習慣 FPGAs(FieldProgrammableGateArrays)編程。
  • 2021 程式語言「後浪」趨勢預測:崛起最快的竟然是它?
    在一篇 Medium 文章中,他為我們分析了 2021 年可能最受歡迎的幾種程式語言。 JavaScript、Python 或者 Go?在討論每種語言的優點之前,先看一些在線調查的結果。
  • C/C++編程筆記:面對編程小白,通俗理解什麼是「程式語言」
    學習程式語言之前,首先要搞清楚「程式語言」這個概念。很小的時候,父母就教我們開口說話,也教我們如何理解別人講話的意思。同樣,我們也可以通過」語言「來控制計算機,讓計算機為我們做事情,這樣的語言就叫做程式語言(Programming Language)。程式語言也有固定的格式和詞彙,我們必須經過學習才會使用,才能控制計算機。
  • 程式語言後浪:Java、Python熱度不減,崛起最快卻是它
    作為一名開發者,Mr Herath 最喜歡的語言是 JavaScript。在一篇 Medium 文章中,他為我們分析了 2021 年可能最受歡迎的幾種程式語言。JavaScript、Python 或者 Go?在討論每種語言的優點之前,先看一些在線調查的結果。
  • 最受程式設計師歡迎的十大程式語言
    最受程式設計師歡迎的十大程式語言 IT程序猿的科技營 發表於 2020-06-29 11:23:30   1、Java   相關職位:Java應用程式開發人員
  • 程序猿編程課堂 Python學習之入門篇4:運算符
    我們知道數學裡面有各種運算,比如1+2、3-2、4*5、8/4等等,其中加、減、乘、除都叫做運算符,當然在Python編程中不僅僅只有這四種運算符,主要歸類如下:算術運算符賦值運算符關係運算符邏輯運算符位運算符成員運算符身份運算符本章節我們將介紹前5個運算符,成員運算符和身份運算符將在後續章節學習複雜數據類型的時候再做介紹。
  • PLC的程式語言
    寫一篇相同內容的文章,既可以採用中文,也可以採用英文,還可以使用法文。同樣,編制PLC用戶程序也可以使用多種語言。PLC常用的程式語言主要有梯形圖(LAD)、功能塊圖(FBD)和指令語句表(STL)等,其中梯形圖語言最為常用。
  • 一篇文章打破C語言學習誤區
    C語言編程的從業方向:C語言能幹什麼?:1、3年以上伺服器相關開發經驗,熟悉TCP/IP協議,及制定和規範協議;2、熟練TCP、UDP協議編程,熟練socket網絡通訊編程;3、熟練C語言編程,熟悉C++編程;4、熟悉Linux系統編程,多線程和多進程編程;5、熟悉epoll、select等伺服器端異步高併發模式,libevent或者libev等應用;6、熟悉Mysql資料庫,及API編程。
  • C語言榮獲2019年度最佳程式語言
    我在前面給過一篇文章《2019年11月C語言接近Java,有望排名第一》,果然,C語言榮獲了「冠軍」(2019年度最佳程式語言)。在公布的最新報告中指出,C語言以2.44%增長率榮獲了2019年度最佳程式語言。
  • 零基礎,自學編程,如何選擇語言?
    零基礎,又要自學,如何選擇一門適合自己的語言是所有踏上這條路的朋友都會遇到的第一個問題。之前,看了不少文章,說的或多或少都有道理,比如會從你將來學編程的目的入手,分析需要用什麼然後學什麼,有些從語言的難易入手,按照先易後難的漸進的學習路線選擇語言。有些建議就比較局限了,根據作者自己的喜好和熟悉的角度推薦一門語言,這個可能不是很靠譜。
  • 寫給非計算機行業的編程文章
    在未來,編程將不再是一個行業,而將會是一項技能,就和會說英語一樣,未來的編程也不需要,或者很少需要你去編寫代碼,一個語音交流,可能你需要的功能就已經實現了。面對這樣的編程,我們需要掌握些什麼呢?我想我們需要掌握的就是編程思維,就是學會如何像程式設計師一樣思考。