关闭

《编程导论(Java)·1.4.1 范式》

1286人阅读 评论(0) 收藏 举报
分类:

这个楼主,是我的学生么?2013年写的!

嗯,“编程范式也许是学习任何一门编程语言时要理解的最重要的术语”。这句话早在2005年出版《Java程序设计》(宋中山,严千钧编著,清华大学出版社)中写过。但是,

"托马斯.库恩提出“科学的革命”的范式论之后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词。编程范式一般包括三个方面,以OOP为例:.....",好像在《编程导论(Java)》出版之前,仅仅在上课的PPT中写过。除了关于编程范式的文字引用,该楼主其他的文字,并非我想说的。如果是我的学生,我要打他的屁屁。


因为:

1.我并不希望将事件驱动编程、管道等 罗伯特•弗洛伊德(Robert W.Floyd) 在《编程的各种范式》中列举的一些“东西”称为编程范式。按照我的观点,编程范式必需源于计算机科学之根:一般递归函数、λ表达式、图灵机,再加上面向对象,4大范式。其他,是一些小风格,例如回调、泛型等。

2.我不喜欢Multi-paradigm这个术语。按照托马斯•库恩的范式论,新旧范式是不可通约的、不可比较的。所以,对于Java/C#这些命令型的面向对象语言,多种范式处于不同的层面,例如我们仅仅在方法级别可以说它采用了命令范式。

3.某种程度上,面向对象除了新的视角和思考方式,以及LSP,它几乎一无所有。毕竟,各种面向对象编程语言吸收了命令范式和函数范式大量技术,依靠LSP从而构成自己的逻辑体系。

4.讨论面向对象范式时,我不会过于强调封装、继承和多态。这些东西可以看成PLP的语法现象。如在Parnas原则/接口与实现的分离(separation of interfaceand implementation)的基础上,推广到类的接口,就需要封装这种手段——使用访问修饰符限定接口。另外,方法/函数的封装,在C中就是基本概念——正宗的接口与实现分离;因为LSP——子类替代父类,自然就有了(纯)多态(现象);继承则是类层次的自然属性,而且我反复强调,类层次的父子类的继承关系带来了某些代码的复用性,但是,复用性不是设计类层次的原因,关于OOP的复用性,可以依赖的原则则是代码向上集中父类设计时,更多采用抽象方法声明自己的接口。

5.类是数据和行为的封装,对么?我说人是有信仰的,你说人有肌肉,是原子构成的。我能够说你不对吗?所以,我希望大家看看power of ten这个视频。早在0.2.2中,说明:“面向对象技术的最基本观点:编程不是编写指令集,而是创造一个自我管理、彼此交互的对象的世界。”“从绝对终极的意义上说,编程就是编写一串计算机将亦步亦趋的指令集”;就如同人最终还是由原子构成的,你可以由此反对鬼神之说,但是,你不能够在社会科学或经济学中,用原子作为研究的基本单位,而且经济人假说本身也很荒谬(好吧,有很大的局限性)。



0
0
查看评论

《编程导论(Java)》学习导航

学习《编程导论(Java)》时,可以查阅的在本博客中相关博文的链接。
  • yqj2065
  • yqj2065
  • 2012-12-09 02:05
  • 3187

计算机科学与Python编程导论_MIT 学习笔记(一)

课程目标 学会用计算机的算法和机械表达来完成挑战 学会计算机思维: 找到方法论 分解为机械式的步骤 转化为计算机可执行的步骤计算机的能力 计算 存储计算机可以完成的计算: 内置函数 我们自己创造的函数即使计算机能够高速运行、大量储存,仍然需要好的算法来优化计算。计算机的局限: 在...
  • chucksonwheel
  • chucksonwheel
  • 2017-12-08 22:55
  • 163

MIT 计算机科学和Python 编程导论

其实上一本书《笨办法学python》严格意义上来说,算不上是入门书,因为它主要目的是让你去找到敲代码的感觉,基本不涉及计算机的内容。说到真正的入门,MIT的《计算机科学和python编程导论》这门课程是个非常好的选择。对于想要入门python的人来说,这门课程不会让你失望,但是它能给你的不止于此,其...
  • crazy_banana
  • crazy_banana
  • 2016-09-27 16:36
  • 2290

麻省理工学院公开课:计算机科学及编程导论习题1

习题1: 编辑一个程序,显示出第1000个质数。 质数的特性是只能被1和自己整除,所以所有算法都由此引开。 因为一开始漏看了“th”,所以以为是1~1000里面的质数... 这是一种算法,这两种的效率差不多: print "2", for x in range(3, 1001...
  • thundercaller
  • thundercaller
  • 2016-01-15 18:57
  • 524

麻省理工学院公开课:计算机科学及编程导论习题3上

习题1: 写两个函数,分别叫calledcountSubStringMatch(使用迭代计数关键词)和countSubStringMatchRecursive(使用递归计数关键词); 必须按照下面方式定义。 def countSubStringMatch(target,key): def coun...
  • thundercaller
  • thundercaller
  • 2016-01-17 13:03
  • 808

MIT麻省理工学院公开课:计算机科学及编程导论 Python 笔记1-3

Lecture1:Goals of the course; what is computation; introduction to data types, operators, and variablesPython High VS. low General VS. targetted Int...
  • muzilanlan
  • muzilanlan
  • 2015-05-18 14:40
  • 3734

编程范式简单总结

最常用的编程范式 计算机科学中主流的: 1.面向对象编程 2.面向过程编程 3.泛型编程 工程业务框架中特有的: 4. 事件驱动编程,一些VC,VB,Java框架中。 5.并发编程,分布式编程。 非常优秀但是很少用的编程思想: 1.模板元编程(操作编译决策) 模板...
  • Blues1021
  • Blues1021
  • 2015-08-15 13:41
  • 4418

MIT 6.00.1x 计算机科学和Python编程导论 Set 1

MIT 6.00.1x 计算机科学和Python编程导论 Set 1
  • pivilion
  • pivilion
  • 2017-02-24 21:10
  • 422

计算机科学与Python编程导论_MIT 学习笔记(三)

while 循环的工作过程 1 bool检验 2 如果bool检验为真,执行循环体 3 返回bool检验 4 直到bool检验为假,停止循环,执行循环体外的程序while 循环的必要组件 1 在循环之前设置迭代变量 2 在bool检验中检验迭代变量 3 在循环体中改变迭代变量的值编程思...
  • chucksonwheel
  • chucksonwheel
  • 2017-12-12 10:53
  • 102

mit 计算机科学及编程导论(1)

从今天开始,我要开始我的公开课之路。我尽量每三天看一集,第一天不看字幕先大致听一下课程,第二天看字幕熟悉单词,第三天再无字幕看。在看的同时,不仅要练听力,还有最重要的是学到计算机知识。所以我会在博客中写下自己的心得和学到的新单词,以此来督促自己和记录自己的学习过程。   首先是单词:...
  • zjxiaolu
  • zjxiaolu
  • 2014-10-02 01:31
  • 481
    博客专栏
    个人资料
    • 访问:528888次
    • 积分:8637
    • 等级:
    • 排名:第2689名
    • 原创:300篇
    • 转载:3篇
    • 译文:5篇
    • 评论:184条
    最新评论