python vs. ruby (kein trolling)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

_dies_ist_kein_trolling_ Bitte nur einen Link auf irgendein Wiki oder so


Seit Ruby on Rails kann man ja wirklich drueber nachdenken *duck*. Kennt jemand vielleicht einen Link mit einer objektiven Einschaetzung der beiden Sprachen. Mir ist es irgendwie schon ein bisschen egal .. hauptsache ein paar java kollegen hier bei uns denken mal ueber den eigenen Tellerand

gruesse

michael
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

mbieren hat geschrieben:Seit Ruby on Rails...
django, TurboGears, pylons :roll:
Das ist wohl wirklich kein Grund.

Ich persönlich mag die Syntax von ruby nicht. Bin zufrieden mit Python und hab damit meinen Spaß.
TUFKAB – the user formerly known as blackbird
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

Jetzt nur noch ne gute schnittstelle zur DB2
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

mbieren hat geschrieben:Jetzt nur noch ne gute schnittstelle zur DB2
https://www6.software.ibm.com/dw/education/dm/db2pylnx/
TUFKAB – the user formerly known as blackbird
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Wobei letzterer Artikel nur mit developerworks-Login geht... Leider. Ich frag mal IBM ob man den freischalten kann, ich selbst hab nämlich so ein Login, aber ich kenne genügend Leute die keins haben. ;-)
--- Heiko.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Vielleicht hilft auch ein googlen weiter: http://www.google.de/search?q=db2pylnx

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

modelnine hat geschrieben:Wobei letzterer Artikel nur mit developerworks-Login geht... Leider. Ich frag mal IBM ob man den freischalten kann, ich selbst hab nämlich so ein Login, aber ich kenne genügend Leute die keins haben. ;-)
Oh. Das hab ich jetzt gar nicht gesehen. Dürfte noch authentifiziert gewesen sein. :oops:
TUFKAB – the user formerly known as blackbird
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

blackbird hat geschrieben:Ich persönlich mag die Syntax von ruby nicht.
was gefällt dir denn nicht?

vielleicht kann man ja was verbessern :)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

murphy hat geschrieben:
blackbird hat geschrieben:Ich persönlich mag die Syntax von ruby nicht.
was gefällt dir denn nicht?

vielleicht kann man ja was verbessern :)
Vielleicht kann man das. Aber vielleicht ist für mich python auch schon ideal und ich will gar nichts anders :)
TUFKAB – the user formerly known as blackbird
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Was mich persönlich an ruby stört, ist das es zu viele coole Konstrukte hat.
Wenn man mit Ruby anfängt und lernt die zu benutzen macht das unheimlich Spaß und man mag die Dinger (war bei mir jedenfalls so).

Aber wenn man ne Zeit lang nichts mit Ruby gemacht hat fällts einem wieder ein bisschen schwer zu verstehen, wie diese Dinger funktionieren. (Soll auch keine allgemeine Aussage sein, auch hier erzähle ich nur wies mir ging)

Bei Python habe ich derzeit noch am meisten das Gefühl, dass der Code ne Aussagekraft hat, ohne dass man sich viel mit Python beschäftigt haben muss.
Zugegeben, wer Python gar nicht kennt wird mit der Einrückung Probleme haben, aber schwerer zu lesen wird Code durch die Einrückung z.B. sicher nicht ,-) (Und ich perönlich habe inzwischen gelernt, diese Einrückungs-sache richtig zu mögen)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

henning hat geschrieben:Was mich persönlich an ruby stört, ist das es zu viele coole Konstrukte hat.
Wenn man mit Ruby anfängt und lernt die zu benutzen macht das unheimlich Spaß und man mag die Dinger (war bei mir jedenfalls so).
Ja, das Gefühl kenne ich. WObei Python auch einige so Konstrukte hat wie die map()/filter()/reduce()-lambda Verbindungen oder List Comprehensions, die generischen Funktionen (noch nicht aber fast, siehe PJE) oder die tollen Dinge die noch in Planung sind.
henning hat geschrieben:Zugegeben, wer Python gar nicht kennt wird mit der Einrückung Probleme haben, aber schwerer zu lesen wird Code durch die Einrückung z.B. sicher nicht ,-)
Ich weiß nicht, aber wenn man als absoluter Anfänger ohne Programmiererfahrung einsteigt, hat man nicht mehr Probleme als mit den geschweiften Klammern oder den End-Marken. Ihr wollt gar nicht wissen, wie ich bei meinem Pascal-Einstieg die End-Marken gehasst habe. 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Joa. dann lass ich noch was über Ruby los, was ich nicht mag :)
1.) fehlende keyword args (nein, hash ist kein ausweg)
2.) end <-- da sind mir die einrückungen lieber
3.) fehlendes "self". Ist zwar sicher anfänglich ungewohnt, aber es ist explizit und pythonic. Ist mir lieber als das "@" gefummel
4.) fehlende dekoratoren
5.) { x| ... } konstrukte, find ich nicht so toll. liest sich wie lisp
TUFKAB – the user formerly known as blackbird
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

mbierenfeld hat geschrieben: Kennt jemand vielleicht einen Link mit einer objektiven Einschaetzung der beiden Sprachen.
Sowas gibts?! :)
blackbird hat geschrieben: 1.) fehlende keyword args (nein, hash ist kein ausweg)
Was genau meinst Du mit "keyword args"?

Die Punkte 2, 3, und 5 deiner Kritik sind von dem Kaliber "ich mag Python nicht, weil ich da einrücken muss" :) Wegen solcher Argumente sollte man eine Sprache nicht ablehnen.
blackbird hat geschrieben: 5.) { x| ...} konstrukte, find ich nicht so toll, liest sich wie lisp
Finde nicht dass das wie Lisp aussieht, aber was ist so schlecht an Lisp? :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:
blackbird hat geschrieben:1.) fehlende keyword args (nein, hash ist kein ausweg)
Was genau meinst Du mit "keyword args"?

Code: Alles auswählen

def forward(distance=10, angle=90):
    pass

forward(distance=30, angle=180)
Zuletzt geändert von Leonidas am Dienstag 11. April 2006, 09:45, insgesamt 1-mal geändert.
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])

Naja, und wieso sollte das in Ruby nicht funktionieren?

Code: Alles auswählen

def gaga(a=2, b=3)
  puts a, b
end

gaga()
gaga(a=12, b=122)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:Naja, und wieso sollte das in Ruby nicht funktionieren?
Keine Ahnung, vielleicht meinte blackbird ja doch etwas anderes.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

mawe hat geschrieben:Naja, und wieso sollte das in Ruby nicht funktionieren?

Code: Alles auswählen

def gaga(a=2, b=3)
  puts a, b
end

gaga()
gaga(a=12, b=122)
Das ist aber neu oder? Als ich das letzte mal danach gesucht hab wurde eine Lösung über hashses vorgeschlagen, sie alles andere als fein war.
TUFKAB – the user formerly known as blackbird
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

blackbird hat natürlich vollkommen recht. Erklärung siehe hier
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

blackbird hat geschrieben:1.) fehlende keyword args (nein, hash ist kein ausweg)
warum nicht?
es stimmt, die funktionalität fehlt bisher und die diskussionen darüber, wie das in Ruby 2 aussehen soll, sind längst nicht beendet. allerdings benutzen Rails-entwickler den ganzen tag fröhlich keyword-argumente ohne probleme sieht dann so aus:

Code: Alles auswählen

start_form_tag :controller => '/entry',  :action => 'search'
gibt es einen anwendungsfall, der mit Ruby nicht ging? was hat dich gestört? vielleicht gibt es ja doch eine bessere lösung.
2.) end <-- da sind mir die einrückungen lieber
die vorteile von blockschlüsselworten haben offenbar für die entwickler praktisch jeder anderen sprache überwogen :)
Django arbeitet sogar mit "endfor" und sowas, was mich letztens extrem erschreckt hat. Rails benutzt einfach embedded Ruby als template-sprache.
kann aber gut sein, dass ich was nicht verstanden hab- kenne Django nicht.
3.) fehlendes "self". Ist zwar sicher anfänglich ungewohnt, aber es ist explizit und pythonic. Ist mir lieber als das "@" gefummel
und ich hab mich so bemüht, diese self vs. @-sache zu begraben ^^
was @-gefummel sein soll, kann ich jetzt aber nicht verstehen. bitte fakten :)
4.) fehlende dekoratoren
hätte ich neulich vielleicht gut verwenden können. sowas fehlt Ruby.
5.) { x| ... } konstrukte, find ich nicht so toll. liest sich wie lisp
wie smalltalk, meinst du sicher; da sieht es so aus:

Code: Alles auswählen

positiveAmounts := allAmounts select: [:amt | amt isPositive]
diese blöcke sind nach meinung vieler Ruby-geeks das beste feature der sprache. vielleicht schaust du sie dir nochmal genauer an.
es gibt auch Python-leute, die Codeblöcke gern in Python hätten. und ich bin sicher, dass man das irgendwie in Python einbauen könnte. gibts dazu nicht ein PCP? why hatte darüber berichtet.

ich frage übrigends nach verbesserungsvorschlägen, weil die Python-community im prinzip die einzige ist, von der Rubyisten vorschläge akzeptieren ^^
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

murphy hat geschrieben:
blackbird hat geschrieben:1.) fehlende keyword args (nein, hash ist kein ausweg)
warum nicht?
es stimmt, die funktionalität fehlt bisher und die diskussionen darüber, wie das in Ruby 2 aussehen soll, sind längst nicht beendet. allerdings benutzen Rails-entwickler den ganzen tag fröhlich keyword-argumente ohne probleme sieht dann so aus:

Code: Alles auswählen

start_form_tag :controller => '/entry',  :action => 'search'
gibt es einen anwendungsfall, der mit Ruby nicht ging? was hat dich gestört? vielleicht gibt es ja doch eine bessere lösung.
Der Nachteil ist eben, dass man "alle Argumente" übergeben muss. Ich kann nicht sagen, übergibt parameter 1-3 normal, parameter 4-9 auslassen, 11 und 13 übergeben wir als keyword arg.
2.) end <-- da sind mir die einrückungen lieber
die vorteile von blockschlüsselworten haben offenbar für die entwickler praktisch jeder anderen sprache überwogen :)
Django arbeitet sogar mit "endfor" und sowas, was mich letztens extrem erschreckt hat. Rails benutzt einfach embedded Ruby als template-sprache.
kann aber gut sein, dass ich was nicht verstanden hab- kenne Django nicht.
1.) rails template sind nicht sandboxed, weswegen auch gerade die django templates eifrig nach rails portiert werden. (Liquid) 2.) hat die template engine nix mit der Sache zu tun. 3.) ist das ein persönlicher Punkt, warum _ich_ ruby nicht mag ;-)
3.) fehlendes "self". Ist zwar sicher anfänglich ungewohnt, aber es ist explizit und pythonic. Ist mir lieber als das "@" gefummel
und ich hab mich so bemüht, diese self vs. @-sache zu begraben ^^
was @-gefummel sein soll, kann ich jetzt aber nicht verstehen. bitte fakten :)
Die Diskussion hatten wir vor kurzem in #python.de. Hier mal ein kurzer Einwurf:

Code: Alles auswählen

>>> class A(object): pass
...
>>> class B(object): pass
...
>>> def stub(self):
...     print self
...
>>> A.test = stub
>>> B.test = A.test
>>> A().test()
<__main__.A object at 0xb7d2632c>
>>> B().test()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: unbound method stub() must be called with A instance as first argument (got nothing instead)
Das funktioniert dank explizitem self wunderbar. Das objektmodel von python ist sehr frei und mächtig. Es gibt sehr viele Konstruktionen wo es ohne self gar nicht gehen würde. Bestes beispiel sind metaklassen, wo ich mehr als nur ein self haben kann.
5.) { x| ... } konstrukte, find ich nicht so toll. liest sich wie lisp
wie smalltalk, meinst du sicher; da sieht es so aus:

Code: Alles auswählen

positiveAmounts := allAmounts select: [:amt | amt isPositive]
diese blöcke sind nach meinung vieler Ruby-geeks das beste feature der sprache. vielleicht schaust du sie dir nochmal genauer an.
es gibt auch Python-leute, die Codeblöcke gern in Python hätten. und ich bin sicher, dass man das irgendwie in Python einbauen könnte. gibts dazu nicht ein PCP? why hatte darüber berichtet.
Meinst du das "with" statement? Wie auch immer. Es geht mir darum, dass die Syntax nicht leicht lesbar ist.

Wie gesagt. Ich bin glücklich bei Python gelandet und sehr zufrieden damit. Und die Core Devs überraschen jedes Release mit tollen neuen Features und die PyPy Leute überraschen uns jede Woche mit neuer Geschwindigkeit (ok, nicht ganz so schnell, aber es wird). Was will man mehr :D
TUFKAB – the user formerly known as blackbird
Antworten