亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12345下一頁
最近訪問板塊 發(fā)新帖
查看: 273001 | 回復(fù): 48
打印 上一主題 下一主題

【大話IT】編譯器的設(shè)計其實遠(yuǎn)沒想象中那么妖魔化 [復(fù)制鏈接]

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-08-03 09:34 |只看該作者 |倒序瀏覽
話題背景:

軟件工程師需要經(jīng)常面對著各種編程語言編譯器、解釋器,通過各種語言編譯器、解釋器,軟件工程師的一切工作成果才會變的有意義。本次活動將基于編譯器與軟件工程師之間的關(guān)系展開討論。


討論話題(包括但不限于)

1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?
2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?
3. 你了解過lex/yacc嗎?使用它們做過分析嗎?
4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?


活動時間:2016年8月4日—9月4日


活動獎勵:

活動結(jié)束后,我們將選取5位亮點回復(fù),送技術(shù)圖書《自制編譯器》各一本。



作者: [日] 青木峰郎   
譯者: 嚴(yán)圣逸 絕云
叢書名: 圖靈程序設(shè)計叢書
出版社:人民郵電出版社
ISBN:9787115422187
上架時間:2016-5-31
出版日期:2016 年6月
開本:16開
頁碼:445
版次:1-1

內(nèi)容簡介:本書將帶領(lǐng)讀者從頭開始制作一門語言的編譯器。筆者特意為本書設(shè)計了C?語言,C?可以說是C語言的子集,實現(xiàn)了包括指針運算等在內(nèi)的C語言的主要部分。本書所實現(xiàn)的編譯器就是C?語言的編譯器, 是實實在在的編譯器,而非有諸多限制的玩具。另外,除編譯器之外,本書對以編譯器為中心的編程語言的運行環(huán)境,即編譯器、匯編器、鏈接器、硬件、運行時環(huán)境等都有所提及,介紹了程序運行的所有環(huán)節(jié)。

樣章試讀: 試讀1、2章.pdf (1.69 MB, 下載次數(shù): 168)

論壇徽章:
19
處女座
日期:2014-07-18 14:50:5415-16賽季CBA聯(lián)賽之北京
日期:2019-09-16 15:39:1415-16賽季CBA聯(lián)賽之上海
日期:2019-09-15 15:29:0415-16賽季CBA聯(lián)賽之山西
日期:2017-03-09 10:58:232017金雞報曉
日期:2017-02-08 10:33:212017金雞報曉
日期:2017-01-10 15:13:2915-16賽季CBA聯(lián)賽之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16賽季CBA聯(lián)賽之新疆
日期:2016-07-21 14:02:0415-16賽季CBA聯(lián)賽之江蘇
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30
2 [報告]
發(fā)表于 2016-08-04 15:48 來自手機(jī) |只看該作者
妖魔化倒是沒有,就是說簡單也不簡單,容易也不容易。

論壇徽章:
22
CU大;照
日期:2013-09-18 15:22:06白羊座
日期:2014-04-14 22:56:32午馬
日期:2014-05-16 17:18:08巳蛇
日期:2014-05-30 20:53:19寅虎
日期:2014-06-03 10:53:34未羊
日期:2014-08-12 22:15:31神斗士
日期:2015-11-20 17:26:2515-16賽季CBA聯(lián)賽之浙江
日期:2016-03-15 18:27:4215-16賽季CBA聯(lián)賽之同曦
日期:2016-03-22 09:21:0115-16賽季CBA聯(lián)賽之北控
日期:2017-03-26 21:47:12技術(shù)圖書徽章
日期:2014-04-03 16:47:26摩羯座
日期:2014-03-25 23:51:36
3 [報告]
發(fā)表于 2016-08-04 23:16 |只看該作者
如果僅僅是簡單規(guī)則的語言,那么編譯器確實也不難。
問題在于:
1)復(fù)雜的語言特性,C++的某些語法特性據(jù)說現(xiàn)有的編譯器都支持不是很好
2)代碼優(yōu)化部分,越快越難..
3)運行時的問題..
編譯器每一步都要做得非常好,就特別難了。
即使做出編譯器了,人們還會拿它去和市面上最快的編譯器對比...

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報告]
發(fā)表于 2016-08-05 15:00 |只看該作者
1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?
語言一般是 Objective-C C/C++
編譯環(huán)境是 LLVM 和 GCC

2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?
編譯原理還是大學(xué)時學(xué)習(xí)的,后面偶爾有看過一些博客介紹這方面的,不過相對其他方面的資源來說這方面的資源少多了。
詞法分析:面向代碼,將代碼翻譯成 token 序列
語法分析:將token序列組合成各類語法短語,如“程序”,“語句”,“表達(dá)式”
上下文無關(guān)文法:不太好用語言描述,基本上字面意思就可以理解了
IR:中間代碼吧,跟網(wǎng)頁的后端類似,相當(dāng)于編譯器的后端。主要為了適配高級語言。
LL(k)文法:上下文無關(guān)文法,可以自左到右掃描,自上而下分析。
LR(k)文法:上下文無關(guān)文法,可以自左到右掃描,自下而上分析。

3. 你了解過lex/yacc嗎?使用它們做過分析嗎?
還有 FLex/bison ,以前好像只做過分詞方面。

4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?
想過一些,不過只是空想。
現(xiàn)在看來,從詞法分析->語法分析->。。。還有很多路要走。不過LLVM現(xiàn)在已經(jīng)相對簡化現(xiàn)在的編譯器開發(fā)模式了。

論壇徽章:
224
2022北京冬奧會紀(jì)念版徽章
日期:2015-08-10 16:30:32操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-02-18 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-03-01 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-03-02 06:20:0015-16賽季CBA聯(lián)賽之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16賽季CBA聯(lián)賽之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16賽季CBA聯(lián)賽之廣夏
日期:2023-02-25 16:26:26CU十四周年紀(jì)念徽章
日期:2023-04-13 12:23:1015-16賽季CBA聯(lián)賽之四川
日期:2023-07-25 16:53:45操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-05-10 19:22:58
5 [報告]
發(fā)表于 2016-08-05 21:34 |只看該作者
這技術(shù)禍害人,不提也罷

論壇徽章:
0
6 [報告]
發(fā)表于 2016-08-06 21:30 |只看該作者
哈哈,這本書我有原版,雖然我?guī)缀跻粋日文字也看不懂, 這是我的第一本外文原版書籍(不包括影印版)

論壇徽章:
2
2016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之廣夏
日期:2016-12-07 08:32:11
7 [報告]
發(fā)表于 2016-08-09 13:55 |只看該作者
本帖最后由 劍魂簫心 于 2016-08-10 10:18 編輯

1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?
我工作中主要使用C語言,因為我是做gnome開發(fā)的。編譯環(huán)境就是gcc和gtk+函數(shù)庫了,也會用到glib函數(shù)庫。自己寫的小工具如果要界面就用Java,不要界面的話就用Python。我還會AT&T匯編語言,不過現(xiàn)在很少直接動手寫匯編,只是看匯編代碼而已。C++這門語言一直是我的痛,太難了,大學(xué)學(xué)的現(xiàn)在忘得干干凈凈,而且如果工作不需要的話我是永遠(yuǎn)不會學(xué)C++的......

2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?
大學(xué)學(xué)編譯原理那會兒我可是費盡心機(jī)啊,學(xué)校的教材是國防科大出版的那本《程序設(shè)計語言編譯原理》,真的是很難懂,看這本書簡直找虐。大名鼎鼎的龍書《編譯原理》看起來也是很有難度,后來從圖書館借出了《編譯器設(shè)計》這本書,那看的是相當(dāng)爽,思路清晰還有偽代碼,堪稱天下奇書,而且這本書在我們本科校區(qū)圖書館沒有,我專門坐車40分鐘跑到研究生校區(qū)借來的。我還從孔夫子舊書網(wǎng)買了本上個世紀(jì)出版的絕版書——Kenneth C.Louden的《Compiler Construction: Principles and Practice》,這本書估計已經(jīng)成孤本了。不過一學(xué)期時間畢竟有限,也沒深入學(xué)習(xí)多少,學(xué)完中間代碼生成那部分基本就要期末考試了,而且考試內(nèi)容比較死板,還要抽出時間復(fù)習(xí)。
詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法這些術(shù)語是每本編譯原理書里都會講到的,在《編譯器設(shè)計》這本書里講的尤其清楚,我當(dāng)時的感覺我現(xiàn)在還記得,簡直是醍醐灌頂!。〔贿^,現(xiàn)在早已忘得差不多了,畢竟工作內(nèi)容和編譯器沒有什么交集。
當(dāng)時做課程作業(yè)我還用C語言寫了一個簡單的計算器語法的詞法分析器+語法分析器,直接在文本文檔里寫上一系列3/4+(1+12/6*7)=?這樣的算式,然后經(jīng)過詞法分詞、語法分析、文法分析后就可以算出結(jié)果,還是很有成就感的。

3. 你了解過lex/yacc嗎?使用它們做過分析嗎?
這兩個工具當(dāng)年學(xué)編譯原理時學(xué)過,但是也就當(dāng)時做作業(yè)用了下,后來再也沒用過。據(jù)說這兩個工具可以直接用來構(gòu)建出編譯器的詞法分析和語法分析部分,也就是說編譯器前端靠這倆工具就能完成很大一塊功能。

4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?
我非常想實現(xiàn)一下c語言編譯器,即使是一個小的子集!禖ompiler Construction: Principles and Practice》這本書就是在最后實現(xiàn)了一個小編譯器,不過和c語言還是有點區(qū)別的。我想,學(xué)習(xí)做編譯器的過程會加深對已存在編譯器的理解,比如gcc編譯優(yōu)化的原理等等。實現(xiàn)編譯器的全過程我只知道個大概,編譯器前端里面的詞法分析、語法分析這兩步可以借助lex/yacc,不必完全自己重復(fù)造輪子,語義分析開始就要自己做了,經(jīng)歷了中間代碼生成之后就要進(jìn)入編譯器后端了,后端包括代碼優(yōu)化和目標(biāo)代碼生成以及優(yōu)化,這會涉及與機(jī)器架構(gòu)相關(guān)的部分,那就是相當(dāng)麻煩的事情了。我對匯編層很感興趣,曾經(jīng)還專門找資料學(xué)習(xí)過二次遍歷匯編器(Two-pass assembler)的原理,那會兒在學(xué)一些關(guān)于內(nèi)核底層的東西,所以就順帶看了下,對理解匯編指令轉(zhuǎn)化為機(jī)器碼的過程很有幫助。

最重要的是。!編譯器/操作系統(tǒng)/計算機(jī)圖形學(xué) 這三者并稱為計算機(jī)領(lǐng)域的三座大山,如果能有機(jī)會攀登一下那對于自身來說將會是非常大的提高。!

論壇徽章:
13
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-08-06 06:20:002017金雞報曉
日期:2017-02-08 10:39:422017金雞報曉
日期:2017-01-10 15:13:29極客徽章
日期:2016-12-07 14:08:02JAVA
日期:2016-10-25 16:01:09luobin
日期:2016-06-17 17:46:362016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之天津
日期:2015-12-16 22:35:03黃金圣斗士
日期:2015-11-24 10:43:13IT運維版塊每日發(fā)帖之星
日期:2015-10-09 06:20:002015亞冠之廣州恒大
日期:2015-09-21 21:40:222015七夕節(jié)徽章
日期:2015-08-21 11:06:17
8 [報告]
發(fā)表于 2016-08-09 22:00 |只看該作者
1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?
    用java比較多,有時用C語言

2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?
    編譯原理,在大學(xué)時上完課就還給老師了,一直想重新拾起來研究下,一直沒動手....

3. 你了解過lex/yacc嗎?使用它們做過分析嗎?
    lex/yacc用過。
    寫NoSQL數(shù)據(jù)庫引擎時,需要給java調(diào)用,當(dāng)時就用lex/yacc來解析tcp傳過來的sql語句,復(fù)雜的SQL沒解析出來,就沒再研究下去.....

4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?
    想實現(xiàn)一個簡單的腳本語言,直接解析執(zhí)行的。
    沒想實現(xiàn)C這種的編譯器,需要了解底層?xùn)|西太多了,像cpu指令、匯編等等.....
    要實現(xiàn)的話,要先定義關(guān)鍵字,語法。然后根據(jù)關(guān)鍵字、語法做詞法分析、語法等分析、文法定義等等,最后形成語法樹,再生成目標(biāo)文件或計算結(jié)果等等

求職 : Linux運維
論壇徽章:
19
CU大;照
日期:2013-03-13 15:15:0815-16賽季CBA聯(lián)賽之山東
日期:2016-10-31 10:40:10綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-07-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-02-08 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-15 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-15 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-10 06:20:00黃金圣斗士
日期:2015-11-24 10:45:10IT運維版塊每日發(fā)帖之星
日期:2015-09-01 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-08-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-07-30 09:40:012015年亞洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
9 [報告]
發(fā)表于 2016-08-10 10:37 |只看該作者
有時間和精力就好好投入到GCC中吧。!

論壇徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
10 [報告]
發(fā)表于 2016-08-11 09:09 |只看該作者
1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?

c/c++, linux+vi+gcc/llvm

2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?

了解編譯原理,不過對于LL,LR沒深入學(xué)習(xí),搞不清。

3. 你了解過lex/yacc嗎?使用它們做過分析嗎?

了解,用lex/yacc寫過簡單的文件處理程序,以及匯編器。

4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?

做過這樣的項目,是基于C語言擴(kuò)展數(shù)據(jù)類型和運算,基于clang開發(fā)的。

-------------
我覺得啊,真正設(shè)計編譯器的機(jī)會和需求不多,大多數(shù)情況就是在現(xiàn)有的基礎(chǔ)上,做個移植,增加新的功能支持,修個bug之類的活。
弄編譯器,有三部分需要搞明白,一是語言,詞法,語法之類的;二是體系結(jié)構(gòu),寄存器,棧,指令之類的;三是優(yōu)化分析,控制流,數(shù)據(jù)流,指針別名,各種優(yōu)化之類的。
最后,最關(guān)鍵的還是工程能力要強(qiáng),能把這些理論漂亮的實現(xiàn)出來。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP