Αλεχ
да, оно не такое понтовое, и зигохистоморфными препоморфизмами повыебываться не получится, зато сразу понятно ,какую ценность в язык оно несет
Alexander
Решайте сами, влияет оно на код, который вы считаете практичным или нет. У меня могут быть другие представления и о практичности, и о степени влияния.
Αλεχ
я хочу хоть какйо-то пример
Αλεχ
типа "раньше писали так (плохо) а с этой Х можно писать так (хорошо)"
Alexander
Так может быть вы скрытый хаскелист. (всё, выключаю токсичность)
Да я, вообще-то, явный хаскелист... Глупый пингвин робко прячет, умный нагло достаёт! 😂
Αλεχ
https://github.com/TeXitoi/rust-mdo
Αλεχ
вот годный пример
Αλεχ
"был плохой код без модад, а теперь хороший с монадами"
Αλεχ
и сразу понятно, что писать стало удобно
Αλεχ
и это хорошее, годное изменение
Αλεχ
а как вот эта штука влияет на код ваще непонятно
Слава
Но Algebraic Effects в Haskell нет! 😃
У меня просто есть некая нелюбовь ко всякой неочевидной "типа математичности" в коде, после года общения с функциональной надстройкой над C#, называемой LanguageExt
Слава
Обратите внимание на красоту лесенки и на Either вверху. Это функциональщики написали Language.Ext для C#. Боюсь, С++ они тоже не улучшат.
Слава
"Вот уже пожарные прислонили лесенку, потому что с корешем мы орали песенку"
Konstantin
ох
Alexander
потому что объяснение монады из теории типов - это херня. А вот объяснение "сморите, теперь вы можете писать async/await и избавиться от коллбеков" - это полезное практическое объяснение
Давайте я попробую объяснить почему объяснения типа "смотрите, теперь вы можете писать бла-бла-бла" - это хуйня, а теория типов - намного практичнее. Серьёзно, без наездов и обзывательств. Есть два уровня - синтаксические конструкции, которые мы пишем на языке программирования, и структуры, которые они описывают. Не в смысле структур данных (хотя и это тоже), а в смысле сущностей, связей между ними, правил взаимодействия и ограничений. В ООП некоторые из таких структур называют "паттернами проектирования", и именно поэтому упорно талдычут, что паттерны не зависят от конкретного языка и так далее. Так вот, в Haskell для описания таких структур ("паттернов", отношений между сущностями и правил их взаимодействия) часто используют алгебраические (в смысле "абстрактной" или "высшей" алгебры) структуры: кольца, моноиды, функторы, да, монады, и ещё кое-какие. Преимущество алгебраических структур над "паттернами проектирования" в том, что они подчиняются определённым законам, гарантирующим их корректность. Преимущество теории типов и статической проверки типов - в гарантированном выполнении таких законов. Таким образом, использование корректных (sound) с точки зрения теории типов/теории категорий структур и механизмов обеспечивает корректное (ожидаемое, доказуемое) поведение программы, независимо от того синтаксиса, который используется. Для традиционного кода верно правило "меньше кода - меньше ошибок", поэтому многие программисты так любят "лаконичный синтаксис", но при использовании алгебраических структур и статической проверки их свойств количество ошибок не зависит от количества строк кода. Поэтому многие функциональные программисты любят языки с зависимыми типами, несмотря на то, что писать на них приходится больше.
Cuno
Давайте я попробую объяснить почему объяснения типа "смотрите, теперь вы можете писать бла-бла-бла" - это хуйня, а теория типов - намного практичнее. Серьёзно, без наездов и обзывательств. Есть два уровня - синтаксические конструкции, которые мы пишем на языке программирования, и структуры, которые они описывают. Не в смысле структур данных (хотя и это тоже), а в смысле сущностей, связей между ними, правил взаимодействия и ограничений. В ООП некоторые из таких структур называют "паттернами проектирования", и именно поэтому упорно талдычут, что паттерны не зависят от конкретного языка и так далее. Так вот, в Haskell для описания таких структур ("паттернов", отношений между сущностями и правил их взаимодействия) часто используют алгебраические (в смысле "абстрактной" или "высшей" алгебры) структуры: кольца, моноиды, функторы, да, монады, и ещё кое-какие. Преимущество алгебраических структур над "паттернами проектирования" в том, что они подчиняются определённым законам, гарантирующим их корректность. Преимущество теории типов и статической проверки типов - в гарантированном выполнении таких законов. Таким образом, использование корректных (sound) с точки зрения теории типов/теории категорий структур и механизмов обеспечивает корректное (ожидаемое, доказуемое) поведение программы, независимо от того синтаксиса, который используется. Для традиционного кода верно правило "меньше кода - меньше ошибок", поэтому многие программисты так любят "лаконичный синтаксис", но при использовании алгебраических структур и статической проверки их свойств количество ошибок не зависит от количества строк кода. Поэтому многие функциональные программисты любят языки с зависимыми типами, несмотря на то, что писать на них приходится больше.
Странно что в канале раста приходится объяснять, что гарантии от системы типов это важно.
саша
^ инкрементирую этих двоих
Αλεχ
Странно что в канале раста приходится объяснять, что гарантии от системы типов это важно.
вопрос не в этом, а втом, чтобы знаеть теоркат чтобы юзать ? operator
Αλεχ
приятный бонус, но не более того
Evgεny
кстати поясните за теоркат для ? оператора
Αλεχ
ну что типа это костыль
Αλεχ
потому что нет нормальных ду нотаций
Αλεχ
а ду нотации это монады
Αλεχ
а монады...
Αλεχ
саша
Давайте я попробую объяснить почему объяснения типа "смотрите, теперь вы можете писать бла-бла-бла" - это хуйня, а теория типов - намного практичнее. Серьёзно, без наездов и обзывательств. Есть два уровня - синтаксические конструкции, которые мы пишем на языке программирования, и структуры, которые они описывают. Не в смысле структур данных (хотя и это тоже), а в смысле сущностей, связей между ними, правил взаимодействия и ограничений. В ООП некоторые из таких структур называют "паттернами проектирования", и именно поэтому упорно талдычут, что паттерны не зависят от конкретного языка и так далее. Так вот, в Haskell для описания таких структур ("паттернов", отношений между сущностями и правил их взаимодействия) часто используют алгебраические (в смысле "абстрактной" или "высшей" алгебры) структуры: кольца, моноиды, функторы, да, монады, и ещё кое-какие. Преимущество алгебраических структур над "паттернами проектирования" в том, что они подчиняются определённым законам, гарантирующим их корректность. Преимущество теории типов и статической проверки типов - в гарантированном выполнении таких законов. Таким образом, использование корректных (sound) с точки зрения теории типов/теории категорий структур и механизмов обеспечивает корректное (ожидаемое, доказуемое) поведение программы, независимо от того синтаксиса, который используется. Для традиционного кода верно правило "меньше кода - меньше ошибок", поэтому многие программисты так любят "лаконичный синтаксис", но при использовании алгебраических структур и статической проверки их свойств количество ошибок не зависит от количества строк кода. Поэтому многие функциональные программисты любят языки с зависимыми типами, несмотря на то, что писать на них приходится больше.
Вообще проблема хаскеля и ему подобных по большей части в том, что когда не ему учат в школе и ВУЗ'ах. Ну и из математики и теоритической информатики стундентов по большей части не учат теоркату, теории типов и вот этому всему.
Alexander
вопрос не в этом, а втом, чтобы знаеть теоркат чтобы юзать ? operator
Ох, блин, нужно что-то знать чтобы уметь чем-то пользоваться! Ну его нах! Сегодня новость видел, что мужик построил яхту без всякой там матемитики и инженерии. Ну и что, что затонула - можно же без матана! (Это я включил обратно токсичность.)
Evgεny
а че строить
Evgεny
это не надо знать чтоб плавать
Evgεny
так почему бы и не знать происхождения этого слова а просто мыслить как "хуйня чтоб в цепочки и заебись было"
саша
вопрос не в этом, а втом, чтобы знаеть теоркат чтобы юзать ? operator
поверь, для того, чтобы юзать ? ты дохуя всего знаешь, но к сожалению эти знания сплошное легаси из тех тёмных времён, когда люди ещё не понимали, что такое программирование и поэтому придумали всякие поверия, традиции и прочие ритуалы, которые обозвали "паттернами проектирования"
Leonid 🦇
Ну давайте сделаем из раста язык на котором без 2х phd невозможно писать а потом будем ныть что на нём работы не найти и приходится на гошечке микросервисы катать
Αλεχ
только сука это не должно быть НЕОБХОДИМЫМ качеством для разработки
Αλεχ
и когда я прошу дать мне простой пример, как это улучшит мою жизнь, а ты говоришь "пажжи ебана, да тут зато смотри как все логично" то это нихуя не работает
Αλεχ
> "смотрите, теперь вы можете писать бла-бла-бла" - это хуйня, а теория типов - намного практичнее.
Αλεχ
сука
Αλεχ
нормально
Αλεχ
"фича заебись" "а че она делает?" "а нискажу"
саша
ну для того, чтобы хуярить do { ... }, вроде 2x phd не надо
я вон вообще без высшего и как-то разобрался
Alexander
Ну давайте сделаем из раста язык на котором без 2х phd невозможно писать а потом будем ныть что на нём работы не найти и приходится на гошечке микросервисы катать
Покажите мне язык, на котором нельзя писать без 2 PhD, пожалуйста. А то я без единой PhD пишу на Haskell, кой-чего писал на Idris и Coq, читаю Agda - уже начал как-то разочаровываться, нехватает челленджа, нет мотивации получать PhD! 😂
Nikita
GPSS :D
Я две лабы на нём делал, норм
Слава
GPSS :D
С чего бы? Я на нём делал лабы на заказ, не особо задумывась. Для томских заочников из РЖД.
Evgεny
жеские сверхразумисты здесь сидят, гпсс вообще искусство не для всех
саша
@lonokhov против хаскеля и руста в продакшоне, так и запишем
саша
©
Αλεχ
С чего бы? Я на нём делал лабы на заказ, не особо задумывась. Для томских заочников из РЖД.
а если это кафедральный аналог, анписанный на говне и требующий для формулировки задачи писать говнокод на паскале (и который собирается только трубой)?
Слава
жеские сверхразумисты здесь сидят, гпсс вообще искусство не для всех
Я до того писал лабы по имитационному моделированию на дельфи. Там тоже ничего особо сложного не было.
Alexander
только сука это не должно быть НЕОБХОДИМЫМ качеством для разработки
Корректность программы не должна быть НЕОБХОДИМЫМ качеством для запуска её в прод! Ну, если вам корректность не нужна - очень рад за вас, чего тогда беспокоитесь? 😊
Αλεχ
в чем связь между "покажи конкретный пример" и "нам не нужна корректностЬ"
Αλεχ
нормальный ваще?
Evgεny
Я до того писал лабы по имитационному моделированию на дельфи. Там тоже ничего особо сложного не было.
да не просто гпсс то еще говноедство к которому и притрагиваться не хочется
Слава
а если это кафедральный аналог, анписанный на говне и требующий для формулировки задачи писать говнокод на паскале (и который собирается только трубой)?
Я начинал программирование именно с паскаля, и он не вызывает у меня отвращения. Другое дело, что gpss мне мозг вынес тем, что там идентификаторы больше 8 символов молча не поддерживались.
Alexander
Ну вот такой вундеркинд притащит хаскель или раст в прод а потом уволится, где мне искать замену?
Уивительно, но мне замену нашли. Хотя там хаскель не я в прод притащил - меня тоже нашли "на замену"...
Слава
Alexander
у тебя с логикой все ок?
У меня с логикой всё очень хорошо! 😂 В частности, я понимаю, что если мне кричат "покажи пример", это меня всё равно ни к чему не обязывает. 😜 Кроме того, я отвечал на тезис о том, что знание математики не должно быть обязательным для программирования. Да, если это программирование сайтиков или игр - необязательно. Если разработка критических систем (авиация, космос, здравоохранение, энергетика), то должно.
Leonid 🦇
По примеру Шуклина же.
раскройте мысль
Αλεχ
> В частности, я понимаю, что если мне кричат "покажи пример", это меня всё равно ни к чему не обязывает. 😜 ну не показывай, просто твое утверждение тогда голословное
Alexander
зачем вообще академический язык в прод тащить?
Корректность. Без него был слишком высокий bug rate и невозможность рефакторить (на RoR). Грубо говоря.
Αλεχ
> Кроме того, я отвечал на тезис о том, что знание математики не должно быть обязательным для программирования. Да, если это программирование сайтиков или игр - необязательно. Если разработка критических систем (авиация, космос, здравоохранение, энергетика), то должно. не уверен, что какой-нибудь тровальдс знает теорат
Αλεχ
это не мешает ему писать нормальный код
Αλεχ
математика бывает разной
Αλεχ
какие-нибудь О нотации и прочую хрень знать стоит любому адекватному разрабу