LINUX.ORG.RU

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

 , ,


0

0

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

Первый номер журнала посвящён погружению в предмет функционального программирования и состоит более чем из сотни страниц.

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

Пожелания/замечания по оформлению и статьям можно размещать здесь

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

★★★

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

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

>> Я в ступоре. Что делать с цифирями 9 и 771?
> признайтесь, это троллинг


Это не троллинг. Кто мешал авторам написать, что затем нужно остаток от деления конкатенировать в строку результата, а результат целочислительного деления (если он не равен нулю) снова передать на обработку этому же алгоритму?

xintrea ()

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

Оо! Здорово! Действительно интересно почитатать! За оформление: 5 из 5 :) Спасибо! Ждем следующего номера :)

digiwhite ()

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

А Вы след. статью почитайте, там всегда можно отдохнуть душой, читая строки, наподобие этой: "Пётр негодует: закэшированное значение
totalPrice не было обновлено при изменении цен продуктов"

impfp ()

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

Здорово, как раз собирался "погрузиться" в functional programming :-)

sinister666 ★★ ()

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

Попытаюсь почитать...

eduard_pustobaev ★★ ()

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

> Это не троллинг. Кто мешал авторам написать, что

Отсутствие тебя, как ревьювера статьи?

mv ★★★★★ ()

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

>кто такие клозы?

Есть подозрение, что имелись ввиду кляузы (AKA clause).

DonkeyHot ★★★★★ ()

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

>Это не троллинг. Кто мешал авторам написать, что затем нужно остаток от деления конкатенировать в строку результата, а результат целочислительного деления (если он не равен нулю) снова передать на обработку этому же алгоритму?

Читайте парой строчек выше

>Сам алгоритм прост: необходимо делить заданное число на основание (в задавае- мой задаче, стало быть, на 16), собирать остатки и продолжать этот процесс до тех пор, пока в результате деления не получится 0. Полученные остатки необходимо переве- сти в строковый вид посимвольно (учитывая шестнадцатеричные цифры), после чего конкатенировать все эти символы в результирующую строку в правильном направ- лении (первый остаток должен быть последним символом в результирующей строке, второй — предпоследним и т. д.).

Избирательное чтение?

zabivator ()

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

А что делать тем, кто ЖеЖой не пользуется из принципа? Вот мне, например?

gns ★★★★ ()

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

Большой сэнкс! Такого чтива действительно нам всем не хватает.

Deleted ()

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

+1

Не пользуюсь не из принципа, а по той причине, что от ЖЖшного (извиняюсь) дерьма часто закипает моск.

Deleted ()

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

Начал читать. Вроде интересно...
Автор молодец

mrhx ()

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

>Это не троллинг. Кто мешал авторам написать, что затем нужно остаток от деления конкатенировать в строку результата, а результат целочислительного деления (если он не равен нулю) снова передать на обработку этому же алгоритму?

Это в школе рассказывают. когда системы счисления проходят. Авторы, наверное, не думали, что их будут читать дети.

Laz ★★★★ ()

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

>> Читайте парой строчек выше
>> Сам алгоритм прост: необходимо делить заданное число на основание (в задавае- мой задаче, стало быть, на 16), собирать остатки и продолжать этот процесс до тех пор, пока в результате деления не получится 0. Полученные остатки необходимо переве- сти в строковый вид посимвольно (учитывая шестнадцатеричные цифры), после чего конкатенировать все эти символы в результирующую строку в правильном направ- лении (первый остаток должен быть последним символом в результирующей строке, второй — предпоследним и т. д.).

>> Избирательное чтение?


Это написано про классический структурный подход, тут вопросов нет, все подробно.

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

xintrea ()

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

> Остановился на 22-й странице, это читать невыносимо.

А я прочитал всё кроме шашек и монад - по-моему всё понятно, разве что для новичка в ФП местами могут быть неожиданные слова.

Bohtvaroh ★★★★ ()

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

А не многовато ли "более сотни страниц" на одно погружение? :) Или грузят так, что потом не вылезешь? :)))

Вообще, ФП последнее время держится на двух легендах:

1. ФП хорошо параллелятся.
Адвокатура в сторону императивных языков: НУ И ЧТО? Для них тоже есть "параллельные библиотеки". Более того - большинство кода как раз НЕраспараллеливаемые участки, это вам не факториалы считать!

2. На ФП быстрее/лучше/кавайнее/короче писать код. Чушь собачья, более того - и сам код ЛЮБОГО ФЯ - это тихий ужас. Возьмите любой рецепт - он ИМПЕРАТИВЕН, ибо только так понятен нашему ОДНОПОТОКОВОМУ мозгу. А касательно "короче", так это чисто вопрос библиотек. Есть функция синуса - напишешь короче, нету - будет ТАКОЙ ЖЕ ДЛИННЫЙ КОД.

Ну и вообще, ввиду забытости, маргинальное ФП крутится где-то в академической среде, не представляя особой ценности для реального кодинга. Про их сравнение с ДотНЕТом вообще можно не говорить - мелкософт убежал далеко вперёд.

matumba ★★★★★ ()

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

> Остановился на 22-й странице, это читать невыносимо.

:)))))))))) Это как читать про эзотерику - пока всё в теории, на которую натянули удобные примеры - вдохновляет, но чем дальше читаешь, тем больше понимаешь - столько мне не выкурить! :)

> Но надо, хотя бы, обладать умением последовательно излагать свои мысли.


га-га! :)) ФП для того и придумали, чтобы делать всё параллельно - оттуда и мышление пишущих. Как же страшно далеки они от народа....

matumba ★★★★★ ()

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

> data BoolU = FALSE | TRUE | Unknown
> FALSE && x = FALSE

> TRUE && x =x

> Unknown && FALSE = FALSE

> Unknown && x = Unknown


>Что делает этот кусок кода на Хаскеле? Он что-то вычисляет? Он описывает, как что-то вычислять? Что является входными данными? Зачем нужна строка с элементом BoolU, если далее BoolU нигде не упоминается?


Вроде понятно всё.
В первой строке определяется пользовательский тип данных BoolU, область значений которого = { FALSE, TRUE, Unknown }. Далее для только что определённого типа вводится операция &&. В данном случае для её определения достаточно описать её в четырёх выражениях.
Поскольку это декларативная запись, здесь ничего не вычисляется, а, как вы верно заметили, описываются правила вычисления (конкретно здесь — применения операции &&).

Вот тут про это очень доходчиво написано: http://learnyouahaskell.com/making-our-own-types-and-typeclasses

env ★★☆ ()

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

>Ну и вообще, ввиду забытости, маргинальное ФП крутится где-то в академической среде, не представляя особой ценности для реального кодинга. Про их сравнение с ДотНЕТом вообще можно не говорить - мелкософт убежал далеко вперёд.

Я бы не был столь категоричен на вашем месте. Да, действительно, если говорить о бухгалтерском софте, гигантских ERP и прочих подобных штуках, то тут вопросов нет, .NET и Java. Для кодера-за-тыщщу-баксов-в-месяц ничего кроме азов ООП (а то и ПП) и правда не нужно.

Когда появляется сложная логика, выясняется, что её в разы проще закодировать в прологе, например. Ну и вообще декларативный подход в общем применяется много где (скажите ещё, что SQL-запросов никогда не писали).

Спросите у Алекса Отта, например, где он работает и с чем ему приходится иметь дело.

env ★★☆ ()

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

>ФП для того и придумали, чтобы делать всё параллельно - оттуда и мышление пишущих.

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

env ★★☆ ()

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

> А я цитато даю про функциональный подход, в описании которого половина действий почему-то пропущена.

В ней последовательность действий в алгоритме РОВНО ТАКАЯ же. Конкретно в описании функционального решения продублирован кусок этого алгоритма для акцентирования внимания.

zabivator ()

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

> Ну и вообще, ввиду забытости, маргинальное ФП крутится где-то в академической среде, не представляя особой ценности для реального кодинга. Про их сравнение с ДотНЕТом вообще можно не говорить - мелкософт убежал далеко вперёд.

и что-же тогда MS вовсю тянет функциональщину в свои продукты? LINQ, F# за примеры подойдут?

P.S. насчет сравнения дотнета с ФП - это сравнение теплого с мягким

ott ★★★★★ ()

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

осторожно! жир сочится так, что можно поскользнуться на первом шагу :)

psv1967 ★★★★★ ()

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

>Да, действительно, если говорить о бухгалтерском софте, гигантских ERP и прочих подобных штуках, то тут вопросов нет, .NET и Java.

Вообще да, есть у меня впечатление, что для осознания полезности ФП необходимо тесное соприкосновение с более нетривиальными, заковыристыми и мозголомательными задачами. Я вот пока не осознал. С декларативным подходом всё более понятно. Но тут уже такое дело - специфический инструмент для специфических задач, там где уместен - рулит, но универсальностью не блещет.

P.S. Это личное мнение, не сильно компетентное.

eduard_pustobaev ★★ ()

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

> Но тут уже такое дело - специфический инструмент для специфических задач, там где уместен - рулит, но универсальностью не блещет

А универсальный инструмент это такой бредовый миф. Или мечта человечества, как вариант.

cab ★★★★ ()

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

> Адвокатура в сторону императивных языков: НУ И ЧТО? Для них тоже есть "параллельные библиотеки". Более того - большинство кода как раз НЕраспараллеливаемые участки, это вам не факториалы считать!

Курить понятия «неразделяемые данные» и «отсутствие побочных эффектов». Некоторые ФП вроде Эрланга могут практически любой кусок кода превратить в параллельно выполняющиеся инструкции.

> На ФП быстрее/лучше/кавайнее/короче писать код. Чушь собачья, более того - и сам код ЛЮБОГО ФЯ - это тихий ужас.

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

Тот же Эрланг требует день на освоение синтаксиса. Через неделю можно начинать писать проекты, которы в жизни на С++ не напишешь. Советую поискать книжку http://www.pragprog.com/titles/jaerlang/programming-erlang — там с нуля (!) shoutcast-server создается. И это — книга _начального_ уровня

dmitriid ()

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

Беречь мозг -- это основной принцип. :) Производственная гигиена, можно сказать... :)

gns ★★★★ ()

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

> осторожно! жир сочится так, что можно поскользнуться на первом шагу :)

Это не жир. Оно и в самом деле такое тупое.

tailgunner ★★★★★ ()

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

Возможно оффтоп, но все-таки спрошу:
1. Несколько человек собирались перевести (сделать русские субтитры) к видеокурсам по SICP, но дальше 1й "а" серии им энтузиазма не хватило; проект уже год как заброшен. =>
Может, для увеличения количества использующих ФП ст0ило бы возобновить тот перевод? Заранее спс за комментарии.

2. <sumo-troll-mode>
А где интервью с Виталием Луговским?!! O_o
</sumo-troll-mode>

wingless ()

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

честно говоря, я думал над этим проектом, но посмотрел несколько серий курса по SICP (читаемого в Berkley, а не старого), понял что там все абсолютно понятно и без субтитров - лектор говорит очень отчетливо и не быстро

ott ★★★★★ ()

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

> Да, действительно, если говорить о бухгалтерском софте, гигантских ERP и прочих подобных штуках, то тут вопросов нет, .NET и Java

Ненене, тут как раз очень удобно хаскелем разбирать отходы жизнедеятельности указанных дотнетов и джав, то есть анализировать логи и данные и делать умные выводы или рисовать понятные схемы. Сам именно этим и занимаюсь применительно к сапу (code.google.com/p/hixay).

chumpa ()

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

>> data BoolU = FALSE | TRUE | Unknown
>> FALSE && x = FALSE

>> TRUE && x =x

>> Unknown && FALSE = FALSE

>> Unknown && x = Unknown


> В первой строке определяется пользовательский тип данных BoolU,

> область значений которого = { FALSE, TRUE, Unknown }. Далее для

> только что определённого типа вводится операция &&. В данном случае

> для её определения достаточно описать её в четырёх выражениях.

> Поскольку это декларативная запись, здесь ничего не вычисляется, а,

> как вы верно заметили, описываются правила вычисления (конкретно

> здесь — применения операции &&).


А почему именно "x" используется? Это такое неявное умолчание языка, обозначать через "x" обрабатываемое значение? Или можно было написать любое имя переменной, и хаскель бы это тоже схавал?

xintrea ()

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

>честно говоря, я думал над этим проектом, но посмотрел несколько серий курса по SICP (читаемого в Berkley, а не старого), понял что там все абсолютно понятно и без субтитров - лектор говорит очень отчетливо и не быстро

Ссылочку можно?

Kostafey ()

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

>А почему именно "x" используется? Это такое неявное умолчание языка, обозначать через "x" обрабатываемое значение? Или можно было написать любое имя переменной, и хаскель бы это тоже схавал?

Можно задать любое имя (кроме «_»). Хаскеллю не важно, TRUE && x = x или TRUE && yetanothername = yetanothername, код генерируется одинаковый. В Haskell нету переменных с состоянием, это только параметры функций. В конце концов не всё ли равно, напшиете вы
int r (int x) { return x; }
или
int returnme ( int r (int yetanothername) { return anothername; }

Вообще конечно у Романа хороший справочник, но учебник не очень удачный. И вводные статьи писать не получается. Если хотите разобраться с нуля, лучшего чем lyahfgg (на который я кидал ссылку выше) не найти.

env ★★☆ ()

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

Я немного о другом говорил. Анализ логов в принципе задача для одного человека, и тут эффективным будет то, что ему больше всего знакомо/удобно. А разработка ERP какой — как правило работа для тысячи китайцев. В таких условиях выбора в общем-то особого не остаётся.

env ★★☆ ()

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

>А разработка ERP какой

Смотря что понимать под разработкой ERP. У любой системы такого рода должна быть крайне высокая конфигурируемость => управление метаданными, встроенный язык, визуальные редакторы.

А уж миллионы китайцев будут писать под нее конфигурации.

Macil ★★★★★ ()

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

> Ну и вообще, ввиду забытости, маргинальное ФП крутится где-то в академической среде, не представляя особой ценности для реального кодинга. Про их сравнение с ДотНЕТом вообще можно не говорить - мелкософт убежал далеко вперёд.

F#?

вырдикт : апстену

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