postgresql修炼之道第二版_程序员修炼之道领域语言

2019年11月份读了《程序员修炼之道》,看到第二章的领域编程时让我深受启发或者说感到震惊,书中提到:程序员应该学会发明针对问题的“小型语言”,而不是仅仅使用目前广为流传的 C、C++、Python、Java 等语言来解决问题。

29aaf4c5df06bc9b1764b4cc101753e4.png

而实现自己的语言当然就需要去写对应的编译器,这个编译器并不限于通常意义上的编译器,而是一个广义的概念。比如你写了一段“小型语言”代码,该代码你用 C 语言去解析并运行,这就相当于你用 C 语言实现了一个“高级语言编译器”。这里举个例子,CPyhton就是用C语言写的一个解释Pyhton脚本的解释器。当然如果你想实现功能强大一点儿的“小型语言“时,就需要懂得编译原理了。除此之外,书中还提到一些“编译器作品“,比如 BNF,yacc 等。

早年我曾经买了一本清华大学出版社的《编译原理》书,略翻了之后发现确实很难很难。所以之后也就放弃了学习《编译原理》。可是看到《程序员修炼之道》的这里,我有一种冲动,有朝一日自己可以编写一个属于自己的语言,这个语言不一定语法多完备、执行时间多快。但它却是针对某一问题领域的语言,可以让自己的工作效率大大提升。看到这里我又去网上搜索比较容易入门的编译原理书籍,找到了大家一致推荐的编译原理经典著作---龙书。

76e4cdc31f4b084b3471f531112d4cc6.png

对于开发自己的编程语言,我以前想都不敢想,认为这太困难了,这种事情都是大牛中的大牛干的事情。但看到这里,也许我仍然无法到达这一水平,但如果自己能具有这些大牛 1%的能力也是不错的,即使不能,了解编译的过程也是有益的,而且编译原理也是计算机专业学生的必修课程。

看《程序员修炼之道》本节的后面有一个问题:你目前项目的某些需求是否能以具体领域的语言表示?是否有可能编写编译器或转义器,生成大多数所需代码?

这个问题就让我想到ETAS 交付给我们 bootloader 程序,其中就有.prm 和.cnf 的文件,尤其是.prm 文件,该文件里定义了 boot 的下载流程,而这不就是针对 UDS Boot 领域的编程语言吗。同样,用于测试标定的 A2L 文件不也可以看做是一种针对测试标定领域的领域语言吗?

最后,推荐大家阅读下《程序员修炼之道》,因为我从中获益良多,相信你也会!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值