LINUX.ORG.RU

Сфера применения haskell, lisp, scheme? и др. функциональщины?


0

0

Эти языки интересны и сейчас начал изучение (со scheme по sicpу), но кроме просто интереса к языку еще интересно и то, где он применяется. Какие сферы применения этих языков, реально ли применять их знание (ну и функционального подхода в целом) на практике?

Что можете посоветовать почитать на тему функционального и не только программирования?

Пока читаю sicp, в дальнейшем планы на real world haskell или yaht, Кнута. Надо бы еще дискретную математику осилить, что по ней почитать? Желательно чтобы книга была достаточно строга, т.е. освещала не только практическую ее сторону.

>Надо бы еще дискретную математику осилить, что по ней почитать?

Мой конспект

xTERM ★★
()

Сферы применения в реальном мире - сны программиста, когда он наипется с C++ и ляжет спать ему снится лисп и бабы.

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

>> Надо бы еще дискретную математику осилить, что по ней почитать?

>Андерсона.

Особенно Дюймовочку

anonymous
()

>Сфера применения haskell, lisp, scheme? и др. функциональщины?

Писькомерство. )

А так, да, сфера применения одна - "enlarge your brain".

anonymous
()

Установи GNU Emacs и изучи ELisp по встроенной документации. Тогда ты сможешь писать расширения для Emacs, а это уже большое дело.

Скачай исходники Maxima и почитай их (после того как освоишь ELisp). Если будет интересно, изучи CLisp (Maxima на нём написана).

Вот и основные сферы применения lisp на данный момент: хакинг Maxima и GNU Emacs.

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

Да, неплохая книга, но многие вещи *или все* описаны весьма поверхностно. Но есть несомненный плюс, написано крайне понятно. *До сих пор помню лемму Бернсайда*

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

>Скачай исходники Maxima и почитай их (после того как освоишь ELisp). Если будет интересно, изучи CLisp (Maxima на нём написана).

Т.е. вы хотите сказать, что для изучения Common lisp'a, на котором написана Maxima, надо учить Emacs Lisp?

Или вы хотите сказать, что Maxima написана на реализации Common Lisp'a - Clisp'е?

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

> Да, неплохая книга, но многие вещи *или все* описаны весьма поверхностно.

Да, пожалуй. Но для начала вполне достаточно и этого. Отдельные темы можно копать глубже по мере необходимости.

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

> вы хотите сказать, что для изучения Common lisp'a, на котором написана Maxima, надо учить Emacs Lisp?

Нет, я хочу сказать, что ELisp проще в изучении, и уж если душа ляжет к нему, то можно и за CLisp браться.

ВАЖНЫЙ МОМЕНТ: любой ЯП следует изучать на примерах в первую очередь, благо СПО нынче много, а в случае с Emacs и ELisp исходники всегда под рукой, и их можно протранслировать одной-единственной командой.

MATAH
()

ИМХО -- академические исследования.

И зарабатывание бабла на лохах, что более чем успешно продемонстрировал Пол Грэм.

Die-Hard ★★★★★
()
Ответ на: комментарий от MATAH

Не стоит с elisp начинать, imho. Всё таки dynamic scoping может сильно исказить представление о лиспе.

Hjorn
()

Вычисления факториалов, чисел фибоначчи и потрясание пиписькой на форумах

anonymous
()

> кроме просто интереса к языку еще интересно и то, где он применяется. Какие сферы применения этих языков, реально ли применять их знание (ну и функционального подхода в целом) на практике?

Создатель Дельфи, Хайзелберг, утверждает публично, что будущее за функциональщиной и метапрограммированием. Если уж он так считает, то остальным точно пора бегом осваивать это дело.

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

> Нет, я хочу сказать, что ELisp проще в изучении,

Dynamic scoping мозг съест. Опасно.

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

> ИМХО -- академические исследования.

Программная верификация железа - это "академические исследования"?

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

> А кстати в жабу когд там лямбду воткнут?

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

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

> Да

Забавное мнение. Без таких "академических исследований" ты бы железо до сих пор втридорога покупал.

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

> Забавное мнение. Без таких "академических исследований" ты бы железо до сих пор втридорога покупал.

А без исследований Эдиссона с Яблочковым я бы сейчас это сообщение при лучине писал бы :-)

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

> Эддисона, махрового практика-инженера, в академюхи уже записали? OMG!

Его назвали исследователем, коим он и являлся.

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

> Эддисона, махрового практика-инженера, в академюхи уже записали? OMG!

В те времена не было такого уж строго деления на инженеров и физиков.

А в современной ИТ сфере все "ученые" и по подходам, и по менталитету ближе к инженерам.

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

Академические исследования и прикладные - как бы малость разные вещи.

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

anonymous
()

>Какие сферы применения этих языков,

DSL

>реально ли применять их знание (ну и функционального подхода в целом) на практике?

Да, легко. Но практически маловероятно найти вакансию, где нужно ФП.

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

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

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

// wbr

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

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

ps: своим заявлением я, скорее, хочу несколько ослабить чрезмерно сильное утверждение "всем" нежели сказать, что он в этой области не нужен. кому то нужен, а кому то и нет.

// wbr

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

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

Оно (или еще что-то функциональное) вполне могло скрываться в недрах используемой вами среды разработки железа. Скажем, в компиляторе VHDL :)

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

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

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

// wbr

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


бо тогда примерно с таким же успехом можно сказать, что мол "всем в Канаде нужен QNX" в силу того, что AFAIK он там используется [или использовался] как часть системы управления трафиком - светофоры и тд и тп. а водителей в Канаде как у нас снега зимой. но ведь всем же очевидно, что на самом деле он - QNX - там нафик никому не сдался. по пальцам пересчитать можно кому он действительно все ещё нужен.

// wbr

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

> Академические исследования и прикладные - как бы малость разные вещи.

Верно. Насчет "академических" я, возможно, погорячился.

Я имел в виду не столько "академические", сколько "теоретические" исследования. ИМХО ни одного примера серьёзной "толстой" системы на функциональном языке не существует. Иногда они используются в "толстых" проектах в качестве клея (по причине того, что изначальный архитектор фанател от функциональщины), но при первой возможности их обычно заменяют чем-либо более близким к менталитету индусов (и прочих не-фанатов).

Функциональные языки близки к формальной альфе, которая математически более строга, чем формализм машины Тьюринга. Поэтому теоретикам иногда (не всегда) проще оперировать функциональным языком. Но и человек, и компьютер "мыслят" императивно. Даже математики свои статьи пишут "императивно", чего уж про инженеров говорить...

А индусам не до функциональщины -- они умеют нажимать кнопки. Строго посередине. И их в ИТ мире -- большинство. На них стоИт Индустрия.

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

>Вычисления факториалов, чисел фибоначчи и потрясание пиписькой на форумах

Ты забыл про быструю сортировку

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

>есть мнение, что XSLT это функциональный язык..

а так же XQuery

anonymous
()

> haskell, lisp, scheme

Так это же не специализированные языки. Разве что, если предположим ты математик, то может быть ФЯП будет привычнее.

Насчет работы, тут пофигу если ты Ъ и можно выбрать инструмент. Только вот если работать на дядю, они обычно побаиваются всего, что академическое.

anonymous
()

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

DonkeyHot ★★★★★
()

Частенько используют для "быстрого" написания прототипа какой-нибудь программы с целью отработки архитектуры. Потом это все переписывается по кускам на православный си, к примеру.

Еще они занимают очень неплохую нишу в компиляторах.

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

>Еще они занимают очень неплохую нишу в компиляторах.

Или кодогенераторах из декларативного описания.

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

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

Дяди очень разные бывают. Есть например дядя Microsoft, который F# включил в VS2010.

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

> которая математически более строга, чем формализм машины Тьюринга

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

> Но и человек, и компьютер "мыслят" императивно.

Это не так. Большинство студентов впадает в ступор от записи "x = x + 1". Потому что знают, что у этого уравнения нет решений. И очень сильная ломка ума требуется для осознания того, что это "разрушающее присвоение".

> А индусам не до функциональщины -- они умеют нажимать кнопки.

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

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

> Большинство студентов впадает в ступор от записи "x = x + 1". Потому что знают, что у этого уравнения нет решений.

Для таких придумали запись "x := x + 1"

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

Что такое "язык Excel"? VBA - трижды насквозь императивный.

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

> Что такое "язык Excel"?

"Света, мне нужна таблица со сметой за февраль"

> VBA - трижды насквозь императивный.

wtf is vba? Sveta rocks!

// wbr

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

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

> Что такое "язык Excel"? VBA - трижды насквозь императивный.


Язык ёкселя --- это =A1+SUM(B2:C6)

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