我是靠谱客的博主 平淡月饼,最近开发中收集的这篇文章主要介绍漫画 | 打死我也不学编译了!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在上古时代,程序员都用汇编编程,效率低下,非常痛苦

26d6ada4ea702fdc9067064858ff26aa.jpeg

只有那些大神才能使用汇编搞大事情。

6050dc258e5f11adc65be854f70205b4.jpeg

软件业的繁荣不能只靠几个大神,还需要千千万万的码农。

IBM公司29岁的巴科斯决心改变这种情况。

a072ab48078bf4e4cb8bb366992441ea.jpeg

这个编程语言就是Fortran,但是当时人们对编译理论了解不多,开发工作既复杂又艰苦。

c7a7d881de54db536ce92fdca1c6caaf.jpeg

这时候,语言学家乔姆斯基对自然语言结构的研究给编译器带来了意外之喜。

a588e3918e31e8742e403cf2c14779f4.jpeg

b0079538406cd6ee1858451c8781fa14.jpeg

1957年,经过三年的努力,Fortran编译器终于完成。

959594b30b8a3e81d266e546f2132cd7.jpeg

突破第一个编译器以后,高级语言便如雨后春笋般发展起来

a4df29c12ff0621f25734405035ae9e6.jpeg

最为知名,影响力最大的还是C和C++

dcd49f42231c6c2fe3cbb1923f94cc60.jpeg

编译器的理论和实践也逐渐成熟

184359b4c058497d0f7e4f4862d7039c.jpeg

随后甚至出现了生成编译器的生成器

4d86ed875cc38e2ffb444a3811275d59.jpeg

4b5aeaff4bf8f87b3f45f30fe0b36292.jpeg

Lex 和 Yacc生成的程序只是编译器的一部分,编译器的基本结构通常是分为三段。

aa422f0243dda2f37e3e99a46993ebf7.jpeg

对一个公司来说,当它开发一个编译器的时候,很少投入资金研发多种前端和后端,这就导致无法通用,无法共享。

430fb455c5317821343d52e1255dae4c.jpeg

后来,开源的GCC编译器最早打破了这种模式。

f9718424b5ff1fcfc173dcb5577745a8.jpeg

GCC开源,跨平台,支持多种前端和后端,很快成为Unix和Linux的标准编译器。

围绕着GCC,一个编译王国隐然成形。

9bc68872632650788b5daf864f5fea4d.jpeg

苹果公司也决定采用GCC编译自家的Objective-C

a65d4e822a70bd6a15f717b34aacea8e.jpeg

但是Objective-C毕竟是个小众的语言,随着时间的推移,苹果公司提出的需求,GCC逐渐满足不了了。

b0ce1d67b73d1d985a9e45ebcb7dbb3d.jpeg

GCC还是个“单体应用”,很难嵌入到其他应用程序当中。

82a8f9988a6026660906d5538dfbae78.jpeg

就在此时,一个大神横空出世。

a4339ecede6ca1d2ee1204c296b16e05.jpeg

cc337d2e7cfda2f5d28c39c50e0cf4e4.jpeg

27c9f1019b4ab63d4195ef4d37fab22e.jpeg

2005年,Chris Lattner加入苹果,负责苹果的编译器,XCode等工具的开发,以及LLVM社区的发展。

他不负众望,把Objective-C搞得风生水起,还开发了一个叫做Clang的LLVM编译器前端,支持C、C++和Objective-C。


5d0fcd63959e988d29e129bfe60ccb64.jpeg

模块化的LLVM吸引了很多语言的加盟

19002664b582427b98d0a77c394e33d3.jpeg

不仅如此,现在有很多领域都需要编译技术,但是不需要完整的编译器,模块化的LLVM正好可以大放异彩。

f389168aa21dca2f80432144a5cf15a1.jpeg

60年间,编译器从最早的把高级语言转化成机器码,到专注后端优化,终于走到了模块化这一步,LLVM成了新的王者。

后记:编译原理一门比较难的课程,我和很多同学聊的时候,有人说:编译太抽象了,太枯燥了,还有人说:打死我也不学编译了(这句话让我印象极为深刻,直接当了标题)。其实不学编译对日常工作影响也不大,大家主要把编译器当做一个工具直接使用,不会去了解内部的实现。真正从事编译器开发人也非常少。

不过学习编译原理能让程序员加深对编程语言和计算机系统的理解,有余力的话还是建议大家去看一下。

(完)

福利时间到!

免费包邮5本《大话设计模式 Java溢彩加强版》!

a30d4cac4420def24a61f6194d869da7.jpeg

畅销15年的超级IT原创书焕然上市

百万读者认可,趣味解读“设计模式+OOP”

JAVA设计模式与面向对象观念同步养成

全彩印刷+三维图表+学习课件=传神解析

全新升级,全新体验

《大话设计模式【Java溢彩加强版】》延续了前作轻松调侃的风格,采用了师生对话的方式展开讨论,其中穿插了大量“接地气”的类比案例,帮助大家迅速“开窍”。

作者精心将本书图表制作成彩色三维形式,阅读起来你会发现,不仅仅是养眼,对一些流程、概念的解说,用彩色三维图表更为精准,学习体验有了质变。

点击下方图片即可抽奖,赶快试试手气吧

PS :没中奖也可以到京东购买,京东有满100减50的活动,不要错过(点击阅读原文可直达)。

最后

以上就是平淡月饼为你收集整理的漫画 | 打死我也不学编译了!的全部内容,希望文章能够帮你解决漫画 | 打死我也不学编译了!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部