Никита Прокопов (tonsky) wrote,
Никита Прокопов
tonsky

Category:

Баттл

Тут недавно возник такой вопрос — а чем, собственно, по существу отличаются Scala и Clojure?

У меня такие соображения:

  • static vs dynamic typing
  • компилятор найдет больше ошибок
  • но зато писать дольше — за это время можно и юнит-тест наговнякать
  • ориентированность на concurrency (иммутабельные структуры, STM) — в Clojure из коробки, в Scala через Akka
  • ленивые вычисления vs ?
  • большой, сложный язык (классы, объекты, типы, наследование, микс ФП и ООП, сидит сразу на всех стульях — Scala) vs маленький, компактный, открытый, композабельный (данные, функции, неймспейсы, только ФП — Clojure)
  • принципиальная академичность (Scala) vs прагматичность (Clojure)
  • расширяемость — макросы в Clojure, в Scala что есть, то есть
  • примат данных (Clojure) vs примат системы типов (Scala)
  • единый семантически богатый формат обмена данными (edn) vs выбери сам
  • eval и там, и там (в Scala используется редко)
  • REPL и там, и там
  • долгая промышленная разработка, большая команда vs быстрое прототипирование
  • ни то, ни то не отдать [junior] developers в энтерпрайз.
  • многоплатформенность (Clojure переносится на js, .net, python) vs только jvm
  • оба потихоньку где-то используются, но killer apps ни у кого нет
  • interop в clojure хороший, в скале вроде неплохой (но коллекции надо конвертировать)
  • про производительность Scala я слышал много хорошего by default, а в Clojure надо спускаться к java-примитивам в узких местах

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

А вообще Clojure побеждает по всем фронтам.
Tags: clojure, fp, ru, нужна ваша помощь, формула успеха
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 169 comments