Функціональне програмування обговорення теми бп

Функціональне програмування завжди приваблювало мене в протиставленні до імперативного.
Я дуже часто обговорюю різні аспекти функціонального програмування на різних гілках на Базарній площі.
Але хотілося б зібрати всіх зацікавлений цією темою в одній гілці.
Я думаю що настав час відкрити таку тему. І ось чому.

Історично функціональне програмування з'явилося практично разом з імперативним.
Другою мовою після Фортрану був Лісп.
Але на жаль, функціональне програмування надовго було долею дослідних інститутів або спеціалізованих додатків (Штучний Інтелект)
Звичайно не треба вважати весь світ дурнями через те, що розвиток пішов шляхом мов Алгол сімейства.
Для цього були цілком об'єктивні причини. Функціональні мови занадто близькі до людини і дуже далекі від машини.
Вони з'їдають в десятки разів більше рессурсов ніж імперативні мови.
Згадайте претензії, пред'являють до java - першому імперативного мови з віртуальною машиною і збирачем сміття, штовхає великими корпораціями в mainstream.
Моторошно гальмує, і жере всю пам'ять яка є. Але ж функціональні мови (далі ФЯ) все без виключенням мають збирач сміття, віртуальну машину.
Багато з них (сімейство Лісп) ще й динамічні, що тільки погіршує становище.
Цілком природно що з'явившись понад півсотні років тому вони надовго опереділлі свого часу.

Для широкого поширення ФЯ потрібні гігабайти дешевої пам'яті і гигагерци дешевих процесорів.
Минуло понад 50 років, перш ніж такі вимоги до заліза стали реальністю.
Цей час настав. ЗАРАЗ.
Ласкаво просимо в нову еру програмування.

Всього в темі 5500 повідомлень

>> Всього повідомлень в темі 5500; сторінок: 550; поточна сторінка: 259

Відповідь на "повідомлення 2919« (Geniepro)
___________________________
Навіщо як CGI. Можна набагато простіше - mod_proxy
У мене Лісп сервера так і працюють з під апача.

Скільки бачив ці файли - не звертав на них уваги, а тут наткнувся на згадку про це на блозі Everything Scheme

Ось, хто хоче вивчати ФП на прикладі Scheme, можуть робити це, виготовляючи сайт.
Цікаво, якщо лінуксовий дистрибутив DrScheme встановити на Apache як CGI, буде це працювати на всяких там серверах в інтернеті?

You have already won over the scientists. Stop priming the pump. Algebraic runes, spells from the Book of Category Theory, bananas, lenses, arrows, cata, ana, hylo, endo, all is vanity.

You can not interest the engineer with new tricks. He has spent too long mastering difficult tricks to work around limitations to want to see them eliminated. His competitive advantage and prized reputation are at stake. Get him to believe that he is on the verge of being "left behind".

На сайті "Desert Spring-Time: O'Caml Operating System" відкрили проект по створенню операционке на ОКамле (і частково на Сі). Поки там мало що зроблено, як я зрозумів, але проект відкритий для бажаючих в ньому брати участь: список завдань для тих, хто вирішив зміцнило проекту.

Відповідь на "повідомлення 2912« (Geniepro)
___________________________

Ерланг в цьому плані більше схожий на Лісп - сувора семантика (енергійний) з динамічною семантикою.

Тьху. З динамічною типізацією, звичайно.

Відповідь на "повідомлення 2910« (Интересующийся)
___________________________

Наскільки я зрозумів, Erlang більш лаконічний, його бібліотеки і тулзи краще, ніж у Haskell.

У Хаскелл і Ерланга сильно різні ідеології, хоча це обидва ФЯ.
Хаскелл - мова з нестрогой семантикою (ледачий) зі статичної типізацією.
Ерланг в цьому плані більше схожий на Лісп - сувора семантика (енергійний) з динамічною семантикою.

Щодо більшої лаконічності Ерланга - питання спірне.


І головне (для мене) перевага ФЯ - полегшення програмування для мультиядерних систем, більш відноситься все-таки до Erlang, а не до Haskell. В Erlang явне розпаралелювання, вже чудово працює, а в Haskell розробники все намагаються навернути з неявним. По-моєму, це тупиковий шлях. Не можна все настільки автоматизувати. Рішення, що распараллеливать, треба залишити розробнику.

Взагалі-то в Хаскелл давно вже є можливості явного паралельного програмування: Parallel Haskell, Concurent Haskell, Distributed Haskell.

Збірка великий коректної паралельної програми з купи маленьких коректних паралельних підпрограм навіть в чистому ФЯ - не така вже й легке завдання, і по можливості потрібно перекладати такі справи на транслятор, а не на людину, залишивши йому при цьому можливість давати хинти транслятора, де що жедательно распараллелить.

Відповідь на "повідомлення 2909« (Max Belugin)
___________________________

"Чому ФЯ?" Або Чи варто вчити щось радикально відмінне від C ++ / Java / Python
Зараз знову прийде Jack і скаже, що Python не є чистим іноземних мов, а скоріше ближче до Ліспі :-)

>> Всього повідомлень в темі 5500; сторінок: 550; поточна сторінка: 259

Схожі статті