[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Summary



On 2003.05.27 19:03 Paul Prescod wrote:
> 
> You forgot the constituency of "other people" like:
> 
>  * the person who has to maintain your code
>  * the person who has to learn from it
>  * the person who has to integrate it into a larger system
>  * the person who has to devise tests for it
>  * the person who has to estimate how long it will take to improve it
> 
> I can't help but feel that these people are more important than "the 
> program" itself.

All of the people you mention exist in a symbiotic relationship with
the program, so what's good for the program is good for them as well.
Maintainers are often tempted to throw programs out the window, but
they hardly ever do; it's almost always better to adapt the program you
have than to start all over.  Integrators and testers are likewise
stuck with the program they start with.  Students are limited by their
ignorance; not uncommonly they see a program's idiosyncrasies as the
best or only way to do a particular thing.

The tension is between those language features that make the
programming process easier (pragmas, macros, autoconversion, dynamic
typing, mutable variables, syntactic flexibility, etc.) and those
that improve the reliability, readability and coherence of the
resulting program (strict and consistent syntax, limited pragmas,
explicit conversion, static typing, immutable variables, etc.)

I would argue that the evolution of programming languages shows that
over time, the emphasis in a language tends to shift gradually
towards the latter set of concerns.  It's not that the needs of
programmers are ignored, just that as the body of code written in
the language increases, features which increase the value of that
code become relatively more important.

Michael St. Hippolyte
http://www.bentodev.org