3 ms·
I am a bit disappointed by the low ratio of technical content to rambling. And much of the technical content seems to set apart APL from C, but not from many mo
by perlgeek 13y ago
I am a bit disappointed by the low ratio of technical content to rambling. And much of the technical content seems to set apart APL from C, but not from many modern languages.
For examples languages like Fortress contain primitives for parellelized loops, and most modern languages also contain enough functional programming that you rarely have to write for-loops.
Function composition and interactivity aren't a unique feature of APL languages either.
There are some other things that are important for programming today: Maintainability, richness of available libraries/modules, packaging, versioning and so on.
Where would I even look for existing APL libraries? My searches for a HTTP library for APL (for example) have turned up nothing, while searching for a HTTP library for several other languages that came to my mind brought up useful results.
- klibertp 13y agoThere is HTTP library in J (APL "spiritual successor") standard library. There is one for APL for sure - it's just less popular and so the google results are less helpful. Unique features of J (I'm writing about J because I know it, while I don't know APL) are that all the basic verbs (functions) can operate on arrays as easily as on atoms. There is no special syntax or feature for adding two matrices, for example, standard `+` verb does it naturally. The second unique feature is a tacit - point-free - style by default. This means that function composition is the default, not function application. You can define new words by just slapping old ones together, without worrying about threading params through them. The third unique feature (and probably unique to J, previous are found in APL too) are complex rules of composition (hooks and forks) as well as words that modify functions. You can express very complex things in very little space thanks to this. J is very interesting, unique language which are very well suited to one thing - very fast and efficient array transformations - and completely useless for other things. I hear it's used in a financial and banking sectors, for rapidly prototyping and sometimes deploying statistical and mathematical algorithms. If you have a good enough use case, then learning J will pay off. For anything less than full time commitment, I think that R od Python+Pandas is better. Still, I'm very happy I tried to learn J, as it's completely unlike anything else and it helped me greatly to understand numpy/pandas for my main job.