[Tutor] primes (Cautious remark on Python and Scheme)
Gregor Lingl
glingl at aon.at
Sat Mar 19 01:57:25 CET 2005
Hi Danny!
Preliminary remark: I know that "beautiful" and "beauty"
are concepts very seldom applied to computer programs or
programming languages. I suppose mainly because they are
to a large extent a matter of taste ...
Nevertheless: regardeless of the fact that I'm not a very
skilled scheme-programmer, for me Scheme is the most beautiful
programming language I know, mainly because of the clear
and simple concepts which are purely realized. (I do *not* want
to discuss here questions like functional versus object-oriented
languages etc...)
However - Python - for me - is a programming language for
the "pragmatic lover". Do you consider this expression as
self explanatory? Lover -- because it makes so much fun
to use it. Pragmatic -- because it is a language for the
real world ;-)
im*h*o the primes - examples we are just discussing shows,
that going *the Python way* may well be more successful
or rewarding than trying to translate, traduce, ...er ..
adapt Scheme-concepts quasi trying to show that Python is
at least as good as Scheme. This is not the question. (I
suppose that this also was not your goal?) A deeper
question perhaps would be to what degree the content of
cs texts depends on the choice of the mainly used language
therein.
On the contrary - we may learn from this example that Python
is a *very* good language in its own right - with carefully chosen
concepts and syntax and a very slow, serious and publicly
controlled development process resulting in a more and more
easily and efficiently usable language.
Finally I'd like to stress that your contribution for me
was very valuable and constructive - as are most of your
innumerable contributions to the discussions on this list.
Thanks an regards,
Gregor
post scriptum: as always when writing not only about technical
facts but about opinions and values in English, I'm a bit axious
if I was able to express correctly what I wanted to say. Hmmm.
Hope that I didn't create any misunderstandings ....
Danny Yoo schrieb:
>
> On Thu, 17 Mar 2005, Gregor Lingl wrote:
>
>
>>Hi!
>>Who knows a more concise or equally concise but more efficient
>>expression, which returns the same result as
>>
>>[x for x in range(2,100) if not [y for y in range(2,x) if x%y==0]]
>
>
>
> Hi Gregor,
>
> Here is one that's traduced... er... adapted from material from the
> classic textbook "Structure and Interpretation of Computer Programs":
>
> ######
>
>>>>from itertools import ifilter, count
>>>>
>>>>def notDivisibleBy(n):
>
> ... def f(x):
> ... return x % n != 0
> ... return f
> ...
>
>>>>def sieve(iterable):
>
> ... nextPrime = iterable.next()
> ... yield nextPrime
> ... restOfPrimes = sieve(ifilter(notDivisibleBy(nextPrime), iterable))
> ... for prime in restOfPrimes:
> ... yield prime
> ...
>
>>>>primes = sieve(count(2))
>>>>primes.next()
>
> 2
>
>>>>primes.next()
>
> 3
>
>>>>primes.next()
>
> 5
>
>>>>primes.next()
>
> 7
>
>>>>primes.next()
>
> 11
>
>>>>primes.next()
>
> 13
>
>>>>primes.next()
>
> 17
>
>>>>primes.next()
>
> 19
>
>>>>primes.next()
>
> 23
> ######
>
> The neat thing about this code is that it produces an infinite iterator of
> prime numbers. The original code in Scheme is itself quite concise and
> quite nice. It is described here:
>
> http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#call_footnote_Temp_455
>
>
> Best of wishes to you!
>
>
>
--
Gregor Lingl
Reisnerstrasse 3/19
A-1030 Wien
Telefon: +43 1 713 33 98
Mobil: +43 664 140 35 27
Autor von "Python für Kids"
Website: python4kids.net
More information about the Tutor
mailing list