В чем проблема с XML-литералами Scala?


9

В этом посте Мартин (глава языка) пишет:

[Литералы XML] В то время это выглядело великолепной идеей, а теперь она торчит как больной большой палец. Я полагаю, что с новой схемой интерполяции строк мы сможем поместить всю обработку XML в библиотеки, что должно стать большой победой.

Я сам интересуюсь языковым дизайном и задаюсь вопросом: почему он пишет, что вводить XML-литералы в язык было ошибкой? Какое противоречие в отношении этой функции?


2
Возможно, он имел в виду (в сообщении, на которое вы ссылались) простое и последовательное ядро ​​и перенесение более специализированных функций в библиотеки
Zavior

Ответы:


11

Я полагаю, что Мартин очень хорошо объясняет аргументацию в своем посте:

Я всегда пытался сделать Scala очень мощным, но в то же время красивым языком, пытаясь найти объединение ранее несопоставимых понятий.

Проблема, с которой сталкиваются многие языки, когда они становятся все более и более популярными, заключается в том, что возможности разрабатываются сообществом и добавляются поверх языка. Наихудшим примером этого (по крайней мере, в моей книге) является C ++, где у вас есть почти все, но не совсем красивым унифицированным образом (см., Например, этот вопрос, вытекающий из этого).

Сложность, когда язык растет из-за требований / потребностей сообщества, заключается в добавлении новых функций таким образом, чтобы это соответствовало ядру языка. И в этом отношении поддержка XML-литералов в Scala очень больна, потому что это уникальная вещь. Это на самом деле не является частью красивого унифицированного ядра, но было добавлено как разовое решение, тогда как интерполяция строк - это достаточно мощная концепция ядра, чтобы заменить разовую функцию.


ИМХО, в идеальном мире язык должен содержать только основные функции, которые позволяют его сообществу разработчиков расширять его. Расширения не должны быть частью основного языка, но должны предоставляться в виде библиотек. Таким образом, в конечном итоге языковые версии могут указывать новые стандартные библиотеки, но не иметь новых языковых возможностей. Конечно, определение такого основного языка, который является достаточно мощным, не является тривиальной задачей, но я думаю, что некоторые языки (например, Lisp) подошли довольно близко к этому.
Джорджио

Поговорим о кучке плаксивых программистов. Литералы XMl в Scala чрезвычайно полезны. Фанаты JSON, вероятно, думают, что они устарели, но забывают, что XML используется в других технологиях, таких как SOAP.
annoying_squid
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.