标签: selflanguage

基于原型的OO有哪些优于OO的优势?

为什么基于类的OO如此受欢迎而不是基于原型的OO?他们是否在学校教授后者?虽然Javascript是基于原型的,但大多数人主要使用它,或者通过试图模拟基于类的系统的框架.

我知道Sun已经对Self进行了一些研究- 是否有关于原型oo的其他任何知识来源?最好是可以自学的东西.

我找到了一本包含已发表论文的书:基于原型的编程:概念,语言和应用

有人读过吗?

-

所以我给了我最大的回答.不过,我真的不太满意.我本来希望听到更多技术性的答案.也许我没有很好地解释自己.

javascript oop programming-languages class selflanguage

42
推荐指数
6
解决办法
6485
查看次数

Self和Smalltalk之间的差异

我只是在寻找将Self与Smalltalk区分开来的原因.

这不应该是大猩猩与鲨鱼的问题.我不是在找一个更好的理由,我只是把一个定义为与另一个不同的东西感到困惑.在阅读了大约2个小时后,它们对我来说似乎都是同一种语言,并且用一些代码捣乱(旁白:我终于理解了Smalltalk版本的"Everything is a object".我必须说,它真是太棒了.哈哈!我认为C#已经钉了......但它甚至没有接近这个!XD)

我在某个地方读过的随机内容,过去几年的某个时间:

  • Smalltalk赋值和消息/消息传递是唯一不是对象的东西,但是在Self中,即使这些东西在对象框架中也占有一席之地
  • "自我甚至比Smalltalk更加纯粹的OO".我无法找到更具体的阐述.

oop paradigms smalltalk selflanguage

17
推荐指数
2
解决办法
1694
查看次数

代码为系统映像(序列化运行时环境)vs源(文本)

今天几乎所有传统语言都将程序员的意图表示为文本源,然后(为简单起见)将其转换为某些字节码/机器代码并由VM/CPU解释/执行.
还有另一种技术,出于某种原因,它并不是流行的日子:"冻结"VM的运行时间并将环境(符号绑定,状态,代码(无论是什么))转储/序列化为图像,然后您可以传输,加载和执行.因此,您不能以通常的方式"编写"代码,而是在"运行时"中使用新符号修改环境.
我看到这项技术的巨大优势:

  • 功率提升的REPL:您可以在编写代码时自省代码,部分评估代码,直接测试代码并查看更改的效果.如果你搞砸了再做一遍,或者最后将它提交给环境,那就回滚一下.无需长编译运行调试周期;
  • 关于动态语言的一些常见问题(它们无法编译,因为编译器无法静态推理环境)被忽略了:解释器知道所在的位置,并且可以用静态偏移替换符号引用并进行其他优化;
  • 程序员的大脑更容易:你从头脑中"卸载"有关代码的不同上下文信息,即你​​不需要跟踪你的代码已经对某些变量/数据结构做了什么,或者哪个变量保存了什么:你看到了它直接在你眼前!通常的方式(编写源代码),程序员在代码中添加新的抽象或注释以澄清意图,但这可能(并且将会)变得混乱.

问题是:这种方法的缺点是什么?我没有看到任何严重的劣势吗?我知道,它有一些问题,即:

  • 尝试用它构建一个模块系统,这不会导致依赖地狱或严重的链接问题
  • 安全问题
  • 尝试对这些图像进行版本控制并启用并发开发

但是,这些是,恕我直言,可以用一个好的设计解决.

EDIT1:关于"已关闭,主要是基于意见"的状态.我已经描述了两种现有的方法,很明显,一种方法比另一方更受欢迎.我不知道其原因是纯粹的"以意见为基础"还是有研究支持,但是即使他们是以意见为基础的,如果有人将这些意见列为开发的原因,那么实际上应该回答我的问题.

lisp smalltalk selflanguage vm-implementation

5
推荐指数
1
解决办法
92
查看次数

4
推荐指数
1
解决办法
319
查看次数

什么是"自编程语言"

我现在正在使用Squeak4.1学习SmallTalk.我使用Squeak by Example作为教程,在这里我反驳了一个删除,"Morphic是由......开发的,用于自编程语言"任何人都可以对自编程语言的含义给出一些暗示吗?这意味着smtalltalk是一个自编程语言?

programming-languages smalltalk selflanguage

3
推荐指数
1
解决办法
1596
查看次数