chibi-scheme 源码阅读2

新的一年来了,打算赶紧把去年没做的事情都填了吧。

于是就想起了这篇文章,还有那篇孤苦伶仃的Gentoo安装:我的Gentoo都已经换成了Arch系统了,结果那篇讲述如何安装的还没有写完。

不过还是先把这篇完成好了。这个当时弃掉的原因是因为发现了有比自己总结做得更好的版本了: 我是在这里看到的作者遗留的博客。我觉得讲得实在比我的要好得多,也专业的多了。这里不要脸的还是再过一遍吧。

这里重新介绍的是编译原理。作为一门刚刚在期末考试两天一学期学完的课程、恰好也是一种复习吧。

阅读全文

peterson算法随想

今天终于考完了试。打算补一下博客之类的,想起来复习操作系统的时候,在选择一个进程进入临界区的时候有个算法叫Peterson算法,感觉理解起来非常好玩,于是打算在这里介绍一下我的理解。

阅读全文

2017年终总结

2017 年终总结

阅读全文

旅行商问题-模拟退火法和爬山法

模拟退火法和爬山法都是启发式算法,也就是说,他们的目的不在于寻找最优解,而是在寻找最优解和成本之间找到平衡。这适用于一些计算机难解问题。比如说旅行商问题。

阅读全文

数值线性代数1

今天晚上突然被人提到一下,然后就想起来了。原来我还可以翻译姐姐的博客来着。这一篇来自这里,是介绍的LU分解。

阅读全文

Clojure解析数学表达式(优先级)

这两天大概写完了编译原理大作业。于是用一些博客来记下来里面用了哪些东西。其实里面根本没有用到什么高深的技巧,好像就是一路顺下来就写完了;唯一有些弯弯绕绕的地方就是解析数字的parser了。

这在之前也已经写过了,那是一个Lisp语言的解析数学表达式的东西,只是在Lisp中数学表达式的写法是自带语法树的,在对于普通的数学表达式的时候,由于有了优先级的限制,这个就显得很麻烦了。

阅读全文

Lexer的Clojure实现

编译原理的大作业是写一个简单绘图语言的编译器。我打算用lisp来写这个东西,于是还是我熟悉一点的Clojure就好了,其中遇到了很多麻烦的事情,有很大一部分是不熟悉Java的API,然而当时在写的时候,旁边是写安卓的Boiler Yao强者。这里就记一下遇到的别的问题好了。

这篇是记录完成lexer的过程。因为实现比较简单,打算连着Clojure建立项目的部分一起在这里总结一下。

阅读全文

Linux 4.x 添加系统调用

学校学习操作系统,上机使用的环境是Ubuntu 10.4,内核上也就是Linux 2.6,但是现在Linux内核版本已经4.x了啊喂。主要更难过的是,上机给的示例代码在4.x的机子上根本就没法运行,因为系统调用的接口已经变了。就这样我也就忍了,自己找找新的接口定义也就完了。

结果接下来要求添加一个系统调用,这回好了,添加系统调用的文件夹直接就不存在。到网上去找也是各种最高才到3.x的教程,简直没有办法能做下去,幸而再后来还是找到了一两篇中文的教材,没至于沦落到啃英文手册的地步,不过看来自己是非总结一下不可了。

阅读全文

chibi-scheme源码阅读1

某学校编译原理讲课重点集中在编译器的前端,也就是文法分析、语义分析什么的上面,讲得实在繁琐,感觉自己更想去接受语法纯粹一点的Lisp。

同时也是非常好奇,Lisp的编译过程是怎么实现的呢,于是就决定读一下Lisp的源代码。

阅读全文

lisp解释器实现 (3)

讲述如何实现匿名函数。

阅读全文