Закрытие BGGA как простое решение для java?

#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, каждый из которых содержит другой набор банок и «дополнений».

Я бы сказал, что это начало скользкой грязи, от которой я предпочел бы держаться подальше.