Настала пора наконец выяснить, кто засоряет программистскую практику. Кого следует выкинуть на мороз? Кто слабое звено? Предыдущим тредом считается этот https://2ch.hk/pr/res/1084449.html
>>1131876 (OP) > Настала пора наконец выяснить, кто засоряет программистскую практику. Кого следует выкинуть на мороз? Кто слабое звено?
Обоих нахуй. Только процедурное программирование, только си со структурами. Только самодельные менеджеры памяти.
Производительность железа уже уперлась в технологический предел, дальше будет только хуже. Для абстракциеблядей, ramischeap'ов и прочих "4гб оперативы для простого калькулятора - это норма" наступают хуевые времена.
А дальше пойдет виртуальная и дополненная реальность, где требования по ресурсам в сравнении даже с илита-гейдевом увеличатся раз так в 5. И тут байтоебы будут востребованы, потмоу что у них будет реалистичная графика как в фильмах, а у абстракциоблядей будет мыльный графон как на PS1/PS2, жрущий 128 GBRAM и загружающий всю серверную стойку по максимуму.
Сперва к абстракциопидорам будут все чаще и чаще возникать вопросы по производительности и отклику - ведь для блядей перестанут выпускать каждый год новый штеуд чтобы их говноабстракции не тормозили. Затем возникнет дефицит (уже возникает) на минимально-шарящих бородатых байтоебов, которые хотя бы насчет кеша и Data Oriented Design в курсе. Далее, рынок разочаруется в "да нахуй байты полгода ебать вот я схуяк-схуякнул на фабрике фабрик и в релиз" - потому что у байтоебов - вр-приложения как в реальной жизни, а у абстракциоблядей - мыльцо с буратинами.
И дальше, всех абстракциоблядей вместе с их фреймворками повыпинывают хуем под сраку.
>>1132767 >мыльный графон как на PS1/PS2, жрущий 128 GBRAM и загружающий всю серверную стойку по максимуму. Маркетологи объяснят быдлу что только выиграли - и все. >реалистичная графика как в фильмах НИНУЖНО
>>1132780 >Маркетологи объяснят быдлу что только выиграли - и все.
Неа. Не обьяснят. Все хотят графен и комфортный вр. Уже который по счету говношлем проебался по причине низкого разрешения, а окулус все так и вовсе в продакшн не пустили.
>>1132767 Лол, два чая этому просвещенному. На самом деле, конечно, на байтоебов спрос увеличится, но в рамках рыночка целиком это заметно особо не будет. Только не забывай, что тот же раст с его zero-cost abstractions - это таки по духу функциональный язык, хоть и для байтоебства.
То есть в банальной ситуации, когда компилятор понимает буквально и по всем фпшным канонам каждую итерацию в памяти реально грохается весь мир и реально конструируется новый. В крупных проектах (типа там у тебя загрузилось 100000 записей из БД, ты проапдейтил одну - создалось еще 100000 записей) или там (убийца гта5 - куча обьектов, передвинул одну машину - нужно весь мир грохнуть и собрать завново) это просто перестает работать.
>>1181600 Самое годное популярное решение Expression problem. Многие Современные™ языки заимствуют их (Rust, Swift, Clojure, Scala) или планируют (OCaml)
>>1132767 Переведут VR в клаудкампутинг, амазон будет брать бешеные деньги с VR-даунов, а им и нормально, будут чувствовать себя илитой. Не шаришь ты в рыночке.
>>1182374 Тащем-та протоколы в кложе != тайпклассы в хаскеле. Протоколы ты можешь прям в рантайме расширять и специализировать, и он тебе скомпилит прям сразу нужный байткод и всунет его в жвм.
>>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.
То что подразумевают под ООП в современном мейнстримном виде (как в плюсах, джаве, питоне и т.д.) - не более чем тривиальная надстройка над старыми добрыми структурами, процедурами и указателями на процедуры. Об этом Вирт, Кей и другие говорили еще в 80-е, наверное.
ООП - определенный способ представления программы в голове, а следовательно и способ её структурирования в тексте. Именно его имел в виду Кей, в нем, как ни странно, суть Actor Model, а значит Эрланга и Акки, и во многом именно о нем пишет небезызвестный Егор Бугаенко (http://www.yegor256.com/tag/oop.html) с чьими тезисами можно быть более или менее согласным, но как минимум познакомиться стоит. Можно сказать что такой подход это гуманитарщина, и быть при этом правым, но не нужно забывать что программы в первую очередь пишутся для людей, а значит способ их изложения и понимания имеет значение. Насколько легко представлять программу как множество объектов, взаимодействующих друг с другом - другой вопрос. Возможно другие способы эффективнее, возможно это вообще индивидуально.
По моему опыту ООП это способ структурирования именно императивных программ. Дело в том что я видел ОО-код на С, видел процедурный код на питоне с джавой, но никогда не видел ОО програм на функциональных языках. Наверное это из-за того что объекты почти всегда инкапсулируют какое-то мутабельное состояние, иначе они превращаются просто в (параметризируемые) модули, а состояние в ФЯ обычно скрывается и обрабатывается не так, как и императивных.
>>1184325 >программы в первую очередь пишутся для людей, а значит способ их изложения и понимания имеет значение Пишутся для компетентных людей. Ублажив чужую глупость, мы теперь имеем всё это мракобесие.
>>1131876 (OP) По сути это равнозначные вещи, с появлением монад и алгебраических эффектов в функциональных языках и wp, триплетов хоара в императивных, парадигмы движутся к синкретизму.
Конечно, фп языки лучше, так как находятся на грани прогресса (в них лучше системы типов, языки имеют глубокий бэкграунд, за счет чего просы и консистентны, а не являются набором криво слепленных фич), ооп лучше наличием библиотек и проч. Разницы большой нет, в общем, зависит от стиля мышления.
>>1184445 https://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-го года? Тогда и слов-то таких не было.
>>1184874 Он прав, схема и борщелисп - два разных языка, у которых общие только скобочки. CL -- алгол со скобочками, макросами, императивщиной и мутабельностью во все поля, CLOS, динамическим скоупингом.
Схема -- функциональный язык с продолжениями, гигиеническими макросами, лексическим скоупингом во все поля, преимущественно иммутабельностью.
Эти два языка по сути как жаба и SML, абсолютно разные.
>>1185199 >преимущественно иммутабельностью Ну, вот тут я все-таки немного не соглашусь. На шкале иммутабельности кложа-схема-кл схемка как раз посерединке. По современным меркам ее все-таки преимущественно иммутабельной язык назвать уже как-то не поворачивается.
>>1187415 > Вот у императивщиков Си является байтоёбским языком.
Проблема сяшки в том, что он даже какбе не особо байтоебский в системном смысле - без ассемблера и UB/отсебятины в компиляторе вместо стандарта языка (как это и сделано во многих компиляторах для микроконтролеров, например) ты все равно операционную систему не напишешь, но при этом в ногу позволяет стрелять только так.
Вообще тру-байтоебских языков, кроме разве что ассемблера, - нет, есть лишь сорта говна "меньше блотваре - больше выстрелов в ногу" и "меньше выстрелов в ногу - жирнее блоатваре, топовей Core i7 и 64GB RAM минималочки".
> Rust, ATS
Опять же, позерская стрельба по ногам ради стрельбы по ногам без ассемблера.
У меня по-прежнему бугурт - почему ни в одном из языков не сделают как в SBCL - где есть рантайм, но когда нужно странного или скажем написать OS - то ты просто пишешь код, который переопределяет кишочки этого самого рантайма, или, скажем JIT-компилятора.
А какие языки функциональные и какие нет? Вот могу я в ЖСе функции пихать как аргументы, ЖС функциональный язык или нет? Где можно почитать о положениях функционального программирования?
>>1187940 > А какие языки функциональные и какие нет? Те, в которых есть полноценная лексическая видимость и иммутабельность предпочитается мутабельности - функциональные.
>Вот могу я в ЖСе функции пихать как аргументы, ЖС функциональный язык или нет? На жс можно писать код в функциональном стиле.
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.
Охуенно, лол. Он, блядь, не думает что этому есть определение, но обычно.
>>1227167 На любом полноценном языке (with higher order functions) можно писать в таком стиле. На чисто функциональных - просто удобнее.
Что тут доказывать? Не используй глобальные переменные, используй чистые функции, не мутируй - и будет тебе счастье.
Более того, если класс в ООП рассматривать как функцию, а поля - как параметры, то можно и ООП делать в таком стиле. Т.е. не делать паразитного состояния в классах. См. книжку FP In Java, по-моему, там приводится такой пример. Очень хорошая книга, кстати.
>>1227171 >можно писать в таком стиле Referential transparency - это не стиль, это свойство языка/формальной системы. Это достигается не самодисциплиной программиста, это доказывается для конкретной семантики.
>>1227256 Я не он, но отвечу. Expression problem (в ООП) - это когда ты в своём коде расширяешь интерфейс класса, который ты не можешь или не хочешь изменять напрямую. Тайпклассы (и им подобные решения) делают именно это. И вот так вот и решают.
Сидя в нестиранных труханах на проперженной табуретке, сгорбившись над грязной клавиатурой, он проникает мыслью в высшие сферы, недоступные простым смертным.
И усмехается, глядя свысока на мелочную возню всех этих мелких людишек.
>>1227365 >Сидя в нестиранных труханах на проперженной табуретке, сгорбившись над грязной клавиатурой, он проникает мыслью в высшие сферы, недоступные простым смертным. Ты следишь за мной?
Предыдущим тредом считается этот https://2ch.hk/pr/res/1084449.html