上世纪九十年代,Glasgow Haskell编译器(诞生于格拉斯哥[Glasgow]大学)开始时作为英国政府资助的学术研究项目的一部分,有着如下几个计划目标:
- 可以免费获得的,健壮且可移植的Haskell编译器,能够产出高性能的代码
- 模块化设计,便于其他研究人员扩展和开发
- 让人学习真实程序如何运作,来设计和构建更好的编译器
GHC有了20多年的历史了,从诞生之日起,他的开发一直保持着活跃的状态。今天,GHC发布后会被成千上万的人下载,在线的Haskell library仓库中包的数量超过了3000。许多大学课程中使用GHC进行教学,商业使用GHC的案例也在不断增长。
整个GHC的开发历史中一般大约有2到3个活跃开发者,尽管提交代码的人成百上千。对于作为GHC开发者的我们,最终的目标是研究而不是代码,但开发GHC有个核心的前提:研究成果要回馈给GHC,这样利用GHC可以基于之前的想法进行下一步的研究。此外,GHC具有工业强度的品质也很重要,他可以让GHC的研究成果具有更高的可信度。所以虽然GHC充满前沿的想法,但我们付出很大的努力,让其可以在产品中可靠地使用。虽然研究和产品使用这两个方向看起来有强烈冲突,但我们找到可行的方法,让两方面都有获益。
在此章中,我们会描述GHC的总体架构,关注那些使GHC成功的关键想法,还有一些不如意的地方。希望你能够在下面的讲述中学到在20多年的开发GHC如何保持庞大项目开发的活跃,而没有被自身的重量压垮,一个非常小型的开发团队一般要考虑哪些事情。
- 前言(卷一)
- 卷1:第1章 Asterisk
- 卷1:第3章 The Bourne-Again Shell
- 卷1:第5章 CMake
- 卷1:第6章 Eclipse之一
- 卷1:第6章 Eclipse之二
- 卷1:第6章 Eclipse之三
- 卷1:第8章 HDFS——Hadoop分布式文件系统之一
- 卷1:第8章 HDFS——Hadoop分布式文件系统之二
- 卷1:第8章 HDFS——Hadoop分布式文件系统
- 卷1:第12章 Mercurial
- 卷1:第13章 NoSQL生态系统
- 卷1:第14章 Python打包工具
- 卷1:第15章 Riak与Erlang/OTP
- 卷1:第16章 Selenium WebDriver
- 卷1:第18章 SnowFlock
- 卷1:第22章 Violet
- 卷1:第24章 VTK
- 卷1:第25章 韦诺之战
- 卷2:第1章 可扩展Web架构与分布式系统之一
- 卷2:第1章 可扩展Web架构与分布式系统之二
- 卷2:第2章 Firefox发布工程
- 卷2:第3章 FreeRTOS
- 卷2:第4章 GDB
- 卷2:第5章 Glasgow Haskell编译器
- 卷2:第6章 Git
- 卷2:第7章 GPSD
- 卷2:第9章 ITK
- 卷2:第11章 matplotlib
- 卷2:第12章 MediaWiki之一
- 卷2:第12章 MediaWiki之二
- 卷2:第13章 Moodle
- 卷2:第14章 NginX
- 卷2:第15章 Open MPI
- 卷2:第18章 Puppet part 1
- 卷2:第18章 Puppet part 2
- 卷2:第19章 PyPy
- 卷2:第20章 SQLAlchemy
- 卷2:第21章 Twisted
- 卷2:第22章 Yesod
- 卷2:第24章 ZeroMQ