Was ist eine moderne Programmiersprache?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Das ist recht subjektiv. Das Entstehungsjahr ist der unwichtigste Aspekt - so ist z.B. Python eine relativ alte Sprache aus den 1980ern, die aber momentan enorm populär ist und sich flott weiterentwickelt. Es gibt genauso alte Sprachen, die kaum mehr verwendet werden - z.B. weil sie sich den aktuellen Anforderungen nicht anpassten, weil es nicht genug Interesse gab, der Hersteller scheiterte und niemand weitermachte etc.

Was wären andere Kriterien für “modern”?

  • Abstraktionsgrad. Oft wird es als “modern” empfunden, wenn man sich nicht mit Details des Prozessors oder mit hardwarenahen Begriffen wie “Adresse” oder “Wortbreite” herumschlagen muss. Stattdessen arbeitet man etwa mit “Objekten”. In funktionalen Sprachen kann man wiederum Funktionen höherer Ordnung schreiben, d.h. Funktionen wie Daten verwenden. 
  • Man könnte ausgefeilte Typsysteme als modern betrachten - die allerersten Sprachen hatten solche gar nicht oder nur in sehr primitiver Form.
  • Dann gibt es gewisse, sagen wir, Modetrends. Das ist nicht böse gemeint, denn diese “Moden” sind einerseits das Resultat von Forschung, andererseits von der wandelnden Umgebung, in der Software entwickelt wird: die wird größer, komplexer und läuft auf immer schnellerer Hardware mit mehr Parallelisierung und in der Cloud. In den 1980ern bis 1990ern war etwa OOP eine ganz heiße neue Sache, die man auf bestehende Sprachen draufgesteckt hat (mitunter auch dort, wo es nicht passte). Aspektorientierte Programmierung war auch so ein Trend, der seine Spuren hinterlassen hat. In den letzten 1-2 Jahrzehnten wurden wiederum Elemente der (eigentlich alten) funktionalen Programmierung populär. Die erlaubt oft recht elegante und zuverlässige Lösungen, die mit imperativer bzw. objektorientierter Programmierung eher umständlich sind. Ähnliches gilt für das Konzept der Exceptions oder das Pattern Matching (das zwar vor allem in funktionalen Sprachen entstanden ist, aber an sich nicht zwingend funktional ist).
  • Viele der obigen Dinge kann man als “Syntaxzucker” sehen. D.h. sie verkürzen Programme und machen sie ausdrucksstärker: ich kann mehr in weniger Zeilen schreiben, wobei es aber trotzdem lesbar bleibt und vielleicht sogar robuster ist. Das wird bei neuen Sprachen gern betont, relativiert sich in der Praxis aber oft.

Welche Sprachen sind also modern? Puh. C ist eigentlich nach den obigen Kriterien gar nicht “modern”, aber es ist trotzdem eine Sprache, die für ihren Anwendungsbereich bis heute ausgezeichnet funktioniert und sehr populär ist. Python? Alt, aber entwickelt sich ständig weiter. Ähnliches gilt für Java und auch JavaScript. Go? Recht neu, aber eine merkwürdige Mischung aus alt- und neumodisch. Modern war daran u.a. die Idee, ein komplettes Toolset für den Build und Projektstruktur mitzubringen statt nur den nackten Compiler. Kotlin? Ist derzeit auch “modern”, aber bringt nicht viel Neues mit. Haskell? In vieler Hinsicht supermodern, aber wer verwendet’s? PHP? Ursprünglich ein sagenhafter Pfusch von einer planlos zusammengebastelten Sprache, mittlerweile einigermaßen “modern”…


KarlRanseierIII  30.06.2021, 13:18

Schöne umfangreiche Antwort.

IMHO sollte eine moderne Sprache syntaktischen Zucker mitbringen, um verschiedene Paradigmen leicht nutzen zu können.

Hohe Ausdrucksstärke ist vermutlich auch unabdingbar.

Wobei modern nicht unbedingt 'en vogue' sein muß. Es gibt halt auch 'Hipsterkinder' bei den Sprachen, die genauso schnell gehen, wie sie kommen, weil man merkt, so wirklich gut lassen sich darin Dinge nicht umsetzen.

0

Es gibt immer neue Konzepte, welche direkten Eingang in Programmiersprachen finden (und nicht nur Teil eines Framework sind).

Beispiele wären die Unterstützung von asynchroner Programmierung durch direkte Sprachfeatures (z.B. async/await Pattern) oder dynamische Typisierung.

Programmiersprachen, die sich diesbezüglich weiterentwickeln und auf "technisch aktuellem Stand" bleiben, würde ich mal als "moderne Sprache" bezeichnen.

Das bedeutet nicht, dass man mit anderen Programmiersprachen nicht dieselben Dinge tun kann - alle bekannteren Programmiersprachen sind touring-vollständig und somit gleich mächtig. Aber eine Sprache, die moderne Konzepte direkt unterstützt, macht Dinge eben einfacher als andere.

Ich programmiere in verschiedenen Sprachen.

Aber manche Aufgaben kann ich schnell in andere Notation beschreiben.

So ist auch C++ aus C mittels C-Front entstanden.

Ich entwickle neue Notation und mache dazu Front-End-Compiler - für diese Notation mittels Yacc und Lex. - So modernisiere ich die andere Sprachen :-)

Dann bin ich in diesem Gebiet ganz "modern" :-)

Ausgabe ist dann in C, C++, Java usw - je nach dem, was leichter ist.

Man kann es auch ohne Front-End machen siehe zB

"Advanced C++" vom James O. Coplien

Aber das was "modern" ist leider nicht für die Ewigkeit bestimmt :-)

"Modernes C++", also C++ ab Version 2011, trägt "modern" sogar schon im Namen.

Das ist mehr oder weniger die offizielle Bezeichnung für C++, seit dem die Sprache ein richtiges Redesign erhalten hat, und fast nichts mehr mit dem alten C++ zu tun hat.

Deshalb würde ich ein aktuelles C++ mindestens zu den Top 5 der modernen Sprachen zählen.

Weitere wären Go, Rust, Swift, TypeScript, C# und vielleicht noch eine Hand voll weitere, die alle komplett unterschiedliche Ansätze verfolgen und Einsatzgebiete haben.

Die Schnittmengen sind erstaunlich klein und in jeder dieser Sprachen werden bestimmte Konzepte zu 99% komplett anders umgesetzt, als in den anderen.

Man kann also nicht einfach mal so von Sprache X auf Sprache Y umsteigen, und erwarten, qualitativ hochwertigen Code schreiben zu können. Selbst Profis brauchen hier Monate an Einarbeitungszeit.

Mir persönlich gefällt - wie gesagt - modernes C++ am besten, da es von den anderen oben genannten Sprachen, die mit Abstand meisten Sprachfeatures hat, und mir persönlich damit auch am meisten Möglichkeiten bietet.

Viele andere werden C# wählen, was ebenfalls eine tolle Sprache ist, die zwar auch einen sehr großen Sprachumfang hat (der nicht an C++ ran kommt), aber eine noch größere "Standardbibliothek" bietet.

Die anderen Sprachen, vor allem Go und Rust, sind mir persönlich noch zu unausgegoren, zu inkonsistent, und brechen ständig Abwärtskompatibilität, weshalb ich sie die nächsten 10 Jahre noch nicht produktiv einsetzen würde, vorausgesetzt, man will nicht alle X Jahre einen Rewrite seiner Projekte vornehmen.

Ansonsten lohnt es sich immer mal, über den eigenen Tellerrand zu schauen, und auch alt-eingesessene Sprachen wie Python, Ruby, oder sogar Perl, bringen in neueren Versionen erstaunlich interessante Features mit.

Aber auch alte Sprachen wie Haskell, Lisp, usw. lohnen sich, weil man damit mal richtig lernt, was funktionale Programmierung ist. Das geht zwar auch mit Python oder C++, aber eben nicht so elegant.

Und Sprachen wie Erlang, in denen alles ein Prozess ist, oder Sprachen die auf aspektorientierte bzw. subjektorientierte Programmierung setzen, öffnen einem auch erst mal die Augen dafür, was sonst noch so alles möglich ist.

Naja, aber wenn man einen guten Mix moderner Sprachfeatures haben will, sind C# und C++ vermutlich sehr lohnenswerte Lernziele.

Viel Spaß! :)

Woher ich das weiß:Berufserfahrung

Das sind die Sprachen, die neue Technologien nutzen oder einfach sehr dynamisch sind.

Ich würde behaupten, Dart, Python, C# usw. sind momentan modern. Python zumindest insofern, dass viele damit anfangen.

C# wird über .NET 6.0 nochmals modernisiert.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting