问题标签 [smalltalk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
5707 浏览

macos - Smalltalk 是适用于 Mac OS X 的可行开发语言吗?

每次我看到关于软件开发的讨论时,总会有人建议或赞扬 Smalltalk 的品质,无论是优美的语言结构还是基本上所有内容的更好实现。

所以我很好奇,有人在 Smalltalk 开发吗?Smalltalk 真的可以用来在 Mac 上开发软件吗?或者 Smalltalk 的目标平台是什么?这种看似奇妙但不受欢迎的语言的典型代表是什么?

0 投票
5 回答
5897 浏览

python - Smalltalk 和 python 的区别?

我现在正在学习 Smalltalk。它看起来和 python 很像(其实恰恰相反,python 和 Smalltalk 很像),所以我在想,作为一个 python 爱好者,是否真的值得我去研究它。

除了消息传递之外,Smalltalk 和 python 之间还有哪些显着的概念差异可以让我看到新的编程视野?

0 投票
6 回答
1409 浏览

php - Smalltalk 源代码浏览器对其他编程语言有多大用处?

我正在为 python、ruby 和 php 开发一个 IDE。

我自己从未使用过 Smallltalk(即使它在我上大学时非常流行)我想知道仅显示一种方法的经典 Smalltalk 浏览器是否真的是对经典文件编辑的改进或不是。

我自己喜欢在课堂上尽可能多地进行概述。现在我在两列模式下使用 24" 1280x1920 显示器,它可以显示很多行。

我个人不得不想知道如果你也有一个好的代码折叠编辑器有什么好处,用户可以通过一个按键折叠所有的def(函数代码体)。

但是我在新闻组中不时看到要求使 xxx 变得更小话的请求。我知道有些人可能想要基于图像的版本,但浏览器是 Smalltalk 的第二大不同发明。

0 投票
1 回答
80 浏览

smalltalk - 如何摆脱 VW 3.1d 和 ENVY 中的非托管代码

我有一个旧的 VW3/ENVY 图像,其中一个包裹作为非托管代码加载(正是Mastering ENVY/DEVELOPER警告的情况)。不幸的是,这个问题发生在很久以前,在没有加载包裹的情况下“返回”到图像已经太晚了。

显然,有一种方法可以解决这个问题(我们有一个开发映像已经解决了这个问题,并且有正常的配置映射包含与非托管包裹完全相同的代码,但它们无法加载),但确切的方式早已被遗忘(并且将特定的开发映像作为新运行时映像的基础存在一些问题,因此我需要找出如何再次执行此操作)。

理论上,应该可以从配置图中移除包裹并重新加载代码。在实践中,所有正常方式(使用 ParcelBrowser 或直接调用 UnmanagedCode>>remove)都会失败。我什至尝试从方法字典中手动删除有问题的选择器,但过了某个点(涉及调用#primBecome:)整个图像完全挂起(我什至无法进入调试器)。我开始破解类和方法的实例,希望我能欺骗 ENVY,让他们认为这些特定的方法是正常的版本化代码,但还没有成功。

周围是否有任何 smalltalk/envy 大师仍然记得足够多的 VW 3 来为我提供任何指示?

状态更新 经过一周的尝试解决问题后,我终于做到了,至少部分做到了,所以以防万一有人感兴趣......

首先,我必须修复未管理代码的文件指针(否则,所有试图触及方法的所有内容都会引发异常)。看起来 ENVY 扩展了 Parcel,因此理论上,所有整数文件指针void在加载时都会更改为 ENVY 的文件指针,但在我的情况下,我必须手动完成(Parcel 为其定义的所有选择器提供枚举)。另一种方法是调整filePointer代码,但这不容易在需要的每个图像上自动完成。

然后,可以丢弃包裹,丢弃包裹信息,但保留代码。官方的“丢弃”机制需要有一个有效的更改文件(envy 不使用它,因此必须手动设置,然后重新设置)和包源(幸运的是我们有)。

为了能够对方法进行任何更改(手动或通过从 ENVY 加载应用程序或类),他们需要摆脱其非托管状态。这可以通过手动调整来完成TheClass>>applicationAssocs(我还删除了对 UnmanagedCode sich 中类的所有引用作为时间戳,并删除了对丢弃包裹的引用)。我实际上从我的老板那里得到了一些关于如何达到这一点的信息,但是直到我自己几乎想通了,我才能够理解这些指示。

这最终允许我加载和重新加载所有包含这些类的应用程序。理论上。实际上,每当我尝试加载较新版本的应用程序(包含以前在包中的代码)时,图像仍然完全挂起。

事实证明,崩溃与不受管理的代码完全无关,而是与相关包裹已修改的事实有关,由于缺少和/或未初始化的类变量(该方法未调用)InputState>>process:而导致异常InputState>>initialize直到新process:方法到位之后)。我不得不修改Notifier类以将所有异常转储到文件中以找出发生了什么。将类变量添加到类的源(而不是通过反射添加),通过挂起输入处理线程toBeLoadedCode并在loaded方法中重新启动它并创建新版本的应用程序甚至解决了这个问题。

现在一切正常,理论上。实际上它仍然无法使用,因为重新加载 WindowSystem 或 VisualworksBase 应用程序会导致它们的初始化块运行,并且很多设置都被重置为默认值 - 字体和字体大小、窗口颜色、UI 设置......而且没有似乎可以将设置保存到文件并稍后加载它们,或者只是查看所有设置是什么(官方设置菜单没有显示所有内容,或者我们有一个经过大量调整的图像......这么多从头开始重建它)。但这是一个完全不同的问题。

0 投票
6 回答
2068 浏览

smalltalk - 从 Squeak 或 Pharo 调用 shell 命令

如何从 Squeak 和 Pharo 调用 shell 命令?这些环境中是否有任何东西,比如某些 unix 语言中的 system() 函数来运行外部 shell 命令,或者反引号(不能让它们在这里对编辑器起作用,但是当你按下“左键”时你会得到什么1" 及以上"TAB") 来捕获命令的输出?

0 投票
8 回答
2346 浏览

scalability - 海边有规模吗?

Seaside 被称为“异端网络框架”。使它成为异端的原因之一是它有很多共享状态。然而,在我目前的理解中,这会阻碍轻松扩展。

另一方面,Ruby on rails 共享尽可能少的状态。众所周知,它可以很好地扩展,即使与现代 smalltalk vms 相比它的速度很慢。flickr 使用 php 并且已经扩展到一个非常大的基础设施......

那么有人对Seaside的扩展有一些经验吗?

0 投票
3 回答
473 浏览

java - 针对 Java、.NET 或 Ruby 的 Smalltalk 编译器

寻找给定 Smalltalk(实例化)将发出 Java 字节码、.NET CLR 或 Ruby 的 Smalltalk 编译器。不寻找移植实用程序,因为我想将应用程序留在 Smalltalk 中。

我在谷歌上搜索了解决方案,并遇到了一家拥有网站 ( http://www.smalltalkmigrations.com/ ) 的公司,但似乎他们不再经营业务并寻找其他选择。

0 投票
5 回答
3644 浏览

python - Smalltalk(例如 Pharo)与 Python 相比如何?

我一方面看到了Smalltalk 和 Ruby以及另一方面Ruby 和 Python之间的一些比较,但没有看到 Python 和 Smalltalk 之间的比较。我特别想知道实现、语法、可扩展性和哲学的根本区别是什么。

例如 Python 似乎没有元类。Smalltalk 没有生成器的概念。而且虽然都说是动态类型的,但我相信 Python 不做动态方法分派。它是否正确?

0 投票
3 回答
1031 浏览

smalltalk - Smalltalk 集合和排序

我需要一个可以在 Smalltalk 中执行选择排序的项目集合。

最好使用什么?列表、集合、链表等?

0 投票
2 回答
705 浏览

smalltalk - Smalltalk 中的类型化集合

我正在尝试学习一些 smalltalk 编程……我正在尝试创建一个 myClass 类型的对象列表。最好的方法是什么?

我有以下内容:

如我错了请纠正我。

那么我应该如何将元素添加到我的列表中呢?