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 ()
Последнее исправление: MuZHiK-2 (всего исправлений: 1)

> о которой я уже писал;

где?

функции которых был перенесен

что-то тут не так

anonymous
()

> Статья Введение в Clojure...

До конца пока не дочитал, но уже интересно, спасибо за статью ;) Может, действительно, попробую уже что-то на нём написать, а то всё Perl да Perl... :)

Casus ★★★★★
()

мне вот тоже интересно, есть ли проекты юзающие сабж...

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

А мозги размять и отвлечься от скучных Java/C#/C++? У меня роль разминателя играет Scala, в будущем еще хочу заценить Haskell.

Лиспоподобные не сильно интересуют, но пусть будут, почему бы и нет?

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

А мозги размять и отвлечься от скучных Java/C#/C++? У меня роль разминателя играет Scala, в будущем еще хочу заценить Haskell.

Лиспоподобные не сильно интересуют, но пусть будут, почему бы и нет?

Пусть будет, конечно, но мой мозг в достаточной степени нагружают Питон с Фортраном.

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

Есть разная нагрузка. Есть нагрузка сурового программирования. У меня это OpenCL. А есть нагрузка наоборот, очень эффективного программирования, когда пишешь небольшой код, который делает очень мощные вещи. Для этого нужны очень современные и продвинутые ЯП. Классное развлечение.

vertexua ★★★★★
()

Интересна целесообразность изучения сабжа в свете того, что Гослинг ушёл из Оракла.

Учишь так JVM-зависимые языки, учишь... а потом - БАЦ! И JVM становится закрытой (в плане исходников) платформой (например).

Кто что думает по этому поводу? Опасно ли изучать языки, зависимые от JVM? Превратился ли Оракл в обезьяну с гранатой, с которой лучше не связываться? Почему ушёл Гослинг?

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

для clojure есть пакет для работы с opencl, народ вроде его использует для вычислений

ott ★★★★★
() автор топика

ну вот, а вы говорите.. и грозные поступки и заявления Оracl'a не помешали этому свершится)!

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

есть порт на .Net, да и вообще, портирование на новую платформу - не слишком тяжелая задача

ott ★★★★★
() автор топика
Ответ на: не нужно от ClanMax

> не нужно как .net и java
И у вас, конечно же, есть кандидаты на замену? Только чтоб стандартизировано, надёжно, а главное с здоровенной инфраструктурой. А то вы одним своим заявлением половину энтерпрайза на помойку выкинули.

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

Очевидно, баги MIT-SHM интереснее отлавливать на Си. :))

iZEN ★★★★★
()

Ruby 1.9.2 релиз уже, считай, 2 дня назад вышел, а новости об этом на сайте так и нет. :(

ЗЫ Скрипты: Кому нужны быстрые и грязные скрипты - Ruby (ну Perl уж сильно устарел), кому нужно что-то подобное Java и C# - Python, кому голову поломать - Haskell, ну а по поводу доброго старого Лиспа - в Emacs (или DrScheme - Rocket). А Closure - Java + типа многозадачность... Хм... Даже если последнее верно, одно слово Java отбивает всякую охоту пробовать.

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

Ну и чем может быть Лисп современен (который, по определению, всегда мог все)? Кусками синтаксического сахара? Ню-ню... Многозадачность? Так Лисп бегал на десятко-процессорных параллельных машинах еще лет двадцать назад. Что еще?

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

Более функциональный язык (данные иммутабельные по умолчанию). Поддержка конкуррентности на уровне языка - STM, агенты, атомы. Вы почитайте - это не многозадачность на тредах и локах, это по другому сделано (хотя треды и локи доступны)

ott ★★★★★
() автор топика

Пипец. Образчик из введения - отличие от Лиспа:

вместо функций car и cdr используются функции first и rest;

Все остальное абсолютно из той же оперы.

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

Java на .Net aka ikvm. Как оно будет?

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

>Опасно ли изучать языки, зависимые от JVM?

Очень опасно. Говорят, вызывает импотенцию и волосы на ладонях начинают расти.

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

Вот спрошу как раз, какова производительность модели многозадачности в этом языке? Есть какие-либо реальные тесты или сравнения со Scala/Erlang/etc.? Ну или субъективные ощущения хотя бы :)

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

> Lisp на Жабе ?!?

разницу между языком Java и JVM твой мозг не осиливает?

Я один думаю что мир сошел с ума ?


ну ты понел... :D

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

> А кто нибудь использует его?

Человек пять-шесть во всем мире. Было бы больше, но психиатрия не дремлет, особо борзых изолируют.

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

Субъективные ощущения - в однозадачном режиме не сильно медленней чем ява (при наличии type hints).

Вот набор ссылок на бенчмарки и статьи в обсуждении на StackOverflow - http://stackoverflow.com/questions/2186709/are-there-any-good-clojure-benchmarks

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

О да, шикарно осовременили, поломав cons. Что это за лисп такой, где нет точечных пар?

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

и сколько у них пользователей? :-) я знаю, что есть и в racket/plt scheme немутабельные данные, меня просто всегда поражает уровень ЛОРовских аналитиков

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

Ну вот Отт и использует... :) Других не знаю.

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

>разницу между языком Java и JVM твой мозг не осиливает?

Осилил, я чего-то новость видно жопой в первый раз прочитал.

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

> В смысле «Net,конечно» или «нет,конечно»?

Мне кажется, что Mono и .Net это разные вещи. К тому же не ясна судьба Mono с точки зрения патентных преследований со стороны Microsoft.

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

>> Более функциональный язык (данные иммутабельные по умолчанию).

Иногда, после прочтения статей по ФЯ, складывается такое впечатление, что мутабельность данных это не просто плохо, а что это п--ц какой страшный грех! И то, что на, например, С в приницпе нельзя написать ничего путного, а если и получится, то будет жуткое, глючное, неподдерживаемое говно. В чем смысл связывать себя по рукам отказываясь от мутабельности??? (только не надо рассказывать про транспаретность кода и отсутсвие ситуаций типа «неизвестно кто присвоил глобальной переменной», это к мутабельности не относится, говеные, непонятно как работающие программы можно писать и на чистейших ФЯ).

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

ваше мнение - насколько racket (и язык, и «батарейки») применимы для реальных, серьезных задач? или это больше педагогический набор?

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

> Осилил, я чего-то новость видно жопой в первый раз прочитал.

:) бывает...

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