Use 'scripting' languages when possibleAre you guilty of subconsciously regarding 'scripting' languages as inferior? Do you think real programming means using C, C++, C#, or Java? Does your conscience accuse you of laziness when you feel tempted to use a truly high-level language for your app? If so, don't be too hard on yourself. It's unfortunate, but the computer industry is more prone to group-think than any other. The inherent complexity requires us to take other people's word for most things... Besides, it would seem that scripting languages are for scripts...right? It's true that scripting languages are fantastic at gluing libraries and applications together quickly. But they're not just for scripts. Truthfully, any language can be used for 'scripting'... But sophisticated high-level languages that excel at the job have an tendency to get branded. Ironic, eh?
Ruby, Lisp, and PerlI'm lumping these three together since I don't have much experience with them. I've been studying them, though, and all three seem very powerful and sufficient in their own way. All three are incredibly popular, with hundreds of thousands of apps in the wild.
My defintion of high-levelAt one time C was considered a high-level language. At one time C++ was considered a high-level language. Not too long ago I considered Java a high-level language. In my opinion, a true high-level language must allow programming with the following paradigms as a minimum
- dynamic (Any member can be overridden, objects act like dictionaries)
- reflective (Members are enumerable, executable, and can be referenced by string name)
- functional (Functions are first-class objects, with members)
- object-oriented (Functionality can be organized into objects, which can have instances containing state)
- In-line documentation
- Built-in list and dictionary syntax.
- Variadic functions
- Easy 'undefined' and null checks
- Exception management
- Duck typing (optional explicit typing is OK)
- Automatic memory management
- Closures, anonymous functions
- Good list, dictionary, string, math, and date libraries.