Let's promote scripting languages to the status they deserve
Another take on the Should scripting languages be used for industrial strength projects question, inspired in part by the Guido van Rossum interview that was discussed here at length last week.
Things become more interesting when you try to enumerate programming language facilities that would help cope with a "world of distributed services in constant flux."
Perhaps the first thing that comes to mind is choosing interpreted over compiled languages. Naturally, this distinction is a bit naive, virtual machine bytecodes can enable mobile code just as well (if not better) than high level languages. But the classic model of compiling to platform specific object code is quite problematic, even if you take into account things like DLLs.
Next comes the issue of stand alone programs versus the language-as-runtime-environment approach exemplified by Smalltalk. The latter being a bit more natural for plug in components.
For foreign components to interact you will usually want some form of reflection or introspection capabilites in the language, and perhaps a way to access meta-data about components.
To manage the resulting menagerie of components, you would want the language to provide support for versioning, and hopefully some mechanism to ensure the integrity of the system, and that the components of the system are not inconsistent (think types).
Since failures are likely to happen from time to time, it is wise to require some contract support from the language, ideally support for sound behaviorial contracts and blame analysis.
Good language support for this sort of programming scenario will move the programming language into the land of languages-as-operating systems, since managing resources and cleanup for components is almost a must.
Smaller features can also come in handy. Things like automatic code updates from the internet, and possibly hot code replacement (think erlang).
All these issues were mentioned here in the past, with links to research papers exploring their implementation and interaction. I see no reason why many of these things can't be done manually, but programming language support would reduce programming effort and increase reliability.
Posted to Software-Eng by Ehud Lamm on 2/7/03; 1:55:04 PM
|