common-lisp - 为什么没有用 Common Lisp 编写的 Common Lisp 实现?
问题描述
最近开始学习 cuis-smalltalk,没有意识到 Smalltalk 的 OOP 与 CLOS 相比有多么深奥(我使用的是 Ruby)。我了解到 Smalltalk 是一个自身实现的反射系统的好主意。我发现 Ruby 有Rubinius,但是当我寻找用 Lisp 编写的Common Lisp实现时,我找不到类似的东西。似乎没有用 CL 编写的 CL 发行版。
在带有 CLOS 和 slime 的 Common Lisp 中,您可以做所有可以用 Smalltalk 开发环境做的事情。
但是我有一个问题,如果 Common Lisp 实现本身对 Common Lisp 有用吗?或者不会为语言添加任何特殊内容,因为同音性、宏和 MOP 可以处理所有这些。是否存在无法完成的技术限制?
解决方案
示例:SBCL
大多数情况下,只有大部分运行时是用 C 实现的。
示例:Clozure Common Lisp
内核是用汇编语言和 C 语言编写的。
示例:夹层
Mezzano是一个完全用自己的 Common Lisp 编写的操作系统。它在金属上运行-> 意味着可以将其作为操作系统启动。
Smalltalks 都不是完全用 Smalltalk 编写的,Rubinius 也不是完全用 Ruby 编写的
这与诸如 Squeak 或 Pharo 之类的 Smalltalk 实现没有什么不同,其中大部分部分是用 Smalltalk 编写的,虚拟机的某些部分是从 Smalltalk 生成的,而虚拟机的某些部分是用 C 编写的。
Rubinius 的部分内容是用 C++ 编写的。
推荐阅读
- shell - 如何在shell脚本中获取用户输入作为jq中的值
- javascript - 模块“CoreModule”声明的意外值“TransportData”。请添加@Pipe/@Directive/@Component 注解。在内拉 8
- selenium-chromedriver - 我在使用 moveToElement 由 Google 帐户自动创建测试时遇到问题
- python - 如何以与 setuptools 相同的方式在 bitbake 配方中使用 setuptools3 存储 pyc 文件?
- android - 从 simpleperf 记录中获取应用程序的总 CPU 使用率
- jsf - 在 JSF 应用程序中添加 HSTS 和 X-FRAME 配置
- r - 如何管理在包中创建德雷克计划的函数的全局变量警告?
- python - 如何将图像从 MongoDB 加载到 PIL 对象中?
- while-loop - 使用 While 控制器迭代 csv 文件
- google-apps-script - .csv 附件导入谷歌表格后如何删除电子邮件