读编译原理感想

最近在看Java虚拟机方面的资料,了解Class文件格式,同时还了解到数据运行时的一些流程。但是读到CAS、编译优化等技术时,有点迷茫,继续找操作系统原理、编译原理等书籍看看,了解到互斥、中继、汇编、机器代码、硬件指令集等。一个应用程序从编写到编译生成中间代码再到硬件上通过硬件指令集运行,每一个步骤都可以实现优化。这中间编译器起着承上启下的作用,可以操作空间非常大,它既可以静态生成中间代码,还是在运行时完成编译,既可以通过解释器完成硬件无关的代码,也可以生成与硬件有关的指令集。遂想看看编译原理(读书时候都去放牛了)。

读了龙书前面2张,全是数据结构方法的知识,想当初自己抱着一本C语言数据结构看了半年多(自学),开篇就讲什么运行复杂度,一脸懵逼。硬着头皮看到后面遍历数组、链表或指针树,如深度优先和广度优先遍历,再就是前序遍历和后序遍历。还了解到队列和栈的区别。后面讲到表达式,中缀表达式后缀表达式。当时这些都是满脑子疑惑,这些有什么用,想着可能就是锻炼抽象思维吧。

看到运行时刻环境章节,关于如何分配内存,再回看JVM运行时数据区,其实就是编译原理中的章节内容。

当时互联网也没有这么发达,买一本数据结构啃了半年也没有地方查资料,稀里糊涂的学着,至于为什么学数据结构还是一位学长说对编程有帮助。后来真正开始编程,从.NET到Java,更多是业务层面的逻辑处理,很少接触所谓原理性的东西。偶遇程序需要优化,如数据库索引如何构建索引需要了解B+树遍历原理;如需要用数组或链表方式实现一个队列等等。程序中的后缀表达式和计算机位操作用补码应该都是为方便计算机操作的方式。

现在回想起来,当初学这些知识时候应该大胆找一些师兄聊聊,这些抽象枯燥的东西到底有啥用。自己后来走上编程这条路,工作之余应该好好补一些基础知识。

 

 

 

参考:

关于后缀表达式和中缀表达式的思考

Java中的位操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值