-------- Original Message --------
Subject: Re: [Jprogramming] Debian Forum comparing J to Brainf*
Date: Sat, 24 Dec 2011 14:09:31 -0500
From: Marshall Lochbaum <mwlochb...@gmail.com>
To: Programming forum <programm...@jsoftware.com>, peterarmstr...@aya.yale.edu

Well, I'm not tired of this stuff quite yet, so here goes:

Brainfuck and APL/J/K get compared a lot on account of being "obfuscated."
This is a bit unfair. The correct terms are, respectively, "contorted" and
"terse."

There is one thing that the two languages share: they are each an attempt
to get to the root of programming and SIMPLIFY the discipline. Each can be
 fully specified in a few pages, if you disregard the vocabulary used in an
array language. However, the two have markedly difficult results. Coding in
Brainfuck ends in long strings of >>>>>> or +++++ , and true automation is
impossible. On the other hand, J code is very compact, in part because it
makes assignment very simple--no distinction is made between primitive and
user-defined functions.

Nonetheless, people complain that J or Brainfuck code is particularly
complicated. Note the distinction between the "language" and "code" here.
Brainfuck is a simple language with complicated code. We can't refer to the
language as "obfuscated," since that word refers to the addition of
unnecessary detail, and Brainfuck does the opposite. However, the code is
often obfuscated in the sense that it fails to abstract away details, and
thus hinders a higher-level view of the program. Array languages do not
suffer from this difficulty. In fact they are far more extensible than
procedural languages, because they also allow functional manipulation.

I think the word you are in fact looking for to describe these two
languages is "unfamiliar." This word places the blame where it lies--not on
the language, but on the programmer! Given the functional languages in the
list, I won't accuse you of being completely unknown to programming outside
of the C paradigm, but most of the time when I hear similar complaints
they're from people who think a piece of text is a program if and only if
it contains the phrase "for (int i=0; i<l; i++)." Okay, J doesn't have a
lot of words in it. Neither does "((-b) + sqrt(b^2-4*a*c))/(2*a)." I submit
that within a month of actual use, J code will seem clearer, better
designed, and more useful than any other programming language, mathematical
nomenclature included.

I once had a friend tell me that "if (x>20) return true; else return
false;" was clearer than the J equivalent ">&20". I hope you can see past
the unfamiliar syntax enough to know that that's false, and I hope you are
open-minded enough to not make the same mistake about APL/J/K before
knowing any of the language.

Marshall

On 12/24/2011 06:44 AM, Miles Fidelman wrote
Any other comments/ suggestions regarding programming languages/
systems for advanced applications on Linux?
Lisp
Smalltalk
Erlang
Haskell
Caml/OCaml
APL - if you're crazy or want to be; or you could go all the way to
Brainfuck (http://esolangs.org/wiki/Brainfuck) for that matter, Ada,
if you're writing mission-critical/safety-critical systems


--
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ef6a04c.5040...@aya.yale.edu

Reply via email to