These are chat archives for dev-ua/rust

19th
Mar 2016
EugeneN
@EugeneN
Mar 19 2016 06:56

@mbme Що таке фп - широке питання, недавно на реддіті був батл на ну тему. Я не хочу холіворити, абощо, але все-таки думаю варто уточнити, сповільнити зростання інформаційної ентропії навколо цієї теми.

Програмування з immutable даними, чи там з використанням optional, чи з map/reduce, навіть якщо це назвати функціональним стилем - не є фп. Суть фп - це програмування, що базується явним чином на законах математики і логіки, на equational reasoning і ще подібних речах, для чого необхідно мати гарантії детермінізму від мови ітд. Якщо мова не пропонує тобі явно описувати твій наступний веб-фреймворк моноїдами, аплікативами, монадами, не може перевірити логічну коректність за допомогою типів (глобально, а не в межах однієї функції), ніяк не обмежує ефекти (а без цього про якийсь детермінізм неможливо говорити) - то це не фп, та й годі :-)

Статичні гарантії коректності роботи з памяттю - фішка раста - напряму вказують що раст не фп - бо в фп нема проблем роботи з пам’яттю. Робота з пам’яттю - це low level, деталі імплементації заліза, неважлива річ для фп. Завтра буде пам’ять що сама регулює доступ або ще по іншому працює, квантово якось, реплікується на кожну зміну - і імплементація раста буде неважлива. А фп залишиться і розквітне ще більше :-) ФП працює на вищому рівні, і не займається детялями реалізації низькорівневої залізяки. Це як в javascript ніхто не займається питаннями tcp/ip ітд.

Практично чистою фп мовою є хаскель, не чистою фп мовою є кложур, ерланг не є навіть не чистою фп мовою, ну а раст взагалі не фп мова :-)

@lud4ik саме так, я фул тайм комерційно і в продакшні програмую на хаскелі. В тому числі веб-фронтенд - 100% хаскель, через ghcjs. Причому продукт юзається навіть фейсбуком і інстаграмом - це такий інструмент що застосовує ML для покращення контенту, реклами зокрема, але не тільки.
EugeneN
@EugeneN
Mar 19 2016 07:01
чому фп - omniversal, і чому інопланетяни мають свій хаскель: https://www.youtube.com/watch?v=IOiZatlZtGU
mbme
@mbme
Mar 19 2016 08:55
@EugeneN робота з пам'яттю тут взагалі ні до чого, це деталь реалізації
хочеш - заглиблюєшся в неї, не хочеш - передаєш все за значенням
rust має first-class functions (lambda calculus) тому на ньому можна писати у ФП стилі ("підтримує ФП парадигму")
так само як і Lisp/JavaScript/Python/Ruby і т.д. :)
круте відео, доречі :)
EugeneN
@EugeneN
Mar 19 2016 12:40

наявність функцій вищого порядку це ще не lambda calculus сам по собі. Крім того, Lambda calculus - це ще не все з чого складається фп, особливо на сучасному рівні розвитку - про це чомусь постійно забувають, але lambda calculus - то далеко не вершина фп, а просто один зі спрощених варіантів від того ж typed lambda calculus. Сучасне фп, з теорією категорій і іншими системами типів, пішло ще дальше. Я писав вище емпіричні правила як визначити чи мова фп чи ні. Якщо ти під час програмування думаєш постійно і регулярно про функтори і монади - це, можливо, фп. Якщо ні - то це не фп, навіть якщо це лісп :-)

З іншого боку, я згоден що rust в такій самій мірі фп як і JavaScript/Python/Ruby, і в чуть меншій степені ніж лісп (лісп принаймі історичні заслуги має :-) От тільки усі вони не фп. Те що в описі у вікіпедії пишуть "мультипарадигменний" - це ще не достатня умова щоб бути фп. Це такий жарт. Машинні коди теж фп, бо ж навіть хаскель в результаті перетворюється на машинні коди. А ще машинні коди ооп, і усі інши *п разом взяті :-)

З цими всіма поняттями, назвами і тд дуже багато плутанини, і це вже стає небезпечним для ніакрєпших умов. Саме тому я от намагаюся по можливості уточняти поняття і терміни. З фп ще просто, от з ооп набагато більш запущено :-)

І ще одне базове відео в стилі попереднього: https://www.youtube.com/watch?v=Z35Tt87pIpg

mbme
@mbme
Mar 19 2016 14:22
ок
з таким максималістичним підходом haskell не фп
тільки agda і coq - фп
а скоро і вони не будуть true FP
це мені нагадує xkcd https://xkcd.com/378/
EugeneN
@EugeneN
Mar 19 2016 14:26
:-) ні
кінь - не автомобіль
ford model t - автомобіль
мерседес 2015 р. випуску теж автомобіль
те що мерседес кращий (?) не означає що форд не автомобіль :-)
Vdimir
@Vdimir
Mar 19 2016 14:31
This message was deleted