在过去的4年里,我一直是一名开发人员,在大学学习软件开发之前的4年里。在我从事这个行业的四年中,我在VB6中做了一些工作(这是一个笑话),但大部分都是在C#/ASP.NET.在这段时间里,我已经从“对象感知”的过程范式转向了面向对象的范式。
最近我对其他编程范例很好奇,所以我想我应该问问其他开发人员对这些范例之间的异同的看法,特别是对于OOP?在OOP中,我发现概念之间的关系和逻辑交互是非常重要的。对于其他范式,你的思维框架是什么?
发布于 2010-03-12 01:02:35
到目前为止,对编程范式的最好解释是在Peter van Roy的作品中找到的。尤其是在 by Peter Van Roy and Seif Haridi这本书中。(Here's the companion wiki.) CTM使用multi-paradigm Distributed Oz programming language来介绍所有主要的编程范例。
彼得·范·罗伊也制作了this amazing poster that shows the 34 major paradigms and their relations and positions on various axis。这张海报基本上是CTM令人难以置信的压缩版本。对这张海报的更全面的解释包含在文章Programming Paradigms for Dummies: What Every Programmer Should Know中,这篇文章出现在由G.assayag和A.Gerzso编辑的《计算机音乐的新计算范式》一书中的一章中。
另一本演示了几种主要编程范例的好书是 by Harold Abelson and Gerald Jay Sussman。几十年来,这本书一直是麻省理工学院CS101的基础。A course taught by Abelson and Sussman themselves was recorded at a corporate training for Hewlett-Packard in 1986。
CTM和SICP之间的主要区别在于,CTM使用支持它们的语言(主要是分布式Oz,但也有其他一些)来演示大多数主要范式。SICP OTOH通过在本地不支持它们的语言(Scheme的子集)中实现它们来演示它们。看到在十几行左右的代码中实现面向对象是非常棒的。
你可以找到video recordings and course materials from the Spring 2005 course on MIT's OpenCourseWare website。Another recording of the course from MIT's short-lived ArsDigita University project。SICP也在其他大学教授,实际上是it is being taught at Berkley right now。
就我个人而言,我自己的经验是,真正理解编程范例是唯一可能的
理想情况下,您应该使用一种将范式发挥到极致的语言。在多范式语言中,很容易“作弊”并退回到你更习惯的范式。而且,只有在Scheme这样的语言中,才能真正使用范型作为库,这些语言是专门为这种编程设计的。例如,学习Java中的惰性函数式编程不是一个好主意,尽管有一些库可以做到这一点。
下面是我最喜欢的几个:
通用对象:基于类的对象定向: Self
- **multiple dispatch based OO**: [Dylan](http://www.opendylan.org/)
- **functional + object-orientation**: [Scala](http://scala-lang.org/)- **static functional programming**: Haskell
- **dynamic functional programming**: [Clojure](http://clojure.org/)编程:Clojure
发布于 2010-03-11 18:56:37
以下是我的观点:
发布于 2010-05-20 09:17:26
嗯,this link试图解释我在过去20年里用过的东西。我提到它是因为它被证明是有用的,我认为它是一种范式,因为要使用它,你需要以一种特定的方式思考。
你必须思考的不同方式是,当分析一个问题时,不是问有什么对象和发生了什么动作,而是从总体需求开始,问需要说什么?
在此基础上,选择或设计一种领域特定语言(DSL),并用该语言陈述您的问题。
该链接解释了用于描述动态变化的对话用户界面的特定语言。它的实现依赖于一种特殊的控制结构,即差异执行。它实现的是源代码的数量级减少,编码错误的机会更少。这些节省下来的钱可以用来使用户界面更加复杂。
对于其他类型的问题,其他控制结构也是合适的,但常见的方法是通过精心选择的DSL来处理,使源代码更小,更容易修改,更不容易出错。
我认为函数式编程和OOP的范型最好的评估方法是确定它们最适合表达的问题类型。通常,这些范例只是成为潮流,被吹捧为万能的,而不是根据它们所解决的问题空间对它们进行分类。
https://stackoverflow.com/questions/2424269
复制相似问题