Love5an в своем блоге поднял важную тему о применимости лиспа для повседневных задач. Главный вывод из его статьи: в лиспе мало библиотек, по сравнению с мэйнстримными языками, поэтому разрабатывать с его помощью обычные приложения сложно. Эта мысль перекликается с тем, о чем я писал в предыдущем посте, где искал идеальные задачи для лиспа.
В принципе, я абсолютно и полностью согласен с love5an'ом: используя только лисповую инфраструктуру сделать настольное или веб-приложение довольно -- задача трудоемкая.
Но не с Clojure! Оговорюсь: не используйте различные обертки над библиотеками java, используйте ифраструктуру java. Ring, Compojure, etc -- все это довольно бедные библиотеки, которые не идут ни в какое сравнение с тем же j2ee. Seasaw хоть и скрывает частично Swing, но не заменит ее полностью. Можно продолжать долго, так что если знаете java -- то просто используйте java API напрямую, Clojure это позволяет.
Если обращаетесь к java API -- не используйте Emacs, возьмите IDE. Это действительно удобнее, т.к. IDE умеет делать интеллектуальное автодополнение кода. Самое лучшее, что я видел для Clojure, это Idea+LaClojure. Community-версия Idea бесплатна, так что скачать эту IDE легко.
Конечно, учитывая динамичность Clojure, интеллектуальное автодополнение не настолько точное, как для той же java, но, тем не менее, тоже значительно облегчает работу. По крайней мере не нужно постоянно обращаться к документации за элементарными вещами.
Чисто для эксперимента решил попробовать написать UI для простого настольного приложения.
С применением LaClojure+Idea это оказалось почти так же просто, как и на обычной java.
Таким образом, Clojure совмещает простоту и практичность Java с мощью и выразительностью Lisp-а.
В принципе, я абсолютно и полностью согласен с love5an'ом: используя только лисповую инфраструктуру сделать настольное или веб-приложение довольно -- задача трудоемкая.
Но не с Clojure! Оговорюсь: не используйте различные обертки над библиотеками java, используйте ифраструктуру java. Ring, Compojure, etc -- все это довольно бедные библиотеки, которые не идут ни в какое сравнение с тем же j2ee. Seasaw хоть и скрывает частично Swing, но не заменит ее полностью. Можно продолжать долго, так что если знаете java -- то просто используйте java API напрямую, Clojure это позволяет.
Если обращаетесь к java API -- не используйте Emacs, возьмите IDE. Это действительно удобнее, т.к. IDE умеет делать интеллектуальное автодополнение кода. Самое лучшее, что я видел для Clojure, это Idea+LaClojure. Community-версия Idea бесплатна, так что скачать эту IDE легко.
Конечно, учитывая динамичность Clojure, интеллектуальное автодополнение не настолько точное, как для той же java, но, тем не менее, тоже значительно облегчает работу. По крайней мере не нужно постоянно обращаться к документации за элементарными вещами.
Чисто для эксперимента решил попробовать написать UI для простого настольного приложения.
С применением LaClojure+Idea это оказалось почти так же просто, как и на обычной java.
Таким образом, Clojure совмещает простоту и практичность Java с мощью и выразительностью Lisp-а.
Насколько я помню LaClojure в Community версию не ставится.
ОтветитьУдалитьА как же я ее поставил?
ОтветитьУдалитьhttp://i54.tinypic.com/1z33q7k.png
ОтветитьУдалитьОсталось только понять, зачем писать на Clojure, когда можно сразу писать на Java ((
ОтветитьУдалить:-) Андрей, ты превращаешься в большого и жирного тролля! Тебе ли объяснять преимущества лиспа? :-D
ОтветитьУдалитьВнезапно, в имаксе тоже есть интеллектуальное автодополнение кода.
ОтветитьУдалитьПисать на clojure, не используя "различные обертки", действительно смысла нет - иначе это получается джава с синтаксисом из смеси камелькейза и скобочек.
> Внезапно, в имаксе тоже есть интеллектуальное автодополнение кода.
ОтветитьУдалитьПытаюсь добиться этого от JDEE и Eclim -- пока не получается. А у тебя Intellisence как работает?
> Писать на clojure, не используя "различные обертки", действительно смысла нет - иначе это получается джава с синтаксисом из смеси камелькейза и скобочек.
Ну так заставь жависта писать на лиспе, он и на лиспе будет писать, как на жаве. Дай лисперу возможности jvm -- и не нужна будет жава.
У меня стоит auto-complete, но емнип и из коробки все работало.
ОтветитьУдалитьЧтобы писать на clojure, как на clojure, вокруг джава-библиотек нужны обертки, т.к. clojure, например, функциональный язык, а джава - нет. Если их не использовать, то никаких преимуществ я тут не вижу (а неудобств - полно).
Ну то, что ты описал, значительно слабее по функциональности intellisence в той же Idea/LaClojure. Так что для начинающих LaClojure, пожалуй, удобнее.
ОтветитьУдалитьСам я пользуюсь штатными средствами Emacs, а также yasnippet-ом. Правда под рукой все время приходится держать открытой java api documentation.
> Ну то, что ты описал, значительно слабее по функциональности intellisence в той же Idea/LaClojure.
ОтветитьУдалитьИнтересно, в чем это выражается? Дополняет, документацию показывает - а больше вроде ничего и не требуется.
> Так что для начинающих LaClojure, пожалуй, удобнее.
Тогда уж eclipse+ccw.
:-) Ну пользуйся, если тебе удобно. Я же говорю о тех, кто приходит из мира Java или C#, где без автодополнения по типу класса жить не могут. Для них LaClojure -- самый приемлемый вариант.
ОтветитьУдалитьНе совсем понимаю, о каком именно автодополнении идет речь, т.к. в clojure метод пишется перед экземпляром класса, а не после, как в джаве или шарпе. Поэтому я и спрашиваю, в чем выражается различие между имаксовым и, например, LaClojure'вым дополнением.
ОтветитьУдалитьРечь об автодополнении методов из java-библиотек.
ОтветитьУдалить