热点网|医学教育网|北京pk10开奖直播 pk10开奖直播 北京赛车pk10 pk10开奖直播 北京赛车pk10 PK10开奖直播 北京赛车pk10开奖直播 北京pk10 北京pk10

编程范式,程序员的编程世界观

编程范式的重要性
服务器君一共花费了213.888 ms进行了5次数据库查询<<,努力地为您提供了这个页面<。
试试阅读模式<>?希望听取您的建议

编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式>。随着编程方法学和软件工程研究的深入<,特别是OO思想的普及>,范式(Paradigm)以及编程范式等术语渐渐出现在人们面前。面向对象编程(OOP)常常被誉为是一种革命性的思想<>,正因为它不同于其他的各种编程范式<。编程范式也许是学习任何一门编程语言时要理解的最重要的术语。

托马斯.库恩提出“科学的革命”的范式论之后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词>>。编程范式一般包括三个方面>,以OOP为例:

  1. 学科的逻辑体系——规则范式:如类/对象<、继承、动态绑定>、方法改写>、对象替换等等机制<。
  2. 心理认知因素——心理范式:按照面向对象编程之父Alan Kay的观点><>,“计算就是模拟”<。OO范式极其重视隐喻(metaphor)的价值,通过拟人化,按照自然的方式模拟自然。
  3. 自然观/世界观——观念范式:强调程序的组织技术<>,视程序为松散耦合的对象/类的集合,以继承机制将类组织成一个层次结构<>,把程序运行视为相互服务的对象们之间的对话>。

简单的说><,编程范式是程序员看待程序应该具有的观点>。

为了进一步加深对编程范式的认识>,这里介绍几种最常见的编程范式。?

需要再次提醒注意的是:编程范式是编程语言的一种分类方式<<,它并不针对某种编程语言>。就编程语言而言,一种编程语言也可以适用多种编程范式<。?

过程化(命令式)编程?

过程化编程>,也被称为命令式编程><,应该是最原始的<、也是我们最熟悉的一种传统的编程方式><。从本质上讲<,它是“冯.诺伊曼机“运行机制的抽象<,它的编程思维方式源于计算机指令的顺序排列。

(也就是说:过程化语言模拟的是计算机机器的系统结构,而并不是基于语言的使用者的个人能力和倾向。这一点我们应该都很清楚,比如:我们最早曾经使用过的单片机的汇编语言<<<。)

过程化编程的步骤是:

首先,我们必须将待解问题的解决方案抽象为一系列概念化的步骤>>。然后通过编程的方式将这些步骤转化为程序指令集(算法),而这些指令按照一定的顺序排列,用来说明如何执行一个任务或解决一个问题<<。这就意味着<>>,程序员必须要知道程序要完成什么,并且告诉计算机如何来进行所需的计算工作>><>,包括每个细节操作。简言之<,就是将计算机看作一个善始善终服从命令的装置。

所以在过程化编程中,把待解问题规范化>、抽象为某种算法是解决问题的关键步骤。其次><,才是编写具体算法和完成相应的算法实现问题的正确解决<<。当然,程序员对待解问题的抽象能力也是非常重要的因素,但这本身已经与编程语言无关了。

?程序流程图是过程化语言进行程序编写的有效辅助手段<。?

尽管现存的计算机编程语言很多>,但是人们把所有支持过程化编程范式的编程语言都被归纳为过程化编程语言><>。例如机器语言<、汇编语言>、BASIC、COBOL><>、C ><、FORTRAN、语言等等许多第三代编程语言都被归纳为过程化语言>。?

过程化语言特别适合解决线性(或者说按部就班)的算法问题>。它强调“自上而下(自顶向下)”“精益求精”的设计方式<>。这种方式非常类似我们的工作和生活方式<,因为我们的日?>>;疃际前床烤桶嗟乃承蚪械?>。?

?过程化语言趋向于开发运行较快且对系统资源利用率较高的程序><。过程化语言非常的灵活并强大,同时有许多经典应用范例>,这使得程序员可以用它来解决多种问题。?

过程化语言的不足之处就是它不适合某些种类问题的解决>,例如那些非结构化的具有复杂算法的问题>。问题出现在>,过程化语言必须对一个算法加以详尽的说明>,并且其中还要包括执行这些指令或语句的顺序><。实际上>,给那些非结构化的具有复杂算法的问题给出详尽的算法是极其困难的。?

广泛引起争议和讨论的地方是:无条件分支,或goto语句<>,它是大多数过程式编程语言的组成部分><,反对者声称:goto语句可能被无限地滥用;它给程序设计提供了制造混 乱的机会<。目前达成的共识是将它保留在大多数语言中<,对于它所具有的危险性>,应该通过程序设计的规定将其最小化。?

事件驱动编程?

其实,基于事件驱动的程序设计在图形用户界面(GUI)出现很久前就已经被应用于程序设计中<,可是只有当图形用户界面广泛流行时<,它才逐渐形演变为一种广泛使用的程序设计模式<。?

在过程式的程序设计中,代码本身就给出了程序执行的顺序,尽管执行顺序可能会受到程序输入数据的影响><。

在事件驱动的程序设计中,程序中的许多部分可能在完全不可预料的时刻被执行>。往往这些程序的执行是由用户与正在执行的程序的互动激发所致。?

  • 事件<<。就是通知某个特定的事情已经发生(事件发生具有随机性)。?
  • 事件与轮询<。轮询的行为是不断地观察和判断,是一种无休止的行为方式<>。而事件是静静地等待事情的发生>。事实上,在Windows出现之前>,采用鼠标输入字符模式的PC应用程序必须进行串行轮询,并以这种方式来查询和响应不同的用户操做>>。?
  • 事件处理器<>>。是对事件做出响应时所执行的一段程序代码。事件处理器使得程序能够对于用户的行为做出反映>。?

事件驱动常常用于用户与程序的交互<,通过图形用户接口(鼠标<<、键盘、触摸板)进行交互式的互动>。当然>,也可以用于异常的处理和响应用户自定义的事件等等<>。

事件的异常处理比用户交互更复杂。?

事件驱动不仅仅局限在GUI编程应用<<。但是实现事件驱动我们还需要考虑更多的实际问题<,如:事件定义<<、事件触发、事件转化>、事件合并<、事件排队>>、事件分派<、事件处理<<、事 件连带等等>。

其实,到目前为止,我们还没有找到有关纯事件驱动编程的语言和类似的开发环境<。所有关于事件驱动的资料都是基于GUI事件的。?

属于事件驱动的编程语言有:VB<>、C#、Java(Java Swing的GUI)等<>。它们所涉及的事件绝大多数都是GUI事件。?

面向对象编程?

过程化范式要求程序员用按部就班的算法看待每个问题>>。很显然,并不是每个问题都适合这种过程化的思维方式<>。这也就导致了其它程序设计范式出现<,包括我们现在介绍的面向对象的程序设计范式。?

面向对象的程序设计模式已经出现二十多年,经过这些年的发展,它的设计思想和设计模式已经稳定的进入编程语言的主流。来自TIOBE Programming Community2010年11月份编程语言排名的前三名Java><>、C<>>、C++中>,Java和C++都是面向对象的编程语言<。?

面向对象的程序设计包括了三个基本概念:封装性><、继承性>、多态性>。面向对象的程序语言通过类<、方法<、对象和消息传递><,来支持面向对象的程序设计范式<。?

1. 对象

世间万事万物都是对象。

面向对象的程序设计的抽象机制是将待解问题抽象为面向对象的程序中的对象<。利用封装使每个对象都拥有个体的身份>。程序便是成堆的对象<><,彼此通过消息的传递>,请求其它对象 进行工作。?

2. 类

每个对象都是其类中的一个实体<>。

物以类聚——就是说明:类是相似对象的集合>。类中的对象可以接受相同的消息<>?>>;痪浠八担豪喟兔枋隽恕熬哂泄餐匦裕ㄊ菰兀┖凸餐形üδ埽钡囊蛔槎韵?。

比如:苹果、梨<<、橘子等等对象都属于水果类。?

3. 封装

封装(有时也被称为信息隐藏)就是把数据和行为结合在一个包中>><,并对对象的使用者隐藏数据的实现过程<<。信息隐藏是面向对象编程的基本原则,而封装是实现这一原则的一种方 式<。

封装使对象呈现出“黑盒子”特性,这是对象再利用和实现可靠性的关键步骤><。?

4. 接口

每个对象都有接口。接口不是类>>,而是对符合接口需求的类所作的一套规范<<。接口说明类应该做什么但不指定如何作的方法<>。一个类可以有一个或多个接口>。?

5. 方法

方法决定了某个对象究竟能够接受什么样的消息。面向对象的设计有时也会简单地归纳为“将消息发送给对象”>。?

6. 继承

继承的思想就是允许在已存在类的基础上构建新的类><<<。一个子类能够继承父类的所有成员<>,包括属性和方法<。

继承的主要作用:通过实现继承完成代码重用>>;通过接口继承完成代码被重用。继承是一种规范的技巧<,而不是一种实现的技巧<。?

7. 多态

多态提供了“接口与实现分离”>。多态不但能改善程序的组织架构及可读性>,更利于开发出“可扩充”的程序<。

继承是多态的基础><。多态是继承的目的><>。

合理的运用基于类继承的多态<<、基于接口继承的多态和基于模版的多态<<<<,能增强程序的简洁性<、灵活性、可维护性><<、可重用性和可扩展性<。

面向对象技术一方面借鉴了哲学、心理学<、生物学的思考方式>,另一方面<<<,它是建立在其他编程技术之上的><,是以前的编程思想的自然产物>。

如果说结构化软件设计是将函数式编程技术应用到命令式语言中进行程序设计,面向对象编程不过是将函数式模型应用到命令式程序中的另一途径>,此时<<,?<?榻轿韵?<<,过程龟缩到class的成员方法中<。OOP的很多技术——抽象数据类型>>、信息隐藏<、接口与实现分离<>、对象生成功能<、消息传递机制等等>>,很多东西就是结构化软件设计所拥有的<>、或者在其他编程语言中单独出现。但只有在面向对象语言中>,他们才共同出现<,以一种独特的合作方式互相协作<>、互相补充>。

本文地址:http://www.jzjxzzjx.com/librarys/veda/detail/2488<,欢迎访问原出处。

不打个分吗<>?

转载随意<,但请带上本文地址:

http://www.jzjxzzjx.com/librarys/veda/detail/2488

如果你认为这篇文章值得更多人阅读<<,欢迎使用下面的分享功能<><。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏>。

阅读一百本计算机著作吧>>>,少年

很多人觉得自己技术进步很慢><,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢>?起码得看3、4、5>、6米吧<。给个具体的数量<>,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构<,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官<<,但是在知识结构体系以及心理上我们就居高临下<<>。

所以,阅读一百本计算机著作吧>,少年>!

《大话数据结构》 程杰 (作者)

《大话数据结构》主要内容包含:数据结构介绍>、算法推导大O阶的方法<<>;顺序结构与链式结构差异>、栈与队列的应用<<<;串的朴素模式匹配>、KMP模式匹配算法<;二叉树前中后序遍历<>、赫夫曼树及应用><;图的深度<、广度遍历<;最小生成树两种算法<>、最短路径两种算法;拓扑排序与关键路径算法<<>;折半查找<<、插值查找><、斐波那契查找等静态查找;稠密索引>、分块索引<、倒排索引等索引技术<;二叉排序树、平衡二叉树等动态查找<;B树>、B+树技术,散列表技术;冒泡>、选择>、插入等简单排序<<;希尔<>、堆>、归并<<>、快速等改进排序。

更多计算机宝库...

  • 港媒称台战机“日晒雨淋” 台军将领出面否认 2018-05-22
  • 怎样和陈意涵袁姗姗一样拥有完美裸妆肤感? 2018-05-22
  • 《东北树木彩色图志》首次载入我国新发现植物“青姬木” 2018-05-22
  • 网约车司机无证上岗拟纳入失信黑名单无证司机失信 2018-05-20
  • 300余名澳门中学生参加国旗手训练营(组图) 2018-05-20
  • 法前总统萨科齐遭拘 或因利比亚前要人递新证据 2018-05-20
  • 美媒称中国新人婚纱摄影很疯狂:有的仿如电影拍摄现场 2018-05-19
  • 立陶宛举行“汉语桥”中文比赛 2018-05-19
  • 上海嘉禾2017秋季艺术品拍卖会 2018-05-18
  • 海归回国就业创业遇到困难怎么办他帮海归找工作就业创业留学生海归 2018-05-18
  • 扛不住了?台当局拟放宽许可条件鼓励陆客赴台 2018-05-17
  • 美名校毕业典礼竞邀女性演讲者 希拉里将前往耶鲁希拉里耶鲁演讲者 2018-05-16
  • 空姐遇害案告破!DNA鉴定打捞尸体确系嫌犯刘某华 2018-05-16
  • 44年前创举!美军运输机曾空射洲际导弹 2018-05-16
  • 中部新一线城市扩容 产业定位“只看高端” 2018-05-15
  • ASP300源码下载 | 微信红包群 | 设计 | 冠珠陶瓷 | 科技 | 北京赛车pk10微信源码 | 挖段子网 | 厦门旅游景点 | 旅游中国新闻网 | 钛媒体 | 健康网hsdcba | 每天资讯 | 广西农业技术信息 | 农业种植技术 |