Tuesday, May 24

What is J?


Superficial introduction:

J was, originally, a notation introduced to describe computer architecture (Kenneth E. Iverson, 1957, Harvard School of Business). Iverson then went to work for IBM and with Adin Falkoff, Fred Brooks and others published a few reports and parts of books. A part of this was some documentation on the System/360, and the notation used to document the architecture evolved into an executable notation (a programming language). This programming language gained some early users but eventually more interactive systems (spreadsheets) began eating into its niche. J is a rewrite of this language, designed to eliminate some of the obstacles which could prevent its use in schools (for example: the original language could not be programmed in ASCII).

So, what's it like to work in J?

Imagine, if you will, that you are working in a computer language which has some new-fangled operators, like "multiplication" and you are talking with people used to working in traditional languages which do not have any such operation.  How would you describe your language?

"Multiplication is like repeated addition."

"Oh, I can do that!  I just use a loop!"

"Ok, but.. polynomials..."

"Hey, how do you make multiplication conditional?"


"I have this loop here where when I=X+Y we subtract H instead of adding K.  How do you do that with this multiplication thing?"

"Um... what is it that you are trying to do?"

(long conversation follows)

"This multiplication stuff is too esoteric.  I'm a practical person and I do not need to do this obscure multiplication stuff.  Besides, my language enforces double-entry bookkeeping, and I really do not want to learn another language if it does not enforce double-entry bookkeeping.  Have I shown you my differential equation simulator that translates mass and acceleration into energy?"


Anyways, that's kind of how it feels like, working in J.

No comments:

Post a Comment