Seite 1 von 1

Argumente für Python?

Verfasst: Sonntag 27. April 2008, 21:37
von Karl
Hi.
Gibt es bzw. kennt ihr irgendeine Liste/Seite, in der/auf der alle Argumente, die für (von mir aus auch gegen, gehört ja auch dazu ;) ) Python sprechen?
Mir selbst fallen zwar auch schon einige ein, aber eben bestimmt nicht alle, vorallem da ich noch nicht so tief in Python reinblicken kann, wie manch anderer.
Ich würde mir das nur mal als Bekräftigung für meine Wahl auf Python anschaun :p
Cool wäre es, wenn es konkrete Beispiele und Vergleiche mit anderen Sprachen beinhalten würde, aber sowas ist dann auch meistens wieder zu subjektiv

Verfasst: Sonntag 27. April 2008, 21:44
von BlackVivi
Plattformunabhängig, funktional, schnell zu erlernen, fördert saubere Programmierung, freie Implementierung in C, C#, Java und Python selbst, Batteries included...

Konkrete Vergleiche mit anderen Sprache?

Man muss auf weniger achten als bei C, es ist nicht so uberkomplex wie Java und zwingt außerdem nicht zu OOP... Es ist komplett frei, in Gegensatz zu C#... Es bietet OOP das näher an Smalltalk ist, was mir sehr zusagt. Es ist aber sehr aktuell! Es bietet eine sehr übersichtliche Dokumentation und auch Standardbibliothek.

Das einzige was mich an Python stört ist wohl... Weiß nicht, die meisten Implementationen sind nicht die allerschnellsten. Zwar ist Geschwindigkeit nicht sonderlich wichtig, aber wenn man Programme in Python distributiert ist es besondern unter Windows immre so eine Sache... ein Programm braucht irgendwie recht lang zum starten für mich, mag das nicht so gerne bei kleinen Sachen :)

Verfasst: Sonntag 27. April 2008, 21:48
von Leonidas
Schon mal die Forensuche benutzt? Dort gibt es mehrere Threads zu dem Thema, auch vergleiche mit anderen Sprachen.

Ein Argument was glaube ich bisher noch nicht erwähnt hatte ist, dass du durch die Wahl von Python die Möglichkeit hast mit Lichtgestalten der Programmierung wie BlackJack, Y0GI, mitsuhiko, birkenfeld, lunar, gerold, sma, EyDu, Leonidas und anderen in Kontakt zu treten. Na wenn das mal nichts ist ;)

Verfasst: Sonntag 27. April 2008, 21:49
von BlackVivi
Leonidas hat geschrieben:Schon mal die Forensuche benutzt? Dort gibt es mehrere Threads zu dem Thema, auch vergleiche mit anderen Sprachen.

Ein Argument was glaube ich bisher noch nicht erwähnt hatte ist, dass du durch die Wahl von Python die Möglichkeit hast mit Lichtgestalten der Programmierung wie BlackJack, Y0GI, mitsuhiko, birkenfeld, lunar, gerold, sma, EyDu, Leonidas und anderen in Kontakt zu treten. Na wenn das mal nichts ist ;)
Oh, verzeih mir dies'. Insbesondere dich und BlackJack seh ich meist' als Phänomen! Positiv :3

Verfasst: Sonntag 27. April 2008, 21:53
von Karl
BlackVivi hat geschrieben:Plattformunabhängig, funktional, schnell zu erlernen, fördert saubere Programmierung, freie Implementierung in C, C#, Java und Python selbst, Batteries included...

Konkrete Vergleiche mit anderen Sprache?

Man muss auf weniger achten als bei C, es ist nicht so uberkomplex wie Java und zwingt außerdem nicht zu OOP... Es ist komplett frei, in Gegensatz zu C#... Es bietet OOP das näher an Smalltalk ist, was mir sehr zusagt. Es ist aber sehr aktuell! Es bietet eine sehr übersichtliche Dokumentation und auch Standardbibliothek.

Das einzige was mich an Python stört ist wohl... Weiß nicht, die meisten Implementationen sind nicht die allerschnellsten. Zwar ist Geschwindigkeit nicht sonderlich wichtig, aber wenn man Programme in Python distributiert ist es besondern unter Windows immre so eine Sache... ein Programm braucht irgendwie recht lang zum starten für mich, mag das nicht so gerne bei kleinen Sachen :)
Kurze, knappe Zusammenfassung ;)
Entählt wahrscheinlich wirklich fast alle Argumente.
Schon mal die Forensuche benutzt? Dort gibt es mehrere Threads zu dem Thema, auch vergleiche mit anderen Sprachen.

Ein Argument was glaube ich bisher noch nicht erwähnt hatte ist, dass du durch die Wahl von Python die Möglichkeit hast mit Lichtgestalten der Programmierung wie BlackJack, Y0GI, mitsuhiko, birkenfeld, lunar, gerold, sma, EyDu, Leonidas und anderen in Kontakt zu treten. Na wenn das mal nichts ist ;)
Sorry @Forensuche aber ich hab zu oberflächlich gesucht :p
@Lichtgestalten der Programmierung: Hat aber auch was frustrierendes ;) Ich wechsel zu irgend ner Sprache, in der man einfach nicht gut sein kann :p

Verfasst: Sonntag 27. April 2008, 22:40
von BlackVivi
Achja! Wenn du jemanden von Python erzählst ist das erste was fällt: "IST DOCH NUR EINE SKRIPTSPRACHE..."

Könnt' ausrasten bei sowas. Es ist intepretiert, es ist eine "Skriptsprache". JA UND? Programme sind kleiner, ordentlicher, schöner, effizenter zu gestalten als in einer NICHT SKRIPTSPRACHE. Bei Perl und TCL und Matlab versteh ich ja die ganzen Argumente, aber bei Python? Für mich ist Python was besonderes.

Verfasst: Montag 28. April 2008, 08:04
von mkesper
In der neuen c't (10/2008, S. 163f.) gibt's einen Artikel "Das Beste aus Java, Perl und Python: Groovy". Dort wird als Vorteil von Groovy unter anderem gesehen, daß man es auch statisch typisiert benutzen kann und daß man performancekritische Stellen in Python etc. in C schreibt, wogegen man dies in Groovy naturgemäß in Java erledigt und damit sicherer sei.
Ich hätte einen Vergleich mit Jython spannender und auch gerechtfertigter gefunden.

Verfasst: Montag 28. April 2008, 09:01
von AlArenal
Jython wird aber gerade nicht gehypet und ist in dem Sinne auch nicht neu. Persönlich kann ich mit Groovy nicht viel anfangen. Es scheint mir, als versuche man mit Grails krampfhaft ein Framework zu schaffen, dass Ruby on Rails nachäfft, um irgendein Zugpferd für Groovy zu haben.

Auch hatte ich mal am Rande einer Diskussion mitbekommen, dass sich die Groovy-Entwickler nicht ganz grün sind, in welche Richtung es nun gehen soll.

M.E. gibt es mit Rhino (JavaScript), BeanShell, Jython und JRuby (deren beide Chefentwickler vorletztes Jahr von Sun angestellt wurden) bereits sehr gute Implementierungen, die man in Java nutzen kann, ohne das Rad neu zu erfinden. Vielleicht mal abgesehen von BeanShell, dass aber zum Testen und Rapid Prototyping ganz nett ist und seines Alters wegen von mir erwähnt wird. Mit der Integration von JS, Ruby und Python ist man bereits exzellent aufgestellt und da braucht es nicht noch eine neue Sprache, die es zu lernen gilt.

Effizienter ist es m.E. jedenfalls eine dieser drei Engines zu nutzen. Im Zweifelsfalle ist es einfacher jemanden zu finden, der JS, Ruby oder Python kann und diesen anzulernen, als jemanden Groovy lernen zu lassen.

Ich kann an Groovy jedenfalls nichts grooviges finden.

P.S.:
Und komm mir nun keiner mit Scala. Wenn ich Scala-Code nur sehe, dreht sich mir der Magen rum. Aber scheinbar musste man unbedingt auch den aktuellen Hype um funktionale Sprachen irgendwie bedienen.

Verfasst: Montag 28. April 2008, 10:38
von Leonidas
AlArenal hat geschrieben:Und komm mir nun keiner mit Scala. Wenn ich Scala-Code nur sehe, dreht sich mir der Magen rum. Aber scheinbar musste man unbedingt auch den aktuellen Hype um funktionale Sprachen irgendwie bedienen.
Scala war doch letzten Monat auf reddit modern, diesen Monat ist Closure cool ;)

Verfasst: Montag 28. April 2008, 11:45
von AlArenal
Leonidas hat geschrieben:Scala war doch letzten Monat auf reddit modern, diesen Monat ist Closure cool ;)
Die Beschreibung von Clojure liest sich wie die eines Verschnitts aus Lisp und Erlang.

Verfasst: Montag 28. April 2008, 13:55
von lunar
BlackVivi hat geschrieben:Es ist komplett frei, in Gegensatz zu C#...
Dem würde ich so pauschal widersprechen. C# ist ISO-standardisiert, nicht patent-belastet und mit Mono auch frei implementiert. Im Gegensatz zu Python ist die Grammatik der Sprache auch vollständig dokumentiert ;)

Gegen C# würde ich eher anführen, dass es auch statisch typisiert ist, und mir persönlich statische Typisierung viel zu aufwendig ist ;) Für Leute, die auf statische Typisierung stehen, ist C# dagegen sehr fein.

Ich persönlich halte C# für eine gute Sprache (ich habe früher selbst damit gearbeitet), nur mag ich statische Typisierung halt nicht, was die Sprache für mich *persönlich* disqualifiziert.

Verfasst: Montag 28. April 2008, 15:15
von BlackJack
Die (Kern)Sprache ist zwar standardisiert und patentfrei, das muss aber auf die Standardbibliothek bzw. alles was Microsoft da noch so beipackt nicht gelten. Mono hinkt auch immer hinterher.

Verfasst: Montag 28. April 2008, 16:58
von lunar
BlackJack hat geschrieben:Die (Kern)Sprache ist zwar standardisiert und patentfrei, das muss aber auf die Standardbibliothek bzw. alles was Microsoft da noch so beipackt nicht gelten.
Der relevante Teil der Standardbibliothek ist nicht patent-belastet. Patente existieren nur für ASP.NET, die WinForms bzw. WPF-Klassen und einige weitere Windows-spezifische APIs. Die interessieren unter Linux eh nicht, wer plattformunabhängige Programme schreiben möchte, wird auf diese Teile eh verzichten.
Mono hinkt auch immer hinterher.
Naja, wenn man das als Kriterium sieht, dann ist Python auch nur bedingt besser. Hier hinken alternative Implementierungen auch meistens hinterher ;)

Verfasst: Montag 28. April 2008, 20:29
von Leonidas
AlArenal hat geschrieben:Die Beschreibung von Clojure liest sich wie die eines Verschnitts aus Lisp und Erlang.
Für Erlang gibt es ja Lisp Flavoured Erlang (LFE). 8)

Verfasst: Montag 28. April 2008, 21:54
von BlackVivi
lunar hat geschrieben:
BlackJack hat geschrieben:Die (Kern)Sprache ist zwar standardisiert und patentfrei, das muss aber auf die Standardbibliothek bzw. alles was Microsoft da noch so beipackt nicht gelten.
Der relevante Teil der Standardbibliothek ist nicht patent-belastet. Patente existieren nur für ASP.NET, die WinForms bzw. WPF-Klassen und einige weitere Windows-spezifische APIs. Die interessieren unter Linux eh nicht, wer plattformunabhängige Programme schreiben möchte, wird auf diese Teile eh verzichten.
Mono hinkt auch immer hinterher.
Naja, wenn man das als Kriterium sieht, dann ist Python auch nur bedingt besser. Hier hinken alternative Implementierungen auch meistens hinterher ;)
Es geht mir hier aber um die Referenzimplementierung ;P ^_^

Verfasst: Montag 28. April 2008, 22:34
von meneliel
... ich find Python-Code einfach unheimlich schön ... vielleicht nicht immer meinen eigenen... aber ....

v.a. BlackJack, was der so ab und an zusammenzaubert.... :)

(Also da ist er nicht der einzige, aber bei ihm fällt es mir gehäuft auf..... :) da ist ab und an so der sprachlos effekt da ....)

Verfasst: Mittwoch 30. April 2008, 09:36
von sma
Lichtgestalt? Zu viel der Ehre ;) Mir gefällt an Python die einfache, einheitliche und lesbare Syntax. Dadurch ist Python leicht erlernbar. Dennoch hat die Sprache eine große Tiefe, was verschiedene Konzepte angeht. Python ist somit für Anfänger und Fortgeschrittene geeignet. Python versucht nicht, den Anwender dumm zu halten oder vor sich selbst zu schützen. Mir gefällt, dass man funktional und/oder objektorientiert programmieren kann. Mir gefällt, dass die Sprache (im Gegenzug zu Ruby etwa) vollständig spezifiziert ist. Weniger gefällt mir die die Funktions- und Klassenbibliothek, die historienbedingt ziemlich zusammengewürfelt und zum Teil veraltet ist. Die Möglichkeit zur Metaprogrammierung ist nett, auch wenn dabei zu viele "_" für meinen Geschmack im Spiel sind. Mir gefällt zudem die Einfachheit der Web-Entwicklung mit Python.

Ich halte Java eigentlich nicht für komplex, nur für kompliziert. Die Konzepte von Java sind (bis auf Generics) deutlich einfacher. C# ist komplex (und kompliziert). Bei OOP a la Smalltalk würde ich eher auf Ruby als auf Python tippen, denn Python kennt keine dualen Exemplar- und Klassenmethoden wir Ruby und Smalltalk.

Statische Typen sind (sagt der langjährige Lisp und Smalltalk-Entwickler) entbehrlich, dennoch können sie Schnittstellen dokumentieren und daher finde ich gut, was mit Python 3 kommt. Dennoch finde ich Scala bemerkenswert, auch wenn es sich in den Jahren zu einer IMHO zu komplexen (kompliziert ist es eh) Sprache entwickelt hat.

Groovy habe ich immer als einen ungeliebten Bastard aus Ruby und Java gesehen, dennoch, die Sprache gewinnt mehr und mehr Anhänger, vielleicht auch, weil sie ein bisschen den Schmerz von Java nimmt, ohne das man radikale Brüche hat.

Leider ist Jython vor einigen Jahren eingeschlafen und vielleicht ist es jetzt zu spät, aufzuwachen. Wie groß ist der Aufmerksamkeitsmarkt für Scriptsprachen auf der Java-Plattform? JRuby und wahrscheinlich Groovy sind gekommen um zu bleiben.

Tinypy finde ich übrigens faszinierend, gerade weil der Quelltext so klein ist. Leider kann es auch recht wenig im Vergleich zu einem "echten" Python. Ich hatte neulich den Gedanken, dass es vielleicht interessant wäre, Tinypy von C auf Java zu portieren. Glücklicherweise der Parser und Compiler ja in Python (Tinypy?) geschrieben, wir reden hier von ca. 25k C-Code. Vielleicht etwas für das kommende lange Wochenende...?

Stefan

Verfasst: Freitag 2. Mai 2008, 06:52
von BlackJack
Argument für Python: Es hat den ersten Platz bei der Leserwahl des *Linux Journal* in der Kategorie *Scripting Languages* belegt:

http://www.linuxjournal.com/article/10065

Der Artikel geht auch darauf ein, das die Einteilung in *Programmiersprachen* und *Skripting-Sprachen* bei den Lesern eine Menge Reaktionen ausgelöst hat.
You wouldn't believe the number of “WTFs” we got when readers didn't find Python, Ruby or other languages here but rather in the scripting language category. Check out that category's results, as well as Michael Baxter's explanation in the sidebar for how we differentiated between programming and scripting languages. (No doubt we'll see you in the on-line comments section too!)

Verfasst: Freitag 2. Mai 2008, 09:52
von lunar
Der erinnert mich schon wieder an den **Perl**-Programmierwettbewerb des Linux-Magazins. Gewonnen hatte ein Skript, welches ein **Python**-Skript aufrief, welches dann die Aufgabe löste ;) Wenn das mal kein Argument für Python ist, dann weiß ich nicht weiter ;)


@sma
Komplexe Probleme bzw. Sprache sind doch eigentlich besser als komplizierte, weil hinter komplexen Dingen immer noch ein System steht, während komplizierte Dinge meistens konzeptlos sind. Oder sehe ich da was falsch?

Mir gefällt C# trotzdem besser als Java. Es vereinfacht vieles, weil es syntaktischen Zucker z.B für Eigenschaften und Delegates bietet, den Java nicht hat. Gerade die Art, auf die Java Callbacks definiert (anonyme lokale Klassen) ist doch irgendwie krank ;) Außerdem hat C# besonders seit 3.0 ein paar nette Features zur Metaprogrammierung, was die statische Typisierung etwas erträglicher macht ;)

Letztendlich mag ich statisch typisierte Sprachen nicht (viel zu viel Boilerplate), und bei den dynamischen ist halt Python die, bei der Verbreitung und Lesbarkeit so Hand in Hand gehen, dass man damit wunderbar spielen kann ;)