Skip to content

Instantly share code, notes, and snippets.

@DmitrySoshnikov
Created February 3, 2011 09:21
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DmitrySoshnikov/809253 to your computer and use it in GitHub Desktop.
Save DmitrySoshnikov/809253 to your computer and use it in GitHub Desktop.
Why do we need new languages?

"In our study of program design, we have seen that expert programmers control the complexity of their designs with the same general techniques used by designers of all complex systems. They combine primitive elements to form compound objects, they abstract compound objects to form higher-level building blocks, and they preserve modularity by adopting appropriate large-scale views of system structure. In illustrating these techniques, we have used Lisp as a language for describing processes and for constructing computational data objects and processes to model complex phenomena in the real world.

However, as we confront increasingly complex problems, we will find that Lisp, or indeed any fixed programming language, is not sufficient for our needs. We must constantly turn to new languages in order to express our ideas more effectively.

Establishing new languages is a powerful strategy for controlling complexity in engineering design; we can often enhance our ability to deal with a complex problem by adopting a new language that enables us to describe (and hence to think about) the problem in a different way, using primitives, means of combination, and means of abstraction that are particularly well suited to the problem at hand"

(C) SICP, Chapter 4. Metalinguistic Abstraction. (paragraph 1)

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-25.html#%_chap_4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment