Бложик его, что мудростью полон:http://www.yegor256.com/GitHub его, с кодом что эталоном ООП является:https://github.com/yegor256Голос его, что жавомакак с хачкелистами дрожать заставляет:https://youtu.be/GMrjuuczZkQред предыдущий:Да будет его шизофрения струиться по ноосфере нашей,поджигая гузки да споры праведные распространяя.Аминь.Тред предыдущий:https://2ch.hk/pr/res/1084449.html
>>1131879 (OP)Проигрываю с его гитхаба. 76(!!!) репозиториев, и все сплошной булшит вроде:>True Object-Oriented Java Web Framework>XML Formatting Static Validator >Object-Oriented Java primitives, as an alternative to Google Guava and Apache Commons >Requirements Specifications Automated >PhantomJS Java DOM Builder >Jekyll plugin with simple and nice tools for better blogging
>>1131879 (OP)https://github.com/yegor256/cactoos>To write a text into a file:>new LengthOf(new TeeInput("Hello, world!", new File("/code/a.txt"))).intValue();
>>1131881>>1131936Зато он успешный разработчик>We are not fully ready yet. Please, come back in January 2017 February 2018.и инвестор>As an investor at SeedRamp.com, I've made a few investments, but I've got no results yet :)
https://www.youtube.com/watch?v=RdE-d_EhzmAhttps://www.youtube.com/watch?v=DOyNfmqwR98Еще светочей ООП вам принес.Пухлик это автор книжки object thinking.
>>1131881Ты еще в его русскую версию бложика загляниhttp://ru.yegor256.com/
>>1131964>Егор Бугаенко о политикелучше не надо
>>1131974Нормальный же чел, траллет пидоранов и какелов
> Software development and coding are two different things.И сразу сажи этому претенциозному говнарю
>>1132242писарь порвалася. иди пиши программы разработанные программистами.
Аннотации плохо, но чем можно заменить аннотации?Например, аннотации используются для сериализации. Не писать же все время вручную сериализацию для каждого класса
>>1132736Аннотации для простой логики (сериализация/десериализация, простая кодогенерация) - норм, а остальное можно заменить с помощью фп.
>>1132736Аннотации - костыль для языков, которые не могут в нормальное метапрограммирование. Соответственно, если у тебя язык by design говнишко, то ничем особо их не заменишь - костыли же не от балды костылят, а от практической нужды.
>>1132757Как бы ты сделал сериализацию без аннотаций?Как в C++ делают без аннотаций?
>>1132873>Как бы ты сделал сериализацию без аннотаций?>Как в C++ делают без аннотаций? UCLASS()class AMyActor : public AActor{ GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage") int32 TotalDamage; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage") float DamageTimeInSeconds; UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage") float DamagePerSecond; ...}
>>1132878>без аннотацийНо UPROPERTY это аннотации которые парсятся собственным движком
Главная идея ООП (принимаемая в том числе долбоебом с ОП пика) в том чтобы расписать различные виды объектов и чтобы эти объекты создавали другие объекты и как бы плавали в свободном супе объектов или вели себя как клетки живого организма. Потом мы высекаем искру жизни командой старт и все это добро начинает делать то что мы от него хотим. Короче ЭТА ИДЕЯ В КОРНЕ НЕ ВЕРНА. Подход более-менее работает в природе если мы хотим подождать миллиарды лет для эволюции и миллиарды миллиардов вариаций проб и ошибок. Но вообще то при разработке мы хотим заниматься intelligent design'ом и для этого нам нужны соответствующие инструменты для построения и интроспекции, а подход ООП к ним совсем не относится.
>>1132910Предлагаю все-таки разделять Ъ-ООП (тот, который про асинхронность, динамичность и примитивы) и кресты-жаба-хуй-пизда-в-говне-ооп, который про индусов, слесарей и гуманитарщину. Второй корректнее называть "ГОП" (govno-oriented programming).
>>1133004Это относится к обоим. ГОП даже получше будет т.к. дает не-Ъ обходные пути чтобы создавать хоть что нибудь работоспособное.
>>1133004java хороший язык (синтаксис, стандартная библиотека конечно ужасная), но ей не хватает дисциплины.почему так хорош фп - потому что в нем нет оператора присваивания, и этомпринуждает программистов к определенной дисциплине.если убрать из java все о чем говорит бугаенко в своем видео, то java несомненно будет лучше
>>1133125то есть грубо говоря в фп меньше шансов написать плохой код, и эта дисциплина, сейфовость языка может быть кому-то приятна.в java много лишнего, и люди без опыта просто теряются и совершают ошибки, а винят язык
>>1132873Тык я написал же, что для сериализации - норм, для простой логики - норм (типа валидации), а когда их начинают пихать во что-то мало-мальски непростое, то начинается ад и Израиль.
По сути аннотации это инструменты кодогенерации. Взять тот-же protobuf, например. Он ничем не отличается от аннотаций, только нужно явно генерировать код. Аннотации просто удобнее, не нужно создавать отдельные файлы.
Хотелось бы обсудить read only vs immutable объекты.Может нам на самом деле нужны read only, а не immutable объекты?read only объект, это такой объект, интерфейс которого не содержит членов для изменения состояния объекта, но состояние этого объекта может быть безопасно изменено в другом месте, например, в объекте, который инапсулирует этот объект.Что вы думаете по этому поводу?
>>1135998Поздравляю, ты придумал паттерн delegation велосипед.
>>1136013Нет, это другое. Это разделение чтение и записи данных на 2 объекта
>>1135998Ты не понимаешь, зачем нужна иммутабельность.
>>1136108Зачем?
>>1136118Занадом.
>>1136120>пукread only object и immutable имеют одни и те же достоинства
>>1136044> Это разделение чтение и записи данных на 2 объектаТак ты хочешь два раза делегировать и иметь три объекта на сущность? Гавно какое-то.
>>1136229Так вообще-то много где делают.Я просто хочу спросить зачем нужны immutable объекты, если можно использовать read only объекты.В чем разница.
>>1136251Занадом.
>>1136251Разница такая же, как между кошкой и лампочкой. Зачем нужны лампочки, если есть кошки?
>>1136307Вот именно. Не нужны.
>>1136307ну так объясни эту разницу, чтобы я понял. для этого я и спрашиваю
>>1135998Иммутабельность нужна, чтобы со стейтом не ебаться. Ридонли обжекты - обжекты, которые потенциально могут изменяться другими обжектами, то есть потенциальная ебля со стейтом. Нахуя это надо, если можно просто не ебаться со стейтом?
Что творится в этом треде?Что там с ООП то можно обсуждать? Берешь ебана делаешь абстрактный интерфейс класса, сам класс, класс по работе с интансами этого предыдущего класса называешь ' FooBarManager' или там 'FooBarMediator' и хуяришь там методы. Чего там еще мусолить то?Код написанный хуевым программистом будет хуевым, хорошим программистом - хорошим, а все литие воды про какие то принципы ооп, какое то мусоленье практик - какой то идиотский поиск сверхценных идей.Еще и иммутабельность тут обсуждают, кек. Ну пердолься с иммутабельностью если хочешь пока у тебя коллекции маленькие, а в работе с большими коллекциями какая к чертям иммутабельность, тимлид за проеб производительности к стенке поставит и в очко напинает.
>>1136346Потому что в конечном счеты ты так или иначе ебешься со стейтом. Сколько бы ты не делал вид, что его у тебя нет.
>>1136377Нет, ты просто работаешь с данными. Но для этого у тебя должна быть саунд концепция айдентити и стейта, чего ООП-языки лишены.
>>1136372Иммутабельные коллекции позволяют удобно работать с бесконечными коллекциями, например. Все еще слишком маленькие?
>>1136398но ведь не позволяютохуенно ты придумал копировать бесконечную коллекцию при вставке элемента в ее конец, прям нобелевскую премию в программировании учередят и тебе дадут.
>>1136408>копировать бесконечную коллекцию при вставке элемента в ее конецТы не очень умный, да?
>>1136419Конкатенация иммутабельных стринг, так-то оче медленная операция. Догадаешься почему?
>>1136377Доказывай.
>>1136421>Догадаешься почему? Потому что реализована обычными дебилами вроде тебяОчевидно же.
>>1136478>Очевидно же.В какой-то другой реальности, если только.
>>1136421>Догадаешься почему?Я не догадался. Почему?
>>1136346>чтобы со стейтом не ебаться.Что плохого в самом по себе ебли со стейтом? Ты так говоришь, как будто стейт - это причина зла в программах.Проблема сайдов эффектов не в том, что они есть. Проблема в семантически неявных сайд эффекты и неопределенном поведении.Например, есть классRabothik {public int zarplata;}zarplata может быть изменена где угодно, хотя это не ожидается, потому что семантически зарплату должен выдавать работодатель. И из-за этого может сломаться какой-то код.
>>1136593Потому что.
>>1136601А ну теперь понятно.
>>1136599Или например такой классclass Gradusnik {public int getTemperatura();}Температура может измениться, но ее никто не может изменить через интерфейс градусника. Этот код безопасный и ничем не отличается от иммутабельного класса.
>>1136593https://en.wikipedia.org/wiki/String_(computer_science)#String_buffers
>>1136419А ты?Ты вообще знаешь что твоя иммутабельность означает?Как раз таки и означает, что если иммутабельную коллекцию надо скопировать в другую иммутабельную коллекцию, если надо ее все таки изменить, потому что, сюрприз, коллекци надо изменять.
>>1136619Не понял, что там с конкатенацией. Но если там так всё с этим плохо, может, так не делать?
>>1136660Конечно, можно сделать new ConcatenatedString(string a, string b) в котором динамически копировать строки. И все.Зачем выделять сразу целый буфер
поясните чо за тупой форс унылого говна?
>>1136733Неосилятор порвался.Это ООП дисциплина, если следовать которой, то можно улучшить качество кода на порядки.
>>1136660> Не понял, что там с конкатенацией. Ты какой-то туговатый; уместное использование мутабельных объектов дает выигрыш в производительности. >Но если там так всё с этим плохо, может, так не делать?Ну почему же не стоит? В других кейсах иммутабельные стринги быстрее мутабельных, а в третьих - на производительность строго похуй.
>>1136737какие порядки, какая дисциплина, что ты несешь?Хуевые программисты пишут хуевый код, хорошие - хороший, и никакие тру-ооп методики тут не спасут.
>>1136754>хороший делает хорошо, а плохой плохо.спасибо, но мы это и без тебя знаем.чтобы стать хорошим и не быть плохим, нужно следовать определенному пути, дисциплине.можно научиться самому, а можно следовать за учителем.
>>1136737Как ооп дисциплина и всратый даун с первого оппика связаны?
>>1136421https://en.wikipedia.org/wiki/Rope_(data_structure)
>>1136767это наш учитель. он нас учит ООП дисциплине.ты что-то имеешь против? может, у тебя есть аргументы против его учения? так поделись ими с нами.
>>1136770ну вас нахуй сектанты ебаные.
>>1136795у меня сначала была такая же защитная реакция.советую тебе вдумчиво почитать его блог прежде чем бросатьс такими громкими заявлениями.
>>1136802йэгор залогинься, ты заебал себя форсить.
>>1136768tl;dr что за говно ты принес, и какое отношение это имеет к иммутабельности?
>>1136828Нет шансов вылечить вас. Вы уёбок от природы.
>>1136760люди у которых плохо с логикой и плохо с ответственностью за свой код (а ля "и так сойдет")зашкварят любую практику и самодисциплинироваться не смогут. Можно таких согнать в опенспейс и обложить надсмотрщиками, которые будут бить палками по пальцам за несоблюдение код стайла, это поможет да. Но вот хорошие программисты, которые любят свой код, в таких условиях не выдержат и уволятся, а в проекте останется куча выдрессированных мартых, которые все зафейлят, если столкнутся с хоть сколько-нибудь нестандартной проблемой.Проблема как всегда в людях, а не мутабельностях или неправильно выбранном паттерне.
Обучите его кто-нибудь php, а то из-за проблем в ООП реализации джавы уже полную хуйню городит. В статье http://www.yegor256.com/2016/12/20/can-objects-be-friends.html Пишет, что наследование класса в java не дает доступа к private атрибутам. Он предлагает решить проблему допусыванием слова Trust ChildClass в декларацию родителя. Эта хуйня в пхп давено реализована получше. Есть три типа атрибутов классаprivate - доступен только сущностиprotected - доступен и сущности и потомкамpublic - доступен всем.
>>1136923Так ведь в джаве тоже есть протектед.
>>1136924Я не знал, но он тоже не знает? Иначе, зачем огород городит?
>>1136925>Я не зналНу тогда узнай, что все, что реализуется в PHP тащится из других языков. И сейчас PHP именно подгоняется под джаву. В PHP нет никаких концепций родных для него или выдуманных в нем.
>>1136937Только ни один язык не добился успеха php в вебе. Недостаточно заимствовали?
>>1136924>>1136925>>1136937>>1136940Два дебила - это сила.
>>1136943Ты опять срешь в чатике, маленький засранец?
>>1136949>маленький Ох уж эти проекции.
https://github.com/yegor256/takes/blob/master/src/main/java/org/takes/misc/Base64.java[code] if (input[input.length - 1] == '=') { input[input.length - 1] = 'A'; ++padding; } if (input[input.length - 2] == '=') { input[input.length - 2] = 'A'; ++padding; }[/code] Это даже не шизик - это просто криворукий тупой дегенерат.Как и вы все, тащемто.
>>1136965>author Sven Windisch ([email protected])ты зачем на егорку наговариваешь, сукин сын
>>1136985>Copyright (c) 2014-2018 Yegor BugayenkoПросто иди нахуй, гнида безмозглая, и сдохни там в муках.
ну эта так чо там с ооп, как его пердолить? поясняйте давайте?
>>1137001>поясняйте давайте? Пояснил тебе за щеку, можешь не проверять.
>>1137001Настоящее ООП есть только в smalltalk-like языках. Ни в какой джаве, плюсах, пхп никаким ООП и не пахнет.
>>1137015Проверил и спюлнул синглтоном.
>>1137032>спюлнул В следующий раз глотай, а то накажу.
>>1137019>в smalltalk-like в эппловском objective-c что ли? и тут хипсторы дали пососать
>>1137041>накажуЗаставишь меня делать TDD?
>>1137057Именно, причем в хорошем темпе и разнообразными циклами :3
>>1137065Но ведь мы даже не делали ЮМЛ диаграммы, и вообще у меня это в первый раз...
Мне кажется у Егоры шизофрения или психоз в рамках БАР.
>>1137052в js например
>>1136987>не отличает автора от авторских прав
>>1137116И правда тупая гнида.Алсо все коммиты этого немецкого дурачка - это мелкие правки, тот самый говнокод он форкнул целиком изначально - что очевидно если посмотреть историю.То есть очевидно всем, кроме обычных наследственных дебилов вроде тебя.
>>1137124> говнокодА что не так с кодом?
>>1137148>что не такЛично у тебя не так количество хромосом.У автора говнокода, возможно, тоже.
>>1136642>Как раз таки и означает, что если иммутабельную коллекцию надо скопироватьВо дебил.
>>1137151Судя по тому, что ты не можешь ответить на простой вопрос, проблемы со здоровьем у тебя.
>>1137189>ответить на простой вопросУслуги репетитора исключительно платно, деньги вперед.
>>1137193Дурашка, я знаю на что ты тригернулся, и просто хочу вывести макнуть тебя мордочкой в твои же какашки.return this.decode(input.getBytes(this.charset))
>>1137197>эти манявры умственно неполноценного говнокодераЯсно.
>>1137206ОБОСРАЛСЯ@ДЕЛАЙ ВИД ЧТО НИЧЕГО НЕ ПРОИЗОШЛОАга, ага, шаблонный гринтекст и твёрдое "Ясно", безусловно, прикроют твой обосрамс
>>1137216Егорка-дурачок, ты?
>>1136960 FS@UR Выходи на связь. Поздравлю с твоим прошедшим ДР.
>>1137315Ты чо тут однаглазники устроил, а похавший? Пиздуй ответы мэйл отвечать.
>>1137368 Што?
>>1131879 (OP)Классный мужик. Просмотрела видео по ООП, много чётких вещей. Прочитала статьи о том, как рассчитается рейт, где-то конечно перетолстил, но где-то чётко. В общем, я потекла.
>>1137415>я потеклаконечно, МММ... КАКОЙ МУЩИНА, аммириканец пащти, гринку может сделать. Только на хуец прыгай и щитай на трактор присела.. тАКИХ ЕЩЕ ЩИНОЧКАМи РАЗБиРАЮТ А там уже на велфере за косарь, да обамакер в моями жить успешно
>>1137315Живой.Удивительно.
>>1137460Думал, на двощях на такое уже не триггерятся. Каждый раз забавно.
ОБОЖЕКАКОЙМУЖЧИНАподписалась на его бложик на зло бомбящим омежкам
>>1137535 АТО! Давай, подтягивайся, пообщаемся.
кстати, неплохая илея, что программисты не должны решать вопросы в чатика. Вместо этого на все создаются тикеты. Типа у когото есть вопрос по проекту, он его задаёт, ему платят за баг репорт, потом человек, ответственный за косяк, решает его и ему тоже платят. Сам сталкивался с тем, что разработка затягиваемся чатиками.
>>1137548на потекла не тригяряцо?
>>1131879 (OP)>on this graph you can see that the interest in oop was declining and increasing for functional programming>обе кривые остались на том же значении, с которого они начинались
>>1137187Это ты дебил, хули с другими тредами будешь делать? мьютексы вставлять? а зачем тогда твоя иммутабельность?
>>1137187вот тебе и пруф, петушилла>https://medium.com/@hussachai/scalas-immutable-collections-can-be-slow-as-a-snail-da6fc24bc688The immutable list performed slower than the mutable one 362 times. That’s scary when you know that N is just 1,000. How bad will it perform if we increase N to 2,000?Immutable List: 67.1715 msMutable List: 0.1117 msImmutable List converted from Mutable List: 0.2081 msNow the gap is even wider. The immutable list is slower than the mutable one by 610 times!!!
>>1137869Эх, сейчас бы на иммутабельные коллекции мьютексы ставить...>>1137872Что-то я не вижу в твоей копипасте пруфов того, что иммутабельные коллекции надо копировать, чтобы "изменить".Ты ведь не понимаешь, что значит слово "иммутабельный", да?
>>1137878>>1137872А по рюске чо за хуита эта мутабли имутабли?
Как понять, как разбить программу на объекты?
>>1137878Ты дурак? Ты вообще не собираешься менять коллекции? Иммутабельная коллекция подразумевает что при вставке элемента вся ее структура копируется в новую, отличающуюся тем, что добавлен этот новый элемент. В мутабельную добавляешь элемент и коллекция остается тем же инстансом, в иммутабельной при вставке получается новый инстанс. Сами элементы да не копируются, копируются свзяи между элементами, но это огромные накладные расходы при большом количестве элементов.>Эх, сейчас бы на иммутабельные коллекции мьютексы ставить...Ну вот затем чтобы мьютексы и не ставить, иммутабельные структуры и копируются>>1137888>А по рюске чо за хуита эта мутабли имутабли?хуета набравшая моду ныне в мире жабаскрипта, абсолютно бесполезная в серьезной разработке. Но профаны почему то носятся с ними как со сверхценной идеей. По сути, иммутабельность - это обычный баззворд.
>>1137897>Иммутабельная коллекция подразумевает что при вставке элемента вся ее структура копируется в новуюNiejt. Ты бы почитал сначала, как реализуются иммутабельные коллекции. В-общем, конечно не cache-friendly, но и не тотальная дупликация данных, как ты воображаешь.
>>1137906И как они реализуются?чем иммутабельный односвязный список отличается от мутабельного?Да ничем, кроме того, что у иммутабельного после insert возвращает копию структуры куда элемент инсертится.
>>1137911trie и прочие вариации.
>>1137888По-русски - неизменяемые (постоянные) структуры данных.>>1137897>Ты вообще не собираешься менять коллекции? >неизменяемые коллекции>вся ее структура копируется в новуюТы бы хоть свою же статью по своей же ссылке прочитал. Не умеешь в английский?>копируются свзяи между элементамиАстральные, надеюсь, связи? Пикрелейтед.>иммутабельные структуры и копируютсяИммутабельные структуры. Копируются. Чтобы мьютексы не ставить. Ага, понятно.>в мире жабаскриптаОх... Какой замечательный итт тред все-таки!
>>1137930> Ох... Какой замечательный итт тред все-таки! В жабаскрипте ещё со времён царя гороха есть Object.freeze, который делает массивы и объекты неизменяемыми. Правда после него они обычно работают медленней, потому что программисты JIT-конпеляторов не заморачиваются с их оптимизацией.
>>1137934Еще со времен царя гороха можно было везде пихать const, да и просто ничего не изменять, нутыпонел.
Ну и гуава и прочие гуглоколлекции, разумеется. ИНТЕРПРАЙС, пацаны.
>>1137938> можно было везде пихать constНиззя. Он только Firefox'ом поддерживался, в его особенной JS1.8.5-ой форме. В ES6 его значительно изменили.Например в 1.8.5 он напоминал `var` и имел отложенную инициализацию, что позволяло делать хуйню вродеfunction() { azaza = 5; return azaza; const azaza;}
>>1137943Так я про си и ко как бы.
>>1137945Конст - не панацея, это же не deep freeze.
>>1137951Поэтому я и написал текст курсивом.
>>1137897>коллекция остается тем же инстансомЧем остаётся? Что это должно значить, вообще?
>>1137972> Чем остаётся? Что это должно значить, вообще? Значит переменная-ссылка (или указатель, зависит от ЯП и терминологии) указывает на тот же объект, просто его содержимое изменилось.
>>1137974На ходу придумал? Новый смысл у термина 'инстанс'?>тот же объектКак понять? Он изменяется или нет? О каком 'объекте' идёт речь (в контексте ООП, или нет? что, если нет?)?
>>1137974>> Чем остаётся? Что это должно значить, вообще? >Значит переменная-ссылка (или указатель, зависит от ЯП и терминологии) указывает на тот же объект, просто его содержимое изменилось. В сях создали массив на 40 элементов, не хватило, reallocнули на 80, указатель изменился.Отсосал, байтоеб?
>>1137987> Новый смысл у термина 'инстанс'?Я откуда знаю, что тот анон вкладывал в это термин.> Как понять?А вот хуй его знает.Воообще само понятие "иммутабельность" зависит от контекста и ЯП.Есть иммутабельные коллекции, которые хранят ссылки на иммутабельные элементы и им нет нужды копировать себя вообще. Они просто копируют ссылки на нужные элементы, а элементы остаются теми же. Правда для их работы нужны как минимум счётчики ссылок, чтобы избежать утечек памяти. Пример такой коллекции - это строковый тип в JavaScript. Хоть в спеках ничего об этом и не сказано, но при выполнении str.substring(...) или str.substr(..) браузеры не копируют символы в новую строку, а создают строку на основе существующей, просто ставя другие индексы начала и конца. Конкатенация выполняется точно так же. Вместо копирования, создаётся псевдострока, которая содержит две ссылки на старые строки и описание того как они связаны (называется эта хуйня rope).
>>1137535 Ну, резче давай, на связь, ками.https://www.youtube.com/watch?v=hcDs51s6Vyc
>>1137889Эй мьютексы имутабленые, отвечать будити?
>>1138016«В классы обычно собираются данные, которые изменяются вместе» ©
>>1138047Тоесть всю программу запихать в клас, ведь она изменяется вить?
>>1138053В джаве с шарпом так и делают
>>1138054Так а нахой другие класы пейсать если программа и есть класс
>>1138058Д Е К О М П О З И Ц И ЯЕТЫПИДОРЦИЯ
>>1138069дети пидоры? как это поможет?
>>1138069И нахуя? С таким же успехом можно переменные раскидать по разным файликам? В чем смысел?
>>1138082> по разным файликамКакие у тебя файлики еще в Смолтолке?
>>1138083ну дак я и говорю все в одном файлике писать ведь программа то это объект, его никак нидикомпозировать.
>>1137990> Воообще само понятие "иммутабельность" зависит от контекста и ЯП.Разберись с основами для начала, иммутабельность значит только то, что объект не изменяется, хотя может содержать неизменяемые ссылки на изменяемые объекты.
>>1138119Просто твое зашоренное сознание не может принять то, что есть системы без файловых абстракций.
>>1138130>ссылки на изменяемые объекты.Нахуй такую иммутабельность.
>>1138164C иммутабельностью все впоряде, то на что ты вайнишь - сайд-эффект «impure» programming languages. Не нравится? Ну учи хаскелль, братиш.
>>1137911Персистентные структуры данных, слышал?
>>1138198А как персистентность связана с иммутабельностью? ЕМНИП каждая иммутабельная структура полностью персистента, но не каждая, хотя бы частично, персистентная структура иммутабельна.
>>1138082> С таким же успехом можно переменные раскидать по разным файликам? В чем смысел? Компилятор джавки, например, выдаёт ошибку компилирования если каждому публичному классу не сделать отдельный файлик, название которого соответствует имени класса.
>>1138135а кокиие еще есть?
>>1138222Ну типа конпилятор жавы мешает, ок. А так в этом смысла нету получается.
>>1138235Да ты прав. В твоём случае каждый класс будет представляться в виде файла
>>1137990Очередная порция охуительных историй. Иммутабельные коллекции требуют копирования ссылок на элементы и счетчиков ссылок. Ок.>>1138200>каждая иммутабельная структура полностью персистентаЗаебись.В этом треде мы выяснили, что:1) ГОП-блядки не могут в английский.2) ГОП-блядки не могут в базовые структуры данных.3) ГОП-блядки не могут в си и указатели, не понимают, как работает их код.4) ГОП-блядки совершенно не разбираются в том, о чем пытаются спорить.ГОП-блядок - не человек. Унижай его, смейся над ним.
>>1138268> Иммутабельные коллекции требуют копирования ссылок на элементы и счетчиков ссылок.Не требует. Это один из способов их реализации. Так например делает эрланг. Хоть все коллекции там иммутабельны, при добавлении нового элемента в коллекцию она не копируется полностью, а просто создаётся новая структура с ссылкой на предыдущую коллекцию и новым элементом. Впрочем в языке есть средства и для полного копирования коллекции, если так надо.
>>1138275Зачем ты мне это пишешь? Я цитировал другого анона. Алсо, как там в 80-ых? Рефкаунт, пацаны?
>>1138268чо за гоп блядок? На коком это языке вообще?
>>1138298> Алсо, как там в 80-ых? Рефкаунт, пацаны? Там было написано "как минимум". Можно хоть gc прикрутить. В языках по встроенным сборщиком мусора даже ничего прикручивать не надо.
>>1138069И как ей научится?
>>1138304А это интересный вопрос.Как мне кажется, способность к расчленению чего-то на части, с соблюдением логики связи между этими частями, это часть все того же абстрактного мышления. А как научится мыслить абстрактно, это извечный вопрос на подобных форумах.
>>1138304Системный анализ + объектно ориентированный анализ
>>1138300на сиплюсплюс >>1133004
>>1138304https://youtu.be/agkWYPUcLpg
>>1138275>а просто создаётся новая структура с ссылкой на предыдущую коллекцию и новым элементомНу давай, расскажи мне как это сделать для двусвязного списка?А для B+-tree или T-tree? Хотя да, я забыл, что иммутаблябляди не могут в структуры данных, которые сложнее тех, что пишут в лабах.
>>1138474Никак (изкаробки). Даже более того, добавлять элементы можно только в конец. Я просто привожу пример такой коллекции. У неё в эрланге даже отдельный тип есть.Просто говорю, что не всегда нужно копировать все элементы при изменении имутабельной коллекции.А вообще я лично большие коллекции почти не использую. Большая часть данных у меня проходит в приложениях в потоках и обрабатывается по-одному (оно же реактивное программирование).
>>1138474>иммутабельный двусвязный списокОх...
>>1138485Ну круто че, иммутабельность без катастрофического оверхеда возможна только для несортированных списков и простейших бинарных деревьев, в случае деревьев правда еще обязательно нужен gc.Ну сразу очевидно же что всем срочно нужно переходить на иммутабельные коллекции и до потери сознания воевать в интернете с глубыми стейтоебами, иммутабельность - будущее!
>>1138495в чем проблема? можно даже сделать изменения атомарными на платформах, что поддерживают DCAS.https://en.wikipedia.org/wiki/Double_compare-and-swap
>>1138496>иммутабельность без катастрофического оверхеда возможна только для несортированных списков и простейших бинарных деревьевТы всё неправильно понял.
>>1137930>Ты бы хоть свою же статью по своей же ссылке прочитал. С чего ты взял что мне всегда нужно вставлять элементы только в конец?>Астральные, надеюсь, связи? Пикрелейтед.Хуяльные>Иммутабельные структуры. Копируются. Чтобы мьютексы не ставить. Ага, понятно.Именно, петушок. Под копированием структуры я понимаю копирование структуры, а не данных в ней. Ну то есть копирование связей между рефкаунтными нодами, что содержат данные.>в мире жабаскрипта>Ох... Какой замечательный итт тред все-таки!Именно после моды на immutable.js и всякие redux в интернете и расплодилось столько кукарекающих про иммутабельность петушков. Люди знакомые с функциональными языками, а не желающие покукарекать в интернете на волне хайпа, понимают, как мало иммутабельные структуры имеют общего с реальной жизнью и серьезной разработкой.
>>1138503Да правильно я все понял
>>1138501>иммутабельный изменяемый двусвязный списокАх...
>>1138505>С чего ты взял что мне всегда нужно вставлять элементы только в конец?Ты о чем вообще?>копирование связей между рефкаунтными нодамиРефкаунт, ага. И копирование иммутабельных структур. Точнее связей между ними. Ржем всем офисом, не останавливайся.>Именно после моды на immutable.jsПодозреваю, что тебе просто папа компьютер с интернетом купил только в это время :)
>>1138082>переменные раскидать по разным файликамНачнем с того, что понятие "переменная" связано с понятием "файл" от слова "никак". Когда выучишь определения и начнешь их осмысленно употреблять, возвращайся, поговорим о семантике.
>>1131879 (OP)https://gist.github.com/rklaehn/26c277b2b5666ec4b372Сравнение производительности джавы и скалы.
>>1138840Поясните что значат результаты
>>1132736Очевидно, тайпклассами, набором комбинаторов для них и автоматическим выводом тайпклассов с помощью компайл-тайм макросов.
>>1138952Кек, что - то авторам Scala2.0 (Dotty) ето не так уж очевидно.
>>1138909Нихуя не значат результаты. На производительность именно языка не нассать только презренных байтоебам, на которых просто нужно нассать, а не выслушать их проблемы и мнение.У нормальных же людей производительность измеряется алгоритмов, запросов и распределенных систем.
>>1138963Шэйплесом обмазывайся.
>>1138909Скала быстрее джавы. Иммутабельные коллекции скалы немного быстрее, мутабельные коллекции скалы быстрее в разы.
>>1138983> Скала быстрее джавы.> Иммутабельные коллекции скалы немного быстрее, мутабельные коллекции скалы быстрее в разы. Это не скала быстрее жавы, а коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы.Конкретно скала может быть значительно быстрее жавки только в том случае, если будет сконпелирована под .NET и активно использовать value types.
>>1138990>коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы.Только аутисту, который не может в контекст между двумя предложениями, нужно это дополнительно объяснять, не?
>>1139033Что поделать, если первое предложение не подразумевает второе. Интересно будет посмотреть на скорость коллекций жавы, после того как там закончат вальхаллу. А так и сейчас понятно, что коллекции там немношк говно.
>>1138534>ты о чем вообще?о том что в статье про то и написано, что если не использовать оператор склейки элемента в конец иммутабельной паращи, то оверхед чудовищный>Рефкаунт, агаКак по твоему устроены gc функциональных языков?>Подозреваю, что тебе просто папа компьютер с интернетом купил только в это время :)Скок получаешь то петушок? За 2к бачей то хоть перевалил?
>>1139045>что если не использовать оператор склейки элемента в конец иммутабельной паращи, то оверхед чудовищныйПрочитай уже какую-нибудь книжку по алгоритмам и узнай, как работают списки.>Как по твоему устроены gc функциональных языков?У языков нет gc, gc есть у рантаймов. Ты очень тупой. Жвм гц на рефкаунте, пацаны))>Скок получаешь тоОно еще и мамин фрилансер 300к\сек, ну просто праздник какой-то.
>>1131879 (OP)жавадебилы изобретают хаскелллет так через сорок до стандарта Haskell 98 доберуться
>>1139036>>1138990>коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы в данном тестировании.мимо
Кажется мы стали забывать как выглядит настоящий ООП.
>>1148856>2018>ООП
>>1148856как земля он выглядит
>>1149040красибо
Всем привет
>>1131879 (OP)http://www.yegor256.com/2014/10/29/how-much-do-you-cost.html> $100+ per hour - has a StackOverflow score above 20K;Е Б А Н У Т Ы Й
Хэллоу
Бамп
>>1131879 (OP)http://www.yegor256.com/2018/03/06/speed-vs-quality.htmlБля.
>>1131879 (OP)> Object Thinking
>>1169259что не так?так-то егорка - еретик, и отошел от ООП принципов на самом деле. он использует объекты не более как контейнер для одной функции.
>>1169295Эх, щас бы замыкания руками выписывать...
>>1169305на java и не такое пишут.они там до сих пор пишут однопоточно с блокирующими IO-операциями
>>1169439ORLY? https://docs.oracle.com/javase/7/docs/api/java/nio/package-summary.html
>>1169439> однопоточно с блокирующими IO-операциямиСейчас не 2008 год, маня.
>>1169549>Сейчас не 2008 год, маня. В jave-мирке 2008 еще и не наступал. Там до сих пор 2000-ые. Язык-то мертв.Даже javascript уже функциональнее и производительнее javahttps://www.youtube.com/watch?v=REj8pJesMVI
>>1169554Да, по ссылке дурачок пишет http client с блокирующими операциями
>>1169554Понятно - ничего не знающий сектант с минимальным опытом современного программирования. Не буду тратить на тебя время - просто нассу на тебя.
ООП-господа, появилась такая идея.Надоело трахаться с моками для тестов. Можно сначала объявить абстрактный класс, в который все зависимости вынести в абстрактные методы.В конкретном рабочем классе мы указываем зависимости в конструкторе как обычно и возвращаем их через наши абстрактные методы.А для тесты мы делаем мок этого абстрактного класса.Как вам такая идея? Или это стандартная практика про которую я просто не знаю?
>>1169581>java>опытом современного программированиятолстишь же.
>>1169621Сынок, java - это и есть современное программирование.А не то, на что вы там дрочите, хлебая смузи в кофешопах, кложуристы мамкины.
>>1169620Открой для себя интерфейсы и библиотеку для мокирования для твоего языка.
>>1169639>с конца 90-х в java не добавили НИЧЕГО кроме лямбд, и то пару лет назад>java - это и есть современное программированиеТы уже вытекаешь из треда.
>>1169647Смысл как-раз в том, чтобы не использовать интерфейсы и не передавать их в конструкторе.Потому что это все превращается в ад зависимостей, да еще и сам класс может использовать какие-то нежелательные функции типа записи в файл.Суть в том, что мы в абстрактном классе все зависимости скрываем за интерфейсом абстрактных методов.
>>1169620>>1169650Если у тебя в классе куча зависимостей, значит ты что-то делаешь не так. Алсо, если ты для мокирования зависимостей класса Х определяешь другую реализацию самого класса Х, то ты что-то делаешь не так. Если у тебя сайд-эффекты не отделены от чистой бизнес-логики приложения, то ты что-то делаешь не так. Продолжать, анон?
>>1169653Или я могу просто сделать абстрактные методы для абстракции зависимостей и не выдумывать хуиту и не корежить архитектуру приложения, чтобы сделать такие как надо тесты.
>>1169650>Смысл как-раз в том, чтобы не использовать интерфейсыАга, но использовать абстрактные классы, лол.Ты пытаешься впихнуть невпихуемое.Это всё надо делать через рефлекшн и байткод-инжиниринг.Погули ASM (не ассемблер, блять), и прочее, лень вспоминать, если честно.Вообще, для промышленного применения в таком случае используют Groovy, Spock etc (ASM и прочее там внутри).
>>1169653>Если у тебя в классе куча зависимостей, значит ты что-то делаешь не такУ меня в классе одна зависимость, но эта зависимость может возвращать другие классы, которые тоже мокить.>Если у тебя сайд-эффектыА если это класс суть которого в записи в файл?
>>1169655В смысле? Ты как раз и предлагаешь "корежить архитектуру", делая специальный код для тестов. При нормальной архитектуре тебе не нужно писать никакого дополнительного кода в классе для изменения его зависимостей на моки. Почитай про DI. Ну и выше анон тебе правильно сказал, ты походу не совсем понимаешь, что такое интерфейсы: >>1169647
>>1169657>но эта зависимость может возвращать другие классы, которые тоже мокить.Ну как бы очевидно, что ты не можешь написать мок для класса, не замокив в свою очередь его зависимостей, которые утекают в интерфейс, разве не так? Запили в тред конкретный пример, давай посмотрим, как лучше сделать.>А если это класс суть которого в записи в файл?Я не понял вопроса. Поинт был в том, что если у тебя при тестировании класса бизнес-логики ВНЕЗАПНО возникает потребность мокать тыщу сайд-эффектных классов, то ты что-то делаешь не так. Ну типа как знаешь, некоторые упоротые в геттеры джавабинов пихают какой-нибудь код получения значения из базы и кэширования (ИНКАПСУЛЯЦИЯ ЖИ!!1), наркомания в таком духе. Бизнес-логика получает и возвращает данные, а в файл записывает уже другой лейер. Алсо, что ты собрался мокать в классе, суть которого в записи в файл?
>>1169620> абстрактный классНу нахуй.>Надоело трахаться с моками для тестов.Что ты там мокаешь? Проблема может быть именно в том, что ты мокаешь там где не нужно. Что ты хочешь протестировать? Давай конкретный пример на реальной задаче.
>>1169650> Смысл как-раз в том, чтобы не использовать интерфейсыЕгорка-долбоеб, eto ti? > какие-то нежелательные функции типа записи в файлОткрой для себя принципы SOLID. В частности буквы SLID.
>>1169664>При нормальной архитектуре тебе не нужно писать никакого дополнительного кода в классе для изменения его зависимостей на моки.Лел. написание кода под юнит тесты и в частности изолирование одних классов требует определенных извращений в архитектуре. http://david.heinemeierhansson.com/2014/test-induced-design-damage.htmlhttps://rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf
>>1169696Ноуп, извращения в архитектуре - это как раз отсутствие изоляции и прочий спагетти-код, который не тестируется.
>>1169620Короче, я подумал что в принципе все эти абстрактные методы можно вынести в интерфейс и использовать его как зависимость. Получится тоже самое, но более тест-френдли.
>>1169701Тогда придется делать один класс wrapper, который переводит все реальные зависимости в методы этого интерфейса.
>>1169696Код сразу нужно нормально проектировать, тогда и юнит-тесты легко писать там, где нужно, без модификаций кода.А то как обычно бывает - говнокодеры пишуют лютые портянки, имеющий миллиард зависимостей, делающие все и протестировать это говнище можно только энд ту энд (интеграционными) тестами с полным поднятием контекста и тесты идут час, полтора.
>>1169716Ну это советы уровня зачем писать плохой код, если лучше писать хороший код.
>>1169754Ну почему? В тех же функциональных языках все это давно формализовано, там тебе компилятор элементарно не даст написать портянку с обращемем к базе в геттерах бинов.
>>1169777>В тех же функциональных языкахВ функциональных языках нет и таких проблем с тестированием.
>>1169786Эм, ну так о том и речь, что поэтому их и нет. См.: >>1169716
>>1137193Ничё-ничё, уёбина, как-нибудь понадобится тебе либу какую-нибудь форкнуть чтобы добавить функционал, ты там наешься говна со своим платным репетиторством.Выбор будет прост:1) тебя ебёт босс за то что ты прибавил месяц к дедлайну потому что у тебя нервы отказывают ковыряться в чужом говне и ты пишешь свою либу2) ты скрежещешь зубами и ковыряешься в чужом говнеКогда вы поймете, суки тупые, что ваши скиллы по дефолту говно и вы никто чтобы заниматься репетиторством, однако ваше мнение по конкретной теме МОЖЕТ помочь прогрессу и жабить его тупо бессмысленно.
>>1169787Какие могут быть проблемы с проверкой результата вычисления функции?В функциональных языках других проблем хватает и поэтому они говно.Ты так говоришь, кск будто легкость тестирования это краеугольный камень программирования.
>>1169805А какие могут быть проблемы с проверкой результата вычисления метода, лол? Чувак, ты попросту не понимаешь, о чем говоришь. Еще раз: анон написал, что>Код сразу нужно нормально проектировать, тогда и юнит-тесты легко писать там, где нужно, без модификаций кода.Я добавил к этому, что в тех же функциональных языках это самое "нормально проектировать" частично энфорсится компилятором и семантикой языка, так что откровенной лапши типа дб в геттерах ты написать тупо не сможешь, а потому совет того анона - это не маняэдвайс уровня "пиши хороший код, а плохой не пиши", а вполне нормальная и рабочая установка.
>>1169620Я угорел по абстрактным абстракциям.Суть в том, что внутри абстрактного класса мы объявляем классы независимые от внешних классов и используем только их. Запрещено внутри абстрактного класса использовать внешние классы.Как вам такая идея?
>>1131879 (OP)>подайти позязя
>>1169945>Как вам такая идея? Как земля. Иди лучше лабы делай.
>>1169953почему? ящитаю что настоящй ООП должен быть именно таким домен индепендент.грубо говоря у объекта есть абстрактные через которые он получает данные, и абстрактные методы в которые передается результат. все.
>>1169955Поздравляю, вы только что изобрели интерфейсы классов, осталось миксины изобрезть.
>>1169805>В функциональных языках других проблем хватает и поэтому они говно.Нука-нука. Например?
Я вот немного не понял. Он говорит что объекты должны быть немутабельными. Что это значит? Вот я пишу игрушечку. У меня есть Alien. У него есть поле hp.После выстрела по нему нужно удалить объект и создать новый?
>>1169981Не просто удалить алиена, а полностью пересоздать весь мир с поврежденным алиеном.
>>1169982Не, ну это шутка. Он ж вроде не говорит так делать.
>>1169981Ну, следуя логике функциональщиков - алиен с хп 100 перестал существовать, и появился алиен с хп 99. Это совсем другой алиен, не надо их путать , лол.Тут где-то бродит большой специалист по Clojure - спроси у него. У них там целая теория под это подведена.
>>1170004Сопливые представления императивщиков о ФП.
>>1169966Ты не понял.Идея в том, что абстрактный класс выступает как независимая программа. Он существует в своем собственном мирке со своими собственными классами.Напримерpublic abstract class Class1{class Data { public int i; }protected abstract Data getData();protected abstract Data setData();protected abstract void process Data(){Data data = getData();data.i++;setData(data);}}Потом ты наследуешь этот класс и реализуешь методы для получение данных.
>>1170005Ну расскажи свои не сопливые, умник.Просто логика не в этом. Если задача ООП моделировать объекты реального мира, то странный у светоча подход. Объекты реального мира изменчивы.
>>1170030Поздравляю. На этот раз ты изобрел паттерн "Шаблонный метод". Егорка-долбоеб, хватит страдать хуитой и пиздуй читать книги про ООП и потом наверни про паттерны, а не придумывай велосипеды, которые выглядят как велосипеды, но при этом ты говоришь, что их нельзя называть велосипедами, потому что это "машина на цепной передаче с двумя колесами".
>>1170035Ты бы книжки почитал, неуч.>Если задача ООП моделировать объекты реального мираОй всё. Этот тоже сломался.
>>1169198Зачем он преподносит очевидные всем вещи как откровение?
>>1169716> энд ту энд (интеграционными) тестами с полным поднятием контекста и тесты идут час, полтораКак что-то плохое. Это же не юнит-тесты.Юнит-тесты для какого-нибудь CRUD вообще сложно придумать, если там особой бизнес-логики нет.Если тебя смущает время, то можешь разбить тесты на группы и запускать только те, что связаны с текущими изменениями. Ну и полтора часа на тесты - это когда тестов довольно много. Значит и приложение не маленькое. За всё приходится платить. У нас тесты и по неделе гоняются (специфика такая) - такова цена за уверенность в работе.
>>1170041Ебальником светит. Написать чего-нибудь уиного - мозгов не хватает, а написать надо.
>>1170114>Ебальником светитЕблом торгует же.
>>1169981Ой, блядь. Короче, смотри. Есть две разных вещи, которые часто путают: identity (идентичность объекта) и value (значение объекта). Под словом "объект" я тут подразумеваю вообще любую сущность, а не указатель на структуру с методами.Вот пример для местных адептов МОДЕЛИРОВАНИЯ РЕАЛЬНОГО МИРА: есть у нас Петя. "Петя" - это identity. Если Петя выпьет кефир, то он все равно останется Петей, несмотря на то, что его "значение" поменялось. Давайте отрежем Пете руку. Теперь у нас есть два разных объекта (рука никуда не исчезла - она персистентна! - мы ее просто удалили из Пети). Более того, Петя с рукой и Петя без руки - это тоже два разных объекта. Но с одним identity - "Петя". То есть identity "Петя" может в разные моменты времени указывать на разные объекты.Более вменяемый пример: вот есть у тебя числа. Числа неизменяемые. 2 + 3 не изменяет значение числа "2", как это происходит в (хуевом) ооп. 2 + 3 возвращает новое число - 5. Далее, у нас может быть identity "вес Пети в килограммах". Сегодня Петя весит 100 кг, а через месяц будет весить 120. Это не значит, что когда Петя набирает вес, он изменяет число 100. Он просто ассоциирует identity "вес Пети" с новым (иммутабельным) числом. Это понятно? Так работает логика, математика, физика и вообще все инженерные дисциплины. Это логично и понятно. Но по историческим причинам в хуевом (процедурном) ооп мы постоянно путаем identity и value, они никак не разделены. То есть мы именно что изменяем само число 100. Это сложно, хуево и непонятно, поэтому программы получаются сложными, хуевыми и непонятными - трудно предсказывать, что где поломается в следующем коммите, и трудно рассуждать о свойствах программы, потому что она построена на хуевых, нелогичных основаниях. Причины чисто исторические: современный мейнстримный ооп - это дырявая абстракция, которая получилась натягиванием ужа на ежа (объектной системы на си). В том числе из-за этого случаются всякие забавные (ну, как забавные) казусы: например, java - язык с некорректной (unsound) системой типов. То есть если компилятор не видит ошибок типов, то это не значит, что на самом деле их нет и в рантайме она не скрашится. То есть система типов джавы на самом деле ближе к юнит-тестам, чем к системам типов - она не дает никаких гарантий, а только ловит некоторые ошибки. Не так давно нашли связанный с этим баг в спецификации (спустя 10 с лишним лет после ее выхода). При этом она используется в софте для автомобилей (потому что Аду туда пихать слишком дорого, для самолетов это оправданно, а тут - да водятлы ж и так пачками дохнут, никто и не заметит)00) Ну то есть заебись так, использовать нелогичный (внутреннне противоречивый) инструмент для таких задач. Вот реально - если бы дома строили программисты, то первая же присевшая на подоконник птичка разрушила бы весь город (или как там в оригинале было).
>>1169981А, да, о чем это я. Раз тут кложу кто-то реквестировал, на ней это будет примерно так:(update-in entities [alien-id :health] - damage)Где entities - это хэшмап из айдишников в хэшмапы со свойствами энтитей. Ну жсон видел? То же самое. Находим среди entities энтитю с нужным айди, находим у нее поле health, вычитаем из него дамаг. Это возвращает новую версию entities, но из-за того, что все иммутабельное (не изменяется), мы ничего не копируем, а просто добавляем новую ноду и ставим ссылку на старую часть entites, которую мы не трогали. Так ты, например, можешь иметь 10 копий всего игрового мира с разными хп у твоего алиена, но занимать места в памяти все десять штук будут столько же, сколько одна штука. Профит. Если у тебя, например, сетевая игра, то ты можешь хранить все состояние для последних 10 кадров и интерполировать в ожидании инпута из сети, а когда инпут пришел - взять любое из прошлых состояний и пересчитать нынешнее с учетом инпута. С мутабельностью пришлось бы все копировать - а тут это просто сразу работает как надо. Ну и ты легко можешь делать дампы всего игрового мира (для сохранений, например), можешь пересылать его по сети, что угодно короче - это просто данные, а не размазанный тонким слоем по всей программе стейт, который ты хуй достанешь из своих сотен классов. Уловил?Алсо, все вменяемые современные клиент-сайд фреймворки используют такую же модель, гугли redux, например.
>>1170112>У нас тесты и по неделе гоняютсяГенеративные надеюсь?
>>1170125>ГенеративныеДегенеративные.
>>1170124>Так ты, например, можешь иметь 10 копий всего игрового мира с разными хп у твоего алиена, но занимать места в памяти все десять штук будут столько же, сколько одна штука>десять штук будут столько же, сколько одна штукаЧто я, блядь, читаю?
>>1170140Очевидно, что он проебался с объяснением. Занимать будет почти столько же (для больших "миров").
>>1170143Я таки всё равно не понял, он списки для себя открыл и обращение по ссылке, или что?
>>1170144Ахаха, так его, кложуриста мамкиного.
>>1170144https://en.wikipedia.org/wiki/Persistent_data_structure
Правильно я понял, что мне к вам с этим вопросом? В пхп-треде тема всё же немного другая.
>>1170140Анон, возьми за привычку четко формулировать свой вопрос, если тебе что-то непонятно. "яннп чоблядь?" - это не вопрос, а признание собственной беспомощности.>>1170143Нет. Пидору привет.>>1170144>Я таки всё равно не понялВ таких случаях я обычно перечитываю текст еще раз и формулирую, что именно мне непонятно. Брат жив, батя одобряет, попробуй. Алсо, стыдно путать хэшмапы со списками, анон.
>>1170188Все верно. Геттеры и сеттеры не нужны; это антипаттерн. Делают их просто потому что так исторически сложилось это tldr объяснение. Привыкай, анон, добро пожаловать.
>>1170200>признание собственной беспомощностиКонечно я, блядь, беспомощен, понять как что-то, что требует 10X памяти уместится в X памяти. Это что-то из квантовых вычислений?
>>1170176Так это нихуя не объясняет того, как он будет уместит десять объектов в объём, умещающий один объект. И я уже не говорю про своеобразный "контроль версий", который будет вносить оверхед и как будет охуенно потом разбираться какие изменения принадлежат какому моменту.
>>1170208Естественно, он передёргивает.Он же лиспер.И тут надо понимать, что иммутабельные объекты и классическое ооп - это музыка из разных опер.
>>1170201Лол. Даже САМ использует геттеры.Если не написать get в имени функции то НИЩИТОВА, ага.
>>1170220>САМОткуда оно вообще взялось?И зачем его форсить?
>>1170204фейспалм.пнгПопробуй все-таки перечитать пост и ссылку на википедию, которую тебе выше кто-то кинул. Я уверен, что на самом деле ты вовсе не глупый, просто поленился вникнуть в написанное.>>1170208См. выше. Тебе на русском покидать ссылок по теме?>>1170219Я и не лиспер, лол. Алсо, на классическое ооп иммутабельные объекты как раз ложатся прекрасно.
>>1170220Не ебу, что за САМ, и мне, если честно, похуй. По теме есть чо?
>>1170201>Геттеры и сеттеры не нужныRuby FTW
>>1170188Что бы я мог наследовался от твоего класса и мог поменять поведение твоих функций.
>>1170247>наследоваться от data class-овНу может быть.>поведение в data class-ахВон из профессии.
>>1170239Ты сам-то её читал? Там ни слова не сказано о том, какой магией достигаются описанные тобой свойства. Так что либо заснуть 100 байт в десять байт, либо иди нахуй.
>>1170239>на классическое ооп иммутабельные объекты как раз ложатся прекрасноИммутабельные объекты ведут к деградации и объектам как контейнерам функций без поведений. Это не живые сущности, а процедуры, которые зачем-то вложили в объекты.
>>1170258То есть Егорка от одной крайности - объекты как данные - перешел к другой крайности.
>>1170240По какой теме?Геттеры не могут быть плохими или хорошими. Могут быть не очень удачные паттерны.Отдавая данные ты:1. будешь писать больше кода, который что-то делает с этими данными, вместо того чтобы объект сам с ними делал что-то2. нарушаешь инкапсуляцию объекта, потом будет непросто изменить объект, потому что у тебя куча зависимостей торчит наружу.
>>1170264То есть тут как и во всем нужен баланс. Используя геттеры получается более гибкая, но и более сложная архитектура.С другой стороны не всегда получается заменить доступ к данным на методы, а писать десятки методов вместо одного геттера тоже не самая лучшая идея.
>>1170257Конечно сказано. И в моем посте я это описал. За магией, кстати, иди в /sn, а тут доска про программирование - ты точно туда зашел?>>1170258>живые сущностиАнон, ты биолог? Что у тебя там за живые сущности? Мы тут про разработку софта разговариваем, а не про живые сущности.Я уж молчу про то, что ты путаешь статические классы с иммутабельными. Читни-ка thinking in java какой-нибудь для начала.
>>1170264>По какой теме?По теме поста, на который ты отвечал.Оба твои пункта используют неверные предпосылки из которых, кстати, сразу видно, что опыт ооп-проектирования у тебя ограничивается чтением статеек и воспроизведением прочитанного без критического осмысления, поэтому обсуждать их не вижу смысла. Анон выше уже тащем-то ответил: >>1170256>Вон из профессии.
>>1170321>Конечно сказано. И в моем посте я это описалПруфов, конечно же, не будет. Я всё ещё жду 100 байт умещённых в 10.
>>1170325>ко коочень содержательный пост
>>1170321живые сущности это объекты, которые изменяются в течении жизни. мертвые сущности - это иммутабельные объекты.любой иммутабельный объект можно заменить процедурой, которая вычисляет результат. нет никакого смысла использовать оператор new и выделять память в куче.собственно, большинство иммутабельных библиотек так и делает.
>>1170359ЖИВЫЕ ОБЪЕКТЫМЕРТВЫЕ ОБЪЕКТЫЖИВАЯ ВОДАГде тут можно зарядить воду у Оракула?
>>1170359я имел ввиду классы типаclass Sum{int a, int b;public int intValue() { return a + b; }}Егорка очень любит такие "объекты".
>>1170369МУТАБЕЛЬНЫЙ ОБЖЭКТ
>>1170371Егор Кашпировский, плз.
Люди считающие что объекты должны быть иммутабельными имеют не ООП мышление, а функциональное мышление.
>>1170353Пруфов чего? Перечитай мой пост, анон, - у меня нет libastral и я не знаю, что тебе непонятно.>>1170354Это называется "смотришь в книгу - видишь фигу".>>1170359>любой иммутабельный объект можно заменить процедуройЭм, ну вообще любую структуру данных (и все ее возможные инстансы) можно заменить функциями, да. Например, любой секвенциальный дататайп может быть представлен как частичное применение fold. Это называется zoetic data. Вот только при чем тут это? Анон, ты немного запутался. Погугли, что такое "data class" (алсо pojo или java bean).Алсо, про "объекты, которые изменяются в течение жизни" я буквально парой постов выше уже писал. Там вон анон как раз не может to comprehend что такое structural sharing - может ты тоже пост прочитаешь и ему поможешь разобраться?>>1170370Это не иммутабельный объект, мимокапитан.
>>1170386Нет никакого "ооп мышления" или "функционального мышления". Есть прагматизм и здравый смысл. Если что-то дает лучший результат, то это что-то нужно использовать. Все просто.
>>1170420>Нет никакого "ооп мышления" или "функционального мышления">Нет никаких эксравертов и интровертов>Нет никаких технарей и гуманитариев>Нет никаких правшей и левшей>Нет никаких гомосексуалов и гетеросексуалов
>>1170419>нет final>Это не иммутабельный объект РРЯЯЯ
>>1170419>ну вообще любую структуру данных (и все ее возможные инстансы) можно заменить функциями, даА вот объект не заменишь.
>>1170428Объект в идеале это и есть функция. А точнее замыкание. Объект принимает сообщение и отвечает на него.
>>1170432>Объект в идеале это и есть функция. Я за это ненавижу js.
>>1170444В js не объект есть функция, а функция есть объект. И это разные вещи.
>>1170444>ненавижуМного ума не надо.
>>1170447> функция есть объект.Объект с переопределяемым контекстом - не объект, а функция, ссори.
>>1170455function x(){}x.bind(x)Удачи.
>>1170462function x(){}x.bind(x)x.apply()Пффффф, взял и переопределил. Чем это от передачи параметров для функции отличается? А, ничем! Объект на то и объект, что имеет свой собственный, непереопределяемый (но изменяемый) контекст.
>>1170467>Пффффф, взял и переопределилТы не знаешь js.Послеfunction x(){}x = x.bind(x)Ты уже не можешь переопределить this у функции. Никак.
>>1170467>Чем это от передачи параметров для функции отличается? А, ничем! Вот именно, что посылка сообщений объекту , ничем не отличает от передачи параметров фкнкции. более того, в динамических языках, любая посылка сообщения это есть функция лукапа. obj.method(x) // obj('get', 'method')('call', obj, x)obj.field = x // obj('set', 'field', x)
>>1170472Нет, это ты не знаешь, или неточно формулируешь. Apply на пике переопределяет контекст.
>>1170480x = x.bind(x)
>>1170480>на пике >this.y>console.log(y)Ору с этого дебила.
>>1170485Можешь орать и дальше, но ты связываешь контекстом не функцию, а ссылку на функцию. Это две разные вещи.
>>1170419Пруфов того, что объект, в 10 байт ты уместишь сто байт, очевидно. Ты же не в астрале где-то хранишь старые данные.
>>1170552Ты что, не знаешь о концепции бесконечного сжатия? Заводится пизданическая база данных, куда сваливаются блобы, каждому присваивается статический айдишник, без коллизий (например хэщ+контрольная + сумма+размер+еще что-то, но так, чтобы два одинаковых блоба в бд не дублировались). Все. Вот этот айдишник и есть итоговый размер сжатых данных.
>>1170424Ну, все верно, за исключением правшей и левшей - они таки есть.>>1170427У тебя в твоем объекте доступные извне класса мутабельные поля. Ты либо не знаешь джаву, либо не понимаешь значение слова "иммутабельный". Впрочем, тут вообще почти всех отписавшихся следует переселить в ньюфаготред, если уж на то пошло.>>1170428Анон, тебе бы основы программирования подучить. Как уже выше сказали, объекты - это синтаксический сахар для замыканий или наоборот :p. JS тут ни при чем.>>1170552Еще раз призываю тебя перечитать изначальный пост и статью на википедии, которую тебе скинули. Ты уже вторые сутки бьешься, анон, и не можешь понять довольно элементарного алгоритма.
>>1170792>объекты - это синтаксический сахар для замыканий
>>1170843Всё так. В начале этой или предыдущей ветки давались ссылку на серию публикаций, в которой это разжевывается.
>>1170792>не можешь понять довольно элементарного алгоритма>уместить 10х объёмов данных в 1х объёме данных
>>1170858с точки зрения жс-макаки - безусловно.
>>1170843Один не писал в жизни ни одного компилятора и не понимает, что такое замыкания...>>1170861...другой уже вторые сутки не может понять, как работает structural sharing.Нахуя так жить, пацаны?Еще где-то тут на нулевой болтался тред, где чувак не мог rest-клиент к чатику написать. Ну как тут не стать адептом секты ПУЗЫРЯ АЙТИ, лол. Впрочем, студенты с зекача не показатель, конечно.
>>1170864>ПукСерия статей была про систему типов родственных java, c++, eiffel. Добавил этот комментарий, т/к боюсь без пояснения ты не поймешь, к чему это.
>>1170872>Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами.>Объект в программировании — некоторая сущность в компьютерном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов)[1].
>>1170875Твой пост напомнил.Правдин. Дверь, например, какое имя: существительное или прилагательное?Митрофан. Дверь? Котора дверь?Правдин. Котора дверь! Вот эта. Митрофан. Эта? Прилагательна.Правдин. Почему ж?Митрофан. Потому что она приложена к своему месту. Вон у чулана шеста неделя дверь стоит еще не навешена: так та покамест существительна.
Господа, помогите решить диллему. У меня есть объекты типа StreamableVideo и VideoWriter. В первом есть функции возвращающие данные, а во втором определенный алгоритм, который вызывает эти функции и записывает данные.Очевидно, что любой тут скажет, что лучше функцию записи переместить в сам StreamableVideo. Но я не знаю как это сделать.это выглядит примерно так:class StreamableVideo {Stream GetStream1();Stream GetStream2();bool IsSomething;}и в VideoWritervoid Write(StreamableVideo v) {if (v.IsSomething)DoSomething(GetStream1()) elseDoSomething(GetStream2())}Проблема в том, что я хочу сделать декоратор поверх методов StreamableVideo, а если я засуну функцию Write в этот класс, то она будет вызывать свои методы и я не смогу сделать декорирование.Это просто сделать через наследование. Но можно ли как-то обойтись без наследования?
>>1170877Дурачок, это 2 совершенно разные концепции. Это как сравнивать теплое с мягким.
>>1170881> Митрофанушка as ishttps://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
>ООП все отравляет, куда лучше иммутабельность. Оверхед, тормоза? Пфф, вот у меня в редуксе все отрабатывает моментально, за несколько секунд. > Инкапсуляция объектов - зло. У объектов не должно быть интерфейсов, они просто контейнеры для данных...Что? Мой редьюсер глобального стейта это God Pattern? А если каждый редьюсер будет знать как обрабатывать свою часть стейта? Нет, это совсем не похоже на инкапсуляцию..>Да вообще все иммутабельное можно заменить на функции. Да что ты пристал со своим быстродействием, будем считать каждый раз. Я скозал!Теоретические кукаретики ITT
>>1170875Лол, ну вот типичный представитель "ни в чем не шарю, но прочитал еще и русскую википедию и теперь сру на джвачах". Иди лабу делай, няш.>>1170890Сам себе придумал какой-то не имеющий отношения к реальности бред, сам над ним посмеялся. Ты бы лучше разобрался в сабже вместо того, чтобы фантазировать, а то у тебя какая-то страшная каша в голове.
>>1170872>Нахуя так жить, пацаны?Хуйня. Гораздо страшнее, что я в свои 30 каждый вечер читаю эти срачи. Уже хуй знает сколько лет. Все одно и то же. Все одни и те же. А у меня все горит и горит.
>>1170880>диллему.Дилемму.>функцию записи переместить в сам StreamableVideoЗачем?
>>1170914>я в свои 30 каждый вечер читаю эти срачижизненно ;)
>>1170915>Зачем? Егорка советует так делать. смысл этого VideoWriter только в том, чтобы хранить алгоритм. Получается, что данные отделены от кода. Мне это не нравится.Короче или получается так, или можно наоборот в StreamableVideo инжектить strategy с методами записи. В любом случае получается несколько классов. А с наследованием получается проще.
>>1170914Удвою оратора выше. И тебя, соответственно, тоже удвою. Ну, правда срачами я бы это не назвал - тут все-таки скорее жанр "просвещение современной молодежи" впрочем, не очень успешное, как мы можем видеть.
>>1170948Тебе самому бы не помешало подучиться, дед, раз ты не понимаешь разницы между захватом переменных в лямбдах и объектами в ООП.
>>1170960Понимаю. Тебе самому бы не помешало подучиться, дед, раз ты не понимаешь эквивалентности между захватом переменных в лямбдах и объектами в ООП.
>>1170967Да забей, объяснять что-то слесарю с синдромом Даннига-Крюгера, это та же история, что и со свиньями с апельсинами.
>>1170967Вот это >>1170960 писал тебе не я, которому 30. А какой-то другой хуй. И да, он не прав.
>>1170984>думаешь что у кого-то синдром Даннига-Крюгера, >а на самом деле он у тебя
>>1171039Ну вот распишу я тебе, как кодируются объекты через замыкание, или дам ссылку, где это расписывается - что тогда?
>>1171042Они не настолько умны, чтобы понять, что и объекты, и замыкания - это структуры данных + исполняемый код, в который при вызове передается указатель на эти структуры. Их абстрактное мышление не настолько гибко, чтобы отойти от доменных областей. Ты вообще с ним сейчас говоришь о замыкании\объектах, например, а он подразумевает их конкретные реализациии в конкретных языках\платформах, и даже не допускает мысли, что в одном месте указатели на поля\методы\объекта или переменные в замыкании будут абсолютными, в другом месте они будут относительными. Эти люди никогда не погружали на уровень проектировки языков или хотя бы реализации компиляторов уже существующих, даже самых простейших. Весь их мир ограничен теми представлениями о чем-либо, которые они усвоили и теперь примеряют везде и всюду. И по факту они не понимают разниц ни меду концепциями, ни между реализациями. Это все равно, что говорить с кем-то о Боге. прежде чем начинать такие споры, стоит формализовать ваши понимания Бога и убедиться, что они одинаковы и выполняют\реализуют одни и те же вещи, а не какие-то абстрактные выраженные в вашей голове.
>>1171042какая разница как они кодируются. в большинстве языков лямбды это просто синтаксический сахар для обычных объектов.дело в семантике, в области применения.
Пошли маневры >>1171052.
>>1170872>structural sharing>Fat node>Fat node method is to record all changes made to node fields in the nodes themselves, without erasing old values of the fieldsТы уже обосрался>Path copying>Path copy is to make a copy of all nodes on the path which contains the node we are about to insert or delete. Then we must cascade the change back through the data structure: all nodes that pointed to the old node must be modified to point to the new node instead. These modifications cause more cascading changes, and so on, until we reach to the root. We maintain an array of roots indexed by timestamp. The data structure pointed to by time t’s root is exactly time t’s data structure.Ты опять обосрался.>A modification>Modifying a node works like this. (We assume that each modification touches one pointer or similar field.) If the node’s modification box is empty, then we fill it with the modification. Otherwise, the modification box is full. We make a copy of the node, but using only the latest values.(That is, we overwrite one of the node’s fields with the value that was stored in the modification box.) Then we perform the modification directly on the new node, without using the modification box. (We overwrite one of the new node’s fields, and its modification box stays empty.) Finally, we cascade this change to the node’s parent, just like path copying. (This may involve filling the parent’s modification box, or making a copy of the parent recursively. If the node has no parent—it’s the root—we add the new root to a sorted array of roots.)Ты снова обосрался.Натурально, ссылка, про которую ты второй день визжишь, описывает ебические оверхеды по памяти и нигде там не написано, что ты десять объектов сможешь хранить в одном. Пиздец у тебя каша в голове.
>>1132025Нормальный и политика - это уже взаимоисключения.
Спршу здесь.Объясните тупому, что такое ооп в правильном понимании? Это как в Java/c++ или смолтолк (ерлангг...)?
>>1171079В википедии же достаточно подробно и ясно все написано. Нет никакого правильного понимания, есть несколько различных подходов и их комбинаций. Вот скажи, как правильно, демократия или монархия? И почему?
>>1171092>Вот скажи, как правильно, демократия или монархия? И почему?Монархия правильнее, демократия - это загнивание и бездуховность.
>>1171094Ну вот и поговорили
>>1171100Ох, сникерс. Я зашёл в супермаркет. Там толпа ребят с местной школы разбирали ящики сникерса. Я решил посмотреть причину такого наплыва и оказалось, что снизили цену до 10 рублей за штуку для почти вышедших из срока годности сникерсов. Я эту историю не добил, у неё нет заключения и поучительной концовки.
>>1171103Эх жаль что я картинку с гачимучи тебе не поставил в ответ, наверняка тоже ахуительную историю получил бы.
>>1171056А все объекты кодируются в байтах.Объект и байт это одно и то же!Ты или пытаешься так уныло троллить, или ты и правда очень тупой.
>>1171166Ты прав бро, возвращаемся к теме топика.http://www.yegor256.com/2017/07/11/how-to-redesign-equals.html
>>1171166У тебя еще и проблема в понимании различии множества и элемента множества.
>>1171094В таком случае правильнее радикальный ислам, а ты неверный, и тебе стоит перерезать горло.
>>1171166Блядь, ну и дебил же. Третий вариант, что слово "кодировка"/"encoding" перегружено по значениям, и что ты просто не понял, что написано, тебе не приходил в голову? Ты бы сначала загуглил бы тему, на ключевые слова, но нет, ты предпочтешь бегать ИТТ с засранными подштанниками. Продолжай. Вначале мне было больно от твоего невежства и обскурантизма, теперь это даже забавно.
>>1170947>данные отделены от кода. Мне это не нравится
>>1170984>>1170989:3>>1171045Блядь, анон, а ты на этом явно собаку съел. Постом ниже ровно то, что ты описывал, лол. Апплодирую стоя.>>1171052>дело в семантикеТак тебе и говорят о том, что как раз семантика у них одинаковая, дурилка ты мелкобуквенная.
>>1171067На третьи сутки он таки смог прочитать статью, правда ничего не понял, лол.>десять объектов сможешь хранить в одном>Пиздец у тебя каша в голове. Посоны, нувыпонели. Проигрываю в голос.
>>1171079По сути вопроса тебе уже ответили; добавлю, что одна из основных проблем ооп как раз в том, что никто не знает, что же на самом деле это "ооп" значит.>>1171169>2018>ооп-чудики все еще не знают проверить два объекта на равенствоЭх.
>>1171252>Так ты, например, можешь иметь 10 копий всего игрового мира с разными хп у твоего алиена, но занимать места в памяти все десять штук будут столько же, сколько одна штука.Ну это уже пиздец толстота. Ты сам-то хоть раз попробовал бы натянуть свою охуительную идею натянуть на один из предложенных на твой же педивикии вариантов. Чисто в образовательных целях.
>>1171259>свою охуительную идею>своюПроиграл. Ты с какой деревни, чебурек?
>>1170880ДЕКОРАТОР САМ СЕБЯ НЕ ЗАДЕКОРИРУЕТЕгорка называет это декораторами, но по сути это не что иное как деревья выражения (expression tree), которые эвалуируются и возвращают какой-то результат.В разработке игор я тоже часто использую этот шаблон в виде behavior tree.
>>1171307Что это за извращения с тернарными операторами? А ну унеси обратно.
>>1171312Ты что, не слышал что if - это плохо?Алсо, По другому в конструкторе нельзя. Приходится добавлять пустые узлы ради ЭЛЕГАНТНОСТИ.
>>1171315>Алсо, По другому в конструкторе нельзя.Разве в джяве такая шняга не :> condition && (result)возвращает нужный ресюльт?
>>1171318А не, у него другое, я в глаза продолбился с этими переносами. Все равно, выглядит как говно.
>>1171305С той, что твоему селу за щеку даёт, а что? Пруфы-то будут как ты в одном объекте десять таких умещаешь, или так и будешь дальше позориться?
>>1171326Хорошо, давай я объясню тебе так, чтобы даже даун из пту понял, но только если ты скажешь "пожалуйста" :3
>>1171332Мне кажется тебе залупы за воротник хватит.
>>1171338Кхм. Господа, призываю вас поднять уровень дискусси на более приемлемый уровень.
>>1171342Так дискуссии-то нету. Студентик уже третьи сутки тут бьется и просит, чтоб ему объяснили, как работают persistent data structures (и, на секундочку, сжатие информации в целом как явление). В ответ на резонные предложения сформулировать, с чем именно у него трудности, сыплет гринтекстом и мамкоебством. Ну, это издержки анонимности, что тут еще сказать - всех дураков ведь все равно не перебанишь. Один вон тут не может понять, чем замыкания отличаются от объектов ничем, ему всем тредом объясняют. Другой не верит в эквивалентность лямбда- и SK-исчислений - как так без аппликаций-то, нипанятна! Третий вот не может даже вообразить, как 100 кб повторяющихся данных ужать в 10 кб. Было бы очень смешно, если бы это все был один и тот же вытекающий из нуботреда шизик, лол. Щито тут поделать, сайт все-таки развлекательный, а не образовательный - матан-капчи не завезли-с.
>>1171346Это не тут доказываешь что байты, лямбды и объекты это одно и то же?
>>1171351Про байты не слышал, а очевидное для любого, кто изучал CS утверждение об эквивалентности лямбд и объектов тут озвучили минимум три разных анона, если у меня детектор не барахлит, и я их, разумеется, поддерживаю. Утверждать обратное - это примерно как с пеной у рта доказывать, что Земля плоская. Ну, то есть смешно конечно, но в то же время немного грустно.
>>1171353посоны, я мимо проходил, киньте прочитать на тему> утверждение об эквивалентности лямбд и объектов
>>1171346>бьется и просит, чтоб ему объяснили, как работают persistent data structures (и, на секундочку, сжатие информации в целом как явление)Лол. Ты делаешь какие-то убогие заявления про хранение десяти объектов, которые места занимают как один, а потом удивляешься, что тебе ссут на лицо.Ты сам-то свои охуительные истории читал? Хранить предыдущие версии объекта, архивировать их, а потом ещё в рантайме интерполировать по ним! Нахуй скорость, нахуй память, а потом ещё и сборщик мусора окончательно добьёт твою гениальную систему.
>>1171371Вот тебе по рабоче-крестьянски:class Multiplier { int factor = 2; int op(int i) {return factor x i} }Доходчиво? Сам класс - набор полей и методов по сути отображение множества имен в значения, и анонимные функции, та же функция, на примере объявленного класса:Multiplier :: Names -> Int | Int -> IntС переходом к объектам немного сложнее, т/к требуется вводить Y-combinator (тоже функция) для конструирования значений. Если это сделать, получим:new Multiplier().op(2) ~ Y[Multiplier]('op')(2)Подробнее здесь http://www.jot.fm/issues/issue_2002_09/column4.pdf
>>1171436инкапсуляция уровня pr
>>1171444Инкапсулировал тебе за щечки, няша.
Какого хуя ещё не было?https://jug.ru/2018/04/bugayenko/
>>1171371SICP@HTDPА вообще, стыдно классику не знать: https://ru-lambda.livejournal.com/27669.htmlВы небось и про xkcd не слышали, кек.
>>1171374>Хранить предыдущие версии объекта, архивировать их, а потом ещё в рантайме интерполировать по ним!У пхп-макаки КУЛЬТУРНЫЙ ШОК, спешите видеть. Проигрываю в голос.
>>1171436По рабоче-крестьянски, кстати, можно давать ссылку сюда: https://doc.rust-lang.org/book/first-edition/closures.html#closure-implementation - но тут, как ты понимаешь, это не особо поможет, кек.
>>1171458>>1171463не хочется разрушать твой дивный манямир, но кто-то должен это сделать. предметы характеризуются не по материалу, из которого сделаны, а по признакам.табуретка и бумага сделаны из одного материала, но у них разные признаки.есть ли у лямбд признаки объектов, например наследование, инкапсуляция и полиморфизм? можно ли создать новый объект из лямбды? есть ли у лямбды члены?
>>1171472Не спутал ли ты объекты с классами?
>>1171472>можно ли создать новый объект из лямбды?Да>есть ли у лямбд признаки объектов, например наследование, инкапсуляция и полиморфизм? Да, читай книжечку A Theory of Objects - там всё объясняется.Мимо этот >>171436
>>1171490зачем мне твоя высосанная из жопы "теория" про какие-то абстрактные объекты в вакууме, дурачок?наследуй мне лямбду в java.
сам факт того, что есть категории объектов и лямбд говорит уже о том, что у этих предметов разные признаки. иначе бы они назывались одной категорией.семантически, синтаксически, функционально это 2 совершенно разные вещи.
>>1171507сначала ты продемонстрируешь наследование одного объекта от другого в своей жаве. может потом поймешь, что ты путаешь инстансы с классами.
>>1171460>пхп-макакиЧини детектор, маня.
>>1171460>PHP>Рантайм
>>1171528Этот ебабо >>1171507 не может лямбду от замыкания отличить, куда уж там.
>>1171507cat Main.java public class Main {@FunctionalInterfacepublic interface Sosi { void sosi();}@FunctionalInterfacepublic interface SosiHui extends Sosi { default void hui() { System.out.println("bydlo"); }}public static void main(String ... args) {}}
>>1171536Еще какой, с гарбаж коллехтуром, все дела.
>>1171596Это ты класс отнаследовал, а тебя попросили объект.Г-ди, сколько жира и сектантской незамутненности в этих тредах, обожаю их. Егор - настоящий санитар леса.
>>1171616Зачем гарбаж коллектор скрипту который выполняется за секунду и уничтожается весь сразу?
>>1171596А причем тут лямбды? Лямбды - это функции. А у тебя классы.Ты знаешь что такое функция?
>>1171591Потому что замыкание - это признак лямбд. А лямбды - это анонимные функции.
>>1171626>замыкание - это признак лямбдНичоси!
Бля, борщееды ебаные, даже в рабочее время срутся.
>>1171641Да я даже ночью в кровати срусь
>>1171617 >>1171624 Вот же подрыв Митрофанушек.>ты класс отнаследовал, а тебя попросили объект.Вот тут подробнее, про наследование объектов.>сколько жира и сектантской незамутненности Это даннинг-крюгер говорит в тебе. Алсо, в чем выражается секстанство?>Лямбды - это функции. А у тебя классы.> эта дверь - прилагательная. а та дверь - существительнаяКакие классы, дебил? Интерфейсы с аннотацией @FunctionalInterface, про семантику которых сам можешь почитать Sosi ololo() { SosiHui sosi = () -> { System.out.println("ebat' debil"); }; Sosi dada = sosi::hui; return System.currentTimeMillis() % 2 == 0 ? sosi::hui : sosi; } public static void main(String ... args) { Main ololo = new Main(); ololo.ololo().sosi(); }
>>1171508>семантически, синтаксически, функционально вау-вау, три умных слова, в значении которых едва ли разбираешься. Потише братишка.
>>1171472>>1171508Проигрываю в голос с мелкобуквенного с конкретным мышлением.>>1171535Починил, макака :3>>1171536>>1171618Цирк-шапито, лол. Ни разу не видел столько идиотов в одном месте.>>1171617Ну, строго говоря, в ООП классы - это объекты, мимокапитан.>>1171624>Лямбды - это функции. А у тебя классы.И еще раз в голосину.
>>1171752ты какой-то тупой. ты не разбираешься в элементарной семантике языка.тебе говорят, что функции - это функции, а объекты - это объекты. у них разные признаки.а ты начинаешь нести какую-то чушь про двери. нет, нет, пажаждите, они хранятся в памяти как сигналы электричества, а уголь на котором работает электростанция производит лямбды! вот оно как!
>>1171759короче, тут просто речь о разных уровнях абстракции. лямбы и объекты это высшие понятия, конкретно на языке программирования лямбы делаются как сгенерированные классы и объекты. в еще более низкой абстракции сами объекты это структуры данных и функции. еще ниже это ассемблерный код и т.д.
http://www.yegor256.com/2018/04/10/learning-by-refactoring.html
>>1171759>а ты начинаешь нести какую-то чушь про двериЧего блядь?
>>1171759Тебе отвечают несколько человек, и почему-то ты игноришь эти посты>>1171436>>1171490 >>1171596>>1171727или что-то невнятное кукарекаешь в ответ. Тебе (или твоему собрату по несчастью) уже давали ссылки, где на нужном уровне строгости доказывается эквивалентность (при известных допущениях).Нет, продолжаются кривляния и споры на уровне персонажа Чеховского письма.
Посоны, а давайте запилим отдельный designated тред для унижения птушников и прочих оопущенцев?Ну, то есть понятно, что исторически вся доска как бы примерно для этого и предназанчалась, но я предлагаю прям отдельный тред, у которого в шапке прописать, что за незнание базовых вещей из CS и воинственное невежество можно словить репорт за щитпостинг, ну и попросить мочу чистить говно. Как вам идея, а?Только надо будет этих самых птушников туда как-то заманивать. На что они обычно слетаются? Может vue.js как-то в шапку треда впендюрить? Типа, "клуб по вкатыванию в айти через изучение жс на хардкор уровне", что-то такое.
>>1171813ты даун тупорылый. как-же ты заебал своей тупостью. я тебе уже сказал что это просто полезные абстракции. все можно свести к сложению и умножению.нет, манька продолжает что-то верещать про идентичность объектов и функций с ДОПУЩЕНИЯМИ.с допущениями я ебал твою мамку.
>>1171821С ДОПУЩЕНИЯМИ - да, специально оставил, когда редактировал, загадал что подорвешься на этом. Содержательно же ты не способен ответить.cat Main.java && javac Main.java && java Mainpublic class Main { interface FooBarable {} static class Foo implements FooBarable {} static class Bar extends Foo {} @FunctionalInterface interface Makeable { FooBarable apply(); } @FunctionalInterface interface FooMakeable extends Makeable { Foo apply(); } @FunctionalInterface interface BarMakeable extends Makeable { Bar apply(); } public static void main(String... args) { FooMakeable fooMaker = () -> new Foo(); BarMakeable barMaker = () -> new Bar(); Makeable maker = fooMaker; System.out.println(maker.apply()); // ау, таков синтаксис вызова maker = barMaker; System.out.println(maker.apply()); }}Main$Foo@27082746Main$Bar@66133adc
>>1171830опять ты какую-то нерелейтед чушь пишешь.язык программирования - это в первую очередь язык, знаковая система. в этой знаковой системе есть разные категории, вроде класса, полей класса, объектов, методов, анонимных методов и т.д.есть определенная грамматика, которая диктует структуру этого языка. например, поля класса могут объявляться внутри класса, лямбды могут объявляться внутри методов класса и т.д.нельзя просто так взять и заменить объекты лямбдами, потому что какая-то манька придумала свои определения объектов и решила что это одно и то же.
Чёрч>какая-то манькаТьюринг>какая-то манькаДана Скотт>какая-то манькаЛука Карделли>какая-то манькаУ Карделли отдельная глава, посвященная формальному выражению сигма-исчисление через лямбда-исчисление и наоборот, а этот >>1171840 продолжает что-то бубнить про грамматики, категории и знаковые системы.
>>1171840Но ведь неважно какая знаковая система, важно какие блямбды лежат в её основе!
>>1171871Принимай дозор, анончик. Мой дозор окончен, у меня еще дела есть.
>>1171854Проиграл, спасибо.
>>1171840>в этой знаковой системе есть разные категории>категорииЗначение знаешь?
>>1171508Подумай на досуге, так ли сильно отличаются на самом деле своими ПРИЗНАКАМИ - аттрибут от свойства, процедура от функции, процесс от потока, бургер от бутерброда, лимонад от сиропа, ты от дегрода.
>>1171761> лямбы и объекты это высшие понятия,Что такое «высшие понятия»? Какие еще бывают понятия?
>>1171950ты с кем лямбду попутал?
>>1171960О чём ты? Я нипанимать, что стоит за «высшими понятиями»; если под этим термином подразумевается высшие уровни абстракции, то объясни: почему ставишь лямбда-счисление в один уровень с реализацией (объектами)? Маняматика ниже чем байтослесарня.
>>1171899>Категория (от др.-греч. κατηγορία — «высказывание, обвинение, признак») — предельно общее понятие, выражающее наиболее существенные отношения действительности[1]. Изучение категорий заключается в определении наиболее фундаментальных и широких классов сущностей.
>>1171752>Цирк-шапито, лол. Ни разу не видел столько идиотов в одном месте.Ну в общем-то по другому ты ответить и не мог, я просто констатировал что ты ебантяй который не знает предметную область, а просто пиздит что-то лишь бы как-бы.
>>1171854>выражению сигма-исчисление через лямбда-исчисление и наоборотты путаешь вещи. выразить что-то через что-то, это как выразить код на java переписав его на си.ну да, код с лямбдами можно выразить как код без лямбд. это и без тебя всем понятно, потому что лямбды это просто сахар для объектов.
>>1171819>Посоны, а давайте запилим отдельный designated тред для унижения птушников и прочих оопущенцев?Этот тред уже есть. Только в нем пока что унижаются дурачки, смешивающие понятия из математики и языков программирования.
>>1172282>лямбды это просто сахар для объектовНичоси!
>>1172054Кретин малолетний, я вообще мимопроходил. Какой же ты выродок, лол.
>>1172283Анонимная функция - это понятие из математики, а не программирования, я тебя правильно понял?
>>1172284Ты находишься в /pr/. В программировании, и в частности java, лямбды это сахар для объектов.Других определений лямбд я не знаю и честно говоря мне это не интересно.
>>1172283ЯП и есть математика. Если конечно это не наколенные поделки уровня ЕО, в которых выражаются томления авторской души и эмпирические тыкания в существо вещей, подобно тому как глупенькие котята тыкаются в поисках мамкиной сиськи.
>>1172282Речь о формальном математическом доказательстве, а не о размахивании руками и гуманитарном пиздабольстве. Вам в ПТУ рассказывали о способе доказательства эквивалентности множеств? Вот что - то в этом роде.
>>1172394>Других определений лямбд я не знаю
>>1172010
А что если всё ООП - это то же процедурное программирование, в которым некоторые функции разделены на классы, у которых есть shared data?
>>1171899Саймон уходи. Заодно Киселёва с собой прихвати.
>>1172523Ты придумал модули; оо-парадигма использует эти идеи, добавляя инверсию контрол флоу, вот и всё.
>>1172523Ты что, никогда не писал объектных систем на pure c?
>>1172530Oleg - bog!
>>1172409>>1172410Настало время охуительных историй.Программирование - это инженеринг. Программы перемещают байты в памяти. Больше они ничего не умеют делать. Все остальное - это полезные абстракции выработанные эмпирическим путем, чтобы упростить программирование.
>>1172550>Программы перемещают байты в памяти. Больше они ничего не умеют делать.Ловите байтоеба!>полезные абстракции выработанные эмпирическим путем>эмпирическим путемУточнишь, что именно было выработано эмпирическим путем? Может машина тьюринга, которая является (в известном приближении) моделью всех современных эвм? Или сборщик мусора? Может системы типов эмпирическим путем были выработаны? Или асинхронное программирование? Или концепция стрима? Правда, очень интересно, расскажи.
>>1172555Все это было выработано эмпирическим путем.
>>1172550И как ты перешел от обсуждения от ЯП и их связью с формальными системами/математикой к охуительным историям про программирование - это инжиниринг? С этим никто не спорит, но ты все же попытайся держать суть обсуждаемого вопроса, не подменяя его.
>>1172555Для тебя, может быть, откровение, но довольно долго наука двигалась именно эмпирически, потому как математики тихо себе дрочили в уголочке и вообще на реальный мир им было довольно похуй. Это потом уже начали происходить откровения, когда внезапно оказалось, что у физиков и математиков всё сходится, да и моделирование нужно, потому что экспериментировать ДОРАХА.
>>1172559Твоя математика берет уже готовое придуманное и бессмысленно пытается это рационализировать задним числом. Обычная бесполезная игра эти доказательства и теории.
>>1172549>включает ~50 расширений Хаскеля для появления хоть какой-то вменяемой системы типов и уменьшения поноса тайпклассов вместо того, чтобы использовать нормальный язык типа Idris
>>1172555https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE_%D0%B1%D0%B5%D1%81%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D0%B5%D0%B7%D1%8C%D1%8F%D0%BD%D0%B0%D1%85Всё это, с помощью миллиона двачеров с комплюхтэрами.
>>1172565Как там 2020 (двадцать-двадцать)? Началось шевеление?
>>1172560С тобой этого никто не обсуждал.Я писал о лямбдах как о термине программирования.Это зачем-то пришел в /pr/ с охуительными историями про математику.
>>1172539Вменяемый анон, не топчи заповедник. мимо автор нескольких тредов по ООП, которые доставляли не хуже егоротредов
>>1172581>>1172523 - кунНеужели правда тонко вышло?
>>1172573Я вот чего не пойму, откуда ты такой нарисовался? Ты та мелкобуква, что добралась с мобильника до компьютера, или мимо другой?Для гуманитария ты безграмотен - начиная от орфографии>инженерингзаканчивая способностью вести содержательный разговор по теме, не путаясь в понятияхДля технаря у тебя какие - то странные представления об истории информационных технологий.
>>1172597Я никакой тонкоты, кроме постов полутора Семёнов не вижу.мимо не семен
>>1172581….>>1172597> Неужели правда тонко вышло?Для повара в крошке-картошке вышло и правда тонко.
>>1172597Я заподозрил в тебе семена, но в целом вброс норм.
>>1172559Интересный у тебя манямирок, пустишь меня в него? :3>>1172561По теме треда есть чо?
>>1131879 (OP)Спасибо за сборник годных тем для срачей. Сегодня вбросил в рабочий чат опусы Егорыча и с наслаждением наблюдал, как техлид-джавист двадцать минут рвался о том, какой Егорыч лох и неудачник, а затем другие бекендеры чуть не устроили потасовку на тему того, как бороться с нулами.мимо-фронтендер
>>1172667На самом деле, это печально, в какой-нибудь кложа или руби тусовке идеи Егоры не прижигали бы столько анусов. То, что ваш джавист-техлид рвался не говорит ни в его пользу, ни в пользу аудитории Бугаенко вообще.
А лично я считаю, что все вы здесь пидорасы. Я все сказал.
>>1172673На самом деле это говорит только о необучаемости программистов, о хуевой школе программистов вообще.Потому что все пишет Егорка (кроме НУЖНО БОЛЬШЕ ДЕКОРАТОРОВ ДЕКОРАТОРЫ САМИ СЕБЯ НЕ ЗАДЕКОРИРУЮТ), вся эта критика была уже сказана всеми кому не лень еще в начале нулевых, причем намного более качественно.Примечательно что каждое поколение программистов наступает на одни и те-же грабли.
>>1172686Тащемта нет. Все советуют просто слать ООП в пизду, а он хочет его использовать. НО ПРАВИЛЬНО.
Нет чтоб код писать, накатали тут хуй пойми чего, хуесосы, блядь.
>>1172565Агдочка круче
>>1172791Согласен. Но ты тоже хуесос. мимо хуесос
>>1172677Очень интересно, продолжай.
Узнаю местного шизика https://habrahabr.ru/post/353408/
>>1172841Коль скоро он проводит аналогии с реальным миром, этот пунктик неверен:5. У элементов нет такого понятия как NULL. Вместо этого должен быть или 0, пустая строка, массив с одним элементом или пустая коллекция элементов.У элемента в состоянии квантовой распутанности NULL состояние.Выводы мне понравились, хотя в силу разных причин они не достижимы в реальном мире АХАХАХА.
>>1172854>У элемента в состоянии квантовой распутанности NULL состояние.Ловите шизика
>>1172900Очевидно, множество всех состояний переменной может выходить из пределов её домена. Я милостиво разрешаю называть такое состояние квантовой неопределенностью, или NULL-cостоянием.
>>1172904>ОчевидноСхуяли, наркоман?
>>1172667А ты неплох.
>>1172919Доказывается от противного. Не существует переменных домен которых по мощности равен конкретному значению переменной, т.к. это приводит к рекурсивной зависимости в определении типа.
>>1172925>рекурсивной зависимости в определении типа.И что в этом плохого?
>>1172926Тем что лежит вне пределов домена? У переменной à с доменом: {A1,A2,A3}, допустимое значение - одно из трех подмножеств своего домена, т.е: {A1}, {A2}, {A3}, но не {A1, A2, A3}.В Null состоянии переменная à имеет неопределенное состояние, после квантового запутывания любое из трех, какое точно - сказать невозможно.
>>1172933>одно из трех подмножеств своего домена, т.е: {A1}, {A2}, {A3}Наркоман?
>>1172944Пчм? Элемент подмножества - множество из одного элемента.
>>1172946https://en.wikipedia.org/wiki/Subset
>>1172954> The set A = {1, 2} is a proper subset of B = {1, 2, 3}, thus both expressions A ⊆ B and A ⊊ B are true.A1 = {1}, à={1,2,3} A1 ⊆ à
>>1172958>Элемент подмножества - множество из одного элемента.>одно из трех подмножеств Блядь, ты реально конченый. Не отвечай мне больше.
>>1172965Хорошо не буду.
>>1131879 (OP)В чем суть? Треда я так и не понял, предыдущий утонул.Раскажите в паре слов.
>>1172974Обсуждение поехавшего Егорки и наброс говна на вентилятор.
>>1172933Квантовые/хуянтовые. Не туда тебя понесло.Если у меня функция принимает число (или любой другой тип), то я хочу и ожидаю видеть там число, а не особое состояние неопределенности. Ты же сейчас пытаешься подвести уже существующее решение (null pointer) под какое-то объяснение/теорию. А ответ прост: сделали хуйню и Хоар уже покаялся в содеяном. И решение уже давно найдено в виде Maybe/Optional/Nullable. Да, эти решения внедряются не так быстро как хотелось бы. Да, нам придется жить с null pointer из-за легаси. Ну что поделать? Переживем!
>>1172996> Не туда тебя понесло.Ну простите, вам не угодишь; слишком адекватный -- плохо, не слишком адекватный -- тоже не хорошо. Ковырять ложечкой говно, строя красивые теории о природе этого говна - способ отвлечься от депрессивной природы говна; называй это ментальной гимнастикой.По сути твоей мессаги с уточнением, что говна в будущем будет только больше согласен, переживем.
>>1172996и в чем разница между null и optional?
>>1172933Наркоман, слушай сюда.>переменной à с доменом: {A1,A2,A3}>с доменом: {A1,A2,A3}Знаешь что это значит?Отнюдь не > одно из трех подмножеств своего доменаЭто значит, допустимое значение А1, А2 или А3 - т/е в точности {A1, A2, A3} т/е ДОМЕН, внезапно. По определению ВНЕЗАПНО. В остальном, слушать твою шизофазию не так интересно, как смотреть шебмку про фиолетовую математику "сорока семи". Реквестирую её ИТТ, кстати.
>>1173043Пиздуй в школу, гимнаст ментальный.A1 = {1}, à={{1},{2},{3}} A1 ⊆ à
>>1173127Поздравляю, сегодня ты узнал много нового, а конкретно что такое домен, а так же то, что любой объект в теории множеств считается как множество. Хочу, тебе, мой друг, напомнить, ты просил:> Не отвечай мне больше.Поэтому, пожалуйста, не пиши мне больше ничего. Просто прими это в интернете по твоему мнению кто-то неправ, и этот кто-то -- ты! .Спасибо.
Чет проиграл еще раз с этого малолетнего долбоеба.мимо >>1172965-кун
Анон, так что ты думаешь про ООП?Это нормально создавать объекты-процедуры? Например, вместо приватного метода создается объект, в котором есть метод делающий это же.
>>1173223>так что ты думаешь про ООПговно
>>1173229Если ООП говно, то назови популярные не ООП гуи-библиотеки.
>>1173338Согласно определению Егорушки - абсолютно все проекты не ОПП и PURE EVIL кроме takes, zerocracy и прочего говна.
>>1173338Gtk
>>1173342Там имитировали ООП на C
>>1173345А здесь.
>>1131879 (OP)Ну что, тредик вы уже добиваете, так что сейчас перекачу, не буду уж ждать до 500.
>>1173401Перекат:https://2ch.hk/pr/res/1173405.html