忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12345
最近访问板块 发新帖
楼主: cjaizss

【大话IT】编译器的设计其实远没想象中那么妖魔化 [复制链接]

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
发表于 2016-08-21 18:58 |显示全部楼层
终于可以发帖了, 其实很多人都把编译器搞复杂了, 如果用复杂的工具和复杂的思路去思考问题, 问题就会更加复杂.

总的来说, 编译器技术就是将一种语法的文本解析 , 用另外一种语言来表达它的逻辑. 如果是翻译, 就是编译, 如果是解释, 就是解释器.

论坛徽章:
6
2015年辞旧岁徽章
日期:2015-03-05 16:13:092015年迎新春徽章
日期:2015-03-05 16:13:092015小元宵徽章
日期:2015-03-06 15:58:1815-16赛季CBA联赛之浙江
日期:2016-11-05 14:38:4115-16赛季CBA联赛之新疆
日期:2016-11-11 18:38:06
发表于 2016-08-26 09:52 |显示全部楼层
对,从简单做起,C语法太复杂,另外设计个语法简单的语言并实现之,逐步提高能力

论坛徽章:
0
发表于 2016-08-30 09:27 |显示全部楼层
1. 你平常用哪种语言编写程序?用什么编译环境?
  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影响了,但最后也没怎么学以致用。
  2. 编译环境我主要使用GCC,也安装了LLVM-clang,现在主要在linux和osx上面工作和学习。
复制代码

2. 你熟悉编译原理吗,了解词法分析、语法分析、上下文无关文法、IR、LL(k)文法、LR(k)文法等术语吗?
  1. 编译原理与形式语言这门课大学学过,留在记忆里面的只有自动机,词法分析;其它的全部忘记了。工作之后抽空了解了并研究了一些这方面的知识:词法分析即lexcial analysis(scanning),编译器的第一步,生成词法单元序列;语法分析即syntax analysis(parsing),编译器的第二步,根据词法单元序列生成语法树(syntax tree),然后交给后面的语义分析去处理;上下文无关文法,LL,LR文法看过又忘了,属于形式语言里面的东西吧,能记得就是LL,LR如何更好的扫描,扫描更少次数得到生成式。
复制代码

3. 你了解过lex/yacc吗?使用它们做过分析吗?
  1. 了解过一些,包括flex,bison,还有boost里面的spirit;方便生成词法分析器,语法分析器,cc即compiler compiler;曾经要做点regex相关的东西,尝试了一点点。
复制代码

4. 你想过自己设计一种语言,并为之设计编译器吗?如果你想设计,那你该如何一步步的做呢?
  1. 想过的;尤其在我了解过llvm项目之后;llvm会让编译器设计更简单,更加模块化,包括更容易给end user使用编译器的库;比如vim的插件ycm就依赖llvm-clang;
  2. 我是想设计自己的语言,但还没有头绪;我想首先要想明白设计语言干嘛?无论为了学习还是工作;我想设计一门类似ruby的语言,我喜欢ruby的style胜过python;
  3. 我想首先我要了解一些编译器制作工具,前期尽量通过集成利用的方式来实验吧,先娱乐为主,just for fun。
复制代码

论坛徽章:
58
巳蛇
日期:2014-12-14 22:44:032015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:412015年辞旧岁徽章
日期:2015-03-03 16:54:15拜羊年徽章
日期:2015-03-03 16:15:432015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:30双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17子鼠
日期:2014-10-25 14:41:13天蝎座
日期:2014-07-21 19:08:47
发表于 2017-01-20 13:44 |显示全部楼层
1. 你平常用哪种语言编写程序?用什么编译环境?
   >> 我要书, 快把书给我
2. 你熟悉编译原理吗,了解词法分析、语法分析、上下文无关文法、IR、LL(k)文法、LR(k)文法等术语吗?
   >> 我要书, 快把书给我
3. 你了解过lex/yacc吗?使用它们做过分析吗?
   >> 我要书, 快把书给我
4. 你想过自己设计一种语言,并为之设计编译器吗?如果你想设计,那你该如何一步步的做呢?
   >> 我要书, 快把书给我


:luya::luya::luya::luya::luya::luya:
:luya::luya::luya::luya::luya::luya::luya::luya:
:luya::luya::luya::luya::luya::luya::luya::luya:

论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
发表于 2017-01-20 15:08 |显示全部楼层
1,强烈支持楼主ing……

论坛徽章:
0
发表于 2017-06-24 22:42 |显示全部楼层
活动过了,贴子就空了。

才看到,补充几句无关的吧。

编译器是所有软件的重中之重,包括os的构建都不能离开编译器,确保编译器正确是编译器实现的首要目标,注意,这个目标不是优化。

编译器优化很复杂,很复杂, 看VLIW编译器的实现就可以理解当前VLIW的处理器基本上死光了。

lex/yacc/ bison这些已经算是古老工具了。

当前编译器源到源的编译反而是重点,例如openCL 转。。。 , verilog/VHDL转c, system-c 等。

国际上开发编译器的很多,例如 ibm, intel, microsoft, gcc, llvm , sdcc,  ...... 国内不清楚,易语言算一个?  其他定制gcc之类的还是不要算。

国内编译器看法基本上已经没有曙光了。

论坛徽章:
9
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:12
发表于 2017-08-20 07:56 |显示全部楼层
gcc源码看不懂,求版主送我一本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票7.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP