>> Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
>> Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
It also has some things CL doesn't provide as part of the language: threading primitives; URL-handling; advanced calendrical calculations; basic crypto and so forth.
Other than this, however, it's a good example.
The point is that low-level languages like C and Fortran (and today, Java) are underpowered, and any sufficiently large project will evolve to the point where someone builds a (often vaguely Lisp-like) scripting language on top of it to allow developers to raise the level of abstraction, maybe without even realizing that's what they're doing.
I have seen this in action, a lot of companies build internal, proprietary scripting languages on top of their low-level programs. They may start out as configuration files, a build system, preprocessor macros, or a DSL, but over time as features get added they accidentally become Turing-complete, and eventually someone writes an interpreter and now you've invented something that serves the same purpose as Lisp, only worse.
More here: https://sites.google.com/site/steveyegge2/the-emacs-problem
No, that's not what it is about. It's not about programs needing a scripting language.
It's about the program (its framework, libraries, architecture, ...) itself. It will acquire features like:
* late binding
* symbols
* dynamic data structures
* serialization format
* a plugin architecture with loading of code
* advanced error handling
* first class function objects
* automatic memory management
* specialized numeric datatypes (large integers, ...)
* a dynamic object system
* more...
The implementation language will be extended by some framework, software layers, libraries with such features ... so that over time it will implement many of the standard features of Common LispNote that platforms like the JVM, .net and others nowadays provide many of that (and much more). Also language on top of those do: Java/Scala/... See for example how for Java dynamic loading of code has been implemented on top of custom class loaders.