Geoffrey Grosenbach zu dem Thema, was Python-Entwickler über Ruby denken: http://blog.peepcode.com/tutorials/2010 ... nk-of-ruby
Ich glaube, die Essenz ist, dass Ruby zwar so seine Probleme mit "komischer" Syntax hat, diese aber andererseits auch genau die "coolen" DSLs möglich macht. Ob nun wirklich alle Python-Entwickler höflicher (oder auch nur zurückhaltender) sind als Ruby-Entwickler, wage ich zu bezweifeln, doch ehrlich gesagt finde auch ich es verdammt unhöflich dem Vortragenden Gegenüber, wenn man in seinem Vortrag sitzt, aber augenscheinlich nur Augen für seinen eigenen Laptop hat. Ansonsten würde ich erste gerne einmal Folien und Vortrag hören, bevor ich da mehr sagen kann, denn Geoffrey hat zwar einen sehr stylishen Blogeintrag geschrieben, doch sagt er auch viel aus?
Stefan
Was Python-Entwickler über Ruby denken
Ich weiß nicht ... schon alleine die Aussage:
"Compared to other programming languages, Python and Ruby are so similar that hearing arguments between them is like trying to figure out which identical twin is more handsome."
kann kaum stimmen wenn man die enge Verwandschaft zu Perl sieht.
"Compared to other programming languages, Python and Ruby are so similar that hearing arguments between them is like trying to figure out which identical twin is more handsome."
kann kaum stimmen wenn man die enge Verwandschaft zu Perl sieht.
aus http://linuxdevcenter.com/pub/a/linux/2 ... /ruby.html...
Stewart: I gather you had worked with both Perl and Python before creating Ruby. What bits of Perl did you incorporate in Ruby?
Matz: A lot. Ruby's class library is an object-oriented reorganization of Perl functionality--plus some Smalltalk and Lisp stuff. I used too much I guess. I shouldn't have inherited $_, $&, and the other, ugly style variables.
Stewart: How about Python? What aspects of that language did you try to reuse in Ruby?
Matz: Far less than Perl. But I stole a few things, like exception names. Plus I learned a lot from its code.
...
aus http://www.softpanorama.org/Scripting/ruby.shtml"Ruby's syntax and design philosophy are heavily influenced by Perl. It has a lot of syntactic variability. Statement modifiers (if, unless, while, until, etc.) may appear at the end of any statement. Some key words are optional (the ``then'' in an ``if'' statement for example). Parentheses may sometimes be elided in method calls. The receiver of a method may usually be elided. Many, many things are lifted directly from Perl."
Da spielt ein Rubyist die Unterschiede zwischen den Sprachen als Geste des guten Willens, der Freundschaft und des Friedens herunter und du hast nichts anderes zu tun, als gleich wieder Öl ins Feuer der Feindschaft zu gießen :)LanX hat geschrieben:Ich weiß nicht ... schon alleine die Aussage:
"Compared to other programming languages, Python and Ruby are so similar that hearing arguments between them is like trying to figure out which identical twin is more handsome."
kann kaum stimmen
Seien wir doch lieber froh, dass er voll des Lobs nach einem Besuch einer Python-Usergroup war.
Siehe auch diese Lobhudelei zu Python von Chris "Github" Wanstrath: http://rubyconf2009.confreaks.com/20-no ... trath.html
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Effektiv ist es aber so, wenn man Ruby-Code schreibt dann sieht der letztendlich dem Python-Code relativ ähnlich. Von Blöcken vielleicht mal abgesehen - jedenfalls ähnlicher als zu Perl-Code.LanX hat geschrieben:Ich weiß nicht ... schon alleine die Aussage:
"Compared to other programming languages, Python and Ruby are so similar that hearing arguments between them is like trying to figure out which identical twin is more handsome."
kann kaum stimmen wenn man die enge Verwandschaft zu Perl sieht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Why the lucky stiff schreibt dazu in der Readme von unholy, das Ruby-Code in Python-Code übersetzt, indem es den Ruby-Bytecode in Python-Bytecode übersetzt:
You know, it's crazy that Python
and Ruby fans find themselves
battling so much. While syntax
is different, this exercise
proves how close they are to
each other! And, yes, I like
Ruby's syntax and can think much
better in it, but it would be
nice to share libs with Python
folk and not have to wait forever
for a mythical VM that runs all
possible languages.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Mit dem Argument des stärkeren Schwerpunkts auf OOP könnte man nun auch behaupten das Javascript und Ruby effektiv die gleiche Sprache sind.Leonidas hat geschrieben:Effektiv ist es aber so, wenn man Ruby-Code schreibt dann sieht der letztendlich dem Python-Code relativ ähnlich. Von Blöcken vielleicht mal abgesehen - jedenfalls ähnlicher als zu Perl-Code.
Tatsächlich sind VB Script und JS bis auf den Syntax identisch, während man das von JS und Java wohl kaum ein "Experte" behaupten würde, nur weil sie gemeinsamen Syntax haben, oder?
Das Ruby Perl semantisch am nächsten steht bezeugt ja nicht nur Matz, auch Larry Wall lobt Ruby und sieht es als schärfsten Konkurenten in Perls ökologischer Nische.
Für einen Perler ist es auch reichlich unspektakulär ob man jetzt
Code: Alles auswählen
push @a,$b
Code: Alles auswählen
a.push(b)
Pythonistas dürften sich da schwerer tun. Und solche Beispiele gibts tonnenweise...
Ob der Bytecode von Ruby und Python kompatibel sind weiß ich nicht, aber zumindest die Aussage von Matz legt das nahe.
Das man froh sein solle über Nettigkeiten zwischen Communities um Konflikte zu mildern, also sorry, dass überhaupt solche Kämpfe stattfinden ...

Beschmeißen sich die Fanboys mit Brei oder reißen sie sich gegenseitig die Lätzchen kaputt?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, eher nicht. Aber wenn man wollte, könnte man behaupten dass JavaScript und Scheme effektiv die selbe Sprache sind.LanX hat geschrieben:Mit dem Argument des stärkeren Schwerpunkts auf OOP könnte man nun auch behaupten das Javascript und Ruby effektiv die gleiche Sprache sind.

Uhh, ich kenne mich jetzt nicht speziell mit VB Script aus (habe nur "damals" VB6 verwendet), jedoch denke ich dass das Modell zur Objektorientierung in JS ein anderes, ebenso schätze ich dass die anonymen Funktionen und das, hmm, etwas kuriose Scoping Eigenschaften sind, die JS-spezifisch ist. Ich stimme dir aber zu, dass Java und JavaScript sich an so vielen prinzipiellen Stellen unterscheiden, dass sie nur mit Mühe als "ähnlich" bezeichnet werden können. Vielleicht ist es auch der Grund warum JavaScript viele Jahre so ein Nischendasein fristete - als "lesser Java" wollte kaum jemand damit spielen.LanX hat geschrieben:Tatsächlich sind VB Script und JS bis auf den Syntax identisch, während man das von JS und Java wohl kaum ein "Experte" behaupten würde, nur weil sie gemeinsamen Syntax haben, oder?
Was ich damit ausdrücken will: mit VB Script schreibt man vermutlich Code anders als wie man es mit JS machen würde.
Und ich habe Ruby verwendet und eben den Eindruck bekommen dass Ruby große Ähnlichkeit zu Python hat. Ausreichend große um nicht sonderlich spannend zu sein.LanX hat geschrieben:Das Ruby Perl semantisch am nächsten steht bezeugt ja nicht nur Matz, auch Larry Wall lobt Ruby und sieht es als schärfsten Konkurenten in Perls ökologischer Nische.
Mit Unholy kann man prinzipiell Bytecode übersetzen, nur ist das eher eine kuriose Idee von _why, denn ein ernstes Projekt. Wenn Perl5 Bytecode generieren würde, wäre der ja auch nicht so viel anders als der von Ruby oder Python. Und Parrot war sogar als gemeinsame VM für Python und Perl6 angedacht.LanX hat geschrieben:Ob der Bytecode von Ruby und Python kompatibel sind weiß ich nicht, aber zumindest die Aussage von Matz legt das nahe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Tatsächlich sind die Unterschiede in der Funktionalität der bekannten Skriptsprachen insgesamt nicht sonderlich groß. Die Syntax unterscheidet sich und idiomatischer Natur. Auf einer subjektiven Ebene, im jeweiligen Erfahrungskontext des Programmierers, ist dann Sprache X oder Y "besser". Und natürlich gibt es tatsächlich an vielen Stellen Dinge über die man diskuttieren kann: Jede Sprache hat auch so ihre unschönen Ecken. Entsprechende entstehen "best-practice"-Modelle und Regeln. Etwas was Perl kennt und EcmaScript5 als Neuerung enthält ist ein "use strict;"-Modus. Dieser bewirkt u.a., dass keine Variablen ohne vorherige Definition (my/var) verwendet werden können. Das fehlt mir z.B. in Python oder anderen Sprachen. Denoch kann ich jeden nur ermutigen sich mit anderen Sprachen zu beschäftigen. Ich habe z.B. seinerzeit anonyme Codeblöcke in Perl erst verstanden, nachdem ich die Nutzung von lambda-Ausdrücken in Python kennengelernt hatte. So kann man bei jeder Programmiersprache etwas dazu lernen und lernt die entsprechenden Sprachen zu schätzen. Auf meiner Todo-Liste sind z.B. noch Scheme und Factor. Wenn man Programmieren als handwerkliche Kunst versteht, dann sollte man eh das Essay von Peter Norvig mal gelesen haben und entsprechend Zeit einplanen. Programmieren ist, unabhängig von der verwendeten Sprache, eine schöne Kunst, die man nur richtig wertschätzen kann, wenn man sich Zeit lässt sie auch auszuüben.
Achtung: User ist ein Python-Lehrling!
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Python kennt nunmal keine "Variablen", sondern nur Namen die vergeben werden, deshalb ist es auch ueberfluessig. Das Problem ist, dass Code nur dann Fehler wirft, wenn er ausgefuehrt wird. Das ist mir auch ein Dorn im Auge. Aber das kann man mit Testsuiten und Branch-Coverage ausgleichen.Ronnie hat geschrieben:Etwas was Perl kennt und EcmaScript5 als Neuerung enthält ist ein "use strict;"-Modus. Dieser bewirkt u.a., dass keine Variablen ohne vorherige Definition (my/var) verwendet werden können. Das fehlt mir z.B. in Python oder anderen Sprachen.
Die meisten anderen Sprachen die statisch sind haben diesen `strict`-Modus eben im Compiler `-pedantic (gcc)` usw.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Oh, kann ich beide sehr empfehlen obwohl sie natürlich total verschieden sind. Leider gibt es zu Factor nahezu Null Einführungsliteratur, daher bin ich über den Umweg über PostScript drauf gekommen und tue mir dennoch ziemlich schwer. Es fehlt halt an der Übung - sowas was ich in Ruby von Python kommend nie hatte, da konnte ich nahezu sofort halbwegs idiomatischen Code schreiben.Ronnie hat geschrieben:Auf meiner Todo-Liste sind z.B. noch Scheme und Factor.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Tatsächlich ist JS entstanden indem man Javasyntax auf Self draufgestülpt hat.Leonidas hat geschrieben:Aber wenn man wollte, könnte man behaupten dass JavaScript und Scheme effektiv die selbe Sprache sind.
Scheme kennen ich nicht aktiv, aber die entscheidende Funktionalität die Lisp hat und weder JS noch Perl bieten sind Macros. Deswegen Veto!

(kann Python Macros?)
Nicht wirklich,glaub mir, ich musste mal mein Geld mit VBS verdienen.Was ich damit ausdrücken will: mit VB Script schreibt man vermutlich Code anders als wie man es mit JS machen würde.

Wenn du den Windows Scripting Host installierst bekommst du JScript und VBScript nicht nur gleichzeitig im Paket sondern merkst auch sehr schnell dass beide auf der gleichen Engine laufen.
Das geht so weit dass in VBS Sachen funktionieren die nur innerhalb von JScript dokumentiert wurden !!!
Und JScript war die Microsoft-Methode die Rechte von Netscape/Sun an Javascript zu umgehen. ( So ähnlich wie C# und Java...)
VBS war dann der nächste Schritt, Gate's dogmatische Ansichten zu Basic als quintessenz des EInfachen durchzusetzen.
Perl5 generiert Bytecode http://de.wikipedia.org/wiki/Bytecode den übersetzen zu wollen ist allerdings wirklich nicht trivial weil alles andere als schlank...Wenn Perl5 Bytecode generieren würde, wäre der ja auch nicht so viel anders als der von Ruby oder Python. .

Aber ich vermute sehr stark dass Ruby diesbzgl näher an Python ist ...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Um mal Wikipedia zu zitieren: "The key design principles within JavaScript are inherited from the Self and Scheme programming languages."LanX hat geschrieben:Tatsächlich ist JS entstanden indem man Javasyntax auf Self draufgestülpt hat.Leonidas hat geschrieben:Aber wenn man wollte, könnte man behaupten dass JavaScript und Scheme effektiv die selbe Sprache sind.
Wenn man Brendan Eich fragt dann bekommt man schon mit dass Scheme damals ein heißes Thema war.
Ich weiß nicht ob ich Macros als entscheidende Funktionalität ansehen würde. Schließlich existiert sowohl ein experimentelles Template Haskell sowie ein voll integriertes OCamlP4 (und dessen Fork OCamlP5) in OCaml die beide Macros bieten aber bei weitem keine Lisps sind. Und zumindest in Scheme ist Macro-Abuse auch verpöntLanX hat geschrieben:Scheme kennen ich nicht aktiv, aber die entscheidende Funktionalität die Lisp hat und weder JS noch Perl bieten sind Macros. Deswegen Veto!

Nein, es gibt aber EasyExtend und, soweit ich mich erinnere noch ein weiteres Paket mit dem man von Python abgeleitete Sprachen kreieren kann. Natürlich nicht so integriert und akzeptiert wie das Macrosystem in den populären Lisp-Dialekten.LanX hat geschrieben:(kann Python Macros?)
Das weiß ich. Aber Java und Rhino laufen auch auf der gleichen "Engine". Somit ist die zugrunde liegende Implementierung eher irrelevant.LanX hat geschrieben:Wenn du den Windows Scripting Host installierst bekommst du JScript und VBScript nicht nur gleichzeitig im Paket sondern merkst auch sehr schnell dass beide auf der gleichen Engine laufen.
Oh, das war mir nicht bewusst. Ich wusste zwar vom Parrot-Bytecode in Perl6, aber mit den Interna von Perl5 habe ich mich nicht sonderlich auseinandergesetzt.LanX hat geschrieben:Perl5 generiert Bytecode http://de.wikipedia.org/wiki/Bytecode den übersetzen zu wollen ist allerdings wirklich nicht trivial weil alles andere als schlank...Wenn Perl5 Bytecode generieren würde, wäre der ja auch nicht so viel anders als der von Ruby oder Python. .
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Kannst du mir das bitte erläutern? Meinst du damit dass eine Variable eigentlich der Name eines Schlüssel in einem speziellen Dictionary/Hash für Variablen ist?cofi hat geschrieben:Python kennt nunmal keine "Variablen", sondern nur Namen die vergeben werden, deshalb ist es auch ueberfluessig.
Das ist in Perl nicht anders...
Falls du was anderes meinst, hast du vielleicht einen Link zum Nachlesen, interessiert mich wirklich

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, genau so ist es.LanX hat geschrieben:Kannst du mir das bitte erläutern? Meinst du damit dass eine Variable eigentlich der Name eines Schlüssel in einem speziellen Dictionary/Hash für Variablen ist?cofi hat geschrieben:Python kennt nunmal keine "Variablen", sondern nur Namen die vergeben werden, deshalb ist es auch ueberfluessig.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Der Vergleich hinkt etwas, oder kann ich in Java Semantik von JS nutzen und umgekehrt?Das weiß ich. Aber Java und Rhino laufen auch auf der gleichen "Engine". Somit ist die zugrunde liegende Implementierung eher irrelevant.
Anyway ich muss mich korrigieren, dass VBS keine eigenen Objekte kennt ist mir auch neu, offensichtlich war mir die prototypische Vererbung damals ebenso fremd wie Bill Gates!

aus http://msdn.microsoft.com/en-us/library/ms970435.aspxJavaScript Versus VBScript
JavaScript and VBScript have many similarities.
...
As stated before, the most obvious difference is syntax.
...
Unfortunately, VBScript does not support object creation or user-defined classes. VBScript supports only reusable functions and subroutines. ...
(das disqualifiziert VBS ziemlich ... ich bild mir ein es ging)
Anyway worum es mir ging war wenn die Aussage stimmt das "Ruby und Python" praktisch nicht zu unterscheiden" seien und man gleichzeitig sieht das Ruby ein redesigntes Perl ist, wo Konzepte bis in die feinsten Details nachgebaut wurden, müsste man logischerweise schließen:
"Python und Perl sind praktisch nicht zu unterscheiden ..."
es ist ja durchaus korrekt, dass bei der Entwicklung von Ruby verschiedene Sprachen einen Einfluss hatten. Viele Dinge, die von Perl übernommen wurden, sind aber auch wieder entfernt worden, oder gelten als deprecated. Selbst in Perl gelten heute viele Dinge als überholt, die man früher bedenkenlos genutzt hat. Deshalb gibt es ja auch "perlcritic". Das Ruby sich eher perlish anfühlt wie Python ist allerdings auch wahr. Aber letzten Endes reden wir nur über eine Schnittmenge an Funktionalität zwischen Sprachen, die mal größer oder kleiner ausfällt - und von subjektiver Präferenz abhängig ist. Ich erinnere dich an unsere Diskussion über Sigils, die in Perl kontextabhängig sind und ihre verwirrende Verwendung im Umgang mit Referenzen. Du führst ja selbst gerade die Diskussion (an anderer Stelle) über Autobox und die Vorteile von Methodenaufrufen und Method-Chaining. Genau der Punkt von dem ich schon vor längerer Zeit behauptet habe, dass er in anderen Sprachen geschickter gelöst ist als in Perl. Perl hat viele Vorteile, aber auch viele Fussangeln und Fettnäpfe. Viele der Dinge, die früher Perl mehr Flexibilität und Funktionalität erlaubt haben, sind heute durch Metaprogramming und DSLs in anderen Sprachen geschickter und schöner umzusetzen. Es gibt aktuell nur wenig Dinge wo ich behaupten würde, dass Perl noch Vorbild für andere Sprachen sein kann. Um ein konkretes Beispiel zu nennen, würde ich Moose erwähnen und dabei besonders Subtyping/Constraints und Coercion. Aktuell fliessen aber mehr Ideen in die andere Richtung, die womöglich irgendwann mal zu Perl6 führen (auch wenn ich in Bezug auf Parrot und Performance noch besondere Zweifel habe).LanX hat geschrieben:dir ist schon klar das ich den Schöpfer selbst zitiert hatte?
Achtung: User ist ein Python-Lehrling!
Aus einem Interview:
Im Gegensatz zu Ruby sind die Konzepte von Python's OO-System nicht direkt auf Smalltalk zurückzuführen.
Stefan
InfoQ hat geschrieben:In the same way we can talk about Smalltalk. Smalltalk has a lot of dialects and some people like to say that Ruby is almost the dialect of Smalltalk. Do you agree with that?
In der typischen höflichen Japanischen Art streitet er nicht ab, sondern bedankt sich :) In einer Präsentation auf einer der frühe RubyConf hatte er mal "Ruby > (Smalltalk + Perl)/2" stehen. Ich finde leider keine Referenz dazu. Das zeigt aber die beiden stärksten Einflüsse. Die Verwandtschaft zu Perl ist denke ich nicht abzustreiten, schon der Name "Ruby" zeigt das ja. Ebenfalls ein Juwel.Matz hat geschrieben:[...Ruby hasn't the IDE...], but as a language, the basic concept is pretty much in common with Ruby. If someone considers Ruby as a Smalltalk dialect, I inherited so many concepts from Smalltalk, so I'm proud of being part of the Smalltalk community.
Im Gegensatz zu Ruby sind die Konzepte von Python's OO-System nicht direkt auf Smalltalk zurückzuführen.
Stefan
@Ronnie: Es geht hier um die Aussage "das Python und Ruby nicht zu unterscheiden seien".
Wie hier bereits (auch von anderen) ausgeführt wurde standen Perl, Lisp und Smalltalk Pate, und wie sma schon sagte Pythons Objektmodell stammt nicht von Smalltalk.
Wie Perl-Diskussionen über Sigils und Autobox hier her passen weiß ich nicht, Perl ist ja nur indirekt Thema und möchte ich in Pythonkreisen eh nicht aktiv vertiefen. (Ich bin hier zum lernen und nicht zum predigen.)
Ob Ruby letztendlich mehr Ähnlichkeiten hat Smalltalk, Perl oder Lisp hat sehe ich unemotional ...
...die obige Aussage Python==Ruby lässt mich aber wirklich an der Seriösität des Autors zweifeln! Dies ist je nach Standpunkt entweder falsch oder relativiert sich zu freundlichem blabla.
Zumindst ziehe ich daraus dass ich mich wirklich mehr mit Smalltalk auseinandersetzen muss...
Wie hier bereits (auch von anderen) ausgeführt wurde standen Perl, Lisp und Smalltalk Pate, und wie sma schon sagte Pythons Objektmodell stammt nicht von Smalltalk.
Wie Perl-Diskussionen über Sigils und Autobox hier her passen weiß ich nicht, Perl ist ja nur indirekt Thema und möchte ich in Pythonkreisen eh nicht aktiv vertiefen. (Ich bin hier zum lernen und nicht zum predigen.)
Ob Ruby letztendlich mehr Ähnlichkeiten hat Smalltalk, Perl oder Lisp hat sehe ich unemotional ...
...die obige Aussage Python==Ruby lässt mich aber wirklich an der Seriösität des Autors zweifeln! Dies ist je nach Standpunkt entweder falsch oder relativiert sich zu freundlichem blabla.
Zumindst ziehe ich daraus dass ich mich wirklich mehr mit Smalltalk auseinandersetzen muss...
