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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12345下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 272905 | 回復(fù): 48
打印 上一主題 下一主題

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

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

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


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

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


活動(dòng)時(shí)間:2016年8月4日—9月4日


活動(dòng)獎(jiǎng)勵(lì):

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



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

內(nèi)容簡(jiǎn)介:本書(shū)將帶領(lǐng)讀者從頭開(kāi)始制作一門語(yǔ)言的編譯器。筆者特意為本書(shū)設(shè)計(jì)了C?語(yǔ)言,C?可以說(shuō)是C語(yǔ)言的子集,實(shí)現(xiàn)了包括指針運(yùn)算等在內(nèi)的C語(yǔ)言的主要部分。本書(shū)所實(shí)現(xiàn)的編譯器就是C?語(yǔ)言的編譯器, 是實(shí)實(shí)在在的編譯器,而非有諸多限制的玩具。另外,除編譯器之外,本書(shū)對(duì)以編譯器為中心的編程語(yǔ)言的運(yùn)行環(huán)境,即編譯器、匯編器、鏈接器、硬件、運(yùn)行時(shí)環(huán)境等都有所提及,介紹了程序運(yù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金雞報(bào)曉
日期:2017-02-08 10:33:212017金雞報(bào)曉
日期: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 [報(bào)告]
發(fā)表于 2016-08-04 15:48 來(lái)自手機(jī) |只看該作者
妖魔化倒是沒(méi)有,就是說(shuō)簡(jiǎn)單也不簡(jiǎn)單,容易也不容易。

論壇徽章:
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ù)圖書(shū)徽章
日期:2014-04-03 16:47:26摩羯座
日期:2014-03-25 23:51:36
3 [報(bào)告]
發(fā)表于 2016-08-04 23:16 |只看該作者
如果僅僅是簡(jiǎn)單規(guī)則的語(yǔ)言,那么編譯器確實(shí)也不難。
問(wèn)題在于:
1)復(fù)雜的語(yǔ)言特性,C++的某些語(yǔ)法特性據(jù)說(shuō)現(xiàn)有的編譯器都支持不是很好
2)代碼優(yōu)化部分,越快越難..
3)運(yùn)行時(shí)的問(wèn)題..
編譯器每一步都要做得非常好,就特別難了。
即使做出編譯器了,人們還會(huì)拿它去和市面上最快的編譯器對(duì)比...

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

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

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

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

論壇徽章:
224
2022北京冬奧會(huì)紀(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 [報(bào)告]
發(fā)表于 2016-08-05 21:34 |只看該作者
這技術(shù)禍害人,不提也罷

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

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

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

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

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

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

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

論壇徽章:
13
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-08-06 06:20:002017金雞報(bào)曉
日期:2017-02-08 10:39:422017金雞報(bào)曉
日期: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運(yùn)維版塊每日發(fā)帖之星
日期:2015-10-09 06:20:002015亞冠之廣州恒大
日期:2015-09-21 21:40:222015七夕節(jié)徽章
日期:2015-08-21 11:06:17
8 [報(bào)告]
發(fā)表于 2016-08-09 22:00 |只看該作者
1. 你平常用哪種語(yǔ)言編寫(xiě)程序?用什么編譯環(huán)境?
    用java比較多,有時(shí)用C語(yǔ)言

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

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

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

求職 : Linux運(yùn)維
論壇徽章:
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運(yùn)維版塊每日發(fā)帖之星
日期:2016-02-08 06:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-01-15 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-15 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-10 06:20:00黃金圣斗士
日期:2015-11-24 10:45:10IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-09-01 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-07-30 09:40:012015年亞洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
9 [報(bào)告]
發(fā)表于 2016-08-10 10:37 |只看該作者
有時(shí)間和精力就好好投入到GCC中吧。!

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

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

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

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

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

了解,用lex/yacc寫(xiě)過(guò)簡(jiǎn)單的文件處理程序,以及匯編器。

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

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

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

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP