Ruby oder Python? [geschlossen]

24

Diese Frage ist äußerst subjektiv und offen. Es klingt vielleicht sogar nach etwas, das ich nur für mich selbst recherchieren und meine eigene Entscheidung treffen sollte. Aber ich würde es gerne veröffentlichen und ein paar Gedanken von anderen bekommen.

Lange Rede, kurzer Sinn - ich bin beim Rattenrennen ausgebrannt und habe dieses Jahr ein selbstfinanziertes Sabbatical. Vieles davon ist, eine Pause vom geschäftlichen Treiben einzulegen und herumzureisen, aber ich möchte auch mit neuen Technologien herumspielen und ein paar selbstlernende Projekte durchführen, mit dem Programmieren auf dem Laufenden bleiben und gut - ich liebe es einfach, daran zu basteln Programmieren ohne Druck!

Hier ist die Sache: Ich bin ein lebenslanger C / C ++ / Java-Programmierer. Ich bin ein bisschen schnörkellos, seit ich während meiner gesamten Programmierkarriere mit dieser Sprachfamilie gearbeitet habe. Ich möchte also eine Sprache lernen, die syntaktisch nicht so eng mit dieser Gruppe verwandt ist. Was ich grundsätzlich suche, ist eine Sprache, die relativ allgemein gehalten ist, Spaß macht, einige neue Konzepte hat, die sich von C ++ / Java unterscheiden, und eine gute Community hat. Eine sekundäre Überlegung ist, dass es gute Webentwicklungs-Frameworks hat. Eine tertiäre Überlegung ist, dass es nicht vollständig akademisch ist (lesen Sie: Es gibt Jobs in der realen Welt, die es verwenden).

Ich habe es auf Ruby oder Python eingegrenzt. Mein Eindruck von Ruby ist, dass es extrem weborientiert ist - dass die einzige wirkliche Anwendung darin besteht, eine serverseitige Skriptsprache für das Erstellen von Web-Inhalten zu sein (hauptsächlich Ruby on Rails). Ich habe überhaupt keinen großen Eindruck von Python, außer dass es eine leidenschaftliche Fangemeinde zu haben scheint und eine ziemlich vielseitige Sprache zu sein scheint.

TL; DR und um es so kurz wie möglich zu fassen: Welches davon wäre besser, wenn ein C ++ / Java-Typ lernen würde, einige neue Perspektiven auf die Programmierung zu bekommen? Und was ist offener und allgemeiner und auf eine größere Anzahl von Anwendungen anwendbar? Im Moment neige ich zu Ruby, aber ich mache mir in gewissem Maße Sorgen, dass es so aussieht, als würde es nur als serverseitige Websprache verwendet.

Bobby Tische
quelle
"Für Python bin ich mir nicht so sicher"? Von was? Wie ist das relevant?
S.Lott
Auf StackOverflow finden Sie viel mehr zu Ruby vs Python. Ich bin überrascht, dass Lennart selbst noch keinen Kommentar abgegeben hat. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Job
@ S.lott: sorry, war ebough nicht klar. Nur damit gemeint, dass ich noch keinen sehr detaillierten Eindruck von Python habe. Abgesehen davon, dass es vielseitig ist und eine starke Fangemeinde hat.
Bobby Tables
9
Perl natürlich.
Bruce Alderman
Dies fällt in die "Welche Technologie ist besser?" Kategorie von Fragen, die laut FAQ nicht zum Thema gehören.
ChrisF

Antworten:

35

Lassen Sie sich nicht von der Tatsache täuschen, dass der Ruby vor allem aufgrund von Rails (dem Webanwendungs-Framework) zum allgemeinen Sprachgebrauch aufstieg. Es ist eine Allzweck-Programmiersprache, und Sie können sie für alles verwenden, für das Sie eine andere Sprache verwenden können.

Spielen Sie mit Ruby und sehen Sie, ob Sie sich in ihn verlieben. Entweder du wirst oder du wirst nicht. Es ist ein bisschen wie die Musik der Grateful Dead; Entweder du liebst es oder du hältst es nicht aus.

Ruby wird dein Gehirn dehnen. In vielerlei Hinsicht ist es so weit von C ++ / Java entfernt, wie es nur geht. Ich komme aus C und C # und fand Rubys Dynamik und Metaprogrammierkraft ziemlich berauschend.

Davon abgesehen ist Python eine absolut herausragende Sprache und wird Sie aus Ihrer geschweiften Klammer vertreiben.

Warum nicht beides lernen? Ich benutze beide regelmäßig: Ruby für die Programmierung mit Rails und Python für die Arbeit mit Google AppEngine.

Adam Crossland
quelle
2
+1 für eine tote Referenz
,;
1
Vielen Dank. Ich werde zuerst mit Ruby gehen und sehen, ob ich mich in ihn verliebe. :)
Bobby Tables
8
Ich bin ein bisschen zu spät zur Party, aber trypython.org und tryruby.org sind großartige Sites, um die Sprachen auszuprobieren.
Michelle Tilley
17

Zugegeben, ich habe Ruby kaum benutzt, aber hier sind meine Eindrücke von Python:

  • Wenn ich Pseudocode schreibe, um eine Funktion zu zeichnen, finde ich das, was ich praktisch schreibe ist Python, und manchmal erstaunlich wenig Umschreiben ist notwendig , um es eigentlicher Code zu machen. Sie können sogar den Pseudocode überspringen und Ihre Gedanken direkt in Python ausdrücken
  • Wenn ich etwas tun muss, das mir wie eine gewöhnliche Aufgabe vorkommt, verfügt Python in der Regel über die erforderlichen Funktionen (auf hoher Ebene), die in die Standardbibliothek integriert sind. Zum Beispiel war die Antwort, als ich früh eine Datei öffnen und zeilenweise scannen wollte, so einfach wie 'für Zeilen in myFile: dostuff (lines)'. Ich glaube, das nennt man den Ansatz "Batterien inklusive", und er unterscheidet sich von einigen anderen Sprachen, die ich verwendet habe, wo die alltäglichen Abläufe viel fummeliger sind

Diese beiden Dinge fallen mir auf.

Andrew M
quelle
Ich denke, das sind genau die Gründe, warum ich Ruby bevorzuge. Ruby ist mehr OO und hat weniger Keywords. ZB in Ruby "[1,3,5] .length ()" und "[1..10] .each () ..." vs Python "len ([1,3,5])" und "for i in range (1,11) "
LennyProgrammers
6
@Lenny - Ruby hat tatsächlich mehr Keywords: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - für Python 2.6 sind das 31 Keywords für Ruby's 38. Außerdem scheint 'more OO' zu sein wird hier ziemlich subjektiv verwendet, da in beiden Sprachen "alles ist ein Objekt" gilt (und noch wörtlicher mit Python 3.x, da alles Unterklassen von object). Dies len(obj)ist auch eine Abkürzung zum Aufrufen obj.__len__()und eine for i in rangeZusammenfassung der operativen Details zum Bedienen von Generatorobjekten. Ich denke / äquivalent aber anders / ist genauer.
Wayne Werner
Ich habe das Gefühl, dass Lenny meinte, Sie würden in Ihrer typischen Aussage weniger Stichwörter verwenden, zum Beispiel 'für i in range (1,11) gibt es 3 Stichwörter (für, in, range). Natürlich sind manchmal mehr Wörter besser.
Andrew M
5
Range ist kein Schlüsselwort, es ist eine Funktion
Kugel
9

Wenn Sie ein ganzes Jahr Urlaub machen, würde ich vorschlagen, jeweils ein oder zwei Wochen mit Lernen zu verbringen und dann selbst zu entscheiden, was Ihnen am besten gefällt. Ich habe Erfahrung mit beiden und meiner Meinung nach sind beide so fähig, dass Sie sich wirklich nur entscheiden müssen, welches Sie bevorzugen.

Jason Webb
quelle
+1, Beide scheinen ziemlich einfach zu sein. Clojure dagegen ... macht viel Spaß, ist aber auch schwerer.
Job
7

IMO, sollten Sie mit Python gehen. Der Grund ist, dass es vielseitiger ist, Sie können es für fast alles verwenden. Ruby wird, wie Sie bemerkt haben, aufgrund seiner Web-Frameworks häufiger in der Web-Entwicklung eingesetzt. Im Gegensatz zu Python eignet sich Ruby nicht für die Entwicklung von GUI-Desktop-Anwendungen, numerischen, statistischen oder Bildverarbeitungsprogrammen.

Marcin
quelle
1
Können Sie darauf hinweisen, was Ruby "nicht so gut für die Entwicklung von GUI-Desktop-Anwendungen, numerischen, statistischen oder Bildverarbeitungsprogrammen" macht? Als ich 2001/2002 in Ruby programmierte, machte ich all diese Dinge glücklich.
LennyProgrammers
7
@ Lenny222. In Ruby gibt es keine Bibliotheken wie Numpy, Scipy, Sympy, PIL, Matplotlib. Unabhängig davon, um welche numerischen Bibliotheken es sich handelt, liegen sie weit hinter Python zurück. Ähnlich mit Dokumentation und Bibliotheken für die Entwicklung von GUI-Anwendungen.
Marcin
1
Sie sagen, Python ist vielseitiger und verweisen dann auf Bibliotheken, warum. Ich gebe Ihnen zu, dass es mangels einer guten Bibliothek nicht so einfach ist, einige Dinge in Ruby zu tun, aber das bedeutet nicht, dass Ruby selbst irgendwie weniger vielseitig ist.
Twisol
@ Twisol das ist genau das Warum: Python ist sehr einfach (und konsistent) und der Grund, warum es so vielseitig ist und warum es so viele nützliche Bibliotheken (IMO) gibt.
Nadir Sampaoli
6

Ruby gibt es schon viel länger als Rails, also lassen Sie es mich auf der ganzen Welt so machen Ruby != web, obwohl es das sehr gut macht. Es gibt eine Vielzahl von systembezogenen Dingen, die es kann und tut. Es scheint, als hätte das gesamte Rails-Framework den Rest der Ruby-Welt verschlungen. Und ja, ich bin ein Ruby-Fan.

Python dagegen hat eine Menge zu bieten, und es wurde in fast alles unter Linux integriert. Das sagt mir, dass es wahrscheinlich ziemlich einfach ist, in größere Programme (im Vergleich zu Ruby, Java usw.) zu integrieren. Es gibt eine ganze Menge von Ubuntu Linux-Infrastrukturen, die mit Python geschrieben wurden, was mir sagt, dass Python eine Anwendung in der Systemprogrammierung hat. Ich habe gehört, dass das Web-Framework wirklich gut ist, ich habe noch nicht damit gespielt.

Trotzdem sind sowohl Ruby als auch Python gleichermaßen fähige Sprachen, und Sie werden feststellen, dass sie Ihnen das Leben erheblich erleichtern. Ruby hat viel mehr Webköpfe in seiner Community, aber das ist nicht die gesamte Community. Ich habe es auch für eine Reihe von Infrastrukturprojekten verwendet.

Berin Loritsch
quelle
5

Dies ist ein Sonderfall von " Ideal Programming Language Learning Sequence" und ähnlichen Fragen . Was Sie brauchen, ist nicht "die eine perfekte Sprache", Sie brauchen mehrere Sprachparadigmen und mehrere Lernerfahrungen, um Ihren Geist zu öffnen.

Ich weiß, Sie sagten, Sie hätten es auf Ruby und Python beschränkt, aber ich schlage vor, Sie beginnen mit Racket (einem beliebten Schema). Es ist auf Lernen ausgelegt und erweitert Ihr Gehirn auf angenehme Weise in Richtung funktionale Programmierung, interaktive Programmierung und dynamisches Tippen. Es gibt keine Jobs (im wahrsten Sinne des Wortes Null), eine sehr kleine, fragmentierte Community und kein wichtiges Web-Framework. Braten Sie Ihr Gehirn für eine Weile und ziehen Sie dann weiter.

Zweitens möchten Sie Ruby oder Python für mögliche Jobs lernen. Ich schlage vor, Sie lernen beide. Das Erlernen des zweiten dieser beiden wird trotz ihrer Unterschiede viel einfacher sein als das erste. Was mögliche Jobs angeht, ist mein Bauchgefühl, dass es aufgrund von Rails mehr Ruby-Arbeit gibt, aber ich weiß, dass es in diesem Bereich auch einige Zope-Arbeiten gibt. Investieren Sie in mindestens einen von ihnen, aber probieren Sie auch den anderen aus, der mindestens so lang ist, dass Sie etwas Kleines bauen können.

Ehrlich gesagt, Sie werden wahrscheinlich in Ihrer ersten Woche bei einem der beiden mehr lernen, als Sie jemals selbst gelernt haben. Beide haben große Ökosysteme mit vielen Werkzeugen, Kultur und Redewendungen.

tl; dr: Sowohl als auch Schema.

Jesse Millikan
quelle
1
+1 Alles, was ich sah, war "die eine perfekte Sprache" und "Schema". :)
Dietbuddha
1

Auch ich komme aus Java / C ++ und habe in den letzten 4 Monaten mit dem Django-Framework in Python programmiert und es ist wirklich großartig. Wenn ich ein Problem oder eine Frage habe, kann ich Erklärungen zu vorhandenen Beiträgen finden. Ich kann nicht für Ruby bürgen, da ich es noch nicht benutzt habe, aber ich werde es auf jeden Fall versuchen, wenn ich etwas Zeit habe.

Mir persönlich gefällt, wie Sie mit Python wirklich schnell etwas anfangen können, da es viele nützliche Funktionen enthält.

Chiurox
quelle
1

Ich würde für Ruby stimmen. Ich kam aus dem .NET- und C # -Hintergrund und habe zuerst Python ausprobiert, aber Ruby hat mich einfach verzaubert =) Ich
schreibe eine Menge System-Zeug darin und einige Rails-Entwickler tun dies auch. Es ist als Python in der Systemprogrammierung fähig und im Web fantastisch. Und es fühlt sich für mich polierter an.

Alexey Anufriyev
quelle