Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Mar 27 2015 20:26
    User @sudodoki banned @doneck-russia from this room
  • Mar 19 2015 20:58
    User @mr-mig banned @pgr-ru from this room
  • Mar 15 2015 01:09
    User @mr-mig banned @putin-hero from this room
  • Mar 15 2015 01:09
    User @mr-mig banned @stepan-bendera from this room
EugeneN
@EugeneN
та вони є, різної степені придатності. Інша справа, що вони справді не потрібні)
ну тобто для фану писати можна, але якщо робота на результат - то тут хаскелю нема конкурентів)
в хаскелі їх небагато ( відносно) тому що там дуже великий коефіцієнт реюзу коду
тобто там на кожну задачу, на кожному рівні одна рівно ліба є і робить свою роботу добре
бо на хаскелі якісно пишуть зазвичай
а ще там високоякісний discrovery механізм
треба тобі фунцію - пишеш в пошуку її тип і знаходиш що таке вже є
не перевинаходиш велосипед
дуже прагматична мова - хаскель
а хаскель+раст взагалі тру могло б бути
mbme
@mbme
@EugeneN точно, rust не є чистою функціональною мовою програмування
але (раптово) позволяє без напруження писати у функціональному стилі
go цього не дозволяє (без кодогенерації або написання тисяч коду вручну)
саме тому я і написав, що все залежить від програміста
Luda Lukashevskaya
@lud4ik
@EugeneN и что ты на хаскеле написал? оно юзается в продакшене?
EugeneN
@EugeneN

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

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

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

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

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

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

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

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

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

mbme
@mbme
ок
з таким максималістичним підходом haskell не фп
тільки agda і coq - фп
а скоро і вони не будуть true FP
це мені нагадує xkcd https://xkcd.com/378/
EugeneN
@EugeneN
:-) ні
кінь - не автомобіль
ford model t - автомобіль
мерседес 2015 р. випуску теж автомобіль
те що мерседес кращий (?) не означає що форд не автомобіль :-)
vdimir
@Vdimir
This message was deleted
Ingvar Stepanyan
@RReverser
а тут, як завжди, офтопи :(
mbme
@mbme
зате чат живий
Андрей Листочкин (Andrey Listochkin)
@listochkin
@RReverser а чат по расту вот https://gitter.im/ruRust/general Там полно сообщений каждый день
Serge Rybalchenko
@fisher
why not https://gitter.im/rust-lang/rust ? don't you know the language?
Andréy Lesnikóv
@ozkriff
Мне кажется, ruRust/general поживей rust-lang/rust будет даже
Luda Lukashevskaya
@lud4ik
полно сообщений не показатель, что там на расте пишут в продакшен?)
Vladyslav Siriniok
@siriniok
а на расті пишуть в продакшн?)
Paul Colomiets
@tailhook
Ну вот вам еще ссылка про rust и production: https://onesignal.com/blog/announcing-our-new-delivery-backend/
Андрей Листочкин (Andrey Listochkin)
@listochkin
Да пишут в продакшен, я летом опять буду писать
Luda Lukashevskaya
@lud4ik
а в расте можна написать трудноотлавливаемый баг, связанный с паралельностью, ченелами?
локами
Ruslan Shevchenko
@rssh
вобще - если у вас есть channel-ы, знаяит у вас появляется возможность сделать ими деадлок
Luda Lukashevskaya
@lud4ik
ну с локами оно само вставляет на этапе компиляции когда отпустить, если я правильно помню
а вот с ченелами защит никаких нет?
а как вообще в расте дебаг проверить что сколько памяти занимает и типа если сравнить с go
там есть штука с трейсом горутин, и можна собрать сепмлинг, с каком месте кода у тебя больше всего времени проводилось
Luda Lukashevskaya
@lud4ik
мне уже сегодня настроение испортили, так что если кто захочет ответить, не нада проблемы go адресовать в мой личный счет
Luda Lukashevskaya
@lud4ik
а чем вы определяете качество каково-то проекта? Ну типа из прочитанных цитат:
  • инструмент решает одну задачу и хорошо
  • разбит на микросервисы
работает и без программиста
Paul Colomiets
@tailhook

Ну трудноотлавливаемый баг написать можно. Например, можно легко получить deadlock как на каналах, так и на Mutex'ах.

Другое дело, что классов трудноотлавливаемых багов в Rust'е меньше: нет конкурентных мутаций map'ов, почти нет race-condition'ов и т.д.

Luda Lukashevskaya
@lud4ik
а "почти нет", а где есть?
Paul Colomiets
@tailhook
где есть race-condition'ы в rust'е?
Luda Lukashevskaya
@lud4ik
да
Paul Colomiets
@tailhook
Ну никто тебе не мешает AtomicUint неправильно использовать... или мутировать два объекта Mutex<Something> в неправильной последовательности
Oleksii Rudenko
@OrKoN
Привет, я начал изучать Rust недавно, написал один модуль https://github.com/OrKoN/base-x-rs и обертку для ноды для него https://github.com/OrKoN/base-x-native Буду благодарен, если кто-то, кто имеет больше опыта с Rust, сможет сделать review - наверняка я допустил много косяков
Ruslan Shevchenko
@rssh
Народ, кому интересно поучаствовать в pilot проекте на rust -- свяжитесь со мной, pls
(Киев)
Luda Lukashevskaya
@lud4ik
где связаться?
Ruslan Shevchenko
@rssh
Или здесь или ruslan@shevchenko.kiev.ua