-------- 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 <programming@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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm