作为思想工具的符号 - 我们到底有多远?

Rob*_*Rob 15 programming-languages

最近我比较了一个旧的Windows DOS命令来删除目录中的所有文件与脚本等效 - 我注意到"现代化"版本需要输入50倍的击键来实现相同的结果.

这些额外的击键是否提高了生产力?它们是否服务于已经量化的目的,例如降低编码错误率?

我认为这个问题是,主要是为了适应冯·诺依曼架构的计算机语言 - 而不是我们的思维方式 - 迫使我们通过在头脑中处理三个问题域来解决问题(a)原始探测(b)问题重组以适应Von Neumann架构(c)在(a)和(b)之间来回转换所需的映射规则.

根据经验,计算机语言符号的效率更高 - 从某种意义上说,它使您能够直接处理手头的问题 - 编码开销越低.较低的编码开销使得问题解决更容易处理,从而减少了编码和错误的空间.绝对不应该增加工作量!

您认为哪种计算机语言可以用于最有效的问题解决平台 - 因为它使您能够直接根据原始问题进行思考而无需进行跨域问题解决?

为了兴趣,我为Conway的生活游戏做了37个不同解决方案的字节数,并提出了以下统计数据:

J : 80, 
APL : 145, 
Mathematica : 182, 
Ursala : 374, 
JAMES II : 394, 
SETL : 559,
ZPL : 652, 
PicoLisp : 906, 
F# : 1029, 
Vedit macro language : 1239, 
AutoHotkey : 1344, 
E : 1365, 
Perl 6 : 1372, 
TI-89 BASIC : 1422, 
Perl : 1475, 
PureBasic : 1526, 
Ocaml : 1538,
Ruby : 1567, 
Forth : 1607, 
Python : 1638, 
Haskell : 1771, 
Clojure : 1837, 
Tcl : 1888, 
R : 2031, 
Common Lisp : 2185, 
OZ : 2320, 
Scheme : 2414, 
Fortran : 2485, 
C : 2717, 
ADA : 2734, 
D : 3040, 
C# : 3409, 
6502 Assembly : 3496, 
Delphi : 3742
ALGOL 68 : 3830, 
VB.NET : 4607, 
Java : 5138, 
Scala : 5427   
Run Code Online (Sandbox Code Playgroud)

(参见http://rosettacode.org/wiki/Conway's_Game_of_Life)

评论?

请具体说明您所评判的语言所采用的符号方法的优点,并从相当高的水平进行 - 最好是具有直接的项目经验.

lke*_*ler 8

你以康威的生命游戏为例,没有任何语言可以比APL更优雅或更有效地解决问题.原因是非常强大的单个或多个字符运算符中的完整数组/矩阵操作.

请参阅:APL发生了什么?以及关于我的组合学任务的故事,将APL与PL/I进行比较.

如果你在解决问题的按键方面谈论"高效",那么APL将很难被击败.

对于APL解决康威的游戏,你的字节数为145是错误的.这是一个非常低效的解决方案,你正在看.

这是一个解决方案:

替代文字http://catpad.net/michael/APLLife.gif

那是68个字节并击败J解决方案.我认为还有其他更好的APL解决方案.

另请参阅此视频.

  • Dyalog APL现在允许您编写[GoL in 17 characters](https://youtu.be/3FjYly2G_QI?t=9m23s). (2认同)