Seite 1 von 1

Warum Python? :)

Verfasst: Donnerstag 23. Januar 2003, 02:38
von iGEL
Moin!

Ich muss zugeben, dass ich von Python wenig weiss. Bis vor kurzem habe ich es nur für eine weitere Skriptsprache gehalten, und meine Meinung über PHP hat leider auch darauf abgefärbt (PHP ist ne tolle Sache, aber zu fehlertolerant, ausserdem ist es zuanfang etwas chaotisch gewachsen und krankt daran imho noch immer).

Aber seit ich etwas mehr über Python gehört habe, glaube ich, dass es sich dabei um eine erwachsene Sprache handelt. Dass sich Firmen dafür entscheiden, hochkomplexe Projekte wie das Massive Multiplayer Online Spiel EVE (samt der genialen Grafik) in Python statt in traditionellen Sprachen wie C oder C++ zu implementieren, hat mir wirklich zu denken gegeben. :)

Ich möchte über die Semesterferien gern eine neue Sprache lernen und habe dafür schon ein Projekt. Es handelt sich dabei ausnahmsweise nicht um eine Webapplikation, hat aber trotzdem mit dem Internet zu tun (Versenden von Dateien, son bischen Filesharing). Die Entscheidung ist nur, lerne ich C++, Java oder Python?

Für C++ spricht, dass ich mit meinen sehr guten C und PHP-Kenntnissen nicht bei 0 anfangen muss. Ausserdem habe ich schon ein bischen darin gemacht und besitze schon ein dickes Buch (den Stroustrup ;)). Dagegen spricht, dass man damit Webapplikationen (mein Hauptgebiet zur Zeit) eher schlecht implementieren kann, aber das soll mich nicht hindern.

Für Java spricht, dass es plattformunabhängig ist, ausserdem ist der Syntax der selbe wie in C. Ich habe hier ebenfalls schon etwas Erfahrungen, und für Webapplikationen ist es dank Applets und Servlets/JSP gut geeignet. Nachteile: Es ist bei vielen, die es nicht kennen, zu unrecht sehr unbeliebt (Die meisten denken dabei ja an einen Flashersatz). Viel schwerwiegender ist aber, dass es keine offene Sprache ist, sondern SUN gehört. Ausserdem weiss ich nicht, wie gut die Maschienencodecompiler sind, denn man möchte ja nicht von einer VM abhängig sein.

Tja, und frage ich mich, warum sollte ich Python lernen. :)

Dazu hab ich ein paar Fragen an euch:
1.) Warum programmiert ihr in Python und nicht in einer andern Sprache?
1.a) Aus Interesse: In welchen Sprachen habt ihr sonst mal programmiert?
1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?

2.) Kann man mit Python auch Binaries erstellen? Funktionieren dann auch noch Dinge wie grafische Oberflächen o. ä.?
2.a) Oder kann man Python sonst irgendwie kompilieren, so dass man nicht gerade immer den Quellcode offen weitergeben muss, wenn man ein Produkt verkauft?

3.) Ist Python für Webanwendungen geeignet?

4.) Ich erhoffe mir von Python, dass es weniger anfällig für Sicherheitslöcher ist, daher also selbst dafür sorgt, dass es nicht zu einem Buffer Overflow oder so kommt, mit dem man beliebigen Code auf dem Zielrechnerausführen kann. Stimmt das? :)


So, schon mal vielen Dank für eure Antworten! Auch für Links wäre ich dankbar, falls diese irgendwie auf meine Fragen antworten (Deutsch bevorzugt, aber englisch geht auch).

Gute Nacht,
iGEL

Re: Warum Python? :)

Verfasst: Donnerstag 23. Januar 2003, 08:03
von piddon
iGEL hat geschrieben:Moin!
Für C++ spricht, dass ich mit meinen sehr guten C und PHP-Kenntnissen nicht bei 0 anfangen muss. Ausserdem habe ich schon ein bischen darin gemacht und besitze schon ein dickes Buch (den Stroustrup ;)). Dagegen spricht, dass man damit Webapplikationen (mein Hauptgebiet zur Zeit) eher schlecht implementieren kann, aber das soll mich nicht hindern.
Der Sprachsyntax von Python ist anfangs doch gewöhnungsbedürftig, jedoch lernt man schnell, denn eigentlich ist es sehr einfach gehalten und so wie man spricht oder Denkt.

Daher wird Python sehr oft für Rapid Prototyping gebraucht. Einfach zu lernen, relativ schnell produktiv einzusetzen.

Stroustrup's Buch über seine C erweiterung C++ ist für den Anfang echt heftig! Ich habe es auch, und konnte es bisher noch nicht gebrauchen ;))
iGEL hat geschrieben: Für Java spricht, dass es plattformunabhängig ist, ausserdem ist der Syntax der selbe wie in C. Ich habe hier ebenfalls schon etwas Erfahrungen, und für Webapplikationen ist es dank Applets und Servlets/JSP gut geeignet. Nachteile: Es ist bei vielen, die es nicht kennen, zu unrecht sehr unbeliebt (Die meisten denken dabei ja an einen Flashersatz). Viel schwerwiegender ist aber, dass es keine offene Sprache ist, sondern SUN gehört. Ausserdem weiss ich nicht, wie gut die Maschienencodecompiler sind, denn man möchte ja nicht von einer VM abhängig sein.
Java.... Das ist meiner meinung nach so ein Ding. Es ist mächtig, objektorientiert und Plattformunabhängig. Webapplikationen mit Java Servlets sind langsam, und Speicherhungrig.

Aber Java ist "draussen" ziemlich verbreitet bei grossen Webapplikationen. Ist aber nicht mein Fall.
iGEL hat geschrieben: Tja, und frage ich mich, warum sollte ich Python lernen. :)

Dazu hab ich ein paar Fragen an euch:
1.) Warum programmiert ihr in Python und nicht in einer andern Sprache?
1.a) Aus Interesse: In welchen Sprachen habt ihr sonst mal programmiert?
1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?
1.) Weil ich mit Python schnell und unkompliziert meine Applikation zum laufen bekomme, und der Quellcode trotzdem lesbar und übersichtlich bleibt (Wartung, usw.)

1.a) Ich programmiere noch in: PHP, Perl, Visual Basic und c/c++
1.b) Ich würde Webapplikation nicht unter Python implementieren. Ich habe mich irgentwie auf PHP eingeschossen, auch wenn mir viele Leute sagen, PHP ist für Skriptkiddies (bin anderer Meinung). setze PHP und Perl schon seit Jahren in grossen Internetprojekten ein, daher evtl auch diese entscheidung.
iGEL hat geschrieben: 2.) Kann man mit Python auch Binaries erstellen? Funktionieren dann auch noch Dinge wie grafische Oberflächen o. ä.?
2.a) Oder kann man Python sonst irgendwie kompilieren, so dass man nicht gerade immer den Quellcode offen weitergeben muss, wenn man ein Produkt verkauft?
2.) JAEIN.... Man kann .exe unter Windows erstellen, Linux glaube ich auch. Bin mir nicht sicher. Grafische Oberflächen? Ja sicher das! Tkinter, wxPython, Qt, ... alles möglich auch Plattformunabhängig (ausser qt, soweit ich weiss)

2a) py2exe für Windows.
iGEL hat geschrieben: 3.) Ist Python für Webanwendungen geeignet?

4.) Ich erhoffe mir von Python, dass es weniger anfällig für Sicherheitslöcher ist, daher also selbst dafür sorgt, dass es nicht zu einem Buffer Overflow oder so kommt, mit dem man beliebigen Code auf dem Zielrechnerausführen kann. Stimmt das? :)
3.) Schau dir ZOPE an, sollte alles sagen....

4) Ich denke Python ist momentan weniger anfällig, da die meisten Kidz auf PHP eingeschossen sind ;))
iGEL hat geschrieben: So, schon mal vielen Dank für eure Antworten! Auch für Links wäre ich dankbar, falls diese irgendwie auf meine Fragen antworten (Deutsch bevorzugt, aber englisch geht auch).
Bitte gerne geschehen ;)

Links soll jetzt ein anderer geben ;) Ich muss Lernen ....
iGEL hat geschrieben: Gute Nacht,
iGEL
Guten Morgen! (jetzt)... ;)

Verfasst: Donnerstag 23. Januar 2003, 09:56
von akIra
Heya, Python ist schon länger eine erwachsene Sprache, nur der Bekanntheitsgrad nimmt stetig zu 8)
1.) Warum programmiert ihr in Python und nicht in einer andern Sprache?
a)leichte Sprache
b) (fast) plattformunabhängig
c)sehr eleganter Code (meine Meinung)
d)schonmal Perl gesehen... :wink:
1.a) Aus Interesse: In welchen Sprachen habt ihr sonst mal programmiert?
Abgesehen von diesen Halbsprachen (html,xml)
c++, tp, vb
1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?
Alles was mit GUI zu tun hat ! Einfach zu umständlich, aber da bietet ja z.B. der BoaConstructor auch schon visualisierungs Möglichkeiten an.
Ich ziehe aber trotzdem die gute alte Eingabebox vor, oder ne hübsches Servlet (ZOPE)
2.) Kann man mit Python auch Binaries erstellen? Funktionieren dann auch noch Dinge wie grafische Oberflächen o. ä.?
Ja, viel Spass : )
2.a) Oder kann man Python sonst irgendwie kompilieren, so dass man nicht gerade immer den Quellcode offen weitergeben muss, wenn man ein Produkt verkauft?
Py2exe, wie schon erwähnt worden ist.
3.) Ist Python für Webanwendungen geeignet?
Eigentlich nicht, viel zu langsam und dann diese ätzende Syntax : )
look @ Zope
4.) Ich erhoffe mir von Python, dass es weniger anfällig für Sicherheitslöcher ist, daher also selbst dafür sorgt, dass es nicht zu einem Buffer Overflow oder so kommt, mit dem man beliebigen Code auf dem Zielrechnerausführen kann. Stimmt das?
Kein Plan, aber die Developer machen das ja nicht erst seit gestern und sonst...Open Source : )
So, schon mal vielen Dank für eure Antworten! Auch für Links wäre ich dankbar, falls diese irgendwie auf meine Fragen antworten (Deutsch bevorzugt, aber englisch geht auch).


sicher:

http://sourceforge.net/projects/boa-constructor/ Grafischer Aufsatz zu ActivePython (noch Alpha)

http://www.python.org/cgi-bin/moinmoin/FrontPage WikiWikiWeb - Ne Menge nützlicher Sachen zum Schlangenwesen

Hier noch ne paar Sachen (Sorry wegen der formatierung):

Reguläre Ausdrücke III
3. Eine informelle Einführung in Python
9 Typische Aufgaben in Python
A Python Quick Reference
An Introduction to Tkinter
BEMBRY.ORG ~ Python Notes
Die Programmiersprache Python - ein Überblick
FAQTs - Knowledge Base - FAQTS : Computers : Programming : Languages : Python
General MSI
modpython.org
Objektorientierte Programmierung mit Python - Dr. Bernd Kokavecz
The Vaults of Parnassus: Python Resources
Python - SciptSammlung
PyChecker: a python source code checking tool
Datentypen
developerWorks: Linux : Charming Python: TK programming in Python
Python File and Directory Manipulation - CMSC 491C - Fall 2001
Useless Python!
wxpython.org
Python Tut Map on steroids
PythonDistributions - PythonInfo Wiki
SQL · Python
Ciao,
akI

Nachtrag von Milan: hab das mal als Moderator fein lesbar umgeformt, vorher waren die Links in HTML "gestylt", was aber nicht erkannt wird. :wink:

Re: Warum Python? :)

Verfasst: Donnerstag 23. Januar 2003, 10:35
von Milan
iGEL hat geschrieben:Dazu hab ich ein paar Fragen an euch:
1.) Warum programmiert ihr in Python und nicht in einer andern Sprache?
1.a) Aus Interesse: In welchen Sprachen habt ihr sonst mal programmiert?
1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?
1.) Ich finde Python's Syntax und die vielen Module gut. Man kann seinen Code sehr strukturiert halten, ohne selber viel darauf zu achten. Außerdem wird Python eigentlich mit den meisten Problemen gut fertig.
1.a) Delphi ,Pascal, Basic, Anfänge in C und Java.
1.b) ich finde Python nicht so schön für das bearbeiten von Strings, wenn man aufwenig edidieren muss. Ich finde es umständlich, aber es lässt sich trotzdem (fast) alles mit dem Modul re realisieren.
iGEL hat geschrieben:2.) Kann man mit Python auch Binaries erstellen? Funktionieren dann auch noch Dinge wie grafische Oberflächen o. ä.?
2.a) Oder kann man Python sonst irgendwie kompilieren, so dass man nicht gerade immer den Quellcode offen weitergeben muss, wenn man ein Produkt verkauft?
ist denke ich schon beantwortet... :)
iGEL hat geschrieben:3.) Ist Python für Webanwendungen geeignet?
kommt darauf an. Mit Zope kenne ich mich zwar nicht aus, aber CGI mit Python macht mir schon Spaß...
iGEL hat geschrieben:4.) Ich erhoffe mir von Python, dass es weniger anfällig für Sicherheitslöcher ist, daher also selbst dafür sorgt, dass es nicht zu einem Buffer Overflow oder so kommt, mit dem man beliebigen Code auf dem Zielrechnerausführen kann. Stimmt das? :)
Ich denke mal Python ist da rech wenig anfällig, es sei denn du lässt bewusst dynamischen Code mit eval oder exec ausführen. Es gibt meines Wissens auch Module, mit denen du eine eingeschränke Ausführungsumgebung erzeugen kannst. Das ist dann schon sehr sicher. Ich kann dir aber grade nicht sagen, wie das geht...

Verfasst: Donnerstag 23. Januar 2003, 15:30
von Dookie
Hi iGEL,

1.) wer sagt daß wir nur in Python programmieren, bei mir kommt da noch PHP, Bash-scripting, tcl/tk und ein Schuss C dazu
1.a) C64er Basic, 6502 Assembler, Pascal, MC68xxx Assembler, Modula2, Oberon, Oberon2 und ein bisschen mit C++ und Java gespielt.
1.d) Webanwendungen mache ich in PHP, und einen Raytracer würde ich in C erstellen. Aber für so gut wie alles andere ist Python die erste Wahl. Besonders durch die relativ leichte optimierbarkeit durch C, für die 10% Code, in denen 90% Rechenzeit verbraten werden.

2.) wurde schon beantwortet, daneben bin ich der Ansicht, wer durch meinen Code durchsteigt, der kann ihn auch für eigene Projekte verwenden.
2.a) erstelle zeitkritische Funktionen in C, die Teile kannste dann als Binaries weitergeben, allerdings vergiss nicht die dann auch für Linux, MacOS OSX, AmigaOS ... zu compilieren :lol:

3.) sicher nicht weniger als z.B. Perl oder Ruby, allerdings gibt es kaum Webspaceanbieter, die auch Pythonunterstützung anbieten.

4.) Python ist sicher sicherer als C++ aber vor allem sind viele Sachen echt einfach zu machen. Insbesondere die mächtigen Listen-Funktionen beeindrucken mich immer wieder und auch die veieln Module, wie Numeric oder PIL


Gruß

Dookie

Verfasst: Donnerstag 23. Januar 2003, 19:51
von XT@ngel
1.) Warum programmiert ihr in Python..?
Python würde ich in die klein aber fein Kategorie stecken. Da sind z.B die Speziellen Mehodenattribute wie __str__, __getitem__ .
oder sachen wie: for elemet in liste:
Deshalb kann ich nur zustimmen, wenn jemand sagt Python hat sehr eleganten Code. ;-)
1.a) Aus Interesse: In welchen Sprachen habt ihr sonst mal programmiert?
Ein bisschen C++ und PHP.
1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?
Ja, Webanwendungen wie Gästücher, Counter etc.
Da finde ich einfach den "Aufwand" zu hoch. Ausserdem gibt es nur sehr wenige Anbieter die günstig Webspace mit Python (mod_python) anbieten.
Wobei mod_python mehr Tempo bringt, und den Server nicht so belastet.
3.) Ist Python für Webanwendungen geeignet?
Python ist genauso gut geeignet wie Perl, Ruby etc.

Aber mit PHP geht vieles einfacher. z.B ist die MySQL Unterstützung schon standard.
Dann Session seit Version 4. Formular Daten stehen sofort zu verfügung und mann muss nicht erst wie in Python schreiben:

import cgi
daten = cgi.FieldStorage()

Mit PHP5 kommen sogar Ausnahmen und ein bessere Unterstützung für OOP.

Jedoch ist ZOPE für größere Seiten eine alternative.
Aber wie schauts da mit Anbietern aus?


MfG
Andreas

Verfasst: Donnerstag 23. Januar 2003, 21:43
von Beyond
Die meisten Sachen wurden schon ganz gut abgeklärt ...

Zum Thema Web-Applications. Da würde ich definitiv Zope verwenden. Dieses basiert auch auf Python und tausende feine Sachen wie: DB-Anbindung (sogar Oracle, ...), Versioning, Sessions, Login, Styles, ...
Man kann in Zope auch DTML und ZClasses verwenden, davon würde ich die Finger lassen. Mach ein richtiges Python- / Disk- Product. Das ist nicht besonders schwer ... such Dir einfach eine gute Vorlage auf der Zope Seite (ist bei entsprechenden Tutorials dabei).
Achja Zope selber hat eine ObjektDatenbank :-)
Tolle Sache. Ich habe schon einiges in Zope programmiert -- auch einige hübsche Produkte ...


Zum Thema Hosting: Das tue z.B. ich: www.mmc-startup.com und zwar recht günstig.
Es gibt auch FreeZope das ist sicher noch billiger, aber man kann nicht alles machen ...
Es kommt also darauf an was man dann braucht eigene DB, eigene Python-Produkte (definitv s.o.), eigener Zope-Server, ...

cu beyond

Verfasst: Dienstag 28. Januar 2003, 23:13
von iGEL
Moin!

Ich wollte mich nur noch mal für die Anworten bedanken, musste zwischendurch ein paar Klausuren schreiben. :) Ich hab mich noch nicht entschieden, aber eure Antworten haben mir auf jedenfall weitergeholfen!

iGEL

Ansichtssache

Verfasst: Mittwoch 29. Januar 2003, 01:23
von Mickey
Zur Abrundung nur noch ein paar andere Ansichten als die bisher geäußerten...

iGEL: "Für C++ spricht, dass ich mit meinen sehr guten C und PHP-Kenntnissen nicht bei 0 anfangen muss."

Dem mag ich widersprechen. Es hat sich gezeigt, dass C-Kenntnisse sogar eher hinderlich sind, da man beim C++-Lernen dann die liebgewonnenen C-Gewohnheiten nicht ablegen kann. Meine Erfahrungen aus der Uni bestätigen dies, indem totale Programmiereinsteiger nach dem Kurs oft besseres C++ schrieben als "alte C-Hasen".

akIra auf die Frage "1.b) Gibt es Dinge, die ihr nicht in Python tun würdet und warum?" : Alles was mit GUI zu tun hat ! Einfach zu umständlich [...]

Pardon? Python ist wohl zurzeit eine der geeignetesten und effizientesten Sprachen für das Prototyping graphischer Oberflächen. Natürlich sollte man für den "Rohbau" schon einen UI-Builder benutzen, wie z.B. den Qt-Designer oder Glade.

Xt@ngel auf die schon erwähnte Frage 1.b): "Ja, Webanwendungen wie Gästücher, Counter etc. Da finde ich einfach den "Aufwand" zu hoch."

Kennst Du Spyce? http://spyce.sourceforge.net

Verfasst: Mittwoch 29. Januar 2003, 14:07
von XT@ngel
Ja klar kenn ich Spyce. Und natürlich PSP, CherryPy, mod_snake (heißt das so?) ;-)
Hab aber noch nie damit gearbeitet...
MfG
Andreas

Verfasst: Mittwoch 29. Januar 2003, 23:11
von hans
Python und GUI (ich kenne da allerdings nur QT ausreichend) sind für mich ein starkes Paar. Ich habe mich in den letzten Wochen auch mit KDevelop (und natürlich QT) unter Linux auseinander gesetzt. Der zugriff auf die QT - Designs ist unter Python noch einfacher als unter C und QT bringt zudem noch ein Fülle an Funktionen mit, die einem das Leben erleichtern (z.B. die Behandlung von unterschiedlichen Zeichensätzen, wie Latin, ISO 8859-x, UTF, etc).

Hans