What's your favorite year end method?

Mike or Penny Novack stepbystepfarm at mtdata.com
Tue Dec 25 10:13:07 EST 2007


>So language design doesn't matter -- it's all up to the programmer? I
>disagree completely with that. I think it's a combination of the two,
>and some languages are so bad, it's almost impossible to write
>well-structured programs in them. That's why we aren't writing
>programs in Fortran II any more. Of course bad programmers will write
>bad programs in any language. But good programmers will write bad
>programs in bad languages.
>  
>
I will challenge that statement. Give me just about ANY language and I 
can write well structured, well self documented code in it. THAT isn't 
the problem. The problem is whether the average programmer given that 
program to maintain will make shambles of it. You can write well 
structured code even for an assembler.

>I think Scheme (and Lisp generally) is a special case in the
>programming language space, because the prefix syntax departs from our
>usual notation, particularly for arithmetic expressions.
>
There are just two "natural" placements, before (like LISP) or after 
(like FORTH). The usual "infix" notation for arithmetic expression means 
dependence on just how many operands the operation expects. That is 
useless for GENERAL operations. If you think the "prefix" position is 
unfamiliar, trust me, the "after position" (reverse Polish) notation 
would be even more so. FORMAL arithmetic tends to use either prefix or 
postfix. For implementers, postfix is actually easier (all evaluated 
operands are already on the stack when the function is evaluated).

>
>So if you write reports in Scheme, you restrict future development of
>them to Scheme devotees, a very small percentage of people who know
>how to write code, even the really bright ones.
>
>  
>
The REAL issue of suitability if language to task is what are the 
fundamental data objects of the language compared to the natural data 
objects of the problem. Thus the LISP family is ideal if you are 
processing lists, SNOBOL (today say bash + the standard 'nix shell 
utilities) if you are processing strings, APL if your natural data 
elements are vectors, etc. If you don't know in advance what sort of 
data you will need to be processing most of the time, the great 
generality of things like LISP family languages quite useful.

Ask rather why we see errors in coding, commonly made errors (thus 
"buffer overflow vulnerabilities" in C applications because processing 
strings of undefined length is not "natural" for C)

Michael


More information about the gnucash-user mailing list