mal grundsaetzlich: python vs. php...etc

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!
murphy hat geschrieben: es ist ein wenig länger als die PYthon-variante, aber brauchbar
Überhaupt nicht! Ich meine, ja, es ist länger, aber ausserdem auch fürchterlich unlesbar :(. Das ist ja meiner Meinung nach das Schöne an den LC im Python: die Einfachheit und Lesbarkeit.
murphy hat geschrieben: könnte jemand bitte codeblöcke in Python simulieren
Wozu? Um auch so hässliche Konstrukte zu fabrizieren? :D (kleiner Scherz)

Gruß, mawe
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Dein Code gibt bei mir das hier aus:

Code: Alles auswählen

[milanx@sc8-pr-shell1 milanx]$ ruby
noprimes = []
(2..8).each { |i| (i*2..50).step(i) { |x| noprimes << x } }
-:2: undefined method `step' for #<Range:0x401407fc> (NameError)
        from -:2:in `each'
        from -:2
Solangsam wirds Offtopic (hat nix mehr mit Allgemeinen Fragen zu tun), oder? Ich überlege ob ich die Diskussion splitte und den jetzigen Teil nach Offtopic verschiebe. Dort können wir dann beliebig weiterdieskutieren...

Statt Codeblöcken nimmt man hier for-Schleifen in Kombination mit LC/besser GE, denn nix anderes sind sie in meinen Augen (bloß einzeilig) :wink:
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Milan!

Bei mir funktionierts. Wenn Du interaktiv mit Ruby arbeiten willst, verwende irb (statt wie Du ruby).
Verschieben find ich gut, aber vielleicht gleich den ganzen Thread (war ja von Anfang an eine "welche Programmiersprache" Frage).

Gruß, mawe
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:Bei mir funktionierts. Wenn Du interaktiv mit Ruby arbeiten willst, verwende irb (statt wie Du ruby).
Bei ruby müsste man halt ein EOF anhängen.
mawe hat geschrieben:Verschieben find ich gut, aber vielleicht gleich den ganzen Thread (war ja von Anfang an eine "welche Programmiersprache" Frage).
Und das Topic müsste man auch gleich noch ändern, das PHP Mist ist haben wir alle schon auf der ersten Seite festgestellt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

mawe hat geschrieben:Überhaupt nicht! Ich meine, ja, es ist länger, aber ausserdem auch fürchterlich unlesbar :(. Das ist ja meiner Meinung nach das Schöne an den LC im Python: die Einfachheit und Lesbarkeit.
es stimmt, dass die LC mit keywords statt klammern viel simpler aussieht. und meist braucht man wohl auch nur for und if.

codeblöcke können mehr (eigentlich alles was als callback darstellbar ist - for ist da nur ein spezialfall. stellt euch vor, ihr könntet methoden definieren, die ihr dann wie if und for verwenden könnt!)
und es gibt diese "Domino-optik":

Code: Alles auswählen

noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
schau mal wie weit auseinander i und j jeweils stehen. die reihenfolge bzw. die verbindung der for's ist gar nicht erkennbar, einerseits arbeitet die LC von rechts nach links (rechts erzeugen, links berechnen) und dann wieder von links nach rechts (erst for i dann for j.)
mein workaround ist zwar hässlich, aber deutlicher:

Code: Alles auswählen

noprimes = list { (2..8).each { |i| (i*2..50).step(i) { |j| add j } } }
i zu i, j zu j (wie beim Domino.) nur eine richtung. klare klammerung.
trotzdem wäre es schön, LC in Ruby zu haben. aber so etwas wie in Python ist schwer vereinbar mit den bisherigen regeln. es müsste tatsächlich ein ganz neues konstrukt her.
Milan hat geschrieben:Hi. Dein Code gibt bei mir das hier aus:

Code: Alles auswählen

-:2: undefined method `step' for #<Range:0x401407fc> (NameError)
du hast ein altes Ruby. früher hätte man i*2.step(50, i) schreiben müssen. ich mag Range#step lieber.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Leonidas hat geschrieben:Wenn man es noch weiter treiben will kann man auch die Operatoren auslassen und direkt mit __mul__ und co arbeiten. :twisted:
LOL!

Aber ich habe schon etwas über Maltes Kommentar nachdenken müssen. Mir persönlich liegt die Pythonvariante mehr, aber letztlich kann ich verschiedene Argumente hier nicht ganz nachvollziehen: Kann es sein, daß sich der größte Teil der Diskussion nur um syntactic sugar (wie heißt das auf Deutsch?) dreht? (siehe syntactic sugar) Klar, den braucht es, sonst macht Programmieren keinen Spaß. Und ich selber habe ja im zweiten Satz hier genauso argumentiert. Aber das macht ja eine Sprache nicht besser oder schlechter als eine andere. Argumente wie fehlende LCs oder GEs stechen da schon besser ;-). Diesen Absatz wollte ich mal in die Runde werfen, als kleinen Dämpfer ;-).

Was aber nicht zuletzt die Wahl für eine Sprache bestimmt ist die Dokumentation, Verfügbarkeit von Libraries und Support. Ich habe mich am Wochenende etwas in Ruby eingelesen (hätte eigentlich an was Anderem arbeiten müssen ;-) ) und denke, Ruby liegt diesbezüglich vielleicht noch ein wenig hinter Python zurück - aber sehr groß ist dieser Unterschied nicht (mehr). Das ist mein erster Eindruck: Wie seht ihr das?

Gruß,
Christian
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!
CM hat geschrieben: syntactic sugar (wie heißt das auf Deutsch?)
Syntax-Zucker? :D
Es kommt mir (eben durch die Syntax) manchmal so vor, als wäre Ruby von Grund auf etwas besser durchdacht, jedenfalls logischer (ist ja auch leicht, die Sprache ist ja jünger :wink:). Bei Python kommen dann eben Fragen wie "warum len(x) und nicht x.len()". (Ich muß nochmals zugeben, daß ich mich mit der internen Struktur von Python noch nicht wirklich befasst habe). Aber das ist, wie Du gesagt hast, für mich kein Entscheidungskriterium.

Das mit der Doku sehe ich etwas radikaler (:D): hier hinkt Ruby meilenweit hinterher. Naja, es gibt schon einiges, aber hauptsächlich auf japanisch (lernt man in Japan nicht Englisch?). Ich rede jetzt von weiterführender Literatur, z.B. kenne ich keine einzige Doku, die sich mit GUI-Programmierung beschägtigt.

Gruß, mawe
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

mawe hat geschrieben:Das mit der Doku sehe ich etwas radikaler (:D): hier hinkt Ruby meilenweit hinterher.
das glaube ich nicht. es gibt zB ri (eine art man), pickaxe 1 und das deutsche rubybuch im web.
http://www.ruby-doc.org/stdlib/ ist auch oft hilfreich.
die Japaner können übrigends eher englisch als wir. aber es gibt dort eine starke Ruby-community, und bis vor ein paar jahren war Ruby außerhalb von Japan gar kein thema.
ich glaube aber langsam, dass Deutschland die zweite heimat von Ruby ist :)
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi murphy!

Pickaxe und das Rubybuch kenne ich, die sind auch gut.
Aber wie gesagt, ich meine werterführende Literatur, z.B. die angesprochene GUI-Programmierung. Da gibt's nichts.
Und wenn die Japaner wirklich Englisch können, dann sollen sie verd@$%& nochmal auch englische Dokus produzieren :D. Schliesslich ist E. die Sprache der IT, oder?

Gruß, mawe
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

mawe hat geschrieben:GUI-Programmierung.
http://httpd.chello.nl/k.vangelder/ruby ... index.html
http://www.ruby-doc.org/docs/Programmin ... xt_tk.html
http://www.approximity.com/rubybuch2/node156_main.html

aber es stimmt, Ruby/Tk oder -FX-bücher fehlen leider. es wird aber ständig literatur produziert, manchmal sogar über etwas anderes als Java :) sprachen haben es an sich, mit der zeit besser dokumentiert zu sein.

ich möchte mich vor allem auf argumente stützen, die der sprache innewohnen, und sich nicht mit der zeit verändern.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Du wirst lachen (oder auch nicht :D) aber die kenn ich auch schon alle. Drum bleib ich dabei: es gibt nichts :D
Besonders lachen musste ich über das Kapitel Translating from Perl/Tk Documentation in Programming Ruby :D. Gut, für mich kein Problem weil ich Perl/Tk kenne, aber eigentlich eine Frechheit, oder?

Bevor wir uns wieder auf sprachinnewohnende Argumente stürzen: Könnte es sein, daß sich Ruby-Programmierer eher für Web-Programmierung interessieren und daher GUIs etwas vernachlässigt werden? Ich habe bisher auch kaum Programme aus dem naturwissenschaflichen Bereich gefunden (was für mich sehr interessant wäre). Wie siehst Du das? Wo sind die Haupteinsatzgebiete von Ruby?

Gruß, mawe
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

mawe hat geschrieben:Drum bleib ich dabei: es gibt nichts :D
ich finde das mehr als nichts. selbst ich habe (ohne Perl/Tk) schon kleine GUI-scripte geschrieben, sogar mit OpenGL :)
aber eigentlich eine Frechheit, oder?
wieso frechheit? will dir jemand was böses? die sprache ist frei, und die leute machen sich netterweise die arbeit, sie zu dokumentieren.
Könnte es sein, daß sich Ruby-Programmierer eher für Web-Programmierung interessieren und daher GUIs etwas vernachlässigt werden?
ich interessiere mich vor allem für lösungen kleiner probleme, für schnelles ausprobieren von ideen und die sprache selber. abgesehen von meinem BBCode-modul für RubyBB habe ich bisher aufgaben vom extreme programming contest, einen DFA-simulator, eine präsentation zum josephus problem (GUI), Base64 und ein paar kleine scripte zur textumwandlung geschrieben.
Wo sind die Haupteinsatzgebiete von Ruby?
grundsätzlich ist es als allroundsprache gedacht. für mich ist es vor allem als "runnable pseudocode" interessant, und als scriptsprache, weil es praktischer angelegt ist als Smalltalk, Haskell, Prolog oder Lisp.
mein haupteinsatzgebiet ist spaß :)
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!
murphy hat geschrieben: ich finde das mehr als nichts
Ich find's lächerlich wenig. BTW: es gibt mehr als Tk (wx,Fox,qt,...). Doku: nada.
murphy hat geschrieben: wieso frechheit? will dir jemand was böses? die sprache ist frei, und die leute machen sich netterweise die arbeit, sie zu dokumentieren.
Sie machen sich die Arbeit zu dokumentieren? Nein, sie verweisen ganz einfach auf die Doku einer anderen Sprache! Das ist die Frechheit (finde ich).
murphy hat geschrieben: ich interessiere mich ...
Ich sehe dich eher als Ausnahme. Wie gesagt, ich finde kaum Ruby-Programme mit (anspruchsvoller) GUI.

Gruß, mawe
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:
murphy hat geschrieben: wieso frechheit? will dir jemand was böses? die sprache ist frei, und die leute machen sich netterweise die arbeit, sie zu dokumentieren.
Sie machen sich die Arbeit zu dokumentieren? Nein, sie verweisen ganz einfach auf die Doku einer anderen Sprache! Das ist die Frechheit (finde ich).
Naja, die einzige richtigen Referenz zu wxPython ist ja auch eigentlich für wxWidgets in C++. Das ist auch Mist, da geb' ich dir recht, aber da Wiki finde ich nicht besonders hilfreich, da muss meist die high traffic Mailingliste ran.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Leonidas!

Du hast recht, wxPython ist schlecht dokumentiert.

Gruß, mawe
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi,

ein Vorteil, den ich in diesem Zusammenhang bei Python noch sehe ist, daß viele Schnittstellen zu Toolkits (z.B. gtk oder Opengl) faßt identisch mit den C/C++ Schnittstellen sind und man so auch Dokumentationen die nicht direkt für Python sondern wie meist für C/C++ erstellt sind faßt 1:1 umsetzen kann.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

@dookie: Stimmt. Vor allem, wenn man my pyOgre zum Laufen gebracht hat, kann man C++ Code 1:1 übernehmen, nur dass man z.B. statt ogre::blablabla ogre.blablabla und color(alpha,rr,gg,bb) einfach ein Tupel setzt.
TUFKAB – the user formerly known as blackbird
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Nachtrag zur OO-Sache und der Methodensyntax:

Schaut mal hier. Ist leider viel zu viel zum Übersetzen - schließlich habe ich noch andere Hobbies ;-).

Christian
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

CM hat geschrieben:Schaut mal hier. Ist leider viel zu viel zum Übersetzen - schließlich habe ich noch andere Hobbies ;-).
Ist doch kein Problem: hier :roll:


Ist nur ein Witz...
Antworten