in reply to patterns, language and syntax

This page from Norvig is interesting for many reasons. He is searching a langage with a syntax more expressive than Lisp but less convoluted than Perl to use for its example of code in his books.

Without citing explicitely Perl motto Perl makes easy things easy and hard things possible, he uses it as an operational criteria that I call the expressivness criteria. So his new language of choice to convey code examples is Python. He compares lisp to python as a way to teach python to lisp programmers.

I cite (but you should read the whole page):

Python has the philosophy of making sensible compromises that make the easy things very easy, and don't preclude too many hard things. In my opinion it does a very good job. The easy things are easy, the harder things are progressively harder, and you tend not to notice the inconsistencies. Lisp has the philosophy of making fewer compromises: of providing a very powerful and totally consistent core. This can make Lisp harder to learn because you operate at a higher level of abstraction right from the start and because you need to understand what you're doing, rather than just relying on what feels or looks nice. But it also means that in Lisp it is easier to add levels of abstraction and complexity; Lisp makes the very hard things not too hard.

This remark confirms my hypothesis. A good language does not early freeze in its syntax of too high level (unproven) patterns but sensible low level patterns from which to build upon. Nevertheless it is eventually good at some point to capture proven patterns in the language syntax to make it more expressive.

Lisp failed to do that over its very long course, so Norvig is compelled to provide his examples in a newer language: Python. Another reason is the availability of JPython that makes python available accross the board.

-- stefp