[I am changing the order of your questions as I answer them - simple
answers first]

Yes, the price on J helps enormously. Not only for myself, but [at
least in principle] because when I find someone interested in my code,
I don't have deal with investment issues.

On the computer architecture front: implementations are not what I was
talking about. APL (J's foundation) was a chalkboard notation for
something on the order of a decade before its first implementation.
It's strength, in other words, is in its ability to describe
architectures. Actual implementations come with compromises and
require someone interested in going there. (And then after that
there's the whole maintenance and documentation things...).

And, sure, Mathematica is good for its ability to take some existing
book and translating the notation into something you can get a feel
for. But, also, 99% of Mathematica's abilities go untapped by most of
its users (as opposed to Python where it's more like 99.9%, but with
J, I'm sure that only 98% of its abilities go untapped by most users
... so you can see - clear superiority ... sorry, couldn't resist, but
that's also probably too close to the truth to actually be funny).

Anyways, yeah - J's good for modeling things in a way that fits
computer architectures, and a background in J can help even when
you're coding in other languages.

I have also done GUI work with J, though that was in older versions.
It seems that someone put too much emphasis on mobile phones and
declared all of the introductory OpenGL architecture obsolete (despite
that OS-X was a huge market which still was strongly rooted in OpenGL
version 1, and that there were too many versions of shader
architectures for OpenGL 2 to have any consistent implementation).
This was great for people pushing big IDEs and frameworks, but it
looks like OpenGL has been mostly dropped from J (not entirely, but
it's largely unusable for me, and I've not invested the effort to work
around that). Still... for simple GUI work, JQt works. And, there's
always the browser (which is where I wind up doing most of my
user-facing work anyways).

As for performance, usually I find that J has more performance for the
stuff I am interested in than other languages. When that's not the
case, though, I need to make a choice based on the reason for the
performance issues. C can be good if I need a complex step-at-a-time
approach. Using a flock of machines in the cloud can be good if I just
need to plow through a lot of data (there, J can be good, though again
it depends on what work actually needs to be done).

...

Now for your philosophical question "And isn't the goal of
"documenting how computer architectures work" strongly at odds with
that of a high level language facilitating exploratory computing?" ...
this depends on the purpose of your exploratory computing.

If you just want to have a good time, it all depends on your concept of fun.

If you want to do something *useful* computing itself is rarely the
issue - what matters most is what useful thing you can connect to the
computer and your practical tolerance for mistakes as you build a
control loop or other feedback system. Computing itself is not some
kind of snake oil thing that magically fixes everything (well...
unless you believe sales pitches... but in practice you almost always
can get away with something really simple as long as you can live with
something boring - it's when you get into fashion driven design that
you need the latest and greatest popular thing, but that's almost
nothing to do with computing as a skill and everything to do with
salesmanship and human relations - though you do need some good
computing and perhaps archeological skills to make sense of the things
you have to work with in those cases, also a good tolerance for
mistakes and for trial-and-error approaches).

Seriously, I've put together more useful "computing implementations"
with a handful of relays and some servo motors (that was for a heat
reclamation system in a large commercial building) than I have with
modern high powered computers. Also, more robust... But computers are
widely deployed so there's always the potential of making something
marginally useful and having a large market for it, or putting
together something entertaining and using that to help sell or address
something else that a lot of people like.

Or, that has been my experience. Good luck on parsing some of my
run-on sentences here, though... And, I'll understand that you do not
entirely agree with me. Sturgeon's law is pretty universal and
presumably applies to anything I write.

Thanks,

-- 
Raul


On Thu, Jan 4, 2018 at 1:36 PM, Dabrowski, Andrew John
<[email protected]> wrote:
> On 01/03/2018 04:00 PM, Raul Miller wrote:
>
> I think that J's "killer advantage" would be that it focuses on
> programming concepts which other languages bury or lose in the noise.
>
> Personally, I use J for exploratory programming and often take those
> explorations
>
> I think I know what you mean, but for me that language is Mathematica.  I'd 
> guess that J works like that for you because you know J inside-out and 
> forwards and backwards, but I don't think J has any intrinsic qualities that 
> make it better suited for exploration than say Mathematica, Python, or even 
> javascript.  I think Mathematica does have such intrinsic qualities because 
> it is a thoroughly multi-paradigm language with an enormous number of built 
> in functions.
>
> and deploy them in some other environment.
>
> What environments do you like when performance matters or you need a GUI?
>
>  Thinking about
> how to implement something in J has often been helpful in finding
> relatively simple solutions to otherwise complex, amorphous problems.
> I have not found any other language better suited for this than J,
> though I have found concepts from a variety of other languages to also
> be quite useful for this, at times.
>
> Put differently: J pressures you to express your ideas clearly. Once
> that's done, it's easy to implement them in any language.
>
> That's not my idea of good language for exploration!  But I guess it depends 
> on whether you mean algorithmic exploration or more purely conceptual 
> exploration.  When I'm playing with mathematical ideas I don't want to be 
> bothered by implementation issues.  But I can see that if you're starting to 
> formulate the structure of a large program the imposed discipline of J could 
> be helpful, as long the the ultimate target language isn't too different.
>
>
>
> Going the other way - taking an utter mess and trying to express that
> clearly and concisely? That's *painfully difficult*.
>
> Which is not to say that messes are bad - they can be quite useful,
> extremely practical and have some other advantages also - but they are
> not the only good thing to aim for.
>
> Sometimes one's ideas are a mess, and the exercise of trying to realize them 
> in code is useful.
>
>
>
> Also it can indeed be the case that other languages can express some
> concepts more clearly than J. No one language can have a monopoly on
> clarity, this is inherent in the structure of mathematics, if nothing
> else.
>
> That said... J's roots are in concisely documenting how computer
> architectures work. And I think that's why it shines.
>
> Is that still the case?  For example J has (as far as I know) no support for 
> multiple processors or even threads.
>
> And isn't the goal of "documenting how computer architectures work" strongly 
> at odds with that of a high level language facilitating exploratory computing?
>
>
>
> Finally, I should mention that I have implemented things like dicts in
> VS APL (which had no nested array capabilities whatsoever). J doesn't
> quite have a couple of the tools I found useful there, but that's
> rarely an issue and if I cared I could reconstruct them.
>
> As Larry Wall has been fond of pointing out: there's more than one way to do 
> it.
>
>
>
> But J has one enormous advantage over Mathematica: it's free.  It may become 
> my favorite scripting language.
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to