Python-Gefühl

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Als ich vor ein paar Jahren mein erstes kleines, aber nützliches, Python-Programm geschrieben habe, hatte ich beim Programmieren so viel Spaß wie selten. Ich musste wenig über technische Dinge nachdenken, sondern konnte mich auf die Umsetzung meiner Idee konzentrieren. Seitdem habe ich den Gedanken an das "Python-Gefühl" im Kopf.

Was macht für euch das Python-Gefühl aus? Welche Eigenschaften von Python tragen dazu bei? Und wie ist das Gefühl im Vergleich zu anderen Sprachen?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Brauchst'e das für nen Aufsatz? :D
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Nee, brauche ich für keinen Aufsatz :-) Geht mir nur öfter durch den Kopf und ich will wissen, ob es anderen auch so geht.

Obwohl es eigentlich auch mal ein interessantes Thema für einen Aufsatz wäre ...
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Ja klar Bild.

"Python ist halt der Chuck Norris der Programmiersprachen"
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ist es nicht einfach "Spass beim Programmieren", vielleicht gepaart mit einem gewissen Gefühl der unbeschränkten Macht, weil man auf einmal glaubt (oder gar erkennt), alles sei möglich? ;)

Während ich definitiv sagen würde, rumdaddeln (im positiven Sinne gemeint) mit Python macht mir Spass, muss ich sagen, die einzige Sprache, wo ich das besagte "Python-Gefühl" hatte, war Smalltalk vor 15 Jahren. Eleganz durch Uniformität, die ein tiefes Verständnis erlaubte, gepaart mit einer (zur damaligen Zeit) mächtigen IDE als Gesamtsystem, hohe Produktivität, geringe Frustration und dadurch Spass bei der Arbeit. Yeah.

Python ist zwar auch uniform und dadurch in meinen Augen elegant, was die Sprache angeht, doch es gibt ein paar dunkle Ecken, in die man besser nicht näher schaut und die Standardbibliothek ist von unterschiedlicher Qualität. Und Python will kein Gesamtsystem sein, sondern eher (oder zumindest auch) eine Glue-Sprache, was IMHO der Eleganz abträglich ist. Ich mag es zudem gar nicht, wenn ich erst dieses oder jenes jeweils nach eigenen Regeln irgendwie manuell installieren oder konfigurieren muss, bis es läuft.

Bei Ruby z.B. gefällt mir nicht die Varianz in der Sprache, dafür sind Blöcke ein IMHO essentielles Sprachmittel, das ich bei Python vermisse und gems und rake bieten Ruby-Lösungen für typische Probleme, die das Ganze in Richtung einer Komplettlösung bewegen. Ich mag es, gems bequem zu installieren, zu löschen oder aktuell zu halten. Ich mag auch die Innovationsfreude der Ruby-Community. Da weiß ich, dass auch ich da in Metaprogrammierung schwelgen darf :)

Und tatsächlich gibt es auch Momente, wo mir die Programmierung in Java Spaß macht. In erster Linie ist das der Verdienst von IDEA, das mir das Gefühl von Produktivität und Kontrolle gibt, die es erlaubt, wirklich das Problem zu lösen und nicht mit den Tools zu kämpfen. Aber dann sehe ich wieder XML-Spring-Konfiguration, JSP-JSF-Page oder eine FactoryFactoryFactory und verflogen ist der ganze Spaß an der Sprache.

Schade eigentlich.

Kollegen von mir portieren gerade Django auf Java. Und ich glaube, das kann gelingen. Denn auch Java-Entwickler haben Eleganz und Einfachheit verdient.

Stefan
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

sma hat geschrieben:... Kollegen von mir portieren gerade Django auf Java....
Die Welt kann so grausam sein.
sma hat geschrieben:... Und ich glaube, das kann gelingen. Denn auch Java-Entwickler haben Eleganz und Einfachheit verdient. ...
JUDAS!

Bild
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Masaru hat geschrieben:JUDAS!
Vielleicht hatten die Gnostiker ja recht...

Stefan
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

... vielleicht
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

sma hat geschrieben:Kollegen von mir portieren gerade Django auf Java.
Nehme ich!

Wo muss ich mich anstellen?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Zur Zeit ist es ein POC und sehr wahrscheinlich wird's auch nicht opensource. Betrifft auch im wesentlichen nur die Templates und glaube ich das URL-mapping. Für die DB-Anbindung bietet sich JPA an, denke ich. Aber das ist nicht mein Projekt, ich habe davon nur gehört. Somit muss ich dich enttäuschen.

Vielleicht willst du dir mal http://www.playframework.org/ anschauen. Das ist für Java-Verhältnisse einzigartig. Zur Zeit total unbekannt, aber das Video hat IMHO einen recht hohen Wow-Faktor.

Stefan
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

sma hat geschrieben:Vielleicht willst du dir mal http://www.playframework.org/ anschauen. Das ist für Java-Verhältnisse einzigartig. Zur Zeit total unbekannt, aber das Video hat IMHO einen recht hohen Wow-Faktor.
Mein Problem ist, dass ich wir hier in der Firma ein neues Webprojekt aufziehen. Mit Python konnte ich mich u.a. aufgrund Mangels an Python-Entwicklern nicht durchsetzen, aber immerhin habe ich PHP verhindert. Jetzt wird es wohl JAVA, aber das Framework dahinter ist noch in der Diskussion.

Zurück zum Thema: Für mich kam der erste WOW!-Effekt durch die sofort ersichtliche klare Struktur und die Übersichtlichkeit der Sprache. Der zweite kam dann mit a) dem Entdecken von List-Comprehensions und b) der Erkenntnis, dass alles ein Objekt (bzw. eine Instanz davon) ist und sich quasi auch überall dranbinden lässt.

Jetzt müssten nur noch dunkle Ecken wie "WSGI unter Python 3" erleuchtet werden.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

sma hat geschrieben:Vielleicht willst du dir mal http://www.playframework.org/ anschauen. Das ist für Java-Verhältnisse einzigartig. Zur Zeit total unbekannt, aber das Video hat IMHO einen recht hohen Wow-Faktor.
Du konntest das nicht früher posten, oder? Ich hät's gebrauchen können. Verdammt.
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Noch kurz zu Play: Ja, sieht auf den ersten Blick nett aus, aber es schafft eine Parallelwelt, weil es nicht auf Servlets aufsetzt. Damit gehen viele Vorteile von Java EE verloren - aus meiner Sicht eine ganz, ganz schlechte Idee!
It’s really a full stack Java framework that runs your application in a standalone way. [...] Play is the platform.
http://www.playframework.org/documentation/1.0.1/faq

Außerdem ist es mit Java, Groovy und Python ein unnötiger Sprachmischmasch.

WSGI ist meiner Meinung nach unabhängig von Python 3 nicht das hellste Kapitel von Python. Die Idee ist gut, die Umsetzung auch, aber leider ist beides auf zu geringem Abstraktionsniveau und unterstützt zu wenig grundlegende Dinge, wie z. B. Sessions. Mit Java Servlets kann man ohne Framework einigermaßen arbeiten mit WSGI ist das wesentlich unangenehmer. Da kommt kein "Python-Gefühl" auf ;-)
lunar

deamon hat geschrieben:Damit gehen viele Vorteile von Java EE verloren
Die da wären?
Außerdem ist es mit Java, Groovy und Python ein unnötiger Sprachmischmasch.
Webanwendungen brauchen nun mal unterschiedliche Sprachen für unterschiedliche Probleme. Einfache, agile Sprachen für Templates, die auch ein ansonsten unerfahrener Webdesigner schnell verwenden kann, ebenso wie mächtige, solide Sprachen wie Java für die Anwendungslogik.

Java alleine reicht nun mal nicht, denn Java ist für manches (e.g. Templates oder Konfigurationsskripte) nicht wirklich geeignet.

Davon abgesehen: Einen "Sprachmischmasch" hat man bei Webanwendungen immer. Zur "Anwendungssprache" kommt immer noch die clientseitige Logik und Darstellung in HTML, CSS und Javascript, fast immer noch eine serverseitige Templatesprache, und manchmal auch noch SQL. Eine Sprache mehr oder weniger fällt da gar nicht, insbesondere, wenns der Entwicklung hilft.
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Die Vorteile von Java liegen in standardisierten Schnittstellen. Man kann z. B. die Authentifizierung auf Container-Ebene abhandeln und die Anwendung nutzt nur eine sehr einfache Schnittstelle, um festzustellen, welcher Benutzer gerade aktiv ist und welche Rollen der hat. Insgesamt trennt Java EE sehr schön die Anwendungslogik von der technischen Infrastruktur, was durch Ansätze wie den von Play teilweise zunichte gemacht wird.

Es stimmt schon, dass man bei Webanwendungen normalerweise mit mehreren Sprachen arbeiten muss, aber gerade Groovy _und_ Python hätten meiner Meinung nach nicht beide sein müssen. In einem Java-Framework hätte ich alles mit Groovy gemacht. Oder ich würde Java, Groovy und Python alle durch Scala ersetzen. Bei Wicket braucht man übrigens nur Java und Html - ganz ohne eigene Template-Sprache.
lunar

Entweder hast Du meine Frage nicht verstanden, oder ich verstehe Deine Antwort nicht.

Die Einsicht, eine einfache Schnittstelle bereitzustellen, ist ja wohl trivial. Es ist selbstverständlich, dass das Rahmenwerk Authentifizierung usw. übernimmt, und mir eine einfache Schnittstelle bietet. Ansonsten wäre es kein Rahmenwerk. Play wird wohl auch solche Schnittstellen bereitstellen.

Ich wollte wissen, was die Vorteile von Java EE und Servlets im Speziellen sind. Warum müssen es unbedingt Java EE und Servlet sein? Warum ist es nicht ok, wenn das Rahmenwerk eine eigene Schnittstelle bietet? Für mich als Anwendungsentwickler ist es doch letztlich völlig egal, welche Schnittstelle ich nutze, solange am Ende etwas brauchbares dabei rauskommt.

Im Übrigen schrieb ich "fast immer eine Template-Sprache". Das man auch ohne auskommt, ist mir auch klar. Es ist nur meist eben nicht der Fall … vor allem, wenn HTML nicht das einzige ist, was man an Text generiert.
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

lunar hat geschrieben:Ich wollte wissen, was die Vorteile von Java EE und Servlets im Speziellen sind. Warum müssen es unbedingt Java EE und Servlet sein? Warum ist es nicht ok, wenn das Rahmenwerk eine eigene Schnittstelle bietet? Für mich als Anwendungsentwickler ist es doch letztlich völlig egal, welche Schnittstelle ich nutze, solange am Ende etwas brauchbares dabei rauskommt.

Es geht aber um standardisierte Schnittstellen und nicht um irgendwelche Schnittstellen. Einfaches Beispiel wäre ein Servlet-Filter, den man vor jede beliebige Servlet-Anwendung hängen kann - weil die Schnittstelle standardisiert ist. Genauso kann man über eine standardisierte Schnittstelle in jeden Application Server überall verwendbare Authentifzierungsmodule einhängen usw.
Antworten