`
pengpeng
  • 浏览: 82377 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【原】程序设计语言的将来

阅读更多

 现今主要的编程范式有:“命令式编程”,“函数式编程”,“逻辑编程”; 现今大行其道的“命令式编程语言”有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稳定,自动垃圾回收的所有优点。

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

分享到:
评论

相关推荐

    大学生嵌入式职业导航

    (1) 掌握主流嵌入式微处理器的结构与原理 ...其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人, 怎么能在该处理器写出最优的C语言代码。

    Samnest 英文网址导航程序(无后台ASP版) v1.0

    我是做网页设计和重构的,考虑到对程序不了解,所以使用简单的ASP语言制作了这个网站。没有后台,全部为手工添加,更新和维护需要使用EDITPLUS或DREAMWEAVER甚至记事本这样的源码编辑工具,这套小站可以用来作为网站...

    基于单片机的电子密码锁设计与实现(2).doc

    3.6 键盘输入模块 3.7 报警电路 3.8 开锁电路 3.9 复位电路 3.10串行通信电路 3.11 系统整体原理图 4系统软件设计 4.1 主程序设计 4.2键值判断设计 4.3开锁设计 4.4密码修改设计 4.5 红外遥控设计 4.6 Keil编程软件...

    VC++6.0核心编程源码.rar

    见原书P4的程序(2)和P5的程序 你可以看到,每个错误都有3种表示法:即一个消息ID(这是你可以在源代码中使用的一个宏,以便与GetLastError的返回值进行比较),消息文本(对错误的英文描述)和一个号码(你应该...

    算法导论(part2)

    如果希望实现这些算法中的任何一个,就会发现,将书中的伪代码翻译成读者熟悉的某种程序设计语言,是一件相当直接的事。伪代码被设计成能够清晰简明地描述每一个算法。因此,我们不考虑出错处理和其他需要对读者所用...

    c语言编写单片机技巧

    C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言...

    算法导论(part1)

    如果希望实现这些算法中的任何一个,就会发现,将书中的伪代码翻译成读者熟悉的某种程序设计语言,是一件相当直接的事。伪代码被设计成能够清晰简明地描述每一个算法。因此,我们不考虑出错处理和其他需要对读者所用...

    C#23种设计模式_示例源代码及PDF

    原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...

    基于AT89S52 单片的频率计

    单片机程序设计开发工具:KEIL C51 keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发 系统,和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显的优 势,因而易学易用。 Keil c51 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XSL全称是Extensible Stylesheet Language(可扩展样式语言), 是将来设计XML文档显示样式的主要文件类型。它本身也是基于XML语言的。使用XSL,你可以灵活的设置文档显示样式,文档将自动适应任何浏览器和PDA(掌上电脑...

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML被设计得容易快速上手。它只有两个头文件和四个cpp文件。只需要把它们简单地加到你的项目中就行了。有一个例子文件——xmltest.cpp来引导你该怎么做。 TinyXML以Zlib许可来发布,所以你可以在开源或者商业...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115266149 上架时间:2011-11-9 出版日期:2011 年11月 开本:16开 页码:502 版次:1-1 主编推荐  资深Oracle专家力作,OakTable团队推荐  全面、...

Global site tag (gtag.js) - Google Analytics