Kevin Cox:

> I think that python stretches
> close to the line but I doubt it was designed for beginners.

Python partially comes from ABC, a language that was designed to teach 
programming. So originally Python was meant (unlike ABC) to be practically 
useful, but also to avoid being unnecessarily hard to learn and use, retaining 
ABC ideas and simplicity where possible.

In the last years they have added more features to Python (Unicode on default, 
lazyiness on default in many places, decorators, and so on and on), to make it 
more efficient and more fit to write larger programs. So now Python is large 
enough, and despite being simpler than several other languages, it's not so 
simple to be a first language.

The problem with languages to teach programming to people that don't know how 
to program, is that if you design them to be simple and good for teaching, no 
one uses it for practical purposes, so it ends being useless outside schools, 
and very few people write patches or libraries for it. So it often dies. If you 
use a language used for real use, you have many libraries and a good 
compiler/interpreter, but the language is large, often full of legacy, warts, 
or backwards compatible things, and the language itself is often not easy to 
learn and understand.

Apparently there is no way out of this dilemma. I have seen that today Python 
is good enough to teach programming, but you can't teach static typing well 
with it. D is too much complex for young newbies. Racket Scheme has a very good 
editor, it has good documentation, and so on, but in my opinion Python is 
better as first language, despite Racket contains a typed scheme too.

Bye,
bearophile

Reply via email to