论坛首页 Java企业应用论坛

程序设计语言的将来

浏览 1420 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-26  

 现今主要的编程范式有:“命令式编程”,“函数式编程”,“逻辑编程”; 现今大行其道的“命令式编程语言”有c,c++ ,java,c#,ruby等等。 函数式编程语言有“lisp,haskell,scala”等;当然ruby,scala应该是混合面向对象和函数式风格的语言。

命令式语言

为什么称为命令式语言呢? 命令式语言其实是当今“冯·洛伊曼”计算机体系结构一个抽象;程序员按照计算机的运行指令的方式编写程序,就好像不断向cpu发送指令一样;命令式语言代表有汇编语言,c语言,java,c++等等;

     在命令式语言领域有2个分支,一个是:结构化编程;一个是:面向对象编程;结构化编程是对程序代码的模块化抽象;而面向对象编程是对程序代码和数据的模块化抽象;以”类“的概念将数据和操作数据的方法模块化,并发展了”多态“,”继承“技术。让代码的重用和”动态类型加载“技术走向成熟。 

函数式语言

              函数式语言是基于数学领域的 λ 演算(lambda calculus)而来的。于命令式语言相比,函数式更强调函数的运算,而不是指令的运行。1958年第一个函数式编程语言Lisp诞生后,逐步产生了schemeHaskellCleanErlang等,而且现在流行的语言:ruby,javascript,scala;都有函数式编程的风格;

高阶函数:函数可以作为另一函数的参数;

        副作用:纯函数式语言是没有变量的。所以不存在副作用;所以函数式编程原生的支持并发编程;从这一点看,随着多核时代的到来,函数式编程将会流行起来。

静态类型和动态类型

静态类型和动态类型各有优缺点;静态类型一般是编译型的语言,在编译时可以类型检查;类型检查可以让程序员编写出安全的代码。并且IDE可以有语法提示,单元测试更加准确等优点。而动态类型语言,是在运行时由类型推理出类型的,编程人员并不需要明确指定类型,所以程序显得简单,优雅许多。而且动态类型可以很方便的实现:多态,ducking type;函数式编程;(代码块当作参数传递);  所以静态类型的优点就是动态类型的缺点。 

语言发展的方向

  从几本书《黑客与画家》这本书的作者极力推崇lisp函数式编程语言,以及预言100年后的编程中,以及现今逐渐流行的:ruby,scala语言,我们可以看出端倪; 那就是:每一种新语言的诞生都是吸纳了当前流行的各种语言的优点而创造出来的。比如scala语言,scala既是纯面向对象语言,也是函数式语言,也吸收了静态类型和动态类型的优点;scala真的让我们程序员像画家一样,让我们的思维跃然纸上; scala在编译时的类型推理系统,给我们带来了动态类型的优点。还有一个重要的优点:scala运行于jvm上,可以和java语言无缝结合,可以利用java已有的api库。并吸纳了jvm稳定,自动垃圾回收的所有优点。

所以,我觉得未来我们的面向对象编程中将看到更多的函数式风格代码。 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics