Подтвердить что ты не робот

Каковы существенные сходства и различия между Scala и Gosu (связанные с Java)?

Я изучаю Scala прямо сейчас и делаю это в течение последнего месяца. Сегодня (через Twitter) Я наткнулся на другой язык, который кажется очень похожим, Gosu.

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

4b9b3361

Ответ 1

Да, наша таблица сравнения языков в значительной степени шутка. Особенно в строке "Не Lisp".:)

Как отметил Стивен С из моего первоначального поста, в общем, Госу проще, чем Scala, а Scala имеет более сложные функции, чем Gosu.

Scala и Gosu имеют много общего:

  • Оба являются статически типизированными, но используют вывод типа, чтобы уменьшить раздувание кода

  • Оба поддерживающих закрытия и более функциональное программирование

  • Оба обеспечивают дополнительную функциональность поверх существующих java-библиотек, особенно вокруг коллекций.

И вот некоторые отличия:

  • Gosu не поддерживает общую перегрузку оператора

  • Gosu не предоставляет синтаксическую поддержку Monads

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

  • Gosu не поддерживает такие вещи, как Scala неявный '_' аргумент в замыканиях: он более явный в таких случаях.

  • Расширения Gosu для основных библиотек Java менее драматичны. Мы применяем дополнительные методы к существующим типам Java, а не добавляем новую иерархию типов.

Существует одна большая разница между Gosu и Scala со стороны функциональности: Gosu имеет то, что мы называем Open Type System. Это позволяет людям подключать произвольные ресурсы к компилятору Gosu. В качестве примера: Gosu (с 0.8.5) поддерживает файлы XSD и WSDL в качестве граждан первого класса:

http://lazygosu.org/xml.html

Система открытого типа на функциональной стороне представляет собой реальный дифференциатор между Gosu и другими статически типизированными языками JVM.

Все, что сказано, неудачная реальность прямо сейчас заключается в том, что Scala гораздо более зрелый, чем Госу, в некоторых областях, особенно в инструментах. Существует большая поддержка IDE для Scala во всех основных средах IDE. У нас есть плагин Eclipse для Gosu, но он все еще находится в зачаточном состоянии. Точно так же наш плагин IntelliJ очень новый.

Scala имеет очень полную веб-фреймворк Lift. Я не большой поклонник их подхода, но он полон, и многим нравится это.

В Gosu также есть веб-фреймворк:

http://ronin-web.org

Я люблю подход Ронина, но тогда я бы, не так ли? Ronin строится парнями, которые хорошо знают Gosu, и, таким образом, он использует много функциональности на этом языке.

Надеюсь, что это поможет. Реально, если бы я начал проект сегодня, я бы, вероятно, пошел с Scala только из-за поддержки инструмента. Однако, если вы хотите ударить в другом направлении, особенно если ваш проект включает в себя веб-службы или обработку XSD, Gosu может быть полезным языком для использования. В конечном итоге я надеюсь, что Gosu станет прагматичным выбором для разработчиков JVM, но покажет время.

Ответ 2

Таблица сравнения Gosu несколько несправедлива по отношению к Scala: переход от Java прост (вы надеваете 't имеют, чтобы использовать все фантазии Scala в начале), а для reified generics Scala - не идеальное, но работоспособное решение под названием Manifests. Конечно, категории, где Scala светится (отсутствует совпадение, более высокие типы)...

Ответ 3

В этот поток в списке gosu-lang, Карсон Гросс резюмировал это следующим образом:

Короткий ответ заключается в том, что Gosu проще, чем Scala (более простые генерики, ограниченная перегрузка операторов), но более жестко статически введенный, чем, скажем, Groovy.

Там также эта таблица, но это один из тех сравнений "наш продукт лучше, чем ваш продукт"; то есть внутренне предвзятым.