5 ms·
> Having used APL professionally for ten years from the early 80's to early 90's That might be part of problem. Things have happened since then: Dyalog has ma
by abrudz 6y ago
> Having used APL professionally for ten years from the early 80's to early 90's
That might be part of problem. Things have happened since then:
Dyalog has made the full product available for free, only asking for 2% of any profit you make once you cross a certain threshold. Open-sourcing the interpreter is under consideration.
Dyalog has a built-in compiler.
Dyalog's new function form, dfns, has variables local by default.
Dyalog has fully integrated C#-style OO system.
Dyalog has ⎕NA for seamlessly calling C functions as if they were APL functions.
Names Associated (⎕NA) C functions can be called inline
Dyalog namespaces are objects that are not class-based, but with named members
Dyalog's tradfns allow name-lists for multiple required arguments (and results)
True, there are no multi-line comments in any APL yet, but Dyalog allows writing {condition : result if true ⋄ result if false}
Dyalog has :Select which is similar to switch but allows case-lists.
I'm not sure what you mean by "APL-run-time-definable comparison operator", but any function can be used in place of the built-in ones. (This wasn't always the case, but certainly is now.
It is quite easy to check for the data type of given input, e.g. using the Data Representation function (⎕DR).
Putting the statement in a named function allows you to compile it separately from the surrounding code.
Right, no real-time extensions integrated into the language.
The co-dfns library allows you to offload computations to the GPU.
Dyalog's 1111⌶ allows you to select how many cores to use.
Right, no built-in interface for custom hardware-based acceleration
Dyalog's binary arrays use true bit-binary representation.
Dyalog's at operator @ and the index function ⌷ combined with the rank operator ⍤ provide full control over and flexibility in multidimensional array indexing.
Dyalog has supported SCM monitored text files for many years, and the built-in tools are only getting better and better.
Not sure what you have in mind with regards "Genetic and Evolutionary computing primitives built into the language."
The stencil operator ⌺ is a Neural Network/Cellular Automaton primitive built into the language.
Dyalog has some native support for image manipulation, has various libraries too, and deep integration with .NET.
Much of NumPy is of course APL breakfast, and there are math libraries for certain other things. In the worst case, use PynAPL to call Python.
Dyalog has the spawn operator & for multi-threaded/multitasked computing.
I'm not sure network access and processing would be suitable as primitives with glyphs, but Dyalog's Conga library provides this, and may well get further integrated into the interpreter in the future.
Dyalog's multi-core and distributed computing primitives are currently accessed with cover functions, but the ¤ and ∥ symbols have been reserved already.
Built-in primitives for data exchange? ⎕JSON, SQAPL, and ⎕XML etc.
Dyalog's ⎕R and ⎕S provide Perl-compatible regular expressions.
I'm not so sure all quad names should have symbols. Many of them have related or prefixed names, e.g. ⎕Nxyz for file functions and ⎕Txyz for thread-handling. That said, plenty of new Unicode symbols have been added lately.
- robomartin 6y ago> That might be part of problem. Things have happened since then Of course. > Dyalog has made the full product available for free, only asking for 2% of any profit you make once you cross a certain threshold. Not good. People will pay for tools, not languages. If Dyalog wants "APL for all" make it FOSS and support it with tools, etc. I realize there's a business and, behind it, people and families to support. I get it. That said, today's reality is that large scale adoption of languages requires FOSS. Put a different way: People are not going to bet the farm on a language that is fully dependent on a single company for it's very survival and existence. I have a simple example of this. In the 80's there was STSC APL. I used it extensively. In fact, I used STSC APL for my work in DNA sequencing during the human genome project. They evaporated from the planet. I hope the code-base got picked-up by someone. I haven't followed the ecosystem as closely as I used to back when I was attending meetings with the likes of Ken Iverson. From my perspective, if Dyalog wants to propose "APL for all" and be the leader in this domain --have their flavor of APL become the standard-- they have to let go. How they mutate their business in order to make that happen is another question...and it could be an impossible task. Not saying I have all the answers. All I know that as an APL guy it would take a major change in the APL community to get me interested in risking my business on the language. The simple fact is that, as much as I love the feeling of programming in APL (it's like playing music, your thoughts become code) I am mature and experienced enough in both technology and business to understand that business and technology decision need to be made as objectively as possible. This is why, as an example, I am happy to pay JetBrains license fees for their excellent tools rather than screw around with vim and the deep dark organizational hole that shit can become. One of the interesting items to note about your reply (which is excellent and this is not a dig) is that it is 99% features and 1% benefits or business. This is how we engineers tend to relate to the world. I was the same until multiple encounters with entrepreneurship forced me to understand nobody gives a crap about features, not because they don't care, but rather due to the reality that their forcing function isn't feature-based but rather benefit or value based. You can deliver tons of value and benefits with any language. Just look at the myriad large, medium and small companies out there delivering such value in the internet ecosystem, from consumer to industrial, as evidence. Another way to put it is: Nobody needs APL to deliver value. Sure, maybe a few corner cases here an there. OK. Outside of that, nobody is clamoring for it. That means the road to promoting scale adoption is incredibly steep, if not impossible, to climb. No, APL is dead, sadly. Again, I say this as an APL guy. I still think it should be taught in school, along with Forth and LISP. Beyond that, who knows? BTW, I continue to be puzzled by how often APL threads make it to page one on HN. Not sure what it means, other than it is an interesting curiosity.