當前位置:首頁 » 編程軟體 » 小型編譯器有多難

小型編譯器有多難

發布時間: 2023-04-11 11:47:46

① 寫一個編譯器大概多長時間

寫一個簡單的編譯器,很簡單,一個星期夠了,但是,它肯定沒有實用價值。
你懂的,編譯器要把源程序編譯為目標機器語言的,不熟悉機器指令,可以用匯編作為目標代碼。

② 編譯原理難嗎

編譯原理我覺得不是最難的,或者是讀得很淺所以不覺得難。在計算機基礎課中最難的我覺得是操作系統,很難很重要,但是很少人會去重視,基本都是草草的上課草草的學了,不得精髓;次之演算法也很難,不止是理論,實際用用也難。
國內985本科編譯能教的大約是半本龍書組成的前端加一個基本的後端,不難。但是實踐的工作量大。認真做一個編譯器至少兩三萬行C++的工作量,只有半個學期的時間,壓力很大。當然,compiler的可玩性不錯,不那麼枯燥。

③ 新手如何學習編程

熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:

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度角地圖系統加編輯器的,全靠自己思考,以及看前人的代碼,需要時找些網路資料。關鍵是,可以培養最重要的創造力。

對於演算法和設計模式,可以研讀下,但是關鍵還是靠平時如何使用了。新手勉強不來的。

項目管理方面的,就得靠工作經驗了,多思考多提意見不要只走流程。

④ 開發一個 C++ 編譯器的難度有多大,難點又在哪裡

C++的前端是出了名的復雜度和可靠性要求並駕齊驅的軟體。

(這兩點都比它高一個數量級的大概就只有OS了)

對於這種系統,唯一的辦法就是燒錢。

燒錢的作用主要包括:
1.留人;
2.填坑;
3.買買買。

先說留人:復雜度一般是「細節」的代名詞。現實中的編譯器大多數以遞歸下降為主,自底向上的歸納推導為輔。這兩樣在教科書上也就是幾頁紙的事情。但是現實總是很殘酷的,人們總想讓語言更加「易用」,這就意味著各種上下文相關的情況都會出現。

對於C++來說,你要判斷一個符號是類型或者變數(比如這個符號被用在模板參數中),要看前面的聲明/定義。這就是一個上下文相關的推導。然後你就會寫大量的if else switch case之類的代碼來解決各種各樣的可能分支。寫它的人當然知道它是做什麼的,但是如果這個人離職了,新來一個人,就呆掉了,這寫的都是什麼煞筆玩意兒。因為它不知道現實中怎樣的需求會導致奇形怪狀的邏輯。所以人員的穩定,對於這種長周期迭代、邏輯復雜的項目是很重要的。但是人的水平要求高嗎?不算高也不算低。總結來說就是:有邏輯,知好歹。技術什麼都可以培養,但是態度和基本智商是比較難培養起來的。

至於怎麼保證人員穩定?很簡單:加薪。

再說填坑:編譯器是對正確性要求很高的基礎軟體。這里的正確性既包括產生的代碼的正確性,也包括編譯器自身對於各種問題的容忍度和足夠豐富的錯誤提示。容錯和錯誤提示本身也是代碼,也有很大的出錯幾率。所以這些軟體,bug少不了。但是作為基礎軟體,你又不能隨便就2+3搞成了2*3,這樣還怎麼讓別人相信愛情。所以要燒很多錢來養一幫debugger。

再說買買買:古人日:我們不用很麻煩很辛苦也可以成佛。既然這么費神我們自己做干什麼,不如買別人的吧。於是MS就乾脆不自己做了,直接去EDG整了個前端,這樣就可以少了不少人年。這就是傳統土豪和水果這種新暴發戶想的不一樣的地方。

傳統土豪想的是:我們有這么多錢為什麼還要自己解決問題呢?買買買!
水果新貴則是:啊呀,不小心有了這么多錢,我們要不要給自己製造點問題好把這些錢花出去?

⑤ 本科獨立用c語言完成沒有優化的C語言編譯器屬於什麼水平

我覺得水平還是很高的,但意義恐怕不大。編譯器技術是非常成熟的領域,而且由於應用場景的限
制實時,復雜的演算法已經自動出局了,你可選的東西是有限的。編譯器可能有很多實現的形
式,虛擬機/解釋器/靜態編譯器 等,也有成熟的開源實現。作為本科生,而非專門研究該分支的學生,應該合理分配自己學習的時間,如果做這個編譯器就干
掉了大半年,那計網和OS這些課程該咋辦? 

我知道很多人會認為沒有做編譯器優化特指中段優化,不考慮機器碼上的優化比較劃水。但編
譯器優化是一個很復雜的東西:首先它和你用的IR表示有關而且是強烈耦合,SSA IR基本還
好,有開源代碼和文獻記載,你想要的都能在網上挖到但這怎麼體現你的水平是吧。你
要考慮編譯器的性能,盡管編譯器的後端優化基本上可以納入到某種PEabstract interpretation的
范疇中。

要不然你可以通過編寫插件的方式白嫖例如visual studio code這類軟
件的強大編輯功能,如果你寫的不是c compiler,你也可以盡量把語法設計得很像c,這樣你又能進一步
白嫖其強大的intellisense code,當然仍然有不少人或者應該說團隊達到了這一步,到這里,應該卷死
了99.99%的同行應該毫無問題。

⑥ 用c++寫c語言編譯器(輸出匯編語言)有多難{自學成才}

首先要有一定的英語數學基礎,和強的邏輯思維

⑦ 編程復雜嗎

編程本身其實不難,因為我們學習編程的時候,接觸到的都是高級語言。因為這個最接近我們平常的思維,所以學起來也比較容易。
但為什麼有的童鞋覺得編程很難呢?一方面,沒有接觸過,只是聽人說,另一方面,一般編程方面的職業薪酬都比較高,可能會想那麼高的工資,那這個編程肯定比較難了。
其實這都是整個職業環境帶給我們的感覺,在我看來,編程本身不難。那麼問題來了,障礙是在哪個地方?我覺喊乎得螞手有兩點,一,在編程語言問世的時候,它的編譯器也會隨之出現,要不然就無法開發,因為編程最核心,最底層的東西就是編譯原理,如果鄭物悉這個自己學會了,那任何語言都只是簡單工具;二,編程並不僅僅是if else等等這些邏輯語句,更關鍵的是一個軟體或者項目的設計,這就需要我們有一個大局觀,要有設計思想,這是我們開發中非常重要的。如果沒有這種思想,就算開發出來了軟體,也會是漏洞百出,bug不斷。
所以,綜合來講,編程也是一種技能,和其他職業技能沒有多大差別,它也需要積累,需要學習,最終成為專家。

⑧ 為什麼安裝個VC++6.0編譯器這么難

初學C++還是不要用VC6.0了。這個編譯器除了速度快一些,不標准、BUG多,一無是處。

推薦Dev-C++,一個小巧、標准、免費的C++開發環境,有中文版,各個軟體站都有下。

⑨ 編譯原理很難嗎

說實話有點難,但是好好學肯定能學好呢。我編譯原理上85了,而且期末還寫了個編譯器。相信你也沒問題的!

⑩ 操作系統內核和編譯器哪個難度更大

整體而言,是同級別的難,但難點各有側重。
若論演算法,編譯器更難,而且難不止一個級別。操作系統的演算法難度只能算一般水平。
但是操作系統涉及的東西更多,本身結構更復雜,硬體處理也更加復雜。

熱點內容
pythonjson格式 發布:2025-07-15 08:42:54 瀏覽:675
醫院葯房要什麼配置 發布:2025-07-15 08:29:55 瀏覽:663
編程說明書 發布:2025-07-15 08:16:39 瀏覽:759
android請求超時 發布:2025-07-15 07:56:57 瀏覽:528
修改linux的主機名 發布:2025-07-15 07:52:46 瀏覽:905
天龍八部自動挖礦腳本怎麼寫 發布:2025-07-15 07:42:01 瀏覽:648
本地編譯器怎麼運行 發布:2025-07-15 07:42:00 瀏覽:995
加密狗會壞嗎 發布:2025-07-15 07:38:32 瀏覽:563
jdbc讀取資料庫 發布:2025-07-15 07:38:23 瀏覽:322
華為手機如何設置隱私密碼鎖 發布:2025-07-15 07:36:09 瀏覽:980