Let me take issue with Björn (amicably :) over this. It's not just a
matter of taste. It is what suits you -- for the sort of coding you
do. Number theory research? You'll love J for its freedom from anal
clutter.

If you're like me, mostly building products for sale, then Andrew is
right. Psychology holds the key. Gerry Weinberg (in "The Psychology of
Computer Programming" http://tinyurl.com/2mvj57) tells the tale of
$K's being spent (at 60's costs) to track down a single bug: a memory
location labelled ONE which once in a while held the value 2.

To me, what distinguishes software developers from bit-pushers is the
lengths they'll go to avoid the Weinberg Bug.

I've coded in anger with scores of languages, most now thankfully
defunct. What makes a bad language for me (or a construct to avoid) is
one that "says" something else than what it actually does.

To me, programming is all about Binding. Names to entities. Arguments
to functions. Values to variables. Numerals to each other to make
vectors. And eventually $$$ to my wallet. What matters is when the
binding happens. Strictly right-to-left in an expression? When the
expression is executed? When the function is called? When the app is
run -- or actually when it's written?

This is why I get a bad feeling with code residing in strings executed
at run-time. Also global vars. They save you having to think too hard
when writing the code in the first place. But all that's wasted when
you have to manage a bug-farm. 'Cos globals are caches -- and there's
always sometime when a cache is out of date.

That's why I was deeply unhappy recently when I found myself writing:

   items=: 3 : 'i. #TT'    NB. the valid indexes of rows of TT, a
user-loaded table, which can vary.

Why was I unhappy? For every single one of the reasons I've stated.

So, being a J rabbit, I thought I'd be clever and "go tacit", making
that instead:

   items=: 13 : 'i. #TT'

and (shame!) I neglected to look at how "items" actually got coded.
Oh-no! The Weinberg bug. To me the two expressions "say" the same
thing -- but they aren't!

I spent the whole evening writing code that tested-out ok -- as I
thought. Until I started up J the next day. That's when the bug first
appeared.

MORAL: go tacit where you can... but go canny!

BTW Who'd care to volunteer what was wrong with my whole approach to
"items"? I bet I get a different answer from everybody. I have my own
answer of course. But I'd like to hear others' first.

Ian


2009/12/20 Björn Helgason <[email protected]>:
> I think it is rather the opposite that most objections to J has been
> from people who do not understand tacit.
> The explicit definitions are not at all ugly either.
> I think it is more a matter of taste and understanding.
>
> The explcit definitions and comments are often much better and
> especially for beginners.
>
> Tacit programming can be very nice and it can also be horribly complex
> and scary looking.
>
> 2009/12/20 Andrew Nikitin <[email protected]>:
>>
>> I think the reason that so many people dislike explicit definitions is 
>> because they are syntactically ugly. Multiline is only mildly ugly, but 
>> single line is a freak. Come on,
>>
>> length=:3 : '%: +/ *: y' ?
>>
>> Bleah. Clean, easy to read and still bleah.
>>
>> This and only this fuels myth of alleged superiority of purely tacit 
>> expressions.
>> Because ugly cannot be good.
>>
>> _________________________________________________________________
>> Your E-mail and More On-the-Go. Get Windows Live Hotmail Free.
>> http://clk.atdmt.com/GBL/go/171222985/direct/01/
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>
>
>
> --
> Björn Helgason, Verkfræðingur
> Fornustekkum II
> 781 Hornafirði
> Po Box 127,801 Selfoss ,
> t-póst: [email protected]
> gsm: +3546985532
> sími: +3544781286
> http://groups.google.com/group/J-Programming
>
>
> Tæknikunnátta höndlar hið flókna, sköpunargáfa er meistari einfaldleikans
>
> góður kennari getur stigið á tær án þess að glansinn fari af skónum
>          /|_      .-----------------------------------.
>         ,'  .\  /  | Með léttri lund verður        |
>     ,--'    _,'   | Dagurinn í dag                     |
>    /       /       | Enn betri en gærdagurinn  |
>   (   -.  |        `-----------------------------------'
>   |     ) |         (\_ _/)
>  (`-.  '--.)       (='.'=)   ♖♘♗♕♔♙
>   `. )----'        (")_(") ☃☠
> ----------------------------------------------------------------------
> 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