codecamp

卷2:第5章 Glasgow Haskell编译器

上世纪九十年代,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如何保持庞大项目开发的活跃,而没有被自身的重量压垮,一个非常小型的开发团队一般要考虑哪些事情。

卷2:第4章 GDB
卷2:第6章 Git
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }