【问题标题】:Is there an authorative programming language feature list? [closed]是否有权威的编程语言功能列表? [关闭]
【发布时间】:2010-08-04 08:13:50
【问题描述】:

我正在寻找动态类型、静态类型、弱类型和强类型等内容。

以及面向对象的特性,如多态、继承、嵌套类、内部类、抽象类、纯虚函数。

还有,反射、静态绑定、动态绑定等。

但是,我并不是真的在寻找诸如控制流、内置类型或语法糖之类的东西。 A[5] 与 A.get(5)。不过,它不会受到伤害。

如果存在这样的东西并将这些概念映射到特定的语言,那就太棒了。

我知道其中许多功能已经在 Wikipedia 上进行了解释,但除非我已经知道这些功能是什么(并且我记得)或者只是碰巧找到了一个相互关联的链接,否则我无法快速访问。事实上,我唯一一次使用维基百科来做类似的事情是如果我碰巧看到有人引用了一个我需要查找的想法。

我的主要目标是找到一种方法让我快速发现或复习我对这些概念的了解,这样的权威列表将非常有帮助。

如果这样的东西不存在,为什么?

是不是因为不同的编程语言决定以不同的方式命名其中一些东西,但实际上做的是相同的事情? (即纯虚函数(C++)与抽象方法(Java))虽然其他人可能名称相同,但做的事情略有不同? (Java 与 C++ 中的 Protected 关键字)另一个原因可能是语言根本没有足够的共同特性来编译这样的列表,最好一次学习一门语言并且它的特性是一个?在这种情况下,我可能会在学习该语言时编制自己的“功能列表”...

感谢阅读! :)

【问题讨论】:

  • 我确实认为wikipedia 会是最接近您正在寻找的东西。

标签: programming-languages language-features


【解决方案1】:

在 Peter van Roy 的作品中可以找到对编程范式以及构建这些范式的编程概念的非常好的解释。特别是在书Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi。 (Here's the companion wiki.) CTM(在业界俗称)使用multi-paradigm Distributed Oz programming language 来介绍所有主要的编程范例。

Peter van Roy 也制作了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 编辑的计算机音乐的新计算范式一书中。例如,它非常简洁易懂地解释了编程范式实际上是什么,编程概念是什么,以及两者之间的关系。

另一本介绍几种主要编程范例的好书是Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman。几十年来,这本书是麻省理工学院为本科生编写的《编程导论》(6.001) 的基础。 A course taught by Abelson and Sussman themselves was recorded at a corporate training for Hewlett-Packard in 1986.

您可以找到video recordings and course materials from the Spring 2005 course on MIT's OpenCourseWare websiteAnother recording of the course from MIT's short-lived ArsDigita University project。 SICP 也曾在其他大学教授过,实际上是the 2010 course at Berkeley has just finished

众所周知,SICP 可能是有史以来最好的编程书籍之一。

SICP 和 CTM 之间的主要区别在于教学方法:CTM 使用非常强大的多范式语言演示大多数主要范式,已经支持它们(主要是分布式 Oz,但也有一些其他)。 SICP OTOH 通过实现它们以一种本机支持它们的语言(Scheme 的子集)来演示它们。 IOW:CTM 将通过在 Scheme 中实现 OO 系统来教 OO 展示用 OO 语言、SICP 编写的程序。看到在十几行代码中实现面向对象真是太棒了。

Design Concepts in Programming Languages (by Franklyn A. Turbak and David K. Gifford with Mark A. Sheldon) 是另一本很棒的相关书籍。

Concepts of Programming Languages (by Robert W. Sebesta) 很好地解释了编程语言的概念,从 Konrad Zuse 的 Plankalkül 开始,接着是第一个 真正的 编程语言,如 Fortran、Lisp、Cobol、Algol、BASIC 和 C, C++、Java 和 Ada。

Concepts in Programming Languages (by John C. Mitchell) 是另一本经常被引用但我自己还没有读过的书,很遗憾。

Essentials of Programming Languages 同上(作者 Daniel P. Friedman 和 Mitchell Wand)又名 EoPL

Programming Language Pragmatics (by Michael L. Scott) 更多地是关于实现编程语言概念,但它也以一种据说非常容易理解的方式讨论这些概念。 (再说一遍,我还没读过这个。)

既然你问了很多关于打字的具体问题,我将不提Types and Programming Languages(Benjamin C. Pierce)或通常称为的TaPL。这基本上是关于类型理论的书,因为它与编程语言有关。但是请注意,它对类型的看法并非没有争议:例如,它几乎完全否认了动态类型的存在。

为了平衡 Pierce 非常严格的定义,您绝对应该阅读 Luca Cardelli 的精彩 Typeful Programming。在论文中,他认为使用类型作为建模和结构化构造而不仅仅是安全网的编程本身就是一种编程范式。 (例如,这与 Peter van Roy 的海报和书籍形成鲜明对比,后者故意完全忽略打字。)

Lambda the Ultimate 博客是一个非常棒的资源(实际上,在这里接触到了几乎所有上述阅读材料。)

【讨论】:

  • 非常感谢。海报绝对符合我正在寻找的内容(基本上是为了快速向我展示我不知道多少!)。我也很欣赏对几个重要资源的简洁描述。
  • 感谢这个彻底的回答写下我的圣诞愿望/阅读清单;)
【解决方案2】:

如果您知道如何使用维基百科,则可以通过相对较少的搜索工作提供相对较多的信息 - 在这种情况下,手动浏览类别是必要的。通常,如果某些著名的语言在不同的名称下具有相同的概念,反之亦然,则会在页面上注明。

OO 的概念以及其他范式的概念可以在http://en.wikipedia.org/wiki/Category:Programming_paradigms 的相应子类别中找到

http://en.wikipedia.org/wiki/Category:Programming_constructs 包含许多与编程相关的术语。

同样,http://en.wikipedia.org/wiki/Category:Type_theory 包含诸如静态/动态/弱/强类型等众所周知的术语,如果您感兴趣的话,还有更多。

等等……

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2010-10-07
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2011-07-26
    • 2014-05-19
    • 2010-11-12
    • 2010-09-11
    相关资源
    最近更新 更多