LINUX.ORG.RU

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

 , , , , , ,


0

0

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

  • Инструменты интроспекции в Erlang/OTP. Максим Трескин
  • Экономия ошибок. С. Зефиров, А. Сафронов, В. Шабанов, Е. Мельников
  • Введение в F#. Евгений Лазин, Максим Моисеев, Давид Сорокин
  • Лисп — философия разработки. Всеволод Дёмкин, Александр Манзюк
  • Оптимизирующие парсер-комбинаторы. Дмитрий Попов
  • Модель типизации Хиндли — Милнера и пример её реализации на языке Haskell. Роман Душкин

Также в этом номере опубликованы результаты конкурса, который был объявлен в 3-м номере журнала.

>>> Подробности

★★★★★

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

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

вот вам цитата Линуса:

Может его ещё в жопу поцеловать? У меня своё мнение есть, не менее ценное.

mv ★★★★★
()
Ответ на: комментарий от CL-USER

>> разве не пригодилось бы вам средство по-быстрому переписать кусок программы на Си (как раз это и есть Cython)?

здесь эта сущность просто не нужна, как уже сказали.

То есть переписывать критические куски на Си лисперам не приходится никогда-никогда?

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

> всё правильно говоришь, да - там белая магия :) при определенной сноровке белая магия неотличима от инжиниринга ;)

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

Кстати, забыл подписаться. Эти 3 сообщения от меня. --vseloved (Всеволод Дёмкин)

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

> у тебя они пока что даже и не начались; конкретно отвечать на твои понтовые неясные намеки, которые даже не распарсить, я не собираюсь
наводящий

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

ждем-с; можно даже и послезавтра; но если это способ слива — в следующий раз я тебе об этом напомню.


ok, напоминаю про prolog встроенный в scala

ps
не все в Московском часовом поясе живут

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

> Может его ещё в жопу поцеловать?

эти лисперы такие затейники

У меня своё мнение есть


у всех есть

не менее ценное


его мнение влияет на что-то, твое - нет

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

> Я вообще-то критиковал аргументацию про «количество людей». БОльшинство людей на планете - суть биологический шлак

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

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

> среднее время билда после мелких изменений меньше 2 сек - специально только что проверил

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

CL-USER
()
Ответ на: комментарий от lester

его мнение влияет на что-то, твое - нет

Тебе так кажется. Opensource тем и прекрасен, что в твоём проекте твоё мнение - самое главное ;)

Нет, линеейчкой не измеряю, от разницы в размерах моих и его проектов не страдаю.

mv ★★★★★
()
Ответ на: комментарий от CL-USER

> а если поменять шаблон?

а вот этим отличается хорошее проектирование от «интерактивного программирования», т.к. надо понимать что пишешь не абы как, а так чтоб потом ничего не ломать ни людям, ни себе

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

> Opensource тем и прекрасен, что в твоём проекте твоё мнение - самое главное ;)

у тебя есть Opensource-проект? покажешь?

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

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

Объективно, лисп - это одно из наиболее сильных явлений в истории программирования. Не всем в нём всё нравится (мне тоже), но отрицать полную никчёмность его идей и технологий - ну смешно же.

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

> То есть переписывать критические куски на Си лисперам не приходится никогда-никогда?

если сильно прижмет, а в чем проблема? изменил Ц-либу, пересобрал, перегрузил в РЕПЛ. поехали дальше.

CL-USER
()
Ответ на: комментарий от lester

>> вот я бы не отказался от hotpatching-а с возможностью добавить несколько дополнительных аргументов

для какого рода программ?

для небоевых программ программ под отладчиком и даже (ересь!) возможно для боевых

упрощенный пример: допустим, у нас есть функция

char* parse_up_to(char* what, char* upto)

и тут вдруг выясняется, что иногда она должна и строчку, соответствующую upto, проглатывать (а в общем случае она останавливается ровно перед ней)

тут очевидно просится флажок добавить:

char* parse_up_to(char* what, char* upto, bool eat=false)

и даже может быть и возможно, что захочется это сделать и на боевом сервере, чтобы проверить, что других багов не осталось (хотя это и ненадежно)

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

> но отрицать полную никчёмность его идей и технологий - ну смешно же.

эта пять

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

> я не совсем понял, что вы хотите, вы написали, про добавление фич «онлайн» - в чем проблема то? плагин может и должен получить доступ к внутренним данным программы и никаких проблем тут нет

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

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

> а вот этим отличается хорошее проектирование от «интерактивного программирования», т.к. надо понимать что пишешь не абы как, а так чтоб потом ничего не ломать ни людям, ни себе

вот прям так, на листе, дизайнится идеальная программа? Потом без ошибок имплементится на цепепе?

CL-USER
()
Ответ на: комментарий от archimag

> Т.е. программирую на CL и имею возможность осмысленно нарушать корретность всей программы, что бы добиться нужного эффекта в проблемном коде.

*так* сразу и надо было писать; над этим можно подумать — идея непривычная

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

> во время разработки я предпочту взять в руки лист бумаги и карандаш, чем писать код построчно и сразу проверять

+1, и думаю здесь достаточно часто лист бумаги и карандаш победят по скорости лисп, а не только «статический» с++

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

> вот прям так, на листе, дизайнится идеальная программа?

нет конечно, идеальных программ не бывает, но бывают хорошие и плохие

Потом без ошибок имплементится на цепепе?


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

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

во время разработки я предпочту взять в руки лист бумаги и карандаш, чем писать код построчно и сразу проверять

+1, и думаю здесь достаточно часто лист бумаги и карандаш победят по скорости лисп, а не только «статический» с++

Достаточно всего лишь несколько раз сделать неправильную модель, реализовать её на 80% и понять, что модель была говном ;) Потом то самое чутьё приходит, которое опытного граблехода от молодняка отличает.

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

> для добавления новых фич такое точно не надо такое надо если hook не предусмотрен и собрали не vs2010, только остается еще помолится что функция не заинлайнилась еще где нибудь :)

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

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

и чем же это отличается от разработки на CL?

CL-USER
()
Ответ на: комментарий от mv

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

как раз молодняк и не «страдает» проектированием, а пишет все сходу

lester ★★★★
()
Ответ на: комментарий от CL-USER

>> То есть переписывать критические куски на Си лисперам не приходится никогда-никогда?

если сильно прижмет, а в чем проблема? изменил Ц-либу, пересобрал

Я сказал «переписывать». Это значит, с Лиспа на Си. Про «изменил Ц-либу» речи не было.

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

> надо если hook не предусмотрен

а вот что и куда надо встраивать - должно быть четко продумано, иначе какой-нибудь умник на лиспе напишет, второй сбоку прилепит «улучшайзер», получив доступ к внутренним данным - и все навернется нахрен

lester ★★★★
()
Ответ на: комментарий от CL-USER

> и чем же это отличается от разработки на CL?

давайте ссылку на код - чтоб было видно, что на CL так и пишут

lester ★★★★
()
Ответ на: комментарий от CL-USER

>> Это значит, с Лиспа на Си.

зачем?

То есть нет. Ну, круто, чо.

у нас уже есть оптимизирующие компиляторы.

У Си есть компиляторы покруче, а всё равно иногда делают ассемблерные вставки.

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

> а вот что и куда надо встраивать - должно быть четко продумано, иначе какой-нибудь умник на лиспе напишет, второй сбоку прилепит «улучшайзер», получив доступ к внутренним данным - и все навернется нахрен

в том то и дело что в лиспе в этом месте сбоку и прямо почти не отличаются и без костылей

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

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

вспомним например nginx, который умеет рестарт что-то вроде «все процессы со старой версией бинарника по завершнии работы умирают, запускаются только процессы с новой версией бинарника»

тут задачу надо описывать намного подробнее; в случае значительных общих данных в качестве решения может быть sql или ООП-вариант, по-горячему совместимый по данным

его можно было бы сравнить с make-instances-obsolete, и это было бы интересно

ok, напоминаю про prolog встроенный в scala

я там потерял интерес после того, как выяснилось, что эта фигня не в компайл-тайм — это уже любой программер сделает, скучно

(но не ответил, кстати, корвину насчет «ооп-формы»)

ps не все в Московском часовом поясе живут

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

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

> в том то и дело что в лиспе в этом месте сбоку и прямо почти не отличаются и без костылей

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

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

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

по-моему стандартнейший юз-кейс для ООП

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

> давайте ссылку на код - чтоб было видно, что на CL так и пишут

да любая мало-мальски серьезная библиотека на CL. например bordeaux-threads: http://www.cliki.net/Bordeaux-Threads

там есть и интерфейс, представляющий експортированные символы пакета bordeaux-threads, куча реализаций CL, которые этот интерфейс реализуют:

src/
bordeaux-threads.lisp
condition-variables.lisp
default-implementations.lisp
impl-abcl.lisp
impl-allegro.lisp
impl-clisp.lisp
impl-clozure.lisp
impl-cmucl.lisp
impl-corman.lisp
impl-ecl.lisp
impl-lispworks-condition-variables.lisp
impl-lispworks.lisp
impl-mcl.lisp
impl-sbcl.lisp
impl-scl.lisp
pkgdcl.lisp
unsupported.lisp

+ тесты:

test/
bordeaux-threads-test.lisp

что не так?

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

я вот никак свою статью про построение ifsов на lispе не допишу, по идеи интересно должно получиться, там неожиданная склейка lispа и питона используется .. странно ведь генерировать lisp на питоне, когда есть макросы

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

AFAIK, в Clozure CL можно писать на встроенном ассемблере.

Вообще в CL компилятор встроен в рантайм. Там же есть low-level доступ к его кишкам. Можно его расширять в том же рантайме.

CL-USER
()
Ответ на: комментарий от mv

> Программисты, не понимающие лиспа - программисты? %)

таки да, и даже более того: совсем не просто найти юзкейсы, где современные языки (+обвязка) сливают лиспу

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

> тот же sbcl сливает gcc по полной

выше портабельного ассемблера не прыгнешь, не так ли? Хотя очень даже близко.

CL-USER
()
Ответ на: комментарий от CL-USER

> выше портабельного ассемблера не прыгнешь, не так ли? Хотя очень даже близко.

очень даже близко.

т.е. сливает

а все потому, что не хватает абстракций, которые в с++ имеются

вот love5an пытался портировать мой код, измеряющий скорость эксепшенов, в лисп, и попал на 2-4 кратное отставание из-за того, что часть битов в инт-е отдается под тип, и это ему побороть не удалось

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

> Да и вообще журнал 'практика фп', а обсуждают какой-то цлисп.

да у тебя на аватаре, какая-то курица-мутант двухглавая, с крестом. Очень на цепепе похожа. да.

CL-USER
()
Ответ на: комментарий от mv

> БОльшинство людей на планете - суть биологический шлак, только зря потребляющий ресурсы.

Они не шлак — они планктон, с которого кормятся программисты. Кому бы мы писали гуйню и более сложные вещи без них?

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

> куча реализаций CL

это п%ц :) ну и я имел ввиду реализацию не под каждый отдельный «лисп» - это таки не так связано с проектированием, как с жеванием кактуса :)

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