怎麼學習編譯器-ag真人国际官网
1. 如何學習編程
學編程的注意點:
1、要確定好自己一定能學下去,不能是三分鍾的熱度,只是學個熱鬧,這樣永遠沒有辦法學的會。
2、一定要打好基礎,剛開始學習編程的時候可能會很慢,感覺自己沒學會啥,這可能是因為正處於打基礎的階段,只有把基礎打好,未來才可以學得更好。
3、要注意實踐操作,理論知識學得再多,如果不能實際的運用,還是等於0的。
編程是編定程序的中文簡稱,就是讓計算機代碼解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。
為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。
2. 如何學習c 編程
大一學習的c ,工作之後也一直用的c 。
1. 涵蓋c 入門到精通的圖書列表
《the c programming language》必讀
《c primer》,號稱是一本可以讓你從c或java程序員轉為一個真正的c 程序員的入門參考書,必讀。
《the c programming language》,c 之父,人稱b教主著作,在看過c primer後,應該可以跳章選讀。
《think in c 》,網上說此書的中文版翻譯質量奇差,推薦看影印版,選讀。
《effective c 》,類似 effective java,講的是最佳實踐,程序員必讀。
《more effective c 》,上書的補充。
《the c standard library》,會寫c,不會用標准庫怎麼行。這就跟java程序員不會用java.util包一樣,必讀。
《effective stl》,stl庫的最佳實踐。effective c 作者又一力作,必讀。
《the annotated stl source》,stl源碼分析,這本書應該算是深入/精通類了,選讀。
《generic programming and stl》,號稱c 編程里,就是跟模板,泛型打交道,那麼精通泛型是勢在必行。
《c template》,c 模板編程,代碼復用的經驗之道,必讀。
《exceptional c 》,跟effective c 類似,屬於最佳實踐和難題解析,書中列出了許多應用場景和實例代碼供讀者揣摩,選讀。
《more exceptional c 》,上書的補充。
《exceptional c style》,上上書的補充
《inside the c object model》,有了上面這些書做鋪墊,那麼終於可以讀此神書了。它會帶你游覽c 對象模型的底層實現機制。讀完此書,任何c 代碼看起來如同行雲流水,必讀。
2. 優秀的c/c 開源項目(閱讀代碼)
os:linux kernel lvs、linux應用程序
db:mysql、postgresql
complier:vm、gcc
framework:opensip、sipproxy、
net:ace(java mina、netty)、tcp/ip、http協議棧
cache:memcached、redis、
library:stl(java util package)、boost、qt(ui)、
balance:apache、nginx
gsl
地址:https://github.com/microsoft/gsl
boost文檔
地址:https://www.boost.org/doc/libs/
wxwidgets官網
地址:http://wxwidgets.org/
gtkmm
地址:https://www.gtkmm.org/en/
copperspice
地址:https://www.copperspice.com/
qt
地址:https://www.qt.io/eigen
地址:http://eigen.tuxfamily.org/index.php?title=main_page#documentation
plot utils
地址:https://www.gnu.org/software/plotutils/
asio
地址:https://think-async.com/asio/
poco
地址:https://pocoproject.org/
abseil
地址:https://abseil.io/
c 開源庫匯總列表
地址:https://en.cppreference.com/w/cpp/links/libs
除了這些開源項目,也可以找一些免費的公開課,那這里也推薦一個acm金牌大佬講授的免費c 課程,可以去體驗一下:
學好c 才是入職大廠的敲門磚! 當年要是有這課,我的c 也不至於這樣
已失效
3.c 語法講解
語言基礎
詳細介紹變數、表達式、語句、指針、數組、流程式控制制、函數、文件組織等。抽象機制 - 面向對象編程
深入講解c 的抽象機制,封裝(類)、繼承、多態;操作符重載、函數對象、異常處理等。模板 - 泛型編程
詳細介紹c 的模板機制,類模板、函數模板、模板特化等方面的內容。引用和指針:為什麼引用很重要
const關鍵字:為什麼const很重要
名字空間 (namespace)
關於c 對象
內置類型的對象,如int、double對象,自定義類型的對象對象類型的定義
關鍵字class和struct
類成員:成員函數和數據成員
靜態數據成員
成員的訪問控制
對象的size
關於this指針
onst成員函數、const究竟修飾什麼
mutable數據成員
4種特殊成員函數:constructor、destructor、 constructor、operator=
對象的構造、初始化列表
對象的析構
對象的復制
什麼情況下有必要顯式定義4種特殊函數
c 對象生命周關於c 中操作符重載機制
重要操作符重載
算術運算: , -, *, /, %, , --, ...
關系運算:>, <, ==, !=
下標存取:[ ]
函數調用:(),函數對象
類型轉換、單參數構造函數與隱式轉換、阻止隱式轉換 -- explicit關鍵字友元與成員
基類與派生類
再談對象的構造與析構
虛函數、純虛函數
派生類的內存布局、虛函數表
多態、多態類型、如何體現多態
虛析構、為什麼虛析構很重要
多繼承
虛繼承與虛基類
對基類的訪問、public / protected / private繼承
down cast:static_cast<>和dynamic_cast<>
運行期類型識別 (rtti)
c 語言機制提供了完整的oop支持
超越繼承
oop若干法則和設計模式
- 《c primer》
- 最新版本:第三版(第四版國外已上架, 國內一些網上書店也在預訂中)
- 適合有豐富c經驗,缺乏c 經驗的。不過我個人一直認為此書帶著過於強烈的c語言的痕跡,對於c 的學習未必是 好事。
- 《the c programming language》/《c 程序設計語言》
- 最新版本:第三版特別版
- 簡稱 tc pl,有其他語言的豐富經驗的。(也有人簡稱之為「tcpl」,但需與另一本《the c programmer language》區分開來)
- 《essential c 》
- 《accelerated c 》
- 這兩本薄一些,都是不錯的選擇。《accelerated c 》本人沒有讀過,從各方面的評價來看,完全值得推薦。
- 以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,tc pl是應該閱讀的。
- 《effective c 》
- 最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
- 簡稱ec。c 程序員必讀!很多時候,我們說c 聖經不是指tc pl,而是這一本。《the pragmatic programmer》一書中寫到:「一旦你發現自己要參與c 項目的開發,趕快跑(不要走)到書店去購買scott mayer的《effective c 》,可能還要《more effective c 》」。
- 《c coding standards: 101 rules, guidelines, and best practices》/《c 編程規范》
- 個人認為此書應為c 程序員必備的案頭書。幾乎effective系列和exceptional系 列都在這里得到了總結。最新的模版、異常的業界經驗都在這里的到了體現。可能的唯一缺陷就是對一個新手而言,關於「為什麼這么做」的問題,解釋的不夠。
- 我 的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的內容至少在2009年以前都不 會過時,人們將廣為傳誦它制定的101條戒律。
- 還不知道他的簡稱,也許「101」會成為一個候選者?
- 提到《effective c 》,那麼另外三本書一一浮出水面:
- 《more effective c 》
- 《exceptional c 》
- 《more exceptional c 》。
- 新書《exceptional c style》也是值得一看的好書。
- 上 述幾本書,一本也不應該放過。
- 個人建議上述書籍按順序閱讀。並且,在將來反復閱讀這幾本書。
4.深入c 面向對象
4.1、從c到c
4.2、深入c 對象
4.3、操作符重載
4.4、面向對象基礎 -- 繼承
4.5、關於繼承更多的話題
4.6、c 與面向對象設計
5.c 泛型編程與stl
5.1、c 模板機制
5.2、stl 概要
5.3、stl容器
5.4、stl迭代
5.5、stl演算法
5.6、預與定義stl數對象
5.7、stl適配器
6. c 進階
《thinking in c 》/《c 編程思想》
這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試 一下該書。
以下幾本書基本上涉及的都是語言本身,大體上可以按照以下的順序閱讀。
《c 必知必會》
如果早一年,這本書將是重量級的,然而它被101和《exceptional c style》蓋過一頭。
《c gotchas: avoiding common problems in coding and design》/《c 程序設計陷阱》
這又是一本我未曾讀過,而且廣受好評的書。
《stl 源碼剖析》
這本書我剛到手,就被人"借"走,以至於到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。
7. c 進階之數據結構基礎
這是所有編程語言中最應該學習的部分,程序組成的基礎之一。
順序存儲、鏈式存儲、循環鏈表;
雙向鏈表、棧(順序和鏈式)、隊列(順序和鏈式);
棧的應用、樹基本概念及遍歷、二叉樹;
排序演算法、並歸演算法、選擇、插入、快速、希爾。
以上這些內容你知道嗎?
8. c 進階之ui界面開發
掌握qt類庫構架,圖形界面開發模型;
掌握qt開發技巧,消息機制,圖形處理;
掌握qt網路編程,udp,tcp使用方式;
掌握qt文件處理方式,序列化;
掌握qt在windows,linux,ios,android不同平台下的移植技術。
9. c 進階之unix/linux網路伺服器
掌握unix/linux平台開發方式;
熟練使用系統調用;
熟練unix/linux內存管理,進程,線程調度;
熟悉網路伺服器開發方式,熟練編寫tcp,ucp網路服務程序;
掌握同步/非同步io模型在網路編程中的使用方式。
10.c 進階之資料庫開發
掌握sql語言的實用技巧。oracle,mysql資料庫的使用方式。
如果你能熟練掌握以上列出的技能,具備解決復雜問題和技術難點的能力,而且你能獨立開發一些比較復雜的功能模塊,那麼很榮幸地告訴你,你已經達到中級水平,薪資過萬對你來說簡直是小菜一碟。
11.c 標准參考
c reference
地址:https://en.cppreference.com/w/
c coding standard
地址:http://www.possibility.com/cpp/cppcodingstandard.html
standard c
地址:https://isocpp.org/
state of c evolution
地址:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2597.html
the c resources network
地址:http://www.cplusplus.com/
draft c standard: contents
地址:http://eel.is/c draft/
3. 初學者怎樣學習編程有哪些方法
初學者學習編程的方法如下:
1、 打好基礎
當你開始學習編程的時候,首先你要確定的東西是「基礎」。要打好基礎,你需要學習計算機科學。現在,我們可以在網上找到很多針對初學者的課程。互聯網的確為初學者提供了便利,使你可以通過網路找到大量有用的信息。因此,你得花時間研究一下這些信息,從中選擇最適合自己需求的。
6、平衡好你的學習
作為一個開發人員,能力的提升是永無止境的,而持續的無助感只是作為一個開發者的一部分而已。新技術的誕生不會令開發者輕松下來,因為他們需要不斷地提升自身的能力來適應市場的要求。
作為初學者,你應該隨時准備學習新的東西。即使是有經驗的開發者,他們也會對自己的能力缺乏信心,因為市場上會不斷有新的工具,技術和標准涌現,這需要開發者與時並進,才能跟得上變化。但這並不是說你得知道一切事情,只要了解你要了解的事情就可以了。關鍵是不要停止學習新的東西。
7、學習演算法
當你獲得一定的項目經驗後,你就應該開始學習演算法了。 演算法是構成計算機科學的核心。無論你是正在做網頁開發還是游戲開發,你總得使用演算法來實現最終的結果。
4. 如何更好的掌握編譯器的設計與實現
1. 閱讀相關書籍:編譯原理、編譯器設計、編譯器實現等;
2. 自學相關編程語言:c、c 、java等;
3. 實踐:可以使用開源的編譯器框架,例如antlr,搭建自己的編譯器;
4. 了解編譯器的各個組成部分,並學習它們的工作原理;
5. 閱讀技術文章,了解編譯器的設計和實現的最新進展;
6. 加入開源項目,編寫和維護編譯器;
7. 在論壇上交流,和更多的編譯器開發者分享心得體會;
8. 參加學術會議,接觸到最新的研究成果;
9. 嘗試著自己設計一個編譯器,用實踐來加深理解。
5. 手機上如何學編程
這里介紹3種可以在手機巧碰上編程的app,分別是c語言編譯器(c語言)、aide集成開發環境(java)、qpython3(python),都不需要root,可以直接編寫程序並運行,下面我簡單介紹一下這3個app的安裝和簡單使用,主要內容如下:
c語言編譯器:這是一個很小巧的c編譯器,大概13兆左右,界面簡潔、樸素,使用起來很簡單,下面我介紹一下這個app的安裝和簡單使用:
1.下載安裝,這里以我的vivo手機為例,直接打開「應用商店」,搜索「c語言編譯器」,如下,直接點擊下載安裝:
測試代碼如下,這里編寫了2個函數,分別是2數之和和2數只差,很簡單:
程序運行截圖如下,需要先輸入2個數,才能正常運行:
aide集成開發環境:這個主要是用來寫java代碼(創建工程、寫小游戲等),當然也可以寫c 代碼,只不過需要安裝對應的插件才行,自帶自動補全的功能,界面干凈、整潔,使用起來不錯,下面我介紹一下這個app的安裝和簡單使用:
1.下載安裝,這直接在應用商店裡搜素「aide」就行,直接下載安裝,如下:
這里測試一下,主要代碼如下,官方自帶的例子:
程序運行截圖如下:
qpython3:這個見名思意,主孝伏談要用來在手機上寫python3代碼,使用起來也不錯,下面我介紹一下這個app的安裝和簡單使用:
1.下載安裝,這里直接在應用商店裡搜索「qpython3」就行,直接下載安裝,如下:
主界面如下,主要分為「終端」、「編輯器」、「程序」、「qpypi」、「課程」、「社區」這6個模塊,終端類似idle,編輯器類似記事本,qpypi是第三方包和工具,程序存儲官方自帶的示廳宴例,課程是一些教學案例:
這里測試一下官方自帶的例子—speaky.py,在「程序」這個模塊下,代碼如下:
點擊運行按鈕,程序運行截圖如下:
至此,這3個app都介紹完畢。總的來說,使用起來都不錯,各有各的功能,當然,還有許多其他的app也可以在手機上進行編程,像c4droid(c/c ),termux(高級終端,類似linux)等,這里我就不詳細介紹了,感興趣的可以在網上搜索一下,有相關教程和示例可供參考,希望以上分享的內容能對你有所幫助吧。
6. 如何學習編程軟體
學習軟體編程,第一,要對計算機基礎知識要有所了解,建議買本計算機基礎書看看,如果你有自己的電腦,建議多練習打字,對鍵盤要熟悉,能達到盲打最好。
第二,選著一門基礎語言,如c或java語言,作為基礎編程語言學習,掌握語言的邏輯,學習語法,其實編程實質上就是思路的運用,編程思路有了,一起語言都是想通的。
第三,形成自己的編程風格,這里指的是你的思維風格,代碼風格,遇到問題要有自己一套思維方式,解決編程問題。解決問題,代碼要簡潔,有注釋易懂。
第四,軟體編程進階階段,這個過程需要你學習一些和數學思維有關知識,比如數據結構,演算法,矩陣等等,這樣你的編程水平會提升一個檔次。
第五,有時間可以去參加軟體編程等級考試,如初級程序員,信息安全工程師,系統分析師等。也可以去參加一下協會或公開大會,如互聯網大會,軟體編程聯盟,多認識一些高手,多和他們交流學習。
拓展資料:
編程(programming)是編定程序的中文簡稱,就是讓計算機代碼解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。
為了使計算機能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。
7. 新手如何學習編程
熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:
1、語法。
2、基礎理論(數學、數據結構、演算法等)。
3、設計方法(編程原則、設計模式、框架設計等)。
4、庫(核心、基礎、ui、擴展、游戲引擎等)。
5、計算機相關(操作系統、網路、圖形學等)。
6、領域知識(游戲設計、網站設計等)。
7、開發工具(編輯器、ide、自動部署等)。
8、項目管理(進度管理、分工協作、bug管理、版本控制等)。
最普遍也是最重要的能力:創造力。努力分析並理解好做什麼以及怎麼做。要知道上面那些東西一開始都是不存在的。
具體方法包括:
1、快速閱讀入門教程和書籍,適合學習語言和基礎庫。比如我學java讀的《java編程思想》,練習題做過一點,然後學actionscript就沒讀過書,只讀過adobe官方文檔《actionscript 3.0編程》。
2、閱讀庫的文檔、實例、源碼。比如flash、flex開發,熟悉官方api很重要,很多細節要具體使用時才注意到,這時候最好做個筆記,雖然我從沒看過我的筆記。
3、做一個自己感興趣或熟悉的小項目,比如我就以黑白棋游戲作為多個語言的試水項目,一樣的邏輯,便於把關注點放在語言特點上。
4、自己動手豐衣足食。廚師有菜譜,程序員可沒菜譜。比如我做游戲,最關鍵的游戲編程知識全部是動手學出來的,很少有專門針對某個業務領域(如游戲)的編程書籍,要麼是入門書,要麼是模式書(如演算法)、理論書(圖形學),很少有書籍教你如何開發一個45度角地圖系統加編輯器的,全靠自己思考,以及看前人的代碼,需要時找些網路資料。關鍵是,可以培養最重要的創造力。
對於演算法和設計模式,可以研讀下,但是關鍵還是靠平時如何使用了。新手勉強不來的。
項目管理方面的,就得靠工作經驗了,多思考多提意見不要只走流程。