Owen Densmore wrote:
I was hoping there'd be a rational core set of languages:
- Systems language: C/C++ level. Used for kernel/OS/drivers.
- Shell languages: Basically an easy way to pipe code written in
System Language
- Scripting: Python, Ruby, JavaScript level. Rapid prototyping
where performance
less important.
- Domain Specific: modeling (NetLogo etc), web (PHP, Javascript) .. etc
Scripting languages frequently allocate and free memory as types are not
declared and lifetimes of objects aren't considered. C++ programmers
are indoctrinated to stack allocate and template, and that results in
fast code (and clarity). Meanwhile garbage collectors are fast and
highly evolved, and there are runtime compilers (e.g. .NET, OpenCL,
LLVM), so code generation can be done equally well in interactive
languages as it is in `system languages'. Tear down those two walls and
there's no real justification for these other categories. It's just up
to the programmer to be efficient if they want to be; any good language
should be usable as a `system language'. Some languages fail to
provide enough control to be system languages (NetLogo), and others fail
to provide enough features to be useful for human communication and
programming in the large (C). The only justification I can see for
Domain Specific Languages are for certain classes of optimization or
automated analysis that are difficult to do without lots of
constraints. Mostly Domain Specific things can be done just fine in
libraries.
Marcus
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org