开篇词 | 为什么你要学习编译原理?
开篇词 | 为什么你要学习编译原理?
讲述:宫文学
时长08:27大小7.75M
编译技术,与你的工作息息相关
编译技术并不难学
写在后面
赞 75
提建议
精选留言(203)
- 尔冬橙置顶2019-10-01老师,去GIS公司搞Java开发有前途么
作者回复: 我离开GIS领域已有一段时间。为了你这个问题,专门问了两个同学,技术大咖。一位是腾讯地图的,一位是ESRI(ArcGIS,GIS领域的鼻祖级公司)的。 大致需要三类技术: 1.GIS的后端。都是用Java和C++开发的。对性能要求比较高。 2.做算法。基本上是AI框架 + python,要能快速迭代,作出模型来以后,还能还要用java和C++落地到生产系统。 3.做前端。这个就不说了。 GIS总体来说,还是挑战比较高的一个领域。门槛高,前途应该也比较好。这是我的看法,仅供参考。
共 2 条评论79 - Norman置顶2019-08-14老师你好,请问学习这门课程需要什么基础知识吗?比如是否一定要了解Java或者js等?
作者回复: 你有任何语言的背景,都能学这门课。 毕竟,这门课本身,就是为了让你了解各门语言背后的知识。当然不会因为你所掌握的具体语言而卡壳。 当然,我在课程里的例子,有c的,有java的,有javascript的,这几门语言的语法看上去都很像,所以你不会有陌生感。很多同学应该都学过上述语言之一。
共 3 条评论31 - Jaswine置顶2019-08-15有一位前辈对我说,想做IT行业。好好学学“计算机组成原理”、“操作系统”、“计算机网络”和“编译原理”这几个知识,对你以后走多远很有好处。前三个我都或多或少的主动去接触过,确实觉得很重要,回头再看Java就是对一些抽象的东西进行封装,最后在做工作的还是操作系统和硬件,知道操作系统和硬件是怎么回事之后让我学习Java这一类的语言很有帮助。 但是“编译原理”一直是处在我以为的状态,我知道有用但是一直没有系统学习。这次随着老师学习下。展开
作者回复: 非常同意那位前辈的意见。他很有经验。 一起努力!
共 5 条评论24 - 公众号:业余草2019-08-14确认过眼神,讲师头发是“编译”过的
作者回复: 呃... 那这个编译优化得很厉害。生成的目标代码很少。:(
共 2 条评论89 - 云风2019-08-14早就知道编译原理很重要,也很难学,希望在老师的课程中收获满满!
作者回复: 如果学不会,是我的错!
共 2 条评论35 - 水上漂(陶)2019-08-14龚总,我是陶红军,你的坚持、执着、智慧真是棒棒的!从工作流到BI、再到电子表单、再到今天的大数据,我与你在随行……
作者回复: 谢谢兄弟鼓励!
32 - Milittle2019-08-14我要把这个学好, 因为就是冲着学llvm来的, 而且我坚信以后的dl会需要更多像tvm这样的东西存在。 我要想着ai编译器进发。 加油(ง •̀_•́)ง
作者回复: 哇,你的思维已经很靠前了! 一起加油!
22 - 贾献华2019-08-15在 iOS 上实现 Logo 语言,之前参照被人实现的都没有递归,写完本课程想完整完成 Logo 语言。
作者回复: 一个厉害的flag! 敬佩!加油! 对了,我有点好奇,你想搞Logo,是要进入儿童教育或者大众编程教育领域吗?
17 - coder2019-08-14好奇宫老师在中科院哪个所读的研究生?
作者回复: 中科院是在地理所搞遥感和GIS。北大时也是在这个领域,是城环系,现在是城环学院。 那时用国外的GIS软件,人家都能支持脚本。觉得咱们怎么做个软件都没有支持语言的能力呢? 当时还在工作站上用mathematica。惊艳!强大的交互式命令和脚本。
共 5 条评论17 - @阿锦啊2019-08-14非科班出身,对计算机几大基础课感觉非常恐惧,之前极客时间推出的算法、网络协议、mysql专栏都特别好,每一门都认真学了,收获非常大。希望这次也能跟老师一起攻克编译原理(PS:宫老师的声音,听起来让人觉得很稳重很踏实,不由自主信任这样的老师
作者回复: 谢谢信任,我一定努力,让大家都能听懂,都能上手!
14 - devna2019-08-14之前用Antlr 3写过一个SQL解析器,虽然做出来了,但一直感觉懵懵懂懂,希望这次能把编译原理彻底搞懂!
作者回复: 对的,我明白你在说什么。 搞懂原理,就能更自由、更有信心的驾驭工具。因为本质上,你也可以写出这样一个工具。 另外,Antlr4又有很大进步,写语法规则更简单了。我怕这么好用的工具惯着大家,所以在课程里还是让大家从基础的坑踩起。比如左递归、结合性、优先级等必须说清楚。否则,大家用着工具还会是懵里懵懂的。
12 - 一修💤2019-08-15工作中会遇到很多问题比如策略引擎,工作流,数据处理的DAG,甚至神经网络的结构连接,感觉都能用简单的语言来描述,底层编译成相应的执行代码来运行,
作者回复: 感谢你分享领域需求!你说的非常对! 你所说的策略引擎、工作流等就是DSL。 另外神经网络领域,不管用哪家的AI库,但底层原理都是一样的,都是这几年深度学习领域那些进展,都是张量计算。所以,其实不同家的AI,应该都可以翻译成标准的底层。这就是ML领域的IR。然后再对应到不同的硬件上,比如TPU、GPU。这个领域内正在定标准。
10 - 我是男超人2019-08-15我就是那个"每次鼓起勇气拿起《编译原理》,啃不了多少页就放下了"的人.
作者回复: 愿意去拿起来的同学,就不简单。
9 - 蓝士钦2020-08-31前不久看到所谓的国产编程语言“木兰”被扒皮后发现是python套层壳,真的是很气愤。想要掌握编译原理设计一门自己的语言,但同时又有点迷茫,现代编程语言这么多,真的再需要一门新语言吗,从人机交互的角度来看,任何语言都是语法糖。
作者回复: 首先,编程语言其实比我们日常看到的要多。我们平常了解的都是一些广泛流行的通用编程语言,进入到每个细分领域,都需要各自领域的语言。比如SaaS的鼻祖Salesforce就设计了自己的apex语言,用于开发商业应用。没错,有可能就是语法糖,但这种语法糖只要能提高效率、减少出错,就是值得的。 第二,可以从这个角度理解计算机语言:计算机语言总是某个流行系统的脚本语言。比如C语言是Unix系统的脚本语言,JavaScript、Java、PHP等,本质上都是Web的脚本语言。而Objective-C和Swift显然是苹果设备的脚本语言。Android虽然一开始用了Java,但最近也在转成Kotlin,这样google更容易掌控。 当一个新的技术生态兴起的时候,一定需要自己的一门脚本语言,与自己的生态紧密配合。中国逐步发展起自己的技术生态的时候,也一定会孕育出自己的语言。 比如说,现在Java是被Oracle掌控的。国内现在用Java编程的工程师们,已经多多少少感受到了一种不愉快。先不说Java8之后的收费政策。那些工程师们渴望的特性,一直没有被满足,就会不爽。比如说,我在《编译原理实战课》中讲到协程的时候,就指出Java语言目前支持协程是很别扭的一种状态,目前都是一些第三方的实现,没有官方的支持。如果技术生态是由我们主导,可能就不是这样。因为我国互联网的并发用户数如此之多,对于更好的并发支持肯定更加优先。
8 - allean2019-08-14听说老师准备了半年之久,一定是精心打磨的课程,学就完事了!
作者回复: 感谢信任!
8 - 我叫不知道2019-08-14跟老师一起实现一门脚本语言和编译型语言,还有面向未来的编程语言。 不认真学完这门课,我就回来打自己的脸🤣 一起加油呀 小伙伴们 (ง •̀_•́)ง
作者回复: 哈哈!一起加油!
8 - 张洪阆2019-10-15protobuf算不算一门语言
作者回复: 你贡献了一个很漂亮的例子! protobuf本身当然不是传统意义上的语言。 但protobuf定义消息的方式,确实是一个典型的DSL。解析处理这个DSL的过程,就要用到编译技术。
7 - 鱼_XueTr2019-08-15听老师这么一讲,特别想实现一款满足自己日常WorkFlow的语言。
作者回复: 我有个同学,曾经在美国一个研究所工作。老板布置的三个月的工作任务,他两周做完了。因为他懂得编程处理,比其他同事高了一个维度。 那如果懂得写自己的语言去处理,可能比普通懂编程的,又高了一个维度吧!
6 - 光明2020-04-26收藏已久的课程,今天终于开启学习了,我是运维行业多年的IT ,其实很多时候,我还是向小白一样无知,之前认识在编译是代码方面的事儿,好像和其他无关似的,今天听完这个课程以后,并看完课程附带的思维导图以后,才发现代码要想写得好,编译原理不可少,今天在评论区里,看到老师耐心的解答问题,让我更加有信心学好这门课程。今天在评论区还学到一个重要观点,要在It行业长久发展下去,1、计算机组成原理必须要学2、计算机网络和编译原理必须学,3、操作系统原理要也要学习。从今天开始,我每天要学习1节课程。展开5
- litao912019-08-14想学编译技术多年,苦于没有合适的入门方式,这回争取入门
作者回复: 一定能行!再入不了门,找我说道说道!
5