On Fri, May 04, 2001 at 01:15:53AM -0700, David Freeman wrote:
Exactly, and a compromise is the worst parts of all solutions. The language I am liking at the moment is java, it just makes sense with the OO design etc...
Engineering is about making things that are fit for a purpose and very often this involves compromise. A system that will need to be changed but is unmaintainable is not fit for purpose and neither is one that goes to slowly.
Engineering is full of compromises. Take the example of the clutch in a motor car - this is an ineffcient device (wastes energy when it is slipping) and has poor life (it wears out much faster than the engine does) and yet it is still widely used. It is an acceptable compromise.
I would agree, C was one of those things which changed history, without it we would never have the computer revolution we have now. It is however over 30 yrs old, which means it's not as modern and good as a language which was designed recently.
What of Linux then? Much of the Linux functionality is a clone of Unix which is also the same age. Should we switching to something more modern like MS WIndows?
Actually there is some debate as I understand as to whether we should move away from monolithic kernels towards a microkernel and message passing (which suites OO design).
The last article I read in which Linus made any comment on working with microkernels he likened it to masturbation.
....
BBC basic @ 9 yrs old, horrible language, then Visual Basic - I agree with ESR "about as uch fun as a picnic in a toxic waste dump" Z80 assembler and then C. Since learing C I have learnt Java and it makes more sense to me than procedural programming.
Another interesting viewpoint. When I first encountered BBC BASIC the only comparison I could make myself was against the BASIC on the Sinclair machines (ZX81 and Spectrum) and comments made my friends about other home computers they owned. BBC Basic was considered good because it had long variable names, named procedures and a proper IF/THEN/ELSE, and REPEAT UNTIL.
Take a look at your older code, you will notice you did very BASIC things in C, I know I have tried these things.
The language I learnt after Sinclair BASIC was Z80 Assembler and it was quite imposible to do BASIC like things in that. Next was BBC BASIC, then 6502 Assembler. At that time I also tinkered with Pascal a little (enough to discover that unextended ISO pascal at the time was not a useful language) and a bit more with BCPL.
After that I learned C, programmed in HP Pascal, learnt and used TQL (an SQL like language), then programmed in C, C++, then learnt and used SQL.
Of all these SQL is the odd one out and, while I usually don't have a problem with SQL, it does seem to be capable of complexity explosion - i.e. you take a very straightforward query and need to make a small change to it and and up with something very much more complicated, and I often think how much simpler it would be sometimes to write something like:
for every row of table x where condition y for every row of table a where condition b do g,h,i,j end end
rather than a big join with unions too and both lists of columns and conditions repeated in various places (waiting for the unwary maintainer).
Steve.