- 论坛徽章:
- 0
|
1. 你平常用哪种语言编写程序?用什么编译环境?
- 硕士毕业第7年了,平时主要使用c/c++;辅助性的语言包括bash shell, python, ruby, lua, vimscript;这些语言我主要是用于一些需要脚本及快速开发的地方,比如程序编译(scons依赖python), ruby偶尔用来开发一些工具,lua因为我需要用lualatex,vimscript因为我需要用vim,有时候需定制化修改vim插件;java和c#很少用了,虽然很多人认为java和c#才是现代语言;对了,golang花了很多时间学习,那时候想通过它做服务端,被rob pike影响了,但最后也没怎么学以致用。
- 编译环境我主要使用GCC,也安装了LLVM-clang,现在主要在linux和osx上面工作和学习。
复制代码
2. 你熟悉编译原理吗,了解词法分析、语法分析、上下文无关文法、IR、LL(k)文法、LR(k)文法等术语吗?
- 编译原理与形式语言这门课大学学过,留在记忆里面的只有自动机,词法分析;其它的全部忘记了。工作之后抽空了解了并研究了一些这方面的知识:词法分析即lexcial analysis(scanning),编译器的第一步,生成词法单元序列;语法分析即syntax analysis(parsing),编译器的第二步,根据词法单元序列生成语法树(syntax tree),然后交给后面的语义分析去处理;上下文无关文法,LL,LR文法看过又忘了,属于形式语言里面的东西吧,能记得就是LL,LR如何更好的扫描,扫描更少次数得到生成式。
复制代码
3. 你了解过lex/yacc吗?使用它们做过分析吗?
- 了解过一些,包括flex,bison,还有boost里面的spirit;方便生成词法分析器,语法分析器,cc即compiler compiler;曾经要做点regex相关的东西,尝试了一点点。
复制代码
4. 你想过自己设计一种语言,并为之设计编译器吗?如果你想设计,那你该如何一步步的做呢?
- 想过的;尤其在我了解过llvm项目之后;llvm会让编译器设计更简单,更加模块化,包括更容易给end user使用编译器的库;比如vim的插件ycm就依赖llvm-clang;
- 我是想设计自己的语言,但还没有头绪;我想首先要想明白设计语言干嘛?无论为了学习还是工作;我想设计一门类似ruby的语言,我喜欢ruby的style胜过python;
- 我想首先我要了解一些编译器制作工具,前期尽量通过集成利用的方式来实验吧,先娱乐为主,just for fun。
复制代码 |
|