欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Re: 静态类型语言的优势究竟是什么? D语言RubySmalltalkCC#

程序员文章站 2022-03-14 19:02:08
...
这是参与论坛讨论而写的回帖,被评五星了,哈哈,Re: 静态类型语言的优势究竟是什么?
            
    
    
        D语言RubySmalltalkCC# Re: 静态类型语言的优势究竟是什么?
            
    
    
        D语言RubySmalltalkCC# Re: 静态类型语言的优势究竟是什么?
            
    
    
        D语言RubySmalltalkCC# ,故收入博客。

原来的讨论贴在此:http://www.iteye.com/topic/33971http://www.iteye.com/topic/33890

原来那个讨论的帖子我也仔细读了,也参与讨论了,觉得原作者的很多观点都似是而非。基本上是用过去的眼光来看问题。

现在的主流商业系统是由C++, java, C#这些主流语言写的,那是有历史多年形成的原因,技术本身这些语言和Smalltalk,ruby有什么优势? 用Smalltalk,ruby实现DSL容易多了。有下列原因造成了java, C#这些主流语言的成功:

1. 这些语言容易学,它们缺少高级的语言构造而使语义简单多了,不信去翻翻operation semantics和denotation semantics的书去,用operation semantics去分析这些语言不难,用denotation semantics去分析functional language就难多了。软件行业总的来讲还是缺人的,一大堆菜鸟在这个行当里当Coder,需求又这么大,找十个菜鸟用java上百上千行敲出来,比找个高手10行搞定还是容易的。

2. 高级语言需要高级的编译器,需要更快的计算机。比如说常规的递归,每次呼叫要生成新的Stack Frame,比iteration要慢,更耗费资源,后来出了个tail recursion, compiler/interpreter自己就可以解决这个问题了。写个factorial(x), return x==0?1:x*factorial(x-1); 一行搞定,底下让compiler自己生成goto去,比写iteration省事吧。用高级语言写,性能就会损失,我开始学C的时候那时还讲究怎么在关键地方用汇编提高效率,后来学C++还有人讨论C++的vtable太耗内存,java刚出来时的性能讨论,我就不用说了。现在随着编译器的进步,计算机速度的提高,在商业系统里都不是问题了。要用发展的眼光看问题,而不要用过去的眼光看问题。

说什么复杂的业务逻辑,商业系统技术上复杂个屁,再复杂能复杂过NP Complete?世界上有两种问题,一种是数学上有解的,一种是数学上暂时无解的,数学上暂时无解的就别干了。

商业系统的复杂在于组织上交流的困难,一个大公司,内部有个人能把商业流程搞得一清二楚就不错了,这个人还能把过程给软件人员讲清楚那简直是可遇不可求的事。这样用ruby反而有优势了,可以快速开发,促进交流,开发出个模型出来给商务人员看看,用用,自然交流起来就容易多了。

现在一个开发人员的开发效率比以前高多了,主要原因是因为开发语言和编译器的进步,这个趋势,只会继续下去,不要抱着过去的教条不放,java也是在不断改进的,加了reflection, 加了assert,加了泛型,下个版本,也要加脚本支持了。

未来是创造出来的,Hibernate打垮了CMP,Spring打垮了EJB,软件业的无穷魅力就在于有台计算机,别的都掌握在自己手里,现在动态语言的短处,慢慢都可以克服。

学习用新的思维去解决问题吧。