`
bigpanda
  • 浏览: 109198 次
  • 性别: Icon_minigender_1
  • 来自: 斯德哥尔摩
文章分类
社区版块
存档分类
最新评论

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

阅读更多
这是参与论坛讨论而写的回帖,被评五星了,哈哈,   ,故收入博客。

原来的讨论贴在此: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,软件业的无穷魅力就在于有台计算机,别的都掌握在自己手里,现在动态语言的短处,慢慢都可以克服。

学习用新的思维去解决问题吧。
分享到:
评论

相关推荐

    Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能高可用Key-Value嵌入式事务数据库。

    以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以...

    在您现有的babel项目中编写ReasonML和Bucklescript

    **标题解析:** "在您现有的babel项目中编写ReasonML和Bucklescript" 这个标题指出我们将讨论如何在已有的Babel配置中整合ReasonML和Bucklescript,这两个是与JavaScript紧密相关的静态类型编程语言。 **描述分析:...

    python面试题

    到底什么是Python? Python是一种高级、通用的解释型编程语言,以其易读性和简洁的语法著称。它支持多种编程范式,包括面向对象、命令式、函数式等。 #### 33. 补充缺失的代码 此类题目通常要求根据已有的代码...

    Reverse C++ (逆向 C++)

    为什么选择静态分析的方式?** - **静态分析**:静态分析无需实际运行程序即可分析代码,这对于逆向工程来说尤为重要,因为它允许工程师在安全环境中分析潜在的恶意软件。 - **动态分析**:相比之下,动态分析虽然...

    python学习笔记第二版

    - **7.4 方法**:说明实例方法、类方法和静态方法的区别。 - **7.5 继承**:讲解继承的基本概念及其带来的好处。 - **7.6 开放类**:介绍如何动态地修改类的行为。 - **7.7 操作符重载**:解释如何通过特殊方法...

    reverse c++

    2. **现代应用程序的发展:** 随着软件复杂度的提高,C++因其强大的功能和性能优势而被广泛采用。逆向工程师需要具备相应的技能来分析这些复杂的C++应用程序,以便发现潜在的安全漏洞或实现合法的逆向工程目标。 3....

    Python3.7.1最新版(完整系列)

    - Python3.7.1进一步支持静态类型检查,增强了对类型注解的处理,有助于提升代码的可读性和可维护性。 4. **上下文管理器(Context Managers)**: - 新增`__enter__`和`__exit__`方法的返回值处理,使得在`with`...

    python-3.8.10-amd64.rar

    - **改进的类型注解**: 更强大的类型提示功能,支持对变量、函数和类进行更详细的类型声明,增强了静态类型检查的能力。 - **优化的内置函数和标准库**: 包括`dict`、`list`等数据结构的性能提升,以及`os`、`re`...

    python3.9.4 64位.zip 免积分下载

    3. **类型注解**:Python 3.9进一步增强了类型注解的支持,使得静态类型检查更加准确和强大。例如,新增了`Type[Class]`表示类类型的类型注解,以及可选类型注解`Optional[T]`。 4. **标准库增强**:Python的标准库...

    程序员文摘第25期-精选最有价值的文章

    4. **Python正则表达式**:Python的`re`模块提供了正则表达式的支持,`re.M`是正则表达式的修饰符,用于多行匹配模式,使得`^`和`$`能匹配每一行的开始和结束。 5. **SpringCache与Redis**:SpringCache是Spring...

    python-3.7.8-docs-html_Python-3.7.8用户使用手册_python3.7.8使用_

    1. **类型提示(Type Hints)**:Python 3.7 引入了正式的类型注解系统,使得代码更易于理解,同时也为静态类型检查工具提供了基础。在3.7.8中,类型提示的使用更加成熟,能够帮助开发者编写出更健壮的代码。 2. **...

    mofuw:mofuw是* MO * re * F * aster,* U *超最小* W * ebserver

    Nim是一种静态类型的、编译型的语言,以其高效、简洁和强大的特性而闻名,这使得`mofuw`能够利用Nim的优势,为小型到中等规模的Web应用程序提供强大的支持。 ### 一、多线程技术 `mofuw`采用多线程处理请求,这...

    Notre-jeu-Java-p:平台+角色扮演

    - Java是一种强类型、静态类型的编程语言,它的面向对象特性包括封装、继承和多态。理解这些概念是构建游戏架构的基础。 - 类和对象:游戏中的角色、场景、道具等都可以通过创建类和对象来表示。 - 接口:定义...

    基于CPLD的电子琴研究与设计

    复杂可编程逻辑器件(CPLD)因其静态可重复编程和动态在系统重构的特点,在当前的应用非常广泛。CPLD允许硬件功能像软件一样通过编程来修改,这种灵活性和通用性极大地提高了数字系统设计的效率。 #### 二、设计背景...

    8-2 正则表达式的神经网络化.pdf

    正则表达式(Regular Expressions,RE)是符号规则的一种非常具有代表性和实用的形式,广泛应用于文本分类、槽填充等任务。它们具有以下优点: 1. 高度可解释性:正则表达式允许对模式进行细致的诊断和操作。 2. ...

    AI专题:AI巨轮滚滚向前

    4. **DALL·E 3的re-captioning功能与GPT的辅助**:为了提高Sora的理解能力,OpenAI在训练阶段利用DALL·E 3的re-captioning功能为视频素材添加高质量的文本描述。同时,GPT被用来精确扩写用户的输入提示,再传递给...

    面向循环并行化的软件重构方法之计算机研究与实现.docx

    随着多核处理器技术的发展,为了更好地利用多核平台的优势,提高程序执行效率,并降低因手动重构可能引入的问题,循环并行化的自动转换成为了研究的重点。在多核环境下,循环并行化能够显著提升程序性能,但其实现...

    python3.4 tutorial指导手册英文版

    在这一章节中,教程将通过一系列简单的示例介绍 Python 的基本使用方法,帮助初学者快速入门并理解 Python 的核心优势。这部分旨在激发学习者对 Python 编程的兴趣。 #### 二、使用 Python 解释器 (Using the ...

    基于Python的网络爬虫的设计与实现.doc

    **一、Python语言的优势** Python作为一种强大的编程语言,被广泛用于网络爬虫的开发。它具有跨平台性,可以在多种操作系统上运行。Python的面向对象特性使其非常适合构建复杂系统,同时它的解释性语言特性让代码...

    Python Tutorial 2.7 [官方文档]

    在这一章节中,读者将初次接触到Python语言的魅力。通过简单的示例代码,Python展现出其简洁性和直观性,使初学者能够快速上手,理解基本语法和概念。此部分旨在激发学习者对Python编程的兴趣。 #### 二、使用...

Global site tag (gtag.js) - Google Analytics