寻找可以编写代码"in the debugger"的编程语言



我曾经使用Smalltalk进行开发,它是完全交互式的,您可以在任何浏览器(包括调试器(中更改代码,并且更改在应用程序中立即生效(无需重新启动或任何东西(。我的问题是是否有其他语言具有此功能。除了自我,我什么都不知道,但我担心自我真的死了。

Java有热代码替换,它只能部分工作(只要公共方法不改变(。JRebel使它变得更好。但我正在寻找一种从一开始就支持交互式开发的语言,比如 Smalltalk。请注意,我的意思不是 REPL。REPL 仍然与应用程序分离,因此在 REPL 中执行的内容不会像交互式编程语言或开发环境那样立即在应用程序中生效。

你说你"曾经用Smalltalk开发"。我的回答是,也许你应该重新审视一下!Smalltalk的开源版本和商业版本在支持现代应用领域和环境方面都取得了长足的进步。

据我所知,除了Smalltalk之外,没有任何可用的环境可以为您提供与Smalltalk相同的环境。

但是Smalltalk也可以给你客户端Web编程,使用Amber或PharoJS(两者都给你一个你描述的调试版本(,使用Seaside的服务器端Web编程(以及几种替代方案(,移动应用程序(使用PharoJS(,软件和遗留应用程序分析,嵌入式编程,独立服务器,以及更传统的桌面编程。

Pharo也许是最容易开始的地方(也是PharoJS的基础(,尽管Squeak和CUIS也有其吸引力。如果你想看看商业支持,有GemTalk及其事务对象数据库,Cincom和实例化

REPL 如何与应用程序分开?

在 Common Lisp 中,如果将应用程序加载到 REPL 中并与之交互,则 REPL 中的每个操作都会立即在应用程序中生效。 您可以保存状态并在下次启动 REPL 时重新加载该状态。

相关 Jupyter 笔记本也可以保存和执行。它们支持多种语言。我不知道他们是否像Smalltalk和Common Lisp那样支持一个活跃运行的应用程序。

最后是派克。 该语言支持在运行时重新加载代码。 它通过替换已编译的类并从替换类实例化新的对象实例来实现这一点。

pike已被用于创建一个名为open-sTeam的平台,其中现有对象的代码可以在运行时更改,类似于Smalltalk。 它通过将实际对象包装在代理对象中来实现这一点。(普通代码只与代理对象交互,这些对象指向真实对象的最新版本(

我相信用 Python 编写的 Zope 版本 2 也能够在运行时替换代码。

不过,这些替代方案都没有像Smalltalk那样方便的浏览器和调试器。 如果你使用Emacs来控制你的Common Lisp图像,你可能会接近Common Lisp,我猜Zope 2有一个Web界面来管理其代码。

我会坚持使用Smalltalk。

您可能想尝试Smalltalk/X-jv分支。 我称之为最好的未知Smalltalk:)。

只是我的 2c。

我认为Smalltalk是它自己的事情。

也许你应该更多地研究解释器语言而不是编译器语言 - 例如,当做Web开发时,php是许多例子中的一个例子 - 你更改代码,结果是立即可见的,如果你直接在(本地(Web服务器上更改代码。另一种解释器语言是python(也存在编译器(。

另一种可能性是搜索编译器语言的解释器,例如Cling - 交互式C++解释器。

希望有帮助。

相关内容

最新更新