生命不息,折腾不止。
最近感觉Linux越用越顺手了,尤其是Linux下的shell(此处可以特指一下目前正在用的zsh…)甩了Windows的cmd好多条街。
我平时在Windows下也经常用命令行,之前装了个Git for Windows之后,里面自带的ls/ssh/grep等等基本上已经成了我Windows下常用的命令了。
以前没怎么注意,昨天看了下Git for Windows本身就是用MSYS环境搭的,想想干脆装一个完整的MSYS2好了。
生命不息,折腾不止。
最近感觉Linux越用越顺手了,尤其是Linux下的shell(此处可以特指一下目前正在用的zsh…)甩了Windows的cmd好多条街。
我平时在Windows下也经常用命令行,之前装了个Git for Windows之后,里面自带的ls/ssh/grep等等基本上已经成了我Windows下常用的命令了。
以前没怎么注意,昨天看了下Git for Windows本身就是用MSYS环境搭的,想想干脆装一个完整的MSYS2好了。
在Windows下,或是像Ubuntu、Arch这些拥有出色的软件包管理器的Linux发行版下,似乎从来都是不需要怎么考虑如何安装Gcc的问题。几个键就好了。
有一天,需要在没有root权限、然后还不能用包管理器的情况下安装Gcc时,就可能遇上各种奇怪的问题。
“你最喜欢的Linux发行版是什么?不要跟我说是Ubuntu。”
“额…用过的不多,就是Ubuntu了。”
然后就被安利成功了……
开始在USTC求学的生活。 少年你想要力量吗?
花了点时间,终于把PL/0整个编译器的源码分析了一遍,接下来就是上手对这个编译器进行改造的过程了。
我决定首先尝试将PL/0编译器的源码从C转到C++上,然后划分成多文件,再准备开始改。先从课设作业要求开始,最终的目标是完成PL/0的完整文法支持。
已经完成的部分我用删除线在下面标出来。
在github上开了个仓库,准备存放改写后的代码,以及用于记录整个过程:
https://github.com/jcf94/pl0_compiler
下面先看一下拓展后的PL/0文法。
半路起步,继续学习编译原理ing,龙书还在继续看。我向来推崇学习时理论与实践结合,这本书现在带给我最大的感受是:我急于尽快掌握构建技术,而书上大篇幅介绍的还是词法、文法等理论知识,感觉我静心学习的耐心正在耗完中。
唉,这就是没系统上过课的悲剧,虽然知道不打好基础贻害无穷,但是还是决定上手做点实践。希望在实践中能够对编译原理有更多的理解。
这里要感谢挚友Bigballon同学以前分享给我的一份学习资料。他是软件系科班出身,对编程有着自己的理解。于是决定参考他写的一篇课程设计心得《从PL/0到Flex》尝试PL/0编译器的改写。
一套强大的文档排版系统。
拖了快半年了,终于把《硬件/软件接口》过完了,第一遍看的比较粗略,也深深地意识到深入学CPU的难度之大T_T,回来先把编译原理的坑给填了吧Q_Q。
课后答案:http://dragon-book.jcf94.com/
官方主页:http://dragonbook.stanford.edu/
逛知乎的时候看到这么个问题:
其中有个答案提到了一种计算浮点数的平方根倒数的快速算法,其实我以前就曾经思考过大数平方根的计算方法,然后…就没有然后了。
神奇的地方在于这个快速算法中有个诡异的常数,据说至今没有人知道它最早是怎么来的。