展开讨论

经验与复盘经验摘录 · 机器翻译

然后我尝试编写了一个Common Lisp版本

… 然后我尝试写了Common Lisp版本。打开文件,遍历每一行,对单词进行哈希处理并默认得到0,以及排序在CL中都相对容易,但将一行拆分为单词却是一个独立的项目。而且获取命令行参数需要实现特定的设施,这些并没有被CL标准化!至少有string-downcase存在。这只是一个消遣,所以我没有完成。(在Forth中,你几乎不得不编写类似Knuth的Pascal的东西,因为Forth甚至没有哈希表和大小写转换。)我在Smalltalk上的经验更有限,但类似。你可以在它里面做任何你想做的事情,它非常灵活,工具很好,但几乎所有事情都需要你编写比Perl、Python、Ruby、JS等更多的代码。这意味着你会有更多错误,所以需要更长时间。而且它真的不想与其他世界交流——你根本无法从Unix命令行调用Squeak的方法。…

源讨论Forth:一种可以自我编写的编程语言原帖 168 条评论 · 导入时统计
4

这条内容在回应什么?

父级讨论 · 节选

BE

为什么像这样的语言无法扩展呢?这并不是我第一次看到一种强大的语言被遗忘。其他例子包括SmallTalk和Common Lisp(社区很小)。 这是因为某些语言“太强大”了吗?这说明了我们行业的情况如何?说明我们这个物种还没有足够先进,无法处理这些语言的全部能力吗? 我这么说是因为看起来被“简化”的语言似乎在我们的世界中占据绝对主导地位(如Python、Ruby、JS等)

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 4

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

CO

那篇发表在CACM上的文章介绍了Knuth的解决方案[1],也对Knuth的方法提出了一些批评,并提供了一个使用shell管道的替代方案: tr -cs A-Za-z $'\n' | tr A-Z a-z | sort | uniq -c | sort -rn | sed ${1}q(我将换行符转换为`$'\n'`以提高可读性,但文章中的原始管道在当前的MacOS系统上可以正常工作) 1: https://dl.acm.org/doi/pdf/10.1145/5948.315654

完整原文
IG

> 它真的不想与其他世界交流——你可以忘记从Unix命令行调用Squeak方法。 你似乎非常确定! 这是一个在Ubuntu命令行上运行的Pharo Smalltalk程序示例,计算结果被写入到标准输出—— /opt/src/pharo-vm-Linux-x86_64-stable/pharo --headless nbody.pharo_run.image Include/pharo/main.st 50000000 -0.169075164 -0.169059907 https://benchmarksgame-team.pages.debian.net/benchmarksgame/... ~ 这是一个对应的Perl程序—— https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

完整原文
IG

> 你可以在其中做任何你想做的事情,它非常灵活,工具很好,但几乎所有事情都需要你编写比在Perl、Python、Ruby、JS等语言中更多的代码。 鉴于Smalltalk比JS早很多年:如果这是真的,那么它并不总是如此。 鉴于Smalltalk是GUI WIMP派对的早期参与者:如果这是真的,那么对于GUI WIMP的使用来说,它并不总是如此。

完整原文
EA

> 将一行拆分为单词本身就是一个项目。 这是真的吗[1]?我下面的版本会累积字母字符,直到遇到非字母字符,然后增加累积单词的计数并重置累加器。 (let (c accumulator (counts (make-hash-table :test #'equal))) (handler-case (loop (setq c (read-char)) (if (find c "ABCDEFGHIJKLMNOPQRSTUVWXYZ" :test #'char-equal) (push (char-downcase c) accumulator) (when accumulator (incf (gethash (coerce (reverse accumulator) 'string) counts 0)) (setq accumulator nil)))) (end-of-file () (when accumulator (incf (gethash (coerce (reverse accumulator) 'string) counts 0)) (setq accumulator nil)) (maphash #'(lambda (word count) (push (list count word) accumulator)) counts) (format t "~{~&~{~a ~a~}~%~}" (reverse (last (sort accumulator #'< :key #'car) (let ((n (second sb-ext:*posix-argv*))) (if n (parse-integer n)…

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。