Каковы основные отличия между Scala и Groovy? [закрытый]

В стандартном SQL вы можете сделать:

select (case when extract(day from (datecol + interval '1' day)) = 1
             then 1 else 0
        end)

То есть добавить один день и проверить день месяца.

Функции даты, как известно, специфичны для конкретной базы данных, поэтому точная логика, вероятно, зависит от вашей базы данных.

РЕДАКТИРОВАТЬ:

Я понимаю, что вопрос не о столбце даты, а о текущей дате. Вы можете справиться с этим как:

select (case when extract(day from (current_date + interval '1' day)) = 1
             then 1 else 0
        end)
127
задан Leif 2 April 2009 в 22:41
поделиться

3 ответа

Они - и объектно-ориентированные языки для JVM, которые имеют лямбды и закрытия и взаимодействуют с Java. Кроме этого, они чрезвычайно отличаются.

Groovy является "динамическим" языком в не только смысл, что это с динамическим контролем типов, но и что он поддерживает динамическое метапрограммирование.

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

Groovy синтаксически под влиянием Java, но семантически влиял больше языками как Ruby.

Scala синтаксически и под влиянием Ruby и под влиянием Java. На это семантически влияют больше Java, SML, Haskell и очень неясный язык OO, названный gBeta.

Groovy имеет "случайный", несколько диспетчеризируют из-за способа, которым он обрабатывает перегрузку Java.

Scala является единственной отправкой только, но имеет вдохновленное сопоставление с образцом SML для контакта с некоторыми из тех же видов проблем, которые несколько диспетчеризируют, предназначен для обработки. Однако то, куда несколько диспетчеризируют, может только диспетчеризировать на типе выполнения, сопоставление с образцом Scala может диспетчеризировать на типах выполнения, значениях или обоих. Сопоставление с образцом также включает синтаксически приятную привязку переменной. Трудно перенапрячься, как приятный одна только эта единственная функция делает программирование в Scala.

И Scala и Groovy поддерживают форму множественного наследования с mixins (хотя Scala называет их чертами).

Scala поддерживает и частичное функциональное приложение и приправляющий карри на уровне языка, Groovy имеет неловкий метод "карри" для того, чтобы сделать частичное функциональное приложение.

Scala действительно направляет оптимизацию хвостовой рекурсии. Я не полагаю, что Groovy делает. Это важно в функциональном программировании, но менее важно в императивном программировании.

И Scala и Groovy нетерпеливо оценены по умолчанию. Однако Scala поддерживает параметры вызова по имени. Groovy не делает - вызов по имени должен быть эмулирован с закрытиями.

Scala имеет "для пониманий", обобщения пониманий списка, найденных на других языках (технически, они - понимания монады плюс немного - где-нибудь между Haskell, делают и C# LINQ).

У Scala нет понятия "статических" полей, внутренних классов, методов, и т.д. - это использует одноэлементные объекты вместо этого. Groovy использует статическое понятие.

Scala не имеет созданным в выборе арифметических операторов вполне способом, которым делает Groovy. В Scala можно назвать методы очень гибко.

Groovy имеет elvis оператор для контакта с пустым указателем. Программисты Scala предпочитают использовать типы Опции для использования пустого указателя, но легко записать elvis оператор в Scala, если Вы хотите.

Наконец, существует ложь, существует проклятая ложь, и затем существуют сравнительные тесты. Язык программирования сравнивает игровых разрядов Scala, как являющийся между существенно быстрее, чем Groovy (в пределах от дважды к в 93 раза более быстрому) при сохранении примерно того же исходного размера. сравнительные тесты.

Я уверен, что существуют многие, много различий, которые я не покрыл. Но надо надеяться это дает Вам суть.

Существует ли конкуренция между ними? Да, конечно, но не так, как Вы могли бы думать. Реальной конкуренцией Groovy является JRuby и Jython.

Кто собирается победить? Мой магический кристалл столь же взламывается как чей-либо еще.

228
ответ дан 24 November 2019 в 00:44
поделиться

У Scala есть Агенты, которые делают параллелизм намного легче реализовать. И Черты, которые дают истинное, безопасное с точки зрения типов множественное наследование.

11
ответ дан 24 November 2019 в 00:44
поделиться

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

Scala реализует Списки немного по-другому; в Groovy в значительной степени все - экземпляр java.util. Список, тогда как Scala использует оба Списка и примитивные массивы. Groovy имеет (я думаю), лучше представляют интерполяцию в виде строки.

Scala быстрее, кажется, но люди Groovy действительно требуют у производительности эти 2,0 выпуска. 1.6 дал огромный прыжок в скорости по 1,5 рядам.

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

7
ответ дан 24 November 2019 в 00:44
поделиться
Другие вопросы по тегам:

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