Re: C Programming language.
apgarcia recently revisited the idea of
an improved C. I have become resigned to using C or C++
over the last few years - it has such momentum. My main
criticism of C is readability -
for( int i=0;i<j; i++ ) printf("unreadable\n");
I much prefer the Pascal syntax, but I acknowledge the
criticisms in Why Pascal is Not My Favorite Programming
Language. Some years ago, I worked mainly in Modula II,
which is still my favorite language syntax. The main
drawbacks must be the lack of libraries (and maybe their
design) and lack of objects. But it did have some features
I think of as highly desirable:
- Explicit termination (END) for all IF statements
- No macros
- VAR parameters rather than explicit pointers
- The HIGH function for determining the dimension of an
array passed as a parameter to a function
- Good control of name spaces and interfaces by the use
of declarations in .DEF files (rather than extern and/or
#include)
The Modula II compiler I was using had some extensions
to allow low level programming. I think language extensions
should be discouraged,but they did allow me to write a
simple VGA graphics library - and that taught me a lot. In
particular I learnt that a good optimising compiler can
produce faster code than the assembly code I found
published in a book!
After abandoning Modula II for C, I went through a brief
phase of working with Delphi, which I quite liked. Delphi
encourages much more readable code than C++, but of course
it is proprietary. The name space system is a bit
more primative than Modula II as well.
The company I work with has been doing a lot of Java
work, and I guess Java tidies up some of the worst excesses
of C and C++, I think it is unfortunate they kept some of
the ugly syntax features (for loop, {} braces etc). Maybe
with minor modifications to the compiler, we could plug-in
a new tokeniser and make the language truly readable?
Early Java virtual machines were pretty slow and
unstable, but the new ones can be pretty good. I still
prefer native compilers/languages.
So these days my preference is C++, but there seems to
still be compatibility problems with libraries on Linux, so
I guess I'm stuck with C.