- 論壇徽章:
- 0
|
1. 你平常用哪種語言編寫程序?用什么編譯環(huán)境?
- 碩士畢業(yè)第7年了,平時主要使用c/c++;輔助性的語言包括bash shell, python, ruby, lua, vimscript;這些語言我主要是用于一些需要腳本及快速開發(fā)的地方,比如程序編譯(scons依賴python), ruby偶爾用來開發(fā)一些工具,lua因為我需要用lualatex,vimscript因為我需要用vim,有時候需定制化修改vim插件;java和c#很少用了,雖然很多人認為java和c#才是現(xiàn)代語言;對了,golang花了很多時間學(xué)習(xí),那時候想通過它做服務(wù)端,被rob pike影響了,但最后也沒怎么學(xué)以致用。
- 編譯環(huán)境我主要使用GCC,也安裝了LLVM-clang,現(xiàn)在主要在linux和osx上面工作和學(xué)習(xí)。
復(fù)制代碼
2. 你熟悉編譯原理嗎,了解詞法分析、語法分析、上下文無關(guān)文法、IR、LL(k)文法、LR(k)文法等術(shù)語嗎?
- 編譯原理與形式語言這門課大學(xué)學(xué)過,留在記憶里面的只有自動機,詞法分析;其它的全部忘記了。工作之后抽空了解了并研究了一些這方面的知識:詞法分析即lexcial analysis(scanning),編譯器的第一步,生成詞法單元序列;語法分析即syntax analysis(parsing),編譯器的第二步,根據(jù)詞法單元序列生成語法樹(syntax tree),然后交給后面的語義分析去處理;上下文無關(guān)文法,LL,LR文法看過又忘了,屬于形式語言里面的東西吧,能記得就是LL,LR如何更好的掃描,掃描更少次數(shù)得到生成式。
復(fù)制代碼
3. 你了解過lex/yacc嗎?使用它們做過分析嗎?
- 了解過一些,包括flex,bison,還有boost里面的spirit;方便生成詞法分析器,語法分析器,cc即compiler compiler;曾經(jīng)要做點regex相關(guān)的東西,嘗試了一點點。
復(fù)制代碼
4. 你想過自己設(shè)計一種語言,并為之設(shè)計編譯器嗎?如果你想設(shè)計,那你該如何一步步的做呢?
- 想過的;尤其在我了解過llvm項目之后;llvm會讓編譯器設(shè)計更簡單,更加模塊化,包括更容易給end user使用編譯器的庫;比如vim的插件ycm就依賴llvm-clang;
- 我是想設(shè)計自己的語言,但還沒有頭緒;我想首先要想明白設(shè)計語言干嘛?無論為了學(xué)習(xí)還是工作;我想設(shè)計一門類似ruby的語言,我喜歡ruby的style勝過python;
- 我想首先我要了解一些編譯器制作工具,前期盡量通過集成利用的方式來實驗吧,先娛樂為主,just for fun。
復(fù)制代碼 |
|