首頁>Club>
18
回覆列表
  • 1 # 科技少年星

    1、C語言

    如果說FORTRAN和COBOL是第一代高階編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代建立的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程式,比如作業系統。在此之前,作業系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級程式碼移植成為可能的程式語言。C語言支援結構化程式設計,也就是說C的程式被編寫成一些分離的函式呼叫(呼叫)的集合,這些呼叫是自上而下執行,而不像一個單獨的整合塊的程式碼使用GOTO語句控制流程。因此,C程式比起整合性的FORTRAN及COBOL的“空心粉式程式碼”程式碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常複雜時才建議使用。正由於它的系統程式設計根源,將C和組合語言進行結合是相當容易的。函式呼叫介面非常簡單,而且組合語言指令還能內嵌到C程式碼中,所以,不需要連線獨立的彙編模組。優點:有益於編寫小而快的程式。很容易與組合語言結合。具有很高的標準化,因此其他平臺上的各版本非常相似。缺點:不容易支援面向物件技術。語法有時會非常難以理解,並造成濫用。移植性:C語言的核心以及ANSI函式呼叫都具有移植性,但僅限於流程控制、記憶體管理和簡單的檔案處理。其他的東西都跟平臺有關。比如說,為Windows和Mac開發可移植的程式,使用者介面部分就需要用到與系統相關的函式呼叫。這一般意味著你必須寫兩次使用者介面程式碼,不過還好有一些庫可以減輕工作量。用C語言編寫的遊戲:非常非常多。資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴充套件到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group"s C Primer Plus》。

    2、C++

    C++語言是具有面向物件特性的C語言的繼承者。面向物件程式設計,或稱OOP是結構化程式設計的下一步。OO程式由物件組成,其中的物件是資料和函式離散集合。有許多可用的物件庫存在,這使得程式設計簡單得只需要將一些程式“建築材料”堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為物件的集合。C++總是辯論的主題,尤其是在遊戲開發論壇裡。有幾項C++的功能,比如虛擬函式,為函式呼叫的決策制定增加了一個額外層次,批評家很快指出C++程式將變得比相同功能的C程式來得大和慢。C++的擁護者則認為,用C寫出與虛擬函式等價的程式碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高階程式語言如COBOL和FORTRAN開始取代彙編成為語言所選的時候。批評家正確的指出使用高階語言編寫的程式天生就比手寫的組合語言來得慢,而且必然如此。而高階語言支持者認為這麼點小小的效能損失是值得的,因為COBOL和FORTRAN程式更容易編寫和維護。優點:組織大型程式時比C語言好得多。很好的支援面向物件機制。通用資料結構,如連結串列和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。缺點:非常大而複雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性使用者介面庫都使用C++物件實現。使用C++編寫的遊戲:非常非常多。大多數的商業遊戲是使用C或C++編寫的。資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who"s Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。

    3、我該學習C++或是該從C開始我不喜歡這種說法,但它是繼“我該使用哪門語言”之後最經常被問及的問題。很不幸,不存在標準答案。你可以自學C並使用它來寫程式,從而節省一大堆的時間,不過使用這種方法有兩個弊端:你將錯過那些面向物件的知識,因為它可能在你的遊戲中使得資料建模更有效率的東西。最大的商業遊戲,包括第一人稱射擊遊戲很多並沒有使用C++。但是,這些程式的作者即使使用老的C的格式,他們通常堅持使用面向物件程式設計技術。如果你只想學C,至少要自學OO(面向物件)程式設計技術。OO是模擬(遊戲)的完美方法,如果你不學習OO,你將不得不“辛苦”的工作。

    4、組合語言

    顯然,彙編是第一個計算機語言。組合語言實際上是你計算機處理器實際執行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如暫存器和堆疊。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。確切的說,任何你能在其他語言裡做到的事情,彙編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。總的來說,組合語言不會在遊戲中單獨應用。遊戲使用匯編主要是使用它那些能提高效能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程式使用匯編。這些程式每秒鐘要呼叫數千次,因此,儘可能的簡潔將有助於提高遊戲的效能。而從C裡調用匯編寫的函式是相當簡單的,因此同時使用兩種語言不成問題。特別注意:語言的名字叫“彙編”。把組合語言翻譯成真實的機器碼的工具叫“彙編程式”。把這門語言叫做“彙編程式”這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。優點:最小、最快的語言。彙編高手能編寫出比任何其他語言能實現的快得多的程式。你將是利用處理器最新功能的第一人,因為你能直接使用它們。缺點:難學、語法晦澀、堅持效率,造成大量額外程式碼 — 不適於心髒虛弱者。移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴充套件功能,你的程式碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。使用匯編編寫的遊戲:我不知道有什麼商業遊戲是完全用匯編開發的。不過有些遊戲使用匯編完成多數對時間要求苛刻的部分。資料:如果你正在找一門組合語言的文件,你主要要找晶片的文件。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。

    5、Pascal語言

    Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化程式設計感到很失望,“空心粉式程式碼”變成了規範,而當時的語言又不反對它。Pascal被設計來強行使用結構化程式設計。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業程式設計中。當Borland釋出IBM PC上的 Turbo Pascal時,Pascal輝煌一時。整合的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal程式設計了為MS-DOS編寫小程式的首選語言。然而時日不久,C編譯器變得更快,並具有優秀的內建編輯器和偵錯程式。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程式的C++。Turbo Pascal很快被人遺忘。最後,在1996年,Borland釋出了它的“Visual Basic殺手”— Delphi。它是一種快速的帶華麗使用者介面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔運算子。這既是好事又是壞事。雖然很難寫出難以理解的“聰明”程式碼,它同時也使得一些低階操作,如位操作變得困難起來。優點:易學、平臺相關的執行(Dephi)非常好。缺點:“世界潮流”面向物件的Pascal繼承者(Modula、Oberon)尚未成功。語言標準不被編譯器開發者認同。專利權。移植性:很差。語言的功能由於平臺的轉變而轉變,沒有移植性工具包來處理平臺相關的功能。使用Pascal編寫的遊戲:幾個。DirectX的Delphi元件使得遊戲場所變大了。資料:查詢跟Delphi有關的資料,請訪問:Inprise Delphi page。

    6、Visual Basic

    哈,BASIC。回到八十年代的石器時代,它是程式初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無返顧的使用了GOTO充斥的“空心粉式程式碼”。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型程式設計環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder程式設計環境的許可權,並把它作為Visual Basci 1.0釋出,其使用者介面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari裡的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。經過六個版本,Visual Basic變得非常漂亮。使用者介面發生了許多變化,但依然保留著“把程式碼關聯到使用者介面”的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的外掛。雖然有第三方的DirectX外掛,DirectX 7已準備提供Visual Basic的支援。缺點:程式很大,而且執行時需要幾個巨大的執行時動態連線庫。雖然表單型和對話方塊型的程式很容易完成,要編寫好的圖形程式卻比較難。呼叫Windows的API程式非常笨拙,因為VB的資料結構沒能很好的對映到C中。有OO功能,但卻不是完全的面向物件。專利權。移植性:非常差。因為Visual Basic是微軟的產品,你自然就被侷限在他們實現它的平臺上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程式轉變成Java。使用Visual Basic編寫的遊戲:一些。有很多使用VB編寫的共享遊戲,還有一些是商業性的。資料:微軟的VB頁面有一些資訊。

    7、Java

    Java是由Sun最初設計用於嵌入程式的可移植性“小C++”。在網頁上執行小程式的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體程式設計的小語言。“虛擬機器”機制、垃圾回收以及沒有指標等使它很容易實現不易崩潰且不會洩漏資源的可靠程式。雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的複雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向物件程式設計,要在Java裡寫非面向物件的程式就像要在Pascal裡寫“空心粉式程式碼”一樣困難。優點:二進位制碼可移植到其他平臺。程式可以在網頁中執行。內含的類庫非常標準且極其健壯。自動分配合垃圾回收避免程式中資源洩漏。網上數量巨大的程式碼例程。缺點:使用一個“虛擬機器”來執行可移植的位元組碼而非本地機器碼,程式將比真正編譯器慢。有很多技術(例如“即時”編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後相容不得不保留。越高階的技術,造成處理低階的機器功能越困難,Sun為這門語言增加新的“受祝福”功能的速度實在太慢。移植性:最好的,但仍未達到它本應達到的水平。低階程式碼具有非常高的可移植性,但是,很多UI及新功能在某些平臺上不穩定。使用Java編寫的遊戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業遊戲使用Java作為內部指令碼語言。資料:Sun的官方Java頁面有一些好的資訊。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。

  • 2 # 零壹同學

    一、組合語言

    彙編是第一個計算機語言。組合語言實際上是你計算機處理器實際執行的指令的命令形式表示法。

    這意味著將與處理器的底層打交道,比如暫存器和堆疊。

    二、C語言:

    它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。

    C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程式,比如作業系統。

    在此之前,作業系統是使用匯編語言編寫的,而且不可移植,C語言是第一個使得系統級程式碼移植成為可能的程式語言。

    三、C++語言

    C++是在C語言的基礎上開發的一種面向物件程式語言,應用非常廣泛。常用於系統開發,引擎開發等應用領域,支援類、封裝、繼承、多型等特性。C++語言靈活,運算子的資料結構豐富、具有結構化控制語句、程式執行效率高,而且同時具有高階語言與組合語言的優點。

    總結:

    編寫作業系統用的語言肯定是離不開組合語言、C 語言的。除此之外,你還得有一個最底層的編譯器,你才能夠在它之上編寫、除錯、執行程式,以及你到底是想在什麼樣的硬體結構下編寫作業系統?硬體系統結構不一樣,所用的編譯器就是不一樣的。

    正常人的做法是核心部分用C和彙編配合,外圍元件可以各顯神通,其他的可以是可以,不過很非主流,而且現在真正有使用價值的系統也都是C和彙編寫的。

  • 3 # 青檸愛科技

    大家好,我是 一個科技愛好者,我喜歡高科技的東西,也喜歡研究科技。我喜歡高階的電子產品,在我看來科技讓我們的生活進步,科技讓我們變得方便。

    我也喜歡數碼產品,同時我也是一位電腦愛好者,我在數碼手機科技方面有著多年的經驗,針對這個問題 以下就是關於我的觀點和分享,希望大家喜歡:

  • 4 # EmacserVimer

    什麼程式語言可以寫作業系統?

    隨著計算機技術和網際網路技術的發展,可以說作業系統已經不僅僅是指的用來管理軟硬體資源的計算機程式,Emacs可以算作是作業系統、阿里雲飛天也可以算作是作業系統,微信也可以算做是作業系統,從這個意義上講用來編寫作業系統的程式語言也就變得非常多樣。

    通常意義上的作業系統:彙編、C/C++

    通常意義上的作業系統就是用來管理計算機硬體和軟體資源的計算程式,管理記憶體、處理器等硬體資源供需的優先次序、控制輸入輸出裝置、管理檔案系統、以及管理網路資源,當然一個成熟的桌面作業系統也有出色的人機互動介面。

    這類作業系統是我們最為熟知的,伺服器領域的Unix、Linux,桌面PC作業系統的macOS、Windows,移動端的iPadOS、iOS、Android等等,這些作業系統都是我們熟知的。

    Windows使用了一部分組合語言,大部分是C語言編寫,剩下了用了很少一部分C++寫圖形介面,以及極少一部分的C#用來寫部分應用程式,當然office、Visual Studio等對效能要求高的應用程式主要還是用C++編寫的。

    macOS的Darwin核心組成本質是FreeBSD+Mach,主要用C語言和Objective C/C ++(應用程式主要採用Objective-C、swift、C++),最早蘋果還用匯編和Pascal寫過作業系統,不過後來Pascal被淘汰了。iOS、iPadOS跟macOS非常類似,都是蘋果家族的作業系統,基本技術棧和架構都差不多。

    Linux因為林納斯對C++極其厭惡,因此主要是部分採用彙編,大部分採用C語言開發,不過在應用程式層面,Linux選擇就非常多,畢竟是開源的作業系統。Python、C++都有采用,比如大名鼎鼎的Linux桌面環境KDE就是用C++編寫的,Gnome圖形介面則是主要C和部分C++。

    Android系統採用的是Linux核心,因此在底層核心技術棧Android跟Linux差不多,不過Android為了儘快吸引更多開發者、降低開發門檻,在Linux核心基礎上多了一層Java虛擬機器,因此Android在應用開發層面主要使用Java語言。

    大名鼎鼎的文字編輯器Emacs最開始就是要做一個作業系統,當年RMS想寫一個完整的作業系統來著,當然Emacs也確實可以用來做很多事情,本質上也就是個作業系統。不過由於Linux的發展非常出色,RMS逐漸將Emacs變成了一個文字編輯器,畢竟打造一個作業系統很麻煩。

    隨著網際網路技術的發展,我們越來越多的說雲計算、大資料、物聯網,人工智慧技術也越來越成熟,很多應用比如微信、支付寶已經變成了一個非常強大的“平臺生態”,阿里雲飛天更是針對於人工智慧和雲計算領域的專門的作業系統,這些都可以算作是“作業系統”,因此未來Java、JavaScript、Go等眾多程式語言都可以用來寫作業系統。

  • 5 # 王昊893

    彙編,C,rust都可以。c++很少,而且c++寫的都不會執行在核心深處。寫作業系統的人都追求一種極致的掌控,語言的一些牛❌特性反而增加了掌控難度,就更別說那些需要虛擬機器支援的語言了,看都不看一眼的

  • 6 # 江之頭魚

    其實都可以,只是難易程度,效率這些不一樣。程式語言只是為了簡化程式設計,最終執行的還是機器語言。作業系統強調效率,程式最佳化就離不開機器指令。通常可以隨便夾彙編的C用得多。

  • 中秋節和大豐收的關聯?
  • 《海賊王》動畫914集劇情中,提到路飛不聽羅的勸告,認為能秒凱多,這是怎麼回事?