All of this is... rather vague, from my perspective. (1) Package distribution. J let's you install a package via github.
From the user perspective, this looks like: install'github:username/reponame' NB. updates local from github master branch load 'username/reponame' Or, install'github:username/reponame@branchname' NB. updates local from github load 'username/reponamebranchname' Basically J's 'install' is analogous to python's 'pip' but without the arcane machinations required to deploy a package for general consumption. How is this not solid? (Notice that I am not requiring you to agree that J's package management mechanism is solid -- I am asking for specific criticism(s). I might agree or disagree with those criticisms. But right now I cannot even do that, because I do not know what they would be.) -------------- (2) Support for traditional coding styles. J supports classes and objects and traditional control structures. When you do this, J is not particularly concise and efficient, but those are there, and are tremendously useful when bringing arbitrary algorithms into J. (Port the algorithm, run tests on it to verify correctness, then write code to help you visualize intermediate results and bottlenecks and use that to refactor to take advantage of J's strengths.) A disadvantage that some time and thought is required. An advantage here is that this tends to give you a deep understanding of the algorithm. That said, if you do not have a specific application in mind, for the algorithm, you may not have any good way of visualizing intermediate results and/or bottlenecks. Anyways... this *is* a speedbump. But it's not a showstopper. You can code in a traditional style, if you do not mind the verbosity and the rather boring performance levels provided by the system. (Which, it seems to me, Henry has been significantly improving, though that's still a work-in-progress.) -------------- (3) C++ code can be used directly from J, if you understand the code well enough to find (or create) "C" bindings for it. And, J can be used as a component in other programs in an analogous fashion. And then there's other interfaces like the socket interface, the file interface and the command line interface. You don't have to do it all in J if you don't want to, So... I read these sorts of general statements about J's "flaws" and I wonder "what are you talking about"? Once again, I am not saying you are wrong, or that I disagree with you (though I might, at some point, if I knew enough). I am saying that I probably do not adequately understand what you think would be an improvement. Thanks, -- Raul On Wed, Apr 14, 2021 at 3:18 AM Emir U <[email protected]> wrote: > > Hi Ian, Python is an example of a language with solid package management and > repository (Pypi), FFI, parallelism support (e.g. Dask), and data structures. > Julia is another. They also both have extensive eco-systems for data science > oriented tasks. Python has an extensive eco-system for many other things too. > > > Most of us learn to reason about optimization, monte-carlo methods, AI and > > data mining by deep experience of one programming language. > > I reason about those things in terms of mathematics and abstract structures: > I'd venture to say that's par for the course because its easiest. Most > implementations of staple algorithms on the other hand are C/C++ and it I > don't think it has anything to do with convenience of reasoning in C. It is > to do with portability, integration and performance. > > I was drawn to J by the grammar. The infix / suffix notation and combination > rules must lead to a different way of conceiving what verbs are useful, and > perhaps to a different way of thinking entirely. It is inspired, and I remain > extremely impressed by it. However, this must be separated from the utility > of the language for a workload which is down to the suitability of the > vocabulary it supports today and in the near future. > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
