#java #closures #bgga
Вопрос:
Вчера @headius / Чарльз Наттер выдвинул очень интересную идею в твиттере:
@danny_l После того, как сделал ту же ошибку; Я не имею в виду раздвоенную Java, так же как Groovy-это вилка. Я хочу «в основном Java» с закрытиями.
или ответ @danny_l / Дэнни Лагроу:
@headius или может ли прототип BGGA быть «прикручен» к любой будущей версии Java? Это может быть полезно
Это действительно то, что я тоже хотел бы видеть. Разве у нас не может быть какого-нибудь препроцессора байт-кода, чтобы прототип BGGA работал на любой современной версии Java? Я имею в виду, что scala, Groovy и JRuby имеют замыкания и выдают действительный байт-код!
Я бы даже хотел помочь и приложить к этому усилия. Хотя я действительно не знаю, с чего начать.
(выше приведена выдержка из поста в блоге, который я написал на эту тему)
Что другие думают об этой идее?
Ответ №1:
Слово «препроцессор» возвращает меня к C , и это пугает меня.
Существует странная дихотомия: я отмечаю разнообразие языков в JVM, но я думаю, что «Мама-медведица» (она же Java) не должна становиться такой фрагментированной. Нам нужен прочный фундамент.
Тем не менее, я выступаю за закрытие BGGA. Я также думаю, что язык должен предоставлять все свои возможности. Если в команде есть люди, которые не могут справиться с закрытиями (или универсальными, или потоковыми (!!)), то эта команда должна контролировать себя с помощью обзоров кода и статического анализа.
Возможно, одна из идей состояла бы в том, чтобы переключиться во время компиляции на «запрещение» дополнительных функций, подобных этой, но даже это кажется немного суровым.
Я думаю, что идея «прикрепления» действительно пытается решить проблему раздробленного лидерства в пространстве Java. Эта проблема представляется скорее политической и дипломатической, чем технической.
Ответ №2:
Проблема с созданием этих вещей заключается в том, что вы создаете фрагментированный язык.
Язык java-это наименьшая часть того, что делает java, java. Библиотеки и культура составляют большую часть. Включение замыканий и универсальных модулей означает, что либо они не могут использоваться в основных библиотеках, либо для основных библиотек потребуется, чтобы они присутствовали в используемом SDK. Это в лучшем случае создало бы фрагментацию внутри библиотек (поскольку некоторые разработчики работают до мозга костей, а некоторые требуют подключения), а в худшем случае означало бы, что у нас начнут появляться «дистрибутивы» java в поместье java, каждый из которых содержит другой набор банок и «дополнений».
Я бы сказал, что это начало скользкой грязи, от которой я предпочел бы держаться подальше.