我遇到了J/K/APL几个月前,当时我的工作方式,通过一些 欧拉项目 问题,并感兴趣,至少可以这样说。对于每一个优雅的看20线python解决方案我产生的,还会有一个gobsmacking20 字符 J解决了在的十分之一的时间。我一直渴望学习一些基本J,并取得了一些尝试在捡的词汇,但没有发现学习曲线会很陡峭。

给那些熟悉这些语言,你会建议投资的一些时间来学习的一个(我想J在特定的)?我会这样做更为目的,满足我的好奇心于职业晋升或一些这样的事情。

一些个人情况来考虑,如果你照顾:

  • 我喜欢数学,并使用它每日在我的工作(如数学家,启动)但说实话我真的不觉得有限的工具,我用(如python+顽固),所以我不能用那个借口。
  • 我没有特别的工作的愿望在财务行业,这似乎是主要的港口对K用户最少。再加上我真的应该学习C#如下语言为这是主要语言的,我的工作。所以从实际的角度来说,J几乎可以肯定 不应该 以下一语言,我学习。
  • 我是合理的熟悉MATLAB所以使用一系列基础编程语言不构成一个巨大的范式转变。

任何建议从那些熟悉这些语言,将不胜感激。

有帮助吗?

解决方案

几千年前,我是一个APL程序员。成千上万,我的意思是在70年代时的定义符设置意味着我们有特殊的印刷端与APL键盘和字符集和IBM selectric typeballs的特殊字符,等等。

我去了一个讲座,由肯*艾弗森"为什么APL是酷"。

他的论文是这样的。曾几何时,只要司是一个严重的数学业,保留用于研究生。符号之类的东西重复的十进制的扩展涉及一大堆的数学象征意义。曾几何时,甚至一些喜欢"消极的"数量是必要的阐述表示。

多年来--因为我们来到一个更好地了解这些抽象的--我们想出了更多的紧凑的符号为复杂的概念。

点APL(J及K)总结算法大到整洁的表示法。

如今,我蟒蛇的程序员。我找到我的早期暴露于APL扭曲我的大脑通过迫使我问"这是什么意思?","这是一个可重复使用的运作的?","什么是一个精辟的概要为所有这些算法绒毛?"

此外,正如我追求的 欧拉项目 问题的"编程功能的精简"的蟒蛇支持我的"杜松子酒浸泡的回忆APL"是两个非常有用,在处理练习。

其他提示

J是我的主要语言编程项目Euler和个人使用的工作。我从来没遇到一个更好的语言阵列处理和默示的编程的范例是有用和发人深思的,一旦你得到了它的窍门。(有用的,因为它是发人深省的,在事实。) 达到入门级的能力语言是困难的,阅读其他人的代码是一个在智力上有纪律的活动,但是坚持不懈具有重大的回报,因为语言是电力、灵活性和简洁。

这就是说,为什么我保留它 个人 在工作中使用的是(1)没有其他人在工作中使用它,(2)学习曲线陡峭的足够,因此,它是不合理的,我问我的同事们把它捡起来,(3)事实上,你可以建立复杂的程序在一行代码,使它具有挑战性的阅读一行代码,尤其是如果你没有把它写你自己。(我希望至少花半个小时学习一行代码使用的十个或多个经营者,除非他们使用这样一种方式,我了解基本原理彻底。)

一些例子的有趣J功能:

1)任何功能定义上操作一个单一的数可以操作上的阵列的任意行排名。例如:

NB. totient(n) = n * \prod_{p|n} (1 - 1/p)
totient=: * -.@%@~.&.q:

NB. Finding the totient of 10
totient 10

NB. Finding the totient of all numbers from 1 to 10
totient"0 (1+i.10)

这是完全相同的功能,只的操作上的原子数(单元组件)的一1xN输入阵列。同样,可以采取一种功能定义的工作等级的两个阵列(矩阵)并将其应用于任何列的更高的排名只是使用"(秩)结合。

2)可以采取任何理论上可逆功能J和反它的'循环它倒退'.例如,

NB. Converts an array of binary digits to a decimal number
(#.) 1 0 1
5

NB. Converts a decimal number to an array of binary digits
(#.^:_1) 5
1 0 1

我曾在J与APL对于大多数最后25年可以彻底的建议两者。我仍然恢复到一个或另一个当我有 任何 形式的临时数据分析做的,我已经用它在项目的欧拉。

如果你感兴趣的项目Euler然后J绝对是一个选择。它支持无限的精确度整数和素使它成为一个非常好的配合。

我让我的生活与APL自1980年以来。我正盼着继续这样做对某些多年来。它不仅是非常有趣的使用APL,语言提供了出色的调试的功能。现代化的实现方式是完全成熟的功能性的语言和面向对象。

我见过很多人多年来问我如何只要我想我就可以继续与APL。那些家伙是dbase和PL/1和陵和Pascal语言等和C和重点和其他程序员。得到它的?!

J是一个有点像精灵:它需要保持内部一瓶。保持的很多批软件J是一个严重的痛苦。保持接口(Windows或基于网络的,因为是的话,你可以安装J回答Apache来生产一个网输出)在J是一个实验性的,很少知道圈子的地狱。

另一方面,使用J是好的如果你想:分析、筛选、分析、紧缩,等一些数据的摆弄,以图出现粮食的一个算法,或者留下深刻印象的 互联网 与尽可能短的方式来计算有多少三角形合成一圈或什么不是。

我来到非常接近加入J作为一个处理器在我的职业生涯的配置文件 careers.stackoverflow.com, 但我最终离开了。我说,使用J是罚款,生产J,但是,不是。

编辑:

这是一段时间以前。我仍然认为不完整J解决方案在生产(也就是说,所有你的视).由于原始的反应,我已经使用了J如COM在C#项目,其中J是提供一个大的矩阵,这将是笨重的管理C#中,有很大的满意度。

我们工作的一部分是使数据的模式和代码 说话.这是不容易的桥质量和J非常简洁的语法。几个框架,与J,有容易的工作-与IDE的,并有足够的支持,以允许一个安排码在力所能及的可读方式。J's über矩阵的能力不赔偿它所缺乏的。

我认为你的3个点显示,你不需要学习的J.然而,我不能想到的任何情况下,学习一种新的语言是有害的。

把时间要了解一些你感兴趣的(或者任何新的语言)总是提高你其他的编程技能。你学会了不同的方法问题,你可能能够实现不同用其他语言。

另外,与最小的语法J,这将是一个良好的语言,以确保你得到正确的结果,当你实施解决方案的另一种语言。

回埃尔达尔天我是一个APL语言开发、编码在370汇编器。我移植J OS2,但从来没有学会如何使用它真正的工作。我目前正在爪哇和PHP和评估蟒蛇。之后的第3段的蟒蛇教程中,我被击中的许多相似之处,它已于APL,这给我带来了这里。

我强烈推荐的学习APL或J作为一个知识产权的行使。它会改变你的思维方式编程(经你的大脑)和可能帮助你的蟒蛇的编码。还有一些工作有对于APL以及J程序员,并可能小的程序员,于就业机会。

我用来作为一个APL程序员对于几年前的1970年代。我喜欢的语言,但没有使用它多年。

这是一个伟大的语言对于一些东西,但是我真的不能看到使用它的网页发展为例子。

它是什么伟大的是统计资料和矩阵的行动。你可以解决的一个衬垫编程问题,在3个字符。这是很容易证明的正确性,LP实施于一个其网页中C为例。

所以如果你想了解它对于学习的快乐,我说的去了。加强你的工作前景,以及可能有许多其他事情,以了解它会留下深刻的印象,潜在的雇主更多。

这是有趣的确认对于我,一个大会第五十事岁的人。

今天早些时候,我决定学习新的,21世纪的编程语言中的一段时间间隔后的27年做零编程。我蟒蛇,当随机的,可怕的gui基础和面向对象的世界,我们都生活在现在。

令我高兴的是,我的年收入的一生作为APL家伙早在80年代初意味着,我真荏苒通过的材料,可以即时的理解:)只是想我分享。

是的,学习APL/J/K,它会给你一个独特的看到什么是可能的。

我指出,@MPelletier的"多少三角形合成一圈"和其隐含的"...但不是真实世界的问题,"是一个小小的短视的。是的,J软件的IDE缺乏一些事情,但是,建设一个自己的IDE不是一个大问题,一个良好的IDE可以掩盖一个糟糕的语言(第20条至20字收缩 可以打了个喷嚏。) 我已经做APL,只要@KaiJaeger有,如果不是更长时间,而我的心也可以扭曲,但是我从来没有快乐的编程与其他任何东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top