孟岩ID:myan
1629384次访问,排名8好友1人,关注者64
总是在思考存在的问题
myan的文章
原创 147 篇
翻译 0 篇
转载 3 篇
评论 5244 篇
最近评论
chengen81284493:很专业的一篇文章 非常的好 受益匪浅
jksharp:看的迷糊,我才做了一年的程序员,啥都学,我也很专业做的一门,难啊,老板啥都要我做,想写点程序都难,唉,今天要你配下服务器,明天叫你修改下数据库的数据,难
rawa459:补充几句,lua使用一个c语言的子集实现,没有发现枚举(较新版本的C才支持)、动态数组(C99才支持)等,就是这样一个c语言实现了足够强大的功能,我觉得比不上作者,作者是大学教授,并且有一个工作小组。什么时候国人学会平静对待C语言,不要那么浮躁不要那么张扬我们的教授级别的人物也能写出这样的东西,个人不喜欢C++,C和C++从最新的标准看已经决裂。C能够直接实现面向对象编程了,加上一些辅助库可……
rawa459:http://www.codingnow.com/2000/download/The%20Implementation%20of%20Lua5.0.pdf
看看此书,就知道lua的过人之处,本人也在写编译器,始终不敢碰基于寄存器的虚拟机,还是传统的基于堆栈的虚拟机。一个新语言,一个解释器不是很难,关键你要有过人之处,lua的函数闭包、协程、基于寄存器的虚拟机、关系表都是它的过人之处……
rawa459:http://www.codingnow.com/2000/download/The%20Implementation%20of%20Lua5.0.pdf
看看此书,就知道lua的过人之处,本人也在写编译器,始终不敢碰基于寄存器的虚拟机,还是传统的基于堆栈的虚拟机。一个新语言,一个解释器不是很难,关键你要有过人之处,lua的函数闭包、协程、基于堆栈的虚拟机、关系表都是它的过人之处,……
文章分类
收藏
    相册
    测试
    友情链接
    老赵的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 总结成功应用软件的一个经验收藏

    新一篇: .NET面临信任危机,根源在于目标模糊 | 旧一篇: 又买美国飞机了,七十二亿美金

    纵观80年代以来的成功应用软件,凡是获得长久成功者,绝大多数具有如下特点:

    以一种系统语言(通常是C/C++)于OS API之上提供一高层的应用程序运行时(runtime),包括一个高层次、面向应用进行语义优化的虚拟机,一个庞大的应用程序级API库(基于普通过程的函数库,或基于OO的类库,或基于component的构件库),一个具有可扩充性的软件体系架构(尤以插件式结构或面向应用的framework为典型),以及,最理想地,一个面向应用的语言引擎。整个应用以系统语言与应用级语言共同完成。扩展时主要使用应用级语言,亦可使用系统级语言,无论哪种,都必须依赖一个扩展框架。

    且看一些例子:

    1. Emacs,以C开发内核,并实现elisp解释器,可用C及elisp实现原子函数。整个程序用C及elisp共同完成,并可以任一种方式进行扩充。

    2. AutoCAD,以C/C++开发内核,实现AutoLISP,整个程序用C/C++及AutoLISP共同完成,可用C/C++/AutoLISP/VB扩展。同样来自Autodesk公司的3D Max亦装备有Max脚本。

    3. Mathematica,以C开发内核,实现Mathematica语言,整个程序用C及Mathematica语言共同完成,主要使用Mathematica进行应用开发。

    4. Matlab,以C/C++开发内核,实现Matlab语言,整个程序用C/C++及Matlab语言共同完成,主要使用Matlab进行应用开发,也可使用C/C++/Fortran进行扩展。

    5. Microsoft Office,基于COM体系,C/C++编写核心模块,VB负责整合,并提供VBA供应用开发。

    6. TeX,Pascal编写核心解释器,以宏扩展的方式开发高层系统。

    还有如SAP、Perl、Python此类例子数不胜数

    此种思路,屡获成功,实当为我辈悉心模仿。其核心难点有二,一是runtime的设计,动态性的实现,framework之权衡(需要面向应用,全如Eclipse那般灵活,对于特定应用领域而言并非最优),对底层计算平台的抽象(真正成熟的网络应用开发,应当将网络透明化);二是应用级语言的设计与实现,设计是关键,也是中国程序员之最弱点,

    面向应用的高层语言的设计,相当于机械工业中的大型成套设备制造,是主干行业,核心技术。要设计出好的应用语言,要求设计者一通系统程序设计技术,对解释器的及其与系统的交互、扩展的实现技术非常熟悉,二要深刻理解程序设计语言理论,精通形式语言理论及语言发展历史,能不受困于20年来的主流思想,以最自然的方式提供所需语义,三是要熟悉应用领域,为设计提供方向引导。目前国内的教育体制及浮躁气息,很难培养出如Larry Wall这样的大师。

    .NET CLR提供了上述所需的具动态性的runtime,FCL提供了完备的支持库,这就使我们开发高质量应用程序的难度大大降低。但是VB和C#就应用开发来说,层次还显得稍低。下一步应当是提供类似Python那样的动态语言。.NET平台上的动态语言是什么样子?有两种可能,一是把Python直接移植过来,我相信这是一定会发生的事,但是就微软官方来说,它会采取另一条路,那就是直接把C#和VB脚本化。而我估计在这一过程中,VB会优先。

    最终我们会走向特定于领域的语言,我觉得这方面的一个典范是Mathematica,

    发表于 @ 2005年01月30日 19:00:00|评论(loading...)|编辑

    新一篇: .NET面临信任危机,根源在于目标模糊 | 旧一篇: 又买美国飞机了,七十二亿美金

    评论

    #于剑秋 发表于2005-02-02 12:45:00  IP:
    TrackBack来自《总结成功应用软件的一个经验》

    Ping Back来自:blog.csdn.net
    #Lyons 发表于2005-01-31 23:38:00  IP: 218.89.21.*
    这篇文章读起来就像听 Bach 《赋格的艺术》——嘎然而止:)
    #johnkuang 发表于2005-02-02 09:24:00  IP: 218.80.198.*
    我用的软件不下千种,您说得我只用过两种,但我觉得,一千种里面至少有300种是成功的,大多数也没有符合您所说的特征.
    #ctdeng  发表于2005-02-01 21:18:00  IP: 218.65.102.*
    要是谁能把当前主流软件的开发过程和采用的技术都记下来写成书那就好了,除了上面提到的还有像:SAS、SPSS、ORACLE、SQL2000、WINDOWS、……………………
    #PigArk 发表于2005-02-01 22:41:00  IP: 218.197.131.*
    言之有理。
    “目前国内的教育体制”,当列第八宗罪;上下弥漫之“浮躁气息”,当列第九宗罪。
    #firingme 发表于2005-02-04 23:37:00  IP: 220.170.91.*
    myan不知道读过《高级Perl》编程没有?那本书的前言谈了这个问题和很多相关的问题,我觉得说得非常好。
    #007pro 发表于2005-02-04 17:48:00  IP: 218.106.222.*
    比尔,安德鲁,拉里都没上完大学,所以"目前国内的教育体制”的说法在下颇不以为然,如果教育可以解决,中国在500年前就发明原子弹了,所以什么都不下功夫去探究,去实证,想当然的发意见,这恐怕才是我们脚步慢的根源吧.
    #YRJ 发表于2005-02-22 17:36:00  IP: 219.134.29.*
    National Instruments LabVIEW 也是如此啊
    #hillg 发表于2005-02-23 12:54:00  IP: 61.51.231.*
    孟岩兄,好难得看到你的大作。能不能象keso的blog对牛乱弹琴
    http://www.365key.com/keso
    http://www.donews.net/keso
    那样,keso每天出IT新闻摘录,孟岩每周出个你所关注领域的技术新闻,我想,对推动国内技术前瞻力和技术敏感度肯定是大有好处呀,

    呵呵,建议大家一起来Re
    #韩磊 发表于2005-03-06 00:45:00  IP: 221.217.35.*
    keso是以网络为家的人,谁能跟他比啊……
    #刘典 发表于2005-09-18 15:20:00  IP: 211.100.21.*
    孟老师的观点我也有同感,不同的领域都有自己的原语,虽然这里是“原语” 但是和通用计算机语言比起来他们不知道还要高级多少。如果用这些通用语言直接去构建具体领域的应用就象在用沙子直接盖大楼,最后的结果费工费力,质量还无法保证,如果我们把沙子制作成砖或者更大的基本模块去盖楼就会容易很多了。不知道孟老师是否读过《计算机程序的构造和解释》里面有一章叫“元语言抽象”说的也是这个道理,基本意思是我们要解决一个问题的时候要先创造关于这个问题的专用语言,然后用专用语言解决之。
    我在最近的项目的设计工作里就使用了这种思想, gui部分、业务部分、报表打印部分都就自己的专用语言,然后用这个语言构建起整个应用,我公司以前一个类似的项目用了20万行的代码,这个项目更大一点却只用了2万行代码,而且应付变化的能力远强于以前的项目。
    不知道国外有没有关于这种方法论的著作,孟老师翻译一下^_^
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 孟岩