工作五六年还是基层码农?因为你没掌握编译原理
程序IT圈
共 1772字,需浏览 4分钟
· 2020-06-03
现代语言的编译器,往往整合了最前沿的技术。掌握真实编译器的运行原理和实现机制,才能吃透语言的核心特性,更高效地运用它,进而提升我们的技术水平。而且,阅读语言编译器的源码,跟踪它的执行过程,可以获得对编译器的第一手理解,是高效学习编译原理的重要途径。 我身边不少朋友,尽管理解了编译原理的理论和概念,但难以做到知行合一,把知识与实践相结合,让编译技术真正变成自己手中的高阶技能。 其实,要做到这一点,无非是解决这么几个问题:
1、语法分析方法有自顶向下和自底向上两种,自己动手实现时,该选择哪一种?选择自己手写,还是工具生成?2、语义分析中要做属性计算,但具体到自己用的语言,到底计算了哪些属性?如何完成引用消解和类型检查?3、编译器中会使用 IR ,实际使用中的 IR 到底是什么样子?4、编译器会优化我们写出的代码,但具体到某种语言,其背后的逻辑和优先级是怎样的?如何写出便于编译器优化的代码呢?
类似的问题还有很多,总结起来就一句:我们用的编译器,到底是怎么写出来的。
只有深入了解现代语言编译器的结构、采用的算法和设计上的权衡,在用编译技术完成一个项目时,你才知道在什么地方该用什么技术——掌握更多编译器的设计和实现思路,作为项目的决策依据。 去年,抽空追了个专栏,叫《编译原理之美》,作者是宫文学。他是北京物演科技 CEO,国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,后来还做过电子表单和快速开发平台,这些经历都跟编译技术密不可分。所以,他熟知各种语言编译器的实现机制,实战经验非常丰富。 跟着学下来,感觉收获很大。最近,得知他跟极客时间合作,推出了第二季《编译原理实战课》,我第一时间就订阅了,跟了学了几节,很想把这个专栏推荐给你。 在专栏中,他系统梳理了编译原理的核心基础知识,解析 7 大主流语言的编译器源码。通过大量实战案例讲解,带你掌握真实编译器的实现机制与关键算法,进而站在更加宏观的视角,从编程语言的设计层面理解编译原理。
?点击上图,免费试读早鸟+口令「bianyi666」立省 40 元,到手仅 ¥89,仅限「前 50 人」有效
他是如何讲解这门课程的?
专栏中,他深入解析了 7 大主流语言的编译器:Java 编译(javac)、Java 的 JIT 编译器(Graal)、Python 编译器(CPython)、JavaScript 编译器(V8)、Go 语言的编译器(gc)以及 MySQL 的编译器。 这些编译器都很有代表性,是我们工作中经常会用到的,各自采用了不同的编译技术,对比分析下来,你可以发现其中的异同点,进而对编译技术有更全面、深入的认知。 内容分为三部分: 预备知识篇:系统梳理编译原理的核心知识体系,加深你对关键概念的理解。学完预备知识,再去看各种编译器的源代码和相关文档,可以更好地将实践与原理结合,并且互相印证。 真实编译器解析篇:研究 7 种主流语言的编译器源码,跟踪它们的运行过程,分析编译过程的每一步是如何实现的,并对一些针对性的编译技术点加以分析和点评。这样,在研究了 Java、Java JIT、Python、JavaScript、Julia、Go、MySQL 这 7 种编译器后,相当于把编译原理印证了 7 遍。 现代语言设计篇:分析总结前面讲过的编译器,进一步提升我们对编译技术的认知高度。学完这一模块,对如何设计编译器的前端、中端、后端、运行时,你会有比较全面的了解,知道如何在不同的技术路线之间做取舍。 宫老师说,课程中的大部分内容,都是他在读源码,跟踪源码执行过程的基础上梳理出来的。在课程设计上,他会以研究真实编译器的运行原理为主要手段,着力于扩大知识版图,增强实战能力,从而达到「行万里路」的目的。 说了这么多,是时候看看目录了。
订阅福利 早鸟优惠+口令「bianyi666」 到手仅 ¥89,立省 ¥40,仅限「前 50 人」有效。 订阅后生成海报发给好友,每成功邀请 1 位好友,可得 ¥24 返现。
△ 扫码免费试读 ? 点击「阅读原文」输入优惠口令「bianyi666」以 最低价 ¥89 入手,仅限 前 50 人
评论
偷偷告诉你如何一台电脑开多个微信!
大家好,我是轩辕。前几天在粉丝群里,有人问我是怎么在一台电脑上同时登录两个微信的?正好之前写过一篇文章,分析过原理,分享给没看过的小伙伴学习一下。手机端多开微信估计很多人都知道,像华为、小米等手机系统都对此做了支持,不过在运行Windows系统的电脑上怎么启动两个微信呢?其实很简单,你只需要写一个批
编程技术宇宙
0
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
轻松掌握开源项目的二次开发技巧
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群本文作者:@方长_beezen 原文链接:https://juejin.cn/post/7358647992608489535前言随着软件行业的迅速
程序员成长指北
0
JS的这些新特性,你都用过么?
大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号回复1,加入高级Node交流群作为一门不断演进的语言,JavaScript每年都会引入新特性。这些特性的加入,能够帮助我们编写更加简洁、高效、易于维护的代码。然而,并非所有新特性
程序员成长指北
1
美团还是快手,选个offer真纠结!
JavaGuide官方网站:javaguide.cn当面临多个还不错的 offer 时,做起选择是真心让人纠结,真心祝福各位都能有这种纠结的时候。纠结是正常的,毕竟选择一个 offer 的考虑因素太多了,并不仅仅是说谁给的钱多一点就跟谁干。如果真这么简单的话,那也就没啥可纠结的了。这篇文章我会结合一
JavaGuide
0
接口响应慢?那是你没用 CompletableFuture 来优化!
来源:blog.csdn.net/qq_43372633/article/details/130814200👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0
小哈学Java
3
金三银四你都拿到了哪些offer?
本文继续分享最新真实面经,希望对粉丝股东们有帮助,另外文末有直投大厂的机会,别错过。都说行情不好,可是有的同学拿到了很多Offer,各种对比;也有同学连面试都很难约到。“能拿到Offer的大多相似,拿不到的各有各的原因。”金三银四你拿到了哪些offer?也欢迎大家在评论区留言讨论,不要错过文末的企业
高级前端进阶
0