写点什么

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

  • 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:268531

评论

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

宋红康2023版Java视频发布

小谷哥

面试官:谈谈你对JVM内存结构的理解

Java JVM

Svelte框架结合SpreadJS实现表格协同文档

葡萄城技术团队

特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】

汀丶人工智能

人工智能 自然语言处理 知识图谱 2月月更 2月日更

再获权威认证!秒云顺利通过ISO20000、27001双系统认证

MIAOYUN

ISO9001 ISO20000 ISO27001

Java培训有哪些不同的学习方法

小谷哥

关于使用消息队列今天被面试官问倒了

秒云加入金兰组织,携手共建信创新生态

MIAOYUN

信创 信创云 信创产业 金兰组织

前端培训学习方法有哪些

小谷哥

啊啊啊!小程序小游戏也可以在自己的App上架❗️❗️

没有用户名丶

微信小程序 小程序游戏

软件测试/测试开发 | 网页 frame 与多窗口处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试

MRS+LakeFormation:打造一站式湖仓,释放数据价值

华为云开发者联盟

大数据 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

fabric.js开发图片编辑器的细节实现

秦少卫

架构 编辑器 Fabric.js 前端编辑器

TDengine 3.0.2.5 查询再优化!揭秘索引文件的工作原理

TDengine

数据库 tdengine 时序数据库

IoTLink 版本更新 v1.5.2

山东云则信息科技

物联网

实战分享,电路板设计后这样干,一个人也能轻松搞定项目!

华秋PCB

PCB PCB打样 PCB设计

软件测试/测试开发 | web 控件的交互进阶

测试人

软件测试 自动化测试 测试开发 Web自动化测试

只用了半个Redisson的Semaphore实现并发控制

Java 并发控制 Semaphore redisson

安势信息入选 SegmentFault思否「2022 中国新锐技术先锋企业」

安势信息

软件成分分析 清源CleanSource SCA 安势信息 技术先锋 SegmentFault

安擎董事长俞跃渊:打造智能算力,创新产业价值

科技热闻

大数据培训零基础的方法有哪些

小谷哥

模块6如何设计微服务架构

程序员小张

特定领域知识图谱融合方案:学以致用-问题匹配鲁棒性评测比赛验证【四】

汀丶人工智能

自然语言处理 知识图谱 2月月更 2月日更 实体对齐

由浅入深,聊聊OkHttp的那些事(很长,很细节)

Petterp

android okhttp

软件测试/测试开发 | Web 控件定位与常见操作

测试人

软件测试 自动化测试 测试开发 Web自动化测试

大数据培训学习选择哪个机构好

小谷哥

Sentinel 是如何实现分布式限流的?

sentinel 分布式限流

如何快速实现多指标计算

jiangxl

新年伊始,谈谈开源软件供应链安全的新趋势

安势信息

开源软件 清源CleanSource SCA 安势信息 ChatGPT 开源软件供应链安全

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

Java Spring Boot 接口

嵌入式ARM设计编程(一) 简单数据搬移

timerring

arm

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