Настала пора наконец выяснить, кто засоряет программистскую практику. Кого следует выкинуть на мороз? Кто слабое звено?Предыдущим тредом считается этот https://2ch.hk/pr/res/1084449.html
Блять. Конечно же фп.
>>1131876 (OP)Почему у Змей Горыныча два хвоста?
>>1132752Кинг Гидора - из трёх динозавров.
>>1132752Изначально хотели один, но забыли добавить шип на конце, пришлось полностью скопировать и прихуйчить новый с шипом. Зато чисто и безопасно!
>>1132756Инкапсуляция, наследование, полиморфизм?
>>1131876 (OP)> Настала пора наконец выяснить, кто засоряет программистскую практику. Кого следует выкинуть на мороз? Кто слабое звено?Обоих нахуй. Только процедурное программирование, только си со структурами. Только самодельные менеджеры памяти. Производительность железа уже уперлась в технологический предел, дальше будет только хуже. Для абстракциеблядей, ramischeap'ов и прочих "4гб оперативы для простого калькулятора - это норма" наступают хуевые времена.А дальше пойдет виртуальная и дополненная реальность, где требования по ресурсам в сравнении даже с илита-гейдевом увеличатся раз так в 5. И тут байтоебы будут востребованы, потмоу что у них будет реалистичная графика как в фильмах, а у абстракциоблядей будет мыльный графон как на PS1/PS2, жрущий 128 GBRAM и загружающий всю серверную стойку по максимуму.Сперва к абстракциопидорам будут все чаще и чаще возникать вопросы по производительности и отклику - ведь для блядей перестанут выпускать каждый год новый штеуд чтобы их говноабстракции не тормозили. Затем возникнет дефицит (уже возникает) на минимально-шарящих бородатых байтоебов, которые хотя бы насчет кеша и Data Oriented Design в курсе. Далее, рынок разочаруется в "да нахуй байты полгода ебать вот я схуяк-схуякнул на фабрике фабрик и в релиз" - потому что у байтоебов - вр-приложения как в реальной жизни, а у абстракциоблядей - мыльцо с буратинами. И дальше, всех абстракциоблядей вместе с их фреймворками повыпинывают хуем под сраку.
>>1132767Байтослесарь бомбанул. Что, работу не можешь найти?
>>1132767>мыльный графон как на PS1/PS2, жрущий 128 GBRAM и загружающий всю серверную стойку по максимуму.Маркетологи объяснят быдлу что только выиграли - и все.>реалистичная графика как в фильмахНИНУЖНО
>>1132767А веб полностью исчезнет.
>>1132780>Маркетологи объяснят быдлу что только выиграли - и все.Неа. Не обьяснят. Все хотят графен и комфортный вр. Уже который по счету говношлем проебался по причине низкого разрешения, а окулус все так и вовсе в продакшн не пустили.
>>1132783>А веб полностью исчезнет. Уже к бинарному http/2 завезли wasm. Скриптоблядство медленно и верно уничтожают.
>>1132784>Все хотятБыдло хочет то что ему положено хотеть - айфон, приставку, путина, и так далее.
>>1132786Нахуя писать на wasmе что-то кроме высоконагруженной хуиты?
>>1132767Лол, два чая этому просвещенному. На самом деле, конечно, на байтоебов спрос увеличится, но в рамках рыночка целиком это заметно особо не будет. Только не забывай, что тот же раст с его zero-cost abstractions - это таки по духу функциональный язык, хоть и для байтоебства.
>>1132791Идея васма в том, что можно будет писать на всяких говнопитонах без написания питон->жс компиляторов.
>>1132721Не понял. Ты чьих будешь? "Чей холоп?" - Спрашиваю. Из вменяемых людей или из секты ООП-ущенных?
>>1132805Применяю все парадигмы исходя из задачи.
>>1132798А зачем это?
>>1132818Чтобы писать на всяких говнопитонах без написания питон->жс компиляторов.
>>1131876 (OP)Кстати, ООП критиковалось много когда и много кем вдумчиво и конструктивно, а вот разумной критики ФП никогда не встречал.
>>1132869Проблема ФП в компиляторе, не могущем в оптимизации при том что чистофп код со строгой типизацией быстрее плюсошаблонов должен быть.
>>1132885То есть в банальной ситуации, когда компилятор понимает буквально и по всем фпшным канонам каждую итерацию в памяти реально грохается весь мир и реально конструируется новый. В крупных проектах (типа там у тебя загрузилось 100000 записей из БД, ты проапдейтил одну - создалось еще 100000 записей) или там (убийца гта5 - куча обьектов, передвинул одну машину - нужно весь мир грохнуть и собрать завново) это просто перестает работать.
>>1132868Но ты же сказал >Скриптоблядство медленно и верно уничтожаютпитон = скриптоблядство
>>1132885А теперь посмотри на Rust.
>>1132893Раст все же не такой клевый как хаскел. Там все равно мультипарадигма во все поля.
>>1132888Я ничего не понял.
>>1132888Дебил малолетний, съеби уже с этого раздела.
>>1132892Это не я сказал.
Объясните тупому, что такое ооп в правильном понимании? Это как в Java/c++ или смолтолк (ерлангг...)?
>>1155623
Бамп, на всякий случай.
>>1155623Это тайпклассы в Haskell.
>>1181588>тайпклассы в HaskellНе нужны, вроде.
>>1181600Самое годное популярное решение Expression problem. Многие Современные™ языки заимствуют их (Rust, Swift, Clojure, Scala) или планируют (OCaml)
>>1182374>популярноеКак что-то хорошее.
>>1132767Переведут VR в клаудкампутинг, амазон будет брать бешеные деньги с VR-даунов, а им и нормально, будут чувствовать себя илитой.Не шаришь ты в рыночке.
>>1182374Тащем-та протоколы в кложе != тайпклассы в хаскеле. Протоколы ты можешь прям в рантайме расширять и специализировать, и он тебе скомпилит прям сразу нужный байткод и всунет его в жвм.
>>1182374>планируют (OCaml) Алсо, можно ссылку?
>>1131876 (OP)1111
>>1182608https://arxiv.org/pdf/1512.01895.pdf
>>1182426Да, это важно. Иначе лично ты, сможешь использовать что-то только для фана, но не настоящей работе.
>>1182639"Настоящие работяги"(TM) у вас в авторитете? Всем - по шконкам! Сейчас они нам расскажут, с какой ноги в хату заходить.
>>1182667Нет, просто вот https://youtu.be/zt0OQb1DBko?t=31m1s
>>1182681самофиксСмысл в таймере, под ссылкой, цитата:People keep saying that like learning programming languages makes you a better programmer. It really doesn't. It makes you a better programmer up to a point, then it makes you bitter and dissatisfied because you will never be able to port those ideas to your day job.
>>1182683Так ото ж. Мораль для переживающих об эффективной самоутилизации.
>>1182691Если бы у тебя второй день было нечего жрать, ты бы тоже об этом думал
>>1182638Спасибо, абстракт выглядит оче годно, почитаю.
>>1182698"Поможем тайпклассами голодающим программистам!"
>>1155623ООП - НЕ парадигма программирования. Парадигм программирования всего три. Подробнее здесь: http://wiki.c2.com/?ThereAreExactlyThreeParadigms.То что подразумевают под ООП в современном мейнстримном виде (как в плюсах, джаве, питоне и т.д.) - не более чем тривиальная надстройка над старыми добрыми структурами, процедурами и указателями на процедуры. Об этом Вирт, Кей и другие говорили еще в 80-е, наверное.ООП - определенный способ представления программы в голове, а следовательно и способ её структурирования в тексте. Именно его имел в виду Кей, в нем, как ни странно, суть Actor Model, а значит Эрланга и Акки, и во многом именно о нем пишет небезызвестный Егор Бугаенко (http://www.yegor256.com/tag/oop.html) с чьими тезисами можно быть более или менее согласным, но как минимум познакомиться стоит. Можно сказать что такой подход это гуманитарщина, и быть при этом правым, но не нужно забывать что программы в первую очередь пишутся для людей, а значит способ их изложения и понимания имеет значение. Насколько легко представлять программу как множество объектов, взаимодействующих друг с другом - другой вопрос. Возможно другие способы эффективнее, возможно это вообще индивидуально.По моему опыту ООП это способ структурирования именно императивных программ. Дело в том что я видел ОО-код на С, видел процедурный код на питоне с джавой, но никогда не видел ОО програм на функциональных языках. Наверное это из-за того что объекты почти всегда инкапсулируют какое-то мутабельное состояние, иначе они превращаются просто в (параметризируемые) модули, а состояние в ФЯ обычно скрывается и обрабатывается не так, как и императивных.
>>1184325Чаю этому господину, расписал наигоднейше.
>>1184325>программы в первую очередь пишутся для людей, а значит способ их изложения и понимания имеет значениеПишутся для компетентных людей. Ублажив чужую глупость, мы теперь имеем всё это мракобесие.
>>1131876 (OP)По сути это равнозначные вещи, с появлением монад и алгебраических эффектов в функциональных языках и wp, триплетов хоара в императивных, парадигмы движутся к синкретизму.Конечно, фп языки лучше, так как находятся на грани прогресса (в них лучше системы типов, языки имеют глубокий бэкграунд, за счет чего просы и консистентны, а не являются набором криво слепленных фич), ооп лучше наличием библиотек и проч. Разницы большой нет, в общем, зависит от стиля мышления.
А Лишп функциональщина или нет?А то некоторые адепты Х-ля утверждают, что нет.
>>1184445Лисп мультипарадигменный, как C++.
>>1184445https://en.wikipedia.org/wiki/Lisp_(programming_language)>Lisp (historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.[3] Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today.Ты про тот самый, 58-го года? Тогда и слов-то таких не было.
>>1184614Щас бы к словам придираться на пустом месте.Я про CL и R5RS.
>>1184653>CL и R5RS.Нормальный такой разброс.
>>1132767VR-игры по 10 000 рублей?Такое фотореалистичное говно себя даже не окупит
>>1132869Потому что ФП - это Неуловимый Джо
>>1184678Как там в 90-ых?
>>1132767Где таких-же единомышлеников найти? Заебали виртуалочкомрази, скриптомразота и прочее.
>>1182428Клаудкомпутинг к тому времени в концлагерях будет виртуалочки разворачиват.
>>1184663Хорошо, скажи, пожалуйста, как наличие единого или двух разных пространств имён для функций и переменных играет важную роль.
>>1184818Ээ... по-твоему это единственное, что отличает эти два языка? испанскийстыд
>>1184837По-моему это единственное, что различает два этих языка.
>>1184838Из этого тривиально следует, что ты не знаком с двумя этими языками, а потому продолжать этот разговор нет никакого смысла. Спокойной ночи.
>>1184844>Из этого тривиально следуетИз этого тривиально следует, что ты не разбирающийся в этих двух языках демагог.
>>1184874Он прав, схема и борщелисп - два разных языка, у которых общие только скобочки. CL -- алгол со скобочками, макросами, императивщиной и мутабельностью во все поля, CLOS, динамическим скоупингом.Схема -- функциональный язык с продолжениями, гигиеническими макросами, лексическим скоупингом во все поля, преимущественно иммутабельностью.Эти два языка по сути как жаба и SML, абсолютно разные.
>>1185199>преимущественно иммутабельностьюНу, вот тут я все-таки немного не соглашусь. На шкале иммутабельности кложа-схема-кл схемка как раз посерединке. По современным меркам ее все-таки преимущественно иммутабельной язык назвать уже как-то не поворачивается.>>1184844-кун
>>1184702Ну здеся я
Вот у императивщиков Си является байтоёбским языком.А что является аналогом байтоёбского языка у функциональщиков?
>>1187415Не знаю, что ты имеешь в виду.Один из самых примитивных среди аппликативных языков - Unlambda.
>>1187415Lambda calculus или если байтоёбство буквально — Rust, ATS
>>1187415> Вот у императивщиков Си является байтоёбским языком.Проблема сяшки в том, что он даже какбе не особо байтоебский в системном смысле - без ассемблера и UB/отсебятины в компиляторе вместо стандарта языка (как это и сделано во многих компиляторах для микроконтролеров, например) ты все равно операционную систему не напишешь, но при этом в ногу позволяет стрелять только так. Вообще тру-байтоебских языков, кроме разве что ассемблера, - нет, есть лишь сорта говна "меньше блотваре - больше выстрелов в ногу" и "меньше выстрелов в ногу - жирнее блоатваре, топовей Core i7 и 64GB RAM минималочки".> Rust, ATS Опять же, позерская стрельба по ногам ради стрельбы по ногам без ассемблера. У меня по-прежнему бугурт - почему ни в одном из языков не сделают как в SBCL - где есть рантайм, но когда нужно странного или скажем написать OS - то ты просто пишешь код, который переопределяет кишочки этого самого рантайма, или, скажем JIT-компилятора.
>>1187499Forth же.
>>1187499В Сишку можно встроить ассемблерные функции отдельным файлом, а высокоуровневые няшки которые выполняются 10% времени лепить на сишке.
А какие языки функциональные и какие нет?Вот могу я в ЖСе функции пихать как аргументы, ЖС функциональный язык или нет?Где можно почитать о положениях функционального программирования?
>>1187940> А какие языки функциональные и какие нет?Те, в которых есть полноценная лексическая видимость и иммутабельность предпочитается мутабельности - функциональные.>Вот могу я в ЖСе функции пихать как аргументы, ЖС функциональный язык или нет?На жс можно писать код в функциональном стиле.>Где можно почитать о положениях функционального программирования?https://en.wikipedia.org/wiki/Functional_programming
>>1187940И в сишке можно функции как аргументы передать, и в ассемблере.
>>1187940>Где можно почитать о положениях функционального программирования? http://www.fprog.ru
>>1187998>Срок регистрации домена FPROG.RU закончился
>>1187940Как определишь, так и будет.
>>1187987В ассемблере как?
>>1187940JS — наверное самый большой оплот функционального программирования.
>>1187499> Опять же, позерская стрельба по ногам ради стрельбы по ногам без ассемблера. Там как раз все продуманно, чтобы не стрелять в ноги
>>1188399Так же, как и в Сишке.Два указателя: на код и на данные для него (т.н. контекст).
>>1187940Для чистого ФП определяющим является referential transparency.
>>1187666>же ForthПофиксил
>>1226506Такое есть в JS?
>>1226549chot proigral
>>1226788Ну я, правда, не в курсе.
>>1226788>>1227144Это просто ебанутый ничего не значащий термин.Referential transparency is an oft-touted property of (pure) functional languages, which makes it easier to reason about the behavior of programs. I don't think there is any formal definition, but it usually means that an expression always evaluates to the same result in any context.Охуенно, лол. Он, блядь, не думает что этому есть определение, но обычно.И да, в JS это есть.Это везде есть.
>>1227146>Это везде есть.Доказывай, чо.
>>1227167На любом полноценном языке (with higher order functions) можно писать в таком стиле. На чисто функциональных - просто удобнее.Что тут доказывать?Не используй глобальные переменные, используй чистые функции, не мутируй - и будет тебе счастье.Более того, если класс в ООП рассматривать как функцию, а поля - как параметры, то можно и ООП делать в таком стиле. Т.е. не делать паразитного состояния в классах. См. книжку FP In Java, по-моему, там приводится такой пример. Очень хорошая книга, кстати.
>>1227171>можно писать в таком стилеReferential transparency - это не стиль, это свойство языка/формальной системы. Это достигается не самодисциплиной программиста, это доказывается для конкретной семантики.
>>1227204Да и хуй с ним.Purely applicative languages are poorly applicable, как все мы знаем, лол.
>>1187998>http://www.fprog.ru>Последний номер журнала - апрель 2011.Не читайте до обеда советских газет, лол.
>>1182374 Каким образом они решают экспрешн проблем?
>>1227256Я не он, но отвечу.Expression problem (в ООП) - это когда ты в своём коде расширяешь интерфейс класса, который ты не можешь или не хочешь изменять напрямую.Тайпклассы (и им подобные решения) делают именно это. И вот так вот и решают.
>>1182667Вот настоящий элитный двачер.Сидя в нестиранных труханах на проперженной табуретке, сгорбившись над грязной клавиатурой, он проникает мыслью в высшие сферы, недоступные простым смертным.И усмехается, глядя свысока на мелочную возню всех этих мелких людишек.
>>1227256https://userpages.uni-koblenz.de/~laemmel/TheEagle/resources/pdf/xproblem1.pdf
>>1184422Два чаю анимешной девке
>>1226528Ор выше гор!
>>1227365>Сидя в нестиранных труханах на проперженной табуретке, сгорбившись над грязной клавиатурой, он проникает мыслью в высшие сферы, недоступные простым смертным.Ты следишь за мной?