gpt4 book ai didi

smalltalk - 是否可以从命令行运行 Smalltalk 脚本?

转载 作者:行者123 更新时间:2023-12-03 21:30:38 25 4
gpt4 key购买 nike

我发现了一个(可能已过时且不正确)blog post from 2004它声称不可能从命令行运行 Smalltalk 脚本。从那以后有什么变化吗?是否可以从命令行运行 Smalltalk 脚本?我做了很多谷歌搜索,我根本没有找到关于这个主题的信息。

有没有办法将 Smalltalk 脚本(例如这个)保存为文件,然后从命令行运行脚本?

Transcript show: 'This should be printed to the standard output.' printString; cr.

最佳答案

从命令行运行脚本对于几乎任何 Squeak 版本都是微不足道的,当然是 5.3 或更高版本。
基本上{path/to/myVM} {path/to/myscript}myscript 参数可以是指向 smalltalk 代码文件的 URL,也可以是简单的文件名。由于 Smalltalk 可以读取要安装的代码和直接从文件运行的代码,因此您可以添加一些新代码 - 如果您愿意,可以将其视为“脚本函数” - 然后运行您想要的任何内容。因此,至少在 unix 机器上,您可以制作一个运行您的虚拟机并附加您预期脚本的文件名的 shell 脚本,从而执行类似的操作myshellscript mystuff.st例如,考虑一个脚本来计算和打印第一个需要一百万位数字的斐波那契数。

#!/usr/bin/squeak /home/pi/Squeak/Squeak5.3-18560.image

!Integer methodsFor: 'mathematical functions' stamp: 'tpr 5/6/2019 12:22'!
fibonacci
"derived from https://www.nayuki.io/page/fast-fibonacci-algorithms"
"(1 to: 20) collect:[:i| i fastDoublingFib]"
"testing a quite large one - "
"8577 fibonacci= 13724780954457889052017147206983806244049002655849289934662148526555403650297300643609932653364630032094175733360509578504423049114004867523161091564824674600978308740378989479162611031273424686573759784740689516901416473328655422390895971263265867635819510949686102571388751758998017349379498918930220900180038324615253426530740473855269056304380498630108126734047701362218655030270360608989081398866489746698916626888016696892691933237089180504631788915650757757515944644732966345269202761471025651071790297611079540881155092137592980230998234868586211881093892491570520577408961869977892273540956424095750855208529072246641778982103984467921868950012668004047986803017482248992968482737462668300684879633714025755790485860328854796518843956263863014632532331145699658530054942590047273403691531821918862996422405159427262092477196755988981309029424760342802374213122162727840557722145891090413688461745240415668189577836068480363407847582529735341950500636735281963089675493707159434777756081146452522323681782226760627277553296721358921412115264845467834979154061137421532609247762981818564578019888974692581079593575783553856910367568474613323528337733872069223030834774749130478360574004172522316484339530942110067893000847800932306298725285623628731149337468217751734165148732164148285915275115006479682658150442259002271790547596033006363411193653337536041106069912826015502035140618407668385378737477702597473151509972754111640855347958033314453349633268543893894677097708945041254623018915871109789412793709229204261914803477697183287924195770678873001065036313926288444791424871512110658175954743584548831946767673488152740675550518235698898217693311515366329280005757014637854214769152690638778904780724293185353992279724740604674926819294787586671833537117545443846365508358918882"
| a b c |
a := 0.
b := 1.
self highBit to: 1 by: -1 do:[:i||d e|
d := ((b bitShift: 1) - a) * a.
e := a squared + b squared.
a := d.
b := e.
(self bitAt: i) = 1 ifTrue:[
c := a + b.
a := b.
b := c]
].
^a! !


| t f|
t:= [f := 4784969 fibonacci] timeToRun.
FileStream stdout
nextPutAll: 'fib(4784969) = ';
"nextPutAll: f asString; "
cr;
nextPutAll: 'time = ';
nextPutAll: t asString;
nextPutAll: ' mS';
cr.
Smalltalk snapshot: false andQuit: true
如果您保存它并将其设置为可执行,则第一行将运行脚本(这是来自 Raspberry Pi 并且/usr/bin/squeak 是发行版的标准部分),并将脚本名称作为参数。它加载了一些代码来实现一个有趣的聪明算法,运行测试,输出到标准输出,最后退出。在 Pi 4 上大约需要 3 秒。
现在只需运行 .st 文件即可 - ./myscript显然,也可以做一些巧妙的技巧并使用 binfmt_misc 工具注册一个魔术模式,这样就可以使 st 文件有自己的 #! token 。

关于smalltalk - 是否可以从命令行运行 Smalltalk 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com