Скала против Groovy против Clojure [закрыто]

Это код, который я использую:

private static byte[] xor(final byte[] input, final byte[] secret) {
    final byte[] output = new byte[input.length];
    if (secret.length == 0) {
        throw new IllegalArgumentException("empty security key");
    }
    int spos = 0;
    for (int pos = 0; pos < input.length; ++pos) {
        output[pos] = (byte) (input[pos] ^ secret[spos]);
        ++spos;
        if (spos >= secret.length) {
            spos = 0;
        }
    }
    return output;
}
676
задан James Fassett 22 August 2009 в 00:08
поделиться

3 ответа

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

Clojure - диалект Lisp с несколькими расширенными функциями, такими как Software Transactional Память . Если вам нравится Lisp и вы хотите использовать что-то подобное в JVM, Clojure для вас. Возможно, это самый функциональный язык , работающий на JVM, и, безусловно, самый известный. Кроме того, он уделяет больше внимания неизменяемости , чем другие диалекты Lisp, что делает его ближе к сердцу энтузиастов функционального языка.

Scala является полностью объектно-ориентированным языком, в большей степени, чем Java. , с одной из самых продвинутых систем типов , доступных на языках, не связанных с исследованиями, и, конечно же, самой продвинутой системой типов на JVM. Он также сочетает в себе многие концепции и особенности функциональных языков без ущерба для объектной ориентации, но его компромисс в отношении функциональных языковых характеристик отпугнул некоторых энтузиастов последнего.

Groovy пользуется хорошей популярностью и является популярным веб-фреймворком в Grails. Он также поддерживает систему сборки Gradle, которая становится популярной альтернативой Maven. Я лично считаю, что это язык с ограниченной полезностью, особенно когда Jython и JRuby начинают вторгаться в область JVM по сравнению с другими.

Clojure, даже если не учитывать некоторые очень интересные функции, имеет сильную привлекательность, просто будучи Диалект Лиспа на JVM. Конечно, это может ограничить его популярность, но я ожидаю, что вокруг него еще долгое время будет лояльное сообщество.

Scala может напрямую конкурировать с Java и дать ей возможность заработать почти во всех аспектах. Конечно, в настоящее время он не может конкурировать по популярности, и отсутствие сильной корпоративной поддержки может помешать его принятию в корпоративной среде. Кроме того, это гораздо более динамичный язык, чем Java, в смысле того, как развивается язык. С точки зрения языка это хорошо. С точки зрения пользователей, которые планируют написать на нем тысячи строк кода, это не так.

В заключение скажу, что я хорошо знаком со Scala и знаком только с двумя другими.

873
ответ дан 22 November 2019 в 21:42
поделиться

Их можно различить в зависимости от того, откуда они или на каких разработчиков они ориентированы в основном.

Groovy немного похож на версию Java для написания сценариев. Java-программисты давно чувствуют себя как дома, когда создают гибкие приложения на основе больших архитектур. Groovy on Grails, как следует из названия, похож на фреймворк Rails. Для людей, которые не хотят постоянно беспокоиться о многословности Java.

Scala - объектно-ориентированный и функциональный язык программирования, и программисты Ruby или Python могут почувствовать себя более близкими к этому языку. В нем используется довольно много общих хороших идей, которые можно найти в этих языках программирования.

Clojure - диалект языка программирования Lisp, поэтому разработчики Lisp, Scheme или Haskell могут чувствовать себя как дома, работая с этим языком.

30
ответ дан 22 November 2019 в 21:42
поделиться

Очевидно, синтаксис совершенно другой (Groovy ближе всего к Java), но я полагаю, что это не то, о чем вы просите.

Если вас интересует используя их для написания сценария Java-приложения, Scala, вероятно, не лучший выбор, поскольку нет простого способа оценить его из Java,

4
ответ дан 22 November 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: