基于原型的语言

时间:2009-12-23 10:28:35

标签: javascript prototype design-patterns

我真的是javascript的粉丝。它真的是一个伟大的基于原型的OOP语言。现在我想学习一些其他基于原型的语言。真的对一些设计指南感兴趣,即如何在没有课程等的情况下管理代码。我应该选择哪种语言?基于原型语言的设计模式中的一些资源?

4 个答案:

答案 0 :(得分:22)

你的问题的答案是Self。 Self是原始基于原型的OO语言,也可能是最好的(当然,对于“最佳”的完全不科学和主观的定义)。 (事实上​​,恕我直言,它(与Newspeak一起)是最好的OO语言之一,期间。)

无论如何,关于Self的好处是它还包含很多优秀的documentation,包括但不限于着名的自我教程 Prototype-Based Application Construction Using SELF 4.0

old Self website at Sun Research

还有大量资源

这两个(连同上面提到的教程)几乎可以解释你所询问的内容。 (事实上​​,第二个问题几乎包含了你的问题“如何在没有类的情况下管理代码”标题中的单词):

然后,有自我;电影,一个关于Self编程语言,Self GUI,Self系统和Self VM的介绍性视频,由Self的首席设计师和开发人员主演。不幸的是,它于1995年在VHS上发布,当视频最终被数字化时,原始磁带已经降级。您可以在this site with Smalltalk videos上找到多个版本的视频。我个人觉得Large QuickTime最容易查看。

以下是其他一些有趣的自我链接:

自我gace的主要设计师Dave Ungar于9月在斯坦福大学发表演讲,名为 Self and self: whys and wherefores 。播放此演讲的视频is available

Self的一个小问题是它在1995年基本上被Sun抛弃,转而使用一种不起眼的小脚本语言,用于在电视机顶盒上制作电子电视指南中的动画卡通人物。 (您可能听说过它,它被称为Java。)因此,最新的稳定版本4.3仅在PowerPC上的OSX上运行(也许 x86)和Sparc CPU上的Solaris。几个月前,Self项目再次被一些前成员以及该语言的一些新粉丝所接受,现在它已被移植到x86上的Linux和OSX,可用4.4 Alpha 2发布可用,预计将在1月份发布最终版本。

其他一些有趣的基于原型的语言是:

  • NewtonScript(受Self启发)旨在成为Apple Newton PDA的应用程序开发语言;它也是JavaScript的直接灵感
  • Slate是“一个干净的板岩面向对象的Smalltalk风格的环境”
  • Io是一个基于原型的编程语言,受Smalltalk的启发(所有值都是对象,所有消息都是动态的),Self(基于原型),NewtonScript(差异继承),Act1(并发行为者和未来) ),Lisp(代码是运行时可检查/可修改的树)和Lua(小的,可嵌入的)
  • Ioke是一种基于原型的编程语言,受Io,Smalltalk,Lisp和Ruby的启发

至于你关于如何构建程序的问题,我必须承认我发现这些类实际上是模糊面向对象的设计。我的意思是,有一个 reason 为什么它被称为面向对象编程,而不是面向类的编程。

答案 1 :(得分:3)

我阅读的最佳指南是利用JavaScript的典型特性,在书JavaScript the Good Parts中,您也可以将这些指南应用于其他语言。在阅读本书之后,我改变了我在Python中编码的方式。

如果您想学习类似于JavaScript的语言,请先试用ActionScript。两者都基于相同的标准。这将是轻松和有益的。

答案 2 :(得分:2)

这是一个很大的主题。我建议你阅读this article on wikipedia。在底部,您将看到不同语言的列表。

答案 3 :(得分:0)

从广义上讲,javascript是目前使用的最常见(也许是唯一的)基于原型的语言,但您可以在Java和Python等许多不同语言中使用Prototype Pattern - 例如The wikipedia page

我建议你寻找有关原型模式的教程和指导,而不是寻找适合的特定语言,特别是因为你可能已经是最合适的语言。请注意,javascript可以通过Rhino在Java平台上运行。

原型模式的最佳全面介绍,捍卫其使用,是Steve Yegge's blog posts,'通用设计模式'之一。

史蒂夫·叶格(Steve Yegge)也指出了我们关于这个话题的Martin Fowler's article,我将要阅读!