Was ist das Problem mit den XML-Literalen von Scala?


9

In diesem Beitrag schreibt Martin (der Haupthoncho der Sprache):

[XML-Literale] Schien damals eine großartige Idee zu sein, jetzt ragt sie hervor wie ein schmerzender Daumen. Ich glaube, dass wir mit dem neuen String-Interpolationsschema die gesamte XML-Verarbeitung in die Bibliotheken integrieren können, was ein großer Gewinn sein dürfte.

Da ich mich selbst für Sprachdesign interessiere, frage ich mich: Warum schreibt er, dass es ein Fehler war, XML-Literale in die Sprache zu integrieren? Was ist die Kontroverse bezüglich dieser Funktion?


2
Vielleicht bezog er sich (in dem Beitrag, den Sie verlinkt haben) darauf, einen einfachen und konsistenten Kern zu haben und spezialisiertere Funktionen in Bibliotheken zu verschieben
Zavior

Antworten:


11

Ich glaube, Martin erklärt die Argumentation in seinem Beitrag sehr gut:

Ich habe immer versucht, Scala zu einer sehr mächtigen, aber gleichzeitig sehr einfachen Sprache zu machen, indem ich versucht habe, Vereinigungen früher unterschiedlicher Konzepte zu finden.

Das Problem, mit dem viele Sprachen konfrontiert sind, wenn sie immer beliebter werden, besteht darin, dass Funktionen von der Community gewünscht und zusätzlich zur Sprache hinzugefügt werden. Ein Worst-Case-Beispiel dafür (zumindest in meinem Buch) ist C ++, wo Sie so ziemlich alles haben, aber überhaupt nicht auf eine schöne einheitliche Weise (siehe zum Beispiel diese Frage, die sich daraus ergibt).

Die Schwierigkeit, wenn eine Sprache aufgrund von Anforderungen / Bedürfnissen der Community wächst, besteht darin, die neuen Funktionen so hinzuzufügen, dass sie mit dem Kern der Sprache übereinstimmen. In dieser Hinsicht ist die Unterstützung von XML-Literalen durch Scala ein wunder Daumen, weil dies eine einzigartige Sache ist. Es ist nicht wirklich Teil eines schönen einheitlichen Kerns, wurde jedoch als einmalige Lösung hinzugefügt, während die String-Interpolation ein Kernkonzept ist, das leistungsfähig genug ist, um die einmalige Funktion zu ersetzen.


IMHO, in einer idealen Welt sollte eine Sprache nur die Kernfunktionen enthalten, die es ihrer Entwicklergemeinschaft ermöglichen, sie zu erweitern. Erweiterungen sollten nicht Teil der Kernsprache sein, sondern als Bibliotheken bereitgestellt werden. Daher können Sprachrevisionen möglicherweise neue Standardbibliotheken, aber keine neuen Sprachfunktionen angeben. Natürlich ist es keine triviale Aufgabe, eine solche Kernsprache zu definieren, die mächtig genug ist, aber ich denke, einige Sprachen (z. B. Lisp) kamen dem ziemlich nahe.
Giorgio

Sprechen Sie über ein paar weinerliche Programmierer. XMl-Literale in Scala sind äußerst nützlich. Die JSON-Fans denken wahrscheinlich, dass sie veraltet sind, vergessen jedoch, dass XML in anderen Technologien wie SOAP verwendet wird.
nervig_squid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.