Size: a a a

2020 July 23

KV

Kirill Valyavin in Haskell
Alexey Fedotov
Допустим, что все языки, кроме хаскелла исчезли. Все императивные программисты умерли. Вместо процессоров теперь производят только лисп-машины. Начинающие разработчики идут в хаскелль, потому что куда ещё идти? Вскоре один из них, потратив годы на изучение фолдов, траверсалов и линз, восклицает: "Я понял, почему всё сложно! Вся проблема в иммутабельности. Вот если бы был язык, где все операции были бы представлены разнесёнными по времени, и компьютер в каждую единицу времени, исполнял бы только одну операцию, так что всегда было бы до и после. И тогда можно было бы написать просто измени значение a на b, и после этого всё, что обращалось к ячейке памяти, получало бы b, а не a. Чёрт, а это ведь математически возможно... Да это бы в тыщщу раз всё упростило! Мы бы смогли свернуть горы!"
Haskell is the world’s finest imperative programming language
источник

KV

Kirill Valyavin in Haskell
Вот это надо в учебник записать, и всё, не надо кушать кактус, чтобы понять, что он колючий
источник

0

0xd34df00d in Haskell
Alexey Fedotov
И вся история пойдёт по кругу, в чём и вывод: чтобы понять вполне, зачем нужно сложное и малопонятное функциональное программирование, надо сначала накушаться императивщины, особенно коллективной, сутками посидеть до красных глазок над ошибкой, которая случилась, потому что два месяца назад кто-то перепутал две строчки в далёком файле, и вот тогда только можно брать и грузить человека функциональщиной, потому что он знает: альтернатива много-много хуже.
Чем-то напоминает моего школьного препа по программированию, который сначала заставлял накушаться _альтернативой_, а потом показывал, как можно лучше. Типа, сначала пишешь всё в main и копируешь строки, потом он тебе рассказывает про циклы и функции.
источник

АГ

Александр Гранин... in Haskell
Alexey Fedotov
Допустим, что все языки, кроме хаскелла исчезли. Все императивные программисты умерли. Вместо процессоров теперь производят только лисп-машины. Начинающие разработчики идут в хаскелль, потому что куда ещё идти? Вскоре один из них, потратив годы на изучение фолдов, траверсалов и линз, восклицает: "Я понял, почему всё сложно! Вся проблема в иммутабельности. Вот если бы был язык, где все операции были бы представлены разнесёнными по времени, и компьютер в каждую единицу времени, исполнял бы только одну операцию, так что всегда было бы до и после. И тогда можно было бы написать просто измени значение a на b, и после этого всё, что обращалось к ячейке памяти, получало бы b, а не a. Чёрт, а это ведь математически возможно... Да это бы в тыщщу раз всё упростило! Мы бы смогли свернуть горы!"
Хорошая притча
источник

Y

Yuuri in Haskell
0xd34df00d
Чем-то напоминает моего школьного препа по программированию, который сначала заставлял накушаться _альтернативой_, а потом показывал, как можно лучше. Типа, сначала пишешь всё в main и копируешь строки, потом он тебе рассказывает про циклы и функции.
Только иногда это приводит к тому, что человек так наедается альтернативой , что что-то другое вообще усваивать перестаёт, и на все робкие предложения что-то улучшить заявляет «че, какие нафиг циклы, какие функции? я всегда могу строк накопировать»
источник

AF

Alexey Fedotov in Haskell
Я, кстати, вот именно такой программист. Программирование начал с того, что когда мне было лет шестнадцать, взял у товарища борланд компилер, Страуструпа и начал выполнять всякие тестовые задания. Среди них была задача о перевороте числа: 12345 -> 54321, которую я решил, вычитая по единичке, пока не получается ноль, потом умножая вычитаемое на десять... Товарищ посмотрел на код больными глазами, спросил, что за индусятина, и больше со мной не общался.
источник

AA

A64m AL256m qn<co... in Haskell
Alexey Fedotov
Думаю, ФП само по себе предназначено для сеньоров, потому что необходимый опыт теории и практики программирования, чтобы начать замечать, что с императивщиной ЧТО-ТО НЕ ТАК — это как раз примерно тот же опыт, который требуется, чтобы претендовать на сеньорство
ну, да, для появления ощущения что что-то не так, нужно время, но, может быть что есть люди которые сразу чувствуют что что-то не так, и просто и не становятся программистами с самого начала, а если б начали с ФП то может стали бы
это, конечно, никто не проверял
источник

AF

Alexey Fedotov in Haskell
А всё дело в том, что первый реальный опыт программирования я получил гораздо раньше. Была такая игра — HoMM 4, и к ней прилагался редактор карт с GUI-программированием очень примитивного, но тьюринг-полного скриптового языка. Modulo там, кажется, не было, а может быть и был, но я не знал, что им надо пользоваться, и вообще из переменных были только инты в одном глобальном поле, итд...

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

NI

Nick Ivanych in Haskell
Alexey Fedotov
Допустим, что все языки, кроме хаскелла исчезли. Все императивные программисты умерли. Вместо процессоров теперь производят только лисп-машины. Начинающие разработчики идут в хаскелль, потому что куда ещё идти? Вскоре один из них, потратив годы на изучение фолдов, траверсалов и линз, восклицает: "Я понял, почему всё сложно! Вся проблема в иммутабельности. Вот если бы был язык, где все операции были бы представлены разнесёнными по времени, и компьютер в каждую единицу времени, исполнял бы только одну операцию, так что всегда было бы до и после. И тогда можно было бы написать просто измени значение a на b, и после этого всё, что обращалось к ячейке памяти, получало бы b, а не a. Чёрт, а это ведь математически возможно... Да это бы в тыщщу раз всё упростило! Мы бы смогли свернуть горы!"
Это нихрена не так.
Это бы серьёзно усложнило доказательства.
А значит, и полноценное понимание процесса.
Впрочем, мы можем это наблюдать.
источник

0

0xd34df00d in Haskell
Yuuri
Только иногда это приводит к тому, что человек так наедается альтернативой , что что-то другое вообще усваивать перестаёт, и на все робкие предложения что-то улучшить заявляет «че, какие нафиг циклы, какие функции? я всегда могу строк накопировать»
Бросил в бассейн — не научился плавать и утонул — следующий.
источник

DR

Denis Redozubov in Haskell
0xd34df00d
Бросил в бассейн — не научился плавать и утонул — следующий.
Первый пошел! Второй пошел! Парашютики не забываем!
источник

VZ

Vladislav Zavialov in Haskell
https://gist.github.com/graninas/833a9ff306338aefec7e543100c16ea1

Согласно @graninas, Functor это Senior-level Haskell
источник

VZ

Vladislav Zavialov in Haskell
источник

VZ

Vladislav Zavialov in Haskell
Кстати, пишется "higher-kinded"
источник

VZ

Vladislav Zavialov in Haskell
(потому что higher than 1)
источник

АГ

Александр Гранин... in Haskell
Поправлю.
Но функтор стоит в графе левее
источник

VZ

Vladislav Zavialov in Haskell
Ну Functor это higher-kinded тип
источник

VZ

Vladislav Zavialov in Haskell
У него кайнд (Type -> Type) -> Constraint
источник

АГ

Александр Гранин... in Haskell
Это не проблема. Функтор можно использовать механистически и ничего про каинды не знать
источник

VZ

Vladislav Zavialov in Haskell
Надо знать кайнды чтобы понимать, почему Functor Maybe имеет смысл, а Functor Integer это чушь.
источник