Programming Languages YET AGAIN (was Re: How to add reports into Gnucash)

Mike or Penny Novack stepbystepfarm at mtdata.com
Tue Aug 25 08:06:38 EDT 2009


> What makes Scheme less tough to learn is "The Scheme program  
> language"  book by R. Kent Dybvig's. Free available here: 
> http://www.scheme.com/tspl2d/
> Furthermore instead of records or structures, think of the data  
> processed as sets, that is the concept of collections, and the  
> operators target all members of a set.

Unfortunately that's less helpful (doesn't make it all that much easier) 
for procedural programmers, I base this on my own experience fixing up 
the SQL (DB2) of my fellow programmers (tuning apps to run an order of 
magnitude or so faster). They were simply unaware of how to use set 
operations in place of procedural operations*. Similarly they were 
unable to understand WHY things like my general purpose "select a set of 
test data from the entire database so that the set contains at least one 
example meeting these criteria" worked, why the GUTS of the program 
worked -- so it was written so that they could simply modify the code 
specifying what the criteria to be met were without understanding that 
part of it**.

This is a "training" issue. By and large most never had the basics 
"fundamental abstract data structures and their operations". Keep in 
mind that some of the modern language variants (say C++) are specific to 
NOT having to understand (the low level programmers don't have to 
understand) what a list is, what a queue is, etc. by providing the data 
types and operations on them bult in. Don't have to know how to code the 
elementary operations. Can leave that to the few in the shop like me who 
can. Well a "set" and "operations on a set" isn't different in that 
regard. Going to be a big help having ever taken "Elementary Set Theory" 
or some similar course.

Michael D Novack

* Example -- to select the largest (or smallest) from a set can be done 
with set operations -- no need to sort the data first.

** Why simply setting bits according to what criteria the current case 
being examined met and then performing a simple set operation determined 
whether this case would add something new to the test set.


More information about the gnucash-user mailing list