手把手带你写一门编程语言
宫文学
北京原点代码 CEO
7534 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
起步篇:让一门超简单的语言跑起来 (21讲)
结束语 (1讲)
手把手带你写一门编程语言
15
15
1.0x
00:00/00:00
登录|注册

课前热身|开始学习之前我们要准备什么?

你好!我是宫文学,欢迎来到《手把手带你写一门编程语言》的课程。
其实,你从课程题目就可以看出,我们这个课强调动手实践。所以在这一节课,我要给你介绍一下我们这个课程示例代码所采用的计算机语言,以及相关编程环境的搭建。这样,会方便你阅读、运行和修改课程的示例代码。
对于课程里用到的汇编语言、编译原理知识,如果你之前没有相关的经验,也不要担心。我会介绍一下我们这方面的设计思路,保证你通过这个课程会更快、更扎实地掌握它们。
通过这篇导读,你会对课程里用到的语言、工具、技术心里有数,以便更好地开启你的学习之旅。
好,我们先从使用的计算机语言和环境说起。

怎么快速上手 TypeScript 语言

我们这个课程的目标呢,是要实现 TypeScript 的编译器和各种运行时。既然如此,那么我就尽可能地用 TypeScript 来实现这个目标。
虽然我们这个课程主体的代码都是用 TypeScript 写的,但我正式使用 TypeScript 其实是从 2021 年 5 月份开始,也就是我开始准备这个课的时间。
我知道你肯定会问:用几个月的时间,既要了解 TypeScript,又要用 TypeScript 写自己的编译器,是不是太不靠谱了?当然,你可能也是因为要学习这门课程,第一次使用 TypeScript,所以我就分享一下自己的一些经验。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文是一门编程语言实践课程的导读,作者宫文学介绍了准备写一门编程语言所需的准备工作,并分享了他学习和使用TypeScript的经验。文章涵盖了TypeScript的环境配置、C语言的功能和配置、汇编语言的必要性以及编译原理的需求。宫文学强调了动手实践的重要性,并鼓励读者通过阅读资料和依靠经验直觉来快速上手TypeScript语言。此外,他提供了示例代码,并鼓励读者用自己顺手的语言重新实现。总的来说,本文强调了实践学习的重要性,为读者提供了开启学习之旅的准备。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 奋斗的蜗牛
    老师,可以讲解一下如何实现多个文件的编译吗,现在的资料都是讲怎么编译一个文件里面的代码

    作者回复: 通过git clone代码后,会有几个.json格式的配置文件,这就是用于支持多文件编译的配置信息。 另外运行npm i --save-dev @types/node后,会产生一个node_modules子目录,这样就能支持模块机制了。 这样就能支持多个文件(多个模块)的编译,并且也能引入node.js中自带的模块,实现文件读写等功能。 后面几节就逐步开始用多个文件了,因为一个文件显然放不下那么多的功能。

    2021-08-12
    2
    4
  • Why So Serious
    git clone之后失败了 这个是啥问题呀 老师 fatal: invalid server response; got 'version 1'

    作者回复: 可能是环境问题。 你进一下微信群?在课程的首页里有链接。 助教和其他同学可以帮助你分析一下。

    2021-08-13
  • 有学识的兔子
    这门课我们有学习社区或者微信群吗?

    编辑回复: 有的!在课程简介下面,有提示加入交流群的链接,加一下小助手的微信会自动拉进群~

    2021-08-12
  • 彩色的沙漠
    老师里面的Token字符串生成是用那个库吗?上面的代码对Token的结构不清楚

    作者回复: 没太明白您的意思。 没用哪个库,都是自己手写的代码。

    2021-08-10
    2
  • ifelse
    加油,奥利给
    2022-09-08归属地:浙江
    1
    2
  • 阿特吾组撒
    windows64位可以参考这篇http://www.manongjc.com/article/23844.html
    2021-09-01
  • 俞嘉彬
    努力学习中!
    2021-08-27
  • 我是深入学习 typescript 来的,typescript 的类型系统太强大了
    2021-08-13
  • qinsi
    看了后面的代码似乎明白这里为什么要提一句类型断言。比如第一课里有这样的代码: ```typescript if (typeof (x as FunctionDecl).body === 'object'){ retVal = this.visitFunctionDecl(x as FunctionDecl); } ``` 这里是根据object的形状来判断object的类型,可以说是手动实现了duck typing。由于需要检查object的属性,所以用上了类型断言。但因为检查的都是实际的AstNode,所以可以直接用instanceof type guards: ```typescript if (stmt instanceof FunctionDecl) { retVal = this.visitFunctionDecl(stmt) } ``` 可以看到一旦通过了type guard (if instanceof),对象的类型就被确定下来了,后面(传参等时候)无需再用类型断言。严格来讲,类型断言只是在“编译”时告诉编译器,“我很确定把这个对象当成这个类型用没问题,不用给我报错”。而把类型检查放到“运行”时的是type guards。
    2021-08-13
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部