Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Allerhand Fragen zu Python



axeljaeger
25-05-2003, 12:07
Ich bin gestern beim Blättern in ein paar LinuxEnterprise auf einen Artikel über RAD-Development mit
Python und Glade gestoßen. Das fand ich sehr interessant, habe ich doch schon unter Windows mit Visual Basic
viele kleine Programme geschrieben, für die eine echte C++ Entwicklung zu aufwendig gewesen wäre.

Also heute morgen die Mandrake CDs reingelegt und alles installiert, was ein py im Namen hat. Da sind ja
dann schon schöne Bindings für GTK und so dabei. Bevor ich jetzt aber anfange, mich da etwas mehr mit zu
beschäftigen, wollt ich mal die alten Hasen fragen, ob das, wofür ich mir Python gedacht habe, das richtige
ist:

1: Python gegen Ruby
Es gibt auch noch Ruby, was meiner Auffassung nach noch mehr gelobt wird, als Python. Da das aber die neuere
Sprache ist, wird es wohl weniger Bindings geben. Auch dürfte die Ausführungsgeschwindigkeit einfach wegen
weniger Optimierungszeit etwas langsamer sein. Was glaubt ihr, hat die größere Zukunft? Python scheint ja
(noch?) weiter verbreitet zu sein, etwa in Karamba oder Blender

2: Bindings
Da ich eigentlich KDE Nutzer bin, bin ich natürlich besonders an Bindings für Qt interessiert. Für Qt 2 habe
ich schon Bindungs für Python gesehen. Wie sieht die Unterstützung von Qt & KDE 3 aus? Wird da Ruby evtl.
besser unterstützt?

3: OpenGL
Bei den Beispielen für pygtk ist auch ein Beispiel dabei, wo OpenGL genutzt werden soll. Ich hab das noch
nicht ausprobiert, weil bei Mandrake 9.1 schlauerweise zwar py-gtkglarea aber nicht py-opengl dabei ist.
Hat das schonmal jemand ausprobiert und wenn ja, ist das benutzbar?

4: Ich hab angefangen, mal die Dokumentation zu Python zu lesen. Die Sprache gefällt mir an sich sehr gut.
Ich wollt gleich anfangen, was mit Glade und Python zu machen, hab aber das nicht gefunden, was ich schon
bei Perl am Anfang nicht gefunden hatte, nämlich, wie startet man ein anderes Programm? exec oder sys scheint
es ja nicht zu sein.

5: Ideale Lehrsprache?
Nichts, was mich bei meiner Entscheidung beeinflussen würde, aber nach allem, was ich gesehen habe,
is Pyton doch eine tolle Sprache, um Programmieren Leuten beizubringen, die jetzt nicht haupthobbymäßig
am Rechner sitzen. Bei uns in der Schule versucht ein Lehrer, Java den Schülern beizubringen. Und noch dazu
mit so einer Krüppelgrafikapi namens Turtle. Wir haben noch nicht gelernt, was eine Klasse ist und manchmal
mache ich mir einen Spaß daraus, Wörter zu verwenden, die der Lehrer nicht gehört hat, "continue" etwa.
Ist das Standard im deutschen Informatikunterricht? Wenn das so weitergeht, wird mein mündliches Abitur
in Informatik ein Spaß. Dürfte man anstatt Java auch auf Python schulen? Ich hab mal bei uns an der
Tafel Quelltext in Prolog gesehen "Haben sie das schonmal gesehen Herr Jäger? Das ist eine Sprache der
künstlichen Inteligenz"

6: Ein sehr spezielles Problem
Ich mache öfters Webdesign, bei dem ich Grafiken benutze, die ein Programm schreibt, einfach weil es nicht
zuzumuten ist, 4000 Rechtecke zufällig in einem Bild zu verteilen. Da hab ich bisher ein Programm mit C++
geschrieben, wo dann eine SVG rauskommt, die ich in Sodipodi geladen habe, um sie von dort aus als PNG
zu speichern. Der Nachteil daran ist, das ich für jedes Bild ein Programm schreiben muß, was kompiliert und
debuggt werden muß. Außerdem habe ich Sodipodi schon mehr als einmal mit meinen SVGs überfordert.
Jetzt hatte ich mir überlegt, da vielleicht ein Programm zu schreiben, wo oben eine
Zeichenfläche ist, und unten ein Eingabefeld für Python. Sollte kein Problem sein. Ich hab mir Gnome-Canvas
und python-imaging angesehen. Grundlegende Zeichenfunktionen sind vorhanden, aber ich hab nicht gesehen,
das es evtl. die Möglichkeit gibt, highlevel-Zeichenfunktionen einzusetzen, wie etwa anti-aliased Linien, usw.
Wenn ich das noch selber programmieren muß, sollte ich wohl doch lieber C++ nehmen. Oder steht evtl. der
Canvas von Sodipodi in Python zur Verfügung?

Ich hoffe, mir wird auch trotz vielleicht etwas "dummer" Fragen geholfen.
Vielen Dank im vorraus

anda_skoa
25-05-2003, 13:24
Original geschrieben von axeljaeger
I1: Python gegen Ruby
Es gibt auch noch Ruby, was meiner Auffassung nach noch mehr gelobt wird, als Python. Da das aber die neuere
Sprache ist, wird es wohl weniger Bindings geben. Auch dürfte die Ausführungsgeschwindigkeit einfach wegen
weniger Optimierungszeit etwas langsamer sein. Was glaubt ihr, hat die größere Zukunft? Python scheint ja
(noch?) weiter verbreitet zu sein, etwa in Karamba oder Blender


Ich kenne beide Sprache nur aus einfachen Tutorials.
Ruby scheint besser mit Regulären Ausdrücken arbeiten zu können, soll ziemlich an Perl herankommen.
Außerdem ist es flexibler bei der Blockstruktur. In Python braucht man korrekte Einrückung, das ist IMHO ziemlich fehlerträchtig.



2: Bindings
Da ich eigentlich KDE Nutzer bin, bin ich natürlich besonders an Bindings für Qt interessiert. Für Qt 2 habe
ich schon Bindungs für Python gesehen. Wie sieht die Unterstützung von Qt & KDE 3 aus? Wird da Ruby evtl.
besser unterstützt?

Python:
http://mats.gmd.de/mailman/listinfo/pykde
http://www.riverbankcomputing.co.uk/
http://www.xs4all.nl/~bsarempt/python/resources.html

Ruby: http://groups.yahoo.com/group/ruby-qt

Ciao,
_

axeljaeger
01-06-2003, 09:36
Hm, bei RubyQt muß man wohl erstmal in die Gruppe und damit sich bei Yahoo registrieren. Ich finds komisch, das nicht rauszukriegen ist, wie man ein Programm mit Python startet

anda_skoa
02-06-2003, 15:23
Python ist ein Interpreter wie Bash oder Perl.

Also am Anfang des Script ein
#!/usr/bin/python

und das Script exekutierbar machen oder

#> python script.py

Ciao,
_

axeljaeger
02-06-2003, 17:18
Wir reden aneinander vorbei: Wie man das Skript startet, ist schon klar, aber ich will aus dem Skript raus ein anderes Programm starten, evtl. ein Frontent für ein Konsolebtool mit Python und PyQt machen

arthur
02-06-2003, 17:33
steht alles in der docu ;)


http://www.python.org/doc/current/lib/os-process.html

bzw. wenn du mit den streams was machen möchtest:


http://www.python.org/doc/current/lib/module-popen2.html

gruss
Arthur

ComSubVie
02-06-2003, 21:27
Original geschrieben von axeljaeger
1: Python gegen Ruby
Es gibt auch noch Ruby, was meiner Auffassung nach noch mehr gelobt wird, als Python. Da das aber die neuere
Sprache ist, wird es wohl weniger Bindings geben. Auch dürfte die Ausführungsgeschwindigkeit einfach wegen
weniger Optimierungszeit etwas langsamer sein. Was glaubt ihr, hat die größere Zukunft? Python scheint ja
(noch?) weiter verbreitet zu sein, etwa in Karamba oder Blender

naja, mir persönlich gefällt ruby besser, aber das liegt wohl im auge des betrachters. ausgereifter düfte sicher python sein, ruby hat dafür einige recht nette features. im prinzip düfte es aber egal sein, und von den bindings her hab ich null plan.


Original geschrieben von axeljaeger
5: Ideale Lehrsprache?
Nichts, was mich bei meiner Entscheidung beeinflussen würde, aber nach allem, was ich gesehen habe,
is Pyton doch eine tolle Sprache, um Programmieren Leuten beizubringen, die jetzt nicht haupthobbymäßig
am Rechner sitzen. Bei uns in der Schule versucht ein Lehrer, Java den Schülern beizubringen. Und noch dazu
mit so einer Krüppelgrafikapi namens Turtle. Wir haben noch nicht gelernt, was eine Klasse ist und manchmal
mache ich mir einen Spaß daraus, Wörter zu verwenden, die der Lehrer nicht gehört hat, "continue" etwa.
Ist das Standard im deutschen Informatikunterricht? Wenn das so weitergeht, wird mein mündliches Abitur
in Informatik ein Spaß. Dürfte man anstatt Java auch auf Python schulen? Ich hab mal bei uns an der
Tafel Quelltext in Prolog gesehen "Haben sie das schonmal gesehen Herr Jäger? Das ist eine Sprache der
künstlichen Inteligenz"

naja, das ist meist recht unterschiedlich. während jemand in einer klasse Visual Basic unterrichtet, wird in der nebenklasse C und in der nächsten Java unterrichtet. Oder C++. Das hängt alles vom Lehrer ab. Leider gibts halt irgendwie einen Mangel an kompetenten Informatiklehrern (bei uns gott-sei-dank nicht sooo schlimm), und ein einheiltiches Konzept ist weder in den Stundentafeln noch in den Ministeriumswischen enthalten. Es spricht auch nix dagegen Ruby, Python, C#, Perl, PHP, Cobol, Pascal, Modula, Whitespace (:D) oder sonstwas zu unterrichten, im Prinzip geht es ja mehr um die Vermittlung der KONZEPTE, und die sind ja beim Großteil der Sprachen gleich (zumindest innerhalb der Klassen strukturierte Programmierung, objektorientierte Programmierung und logikorientierte Programmierung). Ist schon richtig das Prolog für KI verwendet wird, ich würd das jedoch nicht als Programmiersprache bezeichnen (auch wenn es Leute die sich damit beschäftigen durchaus so nennen), für mich ist das mehr Brainfuck ;)


Original geschrieben von axeljaeger
6: Ein sehr spezielles Problem
Ich mache öfters Webdesign, bei dem ich Grafiken benutze, die ein Programm schreibt, einfach weil es nicht
zuzumuten ist, 4000 Rechtecke zufällig in einem Bild zu verteilen. Da hab ich bisher ein Programm mit C++
geschrieben, wo dann eine SVG rauskommt, die ich in Sodipodi geladen habe, um sie von dort aus als PNG
zu speichern. Der Nachteil daran ist, das ich für jedes Bild ein Programm schreiben muß, was kompiliert und
debuggt werden muß. Außerdem habe ich Sodipodi schon mehr als einmal mit meinen SVGs überfordert.
Jetzt hatte ich mir überlegt, da vielleicht ein Programm zu schreiben, wo oben eine
Zeichenfläche ist, und unten ein Eingabefeld für Python. Sollte kein Problem sein. Ich hab mir Gnome-Canvas
und python-imaging angesehen. Grundlegende Zeichenfunktionen sind vorhanden, aber ich hab nicht gesehen,
das es evtl. die Möglichkeit gibt, highlevel-Zeichenfunktionen einzusetzen, wie etwa anti-aliased Linien, usw.
Wenn ich das noch selber programmieren muß, sollte ich wohl doch lieber C++ nehmen. Oder steht evtl. der
Canvas von Sodipodi in Python zur Verfügung?

hm, vielleicht eher ein fall für libpng oder sowas, weil du kannst ja aus c++ genausogut png speichern - andererseits ist das wohl eine "fade" lösung ;)

igel
10-06-2003, 13:35
Moin!

Ich stand letztens auch vor der Frage: Python oder Ruby. Ich hab mich für Ruby entschieden, weil es oft als besser konzeptiniert bezeichnet wird (Die Autoren von "The Pragmatic Programmer" haben z. B. mal gesagt, Ruby würde Python innerhalb von 5 Jahren überholen). Ausserdem hat mir gefallen, dass, anders als bei den meisten objekt-orientierten Sprachen, wirklich alles ein Objekt ist und sowas anzugucken macht doch einfach Spass:

"gin joint".length # Ergibt 9
"Rick".index("c") # Ergibt 2
-1942.abs # Ergibt 1942

# Gibt zehn mal hintereinander "Hello, world!" in einer neuen Zeile aus
10.times {
# Ersetze alle Leerzeichen (' ') durch Komma mit Leerzeichen (', ')
# und speichere in string1
string1 = "Hello world".gsub(" ", ", ")

# Hänge "!" an string1
string1 += "!"

# Ausgabe der Variable string1, gefolgt von einem Zeilenumbruch
puts string1
}

Als größten Nachteil würde ich werten, dass es mit Dokumentation noch nicht so gut aussieht. Es gibt zwar zwei Bücher über Ruby im Netz (auf deutsch), aber ich hab bisher keine ordentliche Referenz gefunden (so wie in PHP *träum*), und auch sonst ist halt vieles Englisch. Werde mich aber noch durchbeissen (hab leider noch nicht so viel gemacht in Ruby).

Gute Linksammlung: http://www.wikiservice.at/dse/wiki.cgi?RubyResourcen

iGEL

oracle2025
10-06-2003, 14:09
Original geschrieben von anda_skoa
Ich kenne beide Sprache nur aus einfachen Tutorials.
Ruby scheint besser mit Regulären Ausdrücken arbeiten zu können, soll ziemlich an Perl herankommen.
Außerdem ist es flexibler bei der Blockstruktur. In Python braucht man korrekte Einrückung, das ist IMHO ziemlich fehlerträchtig.


Also ich hab schon einige Progrämmchen mit Python geschrieben, und finde nicht das die korrekte Einrückung ein Problem wäre, im Gegenteil, dadurch bleibt das Programm meistens schön übersichtlich.

Ausserdem kann man, wenn man mal eben schnell was ausprobieren will, ne interaktive Python console starten, und gleich alles on the fly ausprobieren.

In einer Schule hier in der nähe, wird übrigens auch Python im Informatikunterricht verwendet, und ich glaub das ist gar keine schlechte Wahl, denn das gleich interaktiv ausprobieren ist am Anfang wesentlich weniger frustierend als das 'im Editor eingeben'->kompilieren->ausführen

mit Ruby hab ich allerdings nie was gemacht.

igel
10-06-2003, 21:08
Moin!

Ne interaktive Konsole gibts auch für Ruby (irb), und die Aussage über die nicht so tolle Doku muss ich zurücknehmen: Unter www.rubycentral.com/book/builtins.html sind alle Klassen aufgelistet, und unter www.selfruby.de entsteht auch eine deutsche Referenz. Trotzdem denke ich, dass Python durch die größere Verbreitung hier noch besser ist, und es wird mit Sicherheit auch mehr Module geben. Aber da gibt es auch eine ganze Reihe für Ruby: Tk, Gtk+, Gnome 2 oder KDE, Webframeworks, CGI und sicher noch vieles mehr.

Eine schlechte Wahl ist sicher keins von beiden; ich würd mich wohl wieder für Ruby entscheiden. Aber wenn ich das gut kann, werde ich mir wohl auch mal Python anschauen... ;)

iGEL