Und jetzt ? (Python or Ruby)
-
Frage an das multilingual orientierte Publikum:
Für Rapid Prototyping und kleinere Programmaufgaben habe ich
bisher gelegentlich Python verwendet, war auch immer sehr zufrieden.
Ruby war bei meiner letzten Webrecherche im letzten Jahr subjektiv nicht so im Vordergrund, von Tcl und PERL jetzt mal abgesehen.Bei einer neulichen Webrecherche traute ich aber meinen Augen kaum:
Ruby scheint stark an Popularität zuzunehmen, zumindest was die
Angebote an Tutorials, Ruby-Sites und das Feiern von "Ruby on Rails"
angeht.Frage: Was ist, angesichts dieses erkennbaren Trends, nun zu empfehlen:
Bei Python bleiben in der Erwartung, daß sich Python auch in der
Zukunft behauptet und weiterentwickelt, Ruby zu lernen in der Erwartung,
daß Ruby sich durchsetzt und es irgendwann ebensoviele Module für Ruby
gibt wie jetzt für Python, oder können sich zwei so ähnliche Sprachen
wie Python und Ruby langfristig gleichzeitig am "Markt" behaupten ??Und noch etwas: kommt mir das nur so vor, oder ist die Ruby-OO tatsächlich
etwas "glatter" und "eleganter" als die von Python ? (bitte keine Polemik...)
-
Quodli Z. schrieb:
oder können sich zwei so ähnliche Sprachen
wie Python und Ruby langfristig gleichzeitig am "Markt" behaupten ??Perl und Python behaupten sich auch schon lange gleichzeitig am Markt. Das CPAN Archiv für Perl ist unglaublich.
Aber zu deiner eigentlichen Frage:
Ich glaube Ruby wird seine Anhängerschaft sicher noch vergrößern können, auch wenn das Python nicht vom Markt drängen wird. Im Prinzip sind sich die drei Sprachen ja sehr ähnlich. Was an Perl jedoch zu bemängeln ist ist seine beschränkte Objektorientierheit. Vielleicht wird das ja bald mit Perl 6 besser.Wenn du dich auf eine Sprache festlegen willst, würde ich dir eher Ruby als Python empfehlen, da, wie du ja schon gesagt hast, Sie OOP-technisch doch vorne liegt.
-
Quodli Z. schrieb:
Bei einer neulichen Webrecherche traute ich aber meinen Augen kaum:
Ruby scheint stark an Popularität zuzunehmen, zumindest was die
Angebote an Tutorials, Ruby-Sites und das Feiern von "Ruby on Rails"
angeht.Ja, Ruby On Rails wird ziemlich gehyped. Es arbeitet sich aber auch wirklich toll damit; alleine wegen Rails zahlt es sich, ein bisschen Ruby zu beherrschen.
können sich zwei so ähnliche Sprachen wie Python und Ruby langfristig gleichzeitig am "Markt" behaupten ??
Ja, davon gehe ich aus. Auch wenn Python hierzulande etwas bekannter ist, wird Ruby vor allem in Japan (dem Ursprungsland) etwa gleich intensiv wie Perl und Python genutzt.
Und noch etwas: kommt mir das nur so vor, oder ist die Ruby-OO tatsächlich
etwas "glatter" und "eleganter" als die von Python ? (bitte keine Polemik...)Nein, das ist sie tatsächlich, ist historisch begründet. (Auch wenn Python im Laufe der letzten Versionen etwas aufgeholt hat.)
Ich an Deiner Stelle würde mir beide Sprachen mal ansehen, schadet absolut nicht, beide zu beherrschen.
-
Schön, dann habe ich wenigstens einen guten Grund, mir mal Ruby näher
anzusehen und muß es nicht als Hobby/Zeitverschwendung verbuchenIm Grunde ist es ja schön, daß es bei dieser Art Programmiersprachen
eine solche Vielfalt gibt, allerdings frage ich mich, was für den
"Normalverbraucher" besser ist: eine Sprache wie Python richtig zu
beherrschen, oder mehrere davon jeweils ein bißchen zu kennen und bei
Bedarf nachzulernen?Lohnt es sich bei Perl oder Tcl noch Lernaufwand zu investieren ?
-
Quodli Z. schrieb:
Schön, dann habe ich wenigstens einen guten Grund, mir mal Ruby näher anzusehen und muß es nicht als Hobby/Zeitverschwendung verbuchen
Nein, Zeitverschwendung ist das auf keinen Fall, schon alleine wegen RoR nicht.
Im Grunde ist es ja schön, daß es bei dieser Art Programmiersprachen
eine solche Vielfalt gibt, allerdings frage ich mich, was für den
"Normalverbraucher" besser ist: eine Sprache wie Python richtig zu
beherrschen, oder mehrere davon jeweils ein bißchen zu kennen und bei
Bedarf nachzulernen?Eine Sprache solltest Du schon richtig gut können. Und dann pickst Du Dir einfach immer die Sprache heraus, die für den jeweiligen Job am besten geeignet ist, siehe dazu auch Master Foo and the Ten Thousand Lines.
Lohnt es sich bei Perl oder Tcl noch Lernaufwand zu investieren ?
Hm, IMO mittlerweile eher nicht mehr, nein.
Tcl wird kaum noch verwendet bzw. hat kaum Vorteile gegenüber Python und Ruby. Und Perl würde ich für neue Projekte ohnehin nicht mehr einsetzen, es sei denn, Du brauchst es für bestehende Projekte oder willst irgendetwas extrem RegExp-lastiges machen, wofür andere Sprachen wesentlich aufwändiger wären. (Grundkenntnisse in Perl schaden natürlich trotzdem nicht, nur allzuviel Zeit würde ich da nichtmehr reinstecken.
-
Immer die Sprache herauszupicken, die für das jeweils anstehende Programmproblem
am geeignetsten ist, klingt für die tägliche Praxis gut.Manchmal scheint auch das Gegenteil davon interessant zu sein, wenn ich mir
pypy ansehe oder das "Ruby operating system".
Ich sage das ganz ohne Ironie, denn schließlich geht es dabei ja anscheinend weniger um Peak Performance oder number crunching als um Methodik und Portabilitätsaspekte
(hoffen wir, daß Moore's Law noch lange genug mitspielt)
Also gut, was muß man dann an Sprachen können, wenn man für die nächsten 5
oder 10 Jahre gerüstet sein will ?
Ich nehme mal an, eine Sprache mit starker Typisierung für Performance, also
C++,Java oder C#. Dann noch eine sog. Skriptsprache, am besten die, die in den
nächsten Jahren die Welle macht, also wohl Python oder Ruby. Dann noch ein
bisschen Webzeug, sagen wir mal, AJAX. Oder ist AJAX nur eine Modeerscheinung
und das Web 2.0 wird ganz anders aussehen ? Liege ich damit vollkommen falsch ?
-
Korrektur:
"starke Typisierung" im obigen Posting muß natürlich durch "statische Typisierung" ersetzt werden. Stark typisiert sind Python und co. ja auch.
-
Quodli Z. schrieb:
Also gut, was muß man dann an Sprachen können, wenn man für die nächsten 5
oder 10 Jahre gerüstet sein will ?Du solltest das "gerüstet sein" weniger an einer Sprache festmachen, sondern an dem Wissen, WIE man programmiert. Wie man gewisse Probleme löst usw. Eine Sprache ist immer nur Mittel zum Zweck.
MfG
GPC
-
Da stimme ich im Grunde zu, nur ist das IMHO doch ein etwas anderes Problem - man
kann doch theoretische Informatik und Algorithmik auf akademischem Niveau mit Bravour beherrschen, ohne eine einzige Zeile in einer komplexen Sprache wie C++ programmieren zu können. Andererseits kann man die Sprachdefinition von C++
in- und auswendig können, ohne in der Lage zu sein, etwa einen effizienten
Algorithmus für die Erfüllbarkeit Boolescher Formeln entwickeln und beweisen zu können.Mir geht es aber bei meiner Frage eher um den rein formalen Aspekt des Programmierens: gegebenen Entwurf in Klassen etc. zu verwandeln.
-
Nun ja, es ist eben so, dass die Theorie die Grundlage für die Praxis bildet, da sind wir uns einig? Daher muss man hier ne gute Mischung auswählen, um sich nicht zu einseitg zu spezialisieren. Kommt natürlich auch darauf an, was du beruflich machen willst. Als reiner Software-Entwickler musst du die Sprache lernen/benutzen, die dein Betrieb vorgibt. Bist du nur "Software-Designer", dann brauchst du u.U. gar nicht zu programmieren usw.
MfG
GPC
-
Also gut, was muß man dann an Sprachen können, wenn man für die nächsten 5
oder 10 Jahre gerüstet sein will ?Sehr schwer zu sagen, daher unten nur Kommentare zu Deiner Einschätzung.
Ich nehme mal an, eine Sprache mit starker Typisierung für Performance, also C++,Java oder C#.
Hier würde ich auf alle Fälle C++ nehmen, es sei denn, Du schielst auf einen Java- oder C#-Job in der Industrie. Aber das ist letztlich wohl vor allem Geschmackssache.
Dann noch eine sog. Skriptsprache, am besten die, die in den
nächsten Jahren die Welle macht, also wohl Python oder Ruby.Wie gesagt, ich würde einfach Python _und_ Ruby lernen, ist kein allzu riesiger Aufwand.
Dann noch ein bisschen Webzeug, sagen wir mal, AJAX. Oder ist AJAX nur eine Modeerscheinung und das Web 2.0 wird ganz anders aussehen ? Liege ich damit vollkommen falsch ?
AJAX ist keine Sprache sondern nur eine Abkürzung für "Asynchronous JavaScript and XML". Sowohl Ruby On Rails als auch diverse Python-Frameworks fürs Web-Development unterstützen AJAX.
Ich würde eher - wie GPC schon sagte - sprach- und plattformunabhängiges Grundlagenwissen pauken und mir noch ein paar Sprachen ansehen, die sich stärker von den bereits von Dir genannten unterscheiden, sowas bringt einen immer weiter.
Probiere uU mal einen Lisp-Dialekt, OCaml, Haskell, Prolog. Selbst wenn Du die Sprachen nicht täglich verwendest, werden sie Dir doch ein paar überaus erhellende Momente bescheren.
Oh und lerne Shell-Scripting, am besten gepaart mit einem soliden RegExp-Grundgerüst und einem ausgeprägten Verständnis der Standard-Unix-Tools, das wird Dir verdammt viel Zeit sparen.