?

Log in

No account? Create an account
ru_declarative [entries|archive|friends|userinfo]
ru_declarative

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Журнал «Практика функционального программирования» [Jul. 20th, 2009|09:57 pm]
ru_declarative

ru_declarative

[lionet]
Вашему вниманию представляется первый выпуск журнала, посвящённого практике функционального и декларативного программирования. Мы ставим своей задачей помочь вам сориентироваться в инструментарии функционального программирования, в используемых в функциональной парадигме подходах к декомпозиции задач, способах упрощения программирования и снижения количества дефектов в разрабатываемых системах.

http://fprog.ru/

Первый номер журнала посвящён погружению в предмет функционального программирования. Вводные статьи Сергея Зефирова «Лень бояться» и Романа Душкина «Функции и функциональный подход» затрагивают философию парадигм программирования. Более практически направленная часть журнала представлена статьёй Евгения Кирпичёва «Изменяемое состояние: опасности и борьба с ними», классифицирующей типы проблем, возникающих при небрежном использовании сущностей с изменяемым состоянием, и следующей за ней статьёй Дмитрия Астапова «Давно не брал я в руки шашек», на протяжении нескольких страниц раскрывающей подход проектирования «сверху вниз» на подробном примере написания игры в шашки на языке Haskell. Статья Дэна Пипони «Моноиды в Haskell и их использование» в переводе Кирилла Заборского простым языком обьясняет практическое применение моноидов для создания элегантных полиморфных алгоритмов. Номер завершается внушительным «Обзором литературы о функциональном программировании» Алексея Отта, содержащим множество ссылок на русскоязычную и англоязычную литературу по разным языкам и аспектам декларативного программирования.

Приятного чтения!
linkReply

Comments:
Page 4 of 4
<<[1] [2] [3] [4] >>
[User Picture]From: chestnyi.blogspot.com
2009-07-23 06:08 pm (UTC)

Разработчики саботируют XML?

Неужто не нашлось пары слов про XSLT и XQuery?
(Reply) (Thread)
[User Picture]From: antilamer
2009-07-23 06:22 pm (UTC)

Re: Разработчики саботируют XML?

Тематика ни одной из статей не предполагала их упоминания.
(Reply) (Parent) (Thread)
[User Picture]From: bik_top
2009-07-23 07:49 pm (UTC)

Errata

Есть несколько замечаний относительно статьи Евгения Кирпичёва, в основном касательно типографики. Если, конечно, вы не против занудных придирок :)

37 «totalPrice равно либо -1, либо истинной суммарной цене содержащихся в корзине продуктов» — «-1» вместо «−1».
Заменить «-1» на «$-1$».
39 «Корректная реализация этой структуры данных - на удивление трудное дело» — дефис вместо тире.
Заменить «~-» на «~---».
41 Список после предложения «В классе Rectangle спецификация операций setWidth и setHeight такова» не очень красиво отформатирован. Выравнивание по ширине неоправдано, слишком много пустого места вокруг стрелок.
Возможный вариант решения — вставить жёсткий разрыв строки перед словом «после» или переверстать на три строчки:
  • r.getWidth() == w && r.getHeight() == h
    ⇒ после r.setWidth(w2) верно
    r.getWidth() == w2 && r.getHeight() == h
41 Картинка «Рис. 3.3. Круги ада» находится вне раздела «3.3 Круги ада», не сразу понятно, как она соотносится с контекстом.
Я так понимаю, что картинка «плавающая». И несмотря на то, что команда типа \begin{figure}, видимо, формально находится внутри секции 3.3, LaTeX расположил её вне. Возможный вариант решения проблемы — засунуть команду вставки иллюстрации куда-нибудь в середину раздела, скажем, между пятым и шестым «кругом ада», тогда при любой вёрстке картинка будет расположена внутри секции.
42 Сокращение «п.2» в пятом «круге ада» набрано без пробела. Возможно, будет лучше вставить тонкий неразрывный пробел.
Заменить «п.2» на «п.\,2».
42 «5. Двухфазный цикл жизни. Это разновидность п.2...» Там точно имеется в виду пункт 2, или всё-таки 4?
Заменить «п.2» на «п.\,4».
53 «Количество трасс при N потоках, у каждого из которых K состояний, можно оценить как KN» — повторение фразы из «девятого круга» в конце пункта 3.3.
Убрать предложение, или вставить «напомним, что...»
(Reply) (Thread)
From: ext_188264
2009-07-24 07:08 am (UTC)

Re: Errata

В дополнение к этому, незначительные замечания:
В десятом пункте из списка литературы ссылка http://ru.wikipedia.org/wiki/МИР_(компьютер) (http://ru.wikipedia.org/wiki/МИР_(компьютер)) указывает на «\Uffffffff\Uffffffff»
По крайней мере в Evince, вариант для чтения с экрана.

И совершенно незначительный нюанс, что часть тире в списке литературы остались как два пересекающихся дефиса, засчёт чего в середине тире визуально выглядит толще, чем по краям (Пример (http://ipicture.ru/Gallery/Viewfull/21242475.html))
(Reply) (Parent) (Thread) (Expand)
From: (Anonymous)
2009-07-24 06:36 am (UTC)
Для 4" экрана, размер 19" варианта нормально, но можно ли шрифт на пару пунктов увеличить?
(Reply) (Thread)
[User Picture]From: lionet
2009-07-24 07:34 am (UTC)
Вариант для eBook — это как раз вариант для 19" экрана с увеличенным ровно на два пункта (10→12) шрифтом.
(Reply) (Parent) (Thread) (Expand)
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
[User Picture]From: senormouse
2009-07-25 07:02 pm (UTC)
Стр. 13, сноска: "Call-by-name и call-by-need Тьюринг-полны, в то время как основная для большинства языков семантика сall-by-value не является Тьюринг-полной. Условные конструкции с семантикой сall-by-name обеспечивают таким языкам Тьюринг-полноту." --- это что имелось в виду?
(Reply) (Thread)
[User Picture]From: antilamer
2009-07-25 07:34 pm (UTC)
Если в типичном языке с семантикой call by value сделать условные операторы тоже call by value, то они перестанут быть тьюринг-полными.

Правда, относительно лямбда-исчисления, например, это неверно: чистое call-by-value лямбда-исчисление тьюринг-полно.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: bik_top
2009-07-26 02:48 pm (UTC)

Errata 4

Есть несколько замечаний к статье Дмитрия Астапова. Номера разделов и страниц относятся к ревизии 295 (2009-07-23) файла practice-fp-1-screen.pdf.

4.4, 65 Сноска 11 внизу этой траницы очень, очень страшная! Она начинается на 65-ой странице, а продолжается почему-то аж на 67-ой.
Сделайте с ней что-нибудь! Возможно, требуется два прогона TeX'а, прежде чем он сможет оптимально расположить текст сносок.
4.5, 68
kingAttack coords deltaRow deltaColumn
| emptySqrsThenTargetAndEmptySqrBehind squares = undefined
| otherwise                                                 = []
— равенство уехало слишком вправо.
Если в verbatim-тексте есть табы, то заменить их на пробелы.
4.6, 69 «объединение результатов работы checkDiagonals, генерацию списков клеток, лежащих на диагонали и т.п.» — не хватает тонкого неразрывного пробела.
«т.п.» ↦ «т.\,п.»
4.6, 69 4.6. Сбор информации о доступных ходах: вторая по-
пытка
Убрать перенос в заголовке. К тому же, заголовок выравнивается по ширине, этого быть не должно, он должен быть выровнен по левому краю (\raggedright, или как там его).
4.6, 69 «Поскольку, согласно обговоренным правилам...»
Быть может, «оговоренным»? Реквестирую в каменты Grammar Nazi.
4.9, 69 «4.9. Выход в <<дамки>> и отображение состояния доски» — в оглавлении некорректно отображаются «ёлочки».
Попробовать задать «ёлочки» литерально.
(Reply) (Thread)
[User Picture]From: lionet
2009-07-26 04:23 pm (UTC)

Re: Errata 4

4.4-65: там уже и так три прогона текста. Посмотрю.
4.5-68: fixed
4.6-69: fixed globally
4.6-69: not fixed: в заголовке \raggedright или \nohyphen{} не работает. надо придумать.
4.6-69: will check with corrector
4.9-74: fixed
(Reply) (Parent) (Thread)
From: (Anonymous)
2009-07-27 02:04 pm (UTC)

Путаница с call-by-name

Статья "Лень бояться": разбираются call-by-value, call-by-name и call-by-need.
Тут какая-то путаница, смешаны апельсины с помидорами. Call-by-name это антоним к call-by-reference, как во всех нормальных языках, кроме Алгола-60 (и может быть Алгола-68). Call-by-name это текстуальная подстановка параметра в тело подпрограммы, этакое макропрограммирование. Соответственно, возникают удивительные проблемы: например функция swap(x,y) меняющая у своих параметров значения оказывается совсем не тривиальной. Действительно, она должна правильно работать при вызове swap(x[i],i). Попробуйте на досуге написать такую функцию! Засада в том, что при присваивании нового значения второму аргументу меняется элемент массива, на который указывает первый элемент.

На сколько я знаю, никакие ленивые языки не страдают такими патологиями, как Алгол-60. Так что call-by-name это вовсе не переходный вариант от by-value к by-need, а боковая, тупиковая ветка.
(Reply) (Thread)
[User Picture]From: thesz
2009-07-27 07:24 pm (UTC)

Re: Путаница с call-by-name

Да, да. Оттуда и пошли параллельные присваивания.

Спасибо за критику. ;)
(Reply) (Parent) (Thread) (Expand)
From: (Anonymous)
2009-07-30 01:53 pm (UTC)
Ну так чего будет html, или фиг с ним и просто увеличите шрифт до 14.
(Reply) (Thread)
[User Picture]From: yaneblog
2009-07-30 05:15 pm (UTC)

Это нереально круто.

Ребята, большое вам человеческое спасибо. Материал отличного качества, читать очень интересно.
Пожалуйста, продолжайте.
(Reply) (Thread)
[User Picture]From: ru_pchel
2009-08-08 07:55 pm (UTC)
А можно на главной страницы версию файла указывать или некий другой механизм использовать чтобы сообщить о том, что можно слить новую, откорректированную версию.

Лично для меня не хватает кнопки Donate! :)

Спасибо большое за Ваше начинание, очень интересно!

P.S.: Можно было бы выкладывать html версию статьи с системой онлайн правок. Понятно что полностью автоматически не получится, но хоть опечатку или ошибку можно будет отметить быстро и просто.
(Reply) (Thread)
[User Picture]From: lionet
2009-09-10 12:43 pm (UTC)
Сделал Donate! :)
(Reply) (Parent) (Thread)
From: (Anonymous)
2009-09-30 08:24 am (UTC)

Книги для обучения ФП

Господа, в статье Алексея Отта "Обзор литературы о функциональном программировании" в качестве основной книги по общим вопросам ФП рекомендуется книга Харрисона и Филда "Функциональное программирование", 1993.

Основным языком программирования (ЯП) в этой книге является Hope, который в настоящее время мягко говоря не распространен (единственный ресурс, который я нашел -- это http://www.soi.city.ac.uk/~ross/Hope/).

Нет ли желания переложить книжку на более современный язык (а заодно и подготовить PDF в разных форматах, как в журнале), такой как Haskell (или OCaml/Caml Light)? Если уж учить язык, то пусть современный! А то книга отменная!
(Reply) (Thread)
From: kurilka
2009-09-30 08:34 am (UTC)

Re: Книги для обучения ФП

По-моему большого смысла в таком "переводе" нет, ну и ограниченность программиста 1 языком показывает солидную узость его взглядов. А книга сама не есть учебник по какому-то языку, а именно по функциональному программированию.
(Reply) (Parent) (Thread) (Expand)
From: macmath
2010-01-22 10:17 am (UTC)

Ленивые вычисления

В статье "Ленивые вычисления" есть такое предложение:

"Последовательности определений «x = f (z); y = g(x);» и «y = g(x); x = f (z);» имеют один и тот же смысл."
Не понимаю как они могут иметь один и тот же смысл. Ведь в обоих выражениях используется x: притом в обном он считывается, а в другом записывается. А значит порядок вычислений этих выражений важен.
(Reply) (Thread)
From: nealar
2010-01-22 10:34 am (UTC)

Re: Ленивые вычисления

В обоих определениях x и "считывается" и "записывается".
(Reply) (Parent) (Thread)
Page 4 of 4
<<[1] [2] [3] [4] >>