from: http://blog.tianya.cn/blogger/post_read.asp?BlogID=149890&PostID=6636235
从开始接触实验室的项目以来,发现很难将不同人写的程序集成到整体框架中。部分原因是由于背景知识欠缺,有时竟完全不了解他人的算法机制,以及加上写程序时时间较紧,也不能完全按照公司开发要求一样严格,因此注释和文档较少。并且面临人员更替,带来一个无法避免的问题:同一个功能部件的下一个版本会让其他人开发。
如果说这些都只是局部问题,那么整体问题就更加令人头痛。由于每个人的编程风格不同,命名变量也没有要求,常常在同一个命名空间中,大家定义相同的全局变量名或者函数名,让集成变得更加复杂。如果某两个部分处于紧耦合,问题就更麻烦,几乎可以说结构,指针满天飞,中间文件遍地跑。重复的处理字符串的代码加大了调试的困难。以及在整体集成时,与图形界面的嵌入,程序运行的时序上,都有很大的困难,随着程序开发进入后期,对一个整体的数据库要求,以及对一个能够把不同拼图块组合成一幅整体图画的工具的要求越来越强烈。
对于目前EDA软件来说,专用的物理器件数据库一直是大家广为关注和研究的部分。而解决后者,现在比较推崇的方法,来自我认为的EDA之父-John Ousterhout的杰作。关于其人其事,实在令人敬佩,很多EDA软件的高效率数据结构,算法的设计都出自他的论文。同时他也领导自己的研究小组开发了很多著名的IC交互设计工具,开源的Magic就是其中一个典型。研究开发后期,发现开发一种嵌入式命令语言越来越重要。于是开始开始从事创建一种优秀的解释型语言。与C,java不同的是,他是一种脚本语言,而非一种系统程序设计语言。
与系统程序设计语言相比,不同的脚本语言为不同的工作而设计,这导致了语言间的根本不同。系统程序设计语言为建立数据结构和算法而创建。相反的,脚本语言为连接而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件间的联系,并提供快速应用开发。
如果将这两种语言- 脚本语言和系统程序设计语言,组合起来,取长补短可以得到更强大的系统。并且目前大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。
然而,速度更快的机器,更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展等发展趋势大大提高了脚本语言的应用。随着计算机性能的不断提高,越来越多的系统完全使用脚本语言。系统程序设计语言将主要用来创建应用程序组件。