What Makes A Programming Language Good

bearophile bearophileHUGS at lycos.com
Tue Jan 18 02:10:25 PST 2011


Walter:

> http://urbanhonking.com/ideasfordozens/2011/01/18/what-makes-a-programming-language-good/

It's a cute blog post. It suggests that it will be good to:

Getting Code:
1) Have a central repository for D modules that is easy to use for both submitters and users.
- D code in such repository must Just Work.
- I must stress that having a shared community-wide style to write D code helps a lot when you want to use in your program modules written by other people. Otherwise your program looks like a patchwork of wildly different styles.
- D language must be designed to help writing code that works well both on 32 and 64 bit systems, helping to avoid the traps listed here:
http://www.viva64.com/en/a/0065/
- Path-related problems must be minimized.
- Probably D the package system needs to be improved. Some Java people are even talking about introducing means to create superpackages. Some module system theory from ML-like languages may help here.

Figuring Out Code:
- D compiler has to improve its error messages a lot. Error messages need to become polished and sharp. Linker errors are bad, they need to be avoided where possible (this means the compiler catches some errors before they become linker errors). C# compiler also gives a standard error number for each error, that allows to read about the error and its causes and solutions.

Writing Code:
- Interactive Console: it will be good to have sometime like this built in the D distribution.


>From the article:
>Further, while I know there are people who like IDEs, for me they serve to cripple the exploratory play of coding so that it’s about as fun as filling out tax forms.<

In this regard I think D has to take two things into account:
- People today like to use modern IDEs. So the core of the language too needs be designed to work well with IDEs. Currently D doesn't look much designed to be IDE-friendly.
- On the other hand I see it a failure if the language requires a complex IDE to write code. I am able to write complex Python programs with no IDE, this means that Python is well designed.

One more thing: from a recent discussion with Walter about software engineering, it seems that computer languages are both a design tool and engineering building material. Python is better than D for exploratory programming (http://en.wikipedia.org/wiki/Exploratory_programming ), or even to invent new algorithms and to explore new software ideas. D is probably better than Python to build larger software engineering systems. Lately Python has added several features to improve its "programming in the large" skills (decorators, Abstract Base Classes, optional annotations, etc), likewise I think D will enjoy some little handy features that help both exploratory programming and "programming in the small", like tuple unpacking syntax (http://d.puremagic.com/issues/show_bug.cgi?id=4579 ). There are features like named arguments (http://en.wikipedia.org/wiki/Parameter_%28computer_programming%29#Named_parameters ) that are useful for both little and large programs, named arguments are one of the things I'd like in D still.

Bye,
bearophile


More information about the Digitalmars-d mailing list