最近读了一篇博客:APL Is The Best!
在这篇博客里,作者简单介绍了APL,并认为这个语言非常有学习的价值。
“A language that doesn’t affect the way you think about programming, is not worth knowing.” - Alan Perlis
我大致看完了整篇博客,以下是我的一些疑惑:
-
APL 语言是否更接近汇编而非高级语言?
比如:作者在文章的最开头引入了
old style APL
从这张图里不难看出,
old style APL
似乎更接近汇编语言?现在好像很少人在写程序之前先画流程图了吧?这样的图,我只记得在学C的时候有画过,后来就再也没画过(倒是像IDA这样的反编译软件能自动导出这样的图来)。 -
APL 语言不支持结构化编程?
APL uses goto. If you don’t know how to write good code with goto statements, Knuth taught how to do it.
并且作者在文末给出了几个用
goto
模拟if else
的方法。。。 -
APL 语言含有大量符号,该如何记忆?
There’s no way you can remember all these symbols the first time. If you come across a symbol you can’t remember, write it down like I did here in this list:`
理论上讲,一个语言的
primitive operation
应该越少越好。不是很理解为什么APL会有如此众多的符号? -
APL 语言是否有对应的数学理论?
到目前为止,
APL
唯一能让我眼前一亮的特性是它的向量/矩阵操作。不过这些操作的背后是否有其对应的数学理论?比如:是否可能纯粹使用向量/矩阵变换来实现一般的编程需求? -
希望能推荐一些APL语言的入门学习资料。
最好是能讲 APL 语言设计背后的数学理论和编程哲学,而不是把它仅仅看成一种支持向量/矩阵运算的汇编语言。
多谢。