报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

不想当“螺丝钉”?先搞定编译原理

  • 2019-08-15
  • 本文字数:1715 字

    阅读完需:约 6 分钟

不想当“螺丝钉”?先搞定编译原理

众所周知,编译技术是计算机科学史上的明珠之一。如果说整个互联网的发展是构建在编译技术和编程语言之上也毫不为过。


不过,有的程序员可能会觉得,我也不会去设计一门新的编程语言,有必要学习编译原理吗?学了有什么用呢?


实际上,编译原理不是用于炫耀的屠龙技,程序员在工作中经常会碰到需要编译技术的场景,比如:


  • 编写界面模板引擎;

  • 为项目编写各种各样的 DSL;

  • 深度理解甚至开发出 Spring、Hibernate、阿里巴巴 Druid 这样的工具。


除此之外,解析用户输入,防止代码注入,为前端工程师提供像 React 那样的 DSL,像 TypeScript 那样把一门语言翻译成另一门语言,像 CMake 和 Maven 那样通过配置文件来灵活工作,运维工程师分析日志文件等等高级别的需求,都会用到编译技术。


编译技术,就是把高级语言的代码翻译成为计算机可以理解和运行的二进制代码的技术。掌握了编译技术,你可以获得什么能力呢?太多了,比如:


  • 让你的软件支持公式和脚本,从而具有更强的灵活性;

  • 有能力参与基础软件的研发,因为它们很多都会用到编译技术,比如 Hibernate、Spring、大数据系统等等;

  • 编写特定领域语言,解决领域问题;

  • 写出高效、高质的代码,成为更优秀的开发者;

  • 更好地理解和学习新的语言,降低学习成本,快速跟进技术潮流。


除了实践性强,学习编译技术对于提升程序员的职场竞争力也很重要。


比如,我发现一些大公司招聘程序员时,有难度的面试题都是涉及底层机制的。理解了底层机制,才能更深入的思考问题和解决问题。学习编译原理,能让你从前端的语法、代码优化、与硬件结合等维度,加深对计算机的理解,提升工作中解决疑难杂症的能力。


如今的快餐式学习,虽然会帮助个人在短期内迅速了解一门技术,但程序员想要保持长期的竞争力,学习底层知识并进行实践,提升专业素养必不可少。也许你以后不会成为编译器开发者,但学好编译原理,一定会让你终生受益。

如何深入理解并实践编译原理?

很多同学反馈说,知道编译技术的重要性,也很希望能啃下来,但总是会遇到许多问题:


  • 作为底层技术,编译原理出了名的晦涩难懂,学习完全没有头绪;

  • 网络上的资料过于抽象和理论化,篇幅长,讲解枯燥;

  • 畏难情绪严重,学习编译原理简直成了心魔。


为了帮助大家真正克服畏难情绪,更好的理解和实践编译原理,我在极客时间开了课程《编译原理之美》,为此特别梳理了一个知识框架图,希望帮你快速、直观地了解我们的知识结构体系。


我是谁?

我是宫文学,现任北京物演科技 CEO。本科毕业于北京大学,硕士毕业于中科院。我是国内最早做 BPM(流程管理平台)和 BI 平台(大数据平台)的创业者之一,2016 年还入选了厦门市第九批“双百计划”领军型创业人才。


我曾经以 3 个人的团队,用编译技术做了一些硬核的产品原型,然后就跟联想集团签订了战略级合作协议,之后我又做过电子表单和快速开发平台。我参与的第一个公司被上市公司收购,第二个在新三板上市,而这些成果在一定程度上受都益于编译技术。

我会如何讲解编译原理?

在这个课程里,我会从前端与后端两个层面来讲解编译原理的核心技术点,用具体的案例带你理解抽象的原理,帮助你建立信心,克服畏难情绪,让你在这个过程中一步步趟过雷区,在工作中真正用到编译技术。



课程具体分为三个部分:


第一部分:实现一门脚本语言


主要聚焦编译器前端技术,通过具体实例,带你了解词法分析、语法分析、语义分析的原理,实现一门脚本语言,并用工具提升效率。


第二部分:实现一门编译型语言


主要聚焦编译器后端技术,带你了解如何生成目标代码和对代码进行优化,并引入 LLVM 工具,最后生成可执行的文件能支持即时编译,并经过了多层优化。


第三部分:面向未来的编程语言


人工智能与编译技术结合是否会出现人工智能编程?这个模块将对编译技术的发展趋势进行分析,帮你更好地把握未来技术发展的脉搏。

学习完课程,你能收获什么?

1.系统掌握编译器核心技术


2.手动实现解释型和编译型 2 门语言


3.4 大案例剖析编译技术的实际应用


4.编译技术的趋势解读


1 分钟看看目录,为了帮你更加体系化的掌握编译器核心技能,我将内容精简到了 30 多节,但绝对干货满满,能让你真正学懂、落地实践编译原理。



《编译原理之美》限时订阅福利


戳我订阅,输入优惠口令:bianyi666


到手价 ¥63,仅前 500 人有效


2019-08-15 11:268400

评论

发布
暂无评论
发现更多内容

QT软件系统的优化

北京木奇移动技术有限公司

软件外包 QT软件开发 QT软件外包

LED显示屏生产中的技术控制要点

Dylan

数字化 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

1月15日直播预告丨AI赋能指标管理分析 开启企业数智领航时代

袋鼠云数栈

JimuBI 积木大屏 v1.9.3 发布,免费可视化大屏

JEECG低代码

大屏设计器 免费大屏 开源大屏

用DevEco Studio性能分析工具 高效解决鸿蒙原生应用内存问题

最新动态

全域数据资产管理平台 | SimbaFabric

奇点云

大数据 AI 数据平台 大模型

为什么软件测试开发需要智能体(AI Agent)?

测试人

软件测试

腾讯二面:Redis与MySQL双写一致性如何保证?

王中阳Go

MySQL 高可用 面试问题 redis 底层原理

AI智能体在自动化测试中的应用

测吧(北京)科技有限公司

测试

一路相伴,非凸科技助力第49届ICPC亚洲区决赛

非凸科技

AI口语陪练APP开发的关键技术

北京木奇移动技术有限公司

英语学习 软件外包公司 AI口语练习

AIP智能体平台:重塑微服务治理的新时代

大东(AIP内容运营专员)

人工智能

信息安全运维审计系统是什么?英文怎么翻译?

行云管家

信息安全 运维审计 运维审计系统

通往强人工智能的道路:挑战与可能的突破点

天津汇柏科技有限公司

AI 人工智能

AIP智能体平台:重塑日常工作流程,提升团队效率

大东(AIP内容运营专员)

人工智能

赛果公布!有灵AOP平台首届编程挑战赛圆满落幕

网易伏羲

编程 aop 网易伏羲 AOP编程

QT跨平台系统的开发及特点

北京木奇移动技术有限公司

软件外包公司 QT外包开发 QT开发

京东商品视频API接口系列(京东API)

tbapi

京东API接口 京东商品视频接口

AI智能体(AI Agent)开发的技术难点

北京木奇移动技术有限公司

AI教育 AI智能体 软件外包公司

CAP:Serverless + AI 让应用开发更简单

阿里巴巴云原生

阿里云 云原生 CAP

不想当“螺丝钉”?先搞定编译原理_语言 & 开发_宫文学_InfoQ精选文章