The format of MIDI files is quirky, and expects you to go through it
front-to-back with a state machine to explain what each bit means in
context. There are ways to handle that (using {~^:a:) but I didn't know
them when I faced the problem.
When I came to parsing MP3 files a decade later I was able to parse down
to individual audio frames without much trouble.
With strings of varying length you just box the strings.
Henry Rich
On 11/29/2017 10:34 PM, Dabrowski, Andrew John wrote:
Parsing midi files is something I've done a little of. Why did you
consider J unsuited for that? Is it not great at string manipulation?
It seems inconvenient to have all strings in an array forced to be of
the same length.
On 11/28/2017 04:56 PM, Henry Rich wrote:
There's nothing specific to databases about the value of J. I've never
done anything with databases before my current project. I've used J
to model the transformation pipeline of a graphics processor, the
texture-mapping system of a flight simulator, a stock-trading program,
a program to play Connect Four, a lot of code for recording and
manipulating MP3 files, a fair amount of image processing... The only
project I ever had that I considered J ill-suited for was parsing MIDI
files, and that was pretty early in my J life & I could do it better now.
Henry RIch
On 11/28/2017 4:38 PM, Andrew Dabrowski wrote:
Thanks. I keep forgetting that J and its emulators are really popular
for databases. That's not something I deal with, so perhaps that's
why I'm blind to some of its virtues.
On 11/28/2017 04:21 PM, Henry Rich wrote:
I use J for all my own work because I get results fast. Example: I
am currently working on a database project, a big key/value store
written as about 200KLOC of C++, and I proposed a major design
change. Management was supportive but concerned, so I offered to
write a simulation of the system including the changes. I said I
could do it in 8 days, and using J, I did. Well worth doing, too, as
it led to refinements in the design. I don't know how long it would
have taken in C/C++, but I would be thinking months rather than days.
The combination of interpretive execution, terseness of expression,
and array-level thinking makes me more productive using J than I've
ever been in a scalar language. I completely disagree with you
about languages being equally good. When it comes to getting a
program up and running quickly, J has an edge in most of the places
I've used it.
Yes, but for rapid development isn't Python (or Mathematica) just as
good if not better?
J is a language for describing a computation. C/C++ is a language
for telling a computer how to execute a computation.
I like that distinction. But J seems to get bogged down in syntactic
issues. As a beginner I find it impossible to parse a moderately
sized tacit expression. No doubt one gets better at this, but like
all computer languages, the one dimensional space it lives in seems
to confound any attempts to represent mathematical ideas directly.
A computer language based on mathematical notation sounds like a cool
but impractical idea. It would to have to be 2 dimensional, as in
fact math notation is.
If you don't need to focus on the execution details - that is, if
you can take your head out from under the hood and think only about
what needs to be done - you can save a lot of time and effort by
staying at the higher level. You have to train yourself to do that,
though, and doing so is harder than you would expect.
Henry Rich
On 11/28/2017 3:59 PM, Andrew Dabrowski wrote:
As much as I've complained about J in these forums I've been having
a good time translating some simple code into J. Someone gave me
wise advice, to stick with explicit definitions until I know the
language well, which advice I have cordially ignored because I'm
having too much fun playing code golf with tacit tangles.
I was fascinated by J because it seemed to try to build on aspects
of the human linguistic system. Natural language unfolds in one
dimension, time, so everything relevant to understanding a
particular word in a sentence either came before it or is yet to
come. J seemed to emulate this by having verbs which relate
directly only to objects on the immediate left and immediate
right. Moreover J seemed to be following a linguistic paradigm in
have nouns which are inert, verbs that act on nouns, and adverbs
which modify objects. This seemed like a promising way to exploit
humans' natural linguistic capabilities.
But maybe that's not way the J community currently sees J. Do you
love J most because of (pick only one)
1. the NL inspired syntax;
2. the suite of array utilities;
3. the concision of J code;
4. its being open-source; or
5. _____________________?
I've come to feel that all programming languages are ugly
compromises that are about equally good/bad at solving practical
problems, and the "best" language is just the one you know the
best. I used to be contemptuous of Perl, but after having learned
it well enough for my purposes I now kind of enjoy the brain teaser
quality of trying to fit problems into its procrustean bed
(although I still think it's a silly language). I have no doubt
that I could live happily with J as my primary language, but only
after an extended period of being handcuffed to it and forced to
assimilate its quirks. I don't know that I'll have the patience
for that.
Is there any project in the J repos that demonstrates the strength
of J, as opposed to just showing that it's at least as good as
other languages? Any project that would have been significantly
harder to complete with say Python? Does J have any killer
advantage, even in just one aspect of programming? Or does J just
appeal to you the way pistachio ice-cream might, it just tickles
your palate in a no-accounting-for-taste way? That's how it appeals
to me.
I was hoping someone could talk me into studying J seriously, but
now it looks to me like a language which, with APL, has had
enormous beneficial influence on many other languages, but which
has failed to learn in its turn from them. J seems a tad solipsistic.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
---
This email has been checked for viruses by AVG.
http://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm