Übersetzung der Ruby-Website: Vergleich mit Python

Du hast eine Idee für ein Projekt?
Antworten
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

Mittwoch 11. Oktober 2006, 18:32

hallo Python-Forum! ich hoffe, das passt hier.

die website der sprache Ruby wurde erneuert, und sieht jetzt nicht mehr so hässlich aus. zusätzlich wurde das CMS für verschiedene übersetzer-teams freigegeben, und ich habe das glück, im deutschen team zu sein :)

nun, ich habe die übersetzung des abschnitts "Ruby für Umsteiger" übernommen und werde demnächst auch die seite "Von Python zu Ruby" übersetzen: http://rubyurl.com/qi6

es geht hier nicht um einen vergleich von vor- und nachteilen, sondern lediglich um eine liste von ähnlichkeiten und unterschieden beider sprachen, um Python-programmiern den einstieg zu erleichtern.

da mir Python sehr am herzen liegt, und ich auf gar keinen fall einen python-fan mit einem dämlichen fehler abschrecken möchte, frage ich euch lieber vorher:

Bitte schaut euch die Seite (zur Zeit noch auf Englisch) an und sagt mir, ob das alles richtig und fair ist, was da steht.

wenn ihr lust und zeit habt, natürlich :) danke!
BlackJack

Mittwoch 11. Oktober 2006, 19:11

Bei "Differences":
double-quoted strings allow escape sequenses (like \t)
Diese Escape Sequenzen gibt's doch in Python auch!?
there’s public, private, and protected to enforce access, instead of Python’s _voluntary_ underscore __convention__.
Da sind ein paar Unterstriche zu viel. Die Konvention betrifft nur *führende* Unterstriche.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 11. Oktober 2006, 19:13

Hi murphy,
it’s require instead of import. Otherwise though, usage is the same.
require und import funktionieren doch eher unterschiedlich, oder? Stichwort Namensräume. Ich denke da an

Code: Alles auswählen

import lala
from lala import bla
import lala as L
Oder geht ähnliches mit require auch?

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

Mittwoch 11. Oktober 2006, 19:16

murphy hat geschrieben:hallo Python-Forum! ich hoffe, das passt hier.

die website der sprache Ruby wurde erneuert, und sieht jetzt nicht mehr so hässlich aus. zusätzlich wurde das CMS für verschiedene übersetzer-teams freigegeben, und ich habe das glück, im deutschen team zu sein :)
Grrrr. Wie ich euch Ruby Leute um die Community beneide :-( Und die Webseite ist absolut top geworden. Wenn ich da an das Machwerk unseres "tollen" pydotorg Teams denke....
nun, ich habe die übersetzung des abschnitts "Ruby für Umsteiger" übernommen und werde demnächst auch die seite "Von Python zu Ruby" übersetzen: http://rubyurl.com/qi6

es geht hier nicht um einen vergleich von vor- und nachteilen, sondern lediglich um eine liste von ähnlichkeiten und unterschieden beider sprachen, um Python-programmiern den einstieg zu erleichtern.
  • strings are mutable.
...and much more expensive so you sometimes have to use symbols where you would have used a string in Python. Weil das aber relativ schwer zu erklären ist brauchst es da aber sowieso eine eigene Sektion.
  • you can re-open a class anytime and add more methods.
Das ist ein Python genauso möglich, allerdings halt ohne syntactig sugar. Deswegen würde ich das zumindest anmerken.
  • it’s require instead of import. Otherwise though, usage is the same.
Usage is not the same :D import ist in Python ein statement, __import__ ist eine Funktion.
  • “mixin’s” are used instead of multiple inheritance.
Weil es keine Multiple Inheritance gibt ;-)
  • There are a number of shortcuts that, although give you more to remember, you quickly learn. They tend to make Ruby fun and very productive.
and harder to read (wenn ja jetzt über $", $1, $', $: gesprochen wird) Da sollte man schon neutral bleiben.
  • Not each file is automatically a module, you have to define that on your own
Gehört hinzugefügt, bin da mal drüber gestolpert
  • It's possible to override attributes of superglobal builtins (String, Number, etc) and many libraries do that.
Ist denke ich wichtig. Bei Python gehört monkey patching zu den geächteten Dingen.
  • Unlike in Python the stdlib follows one styleguide (eg: classnames are uppercase, methods are lowercase with underscores)
Das geht mir bei python schon langsam auf den Senkel.
  • Ruby doesn't have proper unicode support
Großes, großes Manko an Ruby auch wenn ich mir von den Ruby Leuten immer anhören muss, dass Python das ja auch nicht hat :-/
  • Unlike in Python you have builtin regular expression support
  • Unline in Python you have HEREDOCS
Denke das gehört dazu.

Eigentlich geht das ja gar nicht. Ruby hat mit Python so viel zu tun wie Haskell mit C... :roll:

PS.: ich will auch so eine genial webseite für python :-/


//EDIT:
  • You cannot overload the boolean operator (__nonzero__ in python) or function calls (__call__ in python)
  • You also can't overload +=/-=/*= etc.
  • there are two different attribute accessors operators (:: and .)
TUFKAB – the user formerly known as blackbird
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 11. Oktober 2006, 19:23

Okay - finde ich toll, dass du hier im Forum nachfragst. Ein fairer Vergleich ist ja in unser allen Interesse, denke ich. Also auf gehts, zu meinen Kommentaren:
Von Python zu Ruby hat geschrieben:there are some enforced case-conventions (ex. class names start with a capital letter, variables start with a lowercase letter).
Wie sieht dieses "Enforcement" aus, also was passiert wenn eine Klasse klein geschrieben wird?
In Python gibt es sowas technisch nicht - ganz recht. Jedoch gibt es den Styleguide, PEP8, an den sich viele halten und der eben diese case-conventions auch für Python festlegt. Wie du hier im Forum auch siehst, wird des öfteren hingewiesen, wenn ein Code sich nicht an PEP8 hält, so gesehen ist das eine Art soft-enforcement.
Von Python zu Ruby hat geschrieben:there’s only one kind of list container (an Array), and it’s mutable.
In Python gibt es zwar mehrere Container, wie Tupeln, Listen, Sets, Dicts, jedoch das was die meisten Leute unter Array verstehen sind in Python Listen und die sind ebenso mutable.
Von Python zu Ruby hat geschrieben:there’s public, private, and protected to enforce access, instead of Python’s _voluntary_ underscore __convention__.
Man könnte noch gegebenfalls etwas über Namespace-Mangling schreiben.
Von Python zu Ruby hat geschrieben:you can re-open a class anytime and add more methods.
Man kann ebenso in Python-Klassen (und Instanzen) während der Laufzeit Funktionen und Attribute hinzufügen und ändern, nur ist die Vorgehensweise etwas anders.
Von Python zu Ruby hat geschrieben:the usual-style comments on the line(s) above things (instead of docstrings below them) are used for generating docs.
Docstrings dokumentieren nicht das was über ihnen steht (wäre ja auch seltsam), sondern die Klasse oder Funktion in der sie an erster stelle stehen. Davon abgesehen sind es ganz normale, scheinbar ungebundene Strings (und müssen nichtmal Tripple-Quoted sein).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

Mittwoch 11. Oktober 2006, 19:36

wow :shock: ich antworte später im detail.

es geht übrigends um eine übersetzung, nicht um die originalseite :) also wenn ihr was hinzufügen wollt, dann am besten gleich auf deutsch.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Oktober 2006, 13:06

murphy hat geschrieben:es geht übrigends um eine übersetzung, nicht um die originalseite :)
Wobei es sicherlich nicht schaden würde, die Originalseite auch korrekt bzw fair zu machen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Donnerstag 12. Oktober 2006, 14:44

Leonidas hat geschrieben:
murphy hat geschrieben:es geht übrigends um eine übersetzung, nicht um die originalseite :)
Wobei es sicherlich nicht schaden würde, die Originalseite auch korrekt bzw fair zu machen.
Besonders, da ja eine Übersetzung auch inhaltlich den gleichen Text wiedergeben sollte wie das Original oder?

Aber ansonsten sind hier schon mal sehr viele Sachen angesprochen.
Finde ich auch verdammt nett von dir ;D

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

Donnerstag 12. Oktober 2006, 18:17

Und nochwas um WoNáDo zu verärgern:
  • the ruby regular expression engine doesn't allow (?(id/name)yes-pattern|no-pattern) ^^
:wink:
TUFKAB – the user formerly known as blackbird
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

Sonntag 15. Oktober 2006, 01:31

nach eurer umfangreichen kritik habe ich beschlossen, den artikel komplett zu verändern. er ist ein gutes stück gewachsen, aber hoffentlich auch besser geworden:

http://rubyurl.com/qi6

der originalartikel ist wirklich schlecht (sind sogar schreibfehler drin.) ich schreibe irgendwann mal ein paar verbesserungsvorschläge hin.

zu unterschieden in der übersetzung: wir gehen auf der deutschen seite sowieso ein paar andere wege, da können wir auch gleich was verbessern.

ich gehe jetzt nicht einzeln auf eure kommentare ein, das produziert nur unnötigen smalltalk :) danke jedenfalls, ich habe mich bemüht, eure vorschläge einzubauen.

allgemein: allzu feine details (kein /(?<=)/ in Ruby) finden in dem artikel keinen platz. außerdem habe ich einige strittige teile einfach entfernt.

gefallen lassen müsst ihr euch allerdings, dass der artikel aus Ruby-sicht geschrieben ist, und ich deshalb die negative sicht einiger Pythonisten auf bestimmte Ruby-eigenschaften nicht mit aufnehmen werde. das wäre, als würde auf der Python-seite stehen: "Python hat leider keine Blöcke." sonst hieße der artikel "Von Ruby zu Python".
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Sonntag 15. Oktober 2006, 19:02

murphy hat geschrieben:gefallen lassen müsst ihr euch allerdings, dass der artikel aus Ruby-sicht geschrieben ist, und ich deshalb die negative sicht einiger Pythonisten auf bestimmte Ruby-eigenschaften nicht mit aufnehmen werde. das wäre, als würde auf der Python-seite stehen: "Python hat leider keine Blöcke." sonst hieße der artikel "Von Ruby zu Python".
Du solltest Marketing machen :wink:
TUFKAB – the user formerly known as blackbird
murphy
User
Beiträge: 60
Registriert: Samstag 30. Oktober 2004, 01:34
Wohnort: Berlin
Kontaktdaten:

Montag 16. Oktober 2006, 15:14

wasm einst du denn damit? ^^ jetzt muss ich was falsch gemacht haben.
WoNáDo
User
Beiträge: 2
Registriert: Donnerstag 10. August 2006, 19:41
Wohnort: Karlsruhe

Montag 16. Oktober 2006, 20:12

blackbird hat geschrieben:Und nochwas um WoNáDo zu verärgern:
  • the ruby regular expression engine doesn't allow (?(id/name)yes-pattern|no-pattern) ^^
:wink:
Nicht Ihr ärgert mich diesbezüglich, sondern Ruby :? aber in Ruby 1.8 ist ja nicht mal look behind drin.
Wolfgang Nádasi-Donner
Antworten