Alex Ott's Blog, page 2

November 27, 2011

Перевод TaPL в продаже

Для заинтересованных - перевод TaPL можно уже купить. findbook показывает что можно заказать через goodreads.ru, books.ru имеет книгу в каталоге, но она помечена как "нет в продаже"...
Судя по информаци из juick, в Москве можно купить в обычных книжных магазинах: "В москве продаётся как минимум в МДК (на арбате и в техкниге), в Москве (на тверской), и в библиоглобусе. Дешевле всего (за 1100р) можно купить в МЦНМО (mccme.ru). туда лучше заранее позвонить, ибо много книг хранить они не могут"...P.S. а озон почему-то выставил безумную цену в 2 с лишним тысячи, поэтому они идут лесом :-)

Update: Алексей Махоткин написал пост, где собрал список всех известных магазинов и других способов покупки книги...
 •  0 comments  •  flag
Share on Twitter
Published on November 27, 2011 07:09

October 22, 2011

Еще книжное...

Осень выдается достаточно результативной на книги, к которым я имею отношение в той или иной мере... Кроме релиза про перевод Types & programming languages, про который я писал вчера, сегодня я получил свой экземпляр книги Mahout in Action, в издании которой я принимал участие в качестве technical proofreader. В том же качестве я поработал и над книгой Tika in Action, которая должна выйти в ближайшее время. А началось все с того, что люди из Manning предложили мне сделать review для нескольких книг, часть из которых я уже купил как MEAP, а потом предложили сделать и technical proofreading - проверить примеры, формулы и т.п., что и было с удовольствием сделано - все равно я собирался читать эту книгу, а тут такая возможность :-)





Mahout in Action - интересная книга, если вы интересуетесь machine learning, особенно в large scale. В книжке почти нет теории, но в ней подробно описывается как использовать Apache Mahout для классификации и кластеризации данных, а также рекомендаций (для товаров и т.п.). В книге описаны только основные алгоритмы, в самом Mahout их гораздо больше, и все больше добавляется с каждым релизом.

В электронной версии (в PDF) есть мультимедийные вставки, с помощью которых рассказывают или показывают про сложные места - интересно сделано. На амазоне, печатная книга стоит дешевле чем у Manning'а, но у Manning'а вместе с печатной версией дают и электронную - это у них стандартные условия, плюс регулярно бывают 40-50% скидки - если кому интересно. Все примеры были протестированы на Mahout версии 0.5 (актуальный релиз), но я планирую в ближайшее время сделать их совместимыми со следующим релизом - 0.6 - там совсем небольшое изменение...



P.S. будет еще несколько книг, но уже на русском, но я пока не знаю еще точных сроков выхода, но обязательно напишу :-)
 •  0 comments  •  flag
Share on Twitter
Published on October 22, 2011 06:12

October 21, 2011

Книга "Типы в языках программирования"

Из достоверных источников стало известно, что книга "Типы в языках программирования" (перевод известной "Types and Programming Languages") вышла в бумажном виде, и это не миф :-) Пока правда неизвестно где ее можно купить, но вы можете связаться с Алексеем Махоткиным (aka squadette) и узнать об этом.  Я тоже напишу когда она будет доступна в магазинах.

Также доступна полная электронная версия книги, она совпадает с печатной версией. Меньшего формата не будет (пока?), поскольку там есть проблемы с таблицами и листингами, но вы можете попытаться переверстать, благо исходные тексты также доступны.

Эта книга труд многих людей - Юра Бронников сделал львинную часть перевода, Алексей Махоткин сделал огромную работу по вычитке и редактированию, а Вадим Родионов так красиво и правильно все сверстал. Кроме того, много людей читало промежуточные версии перевода и присылало замечания и пожелания - всем спасибо!
 •  0 comments  •  flag
Share on Twitter
Published on October 21, 2011 03:59

September 24, 2011

Что нового в Clojure 1.3?

Сегодня ночью была выпущена новая версия языка Clojure — 1.3. Что нового в этой версии? Давайте рассмотрим основные изменения сделанные в этой версии (детальный список изменений можно найти в соответствующей ветке репозитория).

Расширенная поддержка примитивных типов

В предыдущих версиях, примитивные типы (long, double, etc.) поддерживались только для локальных арифметических операций и при объявлении полей deftype/defrecord, но не для аргументов функций и не для возвращаемых значений. Boxing выполнялся всегда, что часто приводило к ощутимым накладным расходам.

В новой версии примитивные типы поддерживаются в полной мере, что приводит к значительному увеличению производительности кода (в соответствующих тестах, в среднем в 3-5 раз). Соответственно изменилась работа с арифметическими выражениями — для примитивных типов будут использоваться стандартные операторы Java. Но при этом не будет происходит автоматического превращения в "Big*" типы при переполнении, как это происходило раньше — вместо этого будет брошено исключение. Если вам все-таки нужно автоматическая конвертация, то вы можете использовать операторы +', *', и т.д., хотя они и более медленные. Битовые операции теперь только поддерживаются для примитивных типов, и вся их поддержка для "Big*" была убрана из языка.

Для использования примитивных типов вам необходимо добавить соответствующие type hints, например:

(defn fib ^long [^long n]
(if (<= n 1)
1
(+ (fib (dec n)) (fib (- n 2)))))

Более подробно обо всем этом на соответствующей странице JIRA.

Улучшения defrecord и deftype

В версии 1.3 были сделаны различные улучшения для работы с defrecord и deftype:

новый синтаксис для чтения и записи — либо с метками (#myns.MyRecord{:a 1, :b 2} — только для записей), либо позиционный (#myns.MyRecord[1 2] — для записей и типов);
автоматическая генерация функций для создания типов и записей: myns/map->MyRecord (только для записей) и myns/->MyRecord (для записей и типов).

Подробнее можно прочитать вот тут.

Reflection API

Введено новое пространство имен clojure.reflect, функции которого должны обеспечить более удобную и быструю работу с классами, методами и т.д. Подробнее об этом тут.

Модульный clojure-contrib

Начиная с версии 1.3, больше не существует монолитного набора библиотек известного как clojure-contrib — вместо этого, были созданы отдельные проекты для каждой из библиотек, что позволяет им развиваться и выпускаться независимо друг от друга. Полный список всех старых библиотек, и соответствующих им новых, можно найти на отдельной странице.

Множественные улучшения производительности

Кроме улучшений в части производительности, описанных выше, в новом релизе сделано множество изменений чтобы обеспечить более высокую скорость работы программ на Clojure:

Более быстрый доступ к переменным;
Ускорение загрузки
Promises не используют блокировок (locks);
Инлайнинг nil?, битовых функций, математических операций, функций min & max с разным числом аргументов;
и многое другое...Прочее

Помимо новой функциональности описанной выше, а также различных исправлений ошибок, в новой версии реализованы новые вещи (перечислены не все):

Некоторые вспомогательные пространства имен (clojure.set, clojure.xml, clojure.zip) не загружаются при запуске;
Объявления сделанные с помощью def более не являются "динамическими" по умолчанию — вы должны использовать ^:dynamic если хотите иметь возможность использования ее в binding;
Улучшенные сообщения об ошибках и исключениях;
Можно вызвать deref с указанием таймаута;
Функция comp возвращает identity если вызвана без параметров;
Возможность указания разных возвращаемых типов в объявлениях одной функции с разными количествами аргументов;
Некоторые функции перемещены в другие пространства имен;
 •  0 comments  •  flag
Share on Twitter
Published on September 24, 2011 08:14

September 18, 2011

Перевод " Learn You a Haskell for Great Good!"

BTW, планируется выпуск русского перевода "Learn You a Haskell for Great Good!" в виде бумажной книги. Переводом занимается Yasir Arsanukaev, и работа над переводом ведется на bitbucket - кто может, присоединяйтесь к вычитке перевода! :-)



P.S. Из достоверных источников стало известно, что книжка уже на этапе верстки, так что недолго ждать осталось :-)
 •  0 comments  •  flag
Share on Twitter
Published on September 18, 2011 02:59

July 1, 2011

Опрос: название для русской версии Practical Common Lisp

В процессе причесывания русского перевода Practical Common Lisp, выползла проблема того, как книжка должна называться на русском языке. Пока вариантов немного, и некоторые звучат не особо :-( Поэтому хочу попросить помощи у сообщества - какой из переводов вам больше нравится (или можете предложить свой) - пишите номера или сови предложения в комментариях:

Practical Common Lisp - оставить оригинальное название (будет плохо искаться в поиске, имхо)
(ru '(Practical Common Lisp)) - вариант catap
Практика Common Lisp
Common Lisp на практике
Практический Common Lisp
Практический Lisp
 •  0 comments  •  flag
Share on Twitter
Published on July 01, 2011 04:05

May 14, 2011

Небольшой книжный обзор

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

Вкратце о разных книгахЗа мартовский отпуск дочитал давно лежащую в очереди "The art of meta-object protocol" - книжка дает понимание как проектировался CLOS, как были выбраны те или иные решения, и т.д.

В апреле в достаточно быстром темпе (они предложили сделать ревью) прочитал две книги издательства Manning: Tika in Action и ManifoldCF in Action. Первая была не особо интересной для меня, поскольку я в этой области работаю уже давно, да и tika знаю достаточно хорошо, но я думаю, что книжка все равно будет интересна для людей, которым нужно выделять текст и мета-информацию из файлов разных форматов.  А вот вторая книга была более интересной - я ее купил когда она еще только была анонсирована, но руки не доходили ее прочитать.  Книга описывает ManifoldCF - расширяемый фреймворк для работы с разными content repositories, откуда можно извлекать информацию для индексирования и прочей обработки. Фреймворк очень интересный, и я надеюсь его запользовать в одном из своих проектов.

Функциональное программирование на F#Также в апреле мне попала на руки книга Дмитрия Сошникова Функциональное программирование на F# (спасибо издательству ДМК-Пресс за предоставленный файл), и я ее неспешно прочитал...

Книга чисто практическая, начинается с примеров, и все остальное вводится по мере повествования. Это же является и ее недостатком - нет подробностей о лямбда-исчислении и синтаксисе языка - для этого требуется обратиться к другим источникам, типа перевода курса лекций Джона Хариссона, и переводу орейлевской книги про F#, которая вышла в издательстве "Символ-Плюс" (я ее правда не читал в переводе).



Описываются все основные приемы программирования - функциональный, императивный и объектно-ориентированный. Достаточно хорошо описаны расширения языка типа активных паттернов, async, etc.



Ну и стоит отдельно упоминуть 7-ю главу, которая содержит примеры решения задач в различных областях - "научное" программирование, графика, программирование для Windows Phone 7, веб-программирование, включая использование F# с ASP.Net, работу с веб-сервисами и т.п.

Я думаю, что книга может быть полезна студентам и начинающим программистам для использования в качестве сборника примеров решения задач. А затем, если язык заинтересует, то можно переходить и к другим книгам...
 •  0 comments  •  flag
Share on Twitter
Published on May 14, 2011 04:26

April 13, 2011

Новый номер журнала «Практика функционального программирования»

Вышел свежий (7-й) номер журнала «Практика функционального программирования». В новом номере вы можете прочитать следующие статьи:

Язык РЕФАЛ — взгляд со стороны. Бойко Банчев расскажет о сущности, истории и современном состоянии языка РЕФАЛ. Circumflex — веб-фреймворк на Scala comme il faut. Александр Темерев даст урок использования этого «обезжиренного» и гибкого веб-фреймворка, написанного на Scala. Разработка алгоритма обнаружения движения в среде программирования Mathematica. Вадим Залива расскажет об опыте прототипирования такого алгоритма при разработке iPhone-приложения iSentry. Как написать LDAP-сервер на Erlang и Как написать LDAP-сервер на Си. Максим Сохацкий и Олег Смирнов обменяются любезностями со Львом Валкиным: Максим и Олег похвалят Erlang за то, что на нем можно за 20 минут написать LDAP-сервер, а Лев докажет, что дело тут вовсе не в Erlang. Продолжения в практике. Алексей Вознюк расскажет об использовании продолжений для упрятывания асинхронности кода за обыкновенным «последовательным» синтаксисом. Суперкомпиляция: идеи и методы. Илья Ключников, расскажет о суперкомпиляции, построив поразительно компактный и понятный суперкомпилятор простого языка, и покажет, что она применима не только для удивительно мощной оптимизации многих классов программ, но имеет и другие неожиданные применения.

Кроме электронной версии, этот номер доступен и в печатном виде!

Обсудить статьи вы можете в fprog@ЖЖ.

 •  0 comments  •  flag
Share on Twitter
Published on April 13, 2011 05:23

April 7, 2011

Monad tutorial для кложуры

Серия слайдкастов про монады на примере Clojure сделанный Brian Marick.

Первая лекция начинается со следующей фразы "Существует предсказание, что когда-то, каждый человек на земле сделает monad tutorial, и высшая цель вселенной будет достигнута, и все человечество попадет в рай..." :-)
 •  0 comments  •  flag
Share on Twitter
Published on April 07, 2011 01:40

April 5, 2011

Реклама в журнале "Практика функционального программирования"

Может быть это заинтересует кого-то из моих читателей - вы можете разместить свои вакансии (или другую рекламу) в журнале "Практика функционального программирования". Преимуществом такой рекламы является достаточно большая аудитория разработчиков ПО, которые, как мне кажется, имеют хороший уровень образования. Подробности тут
 •  0 comments  •  flag
Share on Twitter
Published on April 05, 2011 00:50