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



может кто-нибудь объяснить основные различия между Scala, Groovy и Clojure. Я знаю, что каждый из этих компилируется в JVM, но я хотел бы простое сравнение между ними.

781   6  

6 ответов:

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

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

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

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

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

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

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

Скала

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

многое из этого было основано на предыдущей работе Мартина Одерского с пицца язык. Интеграция OO/FP выходит далеко за рамки простых замыканий и привела к тому, что язык был описан как постфункциональный.

несмотря на это, он ближе к Java во многих отношениях. В основном из-за комбинации поддержки OO и статической типизации, но также из-за явной цели в языковом дизайне, что он должен очень тесно интегрироваться с Java.

в Groovy

Groovy явно решает две из самых больших критических замечаний Java на

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

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

Groovy имеет самую сильную коммерчески затыловку 3 языки, в основном через springsource.

Clojure

Clojure-это функциональный язык в семействе LISP, он также динамически типизирован.

такие функции, как поддержка STM, дают ему лучшую поддержку параллелизма из коробки, в то время как Scala требует сторонней библиотеки, такой как Акка дублировать это.

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

Я тоже должен раскройте, что я больше всего знаком с Scala:)

У меня никогда не было времени играть с clojure. Но для scala vs groovy, это слова от Джеймса Стрейкена-Groovy creator

" хотя мой совет, хотя для долгосрочной замены javac является Scala. Я очень впечатлен этим! Я могу честно сказать, если бы кто-то показал мне программирование в Scala книга Мартина Одерского, Лекса Спуна и Билла Веннерс еще в 2003 году я бы, наверное, никогда не создал Groovy."

вы можете прочитать всю новость здесь

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

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

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

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

Я читаю книгу прагматичных программистов "Groovy Recipes: Greasing The wheels of Java" Скотта Дэвиса, Copyright 2008 и напечатанную в апреле того же года.

Это немного устарело, но книга дает понять, что Groovy-это буквально расширение Java. Я могу написать Java-код, который функционирует точно так же, как Java и переименовать файл *.заводной и он отлично работает. Согласно Книге, обратное верно, если я включаю необходимые библиотеки. До сих пор, экспериментирование, кажется чтобы подтвердить это.

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

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

Comments

    Ничего не найдено.