`
pengpeng
  • 浏览: 84104 次
  • 性别: 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稳定,自动垃圾回收的所有优点。

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

分享到:
评论

相关推荐

    C程序设计语言(第2版)中文译版及习题解答

    《C程序设计语言(第2版·新版)》是由Brian W. Kernighan和Dennis M. Ritchie共同编著的经典编程教材,被广大程序员亲切地称为“K&R”。这本书详细介绍了C语言的基础知识和高级特性,是学习C语言的重要参考资料。...

    高等院校Matlab程序设计课程双语教学的研究.pdf

    根据提供的文件信息,以下是对高等院校Matlab程序设计课程实施双语教学研究的知识点总结: 一、双语教学的意义 1. 双语教学定义:在教学过程中,教师运用两种教学语言系统地进行学科知识讲授,促进学生在知识、语言...

    《汇编语言程序设计》实验报告4.docx

    ### 汇编语言程序设计实验报告知识点解析 #### 实验背景与目标 本次实验的主要目的是让学生通过实际操作,深入理解汇编语言的基本概念、指令系统及其应用,并掌握利用汇编语言进行简单图形处理的方法。具体任务是...

    汇编语言实验8-中断程序设计[参考].pdf

    【汇编语言中断程序设计详解】 中断是计算机系统中一种重要的机制,用于处理突发事件或请求。在汇编语言编程中,理解和掌握中断处理是至关重要的。本实验旨在帮助学生熟悉中断的类型、处理过程以及如何设计中断程序...

    《C语言课程设计案例精编》 原代码

    在实践中不断巩固和提高编程能力,为将来深入学习其他高级编程语言或系统级编程打下坚实的基础。这些案例的执行和调试将帮助你形成良好的编程习惯,提高问题解决能力和代码调试技巧,从而在IT行业中站稳脚跟。

    (前四届)湖南省大学生程序设计大赛题

    湖南省大学生程序设计大赛通常涉及的编程语言包括C、C++、Java等,题型多样,包括但不限于:排序与搜索、图论、动态规划、字符串处理、数据结构、算法设计等。这些题目不仅考验选手的基础编程技能,更注重实际问题...

    七层以下电梯通用的程序(原创带全注释).rar

    这个程序设计用于控制七层或以下的建筑电梯运行,确保电梯能够根据乘客的呼叫信号和楼层选择安全、高效地运行。 【描述】"三菱PLC例程_本资料仅供学习参考,禁止商业使用。" 强调了这个程序是三菱PLC(可编程逻辑...

    JAVA程序设计_第1章1

    【JAVA程序设计_第1章1】这门课程主要涵盖了JAVA概述,由南京邮电大学计算机学院的邓玉龙和成小惠教授讲授。课程旨在面向计算机专业的本科学生,从第1周到第18周,共计48学时,适用于2020-2021学年的第二个学期。...

    “C语言程序设计”与计算机相关课程的融合教学与实践.pdf

    《“C语言程序设计”与计算机相关课程的融合教学与实践》一文主要探讨了如何通过改革教学模式,将C语言程序设计课程与其他计算机相关课程相结合,以此来加强课程之间的联系,提高学生的自学和综合能力。文章内容涉及...

    c# 课程设计精品原题

    【C# 课程设计精品原题】集合了多个与C#编程相关的课程设计题目,旨在帮助学习者深入理解和掌握C#这门面向对象的编程语言。C#是Microsoft开发的一种现代编程语言,广泛应用于Windows桌面应用开发、游戏开发、移动...

    计算机毕业设计课程设计小程序-家政预约-项目源码

    本文将详细解析“计算机毕业设计课程设计小程序-家政预约-项目源码”中的关键知识点,包括微信小程序的开发环境、主要技术栈、文件结构及其功能,以及如何进行家政预约项目的实现。 首先,微信小程序是一种轻量级的...

    东南大学微原实验

    4. **程序设计**:学习如何编写简单的汇编程序,包括数据的声明、函数的调用、子程序的设计以及流程控制结构的使用。 5. **输入/输出操作**:通过汇编语言控制硬件设备,如打印机、显示器等,进行数据的读取和写入...

    Xojo 桌面程序 快速入门

    Xojo的设计哲学是提供一种快速而简单的方式来创建应用程序,并且它具有拖放式界面设计、面向对象编程语言和集成调试器等特点。它也支持跨平台交叉编译,这意味着在一台机器上可以为其他目标操作系统生成原生应用程序...

    java课程设计 聊天室源代码

    4. **数据序列化与反序列化**:为了在网络中传输消息,通常需要将消息序列化为字节流,然后在另一端进行反序列化恢复原数据。Java提供了内置的序列化机制,使得对象可以被转换为字节流,便于在网络中传输。 5. **...

    计算机组成原理(课程设计)——设计一个CPU

    【计算机组成原理(课程设计)——设计一个CPU】 ...通过这样的课程设计,学生不仅可以深入理解计算机硬件的工作原理,还能锻炼逻辑思维能力和问题解决能力,为将来在计算机硬件领域的发展打下坚实基础。

    VB原创库存管理系统(开题报告+外文翻译+论文正文+源代码+可执行程序).zip

    1. **Visual Basic(VB)编程语言**:VB是一种事件驱动的编程语言,它简化了用户界面的设计,通过拖放控件和编写事件处理程序来构建应用程序。在库存管理系统中,VB提供了丰富的控件如文本框、按钮、列表框等,用于...

    绿色拼车的微信小程序模板下载

    开发者可以使用JavaScript、WXML(微信小程序的结构层语言)和WXSS(微信小程序的样式层语言)来编写小程序,通过这个工具进行实时查看和测试,确保程序在不同设备上的表现一致。 【源码学习价值】 作为一款DEMO小...

    离散数学及其应用 (原书第7版)

    逻辑是构建算法和程序设计的基础。 2. 集合论:涉及集合的基本概念、操作以及关系和函数。在离散数学中,集合是处理离散数据结构的核心。 3. 图论:图论研究图这种数学结构,它由顶点和连接顶点的边组成,用于表示...

    课程设计任务书2(布尔)

    PL/0是一种较为简单的程序设计语言,其主要特点包括: - **基础构造**:以赋值语句为基础,构建了顺序、条件和重复(循环)三种基本控制结构。 - **子程序概念**:支持过程定义,允许子程序的嵌套调用,并支持局部...

    车源宝(微信小程序源码).rar

    【车源宝微信小程序源码】是一个专门为初学者设计的学习资源,它包含了构建微信小程序所需的全部代码和结构。...同时,源码中的注释和结构也会帮助你理解和遵循良好的编程实践,为将来独立开发微信小程序打下坚实基础。

Global site tag (gtag.js) - Google Analytics