Каковы основные сходства и различия между Scala и Gosu (связанные с Java)? - PullRequest
19 голосов
/ 12 февраля 2011

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

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

Ответы [ 3 ]

27 голосов
/ 12 февраля 2011

Да, наша таблица сравнения языков во многом шутка.Особенно строка «Не Лисп».:)

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

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

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

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

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

ИВот некоторые различия:

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

  • Gosu не обеспечивает синтаксическую поддержку монад

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

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

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

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

http://lazygosu.org/xml.html

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

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

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

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

http://ronin -web.org

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

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

16 голосов
/ 12 февраля 2011

Сравнительная таблица Gosu несколько несправедлива по отношению к Scala: переход с Java является простым (у вас нет , чтобы использовать все модные Scala в начале), а для обобщенных обобщений у Scala есть не идеальное, но работоспособное решение под названием Манифесты. Конечно, категории, в которых блески Scala отсутствуют (сопоставление с образцом, типы с более высоким родом ...)

2 голосов
/ 12 февраля 2011

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

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

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

...