Ответы пользователя по тегу Clojure
  • Подходит ли clojure для фриланса?

    Есть микро-фреймворк для веб разработки на clojure luminus он активно развивается в настоящее время. Он представляет собой набор библиотек для создания веб приложения любой сложности. Вообще же существует большое количество библиотек для веб разработки на clojure. Luminus предлагает на выбор несколько вариантов различных библиотек для решения определенных задач (работа с базами данных, шаблоны страниц, создания REST-full сервисов, http серверов, безопасности и прочее). Деплой приложении максимально прост, так как вы получаете на выходе либо исполняемый jar, который уже содержит встроенный сервер(jetty, immutant, http-kit), либо war-файл, которой можно резвернуть на tomcat, jetty или другом контейнере просто поместив его в папку webapp. Так что называть clojure совсем уж "сырым" я бы не стал. Разработка на нем идет быстро благодаря REPL.
    Ответ написан
    Комментировать
  • В чем смысл макро программирования?

    Макросы позволяют приспособить лисп язык под решаемую задачу. С помощью них Вы можете добавить в язык конструкции которых вам не хватает. Бесспорно, можно все задачи решить и без макросов. К примеру clojure имеет макрос with-open, который аналогичен конструкции try-with-resources языка Java версии 7. Java программисты обходились без этой конструкции и могут и дальше ее не использовать, но с ней вы пишете меньше кода и делаете код более надежным. Программисты использующие java версии ниже 7 не могут создать такую синтаксическую конструкцию самостоятельно и пользуются веткой finaly конструкции try...catch. Чтобы такая конструкция появилась в языке понадобилось доработать компилятор. Программисты лисп языков с помощью макросов могут добавить в язык любую синтаксическую конструкцию, которой им не хватает, без изменения компилятора. К примеру clojure версии 1.6 использует JDK 1.5 в котором нет конструкции try-with-resources но с помощью макроса with-open вы уже можете пользоваться таким же функционалом. Другой пример - макрос loop языка Common Lisp по сути определяет свой собственный встроенный микро язык для реализации всевозможных циклов.
    Если вам кажется, что в языке чего-то не хватает, или что вы пишете много лишнего кода, то возможно вам стоит задуматься о макросах.
    Ответ написан
    Комментировать