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

原创 2015年07月10日 07:21:52

这个楼主,是我的学生么?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中,说明:“面向对象技术的最基本观点:编程不是编写指令集,而是创造一个自我管理、彼此交互的对象的世界。”“从绝对终极的意义上说,编程就是编写一串计算机将亦步亦趋的指令集”;就如同人最终还是由原子构成的,你可以由此反对鬼神之说,但是,你不能够在社会科学或经济学中,用原子作为研究的基本单位,而且经济人假说本身也很荒谬(好吧,有很大的局限性)。



相关文章推荐

《编程导论(Java)·前言》

谢谢你翻阅这本书。 在2005年出版《Java程序设计》(宋中山,严千钧编著,清华大学出版社)时,有一个目标没有完成:以Java作为大学本科的入门级语言构建教学体系。虽然早早就着手进行相关研究,这么多...
  • yqj2065
  • yqj2065
  • 2012年12月16日 23:26
  • 1174

《编程导论(Java)》Home

严千钧 著.编程导论(Java).北京:清华大学出版社。2013.4
  • yqj2065
  • yqj2065
  • 2012年12月09日 02:00
  • 3463

《编程导论(Java)·9.2.3 案例:M集》

分形理论(fractal theory)的奠基人曼德布罗特(Mandelbrot)发现了著名的Mandelbrot set,简称M集。M集可能是最复杂的数学对象,是分形、混沌领域的一种国际标志。 上传...
  • yqj2065
  • yqj2065
  • 2016年06月12日 23:03
  • 397

《编程导论(Java)·2.1.3改写(override)》

收集Java override内容.
  • yqj2065
  • yqj2065
  • 2014年09月19日 16:40
  • 1153

《编程导论(Java)·3.2.4 循环语句》

《编程导论(Java)》不适合自学
  • yqj2065
  • yqj2065
  • 2015年07月02日 09:19
  • 683

《编程导论(Java)·9.3.1回调》回调的用途

回调、轮询
  • yqj2065
  • yqj2065
  • 2014年09月22日 20:43
  • 1667

《编程导论(Java)·12.1基本位运算》

能抓住和定位单个原子的机器将能制造任何东西… 当然,一次一原子地造个大物体会很慢。 ——Eric Drexler《Engines of Creation: The Coming Eraof Nanot...
  • yqj2065
  • yqj2065
  • 2015年07月09日 07:29
  • 855

《编程导论(Java) ·10.3》补充:递归的优化

递归强大、优雅、易实现...问题是效率和栈溢出(java.lang.StackOverflowError)。 为什么Scheme不需要迭代结构如while、for呢? 在Java编译器不直接支持尾调用...
  • yqj2065
  • yqj2065
  • 2016年06月21日 12:11
  • 769

《编程导论(Java)·7.4.4 String对象问题》

Java 7u6 修改了String#substring.的实现
  • yqj2065
  • yqj2065
  • 2014年10月01日 03:01
  • 1686

《编程导论(Java)·2.1.2 啊,我看到了多态》-什么是多态(polymorphism)

杀猪杀屁股,各有各的刀法
  • yqj2065
  • yqj2065
  • 2014年07月02日 11:12
  • 2897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《编程导论(Java)·1.4.1 范式》
举报原因:
原因补充:

(最多只允许输入30个字)