求推荐 python 写的数据库和编译器项目

2015-08-04 12:49:23 +08:00
 wowpanda

之前简单的写了一个很简单的解释器,大概能实现函数和类。因为不是很懂编译原理,所以想找一个python写的编译器,完完整整的学一下,争取最后自己做出来。
另外,我对数据库实现似乎挺感兴趣,也写过简单的key-value型的,这是硬着头皮写的,连野路子都算不上,所以还是想看看“正宗的”数据库是怎么实现的。

ps: awesome-python上面有类似的项目,但是感觉可读性不是很好,有些也挺复杂,目前能力肯定不够。
所以求大神们推荐一些源码易懂的项目:)
求轻喷^_^

3856 次点击
所在节点    Python
18 条回复
liprais
2015-08-04 13:09:50 +08:00
看看sqlite
wowpanda
2015-08-04 14:39:14 +08:00
@liprais sqlite似乎是C语言写的呀,我想要的是纯python写的
em70
2015-08-04 14:46:39 +08:00
python不适合做编译器啊,自身太高级了,需要环境很苛刻,有这环境人家为啥不直接用python呢.
wowpanda
2015-08-04 15:02:10 +08:00
@em70 这跟自身高级不高级没有一分钱的关系
cute
2015-08-04 15:06:05 +08:00
douban之前开源过一个用python写的数据库
em70
2015-08-04 15:09:29 +08:00
@wowpanda 这样没有实用价值啊,所以不会有优秀的项目给你参考
wowpanda
2015-08-04 15:34:05 +08:00
@能具体点么?啥名字?
wowpanda
2015-08-04 15:35:09 +08:00
@em70学习练手用啊,不一定要啥实用价值啊
ss098
2015-08-04 15:40:46 +08:00
fghzpqm
2015-08-04 16:17:09 +08:00
用 Python 写的编程成 Python 字节码的编程语言 Mochi: https://github.com/i2y/mochi
nalaginrut
2015-08-04 16:57:28 +08:00
@wowpanda 用高级语言写编译器并不少见,只有写工业级别的编译器才不得不用C改写,这几年又往C++靠拢。但即便如此,绝大多数语言的编译器都拥有bootstrapping这个装逼特性(虽然没什么卵用,但编译器作者普遍认为没这个就不好意思在圈内拿出手),简单来说就是能用自己编译自己,所以它们实质上都用自己(许多是高级动态语言)实现了自己的编译器。
工业级别的编译器(gcc/llvm)几乎是无法用于入门的,你可以参考这个python的项目:
http://parsingintro.sourceforge.net/
也可以看看MAL,用各种语言实现一个bootstrapping的Lisp方言,里面有Python的实现:
https://github.com/kanaka/mal
zonghua
2015-08-04 18:59:48 +08:00
pypy
paulw54jrn
2015-08-04 19:37:55 +08:00
@zonghua
pypy +1
wowpanda
2015-08-04 20:31:27 +08:00
@nalaginrut 谢谢推荐,我尽量啃下来。
ps:不一定是要工业级的编译器啊,能学习用的就好。我就是想用python写个编译器,但是资料貌似少了点。^_^
wowpanda
2015-08-04 20:37:07 +08:00
@zonghua pypy是不是复杂了点
jsyangwenjie
2015-08-04 20:41:18 +08:00
@wowpanda http://norvig.com/lispy2.html
python 写一个lisp解释器,够用了
nalaginrut
2015-08-05 11:43:59 +08:00
@wowpanda 就是告诉你不要碰工业级编译器...
slideclick
2015-08-05 14:18:40 +08:00
工业级的,去clojure的代码里,有个python实现的clojure.这是clojure官方链接过去的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/210669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX