I predict that the program you chose has a scripting language embedded in it. That's it. That simple. I'm right aren't I? Mere coincidence? No.
All really good software development takes place around a language. Why? Having a language embedded into a piece of software gives several important benefits:
If you are writing a text editor, write a language that makes string and buffer manipulation easy.
If you are writing blogger software, write a language that makes short work content manipulation and formatting.
If you are writing drafting software, create a language where geometric shapes and transformations are fundamental operations.
If you are writing a statistical software package, create a language tailored to manipulating data sets.
How about some positive examples of good programs organized around languages:
| Layout | postscript |
| Statistics | SAS |
| Mathematics | Mathematica |
| Text Editing | Emacs Lisp |
| Engineering | AutoLisp |
Other programs that have scripting languages:
How about a list of poor programs? Just because a program has a scripting language doesn't guarantee success. Well in this case I am just going to list one item:
Why are these programs slow, clunky and difficult to work with? How often to you write a 'quick' little script in Word? Excel? Access? Outlook?
What is the difference between:
The latter are languages tuned to solve problems in a very specific domain. The former are all the same language with a different object model stuck on the side of it. Applications with Visual Basic in them ignore the Size and Focus attributes of a good embedded scripting language.
Think about how many languages you know. Personally I program in these on a weekly basis: C, C++, HTML, XML, XSLT, CSS, Perl, JavaScript, and several tiny languages of my own devising...
How come I can easily switch among 10 languages with out missing a beat yet I can't retain the object model for Word?
When developing a piece of software concentrate on building a languge to solve problems in the domain you are working in. No one fixed language can solve every problem so build a customized language just for that domain.