Программирование

Ответить в тред Ответить в тред
Check this out!
Самых крутых концепций в программировании тред Аноним 18/02/20 Втр 22:17:59 16070511
image.png 1119Кб, 1246x701
1246x701
Накидайте крутых штук типа Y-комбинатора или монад, желательно, с пояснением для дегенератов.
Аноним 18/02/20 Втр 22:27:02 16070572
image.jpg 61Кб, 600x390
600x390
>>1607051 (OP)
- иммутабельность
- функциональщина
- кодогенерация
- "всё есть объект"
- слабая типизация
- доступ к AST
Аноним 18/02/20 Втр 22:35:18 16070673
>>1607057
это хуйня для петухов, на элитарность и крутизну совсем никак не тянет
Аноним 19/02/20 Срд 00:43:09 16072374
>>1607051 (OP)
Самомодифицирующийся код. Базарю, вынесет твой мозг.
Аноним 19/02/20 Срд 00:56:20 16072505
>>1607067
пикрил не подгрузился?
Аноним 19/02/20 Срд 05:17:14 16074216
Аноним 19/02/20 Срд 16:38:34 16079927
>>1607051 (OP)
В PLT самая годнота - системы переписывания в конкатенативных вариантах.
Основатели информатики дали вам самое ценное - линейно-адресуемый RAM с доступом за константное время. Круче только квантовые вычисления.
Свёртки. Каскадное кэширование. Мемоизация. Автоматное кодирование.
А впрочем, всё меркнет на фоне теории графов.
Аноним 19/02/20 Срд 20:57:41 16082718
>>1607237
Где он нужен кроме вирусов и обфускаторов?
Аноним 19/02/20 Срд 21:01:19 16082819
>>1608271
> Где он нужен
У нас тут борщехлёбский тред, мы не заморачиваемся такими мелочами!
Аноним 19/02/20 Срд 21:04:26 160829010
continuation-passing style очень нравится
Аноним 20/02/20 Чтв 21:13:59 160948411
>>1608290
И что там особенного?
Аноним 21/02/20 Птн 16:19:55 161033412
>>1607057
>- иммутабельность

вашу оперативку пожрал борщехлеб, милорд
Аноним 21/02/20 Птн 16:59:43 161038813
>>1609484
С непривычки мозг взрывает только так
Аноним 21/02/20 Птн 17:09:45 161039914
>>1610388
От скудоумия С непривычки и ООПчик вершиной мысли покажется. А на самом деле, кромешное говно
Аноним 21/02/20 Птн 17:43:26 161043715
>>1610334
Пруфы? Это вообще не влияет на потребление памяти.
Аноним 21/02/20 Птн 17:46:22 161044316
>>1610437
Плодить 100500 объектов из-за того, что строки рид-онли - это, по твоему, не влияет на потребление памяти?
Аноним 21/02/20 Птн 18:13:57 161047017
Векторизация ЗБС
Аноним 21/02/20 Птн 18:17:38 161047618
Аноним 21/02/20 Птн 18:36:13 161049519
>>1610443
Пруфы будут? Можно подумать ты знаешь как устроены рантаймы таких языков. Ты просто выдумал байку. Имутабельные структуры можно прикрутить и к JS, и это никак не повлияет на потребление памяти. Чтобы рассуждать о таких темах, нужно в этом шарить. Ты не шаришь. Поэтому займись чем-то по-легче.
Аноним 21/02/20 Птн 19:04:24 161051920
>>1610495
> JS, и это никак не повлияет на потребление памяти

ее как не было так и не будет свободно
Аноним 21/02/20 Птн 19:12:54 161052821
Аноним 21/02/20 Птн 19:52:03 161057022
>>1610476
рассказывай давай, с примерами, интересно
Аноним 24/02/20 Пнд 23:38:08 161413723
Аноним 24/02/20 Пнд 23:46:45 161415224
Аноним 25/02/20 Втр 21:17:13 161494425
>>1614152
оптимизация хвостовой рекурсии
вывод типов по хиндли-милнеру
динамическое программирование
Аноним 25/02/20 Втр 21:38:05 161495926
>>1614944
>динамическое программирование
Можно подумать бывает нединамическое.
Аноним 25/02/20 Втр 21:40:31 161496027
>>1614959
Линейное, например. И куча других, называемых программированием по недоразумению и вводящих в заблуждение.
Аноним 25/02/20 Втр 21:52:21 161497128
>>1607992
Звучит как просто набор слов.
Аноним 25/02/20 Втр 21:53:10 161497429
>>1614959
ты бы хоть погуглил историю названия, прежде чем кукарекать
Аноним 25/02/20 Втр 21:54:46 161497730
>>1614974
Если историю названия надо гуглить, то очевидно это хуевое название.
Аноним 25/02/20 Втр 21:55:55 161497831
>>1614977
как скажешь ты и саму концепцию-то не осилишь, кукаретик
Аноним 25/02/20 Втр 21:59:55 161498832
>>1614978
Записывать цифры в массив и сравнивать? О да, такое же не проходят на втором занятии по программированию.
Аноним 27/02/20 Чтв 22:19:13 161751533
>>1614988
на словах звучит просто, а на деле обдрищешься
Аноним 28/02/20 Птн 07:58:54 161774234
>>1607051 (OP)
Логическое программирование, а именно Пролог:
- Bi-directional data. Предикат atom_chars(foo,Chars) даст Chars = [f,o,o], а atom_chars(Atom,[f,o,o]) даст Atom = foo.

- Жесткое мета-программирование. Программа на прологе может анализировать сама себя, перестраивать, модифицировать. Запилить систему типов поверх пролога? Как делать нехуй. Небольшой синтаксический сахар? Самое простое, что можно сделать в прологе.

- Мета-предикаты.

- Все есть данные и унификация(паттернметчинг). Термы можно рассматривать как quote в лиспе. Т.е предикат в прологе не редуцируются. writeln(5+5) напишет в sdout 5+5. В прологе ты полностью контролируешь процесс вычислений.
Аноним 28/02/20 Птн 08:03:30 161774335
>>1617742
> Предикат atom_chars(foo,Chars)
Цель*
Аноним 28/02/20 Птн 08:25:56 161774736
>>1607051 (OP)
> Y-комбинатора
Какая-же бесполезная хуйня, хоть и забавная.
Аноним 28/02/20 Птн 08:40:30 161774837
>>1610443

МУСОРОСБОРНИЧЕК ПОРЕШАЕТ

@

АХАХАХАХА

@

БАЙТОЛЮБ НАХУЙ ИДИ
Аноним 28/02/20 Птн 09:06:42 161775738
>>1617742
>В прологе ты полностью контролируешь процесс вычислений.
Всю комнату жиром с монитора залило.
Аноним 28/02/20 Птн 09:21:56 161776139
>>1617757
> Всю комнату жиром с монитора залило.
Ок, всё за границей бектрекинга ты не можешь, но я говорил не про это.
Аноним 28/02/20 Птн 09:54:41 161777740
>>1617747
В смысле бесполезная?
Без неё лямбда-исчисление не эквивалентно машине Тьюринга.
Аноним 29/02/20 Суб 18:12:34 161904841
>>1617777
>лямбда-исчисление
есть годная литература по этой теме? вкинь, плиз
Аноним 01/03/20 Вск 12:03:29 161969242
Аноним 01/03/20 Вск 12:40:41 161971243
Аноним 01/03/20 Вск 13:34:11 161978744
>>1607051 (OP)
Можно ли написать Y-комбинатор на языке со строгой статической типизацией, без всяких оберток в object'ы?
Аноним 01/03/20 Вск 15:26:56 161987245
>>1619787
Только через дженерики, и (если возможно) dynamic/any тип. Если известно заранее, что будут возвращать ламбды в комбинаторе, можешь забиндить на типы лямбд.
Аноним 01/03/20 Вск 16:26:28 161991846
>>1619872
Блять, никак не могу понять, как его записать в языке, в котором нет рекурсивных типов. Как определить тип лямбды?
Аноним 01/03/20 Вск 16:27:27 161991947
>>1619787
>строгой
почему вы слово strong переводите как "строгий"?
Аноним 01/03/20 Вск 16:31:07 161992248
>>1619918
Нужен самописный примитивный бокс.
Пишешь функцию, которая принимает аргумент типа структуры с тремя полями, одно из которых - ссылка/делегат на функцию, второе - собственно, значение аргумента функции, а третье поле - флаг того, что из первых двух активно.
Аноним 01/03/20 Вск 16:33:29 161992349
>>1619919
Потому что устоялось.
Аноним 01/03/20 Вск 16:38:42 161993050
>>1619922
>Пишешь функцию
И обращаться к ней по имени? Тогда какой же это Y-комбинатор?
Аноним 01/03/20 Вск 16:45:02 161994051
Почитал про Y-комбинатор и монады.
Какое-то говно из под коня.
Это то что есть в любом нормальном языке типа С из коробки. Любой программист впитывает это на первых занятиях.
Только яйцеголовым ученым пришло в голову писать десятки заумных страниц на эту тему. Сами себе придумывают трудности чтобы потом героически их преодолевать.
Аноним 01/03/20 Вск 17:13:48 161996452
>>1619930
Обращаешься по делегату, который передан в качестве аргумента. Ты в любом же случае её в качестве аргумента передаешь, только в динамической типизации от тебя этот процесс определения типа аргумента и обращения по нему скрыт.
Аноним 01/03/20 Вск 17:15:15 161996553
>>1619940
This. Ты понял суть борщехлёбов.
Аноним 01/03/20 Вск 17:30:40 161997554
>>1619964
можешь скинуть пример на шарпе или джаве?
Аноним 01/03/20 Вск 17:46:32 161998755
>>1619975
https://pastebin.com/XiiF7A9B
Ну тут я начинал писать факториал по какому-то туториалу для JS, но когда понял, как это работает, дописывать не стал, так что не уверен, что будет особо полезно.
Аноним 01/03/20 Вск 17:46:50 161998856
01/03/20 Вск 17:50:18 161999757
монады ето динамический массив содержащией еллементы любых типов

такое есть во всех быдлокодерских языках

а в лиспах ничего кроме монад нету

вот они на них и молятся, пишут книги, дрочат, сочиняют сказки и легенды
Аноним 01/03/20 Вск 17:51:23 161999958
>>1619940
Соглашусь. Профит от У-комбинатора не понятен. И даже если в каком-то языке запрещена рекурсия (но при этом разрешено передавать функцию как аргумент, что уже кажется взаимоисключающим), то У-комбинатор - слишком уж ебанутый способ обойти это ограничение.
01/03/20 Вск 17:52:54 162000159
вобщемто ето ваше "функциональное программированеи" полнейшай хуетень.

введение искуственных ограничений без получения какоголибо профита с етого.

надежды возложеные на "ленивое программирование" и "автоматическое распаралеливание" не оправдлаись.

человек делает ето намного лучше чем машина.
Аноним 01/03/20 Вск 18:03:08 162001160
>>1619999
Дебилушка, естественно его профит в языках без каррирования и ленивости по-умолчанию, а так ж поддержки пойнтфри и прочих средств функциональной/комбинаторной композиции никак не ощущается. В своей императивной параше можешь как Духаст Вечаславыч на лабах учил писать while true.
Аноним 01/03/20 Вск 18:04:09 162001361
Аноним 01/03/20 Вск 18:04:10 162001462
>>1607051 (OP)
Польза Y комбинатора на практике точно такая же если ты начнешь каждую "лямбда функцию" переписывать в лямбду калькулус
Аноним 01/03/20 Вск 18:14:03 162002463
1484102666710.png 102Кб, 580x713
580x713
>>1619997
Все же знают что монада это вантуз запихивающий значение туда куда оно не пролезает.
Аноним 01/03/20 Вск 18:15:43 162002564
>>1620024
Я из-за этих конченных картинок только на неделю дольше нихуя не понимал
01/03/20 Вск 18:19:22 162002965
>>1620013
Поражает тупость местной студентоты, которая ничего кроме императивной дрисни не видела, а поэтому не понимает назначения всех этих абстракций, и по быдло-логике считает их ненужными, так как они никак не помогают выгрузить вооон тот отчёт для Марьи Ивановны и заработать на жрат.
Аноним 01/03/20 Вск 18:20:19 162003166
>>1620029
И в чем же их нужность? Уже изобрели неимперативный процессор?
Аноним 01/03/20 Вск 18:22:31 162003767
>>1620031
Не изобрели, но ведь борщехлёбам это не нужно.
Аноним 01/03/20 Вск 18:27:02 162004268
>>1620024
Всегда орал с этих «мондады в картинках» и прочих «ФП для чайников», где простые и понятные вещи объясняют языком для пехепешников отстающих в развитии детей.
Аноним 01/03/20 Вск 18:28:28 162004469
>>1620031
Что за уебанский вопрос. К чему это вообще?
Аноним 01/03/20 Вск 18:29:37 162004670
>>1619940
>монады
>есть в любом нормальном языке типа С из коробки
Ору, ты вообще походу не понял что такое монады, но мнение имеешь
Аноним 01/03/20 Вск 18:34:30 162004771
>>1620037
Может хотя бы пояснишь нахуй они нужны, чтобы их изобретать?
Ну вот например лисп-машины. Но они
>ушли с рынка
потому что
>а определённом этапе экспоненциального роста вычислительной мощности (закон Мура) аппаратная поддержка лямбда-исчисления утратила экономический смысл для компьютеров широкого потребления
Иными словами "нахуя мне аппаратная поддержка лямбда-исчисления, если мой компьютер достаточно быстр, чтобы с лёгкостью переваривать её программную реализацию?"
Поэтому лисп-машин нет, а лисп есть.

мимо
Аноним 01/03/20 Вск 18:42:40 162005172
>>1620044
>>1620047
>Может хотя бы пояснишь нахуй они нужны, чтобы их изобретать?
Ну что бы хоть как то обосновать нужность.
Очевидно что если все используемые процессоры императивны, то и смысла в неимперативных языках нет.
Аноним 01/03/20 Вск 18:45:10 162005373
>>1620051
ну да, процессоры императивные, значит и в математике смысла нет, нахуй он не нужна
Аноним 01/03/20 Вск 18:47:06 162005474
>>1620046
А шо там понимать?
Просто у вас мутабельных переменных нет вот вы и ебетесь со своими f1(f2(f3(f4(f5(x)))))
Там где нормальный программист просто ебанет цикл
for(int i = 0, s = 0; i < 5; i++) {
s += i;
s += "+" + str(i);
}
Аноним 01/03/20 Вск 18:47:21 162005575
>>1620053
Всё так, математика для программирования не нужна.
Аноним 01/03/20 Вск 18:47:48 162005676
>>1620053
В процессоре есть сложения, умножения, ебанат.
Аноним 01/03/20 Вск 18:49:55 162005877
Аноним 01/03/20 Вск 18:50:18 162005978
>>1620056
в процессоре есть x = x + 1, а в математике нет

>>1620055
если только ты клепаешь сайтики на похапэ, тогда да, не нужна, но и похапэ с сайтиками слабо связан с программированием
Аноним 01/03/20 Вск 18:52:52 162006279
>>1620054
Инымим словами C код и так выполняется в монаде, внутри блока {}
Аноним 01/03/20 Вск 18:53:49 162006480
>>1620059
>в процессоре есть x = x + 1
Ты бы инструкцию к чипу почитал чтоле.
Есть отдельно x+1, и есть отдельно store
Аноним 01/03/20 Вск 18:53:52 162006581
>>1620059
Часто интегралы считаешь, когда SQL-скрипты пишешь? Или когда сообщения в очереди отправляешь?
Аноним 01/03/20 Вск 19:03:45 162006982
>>1620065
как минимум палю алгоритмическую сложность по быстродействию и по памяти, но тебе-то откуда про это знать, ты наклепал лапшу на коленке, хуяк, и в продакшен
Аноним 01/03/20 Вск 19:03:53 162007083
Все типы отражающиеся в данных (даже если они редуцируются во время комплекляктции) можно назвать монадами
Вышеупомянутые тупо енумы в С не называют монадами (на уровне языка) из-за общепринятых реализаций монад в ФЯП
Аноним 01/03/20 Вск 19:04:22 162007184
>>1620051
Ну раз нет аппаратной поддержки модулей и объектов, значит модульное и ОО-программирование не нужно, так что-ли?
Ты совсем ебобо, не видишь разницы между кодом, его абстрактным исполнителем и реализацией этого исполнителя?
Очевидно, для построения систем сложнее laba1, которое неизбежно требует вовлечения различных абстракций, процедурный байтопердолинг не подходит.
Эквивалентность машины Тьюринга и лямбда исчисления показывает, что нет принципиальной невозможности перевести лямбда-код в императивный код.
То что императивные исполнители на данный момент быстрее остальных, для нормальных людей причина писать оптимизирующийся компиляторы из языка для людей в байтоговно, для долбоебов - повод ничего не делать и продолжать жрать говно большой ложкой.
Аноним 01/03/20 Вск 19:05:43 162007485
>>1620071
>ОО-программирование не нужно
Тащемта да.
>Очевидно, для построения систем сложнее laba1, которое неизбежно требует вовлечения различных абстракций, процедурный байтопердолинг не подходит.
Расскажи это авторам Линукса.
>То что императивные исполнители на данный момент быстрее остальных
Означает что они всегда будут быстрее остальных.
Аноним 01/03/20 Вск 19:05:47 162007586
Аноним 01/03/20 Вск 19:09:55 162007887
>>1620074
>Расскажи это авторам Линукса.
Плохой пример, разработка ядра линукс по сути имеет неограниченые человеческие ресурсы, поэтому сложность тут не имеет значения.
Аноним 01/03/20 Вск 19:12:25 162008288
>>1620078
Ахуительный маневр.
Аноним 01/03/20 Вск 19:15:38 162008789
Аноним 01/03/20 Вск 19:18:29 162009190
>>1620087
Ты бы почитал по ссылке чтобы не позориться
>PUSH
>PUSH
>BRANCH
>SET
>INCREMENT
Обычный императивный дискретный процессор.
Аноним 01/03/20 Вск 19:18:42 162009291
>>1620074
>Расскажи это авторам Линукса.
Причем тут Линукс, долбоеб? Там императивный код, который пердолит императивные микросхемы, он и должен таким быть, это тупо эффективнее и быстрее в этом случае. А вот когда ты переходишь на другой уровень абстракции, то там уже императивная пораша начинает сосать с проглотом. Тебе уже написали, что функциональное программирование - это абстракция, компилятор оттранслирует это в эффективную императивную дрисню.
Аноним 01/03/20 Вск 19:19:36 162009492
>>1620069
> алгоритмическую сложность
Ну и при чём тут интегралы? Максимум логарифмы, Да и то нужно редко.
Аноним 01/03/20 Вск 19:21:39 162009593
>>1620094
какие интегралы, идиот, блять, у тебя математика == интегралы? загляни хотя бы в раздел алгебры для начала, базарю, ты охуеешь, если у тебя, конечно, хотя бы зайчатки интеллекта есть
Аноним 01/03/20 Вск 19:22:07 162009794
>>1620092
>Причем тут Линукс, долбоеб?
Ты вообще не следишь за контестом, довнич?
>для построения систем сложнее laba1
Аноним 01/03/20 Вск 19:23:07 162009895
>>1620095
Чел, ты если под веществами, не заходи в тред, или читай хотя бы на что отвечали.
Аноним 01/03/20 Вск 19:23:55 162009996
Какой смысл что-то объяснять долбоебу, у которого есть причинно-следственная связь межу «нет не-императивного процессора» и «нельзя писать не-императивный код», очевидно это зелёный или просто придурок.

>Расскажи это авторам Линукса.
Долбоеб, у них там своя реализация ООП и других абстракций, про которые процессор знать не знает, и которые транслируются в машинную дрисню как и в любом языке.
Аноним 01/03/20 Вск 19:24:17 162010097
>>1620097
системы разные бывают, придурок, и для них требуются разные инструменты
Аноним 01/03/20 Вск 19:27:32 162010598
>>1620099
Да, там есть абстракции. Нормальные императивные абстракции, чтобы не копипастить много императивного кода, все близко к ассемблеру. Там нет дрисни вида f(f(f(f(f(huy(pizda)))))
Аноним 01/03/20 Вск 19:28:01 162010699
>>1620100
Жаль, функциональщина нигде не требуется.
Аноним 01/03/20 Вск 19:28:08 1620107100
>>1619918
Как я понимаю, чтобы сформулировать комбинатор неподвижной точки, тебе нужно выбрать хотя бы одно из этого списка:
- рекурсивные функции (изи, Y f = f (Y f))
- рекурсивные типы (самоприменение внутри тела комбинатора)
- нарушение типобезопасности (nuff said)

Если ты хочешь построить комбинатор неподвижной точки в simply-typed lambda calculus (i.e. нет рекурсии ни термов, ни типов), то это невозможно
Аноним 01/03/20 Вск 19:29:38 1620108101
В 2120 императивный код будет компелироваться в деклиративный, скриньте
Аноним 01/03/20 Вск 19:32:58 1620110102
>>1620053
дегич, процессоры функциональные, потому что основаны на логических функциях
Аноним 01/03/20 Вск 19:34:24 1620113103
>>1620110
блять, по ходу надо валить из этого раздела, сколько тут ебанутых развелось в последнее время, это пиздец
Аноним 01/03/20 Вск 19:34:54 1620114104
>>1620106
Я как-то пытался переписать свой пет-проект в строгой функциональной манере на шарпе через повсеместные readonly struct. По началу даже код казался более красивым и лаконичным. Но в итоге получался чудовищный уродливый нечитаемый даже автором кривой монстр на костылях. Но возможно я просто тупой.
Аноним 01/03/20 Вск 19:36:57 1620117105
>>1620108
будут аппаратные реализации редуцирующей графы хаскель-машины, а императивные программы будут записываться в виде do-нотации (как сейчас)
Аноним 01/03/20 Вск 19:37:06 1620118106
>>1620113
Двачую, с нового года прям нахлынули.
Аноним 01/03/20 Вск 19:38:43 1620119107
>>1620114
Потому что сярп плохо задезайнен под фп
В том же хаскеле практически всё легчко читается по исходному коду и в 95% доки автогенерируемые
Аноним 01/03/20 Вск 19:39:31 1620120108
>>1620113
про логические вентили почитай, маня
Аноним 01/03/20 Вск 19:43:01 1620124109
>>1620120
Про тактовый сигнал почитай, довен.
Аноним 01/03/20 Вск 19:44:20 1620126110
Здорово, наверное, на хаскелле писать большие проекты. Объявить один огромный тип с кучей всего типа подключения к БД и логгера и прокидывать его от main до недр бизнес-логики.
Аноним 01/03/20 Вск 19:46:10 1620128111
Аноним 01/03/20 Вск 19:55:53 1620136112
>>1620051
>Очевидно что если все используемые процессоры императивны, то и смысла в неимперативных языках нет.
Совершенно неочевидно. Объясни, почему.
Аноним 01/03/20 Вск 20:01:23 1620142113
>>1620124
про волновые функции почитай
Аноним 01/03/20 Вск 20:03:33 1620146114
>>1620051
очевидно, что если все используемые процессоры императивны, то и смысла в императивных языках нет, ведь любители побаловаться императивщиной в попку могут с успехом писать на ассемблере
Аноним 01/03/20 Вск 20:04:43 1620149115
>>1620146
Кто о чем, а функциональщик о попках.
Аноним 01/03/20 Вск 20:07:52 1620151116
Аноним 01/03/20 Вск 20:09:04 1620152117
>>1620146
Демагогия, одно дело постепенная надстройка, по сути макросы ассемблеры, другое - совершенно левая искусственная концепция.
Аноним 01/03/20 Вск 20:09:24 1620153118
Аноним 01/03/20 Вск 20:11:15 1620158119
>>1620152
ФП - более совершенная закономерная надстройка
Аноним 01/03/20 Вск 20:16:09 1620161120
>>1620158
Синтаксический сахар в виде мап редьюса вместо циклов - да.
Ебанина где нет ничего кроме f(f(f(f(f(x))))) - нахуй не нужно.
Аноним 01/03/20 Вск 20:16:59 1620163121
>>1620158
Ты понимаешь смысл слова "надстройка"?
Надстройка не ломает то что уже есть в процессоре - императивность, т.е. выполнение инструкций подряд, мутабельные переменные, и т.д.
Аноним 01/03/20 Вск 20:21:17 1620170122
>>1620163
необходимо срочно отказаться от многопоточности, потому что она эмулируется через прерывания на одноядернах системах, тем самым ломая выполнение инструкций подряд

кстати, слышал про переупорядочивание инструкций?
Аноним 01/03/20 Вск 20:22:03 1620172123
Разберем код цепляющий к строке другие строки из массива:
function add(str, strArr ){
for (let i = 0; strArr.length > i; ++i) {
str + strArr;
}
return str;
}
В императивном языке у нас всего 2 переменных и 1 массив

Тем временем в функциональном не дорозумении:

add str strArr = if null strArr then str else add (str ++ head strArr) tail strAdd

У нас пропадает перменная счетчик но теперь вместо всего одного массива и 1 переменной у нас на каждый шаг свой массив и своя строка т.е. вместо 2 переменных и 1 массива у нас N переменных и N массивов (представьте если у нас массив из 1000 элементов вместо 1 счетчика 1 строки и 1 массива у нас тупо 1000 строк и 1000 массивов)

Думаю комментарии функцианальных макак излишни
Аноним 01/03/20 Вск 20:23:07 1620174124
>>1620172
>tail strAdd
tail strArr
быстрофикс
Аноним 01/03/20 Вск 20:24:06 1620176125
>>1620172
10000 МАСИВАВ НЕ СУЩЕСТВУЕТ ЭТА АБСТРАКЦИЯ
01/03/20 Вск 20:26:38 1620185126
74963278392020.jpg 75Кб, 797x797
797x797
Аноним 01/03/20 Вск 20:43:18 1620216127
>>1620172
add str strList = foldr (++) "" (str : strList)

Твоё говно, небось, и с бесконеными списками не работает?
А, извини, в вашей параше нет коданных
Аноним 01/03/20 Вск 20:45:14 1620220128
>>1620174
у тебя хуйня внутри цикла написана, даже императивно писать не умеешь
Аноним 01/03/20 Вск 20:47:29 1620224129
>Думаю комментарии функцианальных макак излишни
>>1620216
>пук
>>1620220
>пук
Аноним 01/03/20 Вск 20:49:12 1620227130
>>1620224
смотрите, этот говнокодер усрался
Аноним 01/03/20 Вск 20:58:02 1620241131
>>1620172
Во, нормально раскидал
Сразу всё понятно на императивном языке
Функциональная макака даже отладить этот свой add не сможет нормально после тово как он всю память займёт
Аноним 01/03/20 Вск 21:00:20 1620247132
>>1620172
> add str strArr = if null strArr then str else add (str ++ head strArr) tail strAdd
Лол. Это же просто набор слов, да?
Аноним 01/03/20 Вск 21:04:35 1620253133
image.png 29Кб, 890x256
890x256
Аноним 01/03/20 Вск 21:07:53 1620260134
>>1620074
>>1620071
> То что императивные исполнители на данный момент быстрее остальных
означает, что их можно генерить из декларативной верифицированной спецификации уже оптимизированными
Аноним 01/03/20 Вск 21:11:55 1620269135
>>1620065
SQL большей частью декларативный, в курсе, да?
Аноним 01/03/20 Вск 21:27:48 1620290136
>>1620163
То есть ООП идёт нахуй.
Аноним 01/03/20 Вск 21:31:26 1620295137
>>1620290
Есть хоть одно доказательство существования ООП?
Аноним 01/03/20 Вск 21:34:03 1620299138
>>1620295
Несущетвующее не может идти на хуй.
Аноним 01/03/20 Вск 21:35:47 1620302139
>>1620290
Демагогия, ООП не отказывается от мутабельных переменных, функций с более чем одним параметром, и т.д.
Аноним 01/03/20 Вск 21:40:41 1620307140
>>1620247
Специально в одну строчку написал чтобы выглядело запутаннее.
Аноним 01/03/20 Вск 21:42:22 1620310141
>>1620302
Мутабельные "объекты" к ООП и не относятся.
ООП это про потокобезопасность, не путай с императивной парашей где везде и всюду надо проверять а не изменился ли твой "объект".
Аноним 01/03/20 Вск 21:43:59 1620312142
>>1620310
Еще раз, для тугих.
ООП это просто надстройка над императивностью.
Борщи это когда все пишется на неестветсвенных ф(ф(ф(ункциях как бута работающих мгновенно))) но все это конвертируется все равно в императивность.
Аноним 01/03/20 Вск 21:46:48 1620318143
image.png 123Кб, 1801x686
1801x686
>>1620176
действительно, если нормально написать, то не существует.
код из >>1620216 работает в ограниченной памяти (хоть и с бОльшим трафиком) для входных данных любого размера, в отличие от императивного накопления в переменной.
пикрелейтед - запуск на бесконечном списке строк.
если исполнение не прервать - будет бесконечно выводить "pr ", ограничившись несколькими МБ ОЗУ
Аноним 01/03/20 Вск 21:48:31 1620320144
>>1620318
Лолблядь. Тебе невдомек, что бесконечный цикл в императиве вообще не будет жрать ничего, кроме пары регистров процессора.
Аноним 01/03/20 Вск 21:52:03 1620322145
>>1620312
Долбоёб, тебе уже сказали, все абстракции конвертируются в машкод, нет никакой разницы между оопешными объектами, HOFами, прологовской резолюцией и прочими другими человеческими абстракциями в этом смысле.

>на неестветсвенны
Неестественных для кого?

>но все это конвертируется все равно в императивность
И что? Это как то должно помешать писать не императивно?
Так пиши сразу на машкодах, хули ты какие-то высокоуровневые пользовательские процедуры вызываешь, в конце же всё в машкод превратиться.
Аноним 01/03/20 Вск 21:54:14 1620324146
>>1620126 Так и делаю, только через тайп классы развязываю логику. Выходит круче любого внедрения зависимости.
Хаскелл/блокчейн программист.
Аноним 01/03/20 Вск 21:55:47 1620326147
>>1620320
приведи императивное решение проблемы из >>1620172, работающее для бесконечного списка строк
Аноним 01/03/20 Вск 21:58:41 1620330148
>>1620216
> add str strList = foldr (++) "" (str : strList)
mconcat же, и все:3
Аноним 01/03/20 Вск 22:00:12 1620333149
>>1620320
Лолблять. Тебе невдомёк, что императивный цикл, строящий результирующую строку, будет реаллоцировать память по весь результат по мере его роста.
Аноним 01/03/20 Вск 22:01:07 1620335150
Аноним 01/03/20 Вск 22:01:27 1620336151
>>1620322
Сука, как же горит с твоей тупости, для процессоров неестественно.
Аноним 01/03/20 Вск 22:01:50 1620337152
>>1620333
Зачем, дебс? Будет просто писать по буковке на экран.
Аноним 01/03/20 Вск 22:04:23 1620342153
>>1620337
с хуя ли ты тут собрался на экран что-то писать внутри цикла?
Аноним 01/03/20 Вск 22:04:27 1620343154
>>1620336
>для процессоров неестественно.
Они тебе это сами сказали?
Аноним 01/03/20 Вск 22:05:43 1620346155
normalno.png 6Кб, 245x150
245x150
Аноним 01/03/20 Вск 22:06:11 1620347156
>>1620336
Процессоры вообще неестественны. Видел, чтобы природа создавала интегральные схемы?
Аноним 01/03/20 Вск 22:09:12 1620349157
image.jpg 17Кб, 400x400
400x400
>Обычная строка
>Высрана в линкед листах
Всё что нужно знать о ФП
Аноним 01/03/20 Вск 22:09:17 1620350158
>>1620312
Почему неестесственных, почему кого-то должно ебать как там байтики в регистрах прыгают и почему иммутабельные объекты это "надстройка над императивностью" и это ок, а фп это тоже надстройка над императивностью но при этом это не ок.
Аноним 01/03/20 Вск 22:09:49 1620351159
>>1620336
Ты процессор дохуя?
Аноним 01/03/20 Вск 22:10:58 1620353160
>>1620349
В питухоне обычная строка линкед лист.
Аноним 01/03/20 Вск 22:11:45 1620354161
>>1620336
Да и в рот их ебать.

Код пишется и читается людьми для обслуживания человеческих потребностей.
Главное чтобы: 1) кода было мало, писать его можно было быстро, читать и поддерживать легко, он был надёжный 2) оно не тормозило.
Первая задача решается развитием языков и исследованиями в этих направлениях, вторая - развитием компиляторов и железа.
В некоторых случаях есть дополнительные задачи, типа чтоб отрабатывало за точное время, потребляло точное количество ресурсов, тут к сожалению без говноедства до конца обойтись, но в целом прогресс тоже есть.
Аноним 01/03/20 Вск 22:11:53 1620355162
>>1620353
Ну питухон язык скриптинга а не программироавния
Аноним 01/03/20 Вск 22:12:58 1620357163
>>1620336
Машина должна и будет служить людям, она не шлюха, чтобы люди исполняли её прихоти. Отсюда байтобляди (а так же сочувствующие им императивные пидорасы, надрачивающие на показатели System.currentTimeMillis() - start) - пиздолисы, которые опускаются до полного говноедства, лишь бы ублажить её регистры и микросхемы. Альфапрограммисты, как и положено альфам, если машина не выполняет положенных ей задач и требует пресмыкаться перед ней и ублажать её байтами, просто берут и за патчкорды, ебашат с вертушки по передней панели и списывают машину на мороз, купив взамен ту, которая не будет выёбываться и выполнит код в сроки и без выебонов, будь там хоть 1000% неоптимизированного оверхеда. И настоящего программиста не волнуют вопросы выдрачивания и быстродействия - он решает важную задачу из предметной области гораздо более сложной, чем низкоуровневое дрочево, и отвлекаться на всякую подзалупную хуету вроде осоьбеннойстей какой-то там архитектуры ему некомильфо.
Аноним 01/03/20 Вск 22:16:09 1620361164
>>1620336
Демагогия. Для процессоров неестественно иметь надстройки. Пиши на асме. Абстракция - совершенно левая искусственная концепция. У процессора нет имён переменных, это искусственная концепция, чуждая процессору.
Аноним 01/03/20 Вск 22:21:50 1620370165
Вы хоть раз попытались поставить себя на место процессора прежде чем пиздеть тут?
Аноним 01/03/20 Вск 22:37:45 1620387166
>>1620172
> В императивном языке у нас всего 2 переменных и 1 массив
Нет. На каждой итерации цикла создаётся новая строка, так что
>вместо 1 счетчика 1 строки и 1 массива у нас тупо 1000 строк и 1 массив
Аноним 01/03/20 Вск 22:39:03 1620389167
>>1620387
Нет в каждой итерации перезаписывается ячейка со строкой
В функциальной помойке будет вызываться рекурсия по значению с новыми переменными на каждый вызов функции
Аноним 01/03/20 Вск 22:39:41 1620390168
>>1620350
фп это не надстройка над императивностью, это f(f(f(f(f(f(f(...
Аноним 01/03/20 Вск 22:40:44 1620393169
>>1620354
>оно не тормозило
Лолблядь. Ну естественно борщи будет тормозить. Он на других принципах, чем процессор. Закон мура давно остановился.
Аноним 01/03/20 Вск 22:43:02 1620397170
>>1620342
Ты угараешь что ли сука? Ты мне скидываешь скрин где твоя борщехлебская программа выводит на экран по буковке И ПРИ ЭТОМ ОТЖИРАЕТ ВСЕГО ЛИШЬ МЕГАБАЙТЫ.
Аноним 01/03/20 Вск 22:47:09 1620401171
>>1620397
Чел отжираешь всего лишь мегабайты тут только ты
Аноним 01/03/20 Вск 22:56:30 1620407172
>>1620361
Чел, ты реально троллишь тупостью. Переменные - это оверхед в 1-2 инструкцию. Ооп - в пару косвенных переходов.
Но главное что при этом не отнимаются возможности мутабельных регистров/переменных. А твои бесконечные рекурсии и создания новых объектов на каждый чих - в десятки раз тормознее.
Аноним 01/03/20 Вск 22:58:13 1620409173
>>1620401
Это не мои слова, довен, борщехлеб сам пишет
>>1620318
>если исполнение не прервать - будет бесконечно выводить "pr ", ограничившись несколькими МБ ОЗУ
Аноним 01/03/20 Вск 22:59:43 1620411174
>>1620354
> кода было мало, писать его можно было быстро, читать и поддерживать легко, он был надёжный
Хорошо что обычный
while(true) { cout << "pr "; } этому удовлетворяет лучше чем

add str strArr = if null strArr then str else add cad cdr fmap (str ++ head strArr) tail strAdd
Аноним 01/03/20 Вск 23:00:21 1620413175
>>1620389
очевидно, что в коде на каждой итерации создаётся новая строка
Аноним 01/03/20 Вск 23:01:12 1620415176
>>1620411
>add str strArr = if null strArr then str else add cad cdr fmap (str ++ head strArr) tail strAdd
Чел ты научись хотя бы не стрелять себе в ноги n^n потом пиши
Аноним 01/03/20 Вск 23:02:22 1620417177
>>1620397
мегабайты аллоцированы под кучу
Аноним 01/03/20 Вск 23:03:41 1620421178
>>1620411
он ничему не удовлетворяет, т.к. твоя хуйня не переиспользуема совершенно
Аноним 01/03/20 Вск 23:06:00 1620424179
Аноним 01/03/20 Вск 23:06:44 1620426180
>>1620411
то, что ты написал, функцкиональщик запишет как
forever (putStr "pr ")
Аноним 01/03/20 Вск 23:09:09 1620433181
Хаскель быстрее С
Аноним 01/03/20 Вск 23:11:37 1620436182
Аноним 02/03/20 Пнд 01:38:00 1620535183
>>1620389
>Нет в каждой итерации перезаписывается ячейка со строкой
А строка это массив байтов, который какбэ нельзя просто так брать и увеличивать.
Либо создаётся новый объект "строка" и на него начинает указывать имя переменной (ну прямо как в функциональной помойке) а старый попадает под сборщик мусора, либо строка изначально является связным списком, что тоже в плане быстродействия фейл из десяти.
>В функциальной помойке будет вызываться рекурсия по значению с новыми переменными на каждый вызов функции
Которая будучи хвостовой, имеет порядок роста памяти O(1)
Аноним 02/03/20 Пнд 01:40:32 1620538184
Даунёнок совсем сдулся
Аноним 02/03/20 Пнд 01:52:53 1620547185
>>1620433
Раст быстрее хаскелля
Аноним 02/03/20 Пнд 02:06:37 1620554186
Аноним 02/03/20 Пнд 02:51:27 1620570187
https://github.com/GtHbA/PIDOR

Как это, так в треде уже почти 200 постов, а так никто и не приплёл самую ахуенную архитектуру для разработки iOS приложений...
Аноним 02/03/20 Пнд 02:54:53 1620571188
>>1620426

Когда вернется домой после работе на нодке или гошке
Аноним 02/03/20 Пнд 03:11:47 1620573189
>>1620571
Вот ты и выдала себя, грязная работоблядь
Аноним 02/03/20 Пнд 15:12:51 1621042190
>>1620571
Скорее уж с ворочанья легаси на джавке или пышке.
Аноним 02/03/20 Пнд 21:03:18 1621311191
>>1621042
Не тот типаж. На пышке и джавке пишут быдланы-мелениалы, которые общаются про тачки, баб, сиськи, пиво...

На крестах и си кодят бородатые бумеры

На нодке и гошке хипстеры.
ФП тот же типаж любит.
Аноним 03/03/20 Втр 01:18:47 1621568192
1.jpeg 268Кб, 961x1236
961x1236
2.jpg 836Кб, 960x1440
960x1440
3.jpg 36Кб, 1280x853
1280x853
4.jpg 91Кб, 900x900
900x900
>>1621311
>На нодке и гошке хипстеры.
>ФП тот же типаж любит.
Аноним 03/03/20 Втр 01:38:52 1621581193
image.png 283Кб, 618x418
618x418
image.png 493Кб, 531x424
531x424
>>1621568
ещё типичные ФПшники
Аноним 03/03/20 Втр 01:47:03 1621582194
Ладно не могу найти ни одного нормального человека пищущего что-то серьезное на ноде/дене
Аноним 03/03/20 Втр 01:57:39 1621586195
>>1621311
Все это полная чушь.
Поколения еще худо-бедно отличаются. Двадцатилетние например в среднем худее и менее уверены в себе, но к 30 раскабанеют и обнаглеют.
Но языки - вообще нет.
Аноним 03/03/20 Втр 02:39:50 1621599196
1.png 7Кб, 268x188
268x188
Аноним 03/03/20 Втр 04:12:14 1621609197
>>1621311
>На крестах и си кодят бородатые бумеры
Либо думеры.
Аноним 03/03/20 Втр 04:21:27 1621610198
image.png 868Кб, 1024x776
1024x776
Аноним 03/03/20 Втр 05:46:55 1621615199
>>1621610
профессор фортран - даг?
Аноним 03/03/20 Втр 11:17:37 1621748200
>>1621311
>На нодке и гошке хипстеры.
>ФП тот же типаж любит
Сука, из-за тебя поперхнулся.
Аноним 03/03/20 Втр 21:21:27 1622319201
Аноним 03/03/20 Втр 23:12:48 1622427202
>>1622319
ФП не модно среди хипстеров уже лет 6.
Аноним 03/03/20 Втр 23:41:08 1622461203
>>1622427
а что щас "модное"? хаскель у хипстерков не взлетел, там мозги нужны, так что они сейчас дрочат?
Аноним 03/03/20 Втр 23:57:19 1622476204
1.jpg 7Кб, 316x202
316x202
>>1622461
>%язык программирования%
>нужны мозги
>не взлетел
Аноним 04/03/20 Срд 00:01:02 1622478205
>>1622461
>а что щас "модное"?
Rust, Swift, Kotlin.
Аноним 04/03/20 Срд 00:04:12 1622484206
>>1622478
> Rust
Всем насрать на него, никто на нём всерьёз не пишет.

> Swift
У яблочников выбора просто нет, а больше нигде он не нужен.

> Kotlin
Да.
Аноним 04/03/20 Срд 00:43:16 1622526207
>>1622484
>хипстеры
>всерьёз

...
Аноним 04/03/20 Срд 00:51:07 1622534208
>>1622526
Хипстеры хоть стартапы пытаются пилить.
Аноним 04/03/20 Срд 01:06:22 1622552209
>>1622534
Ага, по фанчику запилить сырое MWP говно, в лучшем случае потом сплавить его кому-то на поддержку, потому что суппорт подразумевает тесты, фикс багов, покрытие эдж-кейсов, профилирование и устранение боттленков, рефакторинг, а это всё очень скучная инженерная РАБота, которая тру-визионеров стартапщиков не интересует.
Но это скорее исключение. Как правило никакого суппорта не будет, и всё закончиться просто проёбом инвесторских бабок, как обычно и go next. Лёгкость бытия.
Аноним 04/03/20 Срд 13:13:37 1622824210
>>1620051
> то и смысла в неимперативных языках нет.
Давай сразу на машинном коде писать, хули нет? Естественно, блядь, под любым декларативным кодом лежит императивный, так же как под асинхронным всегда находится синхронный код. Вот только толку от этой лапши из if'ов и for'ов, когда можно писать человекочитаемый высокоуровневый код?
Аноним 04/03/20 Срд 18:34:33 1623078211
>>1622824
На это уже был ответ, одно дело синтаксический сахар над императивщиной, которая выполняется последовательно, другое дело маняфункции f(f(f(f(f(f))))
Аноним 04/03/20 Срд 20:31:40 1623194212
>>1623078

>маняфункции f(f(f(f(f(f))))

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

но так ты же ещё можешь использовать боголисп, где открыты просто любые возможности: хоть функциональщиной обмазывайся, хоть состояние нежно тереби.
Аноним 04/03/20 Срд 20:39:10 1623200213
>>1622484
>>1622478

Ну хз, челы.

Discord - это рил хипстерская программа на хипстерских технологиях. И они юзают elixir
Аноним 04/03/20 Срд 22:38:12 1623366214
>>1623078
На этот ответ уже поступило возражение, что дескать вкусовщина из десяти, раз уж отходить от концепции машинного кода, то нет принципиальной разницы в какую именно сторону. Если одному удобно мыслить императивно, это не значит, что другому не может быть удобно мыслить функционально или объектно.
То, что компьютер работает императивно, совершенно никого кроме ассемблероёбов не интересует и аргументом служить не может, мы на другом уровне абстракции а абстракция на то и абстракция, чтобы скрывать детали нижележащего слоя, а ты этот слои пытаешься намазать на вышележащий и продавить это намазывание как аргумент.
Аноним 05/03/20 Чтв 01:04:19 1623456215
Аноним 05/03/20 Чтв 01:05:43 1623457216
>>1623366
>То, что компьютер работает императивно, совершенно никого кроме ассемблероёбов не интересует и аргументом служить не може

ты что это выдумаешь.
вот есть у человека задница, значит надо везде срать!
Аноним 05/03/20 Чтв 14:14:17 1623829217
>>1623366
> раз уж отходить от концепции машинного кода, то нет принципиальной разницы в какую именно сторону.
Есть принципиальная разница. Надстройки над императивщиной добавляют мало оверхеда, а маняфункции - много. Потому что натягивается совершенно другая парадигма, которая запрещает пользоваться тем, что есть (мутабельные регистры процессора, последовательное выполнение инструкций, сайд эффекты).
>Если одному удобно мыслить императивно, это не значит, что другому не может быть удобно мыслить функционально
Это вообще лесом, речь идет об устройстве выполнения (процессорах)
>То, что компьютер работает императивно, совершенно никого кроме ассемблероёбов не интересует и аргументом служить не может
А, ну раз ты скозал.
Аноним 05/03/20 Чтв 14:26:20 1623845218
>>1623829
> Надстройки над императивщиной добавляют мало оверхеда, а маняфункции - много.
Во-первых это спорное утверждение, т.к. та же оптимизация хвостовой рекурсии позволяет писать КАК УДОБНО но с нулевым добавленным оверхедом в рантайме (на компиляции может быть какой-то добавленный оверхед есть, но не в рантайме), т.е. порядок роста твоей f(f(f(x))) по памяти будет O(1), а не O(n) как при отсутствии такой оптимизации.
Во-вторых сейчас не семидесятые и можно гонять хоть килотонны неоптимизированного оверхеда и всем похуй - купить сервак помощнее выгоднее, чем нанять ещё троих сишников маэстро оптимизации.
>речь идет об устройстве выполнения
Устройству выполнения совершенно насрать. Поэтому и лисп-машины вымерли.
>А, ну раз ты скозал.
Я и рынок спроса на труд программистов.
Аноним 05/03/20 Чтв 14:50:15 1623864219
>>1623366
Совершенно верно. Абстракции для того и предназначены, чтобы упрощать понимание и взаимодействие с необходимым уровнем. Есть барьеры абстракций, которые помогают склеивать уровни, и совершенно неважно что есть на нижнем уровне, когда ты работаешь поверх. Есть авто, а есть двигатель авто, это отдельная абстракция, и совершенно неважно какое авто, потому как двигатель существует отдельно. Точно также в двигателе существуют отдельно другие абстракции, как например поршневая система. И так далее...
Аноним 05/03/20 Чтв 15:04:30 1623880220
>>1623864
В реальности это так не работает, гугли закон протекающих абстракций. Работает твой автомобиль-как-абстракция ровно до того момента, как зимой не заведется. Или ты решишь закурить рядом с бензобаком.
Аноним 05/03/20 Чтв 15:11:02 1623884221
Screenshot2020-[...].png 105Кб, 623x830
623x830
>>1623880
Ну я так и понял, что это какой-то закон про пидоров и для пидоров.

По делу - пока машина твоя заводится тебе нет дела до того чё там внутри, это факт, то же самое касается работы компа мне поебать абсолютно как там внизу работает мой софт пока он не багует а будет баговать буду разбираться и в этом мне поможет чистый и кристально прозрачный код с уровнями абстракций а не с навалом ассемблерной лапши.
Аноним 05/03/20 Чтв 15:46:32 1623912222
>>1623884
Твой софт будет тормозным говном
Аноним 05/03/20 Чтв 16:12:40 1623939223
>>1623912
Машина должна и будет служить людям, она не шлюха, чтобы люди исполняли её прихоти. Отсюда байтобляди (а так же сочувствующие им императивные пидорасы, надрачивающие на показатели System.currentTimeMillis() - start) - пиздолисы, которые опускаются до полного говноедства, лишь бы ублажить её регистры и микросхемы. Альфапрограммисты, как и положено альфам, если машина не выполняет положенных ей задач и требует пресмыкаться перед ней и ублажать её байтами, просто берут и за патчкорды, ебашат с вертушки по передней панели и списывают машину на мороз, купив взамен ту, которая не будет выёбываться и выполнит код в сроки и без выебонов, будь там хоть 1000% неоптимизированного оверхеда. И настоящего программиста не волнуют вопросы выдрачивания и быстродействия - он решает важную задачу из предметной области гораздо более сложной, чем низкоуровневое дрочево, и отвлекаться на всякую подзалупную хуету вроде осоьбеннойстей какой-то там архитектуры ему некомильфо.
Аноним 05/03/20 Чтв 17:15:12 1624020224
>>1623880
Дай дураку стеклянный йух...
Аноним 05/03/20 Чтв 17:18:17 1624024225
>>1623912
На практике в реальных приложениях, кроме некоторых особо гнилых отраслей, мест, требующих оптимизации не больше 10%, из них лишь мизерная часть требует низкоуровневых изъёбов.

Напоминаю, что оптимизация делает код сложнее в сопровождении, а лоулевел петушение ещё и повышает вероятность возникновения в них ебейших багов, как известно по печальным поделиям байтоблядей.
Аноним 05/03/20 Чтв 17:23:32 1624030226
>>1623939
Машина должна служить людям, поэтому байтоебы командуют машине как ей себя вести, конкретно, а борщехлебы борются с хвостовыми рекурсиями и уговаривают пролог хоть как то ограничть перебор всего до тепловой смерти вселенной. Байтоебы приказывают имеющимся машинам, а борщехлебы копят с завтраков на более мощную машину, потому что на этой у них ничего не запустится.
>>1623845
Рынок показал что одинаково не нужны ни те ни те, но все же все макакинское говно работает поверх железа и систем созданными байтоебами. Браузеры, ос, сетевые стеки, сервера - все на сишке.
Аноним 05/03/20 Чтв 17:38:05 1624049227
>>1624030
Байтодрочерство это ни что иное как борьба с ненужной сложностью. Пролог дает повышенный уровень абстракции. Что позволяет решать задачу, а не бороться с системой. Вам шашечки или ехать?!
Аноним 05/03/20 Чтв 17:47:00 1624058228
>>1624049
Пролог - это говно, где в какой то момент вместо решения задачи приходится бороться с системой. Но поскольку пролог представляет собой сорт оф черный ящик, нормальными командами указать ты ему это не сможешь, надо писать страницы кода чтобы убедить его сделать cut
Аноним 05/03/20 Чтв 17:49:25 1624063229
>>1624030
> байтоебы командуют машине как ей себя вести
Накомандуй мне интернет магазин за 2 дня, о повелитель машины.
Аноним 05/03/20 Чтв 17:53:15 1624067230
Аноним 05/03/20 Чтв 17:56:01 1624077231
>>1624030
>пролог хоть как то ограничть перебор всего до тепловой смерти вселенной.

Пролог так то имеет императивную составляющую и позволяет отсечениями ограничить перебор. Говнарская хуйня, кстати. То ли дело Mercury с чисто декларативной системой модов для предикатов, которая высокоуровнее (как и весь язык), а работает намного быстрее.

Но дело даже не в этом. Игра "Жизнь" на прологе описывается знаешь во сколько строк? Меньше 100 LOC с комментариями. А теперь то же самое сделай на асме своём любимом, говнарик. То-то же.
Аноним 05/03/20 Чтв 17:57:54 1624080232
>>1624067
Я думал мы говорим он нормальном низкоуровневом кодинге, а ты мне говно с кучей абстракций принёс.

Но даже на нём за два дня - хуй ты успеешь.
Аноним 05/03/20 Чтв 17:59:34 1624086233
>>1624030
В голосину с этого командира машины с laba1.
Со времён старого pr таких непуганных байтослесарей не встречал.
05/03/20 Чтв 18:08:40 1624101234
>>1607051 (OP)
Борщехлёбы, угомонитесь уже. На языках, в которые сложности добавляют ради самих сложностей, называя это математической красотой, никто никогда всерьёз писать не будет.
Аноним 05/03/20 Чтв 18:24:20 1624129235
Аноним 05/03/20 Чтв 18:44:00 1624152236
>>1624101
Разумеется, но таких языков не существует.
Аноним 05/03/20 Чтв 18:52:33 1624162237
>>1624080
Еще раз повторю если туго доходит, абстракции над императивным кодом для императивного процессора - норм, годно сделоли. Маняфункции с маняиммутабельностью - не наш бро.
Аноним 05/03/20 Чтв 19:55:57 1624228238
>>1624030
>но все же все макакинское говно работает поверх железа и систем созданными байтоебами. Браузеры, ос, сетевые стеки, сервера - все на сишке
С этим никто не спорил, и это никого не ебёт. Не примазывайся к славе тех байтоёбов, что пишут "браузеры, ос, сетевые стеки, сервера" - лучше заслужи её.
Аноним 05/03/20 Чтв 19:56:54 1624231239
>>1624162
Ещё раз повторяю - доказательная база хромает на обе ноги.
Аноним 05/03/20 Чтв 20:05:13 1624251240
>>1624228
>Не примазывайся к славе тех байтоёбов
Потому что?
Аноним 05/03/20 Чтв 20:12:45 1624269241
>>1624152
Да пожалуйста:
- rust
- haskell
- prolog
- smalltalk
Аноним 05/03/20 Чтв 20:13:03 1624270242
1483959717372.png 101Кб, 1379x970
1379x970
Аноним 05/03/20 Чтв 20:50:49 1624325243
>>1624162
Абстракции нужны для людей.

Для выебанных в мозг операционной семантикой, аппликативным порядком и прочими прелестями процедурного пердолинга инвалидов, императивный стиль, наверное, больше подходит. Правда это не точно, ведь большинство из них ничего другого и не видели.
Аноним 05/03/20 Чтв 20:54:53 1624331244
>>1624058
Пролог это просто способ решать задачу. Некий язык, который позволяет рассуждать о вычислениях, об алгоритмах, а не об устройстве какого то примитивного вычислителя. Его компилятор/интерпретатор берет на себя все сопутствующие проблемы, которые выплывают при использовании примитивных императивных языков. Его уровень абстракции находится в плоскости решения алгоритмических задач, а не в плоскости борьбы с императивным наследием ЭВМ. Зачем нужен язык программирования, если его уровень абстракции это противостояние несовершенству архитектуры компьютера? Может лучше написать такой умный транслятор, который будет давать такой уровень абстракции, который позволит не думать об архитектуре ЭВМ, а позволит решать таки алгоритмические задачи, которые позволят писать софт для людей. Нет необходимости говорить с компьютером на языке его архитектуры. Это неудобно для человека. Цель программирования, заставить компьютер общаться с человеком на удобном для человека языке. Для этого придумали удобные языки, как тот же Пролог, а заботу об взаимодействии Пролога с компьютером переложили на его транслятор.
Аноним 05/03/20 Чтв 21:00:11 1624345245
>>1624058
Пролог привел в пример не я. На его месте может быть Лисп, или Standard ML, или что то еще. Это в общем то языки с близким уровнем абстракции. Все они позволяют не думать об архитектуре ЭВМ, а решать алгоритмические задачи.
Аноним 05/03/20 Чтв 21:01:43 1624348246
>>1624067
CGI, серьезно? Это не самый удобный инструмент для написания веб-приложений.
Аноним 05/03/20 Чтв 21:02:50 1624352247
Нужно: писать поддерживаемый, легко модифицируемый, надёжный код для масштабируемых систем.

Нормальный человек: пишет свой язык и оптимизирующий компилятор, который превратит удобные для него абстракции в процедурную байтодрисню. Или берёт готовые, в зависимости от задачи и на свой вкус.

Байтоговнарик: пишет процедурную байтодрисню руками, жутко гордиться этим, отрицает прогресс, стреляет себе в ногу, нажирается дешёвой водкой, позерски ноет о тяжести нищебросдкой жизни.
Аноним 05/03/20 Чтв 21:03:53 1624354248
>>1624077
>Игра "Жизнь" на прологе описывается знаешь во сколько строк? Меньше 100 LOC с комментариями.
В том то и дело. Пролог может выглядеть странным, но он дает тот уровень абстракции, который позволяет не просто байты перекладывать, а решать реально сложные алгоритмические задачи, затрачивая на это минимум усилий.
Аноним 05/03/20 Чтв 21:04:21 1624357249
>>1624270
Не забудь доказать что это актуально более чем в 5% отрасли.
Аноним 05/03/20 Чтв 21:09:13 1624370250
>>1624357
Бинарные деревья - это вообще 99% отрасли. И там сраная даже Java быстрее, лол.
Аноним 05/03/20 Чтв 21:09:30 1624371251
>>1624251
Потому что они - адекватные уравновешенные люди (не шизики), прекрасно осведомлённые о недостатках языков, на которых пишут и понимающие, почему именно эти языки пригодны для именно их задач (а не для всех возможных задач), и реально работающие в этих отраслях.
Аноним 05/03/20 Чтв 21:09:47 1624373252
>>1624352
>превратит удобные для него абстракции в процедурную байтодрисню.
Не превратит.
Аноним 05/03/20 Чтв 21:10:04 1624374253
>>1624357
> 5%
А ты оптимист. Как насчёт 0.0005?
Аноним 05/03/20 Чтв 21:11:44 1624378254
>>1624371
Кто "они" то? Ты поехавший?
Аноним 05/03/20 Чтв 21:13:30 1624384255
>>1624162
Давай разберемся. Человеку нужен удобный язык, который позволяет решать задачу с минимальными усилиями. Не думать ни о чем кроме самой задачи. Все остальное за него решают компиляторы/интерпретаторы, фреймворки/библиотеки, etc. Это будет язык максимально приближенный к предметной области. Зачем человеку решающему сложную вычислительную задачу думать об архитектуре процессора, или о других не важных для решения его задачи вещах? Вопрос риторический. Человек хочет командовать компьютером, его укрощать. Пускай все проблемы несовершенства ЭВМ решают программы на нужном уровне абстракции. Например, компилятор Хаскела позволяет писать ленивый код, преобразуя его в подходящий код для процессора. Грубо говоря, можно написать такой интерпретатор, который будет преобразовывать любой самый абсурдный код с точки зрения процессора, в удобный для этого процессора вид. Программисту останется только освоить это язык, и больше не задумываться о том как устроен компьютер на низком уровне. За него будет думать компилятор/интерпретатор.
Аноним 05/03/20 Чтв 21:15:27 1624389256
Simon-Peyton-Jo[...].jpg 1899Кб, 3872x2592
3872x2592
Аноним 05/03/20 Чтв 21:22:11 1624410257
>>1623939
Двачую, байтоёбы рабы во всём - рабы машины. рабы предубеждений, рабы производительности, рабы стереотипов, рабы обрабатываемых штеудом х86 типов данных - для них всё, что не кратно 2 байтам и больше 16 байт не может быть примитивным типом, хотя число - это просто число, оно может быть целым, дробным, рациональным, комплексным, но не "в 2 байта в 4 байта в 8 байт". Да, байтобляди были актуальны пару-тройку десятков лет назад, когда кроме этого пресловутого отлизывания регистров и микросхем не было способов заставить машину быстро решать задачу. Но теперь-то в нашем распоряжении оптимизирующие компиляторы, многоядерные процессоры с параллелизацией, которые производительнее машин 20летней давности в сотни тысяч раз. Жаль, что программирование было поглощено стереотипным быдлом, не могущим в думать, и способным работать лишь по зазубренной инструкции, написанной кровью и потом сотен павших хомячков-байтоёбов до него. Настоящее, полноценное программирование, благодаря подобным обмудкам, мало теперь где востребовано. Хотя там где оно востребовано, можно кататься как в масле сыр и получать в три раза больше не то что сениор-байтоёба, а ёбанного заместителя директора быдлоконторы в которой этот байтоёб работает. С другой стороны это и хорошо - в космическую промышленность, Data mining и прочие сложные и непосильные для императивных байтохомячков сферы попадает лишь элита.
Аноним 05/03/20 Чтв 21:22:48 1624415258
>>1624378
Пиздец, ты нить диалога в голове удержать не можешь?
Аноним 05/03/20 Чтв 21:22:57 1624417259
>>1624373
>Не превратит.
Rust, OCaml, MLton, GHC, etc. Это умные компиляторы, позволяющие писать код не в рамках архитектуры фон Неймана. Они преобразуют код в нужный вид для процессора. С этим нет никаких проблем. Программисту остается только понимать как на них писать. Ему не нужно знать устройство процессора.
Аноним 05/03/20 Чтв 21:24:47 1624424260
>>1624415
Шизик, ты выдумал каких-то "они", ну выкинь тогда телефон, компьютер, в 99% устройств в мире используется мой байтоебский алгоритм.
Аноним 05/03/20 Чтв 21:25:49 1624428261
>>1624270
Разницу в 1-10 раз можно нивелировать правильно подобранным алгоримом, или увеличением мощности. Тупо используешь 10 машин вместо одной, и не ибешься с тоннами неподдерживаемого кода на Си. На Хаскеле кода будет во много раз меньше, и он будет удобен в поддержке.
Аноним 05/03/20 Чтв 21:26:56 1624430262
Аноним 05/03/20 Чтв 21:27:04 1624431263
>>1624354
>>1624331
Пролог не позволяет решать алгоритмические задачи. Вместо написания алгоритма, программист на прологе должен будет написать в три раза больше кода, убеждающего пролог сделать именно так, как возможно посчитать на императивном процессоре, существующем в реальном мире.
Аноним 05/03/20 Чтв 21:27:49 1624432264
>>1624430
Бенчмарк выше сказал.
Аноним 05/03/20 Чтв 21:29:25 1624435265
>>1624424
> Не примазывайся к славе тех байтоёбов, что пишут "браузеры, ос, сетевые стеки, сервера"
После этого ты пишешь
>потому что?
Ты не переспрашивал нихуя, из чего я делаю вывод что ты прекрасно всё понял, а уже впоследствии ты якобы вспомнил что нихуя не понял и решил потроллить тупостью.
Аноним 05/03/20 Чтв 21:30:00 1624436266
>>1624384
В реальном мире существуют процессоры, которые по тактам выполняют команды последовательно, и обладают мутабельными регистрами, возможностью передавать несколько параметров в функции и т.д. Умышленный отказ от этого всего, с маняфункциями без императивности, без мутабельности, создает дичайший оверхед, поскольку процессору приходится выполнять не алгоритм, а какую нибудь всратую виртуальную манямашину чтобы обслуживать надуманные конструкции языка.
Аноним 05/03/20 Чтв 21:31:41 1624440267
>>1624432
Бенчмарк выше говорит, что памяти слегка вдвое больше джава использует в процессе. Плюс непонятно причём тут хаскель, я за него вообще ничего не говорил.
Аноним 05/03/20 Чтв 21:32:21 1624442268
>>1624431
Иди читай про логическое программирование.
Аноним 05/03/20 Чтв 21:32:55 1624443269
>>1624410
Все эти "целые", "дробные", "комплексные" считаются на реальном железе с реальными регистрами такого размера. Благодаря байтоебам у нас еще хоть что то работает, а манякукаретики загаживают все своими маняфункциями, из за чего на смартфоне, который как ты выражаешься в сотни тысяч раз мощнее старых компов, ввод и вывод текста работает медленнее, чем на тех старых компах.
Аноним 05/03/20 Чтв 21:34:02 1624449270
>>1624417
Это все фантазии. Конечно они превращают в нужный для процессора вид, потому что других не существует и не будет существовать (уж точно не в варианте с маняфункциями вида y=f(f(f(f(f(f(x)))))). Но это все идет ценой оверхеда.
Аноним 05/03/20 Чтв 21:34:29 1624450271
>>1624435
Я спросил не примазываться - потому что что?
Аноним 05/03/20 Чтв 21:35:57 1624453272
>>1624436
Учитывая скорость вообще похую что они там могут и умеют, всю программу можно редуцировать до одной инструкции mov и всё равно изменений в скорости работы большей её части заметить не удастся.
"Преждевременная оптимизация - корень всех зол", и сказал это ни кто иной как отец всея байтослесарства.
Аноним 05/03/20 Чтв 21:36:15 1624456273
>>1624440
А си использует в 585 раз меньше хаскеля.
Аноним 05/03/20 Чтв 21:36:26 1624457274
>>1624443
>Все эти "целые", "дробные", "комплексные" считаются на реальном железе с реальными регистрами такого размера
И чё? Усраться теперь?
Аноним 05/03/20 Чтв 21:37:23 1624459275
>>1624453
Нет таких компиляторов которые умеют редуцировать нетривиальную программу сложнее хеллоу ворлда. Поэтому, нет не похую. И на скорость не похую. По хорошему надо сжечь всю инфраструктуру и начать пилить веб с нуля.
Аноним 05/03/20 Чтв 21:38:13 1624462276
>>1624450
То, что ты спросил именно это, а не "к кому примазываться" - означает что ты понял к кому. Нехуй теперь упираться.
Аноним 05/03/20 Чтв 21:38:15 1624463277
>>1624457
Да, усраться. Заводи какие хочешь типы, только они будут эмулироваться, императивными инструкциями выполняемыми по порядку, а значит будет снова тот самый десятикратный оверхед
Аноним 05/03/20 Чтв 21:38:39 1624465278
>>1624442
Я достаточно знаком с прологом и уже обоссал его в прошлом треде.
Аноним 05/03/20 Чтв 21:39:14 1624467279
Аноним 05/03/20 Чтв 21:39:24 1624468280
>>1624436
>создает дичайший оверхед
Вранье. Опять же, оверхед покрывается правильным алгоритмом или увеличением количества машин. Не помню кто сказал, вроде Кормен, или Ахо, что правильный алгоритм позволяет увеличивать производительность программы в сотни, тысячи, и даже более раз, а вот быстрый язык может увеличить производительность только раз в 10, как например Си против Хаскела, ну или против Окамла. Дело в том что, быстрый алгоритм на Хаскеле/Окамле/etc можно написать намного быстрее и проще чем на Си. В итоге Си не выиграет ничего. Если даже он будет быстрее, можно тупо увеличить количество машин.
Аноним 05/03/20 Чтв 21:41:18 1624472281
>>1624467
Красиво, потом посмотрю.
Аноним 05/03/20 Чтв 21:41:43 1624474282
>>1624449
Окамл иногда быстре Си. Раст часто быстрее Си. Млтон тоже часто быстрее Си. При этом код на них понятнее, проще, компактнее. В остальных случаях просто увеличиваешь количество машин.
Аноним 05/03/20 Чтв 21:41:56 1624475283
>>1624436
Какой же ты долбоёб.
Любой, даже самый высокоуровневый код можно транслировать в низкоуровневую парашу, вплоть до нейтив кода, что GHC и MMC и делают, например.
Аноним 05/03/20 Чтв 21:44:51 1624478284
>>1624465
Можешь доказать что логическое программирование уступает императивному в уровне абстракции?
Аноним 05/03/20 Чтв 21:45:14 1624479285
>>1624468
>Вранье
Сухие факты. В том числе подтверждаемые бенчмарками, да и банальной логикой. Одно дело оверхед, скажем, для конструктора объекта в крестах, там все ограничивается парой слов и парой косвенных вызовов, и другое - оверхед от маняфункций f(f(f(f(f(x))))) нахуй не нужных зато чтоб иммутабельно
>оверхед покрывается правильным алгоритмом
Сравниваются эквивалентные алгоритмы. Если вдруг твой маняязык быстрее байтоебства, это значит что на нем использовали медленный алгоритм и его можно переписать быстрее.
>увеличением количества машин.
Закон мура не работает в паралеллизме, так как оверхед на синхронизацию и передачу состояний между машинами съедает весь прирост.
>быстрый алгоритм на Хаскеле/Окамле/etc можно написать намного быстрее и проще чем на Си.
Что там сложного-то? Берешь и пишешь пару циклов и проход парой указателей.
Аноним 05/03/20 Чтв 21:46:02 1624482286
>>1624475
Долбоеб тут только ты, не понимающий что транслироваться будет с дичайшим оверхедом, что мы и наблюдаем в бенчмарках.
Аноним 05/03/20 Чтв 21:47:59 1624486287
>>1624478
Дело не в том что не уступает, а в том, что конкретно в прологе придется писать портянки кода уговаривая пролог посчитать все за приемлимое время. В результате код на прологе выглядит ужасно грязно, с постоянными указаниями как делать перебор в дереве. Ну и зачем это надо, если можно просто на си написать цикл и там явным образом указать, как именно будет проходить перебор.
Аноним 05/03/20 Чтв 21:50:13 1624489288
>>1624479
Твои доводы полная чепуха. Ты не напишешь такой же короткий и поддерживаемый код на Си какой можно написать на перечисленных мной языках. Аналогичный алгоритм на Си будет больше, сложнее, чем такой же на Окамле. При этом выигрышь в производельности врядли будет больше чем в 3 раза. Для не сложного вычисления это чепуха, его даже не заметишь. Если вычисление реально сложное, то можно просто увеличить количество машин. Профит. Это будет быстрее, дешевле, проще.
Аноним 05/03/20 Чтв 21:52:43 1624495289
>>1624489
Жаль что это беспруфный вскукарек.
Аноним 05/03/20 Чтв 21:56:53 1624500290
1520263989513.png 145Кб, 1500x904
1500x904
>>1624489
> можно просто увеличить количество машин
Это так не работает. Оверхед на синхронизацию быстро съест весь рост.
Типичный график перформанса от многопроцессорности выглядит так.
4 ядра дают меньше х2 прироста над 2 ядрами.
8 ядер дают меньше х7 прироста над 2 ядрами.
16 ядер дают всего х10 прироста над 1 ядром, а не х16.
Аноним 05/03/20 Чтв 22:00:22 1624505291
>>1624486
>Ну и зачем это надо, если можно просто на си написать цикл
Цикл это и есть портнянка. В которой через два дня не разберешься. Циклы это вообще антипаттерн в любой парадигме.
Аноним 05/03/20 Чтв 22:00:49 1624506292
>>1624436
>процессору приходится выполнять не алгоритм, а какую нибудь всратую виртуальную манямашину чтобы обслуживать надуманные конструкции языка.

Что это вообще значит? Ты же в компиляции и кодогенерации вообще не шаришь. Причём тут виртуальная машина, нахуй ты её сюда приплёл. Ты хоть понимаешь какие она решает задачи?

Алгоритм это и есть надуманные человеком операции, процессору вообще похуй, он выполняет тот машкод что ему выполнять.
Аноним 05/03/20 Чтв 22:01:53 1624508293
>>1624500
>Оверхед на синхронизацию
Какую синхронизацию? Функциональные языки имеют средства для написания параллельного/конкурентного кода без синхронизаций.
Аноним 05/03/20 Чтв 22:02:18 1624510294
>>1624482
Ну давай, повесели меня, расскажи откуда возьмётся оверхед.
Аноним 05/03/20 Чтв 22:02:49 1624513295
Аноним 05/03/20 Чтв 22:03:42 1624514296
>>1624508
На любую, мань. Алсо параллельный код возможен в скольки, в 1% алгоритмов? В остальных будут зависимые от других вычислений данные.
Аноним 05/03/20 Чтв 22:06:14 1624520297
>>1624506
При том, что если твой функциональный манякод окажется чуть сложнее f(f(f(f(x)))) от он не схлопнется в одну инструкцию, и компилятору придется эмулировать весь твой маняязык, в котором не существует мутабельных переменных, функций с более чем одним аргументом и так далее, ему придется перекидывать байтики туда-обратно, создавать тысячи временных объектов, и выполнять сотни вызовов на стеке.
Аноним 05/03/20 Чтв 22:28:45 1624548298
>>1624479
Чел, в реальности жизни, кроме абсолютных показателей, типа выполнилось за столько-то писесекунд, используются относительные, если юзер своими глазами не замечает разницу, значит разницы нет. Поэтому абсолютно похуй за сколько наносекунд отработает логика твоего бекенда на асме, если 99.99% времени будет потрачено на запрос в базу/кеш, а если не в него, ты всё равно упрёшься в езернет. В виду этого, твои рассказы о оверхеде на синхронизацию как минимум смешны (и это в эпоху микросервисов). То же самое с фронтендом, мобилками и т.д., ты упираешься в браузер, платформу и так далее. Понимаешь, не все заняты автоматизацией сливных бачков на полудохлом МК. За оптимизированный код нужно платить и за оптимизацию без необходимости не берутся. В редких местах, можно написать императивный говнокод, тот же хаскель предоставляет средства написать "настоящий" квиксорт, предоставляет мутабельные массивы, IORefы и прочее говно, но к ним прибегают только в случае крайней необходимости.
Иметь 98% процентов хорошо читаемого и надёжного кода и 2% мутабельной императивной лапши для оптимизации боттлнеков лучше, чем иметь 100% мутабельной императивной лапши, просто ради в выйграше нахуй никому не нужных миллисекунд. А ещё лучше вообще не смешивать и доменную логику писать на высокоуровневом ЯП, а узкие места на том же расте/окамле и подключать их отдельно.
Аноним 05/03/20 Чтв 22:38:37 1624562299
>>1624520
Ооо, твой уровень понятен. Ты небось ещё думаешь, что
при работе с иммутабельными данными, будут реально создаваться каждый раз новые структуры? Боюсь тебя огорчить, в сгенерированном коде этого не будет, а будет обычная, так любимая байтоговнарями, мутабельная процедурная дрисня с указателями.

Олсо, ты так и не написал, какое отношение к этому всему имеет виртуальная машина. Почему допустим хаскель код компилируется в нейтив и для выполнения ему никакая вмка не нужна?
Аноним 05/03/20 Чтв 22:39:17 1624563300
>>1624548
Функциональный манякод не имеет отношения к хорошо читаемому и надежному.
c++ это и есть высокоуровневый ЯП.
В реальности все видят как все ПИЗДЕЦ тормозит, сайты открываются минуты, скроллятся с лагами, и т.д.
Аноним 05/03/20 Чтв 22:41:21 1624569301
>>1624562
>при работе с иммутабельными данными, будут реально создаваться каждый раз новые структуры?
Да, при нетривиальных программах сложнее хеллоу ворлда так и происходит. Что подтверждают бенчмарки где хаскиль медленне даже джавы.
>какое отношение к этому всему имеет виртуальная машина.
Доеб к словам, ты все прекрасно понял.
Аноним 05/03/20 Чтв 22:42:58 1624572302
>Функциональный манякод не имеет отношения к хорошо читаемому и надежному.
Ну это уже совсем ЖЫР пошёл.
Ну да, хорошо читаемый и надёжный это процедурные портянки на говняшной.
Аноним 05/03/20 Чтв 22:45:10 1624575303
Аноним 05/03/20 Чтв 22:48:42 1624580304
>>1624569
>Да, при нетривиальных программах сложнее хеллоу ворлда так и происходит.
И тут ты такой с пруфами.

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

По факту, кто смотрел исходники GHC и генерируемый код, или хотя бы читал документацию, знают что при работе с иммутабельными данными никаких копий не происходит, а происходит переиспользование памяти с обычной передачей указателя.
Аноним 05/03/20 Чтв 22:51:16 1624582305
Аноним 05/03/20 Чтв 22:54:28 1624589306
>>1624580
Ну и зачем нужны такие ленивые вычисления, если она настолько тормозит? Вместо манягенератора который неизвестно сколько будет отрабатывать, всегда можно написать просто сишный цикл, который четко известно когда и сколько будет работать.
Аноним 05/03/20 Чтв 22:54:50 1624590307
>>1624582
Ну теки, держать не буду.
Аноним 06/03/20 Птн 09:17:54 1624853308
А тем временем, wc на хаскелле сделал по производительности сишную версию *
Аноним 06/03/20 Птн 10:01:46 1624879309
>>1624853
Так и запишем: хаскелль уделал неоптимизированное решение в лоб на сишке.
Аноним 06/03/20 Птн 10:03:36 1624881310
>>1624879
* пришлось параллелить то, что сишка делает в один поток
Аноним 06/03/20 Птн 10:29:46 1624892311
>>1624881
Ну байтодебилы в параллельность так-то не могут особо, только говно на тредах и локах и прочих технологиях 40+летней давности ковырять, стреляя себе в ногу. Но это в целом основное занятие байтослесаря, так что ему не привыкать.
Аноним 06/03/20 Птн 12:38:21 1624961312
>>1624500
> Оверхед на синхронизацию
Ёбаный стыд, иммутабельные объекты это как раз про потокобезопасность
06/03/20 Птн 13:46:41 1625002313
>>1624961
Хуябельные, блеать. Оверхед будет из-за постоянного копирования, раз изменять нельзя.
Аноним 06/03/20 Птн 13:55:21 1625007314
>>1624961
Лолблядь, а причем тут это вообще?
Если у тебя сначала считается много k=a⋆b, l=c⋆d, а потом x=k+l, то ты в любом случае будешь ждать первых результатов, вне зависимости от того мутабельные k=a⋆b или иммутабельные k=new(a⋆b).
Аноним 06/03/20 Птн 14:00:29 1625010315
>>1625002
Хуерхед, с темы-то не соскакивай, ты про синхронизацию скулила.
Аноним 06/03/20 Птн 14:03:04 1625012316
>>1625007
В простом примере безусловно, а реальной работе рано или поздно будет невовремя перезаписан объект и вызван дедлок, для борьбы с чем надо либо изначально отказаться от мутабельности, либо городить правила для очередей.
Аноним 06/03/20 Птн 14:03:54 1625013317
>>1625007
И блядь к чему вообще это сказано, если речь про синхронизации.
Аноним 06/03/20 Птн 20:19:06 1625323318
1520714125625.webm 7069Кб, 1920x1080, 00:01:16
1920x1080
>>1624572
>хорошо читаемый и надёжный это процедурные портянки на говняшной.
Да. Вот как выглядит простой и надежный код
1-2. инклюды чтобы строки и консолька работали
3-4. разработчики юникода и шиндоус мудаки, поэтому копипаста чтобы utf-16 работало
5. ненужный инклюд забыл убрать
6. конфиг. половинная ширина терминала (подобранная методом проб и ошибок)
7. функция для перевода символа юникода в его смещение относительно буквы А
8. функция добавления символа к строке с учетом текущих тегов.
9. если нет тегов или символ не конвертируемый, добавить как есть
10. если символ в нижнем регистре, то доп.смещение. потому что авторы юникода мудаки
11. автоматически высчитываемое смещение в зависимости от текущих тегов.
12. фикс пропущенных символов. потому что авторы юникода мудаки.
13. добавление к строке суррогатной пары. потому что авторы юникода и шиндоус мудаки.
15-16. глобальные переменные, вынесены туда из мейна для простоты.
17. функция, дописывающая к строке накопленные символы незавершенного тега. есть бага.
18. псевдохешмап, на два валидных и один невалидный тег
19. главная функция
20. копипаста чтобы utf-16 работало, потому что авторы юникоды и шиндоус мулаки.
21. цикл, считывающий строку целиком из консольки и сбрасывающий переменные
22. цикл для всех сивмолов в строке. есть бага.
23. если самый первый символ строки #, то вход в режим заголовка. сам # не добавляется к строке
24. добавление к строке символа в режиме заголовка
26. конечный автомат микропарсера тегов
27. в начальном состоянии, если символ открытия тега, то следующее состояние
28. иначе символ добавляется к строке с учетом текущих тегов
29. в состоянии ожидания буквы тега, если /, то переход в состояние закрывающегося тега
30. в состоянии ожидания буквы тега или закрывающегося тега, запомнить букву тега
31. в случае незавершенного тега, записать сохраненные символы.
32. в состоянии окончания открывающего или закрывающего тега, если тег валиден, то (кроме случая, когда тег не был открыт) увеличить или уменьшить счетчик активных тегов. И сбросить состояние конечного автомата.
33. как 31.
36. завершение последнего незакрытого тега в строке
37. обрезать обработанную строку по полуширине терминала
38. выровнять строку пробелами до полуширины терминала и отделить вертикальной чертой
39. вывести обработанную строку и подготовиться к вводу новой строки, вернув каретку в начало.
40. повторить весь цикл ввода.
Аноним 07/03/20 Суб 20:28:30 1626544319
>>1624892
Байтодебилам и не надо, у них в один поток быстрее, чем хахаскель в три, лол
Аноним 07/03/20 Суб 22:16:03 1626710320
>>1624563
Императивный манякод не имеет отношения к хорошо читаемому и надёжному
Аноним 07/03/20 Суб 22:33:35 1626763321
Аноним 08/03/20 Вск 01:19:58 1626972322
>>1626763
Толсто это когда как детектив распутываешь программу и зарисовываешь какой стейт в какой момент чтобы ничего не упустить.
Аноним 08/03/20 Вск 01:42:04 1626982323
>>1626972
Жиза, постоянно этим занимаюсь, когда пытаюсь что-нибудь писать на хаскелле.

мимо
Аноним 08/03/20 Вск 10:30:02 1627100324
>>1626982
Толсто, фп как раз и славится отсутствием стейта
Аноним 08/03/20 Вск 13:36:46 1627262325
>>1627100
ФП славятся тем, что неизбежный в реальном приложении стейт
всплывает наверх архитектуры и пробрасывается оттуда потом сверху донизу.
И если ООП прекрасно прячет какой-нибудь локальный кэш под капотом абстракции, то в ФП это выглядит стрёмно и протекает
Аноним 08/03/20 Вск 13:43:39 1627271326
>>1627262
Ты путаешь тёплое с мягким и наворачиваешь фиолетовое
Аноним 08/03/20 Вск 13:45:50 1627273327
>>1627100
Незалдуженная слава. Нет никакой практический разницы между изменением стейта напрямую и рекурсивным вызовом текущей функции с изменённым стейтом. Точно так же можно проебаться и передать неправильный стейт. Вся разница лишь в отсутствии локальных переменных и вынужденности инициализировать и передавать их извне. Абстракции текут повсеместно. Да, с математической точки зрения красиво. Но не забываем, что математика так и не научилась в абстракции, и в каждой теории тебя заставляют дрочить доказательства, даже если это сотню раз было доказано, и всем на это насрать. Как если бы для написания хеллоуворлда пришлось дрочить весь более низкоуровневый код от ядра и драйверов до исходников стандартной либы.
Аноним 08/03/20 Вск 13:51:33 1627278328
Что аноны думают по поводу ML языков, типо F#/OCaml? Франкенштейны или таки вин? Ну в F# меня слишком пугает совместимость с .NET и связь с MS.
Аноним 08/03/20 Вск 14:03:45 1627288329
>>1627271
ты не писал на Хаскеле ничего, сложнее факториала
Аноним 08/03/20 Вск 14:03:47 1627289330
>>1627273
Нет никакой практической разницы между крестами и машиной Тьюринга.
Аноним 08/03/20 Вск 14:05:16 1627290331
>>1627288
В свою очередь в любом нормальном языке должна быть возможность писать факториал так, как в хаскеле, если её нет то извольте проследовать на парашу выразительности.

мимо
Аноним 08/03/20 Вск 14:13:39 1627299332
>>1627278
>F#
>пугает совместимость с .NET и связь с MS
Так он ни для чего кроме частных вставок for lulz в .NET-based проект не предназначен и планов выстраивать из него полноценный язык никогда не было
Аноним 08/03/20 Вск 14:33:39 1627316333
Аноним 08/03/20 Вск 14:36:05 1627320334
>>1627289
Нет никакой практической разницы между хаскеллем и машиной Тьюринга. И это значит, что все вскукареки про какие-то "гарантии" - наглая ложь.
Аноним 08/03/20 Вск 14:42:16 1627334335
>>1627288
Ты-то что осилил сложнее факториала?
Как и зачем натягивать парадигмальную разницу в ООП кешах и полностью редуцируемого ФП кода - непонятно
Каким образом ты специфику языка с "пробрасыванием стейта" закидываешь в "архитектуру" непонятно
Для пробрасывания есть свои инструменты и паттерны, те же трансформеры
Если у тебя возникают какие-то проблемы с реализацией в ФП ты или делаешь что-то не так или пытаешься впихуть невпихуемое по определению
Аноним 08/03/20 Вск 15:03:41 1627413336
>>1627273
>математика так и не научилась в абстракции
охуел с этого жира, математика ващет это как раз про абстракции, они там везде
Аноним 08/03/20 Вск 15:06:26 1627417337
>>1627320
Практической нет, а разница в выразительности - огромна.
Аноним 08/03/20 Вск 15:24:41 1627456338
>>1627100
Такой жыр, от того что ты вместо состояния 1, 2, 3... Возвращаешь new(1), new(2), new(3), состояние никуда не денется.
Аноним 08/03/20 Вск 15:26:03 1627458339
>>1627456
Кого ебёт где там состояние в ассемблере крутится? Никого абсолютно кроме асмоёбов.
Аноним 08/03/20 Вск 15:49:58 1627486340
>>1627458
Причем тут ассемблер, довнич? Речь о состоянии в твоей программе.
Аноним 08/03/20 Вск 16:00:31 1627512341
>>1627456
Передается по значению?
Аноним 08/03/20 Вск 16:23:46 1627543342
>>1627486
Состояния в моей программе не существует на том уровне абстракции, в которым я работаю. На моём уровне абстракции существует только редукция.
Аноним 08/03/20 Вск 17:24:36 1627592343
>>1627262
В ФП стейт передаётся явным образом просто как аргумент для тех функций, которые от него зависят. Он специально типизирован и код работающий со стейтом, как и с прочими сайд эффектами, изолирован от чистого кода. В императивной же дрисне сайд-эффектное говно перемешано с остальным кодом, в результате чего его безопасность в разы меньше.
Работа с сайд эффектами в ФП языках построена на его концептуальном базисе (монады в Haskell, линейные типы в Mercury и Clean), а для уменьшения синтаксического шума при работе с ней, обычно есть специальные конструкции типа do нотации, !IO и тд.
Аноним 08/03/20 Вск 20:10:19 1627807344
Давайте уже игнорировать вскукареки унтерков-байтоёбиков и обсуждать здесь крутые штуки типа Y-комбинатора или монад

Кому-то доводилось использовать в проде зигохистоморфный препроморфизм?
Аноним 08/03/20 Вск 20:31:17 1627878345
>>1627807
поясни за монады, прочитал дохуя туториалов но так нихуя и не понял, в чем их суть? нахуй они нужны? какие виды бывают?
Аноним 08/03/20 Вск 22:07:39 1627980346
>>1627807
Это никому не интересно. Вот у байтоебиков интересно, например есть в процессоре инструкция popcnt, которая считает кол-во единичных битов в слове, которую любят использовать игроделы, но которой нет в старых процессорах. Но это не проблема, так как ее можно заменить на небольшой цикл, а учитывая, что эта инструкция используется для какой-либо фигни, то такая замена на производительности не сильно скажется, допустим там до 5% всего медленнее будет. Остается вопрос, а как же вставить цикл, ведь он длиннее инструкции popcnt. Тут на помощь приходят трамплины. Сами байты инструкции заменяются на байты инструкции вызова подпрограммы, а в ней уже пишется сам цикл. Причем можно сделать так, что это будет происходить автоматически. Ведь у процессора есть прерывание несуществующая инструкция, при этом прерываение получает адрес, по которому инструкция расположена. А значит, можно по аналогии с pagefault подменить все и продолжить программу с того же места.
Аноним 08/03/20 Вск 22:08:48 1627981347
>>1627592
Господи, зумерам засрали мозг евангелисты, теперь они несут баззворды в массы
Аноним 08/03/20 Вск 22:42:09 1628020348
>>1627878
Лучший способ с ними разобраться - начать пытаться использовать.
Если только ты не математик-теоретик.

(далее я поменял : и :: потому что так эргономичнее)

Что это?
Их можно определить разными способами:
- как моноид в категории эндофункторов
- через сопряжённые функторы
- как тройку (m, pure, bind) с набором законов, где m : -> , pure : a -> m a, bind : m a -> (a -> m b) -> m b
- как тройку (m, pure, join) с набором законов, где m : -> , для m определён функтор, pure : a -> m a, join : m (m a) -> m a
- как категорию Клэйсли, где id : a -> m a, (.) : (b -> m c) -> (a -> m b) -> (a -> m c)
наверняка ещё как-то.
Но это всё не очень способствует понимаю.

Как о них можно думать?
Вычисления в некотором контексте или вычисления с эффектом.
Иногда - как о некоем контейнере с композицией порождающих его функций.
Ещё удобно смотреть на типы вида `a -> m b` как на `a —m—> b`, т.е. это не просто функция, а функция с сайдэффектами.

Зачем они нужны программисту?
Они предоставляют единый интерфейс для композиции вычислений с контекстом/эффектами.

Что при помощи них можно делать?
Допустим, у тебя есть тип m с монадкой и две функции `f : a -> m b` и `g : b -> m c`, ты хочешь скомпозить их и применить к некоторому `x : a`. `g (f x)` очевидно не сработает, т.к. типы не совпадают, зато ты можешь сделать `f x >>= g` или `pure x >>= f >>= g` или `(g <<< f) x` или ещё что-нибудь такое.

Как пользоваться?
Обычно в разных ЯП есть сахарок для монадок: в хаскеле do-нотация и monad comprehension, в скале monadic for, в f# - computation expressions, в c# - linq query syntax.
Но разумеется никто не запрещает использовать родные и милые сердцу pure/return, join/flatten, flatMap/SelectMany/>>= и прочее.

Какие бывают монады?
На примере хаскеля.
- `data Maybe t = Nothing | Just t` (оно же Option и Optional) - моделирует частичные функции, контекст опциональности. Например функция деления на целых числах частичная, т.к. не определена для делителя == 0, но её можно превратить в полную с помощью Maybe: `divSafe : Int -> Int -> Maybe Int`
- `data [t] = [] | t :: [t]` (он же List) - моделирует недетерменированные вычисления, т.е. как бы множество разных реальностей с разными результатами вычислений в них.
- `data State s a = State (s -> (a, s))` - моделирует чистое состояние. Со стэйтом у тебя получаются функции `a -> State s b`, что эквивалентно `a -> s -> (b, s)`, что эквивалентно `(a, s) -> (b, s)`, т.е. функция вдобавок к отображению `a -> b` ещё и производит отображение состояния `s -> s`. К этому типу прилагаются функции `get : () -> State s s` и `put : s -> State s ()`, обеспечивая доступ к состоянию на чтение и "запись".
- ST с магией экзистенциальных типов - моделирует мутабельное локальное состояние (т.е. разрушащие операции в памяти в некотором скоупе)
- IO с магией компилятора - моделирует ввод-вывод, по сути даёт возможность строить вычисления, композя их из более простых вычислений (можно думать о `putStr : String -> IO ()` как о функции, которая принимает строку и возвращает вычисление, печатающее строку в консольку. Этим вычислением ты можешь оперировать как обычным значением - передать в функцию, сохранить куда-то, скомпозить с другим вычсилением, выкинуть на мороз, высрать из main чтобы оно запустилось). Представляет из себя State, где состояние содержит весь мир.
и прочие, их бесконечно много.
Другие наиболее полезные - Reader, Writer, Cont, Identity, Free, Codensity.

Ещё их можно композить, но это сложно.
Аноним 08/03/20 Вск 23:17:41 1628062349
>>1627981

Есть Джон Кармак, эталонный байтоёб из палаты мер и весов. Топит за как можно более функциональный код (даже в нефункциональных языках). Есть мнение анона-байтоёба: "ряя, зумерки, рряяя, нахуй функциональщину".

Кому мне верить? Ну чисто так за советом обращаюсь.
Аноним 08/03/20 Вск 23:33:00 1628076350
Аноним 09/03/20 Пнд 00:36:06 1628157351
>>1627878
Объясняю монады на примере ООП.
Допустим у нас есть объект с полем name
Мы можем обратиться к нему с помощью object.name
Также допустим у нас есть объект (скажем, запись в бд сотрудников), с полем person
Мы можем обратить к нему с помощью dbitem.person.
Но к имени этого человека без монад мы можем обратиться только написав
dbitem.person.name
Мы не можем получить имя напрямую из объекта dbitem, потому что оно "упаковано" в объект person
Но в джаваскрипте мы можем получить первое поле любого объекта, написав.
object.children[0]
Что дает нам единообразный способ доступа к вложенным объектам.
Например мы можем обрабатывать их как-то так
while((o = object.children[0])) process(o)
Можно сказать что речь идет о втором измерении, о "комплексных числах".
У нашего объекта есть поля
obj.field1,
obj.field2,
obj.field3
А монада - это движение вглубь
obj.inner1.inner2.inner3
Почему это важно фп-блядям?
Ну у них то все функции. Допустим у них функция возвращает другую функцию. А они хотят узнать не функцию, а ее значение. Вот мы и попадаем в ситуацию как я в начале описал.
Аноним 09/03/20 Пнд 02:07:57 1628197352
>>1628157
>монада-массив
Ясно.

В принципе, любое объяснение по монадкам, начинающееся со слов
>на примере ООП
можно не читать, 100% там будет хуйня, и вот опять.
Это как объяснение простых вещей из школьного курса алгебры для умственных инвалидов. Уж лучше картинки с контейнерами.
Аноним 09/03/20 Пнд 02:27:11 1628208353
>>1628157
ты какие-то линзоподобные опердени описываешь, зелёный
Аноним 09/03/20 Пнд 02:35:08 1628212354
>>1628197
> >монада-массив
Борщехлеб даже не осилил простейший текст, лол. Но тут же начал напускать туман
Аноним 09/03/20 Пнд 07:58:16 1628259355
>>1628157
Анализ уровня фасциниорованного функциональщиной васяна из 9б
Аноним 09/03/20 Пнд 13:01:12 1628446356
Аноним 09/03/20 Пнд 23:23:37 1629063357
>>1628157
Когда прочитал "Функциональное программирование в JS"
Аноним 15/03/20 Вск 21:05:17 1634000358
Бамп во имя господа нашего Иисуса Христа и Пресвятой Марии Гваделупской.
Аноним 15/03/20 Вск 21:38:57 1634019359
Из 69
Аноним 16/03/20 Пнд 07:46:43 1634133360
>>1624486
>>1624465
>>1624431
Нихуя ты не на прологе не программировал, раз не знаешь про Engines(позволяющие встраивать собственные механизмы перебора и аггрегации) и предикаты высокого порядка(такие как findall), которые основаны на этих Engines.
Аноним 16/03/20 Пнд 08:04:25 1634137361
>>1624058
Зато Пролог дает премиальные фичи. Только в прологе(ну и в лиспе) ты можешь решать уравнения естественным образом:
?- {10 =:= X*2}
X = 5

Только Пролог дает самый высокий уровень абстракций.

Только в Прологе код - это действительно данные. В прологе программа может анализировать свою же структуру! Такое даже лисп не умеет.

Вообще, я считаю, что идеальный язык программирования должен уметь работать со всеми парадигмами.
Начиная с байтлебства, язык должен иметь инструменты для постпоения абстракции более высокого уровня.
Аноним 16/03/20 Пнд 08:21:06 1634138362
>>1634137
>?- {10 =:= X*2}
Это конечно круто, когда ты lab1 делаешь, но вообще хуйня без задач.
Аноним 16/03/20 Пнд 08:54:12 1634145363
>>1634138
> но вообще хуйня без задач.
Свойства предикатов дают весьма полезные штуки.
Любимый пример с append.
Append делает конкатенацию двух списков. Реализация его очевидна для пролог-программиста:
append([], L, L).
append([H|T], L, [H|R]) :- append(T, L, R).

?- append([1,2],[3,4],X).
X = [1,2,3,4].

Однако! Из-за логической природы пролога, с помощью append можно не только для соединить списки, но и найти первый список по второму и результирующему:

?- append(X,[3,4],[1,2,3,4]).
X = [1,2].

Это просто ахуетельно. И вообще-то порой полезно.

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

Это наболевшие проблемы. Благо, часть из этих проблем можно решить самостоятельно, самоанализом программы самой-себя на наличие ошибок в самой-себе же.
Аноним 16/03/20 Пнд 09:48:20 1634163364
>>1634145
И нахуя это где-то вне лаба1? Какие бизнес или научные задачи можно решить на прологе, учитывая что современные программы в обеих сферах оперируют гигабайтами данных, и от комбинаторного взрыва твой пролог охуеет?
Аноним 16/03/20 Пнд 10:29:05 1634173365
>>1634163
> И нахуя это где-то вне лаба1?
Транспиляция кода из одного ЯП в другой, да и кодогеерация впринципе.
Построение своего DSL внутри пролога.
Краткие и выразительные решения практических задач.
> современные программы в обеих сферах оперируют гигабайтами данных, и от комбинаторного взрыва твой пролог охуеет?
Пролог не про байты, Пролог - интеллектуальная обертка над байтами.
Аноним 16/03/20 Пнд 11:07:29 1634178366
>>1634163
Мейкфайлы это по сути пролог. Соответственно если у тебя что-то мейкфайлоподобное, почему нет
Аноним 09/04/20 Чтв 18:14:00 1654235367
>>1614971
> Звучит как просто набор слов.
Реакция гуманитария, когда он пытается читать том по квантовой хромодинамике.
Аноним 09/04/20 Чтв 18:31:42 1654243368
>>1654235
Да тут большинство вкатившихся по сути гуманитарии. Для них программирование - это бесконечная лапша из иф-элсе и возможность получать неплохую зарплату на хайпе.
Аноним 09/04/20 Чтв 18:45:54 1654255369
>>1607057
>иммутабельность
Что хорошего в иммутабельности, которая значительно ухудшает производительность?
Ну вот к примеру есть у тебя лист из нескольких сотен элементов и тебе нужно заменить один из этих элементов на другой.
В случае с мутабельным листом, ты просто заменяешь этот элемент на другой.
В случае с иммутабельным листом, тебе приходится при помощи не сложных, но странных манипуляций, скопировать лист, заменив в копии листа необходимый элемент на другой.
Аноним 09/04/20 Чтв 18:53:19 1654264370
>>1654255
Попробуй объясни это адептам хаскелля, где есть только второй способ. Они тупо ничего не слышат.
Аноним 09/04/20 Чтв 19:06:00 1654270371
>>1654255
>значительно ухудшает производительность
Если ты настолько тупой и это не жир: копирование листа - абстракция на уровне языка, на самом деле лист мутируется, ебанный дегенерат
Аноним 09/04/20 Чтв 19:15:25 1654282372
>>1654270
Зачем ты споришь с петухом? Этот дегенерат хаскель в глаза не видел, ему бы байтики пердолить и адресную арифметику, оставь его, это пустое.
Аноним 09/04/20 Чтв 19:19:12 1654286373
>>1654264
Чепуш, какое мне дело, как там список работает? Это вы там ковыряетесь в кишках, нормальным людям похуй на это, пусть разработчики компилятора ебутся и оптимизируют это хоть на ассемблере, мы находимся ЗА этой абстракцией, нам поебать. Нам главное, что в самой программе не было сайд-эффектов, это помогает быстро писать надежный и простой код, пока ты там вручную вилкой ковыряешь говно в списке.
Аноним 09/04/20 Чтв 19:23:57 1654289374
Вот же раскукарекался.
Аноним 09/04/20 Чтв 22:36:46 1654421375
>>1654289
Ну и зачем ты раскукарекался?
Аноним 09/04/20 Чтв 23:10:14 1654443376
Покидайте годноты из Хаскеля. Начну: Pointfree style огонь нахуй.
Аноним 09/04/20 Чтв 23:30:40 1654456377
image.png 76Кб, 619x376
619x376
Аноним 10/04/20 Птн 00:18:34 1654474378
>>1654443
это восторг неофита, это пройдёт
Аноним 10/04/20 Птн 01:49:46 1654488379
>>1654474
ну ок, а дальше что?
Аноним 10/04/20 Птн 02:36:34 1654509380
Аноним 10/04/20 Птн 07:54:49 1654556381
>>1654443
типы как объекты, каррированные функции как стрелки, HOFs как экспоненциалы, чистота, ссылочная прозрачность, аппликативность и свободные (при совпадении доменов-кодоменов) композиции, equational theory settings / reasoning как следствие, в терминах ТК, в том числе, начальные алгебры / финальные ко-алгебры как фреймворк для описания индуктивных рекурсивных данных (как выход - результаты, значения) и ко-индуктивных ко-рекурсивных потоков данных (как вход); функторы, монады, Kleisli категории - многие индуктивные [возможно] рекурсивные типы данных которые функторы (начиная с Identity, Maybe и List), также, обычные суммы, произведения и степени, то есть кортежи/записи, объединения/варианты и функции - writer, error и reader/environment, для функций более специального вида - prompt, parser, state и cont, par/conc/async как cont для fork/join/io/done языка; функторы, ко-монады, coKleisli категории - ко-индуктивные ко-рекурсивные типы данных которые функторы (простейшие потоки и деревья, например), те же произведения и степени (суммы?), указатели и изменяемые подструктуры (линзы, как функции в), зипперы; свободные монады вокруг типов данных которые функторы - iteratees (которые сами по себе потоки, то есть финальные коалгебры для соответвующих (строго-позитивных таки) функторов), разные языки (eDSL на ADT) и их интерпретаторы; ко-свободные ко-монады для типов данных которые функторы - ?; (под)категории и стрелки - линзы (категория, тензор, но не вполне стрелка), обычные функции, Kleisli стрелки, coKleisli стрелки, стрелки biKleisli категорий, функции ограниченные типом - списки-в-списки, потоки-в-потоки, деревья-в-деревья, сигналы-в-сигналы и поведения-в-поведения (как оно применяется в FRP) и т.п., автоматы, симуляции, преобразователи, некоторые языки-eDSL-на-ADT, опять же; монадические трансформеры как определённого вида натуральные трансформации для определённого вида функторов над разными монадами - WriterT, ErrorT, ReaderT, StateT, ContT, MaybeT, ListT и т.д., например, ReaderT (ConstEnvironment, MutableScope, Resources) IO - эффекты, injectable read-only / write окружение, список ресурсов пополняемый их захватами по мере выполнения и автоматически освобождаемый в конце; полугруппы, моноиды, сворачиваемые и обходимые типы и т.п. категорные и алгебраические типы и классы как «паттерны» и средства декомпозиции.
Аноним 10/04/20 Птн 07:55:25 1654557382
Аноним 10/04/20 Птн 12:20:06 1654677383
>>1654556
это оглавление из учебника по хаскелю?
Аноним 10/04/20 Птн 12:47:02 1654689384
>>1654677
Это набор костылей, для управления машиной Тьюринга через левую пятку Черча. А внутри unsafe и coerce
Аноним 10/04/20 Птн 13:41:19 1654722385
>>1654689
Хаскель - простой и понятный язык для нормальных людей вроде физиков и математиков, отчищенный от байтосодомии и делающий специально выведенных компьютерных опущенцев-программистов ненужными.
С дальнейшим развитием оптимизирующих компиляторов, байтоспарта закаленных еблей в жопу архитектурой фон Неймана и еблей в рот аппликативным порядком боевых пидарасов-программистов потеряет всякий смысл. Что останется делать после этого жалким недочеловекам, у которых пять лет в шараге вымывали из мозгов все человеческое? Остается только прерывание своего жалкого существования.
Аноним 10/04/20 Птн 14:01:00 1654727386
В его постах прекрасно всё.
Аноним 10/04/20 Птн 17:06:04 1654888387
Мертвый язык
Аноним 25/04/20 Суб 15:11:19 1667209388
>>1654888
эти мантры неосилятора
Аноним 26/04/20 Вск 14:23:15 1667982389
Аноним 27/04/20 Пнд 00:59:23 1668581390
>>1654722
Вот физикам делать нехуй, как монады в трансформеры заворачивать. Python go brrrr
Аноним 27/04/20 Пнд 23:29:00 1669684391
>>1668581
ага им нехуй делать писать на языке тумба-юмба: взять копьё; убить мамонта; съесть мясо
очевидно нужен язык с аксиоматической или детонационной семантикой, а не говно с процiдурками для специально обученных иженегров
Аноним 28/04/20 Втр 21:05:46 1670811392
Аноним 28/04/20 Втр 21:29:41 1670854393
Аноним 12/05/20 Втр 18:12:23 1685443394
Аноним 12/05/20 Втр 18:17:00 1685449395
12/05/20 Втр 18:24:06 1685459396
Аноним 12/05/20 Втр 21:01:07 1685777397
Haskell
Аноним 12/05/20 Втр 21:46:10 1685842398
>>1607051 (OP)
Императивное программирование, где пошагово описываешь, как изменять состояние - действительно крутая концепция. Потому что только она работает и только она похожа на реальный мир.

Очевидно, что читать рецепт приготовления салатика в духе "Нарезать X, добавить Y, перемешать, посыпать сверху Z" куда понятнее, чем "Салат - это посыпанное сверху Z перемешивание после добавления Y к нарезанному X".
Аноним 13/05/20 Срд 18:21:47 1686957399
>>1685842
Я уже отвечал где-то на подобный даунский наброс несколько раз. У говноедов даже фантазии не хватает.

Ещё раз, язык тумба-юмба "взять копьё; убить мамонта; съесть мясо" ака императивное говнище, не подходит для описания реальности. Он хорош для тупого пошагового исполнителя, типа кухарки из твоего примера, бездумно хуярящего примитивные инструкции, но для чего-то сложнее, например, описания свойств тех же продуктов, изменения этих свойств в процессе готовки, их влиянии на конечный продукт и прочих знаний, которые используют люди, что составляют потом рецепты для домохозяек-исполнителей, он совершенно не подходит. Мир описывается декларативно формулами и отношениями, потому что только так возможно абстрагирование и общение, и только клинический дебил, с отсутствием минимального абстрактного мышления, не может этого понять и чтобы что-то понимать, ему нужен набор инструкций на бумажке.
Аноним 13/05/20 Срд 18:22:54 1686959400
Аноним 13/05/20 Срд 22:31:24 1687224401
>>1686957
Какое еще "изменение" свойств? У тебя нет никакого изменения.
У тебя есть обрезанная императивщина, ее жалкое подмножество без присваивания с отложенным исполнением, обрезанная для твоей же безопасности, так как ты не в состоянии отслеживать состояние своей собственной программы, подходящая только для решения определенного типа задач: проведения параллельных вычислений, и принимающая от того уродливые формы
Аноним 13/05/20 Срд 22:35:04 1687230402
>>1686957
давай вместо посыла нахуй я предложу тебе предикат

ты
пидр == ИСТИНА

а ты сам как-нибудь пруфы напиши раз такой декларативный дохуя
Аноним 14/05/20 Чтв 09:19:14 1687384403
Аноним 14/05/20 Чтв 09:25:51 1687386404
>>1687230
>ба-бах

Очередной разрыв императивной макаки. Иди ещё наверни процедурных портянок, боюсь твой мозг что-то не пошаговое воспринимать уже не может.
Аноним 14/05/20 Чтв 13:01:32 1687597405
>>1687384
Вот и подошла к свой кульминации эта высоко интеллектуальная полемика)
Аноним 14/05/20 Чтв 13:08:30 1687611406
>>1685842
то есть ты сейчас утверждаешь, что математика не нужна? ведь в математике нет императивной дрисни, как же так
Аноним 14/05/20 Чтв 13:39:00 1687668407
>>1685842
Хммм, а вот тебе другой пример:
1. «Квадратный корень из икс — это такое число, которое, будучи возведённым в квадрат даёт икс»
2. «нууу эта, кароче берёшь приближение, подставляешь его в уравнение, если не подошло берёшь среднее от приближения и результата и пробуешь опять»

Не всё так однозначно в этой жизни.
Аноним 15/05/20 Птн 19:47:26 1689442408
>>1687668
на дваче
> 1. «Квадратный корень из икс — это такое число, которое, будучи возведённым в квадрат даёт икс»

в реальной жизни https://stackoverflow.com/questions/19965149/integer-square-root-function-in-haskell
> один вариант перебор
> другой
> 2. «нууу эта, кароче берёшь приближение, подставляешь его в уравнение, если не подошло берёшь среднее от приближения и результата и пробуешь опять»
Аноним 15/05/20 Птн 19:49:01 1689443409
>>1689442
для тех кто хочет кукарекнуть что хаскелл не то, предлагаю взять тот самый язык и написать что-то отличающееся от перебора
Аноним 15/05/20 Птн 21:00:33 1689531410
>>1689443
Так речь идёт про понятность для человека или про понятность для машины?
Аноним 15/05/20 Птн 22:17:53 1689631411
Аноним 15/05/20 Птн 22:45:14 1689674412
kD8-3YTSG-g.jpg 61Кб, 1080x760
1080x760
Аноним 15/05/20 Птн 23:18:12 1689713413
>>1689531
что значит понятно человеку? какому человеку? выспался он? покушал? учил ли матан? понимает ли он сам чего хочет?

окей нашли сферического в вакууме, а шо толку с его пониманий, если написанные им декларативные предикаты/программы/любая-другая-хуйня не превращаются в эффективный код на процах?
Аноним 16/05/20 Суб 19:37:12 1690697414
>>1689713
>если написанные им декларативные предикаты/программы/любая-другая-хуйня не превращаются в эффективный код на процах
Предпосылка взята с потолка. А что если в данном месте эффективный код не важен, и его можно выкинуть на мороз, заменив на понятный? Двадцать первый век на дворе.
Аноним 17/05/20 Вск 00:36:29 1691183415
>>1654286
Ну по такой логике зачем использовать алгоритмы, можно просто пузырьком все в массивах сортировать, а эти байтоебы пусть оптимизируют
Аноним 17/05/20 Вск 01:14:28 1691207416
>>1691183
Дай им волю - и они реально будут так делать.
Аноним 17/05/20 Вск 03:15:44 1691247417
>>1620114
А теперь перепиши его на Rust.
Аноним 17/05/20 Вск 08:04:26 1691283418
>>1691183
Ты еблан, разные алгоритмы сортировки делают одно и то же и с одинаковой семантикой и апи, но под капотом одно и то же.
Иммутабельность дает другой апи, другие плюсы и минусы, поэтому пердоли сводящие все программирование только к оптимизации - дегенераты.
Твой аргумент инвалид, пошел отсюда нахуй.
Аноним 17/05/20 Вск 19:36:08 1692094419
>>1691283
если сортировки имеют одинаковый апи и делают одно и то же, зачем нужные разные?
Аноним 17/05/20 Вск 19:37:24 1692097420
>>1690697
одно дело неэффективность когда вместо n операций по 0.1 делаем n операций по 1
другое когда делаем n! операций
комбинаторный взрыв знаешь?
Аноним 18/05/20 Пнд 07:07:36 1692552421
>>1692094
так поэтому у тебя в стандартной библиотеке любого языка забита одна сортировка сложности n log(n), обычно - квиксорт с ручной отимизацией последних шагов. ну, это для объектов с произвольным доступом, типа массивов.
Аноним 18/05/20 Пнд 08:19:50 1692576422
>>1690697
>А что если в данном месте эффективный код не важен, и его можно выкинуть на мороз, заменив на понятный? Двадцать первый век на дворе.

Найдут очередную уязвимость и дропнут производиительность твоего i7 до уровня core 2 duo из блейзерного 2007, и вот ты уже бибу сосешь.
Аноним 18/05/20 Пнд 10:18:46 1692621423
>>1692576
Так это оптимизированный код чаще всего содержит уязвимости, так как он трудно читается, трудно тестируется, плохо подлежит модификации, требует написания большего количества букав, а значит больше шанс обосраться, а если он содержит всякие байтоёбские изъёбы, то уязвимости там будут почти с 100% вероятностью.
Аноним 18/05/20 Пнд 11:07:49 1692666424
ПРОГРАММИСТЫ-ФУНКЦИАНАНЛЬНИКИ
Аноним 18/05/20 Пнд 14:33:06 1692825425
>>1692666
удерживают монаду в попе
Аноним 18/05/20 Пнд 17:36:08 1693017426
>>1692097
Опять факториал с потолка взят, это раз, если задача решается за пять шагов то факториальный порядок роста похуй, это два.
Аноним 18/05/20 Пнд 17:39:04 1693021427
>>1654255
Почти всегда в разработке главное - понятность, поддерживаемость, расширяемость и тестируемость. Иммутабильность это все дает. В случае необходимости можно что-то оптимизировать, написав комментарий об этом.
Аноним 21/05/20 Чтв 19:59:02 1696687428
Аноним 21/05/20 Чтв 22:12:21 1696859429
>>1693017
>Опять факториал с потолка взят, это раз, если задача решается за пять шагов то факториальный порядок роста похуй, это два.

ты чё сказть то хотел?
а если не решается за пять шагов с факториальным порядком роста?
Аноним 24/05/20 Вск 02:17:43 1699628430
>>1654456
Это какой-то контртроллинг. Вместо неподдерживаемых маняфункций будем писать нечитаемые маняфабрики абстрактных апельсинов.
Можно уже подход, который будет не отвратителен программисту и при этом экономически целесообразен? нет
Аноним 24/05/20 Вск 13:12:13 1699831431
>>1699628
>контртроллинг
КОНТРА НЕ ПРОЙДЕТ!

>Можно уже подход, который будет не отвратителен программисту
АДА вроде ок.

>и при этом экономически целесообразен?
Слишком толсто. Ты определение "экономической целесообразности" введи хотя-бы.
Аноним 25/05/20 Пнд 00:50:59 1700919432
>>1699831
>Ты определение "экономической целесообразности" введи хотя-бы
Цитирую википедию для тебя, дефисный ты наш:
>соотношение полученных результатов производства — продукции и услуг, и затрат труда и средств производства.
В данном случае бизнес не хочет платить за софт, сделанный с использованием трудноподдерживаемых, редких, неэффективных технологий.
Аноним 25/05/20 Пнд 01:17:44 1700943433
>>1689442
Господи как же я проорал
Аноним 25/05/20 Пнд 10:28:15 1701243434
>>1608290
>continuation-passing style очень нравится

ты именно про него или про first-class continuations?
25/05/20 Пнд 10:37:00 1701247435
Ещё в этот тред запости ту пикчу, шизик.
Аноним 25/05/20 Пнд 12:05:18 1701404436
>>1701243
Про first-pass continuation style. Если не шаришь то помалкивай
Аноним 25/05/20 Пнд 14:05:47 1701621437
293949212442192[...].png 412Кб, 750x669
750x669
>>1701247
Не знаю о чем ты, но держи:
Аноним 25/05/20 Пнд 14:56:59 1701726438
>>1701621
> prolog > x86
Орнул неистово.
Аноним 25/05/20 Пнд 15:17:07 1701759439
>>1701404
>Про first-pass continuation style. Если не шаришь то помалкивай

Есть first class continuations, а есть continuation passing style.
Что такое first-pass continuations - вообще не ебу. Видимо, выдумка рашкована, не умеющего в ангельский.
Не понимаю ,как можно вот прямо супер восхищаться continuation passing style'ом. Это же красивый, конечно, но трючок для промежуточной трансформации в компиляторах нормальных лиспов. Писать самому код таким способом - очень странная затея.
Аноним 25/05/20 Пнд 15:28:42 1701795440
Аноним 25/05/20 Пнд 16:40:31 1701937441
C2hilJ5rQzw.jpg 88Кб, 604x587
604x587
Крутая штука для решения НП-задач типа задачи рюкзака. Берем данные, записываем из них ДНК. Копируем их ПЦР бесконечное количество раз. Используем CRISPR и получаем все возможные комбинации. Используем градиентное сито и выбираем вариант на вершине вместительности сундука. Мы не снижаем сложность задачи, но сложность можно переводить из времени в пространство. А пространство бесплатно.
Аноним 25/05/20 Пнд 19:49:49 1702312442
>>1701759
Ошибся, там first class continuation pass
Аноним 26/06/20 Птн 10:22:38 1734322443
Бамп лучшему треду зк
Аноним 12/07/20 Вск 16:18:16 1749325444
Аноним 14/07/20 Втр 01:01:04 1750795445
Аноним 15/07/20 Срд 19:58:40 1752277446
Аноним 20/07/20 Пнд 13:21:51 1755883447
maxresdefault.jpg 127Кб, 1280x720
1280x720
Аноним 20/07/20 Пнд 19:46:00 1756208448
>>1620357
Питонист ну совсем незаметен
Аноним 20/09/20 Вск 10:11:47 1811368449
>>1619997

Это реальная функциональность монад? Выходит я писал на монадах еще в детстве, на джаваскрипте
20/09/20 Вск 16:23:27 1811598450
Аноним 23/09/20 Срд 01:36:13 1813745451
>>1811368
Именно так. В нормальных языках и так все в монаде, поэтому никакого особого термина для этого не требуется. Только у каличных функциональщиков понадобидось, потому что они себе навтыкали палок в колеса и не едут без монадо костылей.
>>1628157
Аноним 23/09/20 Срд 05:41:46 1813792452
>>1811368

Ты в детстве писался под себя а не на монадах.
Аноним 05/10/20 Пнд 14:39:11 1823639453
>>1701726
Что не так с прологом? Язык интеллектулов. Макаки не осилят.
Аноним 05/10/20 Пнд 20:21:07 1823908454
>>1654456
Почему выразимость у функциональщиков всегда считается заменимостью? Так-то и на брейнфаке можно написать любую программу. А в хаскеле трахаются с системой типов чтобы заткнуть недостатки функций.
Аноним 05/10/20 Пнд 20:35:13 1823916455
>>1823908
Про выразимость не только функциональщики говорят, а вообще все ярые адепты любой технологии. Будь тред хоть про питон, js, раст, кресты, котлин, эрланг, лисп - везде эта "выразительность", потому что из-за синдрома утёнка дальше своего носа никто ничего не видит.
Аноним 05/10/20 Пнд 20:37:10 1823918456
>>1823916
Ты перепутал выразительность и выразимость.
Аноним 05/10/20 Пнд 20:39:34 1823922457
>>1617777
>Без неё лямбда-исчисление не эквивалентно машине Тьюринга.
И?
Аноним 05/10/20 Пнд 20:39:54 1823924458
>>1823918
Признаю, не уверен в терминах. В чём же разница?
Аноним 05/10/20 Пнд 20:46:33 1823933459
>>1823924
Выразимость это возможность что-то выразить в неких терминах. Ответ даётся в форме можно или нельзя. К примеру число пи нельзя выразить целыми числами.

Выразительность это субъективная характеристика, позволяющая среди альтернатив выбрать наиболее понятный и информационно ёмкий вариант.
Аноним 05/10/20 Пнд 20:51:38 1823939460
>>1823933
Спасибо. То есть, проводя аналогию, выразимость - это тьюринг-полнота (например), а выразительность - количеств фич и синтаксического сахара.
Аноним 14/10/20 Срд 20:40:42 1830585461
>>1607051 (OP)
Самая крутая концепция для меня это то, что надо задрачивать не крутость кода. Не красивые абстракции. А то что по факту этот код делает. То есть сам продукт. Вот это конечная цель, а все эти языки и концепции чисто вторичное - средство и не более того.
Аноним 14/10/20 Срд 23:22:08 1830708462
>>1654282
Пішов ти нахуй, як їбав мікроконтролери так і буду їх їбати!
Аноним 14/10/20 Срд 23:51:01 1830724463
>>1830585
несоответствие треду
Аноним 15/10/20 Чтв 00:06:02 1830729464
>>1634163
в прологе оперируют не данными, а скорее "знаниями"
а на вход пролог-машине надо подавать предварительно отфильтрованные, очищенные данные-факты, основной способ борьбы с замедлением обработки, как и в новомодном дата-сайнс
Аноним 15/10/20 Чтв 19:12:50 1831459465
>>1607992
А аппаратная сборка мусора, например?
Аноним 15/10/20 Чтв 19:24:37 1831474466
Надеюсь, вы смотрите на даты постов, прежде чем отвечать на них? Полгода прошло как-никак, эти люди давно ушли с двачей и стали нормисами.
Аноним 21/10/20 Срд 02:36:34 1835862467
>>1831474
Рыбная котлета, плиз
Аноним 21/10/20 Срд 13:25:24 1836083468
>>1835862 Че, как там экзистенс?
Аноним 21/10/20 Срд 14:26:51 1836131469
>>1836083
Рассчитан по годовой норме кодоприбыли на разработчика. У нас целый экзистенс-отдел на монадах это вычисляет. Как вообще управляют ит-компаниями без экзистенс-менеджмента?
21/10/20 Срд 15:58:35 1836192470
Для чего нужна шариковая пластиковая мышь? Ведь камень для жидкого стекла расширяет конгруэнтность, для отверстий необходимы пилки, но так, чтобы быстрее, чем то. Вопросительный знак на листке бумаги предлагает учесть. Или над ним? Во всяком случае, лучше, если древесина с клинком ломается. Так же, как и МВП-тред.
Аноним 21/10/20 Срд 18:38:41 1836317471
>>1654286
Спиздани это когда тебе на собесе скажут, что ты решил задачку максимально нерационально и отправляйся назад наслаждаться тарелкой борщика
Аноним 23/10/20 Птн 21:15:48 1838049472
>>1830585
Потому что ты подпивасник, концепции и абстракции двигают науку, если ты думаешь что главное в жизни это клепать круды или запилить какой-то бизнес, то да
Аноним 23/10/20 Птн 22:00:17 1838088473
>>1838049
Вот она, главная проблема. Каждый борщехлёб считает себя учёным-двигателем науки просто из-за того, что у него концепции и абстракции в хачкиле.
Аноним 23/10/20 Птн 22:08:47 1838094474
>>1838088
Кто-то таки двинет науку пока ты максимум двигаешь говно из жопы
Аноним 24/10/20 Суб 12:09:15 1838418475
>>1838049
>>1838094
тупой, двигатели науки пишут ридонли портянки на торче/матлабе и им не нужны твои фп-борщи.
Аноним 24/10/20 Суб 15:53:31 1838682476
>>1838418
Ты оказывается еще тупее, Есть такая наука CS
Аноним 24/10/20 Суб 16:03:22 1838693477
>>1838682
> CS
Но хаски не имеет к ней никакого отношения.
Аноним 24/10/20 Суб 16:35:40 1838714478
>>1838693
Все иди нах, ты тупой
Аноним 24/10/20 Суб 16:49:41 1838721479
Аноним 24/10/20 Суб 16:57:57 1838725480
>>1838721
Тред о другом, а ты обосрался и пытаешься притянуть за уши сюда хаскель
Аноним 24/10/20 Суб 19:38:03 1838906481
>>1838049
>концепции и абстракции двигают науку
А причем тут средний функциональщик? Он же просто берет готовое у математиков и использует для реализации задачи и не факт, что это выполняет задачу эффективнее Такой же васян-подпивас на поводке у бизнеса.
Аноним 24/10/20 Суб 21:50:11 1838967482
>>1628157
Что за хуйню я прочитал?
Дай я попробую. Представь, что у тебя нет эксепшенов, как будешь возвращать ошибку? Можно возвращать null, но тут возникает проблема с постоянными проверками на нулл на каждом шаге алгоритма (вспоминаем C-лапшу которая постоянно проверяет errno). Что если вместо этого создать класс NullMonad, который будет чейнить операции и выполнять их, если значение не нулл. Например можно будет написать const c = NullMonad.return(client);
const result = c.bind(Client.get_request).bind(Client.process_request).bind(Client.send_response). На каждом этапе наша монада проверяет результат на нулл, и выполняет переданную функцию если результат не нулл. Это просто уменьшает бойлерплейт.
Это один из примеров монад, так называемый OptionMonad.
Аноним 24/10/20 Суб 22:10:49 1838979483
>>1838967

А вот объясни, почему в си и го, возвращаемая явно ошибка - лапша, а option в хаскеле и расте - вершина инженерной мысли? По сути, одно и тоже. Просто пара значений.
Аноним 24/10/20 Суб 22:20:02 1838985484
>>1838979
Потому что система типов продвинутая и гарантирует безопасность, в отличии от нулла и эксепшенов которые хуй знает когда и где выстрелят. А бойлерплейт не проблема, легко абстрагируется монадами.
Аноним 24/10/20 Суб 22:33:44 1839011485
>>1838985

Так я не о говно эксепшонах, а претензии к сильному явному возвращению errno.
Если поколдовать c макросами , то получится тот же option.
Аноним 24/10/20 Суб 23:26:12 1839035486
>>1839011
А смысл? Идея монад, как я понимаю, это писать программу на более высоком уровне абстракций, на С таким просто никто не занимается, т.к. область применения другая.
Да и максимум что ты получишь, это нечитаемую магию на макросах. В хаскеле и окамле, ты сразу в типе функции видишь откуда, что и куда оно идет. Все это проверяется на этапе компиляции, а не в рантайме, тоесть ты не можешь просто забыть макросов навернуть и крашнуть программу на ошибке как в С.
Аноним 25/10/20 Вск 00:56:11 1839084487
>>1839035
потому что в си функции это по сути процедуры, возвращают результат работы через out параметры, а возвращаемое значение чаще всего используеться как флаг успешности, возвращая код успеха или номер ошибки
в фп языках функции это функции именно в математическом смысле чаще всего, возвращаемое значение и есть результат работы функции
естественно, приходиться опганизовывать другие, более сложные подходы к обработке ошибок, это не прихоть а необходимость
к.о.
Аноним 25/10/20 Вск 10:52:17 1839171488
Читать стоя и плакать. Вообще чего там в России с нанотехнологиями делают, стравили газ какой-то, ядовитый? Последнее время выбегают на просторы энтронета хаксельщики и все как один - неадекватные абсолютно. Оба факта - удивительны сами по себе. То есть и раньше были всякие оспиранты писавшие MoscowML и т.п. в своих НИИ, однако у них вроде никаких илюзий о практическом применении ацких язЫков программирования собственной разработки не было. Напишут один, на нем компилятор другого, на том - третий и так с гранта на грант перебивались. Ну а неадекватный программист это тож диковина - всеж человек только мозгом и работает, кровь притекает, пит.вещества, витамины, все дела поступают, с какого у него крыша съезжает? То есть конечно, может там какая опухль или травма или сифилис, но тогда вопрос - как он продолжает программировать с поврежденным мозгом-то?

https://kunaifusu.livejournal.com/242656.html
Аноним 25/10/20 Вск 16:56:35 1839396489
>>1839171
У вас нет прав на чтение данного форума.
Аноним 25/10/20 Вск 18:42:21 1839548490
>>1839171
> ЖЖ
> 13th-Nov-2007
> SQL.ru
А ведь эту ссылку могли ещё на Тот двач постить, пока я в начальную школу ходил.
Аноним 13/01/21 Срд 13:53:46 1908973491
Аноним 13/01/21 Срд 13:58:06 1908975492
Аноним 13/01/21 Срд 14:23:31 1908986493
>>1607051 (OP)
do end вместо убанских отступов и { }
Аноним 17/01/21 Вск 08:41:03 1912440494
>>1908986
Отсутствие уебанской разметки
Аноним 18/01/21 Пнд 11:21:58 1913931495
>>1607421
Лол, это типа столько лет goto было под запретом, а теперь решили, что его надо использовать. Но на всякий случай обзовем по другому, а то говнокодерами обзовут.
Аноним 15/02/21 Пнд 19:50:09 1942282496
image.png 84Кб, 300x168
300x168
>>1607051 (OP)
Ваномас программируя формошлёпинг (программа для замеров пластиковых окон) на с# в конторке вантуз системы зарабатывает 170к. При этом знает меньше любого в этом треде.
Аноним 15/02/21 Пнд 19:55:51 1942285497
Мертвый
Аноним 15/02/21 Пнд 19:56:09 1942286498
Тред
Аноним 15/02/21 Пнд 19:56:25 1942287499
Мёртвой
Аноним 15/02/21 Пнд 19:56:44 1942288500
Хуйни.
Аноним 20/02/21 Суб 01:28:27 1946979501
Аноним 28/02/21 Вск 20:56:28 1954047502
Прототипное наследование
Стрелочные функции
Аноним 01/03/21 Пнд 00:43:47 1954238503
>>1942282
А я 440к. Нихуя не делаю почти, кеш на карту сыплется регулярно. Че сказать-то хотел?
Аноним 05/03/21 Птн 09:16:32 1957909504
Аноним 08/03/21 Пнд 17:05:32 1960991505
Весь тред наглядная иллюстрация того, к чему приводит отсутствие CS как дисциплины в рашкинских недовузах. И эти люди будут еще иметь наглость называть себя программистами. Пиздец, попиздовал я отсюда.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов