創世神語c語言,創世神語c語言怎麼學

本文目錄一覽:

C語言這麼厲害,它自身又是用什麼語言寫的?編寫過程被稱為自舉

來自一個小白的提問: “C語言本身用什麼語言寫的?”

換個角度來問,其實是:C語言在運行之前,得編譯才行,那C語言的編譯器從哪裡來?用什麼語言來寫的?如果是用C語言本身來寫的,到底是先有蛋還是先有雞?

我們假設世界上不存在任何編譯器, 先從機器語言說起,看看怎麼辦。

機器語言可以直接被CPU執行,不需要編譯器。

然後是彙編語言, 彙編語言雖然只是機器語言的助記符,但是也需要編譯成機器語言才能執行,沒辦法只能用機器語言來寫這第一個編譯器了(以後就不用了)。

彙編語言的問題解決了,就往前邁進了一大步,這時候就可以用彙編語言去寫C語言的編譯器,我們說這是C編譯器的老祖宗。

有了這個老祖宗,就可以編譯任意的C語言程序了,那是不是可以用C語言本身寫一個編譯器?只要用老祖宗編譯一下就可以了。

OK, 這麼一層層上來,終於得到了一個用C語言寫的編譯器, 真是夠麻煩的。

到這個時候,之前那個彙編寫的C語言編譯器就可以拋棄了。

當然,如果在C語言之前,已經出現了別的高級語言,例如Pascal,那就可以用Pascal來寫一個C語言的編譯器。

第一個Pascal的編譯器據說使用Fortran寫的。而作為第一個高級語言的Fortran,它的編譯器應該是彙編語言寫的。

關於編譯器,這裡邊有個有趣的傳說:

傳說Unix 發明人之一的 Ken Thompson在貝爾實驗室,大搖大擺的走到任何一台Unix機器前,輸入自己的用戶名和密碼,就能以root的方式登錄!

貝爾實驗室人才濟濟,另外一些大牛發誓要把這個漏洞找出來,他們通讀了Unix的C源碼,終於找到了登錄的後門, 清理後門以後編譯Unix , 運行, 可是Thompson 還是能夠登錄進去。

有人覺得可能是編譯器中有問題,在編譯Unix的時候植入了後門, 於是他們又用C語言重新寫了一個編譯器,用新的編譯器再次編譯了Unix, 這下總算天下太平了吧。

可是仍然不管用, Thompson 依然可以用root登錄,真是讓人崩潰!

後來Thompson 本人解開了秘密,是第一個C 語言編譯器有問題, 這個編譯器在編譯Unix源碼的時候,當然會植入後門, 這還不夠,更牛的是,如果你用C 語言寫了一個新編譯器,肯定也需要編譯成二進制代碼啊,用什麼來編譯,只有用Thompson寫的那第一個編譯器來編譯,好了, 你寫的這個編譯器就會被污染了,你的編譯器再去編譯Unix , 也會植入後門 :-)

說到這裡我就想起了幾年前的XcodeGhost 事件,簡單來說就是在Xcode(非官方渠道下載的)中植入了木馬,這樣XCode編譯出的ios app都被污染了,這些app就可以被黑客利用做非法之事。

雖然這個XCodeGhost和Thompson的後面相比差得遠,但是提醒我們,下載軟件的時候要走正規渠道,從官方網站下載,認準網站的HTTPS標準,甚至可以驗證一下checksum。

可能有人問:我用彙編寫一段Hello World都很麻煩,居然有人可以用它寫複雜的編譯器?這可能嗎?

當然可能,在開發第一代Unix的時候,連C語言都沒有, Ken Thompson 和 Dennis Ritchie 可是用彙編一行行把Unix敲出來的。 WPS第一版是求伯君用彙編寫出來的, Turbo Pascal 的編譯器也是Anders 用彙編寫出來的,大神們的能力不是普通人能想象得到的。

對於編譯器來說,還可以採用“滾雪球”的方式來開發:

還是以C語言為例,第一個版本可以先選擇C語言的一個子集,例如只支持基本的數據類型,流程控制語句,函數調用…… 我們把這個子集稱為C0。

然後用彙編語言寫個編譯器,只搞定這個語言的子集C0,這樣寫起來就容易不少。

C0這個語言可以工作了,然後我們擴展這個子集,例如添加struct,指針…… ,把新的語言稱為C1。

那C1這個語言的編譯器由誰來寫? 自然是C0。

等到C1可以工作了,再次擴展語言特性,用C1寫編譯器,得到C2。

然後是C3, C4…… 最後得到完整的C語言。

這個過程被稱為bootstraping , 中文叫做自舉。

對於熱愛編程的人來說,有一群一起學習一起解答的小夥伴很重要!

這裡有一個 C/C++編程學習交流俱樂部 (群),私信我【01】進入!

還有編程學習文件(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!

學習C語言需要哪些軟件

學c語言可以用的軟件推薦如下:

1、TurboC是由美國Borland公司開發的一套C語言程序開發工具,Borland公司是一家專門從事軟件開發、研製的大公司。該公司相繼推出了一套Turbo系列軟件,如TurboBASIC、TurboPascal、TurboProlog,這些軟件很受用戶歡迎。TurboC集成了程序編輯、調試、鏈接等多種功能。

2、WIN-TC是一個TC2WINDOWS平台開發工具。該軟件使用TC2為內核,提供WINDOWS平台的開發界面,因此也就支持WINDOWS平台下的功能,例如剪切、複製、粘貼和查找替換等。

學習C語言之前需要學習些什麼知識?

基礎的話什麼都不用。往深學需要英語 主要為了看外文書籍和代碼注釋。還需要數據結構和操作系統的知識。當然要想寫出一段高效的代碼 還需要離散數學,計算機算法的知識。\x0d\x0a程序員之路——如何學習C語言並精通C語言\x0d\x0a程序員之路——如何學習C語言\x0d\x0a學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何以最小的代價學習並精通C語言是本文的主題。請注意,即使是“最小的代價”,也絕不是什麼捷徑,而是以最短的時間取得最多的收穫,同時也意味着需要經歷艱苦的過程。\x0d\x0a一、要讀就讀好書,否則不如不讀\x0d\x0a所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,還可以再次選擇。\x0d\x0a大名鼎鼎的譚浩強教授出了一本《C語言程序設計》,據說發行量有超過400萬,據我所知,很多學校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但是無比堅定地黑他這本書的。這本書不是寫給計算機專業的學生的,而是給那些需要考計算機等級考試的其它專業學生看的。這本書的主要缺點是:例子程序非常不專業,不能教給程序設計應該掌握的思考方式;程序風格相當地不好,會養成亂寫代碼的惡習;\x0d\x0aKernighan和Ritchie的《The C ProgrammingLanguage》(中譯名《C程序設計語言》)堪稱經典中的經典,不過舊版的很多內容都已過時,和現在的標準C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。《C語言參考手冊》就是《CReferenceManual》,是C語言標準的詳細描述,包括絕大多數C標準庫函數的細節,算得上是最好的標準C語言的工具書。順便提一句,最新的《C程序設計語言》是\x0d\x0a根據C89標準修訂的,而《C語言參考手冊》描述的是C99標準,二者可能會有些出入,建議按照C99標準學習。還有一本《C和指針》,寫得也是相當地不錯,英文名是《Pointers onC》,特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果曾經學過C語言,有那麼一些C語言的基礎但又不是很紮實,那麼可以嘗試一下這本書。相信,只要理解了指針,C語言便不再神秘。\x0d\x0a如果已經啃完了一本C語言教材,想要更進一步,那麼有兩本書一定要看。首先是《C Traps andPitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常地有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的很多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後可以挑戰一下《Expert CProgramming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦仔細讀完並能透徹理解,便可以放心大膽地在簡歷上寫“精通C語言”了。\x0d\x0a切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果看不懂,那一定是缺失了某些必需基礎知識。此時,要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。\x0d\x0a二、Unix/Linux還是Windows,這是個很大的問題\x0d\x0a不同的編程環境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發環境,比如VisualStudio,而Unix程序員更加鍾愛Makefile與控制台。顯而易見,集成開發環境更容易上手,在Windows上學習C語言,只需要會按幾個基\x0d\x0a本的Visutal C++工具欄按鈕就可以開始寫Hello,\x0d\x0aWorld!了,而在Unix下,需要一些控制台操作的基本知識。有人也許認為Unix的環境更簡潔,但習慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不划算。\x0d\x0a對於一個只懂得Windows基本操作、連DOS是什麼都不知道的新手而言,儘快做一些有趣而有意義的事情才是最重要的。用C語言寫一個小程序遠比學習\x0d\x0als、cat等命令有趣,況且要專註於C語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefile的寫法等等等等。\x0d\x0a所以建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者DevC++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後一定要轉向Unix環境的。Visual C++6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而DevC++使用gcc編譯器,對C99的標準都支持良好。使用順帶提一下,很多大學的C語言課程還在使用Turbo C2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標準幾乎沒有支持,其二是TC2.0編譯得到的程序是16位的,這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC2.0編譯出32位程序,不過那過於複雜了)。\x0d\x0a等學完一本C語言的教材,一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的(比如《C專家編程》)。轉變的過程是痛\x0d\x0a苦的,需要面對的是各種紛繁複雜的命令,完全不同於Windows平台的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。在Unix下,可以找到無數優秀的源代碼供你盡情閱讀,可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格\x0d\x0a歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在準備向“高手”方向努力時,請先轉向Unix平台。\x0d\x0a三、萬事俱備,就是東風\x0d\x0a書已選定,環境配置完成,正所謂萬事俱備,只欠自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。\x0d\x0a學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要“創造”一些例子,比如學習運算符優先級的時候,可以寫幾個相同的表達式,在不同的位置加上括號,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b ==c)等等。自己抄的書上的例子以及改造之後的例子,還有自己“創造”的例子,都應該仔細地歸類保存,並且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。\x0d\x0a例子之後就是習題了,建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試着修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。\x0d\x0a也許認為這樣學習太慢,其實不然。學得細緻就不用走回頭路,等學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,應該完數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以自己舉例,閱讀《Windows核心編程》時(只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,早已記不清Windows的系統編程了,但只要花幾分鐘翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。\x0d\x0a仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,還要具體情況具體分析。

c語言軟件哪個好用

手機c語言編程app有《C語言學習寶典》、《C語言編譯器》、《C語言編譯器IDE》、《菜鳥學C語言》、《手機編程》。

1、《C語言學習寶典》

沒有任何的基礎也能快速學習C語言,掌握計算機更高級的進階知識,各個階段的學習內容都很全面,還有海量的C語言題庫刷不停,是想要學會計算機的必備寶典之一。

2、《C語言編譯器》

就算用手機也能夠完成C語言的編寫以及編譯,運行一些簡單的小軟件,還可以直接自己動手寫軟件,大量的教程幫助你快速了解知識。

3、《C語言編譯器IDE》

在電腦上完成的操作在手機上一樣也可以,看似小巧但其實功能非常全面,用戶可以學習一些C語言的基礎,了解一些進階的層面,還能看各種大神的實操演練,每一個問題都講的非常詳細。

4、《菜鳥學C語言》

想要學好計算機學會C語言是必備的,大量相關課程內容免費分享,為大家詳細的介紹了什麼叫做C語言,並且從零基礎零門檻開始教學,大量的豐富編程例子直接就能套用。

5、《手機編程》

就算沒有電腦也能夠完成手機編程,專業客服在線幫你解答任何問題,超多趣味工具製作出簡單的APP,來自各路的大神分享自己的原創教程,通俗易懂的教學案例讓你一看就懂。

c語言編程介紹

C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

c語言與Java哪一個比較好呀?

java是一種面向對象的編程語言。儘管Java語言使用了許多C語言描述,但由於技能系統規划著重於可移植性,安全性和可伸縮性,因此Java語言更適合Internet環境。這也是Java。互聯網時代飛速發展的重要原因。 Java語言功能強大,可以在互聯網時代,移動互聯網時代和大數據時代找到自己的位置。

java好,沒有錯。不是語言的問題,是java的生態更好,開源的屬性,框架多,資源多,容易找到學習的資源,碰到問題基本搜索即可搞定,工作也好找,應用範圍廣,大廠都用。實際上,c語言與Java相同年代的Python演講在計劃思想上與Java有很多相似之處,但是Python的演講更加關注庫的作用,其演講風格更加開放和Java的語言依賴於此Sun的技能體系似乎相對“專心”,但是Sun的技能體系還具有基於Java結果的新開發形式。是必需的,但是EJB沒有達到期望的結果。C偏向底層。java是應用層。 比如單片機 嵌入式這塊C語言比較多。 而java更多應用在服務端,Android 這些領域

大一學校在上c,自己正在學javaweb,別的不說,就java的IDE就比古老的vc好看,而且c學了只能操作黑框框,java配合前端寫個網頁比較有趣,c用來練習數據結構題目不錯本人自學一路過來兩個都學了,java確實要好學點,但如果你要做單獨運行系統,要學習前台,那又比c麻煩很多,不過學會了一種其他都特別快c語言市場需求沒有JAVA大,大部分公司都是用JAVA來開發,c語言是以前JAVA出現之前的主流面向過程的編程語言,JAVA的面向對象語言基本上目前的主流了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244690.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:03
下一篇 2024-12-12 13:03

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論