品:科普中國
制作:科了個普 楊陽
監制:中國科學院計算機網絡信息中心
王國維在《人間詞話》里寫道:古今之成大事業、大學問者,必經過三種之境界:"昨夜西風凋碧樹。獨上高樓,望盡天涯路。"此第一境也。"衣帶漸寬終不悔,為伊消得人憔悴。"此第二境也。"眾里尋他千百度,驀然回首,那人卻在,燈火闌珊處。"此第三境界。概括了一種鍥而不舍的堅毅性格和執著態度。
"知道自己不懂"是為第一境界;"不知道自己懂"是為第二境界; "知道自己懂了"是為第三境界。
無論你是小白,還是小白,還是小白,你在學習編程的過程中都會深深的體會到這三句話太準確了。學習編程意味著我們將要進入一個與日常生活經驗迥然不同的新領域,這最初的曲折辛酸,以及逐漸初窺門徑、小有所成并最終笑傲江湖、獨當一面的欣喜正是上面所說的學習三境界的真實寫照。這篇文章將要介紹計算機編程的前世今生,如果你想要了解程序猿這一高收入人群的真實生態,這篇文章就是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++, C#, Java, Javascript, Python,Swift, PHP, SQL, Go, R。下面我們從如下幾個方面分析一下這十大最流行的編程語言: 創立時間,優點,缺點,主要用途,學習難度。
. C++:
這門語言創始于1983年。
它有如下優點:
第1個就是因為流行,所以有很多編譯器和共享庫。
第2個如果你會C++, 學習其他語言諸如C,C#, Java就會非常輕松。
第3個還沒有垃圾回收器在后臺運行因此執行效率相對較高。
它的缺點是:
第1個是語言的語法比較復雜,標準庫又比較小,這使得這門語言對初學者學起來門檻比較高,感到非常難學。
第2個是這門語言沒有垃圾回收。
這門語言的主要用途是游戲開發領域,追求高效率的高級計算領域, 圖形圖像處理領域。
學習難度是難。
.C#:
這門語言創立于2001年。
它的優點是:
第1個跟c語言具有非常類似的語法,如果你懂c類似語言的話,學習起來就會很容易。
第2個是由于靠著微軟這棵大樹,所以可以充分發揮微軟.NET平臺的優勢, 也是多年來windows平臺的一門主流編程語言。
第3個是取消了指針的使用。
它的缺點是:
它雖然取消了指針,但是如果你用unsafe block的話也可以使用指針。
它的主要用途是企業級跨平臺應用開發, 網絡應用開發, 手機應用開發,游戲開發。
學習難度是難
.Java
這門語言始于1996年。
它的優點是
第1個是面向對象編程語言。
第2個API接口非常豐富, 比如數據庫連接訪問,網絡應用,工具類等等。
第3個是具有強大的開源開發工具。
第4個是有大量的開源共享庫。
它的缺點是
第1個是內存管理方面非常昂貴。
第2個沒有模板的支持。
它的主要用途是安卓應用開發,網絡應用開發和大數據處理。
學習難度是容易。
.Javascript
這門語言最早開始于1995年。
它的優點是
第一,客戶端瀏覽器中運行的效率非常高。
第二,比較容易學習。
第三,可以跟其他多種語言在多種場景下混合使用。
它的缺點是
第一,不支持多重繼承。
第二,在不同的瀏覽器中,可能有不同的行為。
它的主要用途是網絡應用開發,游戲開發, 手機應用開發和桌面程序開發。
它的學習難度是容易。
.Python
這門語言最早開始于1991年。
它的優點是
第一,支持多個系統平臺。
第二,面向對象。
第三,開發效率比較高。
第四, 大量的共享庫。
它的缺點是
第一,對移動平臺支持不理想。
第二, 數據庫訪問方面相對比較原始。
它的主要用途是網絡程序開發,科學數字應用程序開發,桌面應用界面開發,也被廣泛應用在人工智能和機器學習領域。
它的學習難度是容易。
.Swift
這門語言始于2010年。
它的優點是
第一,它的代碼更接近于自然的英語語言,所以比較容易讀懂。
第二, 自動的內存管理可以防止內存泄漏。
它的缺點是
第一,最近的幾個版本連續性和兼容性不強。
第二, 使用這門語言的程序員數量不是很多。
它的用途主要在蘋果應用開發上。
學習難度是容易。
.PHP
這門語言起始于1994年。
它的優點是
第一,由于是門解釋性語言, 運行起來非常方便,不需要提前編譯。
第二,既是面向對象編程語言,又是面向功能的編程語言。
第三,有非常龐大的開源軟件社區。
它的缺點是
第一, 出錯以后排查起來比較麻煩, 缺乏調試工具。
第二, 由于其開放性,所以也限制了它的安全性。
第三, 相較其他語言,這門語言的開發效率比較低。
學習難度是容易。
.SQL
這門語言起始于1979年。
它的優點是
第一, 具有非常強大的查詢語言功能。
第二, 對于大數據量表結構的優化。
第三, 查詢和搜索數據的功能強大并且效率比較高。
第四,保證高性能的同時能夠保證數據的完整性。
第五, 能夠快速的處理多個表格,并且返回數據。
它的缺點是
第一, 把對象數據轉成數據庫表格數據比較難。
第二, 只能運行在單個服務器上,所以要提高速度,就必須升級硬件。
第三, 由于這種服務器屬于單一服務器,如果服務器停止了,那么數據庫就無法被訪問了。
它的主要用途就是數據庫管理。
學習難度是容易。
.Go
這門語言最早開始于2009年。
它的優點是
第一, 執行效率非常快,因為它直接編譯為機器碼。
第二, 語言的語法相對簡單,比較容易學。
第三, 有大量的內置函數和標準庫可以被調用。
它的缺點是
第一, 由于開發社區規模相對較小,共享庫的支持比較少。
第二, 大量的隱性接口特性。
第三, 依賴性管理的偶像耦合性非常差。
它的主要用途是工具開發, 用戶界面應用開發,和網絡應用開發。
學習難度是難。
.R
這門語言最早開始于1995年。
它的優點是
第一, 這門語言的理解性和統計性鼓勵開發者使用新的思維。
第二, 作為統計性編程語言的初衷,學起來比較容易。
第三, 屬于開源軟件,所以任何人都可以使用和修改。
第四, 對Linux和微軟windows的支持比較好。
第五, 它的跨平臺特性意味著他的程序可以在不同的操作系統上無縫隙的運行。
它的缺點是
第一, 有些開發包的質量不過關。
第二, 內存管理方面做得不夠好。
它的主要用途是數據科學工程,統計計算領域,機器學習領域。
學習難度是難。
好的,這個話題就先探討到這里,這里是丁哥開講,歡迎關注留言點贊,謝謝。
程語言是我們今天使用的每項在線服務存在的原因。它們的數量非常龐大,所以你可能會問自己:2022 年哪些編程語言最值得學習和企業追捧?
國家對軟件工程師的需求已經上升了一段時間。預測顯示,這種上升趨勢將持續下去。BLS 進行的調查強調了這一愿景。根據這項研究,到 2028 年,編程工作預計將增加21%。此外,有興趣增加對這些工具的了解的人數也在增加。
本文介紹了目前正在崛起的前 10 種編程語言。讓我們看看 2022 年哪些技術最流行!
Python是 30 年前由 Guido van Rossum 創建的面向對象、靈活、通用的編程語言。該技術用于開發的應用程序有:Instagram、Pinterest、Disqus、Uber、Reddit、Dropbox、Spotify、Google Search、Youtube 等等。因此,懂這門編程語言的程序員很受IT招聘機構的追捧。2021 年 Python 是TIOBE 和 PYPL 索引中的頂級編程語言,這一事實突顯了它的受歡迎程度。可以假設這種趨勢將繼續下去。
為什么拿了第一名?
排在第二位的是 JavaScript——前端之王。它是一種用于使網站正常工作的編程語言。根據 Stack Overflow 開發者調查,它是 2021 年最受歡迎和第三大最受歡迎的編程語言。雖然它是最受歡迎的語言,但它也是2020 年招聘經理最需要的技術。
與 Python 一樣,它擁有強大的社區和許多現成的庫和框架,可以輕松使用該語言。如果您需要為您的網站、應用程序或軟件創建前端,那么 JavaScript 沒有競爭對手。它是在網站上構建動態元素的最佳平臺之一。
在學習新的編程技能的情況下,下一個值得考慮的語言是 Go。該技術由 Google 于 2007 年開發,用于開發 Web 應用程序和 API。盡管 Go 沒有像前面描述的語言那樣獲得如此規模的增長率,但它仍然可以歸類為在技能上備受追捧。
它是一種易于學習的通用編程語言,具有簡潔的語法,使編寫簡單、可靠和高效的軟件變得容易。
如今,它是收入最高的技術之一,也是需求量第二大的后端編程語言。這意味著,如果您學習了這種編程語言,那么找到一份高薪工作將不會有任何問題。
Go 與 Python 一樣,用于創建基于人工智能的系統,因此它的受歡迎程度可能會繼續增長。
就在幾年前,Java 可能會在我們的列表中名列前茅。它是 2005 年和 2015 年的年度語言。但是,這種知名語言的受歡迎程度正在逐年下降。
此外,Java 仍然是許多大公司支持的穩定語言。它被 NASA、Netflix、Spotify、LinkedIn、Uber、亞馬遜等公司使用。
這種編程語言現在用于移動應用程序、Web 開發,甚至是大數據。它是 Android 設備的主要編程語言,因此它的需求仍然很高。根據 Stack Overflow表明,如今它仍然是第 5 大最受歡迎的技術。
C 是最古老的編程語言之一,其他語言(如 JavaScript 和 C#)都是從它衍生而來的。您可以將 C++ 視為 C 的擴展版本。
兩種語言都具有高性能,因此它們通常用于構建不同的應用程序。它們是通用語言,這意味著它們可以針對許多系統進行編譯。程序員喜歡它們,因為它們非常快速和高效。
目前,根據TIOBE 指數,C 是僅次于 Python 的第二大流行語言。
C# 是一種高級、面向對象的通用編程語言,起源于微軟對 Java 的回應。C# 與 .NET 平臺緊密集成,既是一個框架又是一個運行時環境。
C# 是一種為 Windows 系統編寫應用程序而開發的技術。盡管如此,自從 .NET 框架進入 Linux 和 Mac 系統以來,幾乎可以為任何平臺創建使用這種語言的本機軟件。您可以使用這項技術來創建 Windows 應用程序、視頻游戲、反黑客軟件、移動應用程序、VR 等等。它被 Slack 和 Pinterest 等全球巨頭使用。它目前在Tiobe排名中排名第 5。
與 Python 一起,R 是機器學習和大數據中使用最廣泛的編程語言之一。許多公司都在使用它,包括 Google 和 Facebook。R 是一種與數據分析一起流行的編程語言,因此在工作機會中經常需要它。R 語言有一個內置庫,允許程序員創建機器學習算法。鑒于人工智能解決方案的日益普及和需求,這項技術無疑將在 2022 年值得關注。
Ruby 是一種解釋型、完全面向對象的編程語言。它是在 1990 年代開發的,通常被認為易于學習。作為一種語法簡單的技術,它通常用于腳本編寫、文本處理和新應用程序的原型設計。
它的顯著優勢是用這種語言編寫的大量 Web 框架和應用程序,例如著名的 Ruby on Rails。
Ruby 是 Twitch、Shopify、Starbucks 或 Tumblr 使用的穩定且流行的語言。此外,它是世界上收入排名第六的編程語言。
Kotlin 是一種編程語言,屬于 JVM 家族。它簡潔且易于閱讀和維護。它具有安全智能的編譯器,可以在多種系統上運行。當2019 年 Google 宣布Kotlin 現在是其 Android 應用程序的首選語言時,對這種編程語言的興趣顯著增加。值得一提的是,Google 應用程序是基于 Kotlin 的。如果你對 Android 應用開發感興趣并想在這個領域工作,那么 2022 年學習 Kotlin 可能是正確的選擇。
盡管與 Java 相比,它的軟件開發人員社區更小,但它更受歡迎(幾乎62% 的程序員表示他們喜歡這種語言)并且工資更高。
Swift 是 Apple 于 2014 年創建的一種編程語言。它取代了公司之前使用的 Objective-C。它主要用于運行 macOS、iOS 和 Linux 的設備。它的語法類似于 Java 和 C#,它允許您為手表、平板電腦、計算機、智能手機、電視和服務器編寫應用程序。
蘋果仍然是領先品牌之一,因此,swift今年將繼續名列前茅。據TIOBE 報道,Swift 的受歡迎程度再次上升,因此它是 2022 年值得了解的技術。