Is Python a Zen language?

Steven D'Aprano steve at REMOVETHIScyber.com.au
Sun Feb 26 17:05:18 EST 2006


On Sun, 26 Feb 2006 12:48:47 -0800, Crutcher wrote:

> My central thesis: you are using a poor understanding of language to
> classify languages into things you understand (tool languages) and
> things which _you_ find 'deep' (and difficult to learn), which you call
> 'Zen languages'. This is ridiculous, e.g. deserving of ridicule. I am
> being mean because you are engaging in mental masturbation in public,
> and I'm worried that you might convince someone.

I've already given my opinion on the classification of languages into two
dichotomies, namely, that it is wrong to classify languages as tool-like
or Zen-like [emphasis on the "or"]. They can be both.

But your objection to the Original Poster's question is as ridiculous as
you claim his question is. There is no ridiculousness to the concept that
a programming language might be designed with crank-the-handle
practicality in mind, and that another might be designed with academic
purity and elegance in mind. Perl is a tool, you generally use it when you
want a quick and dirty solution to some problem, not when you want a deep
theoretical understanding of the problem. We can argue about whether
programming in Lisp is fast, but the language is certainly designed for
theoretical elegance. 

Cobol is an even more so workman-like tool language. It is Turing
Complete, so anything you can do in Lisp you can do in Cobol, but nobody
would want to.

Where the OP got it wrong was his assumption that a language can be one or
the other but not both: practicality and purity are not opposites.

Most people are capable of recognising the OP's two extremes. On the one
hand, there are languages that are easy to use but not deep: they make
easy things easy to do, if not mechanical, but hard things are impossible.
On the other hand, there are languages that require great study and
theoretical planning even to do the basics.

But since easy and deep are orthogonal concepts, not opposites, you also
have languages that are easy to learn as well as deep. They tend to make
easy things simple, and hard things, if not as simple, at least easier.

There are even be languages that are difficult to learn, difficult to
use in practice, and yet not very deep or elegant. For example, Intercal
and the other Turing complete joke languages.


-- 
Steven.




More information about the Python-list mailing list