上世紀九十年代,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