News

Mittwoch, 19. August 2009 | News

"Mehrsprachigkeit? Wer soll sich denn bitte all die API-Features der 1000 Sprachen merken können?"

(Link zum Artikel: http://www.it-republik.de/jaxenter/news/050670)

Verschiedene Programmiersprachen zu beherrschen und diese gezielt zur Lösung eines Problems einzusetzen bringt Vorteile - so hatte Debasish Ghosh in seinem Blogeintrag argumentiert (wir berichteten). Doch führt die multiple Sprachbeherrschung wirklich zwangsläufig zu der prophezeiten Produktivitätssteigerung? Ein Blick auf die Kommentarliste zeigt, dass die gelobte Mehrsprachigkeit durchaus nicht von allen gleichermaßen geschätzt wird und neue Probleme wie eine schwierige Wartbarkeit von gemischtsprachigen Projekten entstehen können.

Auch scheint es einigen unmöglich, bei der Vielfalt der Sprachen eine gleichermaßen tiefe Kompetenz wie in der präferierten Hauptsprache zu erlangen, denn: Wer soll sich bei all diesen Sprachen eigentlich noch die ganzen API-Features und eingebauten Detail-Funktionen merken können?

I'm strongest with Java, but during my programming career I've also learned or programmed in C, C++, Perl, Python, Ruby, Groovy, Scheme, Javascript, PL/SQL, and probably some other languages. The problem I have now is remembering the built-in functions and APIs from these different languages and keeping straight the syntax and language constructs from each. In short, learning new languages is a good idea, but it has a downside. fredjones

Die Mehrsprachigkeit hat also durchaus auch ihre Schattenseiten.

This times we need to know a couple of languages to get the job done but sometimes instead of writing Python in Python Im doing Java in Python and also is getting hard to remember API calls for each language. So for sure polyglot have some downsides. OtengiM

Der Frage, ob neue Sprachen für die JVM eine Bereicherung sind oder eher Verwirrung stiften, geht übrigens Dierk König in seiner Session "Neue Sprachen für die JVM: Bereicherung oder Verwirrung?" auf der W-JAX 2009 nach:

Auf eines war in der Java-Welt immer Verlass: Wenn auch Frameworks, Bibliotheken und Technologien in schier endloser Zahl vorhanden sind, so blieb doch die Sprache als gemeinsamer Nenner. Bevor man diese tröstliche Sicherheit durch den Einsatz neuer Sprachen aufgibt, sind einige Überlegungen anzustellen, die technischer, organisatorischer, strategischer und vor allem menschlicher Natur sind. Dierk König

Was ist Ihre Meinung zum Thema? Bringt die Beherrschung verschiedener Programmiersprachen tatsächlich einen Mehrwert oder bedeutet sie nur einen zusätzlichen Aufwand für den geplagten Entwickler?

(hs)

Anzeige

Kommentare

Gravatar Martin Wildam 19.08.2009
um 11:43 Uhr
Ich habe schon an die 12 Programmiersprachen in meiner Laufbahn durchgemacht, wirklich beherrschen kann die alle nicht. Meiner Erfahrung nach, hat man die höchste Produktivität in der Sprache, die man am meisten verwendet und mit dem Fokus auf eine Sprache kann man dort auch ein wirklicher Experte werden. Man sollte sich daher die Sprache, mit der man vorwiegend entwickeln möchte, sorgfältig auswählen. #zitieren
Gravatar Trepper 19.08.2009
um 13:08 Uhr
Wenn das einzige Werkzeug ein Hammer ist, sieht jedes Problem wie ein Nagel aus. Aber es ist halt besser, die Schraube nicht in die Wand zu schlagen. Deshalb halte ich es für eine Bereicherung, mehr als eine Sprache zu können. Natürlich wird man einen Schwerpunkt haben (müssen), aber wenn man verschiedene Konzepte kennt, kann man daraus das beste auswählen.
Scala ist z. B. so radikal anders als Java, dass man viele neue Anregungen gewinnen kann, die man letztlich auch in Java nutzen kann, wenn auch nicht so elegant.
#zitieren
Gravatar Martin Wildam 19.08.2009
um 13:43 Uhr
Diesen Vergleich höre ich in letzter Zeit öfter - auch in diesem Zusammenhang. Aber der Vergleich hinkt gewaltig. Eine Programmiersprache ist nicht einfach ein Hammer, sondern eher wie ein ganzer Werkzeugkasten, aber auch dieser Vergleich hinkt. - Mit einer Programmiersprache sollte mangrundsätzlich ein möglichst breites Spektrum an Aufgaben erfüllen können. Wenn ich für jeden Mist eine eigene Sprache brauche, dann ist keine wirklich gut. Ein viel besserer Vergleich ist eine richtige Sprache: Wenn ich mich in einem Land je nach Thema und Branche in einer anderen Sprache unterhalten muß, dann wächst die Wahrscheinlichkeit mit Anzahl der Beteiligten, daß immer wieder ein Gesprächspartner mal nicht folgen kann, weil er die gerade verwendete Sprache nicht kann. - Sowas wäre doch echter Quatsch! - Stattdessen gibt es Bestrebungen zur Standardisierung - zB Konzernsprache ist Englisch. - Genauso sollte es eigentlich auch beim Programmieren sein. Wenn alle eine Sprache programmieren würden, dann gäbe es viel weniger Schwierigkeiten (ich sage nur "Interoperabilität" - ja ein Grund, warum REST und Web-Services so in Mode sind).

Zugegeben, es gibt die Programmiersprache (noch) nicht, mit der man alles machen kann, sodaß man nicht auf etwas anderes zurückgreifen muß. Ich halte es aber auch für falsch, jetzt für jeden persönlichen Geschmack eine eigene Programmiersprache zur Verfügung zu stellen.
#zitieren
Gravatar Trepper 19.08.2009
um 14:02 Uhr
Die eine, universelle Sprache wäre sicher schön. Trotzdem werden in der Praxis sehr viele Sprachen parallel verwendet und es werden immer mehr! Es scheint also Vorteile zu gegeben, die die Nachteile der Vielsprachigkeit überwiegen. So ist das übrigens auch bei natürlich Sprachen, selbst wenn man die Mitarbeiter eines internationalen Unternehmens zwingt, nur noch englisch zu reden, wird es trotzdem noch Fachsprachen geben, die nicht jeder versteht. Man könnte sicherlich auch alles mit dem Standardwortschatz ausdrücken, nur wäre das ziemlich umständlich.


Genauso ist es bei den Programmiersprachen. Prinzipiell kann man jedes logische Problem mit jeder Turing-vollständigen Sprache lösen. Trotzdem hat es sich als nützlich erwiesen, wenn eine Sprache ein Konzept möglichst gut und mit prägnanter Syntax unterstützt. Man kann auch in C objektorientiert programmieren, aber da C selbst das nicht unterstützt, ist das umständlich und wenig elegant. Also ist es sinnvoll, eine Sprache mit OOP-Merkmalen einzusetzen. Für eine andere Aufgabe ist es vielleicht sinnvoll, eine Sprache mit Merken funktionaler Programmierung zu verwenden. In wieder einem anderen Fall muss man den Quelltext vielleicht häufig ändern, und will ihn nicht jedes mal explizit kompilieren ...


Um den Sprachdschungel zu lichten, braucht man also eine möglichst vielseitige Sprache. Eine Sprache, die verschiedene Paradigmen wie OOP und funktionale Programmierung unterstützt und die sowohl für kleine Skripte als auch riesige Systeme geeignet ist. Sie heißt: Scala.
#zitieren
Gravatar Martin Wildam 19.08.2009
um 14:48 Uhr
Scala ist sicher ein guter Kandidat, aber aus meiner Sicht ist es noch etwas früh für den Einsatz auf breiter Basis. Was den IDE-Support anbelangt heißt es zB zum NetBeans-Plugin "Plugins for Scala are currently under development" - nur um ein Beispiel zu nennen. Es kommt eben nicht nur auf die Sprache an, sondern auch um das Drumherum. Ich habe auch schon in Occam und C-Linda programmiert, als die aufgekommen (oder sagen wir besser aufgekeimt) sind und ich will mir soetwas nicht mehr antun. Natürlich muß es Pioniere geben, keine Frage - und meinen vollen Respekt für sowas. #zitieren
Gravatar Dexter 19.08.2009
um 14:56 Uhr
Gerade in grösseren Projektteams birgt eine Sprachvielfalt Gefahren. In vielen Teams ist die Entwicklungssprache Java, entsprechend ist die Sprachdurchdringung oft recht hoch. Wird nun erweitert um Derivate wie Scala oder Groovy oder andere Exoten, setzt dies voraus, dass sich alle Projektmitglieder in gleicher Weise in die neuen Sprache einarbeiten. Dies mag in studentischen Projekten ja noch gut realisierbar sein, aber in der Businesswelt sieht die Welt ganz anders aus. Zeit ist Geld und diese Investition will den Budgetverantwortlichen erst einmal verkauft werden. Bei der Vielfalt der existierenden Sprachen kann zudem nicht von jedem verlangt werden, sich in eine beliebige Anzahl von Sprachen einzuarbeiten. Die Wahl der Sprache will somit wohlüberlegt sein. Desweiteren besteht hier ein hohes Risiko im Bereich der Investitions- und Zukunftssicherheit. Bei Java ist diese gegeben, aber wer garantiert, dass nicht eine der neuen Sprachen in ein- oder zwei Jahren ihr Leben als Eintagsfliege verwirkt? #zitieren
Gravatar Martin Wildam 19.08.2009
um 15:03 Uhr
Das stimmt - gut, daß Du diese Unterschiede betonst. Zwischen Forschung und täglicher Praxis ist ein Unterschied. Ohne die Forschung hätten wir wohl keine so komfortable tägliche Praxis. :-) #zitieren
Gravatar RPR 19.08.2009
um 19:56 Uhr
Natürlich ist es ober-geekig (?) alle 3 Monate die Welt neu erfinden zu wollen und es schadet keinem, sich hin und wieder mal ne neue Sprache anzuschauen (ganz abgesehen von denen, die man in der Berufswelt sowieso "plötzlich" können muss).
Ist es nicht sogar sehr viel verbreiteter, dass Software-Entwickler alles was sie nicht kennen, erst mal für schlecht halten? Man denke dabei an alte Basic-, C-, oder Abap-Entwickler ... (zu) viele Java-Leute haben da echt einen Minderwertigkeitkomplex (war ja eh schon immer nur das langsamere C++ für Dumme oder was?).

In der Realität beherrschen die meisten Entwickler nur eine Sprache wirklich gut (manche nicht einmal das wenn man genauer hin sieht). Gut, von den Web-Sachen wie HTML, XML, JavaScript und CSS jetzt mal abgesehen, das gehört halt noch dazu.
Ich hab schon Programme in (überleg) in 10 Sprachen entwickelt; aber mal ehrlich: Mit Java bin ich (derzeit) nun mal 5 mal so schnell und besser als mit C++. Gut: Eine oder zwei Wochen Übung und das Verhältnis bessert sich, keine Frage, aber bis mein Code in C++ oder Python _genauso_ gut ist wie mein Java-Code und ich _genauso_ produktiv bin? Und bis ich all die Libs und Frameworks in der aktuellen Version _voll_ drauf habe? Ich würd mal sagen, da brauchts schon ein paar - oder auch mehr - Monate.
Man lernt ja auch japanisch nicht in 3 Wochen perfekt. Da sprech ich lieber wieder deutsch oder englisch, wenns hart auf hart kommt. Und im Business ist es selten nicht "hart".

Ich bin froh, wenn meine Entwickler-Mitstreiter ihren (seit Jahren trainierten) Java-Code so im Griff haben, dass ich mir nicht (oft) die Haare rauffen muss.
Und noch was: Was wird Java denn vorgeworfen? Dass es Hype-Sprach-Feature X nicht hat? Java hat sich sehr entwickelt - nicht alles perfekt, aber besser als die meiste Konkurrenz. Ein Blick in die Vergangenheit: Was hat man Java nicht schon alles vorgeworfen: "Geschwätzigkeit" z.B., aber der alte Gosling hatte nun mal recht: Lieber überfliege ich kurz 10 Zeilen Java-Code und weiss was los ich, als dass ich 5 Minuten über eine Zeile obscured Perl rätsele. Tja Perl: Du warst nicht "geschwätzig" - sondern halt kaum lesbar... Oder werfen wir einen Blick auf Groovy: Der Hype! Und nun? "Hätte ich besser gar nicht gemacht (wenn ich Scala gakannt hätte)" sagt der Erfinder ... (bin ich da anderer Meinung: Groovy ist ne Skriptsprache; ganz anderer Einsatzzweck). Oder Ruby: Tja, die 3%-Schallmauer ist bei Tiobe in weite Entfernung gerück, tststs, so schnell kanns gehen - und die Firmen werden in 2 Jahren "unwartbaren" Legacy haben. Und es werden die selben flippigen Consultants sein, die das dann auf den nächsten Hype "anheben". ;-)
Wenn halt kein Architekt im Haus ist, tanzen die Consultants auf dem Tisch ;-)

Noch was Neues zu dem Thema:
Eine Firma, die alte Programme in 5 verschiedenen Sprachen hat, hatte nach Consultant-Meinung bis vor 1 Jahr einen Riesen Haufen Legacy. Heute ist sie polyglott!? Bullshit, Freunde!
#zitieren
Gravatar Trepper 20.08.2009
um 05:32 Uhr
Groovy ist zwar eine Skriptsprache, das bedeutet aber nicht, dass man die Aufgaben nicht genauso gut mit Scala lösen könnte. Das ist ja das Schöne (und namensgebende) an Scala, dass die Sprache von kleinen Skripten bis zu großen Anwendungen skaliert. Der Code ist ähnlich kompakt wie der von Groovy und teilweise sogar noch kürzer. Aber Scala bietet noch das ein oder andere Konzept mehr. Wenn man nicht gerade exzessiv Metaprogrammierung machen will, sehe ich neben Scala keine Existenzberechtigung für Groovy. #zitieren
Gravatar Dexter 20.08.2009
um 08:42 Uhr

Martin Wildam:
Ohne die Forschung hätten wir wohl keine so komfortable tägliche Praxis. :-)

Was ja auch niemand in Abrede gestellt hat.
#zitieren
Gravatar Martin Wildam 20.08.2009
um 08:48 Uhr
RPR wrote:
> Ist es nicht sogar sehr viel verbreiteter,
> dass Software-Entwickler alles was sie nicht kennen,
> erst mal für schlecht halten?

Ich würde das so nicht sagen, ich denke besonders in der IT-Welt überschlagen sich die Meldungen um neue "Produkte" und aktuelle Trends. Wenn man da nicht alles kritisch hinterfragt, ob es sich nun wirklich um etwas Neues hält und wo da jetzt wirklich der Nutzen liegt, dann wird man vor lauter Neuigkeiten niemals ein "gesundes" Projekt mit einem "ordentlichen" Lebenszyklus zusammenbringen.

Ich habe einmal gelesen, daß es ca. 1 Jahr dauert, bis man mit einer neuen Programmiersprache wirklich produktiv wird. Als Jungunternehmer oder Klein- und Mittelbetrieb muß man einmal den Atem haben. Und dauerhaft um 3 in der Nacht schlafen gehen ist auch ungesund.

> Eine Firma, die alte Programme in 5 verschiedenen Sprachen
> hat, hatte nach Consultant-Meinung bis vor 1 Jahr einen
> Riesen Haufen Legacy. Heute ist sie polyglott!? Bullshit,
> Freunde!

ROTFL! - Auf der anderen Seite gibt es auch die Sorte Consultants, die immer auf die "bombensichere" Sache setzen - so nach dem Motto, nehmen Sie Microsoft und SAP - alles nehmen das, also kann man da doch nicht falsch liegen... - aber das ist jetzt schon ein bißchen OT.

Trepper wrote:
> sehe ich neben Scala keine Existenzberechtigung für Groovy.

Das habe ich auch schon von anderen Seiten gehört - zum Glück habe ich keine Zeit investiert, das auch noch zu lernen.
#zitieren
Gravatar Dierk König 20.08.2009
um 09:06 Uhr
Vielen Dank für die Kommentare! Ich werde einiges davon als "typische Ansichten" mit in den W-Jax Talk aufnehmen. Für kontroverse Diskussionen ist auf jeden Fall gesorgt!
Aber wer weiss, vielleicht sieht der eine oder andere nach dem Talk doch noch ein paar neue Aspekte...
bis dann auf der W-Jax!
#zitieren
Gravatar Martin Wildam 20.08.2009
um 16:03 Uhr
Hey, gerade gefunden: http://fandev.org/
Und das kriegt eine Integration in NetBeans:
http://fanide.colar.net/home
und ist neuer als Scala

Wer "noch" mit Scala arbeitet - gebt Euch das hier:
http://www.ajaxonomy.com/2008/java/not-a-fan-of-scala-an-evolutionary-approach

ROTFL! - Ich glaube, ich klinke mich langsam echt aus den Sprachdiskussionen aus, das ist ja schon echt lächerlich. Ich schau mir das in frühestens fünf Jahren wieder an - Die Sprache wird aber schon wegen der Namensgebung keinen Erfolg haben, finde ich doch in Google ganz viel andere Sachen von Ventilatoren bis hin zu diversen Fan-Pages. Dabei wollte ich nur wissen ob es Job-Angebote für Fan-Entwickler gibt. ROTFL!
#zitieren
Gravatar RPR 20.08.2009
um 19:56 Uhr
@Martin Wildam: Super, noch einen drauf gesetzt :-) Fan kannte ich echt noch nicht, schau ich mir gleich mal an.
Vielen Dank für die guten, interessanten und lustigen Kommentare!! :-)
#zitieren
Gravatar Martin Wildam 21.08.2009
um 00:55 Uhr
Wollt ihr noch mehr neue Sprachen, nehmt das http://en.wikipedia.org/wiki/UniPaaS (ganz frisch aus 2008, BTW: Das ist der Nachfolger von Magic II - und damit habe ich in den späten 80ern gutes Geld verdient - Dank der Effizienz konnte ich das nebenher mit der Schule machen). Oder hier: http://en.wikipedia.org/wiki/PCASTL - Bei der Namensgebung würden Marketing-Leute so ihre Freude haben (ich hab das zuerst wie "PC-Kastl" gelesen).

2009 scheint ein schwacher Jahrgang zu sein - erst zwei neue Programmiersprachen heuer http://en.wikipedia.org/wiki/Mythryl (wobei sich Wikipedia hier anscheinend nicht sicher ist, ob es nicht doch schon 2008 aufgetaucht ist - das klingt so mystisch, ich glaube da brauch ich wahrscheinlich gar keine IDE, sondern bloß eine Glaskugel und ich denk mir das Programm einfach).

Tja und jetzt ratet mal, wie der Typ heißt, der heuer Dylan.NET erfunden hat - http://borgdylan.web.officelive.com/dylandotnet.aspx

Ich habe einen Vorschlag: Es wird ja immer das Neujahrsbaby gefeiert - was haltet ihr von einer Feier für die nächste Neujahrsprogrammiersprache?

BTW: Auf http://www.99-bottles-of-beer.net/ sind derzeit 1290 (!!!) Programmiersprachen verzeichnet. Wisst ihr, was das heißt? Im Durchschnitt über 19 neue Programmiersprachen pro Jahr (habe jetzt ab 1943 gerechnet)!!! - In Worten: Neunzehn neue pro Jahr! - Leute, das ist ein klarer Fall von Ineffizienz, wenn die Energie in einem Jahr gebündelt werden würde und statt 19 bloß eine Sprache entstehen würde, wäre das Ergebnis vielleicht besser. Ich mag mir das außerdem gar nicht vorstellen, was das noch für Auswirkungen haben müßte: Sagen wir mal Plugins für 3 gängige IDEs pro Sprache - macht schon 3600 Plugins! Ha, so brauchen wir uns in der IT keine Sorgen machen, daß uns die Arbeit ausgeht.
#zitieren
Gravatar Lui 23.08.2009
um 20:10 Uhr
Man sollte sich an den natürlichen Sprachen orientieren.
Wozu gibt es denn eine Weltsprache - Englisch?
Wozu gibt es Amtssprachen, wie Französisch in Afrika usw.?
Ganz einfach:
Weil eine gemeinsame Sprache es ermöglicht, komplexe Dinge so auszudrücken, dass sie jeder überall verstehen kann.
Von daher: Weniger ist mehr.
Keine neues Sprachen, sondern lieber die Sprache Java um die fehlenden Ausdrucksformen erweitern!
#zitieren
Gravatar Martin Wildam 23.08.2009
um 23:14 Uhr
Mit den Ausdrucksformen ist es halt auch so, daß alle sie dann auch verstehen sollten - sonst nützt es ja nichts. Was nützt eine gemeinsame Sprache, wenn sie so komplex ist, daß nur wenige sie wirklich verstehen und benutzen können. Daß Englisch eine Weltsprache geworden ist, liegt sicher auch daran, daß sie relativ einfach ist. Natürlich braucht man genügend Ausdrucksmöglichkeiten, um auch alles gut ausdrücken zu können, ohne daß Mißverständnisse entstehen. #zitieren

Folgende Links könnten Sie auch interessieren

zurück zum Seitenanfang