LINUX.ORG.RU

Clojure 1.2

 , , ,


1

0

После 8 месяцев напряжённой работы вышла новая версия языка Clojure — 1.2. Clojure — Lisp'образный язык общего назначения, работающий на платформах JVM и .Net и отличающийся более функциональным подходом и специальными средствами для упрощения разработки параллельного кода.

В новой версии очень много изменений, из которых особо стоит отметить следующие:

  • Введены протоколы (protocols) и типы данных (datatypes), позволяющие создавать новые абстракции и полиморфные функции. При этом производительность гораздо выше, чем при использовании мультиметодов;
  • Расширена деструктуризация структур данных, о которой я уже писал;
  • В составе языка введено несколько новых пространств имен, функции которых были перенесены из clojure-contrib. Сюда относятся функции для работы со строками, repl, pretty printer, ввод/вывод Java, и т.д.;
  • Расширен набор функций для работы с последовательностями;
  • Добавлена поддержка аннотаций Java, что позволяет использовать соответствующий функционал различных фреймворков;
  • Много изменений, связанных с улучшением производительности кода;
  • Для указания метаданных теперь вместо #^ используется просто ^.

Статья Введение в Clojure была частично обновлена описанием новых возможностей (кроме протоколов, которые будут чуть позже).

>>> Полный список изменений

★★★★★

Проверено: catap ()

Ответ на: комментарий от Dudraug

>>Может .NET на Java залабать ?

Ты хоть сам понял. что сказал?

Я - да. А ты ?

vasya_pupkin ★★★★★ ()

Важное измненение, которое не отражено в новости. Теперь у макросов есть неявные аргументы &env и &form. Конечно, их еще нужно переварить. Но судя по всему теперь можно будет достаточно просто создавать любопытные DSL'ы а-ля LINQ и проч.

А вот библиотек новых они зря напихали. Не нужно все это совершенно. Уж лучше за собой таскать помойку clojure-contrib.

Macil ★★★★★ ()
Ответ на: комментарий от Macil

Да, это я забыл. Btw, новый clojure-contrib (1.3) уже распилен на отдельные модули

ott ★★★★★ ()
Ответ на: комментарий от ott

Во-во и нефиг засовывать сомнительные функции типа работы со стрингами или IO в стандартную библиотеку.

Написать обертку для io или nio — дело получаса. Причем способом, который будет подходить наилучшим образом именно для данной предметной области. Это же лисп в конце концов.

А стринги - это крайне нетривиальная библиотека, хотя и предельно константная. И написать такую библиотеку, которая устраивала бы всех невозможно. Слишком много ньюансов.

Macil ★★★★★ ()

Преимущества Clojure

1) Clojure на Clojure можно написать в 11(!), а не в 12 строк.
2) Если Вы напишете на Clojure что-нибудь вменяемое - Вы будете первым.
3) Вы можете смело давать свой код на аудит хоть Господу Богу, не опасаясь сурового возмездия.
4) Вы - уникальный (в своём роде) специалист.

anonymous ()
Ответ на: комментарий от r

> Ну вообще когда гугл делал далвик - мог бы отстегнуть 100 штук зеленых беднеющему сану за лицензию как сделали остальные - сам бы не обеднел от этого, и хорошим людям помог.

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

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

> Гугль все правильно сделал. Не дал бабла на поддержку говноязыка, как делали все остальные

Но при этом выбрал тот же самый говноязык для одной из непосредственно прибыльных технологий?

naryl ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

>Гугль все правильно сделал. Не дал бабла на поддержку говноязыка,

Парадоксальное утверждение. сли гугл считал что это говноязык - нафига он сделал весь стек ключевой технологией андроида?

r ★★★★★ ()
Ответ на: комментарий от naryl

> Но при этом выбрал тот же самый говноязык для одной из непосредственно прибыльных технологий?

До этого здесь аппликухи писались на явеМЕ, поэтому оправдано было для максимального облегчения портирования предоставить что-то, максимально на это похожее.

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

>если гугл считал что это говноязык - нафига он сделал весь стек ключевой технологией андроида?

только что объяснил — из соображений легкости портирования и конкуренции

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

>До этого здесь аппликухи писались на явеМЕ, поэтому оправдано было для максимального облегчения портирования предоставить что-то

Аппликухи на явеМЕ совсем не такие как на обычной. ЯваМЕ такая же ява как С это С++.

Гугл выбраж яву (как и линукс) потому что существует огромная развитая инфраструктура и с линуксом и с явой которая по природе своей конкурентна микрософту и эпплу. Вот за нее мог бы отстегнуть сану пару баксов (как делал HP, Apple, IBM, и прочие ARMы) - не обеднел бы.

r ★★★★★ ()
Ответ на: комментарий от r

> Аппликухи на явеМЕ совсем не такие как на обычной. ЯваМЕ такая же ява как С это С++.

Гугл выбраж яву (как и линукс) потому что существует огромная развитая инфраструктура и с линуксом

Ты хочешь сказать, что гугль выбрал не явуМЕ, а именно яву? Откуда дровишки?

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

> существует огромная развитая инфраструктура и с линуксом и с явой которая по природе своей конкурентна микрософту и эпплу. Вот за нее мог бы отстегнуть сану пару баксов

Инфраструктура Сану не принадлежала, за что платить? И, если ты не заметил, Оракел не предъявляет никаких лицензионных претензий.

tailgunner ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

>Ты хочешь сказать, что гугль выбрал не явуМЕ, а именно яву?

Из результата - не? ЯваМЕ - это такая ява которая недоява по причине необходимости залезать в устройства вида «хренестьпроцессорипамять» - сделана очень недоявой. Уже давно все заявляли что «наконец-то запихнем javaSE» http://www.zdnet.com/blog/gardner/sun-to-swap-out-me-for-se-on-mobile-devices... - 2007 год. То есть все только спали видели это.

r ★★★★★ ()
Ответ на: комментарий от tailgunner

>Инфраструктура Сану не принадлежала, за что платить?

Платить просили не за инфраструктуру, а лицензировать патентованые технологии.

А за инфраструктуру можно сказать сану спасибо - Сан одна из компаний которая очень сильно помогла развитию опенсорса и сделала огромный вклад развитие конкурентной инфраструктуры микрософту. Просто из-за всяких нездоровых воплей по поводу «CDDL несовместимой с GPL» и «contributor agreement» у многих в мозгу угнездился нездоровый зуд по этому поводу - образец успешного черного пиара - а то что мозилла, эклипс и прочие работают под одинаковыми лицензиями, равно как и большинство крупных проектов требуют контрибьютор агримент - избирательное зрение основанное на безграмотности не замечает.

Далее - если бы не роль линукс-как-пускалка-серверной-явы - линукс был бы очень далек от позиции которую занимает сейчас - за что тоже скажем сану спасибо. А если бы не дай бог не былоявы но появился дотнет - это бы принесло космический звездец линуксу на серверах мгновенно - остался бы там где сейчас фря.

И, если ты не заметил, Оракел не предъявляет никаких лицензионных претензий.


Он собственно их и предъявляет. Что технологии фигурировавшие в патентном портфеле сан - а в списках лицензиатов гугла не нашли - чему и удивляются в судебном порядке.

r ★★★★★ ()
Ответ на: комментарий от r

> если бы не роль линукс-как-пускалка-серверной-явы - линукс был бы очень далек от позиции которую занимает сейчас - за что тоже скажем сану спасибо.

Скажем, но не будем забывать, что Сан действовал в своих интересах. Just business, как говорится. Насчет «альтернативной микрософту инфраструктуры» - то же самое.

И, если ты не заметил, Оракел не предъявляет никаких лицензионных претензий.

Он собственно их и предъявляет. Что технологии фигурировавшие в патентном портфеле сан - а в списках лицензиатов гугла не нашли - чему и удивляются в судебном порядке.

Ну да, лицензий-то гугель не нарушал. Вот и остается действовать сомнительными методами.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

>Скажем, но не будем забывать, что Сан действовал в своих интересах.

А Линус Торвальдс работает ради африканских детей?

Ну да, лицензий-то гугель не нарушал. Вот и остается действовать сомнительными методами.


Ты наверное сейчас имеешь ввиду лицензию на ПО. Так это не единственный вид лицензий. Патентованные технологии лицензируются тоже. Жав вагон и маленькая тележка, и делают их небедные люди вроде HP/IBM/Apple. Но им претензий оракл не предъявлял. What does it tell you?

r ★★★★★ ()
Ответ на: комментарий от r

> и делают их небедные люди вроде HP/IBM/Apple. Но им претензий оракл не предъявлял. What does it tell you?

Что им нужна была (R) или (TM).

При том, что гуглю, юзерам и девелоперам андроида (R) или (TM) не очень нужно, а сан запросил за него слишком больши деньги. После чего был совершенно справедливо послан подальше.

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

>> Ты хочешь сказать, что гугль выбрал не явуМЕ, а именно яву?

Из результата - не? ЯваМЕ - это такая ява которая недоява по причине необходимости залезать в устройства вида «хренестьпроцессорипамять» - сделана очень недоявой.

Так можно только с журналистами разговаривать.

Были ли в явеМЕ какие-то ограничения на байт-код или формат класс-файлов по сравнению в явой? Разумно предположить что нет, а тогда с точки зрения гугля, юзеров и девелоперов андроида ява=яваМЕ, поскольку они юзают только класс-файлы, а библиотеки ЕМНИП гугль все равно взял из openJDK, а не сановские.

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

> Далее - если бы не роль линукс-как-пускалка-серверной-явы - линукс был бы очень далек от позиции которую занимает сейчас - за что тоже скажем сану спасибо.

Может и скажем. Хотя (я не слежу) давно ли были заявления «а вот на нашем соларисе ява-то по настоящему работает» ?

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

>> Скажем, но не будем забывать, что Сан действовал в своих интересах.

А Линус Торвальдс работает ради африканских детей?

А Линус сначала действовал JFF, потом _целенаправленно_ писал свободное ядро. А Сан помог Линуксу случайно. Было бы выгодно его загнобить - загнобил бы.

Жав вагон и маленькая тележка, и делают их небедные люди вроде HP/IBM/Apple. Но им претензий оракл не предъявлял. What does it tell you?

Пока - не предъявлял. Но аналитики уже пишут, что, если гугель проиграет, в очереди на раздачу - IBM и прочие.

tailgunner ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

>Что им нужна была (R) или (TM).

И патентные лицензии. Гуглю не нравится? Они ж миллиардеры - могли бы подсобить с решением вопроса раз и навсегда в конгрессе - билли вон вертелся. А то вообще парадокс - если они принципиально против - они одна из сил которые могут ситуацию преломить. Или они и рыбку съесть...?

r ★★★★★ ()
Ответ на: комментарий от www_linux_org_ru

>Были ли в явеМЕ какие-то ограничения на байт-код или формат класс-файлов по сравнению в явой? Разумно предположить что нет

Не разумно:

http://www.forum.nokia.com/document/Java_Developers_Library_v2/?content=GUID-...

Разумно предположить что нет, а тогда с точки зрения гугля, юзеров и девелоперов андроида ява=яваМЕ, поскольку они юзают только класс-файлы,


Ты читал патенты по которым оракл доковырялся? Там совсем не про «тм» или классфайлы. Там про верификаторы и секурити домайны. Гугл реализовал собственную vm которая делает то что было запатентовано саном.

r ★★★★★ ()
Ответ на: комментарий от tailgunner

>А Линус сначала действовал JFF, потом _целенаправленно_ писал свободное ядро.

Ради африканских детей или таки машину тоже неплохую купил?

Ты какую-то странную претензию высказываешь - веришь в неэгоистичные мотивы чтоле? Айбиэм который эклипс выкатил затратив на него в первый год 40Мбаксов - тоже действовал эгоистичными мотивами. Комьюнити теперь расстраиваться по этому поводу что-ле?

r ★★★★★ ()
Ответ на: комментарий от r

> Ты какую-то странную претензию высказываешь - веришь в неэгоистичные мотивы чтоле?

Я не высказываю претензий вообще. Я просто указываю на разницу в целях у Торвальдса и Сан, и, соответственно, намекаю, что благодарность им разная.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

>Я просто указываю на разницу в целях у Торвальдса и Сан

И в чем же разница? Оба хотят быть счастливыми:) Оба сделали хорошее дело. В определенном смысле Сан сделал больше чем Торвальдс - Торвальдс сидел и от нечего делать жертвовал свободным временем. Сан осознанно вкладывал огромные деньги и делал ставку бизнеса на это. Торвальдсу было намного легче.

r ★★★★★ ()
Ответ на: комментарий от r

> Там совсем не про «тм» или классфайлы.

И это был ответ совсем на другой твой вопрос.

Там про верификаторы и секурити домайны. Гугл реализовал собственную vm которая делает то что было запатентовано саном.

Гугль начал делать дальвик *после* того, как сан рассказал ему о патентах. Соответственно гугль проектировал с учетом этих патентов и возможного иска.

www_linux_org_ru ★★★★★ ()
Ответ на: комментарий от r

>> let t = Tree 1 Empty Empty in Tree 2 t t подойдет?:)

Конечно! Теперь замени значение узлов во всем дереве без его пересоздания.

cathode ()
Ответ на: комментарий от r

>> Да - числодробильня подобного типа - типичный код конечно.

Ахренительно числодробильный код! 2+3 - это теперь очень сложные вычисления. Между прочим Фибоначчи - любимая замануха функциональщиков, так что код вполне типовой.

Создай грамотный фреймворк списков общего назначения - и ты увидишь где иммутабельность рулит.

А что, такого ФВ еще нет???

Список четных... Список нечетных...

Кхм

[code=cpp] std::list<int*> odd; int x = 3; odd.push_back(&x); [/code]

Где тут копирование?

cathode ()
Ответ на: комментарий от cathode

> Теперь замени значение узлов во всем дереве без его пересоздания.

Ты мне не покажешь практический смысл подобной постановки задачи?

PS: разломал нахрен правую руку буду с вами одной левой да еще под наркотой:)

r ★★★★★ ()
Ответ на: комментарий от cathode

> Ахренительно числодробильный код!

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

А что, такого ФВ еще нет???


То есть подобные задачи ты не решал? Умеешь только using std и числа фибоначчи?

Где тут копирование?


То что ты не понял о чем я говорю - демонстрирует.

r ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.