[Python-de] "Funktionalitaet" von Python

Thilo Ernst Thilo.Ernst at dlr.de
Fri Aug 30 11:36:03 EDT 2002


> Dinu Gherman wrote:
> > kann mir jemand die aktuelle Aufregung um die mehr oder
> > weniger vorhandenen funktionalen Eigenschaften von Python
> > erklaeren? Guido wollte ganz sicher kein funktionales Py-
> > thon und er wuergt immer noch, wenn er nur an "lambda"
> > denkt!
> >
> > Warum ist Python funktional? "Map", "filter" und "reduce"
> > kann jeder in wenigen Zeilen Python selbst schreiben. Macht
> > "lambda" Python schon funktional? Doch wohl kaum... Es ist
> > manchmal praktisch, wenn man keine Funktion deklarieren
> > will/kann und das war's dann auch schon mit dieser Funkt-
> > ionalitaet in Python! ;-)

In meinen Augen ist der eigentliche Hintergrund der, daß Python mehr und mehr
Terrain auf Gebieten gewinnt, in denen traditionell den "echten" funktionalen Sprachen
wie Lisp und Scheme die Alleinherrschaft zukam - und zwar häufig nicht, weil sie funktional
sind, sondern weil sie bis vor einigen Jahren die einzigen leistungsfähigen
dynamischen Sprachen waren. Auf einmal gibt es nun Sprachen wie Python,
die mit den etablierten funktionalen Sprachen sehr viele Vorteile teilen (schneller
Entwicklungszyklus, Introspektion, vergleichbar hohes Abstraktionsniveau,  usw.)
ohne deren Nachteile (eher kryptische Syntax, höherer Ressourcenbedarf im Gehirn,
akademisch-praxisferne Reputation)  mitzubringen. In bezug auf praktische Aspekte wie
Verfügbarkeit leistungsfähiger Bibliotheken, Standardisierung  und Portabilität hat
Python Sprachen wie Lisp und Scheme inzwischen  weit hinter sich gelassen und ist
dabei, das zu schaffen, was Lisp in vierzig Jahren nicht geschafft hat - zu einer
"Mainstream"-Sprache zu werden.

Und das ist natürlich nicht so erfreulich für die "funktionale Gemeinde", die
folglich versucht zu zeigen, daß Python (und im übrigen alle modernen Sprachen)
erstens fast alle interessanteren Features von Lisp abgeschaut hat, zweitens aber
erhebliche Mängel besitzt, die dazu führen dass es ihren bevorzugten Sprachen
weit unterlegen bleiben muss - es ist ja nicht "wirklich funktional".
In der Tat  muß man als Python-Nutzer wohl dauerhaft  auf echte Closures und
"hygienische"  Makros verzichten. Wie schwer dieser Verzicht allerdings wiegt,
muß jeder Nutzer für sich  (oder per Projekt) entscheiden.

Die Artikel von Paul Graham (www.paulgraham.com) belegen recht anschaulich
diese durch den Siegeszug der imperativen dynamischen Sprachen  ausgelöste
Sinnkrise in der Lisp-Community.  Lisp wird dort z.B durch folgende Argumentation
"gerettet": Höheres Abstraktionsniveau erlaubt kompakteren Code (maximalen
semantischen Gehalt pro Codezeile),  und Code-Kompaktheit muss immer das
übergeordnete Optimierungsziel  sein.  Man darf folglich in einer modernen
Sprache auf kein einziges leistungsfähiges Abstraktionsmittel (wir z.B. Lisp-Makros)
verzichten.
(Probleme wie die Lesbarkeit und Wartbarkeit solcher "maximal-kompakten"
Programme werden allerdings nicht näher betrachtet :-)

Abgesehen von dieser vordergründigen Parteinahme sind die Artikel
aber für jeden Nutzer einer dynamischen Sprache wie Python oder Ruby
wirklich sehr  empfehlenswert .

- TE





More information about the Python-de mailing list