Сохранен 200
https://2ch.hk/pr/res/1131879.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Светоча ООП тред II

 Аноним 04/02/18 Вск 06:46:11 #1 №1131879 
ebalo.jpeg
uselessobjects.jpeg
oop.jpeg
Бложик его, что мудростью полон:
http://www.yegor256.com/

GitHub его, с кодом что эталоном ООП является:
https://github.com/yegor256

Голос его, что жавомакак с хачкелистами дрожать заставляет:
https://youtu.be/GMrjuuczZkQред предыдущий:

Да будет его шизофрения струиться по ноосфере нашей,
поджигая гузки да споры праведные распространяя.
Аминь.

Тред предыдущий:
https://2ch.hk/pr/res/1084449.html
Аноним 04/02/18 Вск 07:18:44 #2 №1131881 
>>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
Аноним 04/02/18 Вск 11:29:11 #3 №1131936 
EJoxlkaa.jpg
>>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();
Аноним 04/02/18 Вск 11:34:56 #4 №1131938 
>>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 :)
Аноним 04/02/18 Вск 12:06:06 #5 №1131949 
https://www.youtube.com/watch?v=RdE-d_EhzmA
https://www.youtube.com/watch?v=DOyNfmqwR98

Еще светочей ООП вам принес.
Пухлик это автор книжки object thinking.
Аноним 04/02/18 Вск 12:38:47 #6 №1131964 
>>1131881
Ты еще в его русскую версию бложика загляни
http://ru.yegor256.com/
Аноним 04/02/18 Вск 12:47:43 #7 №1131974 
>>1131964
>Егор Бугаенко о политике
лучше не надо
Аноним 04/02/18 Вск 13:58:47 #8 №1132025 
>>1131974
Нормальный же чел, траллет пидоранов и какелов
sageАноним 04/02/18 Вск 19:43:45 #9 №1132242 
> Software development and coding are two different things.
И сразу сажи этому претенциозному говнарю
Аноним 05/02/18 Пнд 11:38:44 #10 №1132719 
>>1132242
писарь порвалася. иди пиши программы разработанные программистами.
Аноним 05/02/18 Пнд 12:10:06 #11 №1132736 
index (2).png
Аннотации плохо, но чем можно заменить аннотации?
Например, аннотации используются для сериализации. Не писать же все время вручную сериализацию для каждого класса
Аноним 05/02/18 Пнд 12:41:12 #12 №1132757 
>>1132736
Аннотации для простой логики (сериализация/десериализация, простая кодогенерация) - норм, а остальное можно заменить с помощью фп.
Аноним 05/02/18 Пнд 13:42:47 #13 №1132800 
>>1132736
Аннотации - костыль для языков, которые не могут в нормальное метапрограммирование. Соответственно, если у тебя язык by design говнишко, то ничем особо их не заменишь - костыли же не от балды костылят, а от практической нужды.
Аноним 05/02/18 Пнд 14:55:14 #14 №1132873 
>>1132757
Как бы ты сделал сериализацию без аннотаций?
Как в C++ делают без аннотаций?
Аноним 05/02/18 Пнд 15:05:57 #15 №1132878 
>>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;
...
}
Аноним 05/02/18 Пнд 15:28:38 #16 №1132891 
>>1132878
>без аннотаций
Но UPROPERTY это аннотации которые парсятся собственным движком
Аноним 05/02/18 Пнд 16:02:12 #17 №1132910 
Главная идея ООП (принимаемая в том числе долбоебом с ОП пика) в том чтобы расписать различные виды объектов и чтобы эти объекты создавали другие объекты и как бы плавали в свободном супе объектов или вели себя как клетки живого организма. Потом мы высекаем искру жизни командой старт и все это добро начинает делать то что мы от него хотим. Короче ЭТА ИДЕЯ В КОРНЕ НЕ ВЕРНА. Подход более-менее работает в природе если мы хотим подождать миллиарды лет для эволюции и миллиарды миллиардов вариаций проб и ошибок. Но вообще то при разработке мы хотим заниматься intelligent design'ом и для этого нам нужны соответствующие инструменты для построения и интроспекции, а подход ООП к ним совсем не относится.
Аноним 05/02/18 Пнд 18:05:22 #18 №1133004 
>>1132910
Предлагаю все-таки разделять Ъ-ООП (тот, который про асинхронность, динамичность и примитивы) и кресты-жаба-хуй-пизда-в-говне-ооп, который про индусов, слесарей и гуманитарщину. Второй корректнее называть "ГОП" (govno-oriented programming).
Аноним 05/02/18 Пнд 19:05:38 #19 №1133043 
>>1133004
Это относится к обоим. ГОП даже получше будет т.к. дает не-Ъ обходные пути чтобы создавать хоть что нибудь работоспособное.
Аноним 05/02/18 Пнд 21:00:14 #20 №1133125 
>>1133004
java хороший язык (синтаксис, стандартная библиотека конечно ужасная), но ей не хватает дисциплины.
почему так хорош фп - потому что в нем нет оператора присваивания, и этомпринуждает программистов к определенной дисциплине.
если убрать из java все о чем говорит бугаенко в своем видео, то java несомненно будет лучше
Аноним 05/02/18 Пнд 21:02:50 #21 №1133126 
>>1133125
то есть грубо говоря в фп меньше шансов написать плохой код, и эта дисциплина, сейфовость языка может быть кому-то приятна.
в java много лишнего, и люди без опыта просто теряются и совершают ошибки, а винят язык
Аноним 06/02/18 Втр 09:31:30 #22 №1133321 
>>1132873
Тык я написал же, что для сериализации - норм, для простой логики - норм (типа валидации), а когда их начинают пихать во что-то мало-мальски непростое, то начинается ад и Израиль.
Аноним 06/02/18 Втр 14:28:17 #23 №1133458 
По сути аннотации это инструменты кодогенерации. Взять тот-же protobuf, например. Он ничем не отличается от аннотаций, только нужно явно генерировать код. Аннотации просто удобнее, не нужно создавать отдельные файлы.
Аноним 10/02/18 Суб 17:08:16 #24 №1135998 
Хотелось бы обсудить read only vs immutable объекты.
Может нам на самом деле нужны read only, а не immutable объекты?
read only объект, это такой объект, интерфейс которого не содержит членов для изменения состояния объекта, но состояние этого объекта может быть безопасно изменено в другом месте, например, в объекте, который инапсулирует этот объект.
Что вы думаете по этому поводу?
Аноним 10/02/18 Суб 17:33:00 #25 №1136013 
>>1135998

Поздравляю, ты придумал паттерн delegation велосипед.
Аноним 10/02/18 Суб 18:17:09 #26 №1136044 
>>1136013
Нет, это другое. Это разделение чтение и записи данных на 2 объекта
sageАноним 10/02/18 Суб 19:37:00 #27 №1136108 
>>1135998
Ты не понимаешь, зачем нужна иммутабельность.
Аноним 10/02/18 Суб 19:56:13 #28 №1136118 
>>1136108
Зачем?
Аноним 10/02/18 Суб 19:58:08 #29 №1136120 
>>1136118
Занадом.
Аноним 10/02/18 Суб 20:14:25 #30 №1136128 
>>1136120
>пук
read only object и immutable имеют одни и те же достоинства
Аноним 10/02/18 Суб 22:03:53 #31 №1136229 
>>1136044
> Это разделение чтение и записи данных на 2 объекта

Так ты хочешь два раза делегировать и иметь три объекта на сущность? Гавно какое-то.
Аноним 10/02/18 Суб 22:31:04 #32 №1136251 
>>1136229
Так вообще-то много где делают.
Я просто хочу спросить зачем нужны immutable объекты, если можно использовать read only объекты.
В чем разница.
Аноним 10/02/18 Суб 22:33:15 #33 №1136255 
>>1136251
Занадом.
Аноним 10/02/18 Суб 23:41:36 #34 №1136307 
>>1136251

Разница такая же, как между кошкой и лампочкой. Зачем нужны лампочки, если есть кошки?
Аноним 10/02/18 Суб 23:45:36 #35 №1136310 
>>1136307
Вот именно.
Не нужны.
Аноним 11/02/18 Вск 00:08:58 #36 №1136325 
>>1136307
ну так объясни эту разницу, чтобы я понял. для этого я и спрашиваю
Аноним 11/02/18 Вск 00:42:52 #37 №1136346 
>>1135998
Иммутабельность нужна, чтобы со стейтом не ебаться. Ридонли обжекты - обжекты, которые потенциально могут изменяться другими обжектами, то есть потенциальная ебля со стейтом. Нахуя это надо, если можно просто не ебаться со стейтом?
Аноним 11/02/18 Вск 01:31:45 #38 №1136372 
Что творится в этом треде?
Что там с ООП то можно обсуждать? Берешь ебана делаешь абстрактный интерфейс класса, сам класс, класс по работе с интансами этого предыдущего класса называешь ' FooBarManager' или там 'FooBarMediator' и хуяришь там методы. Чего там еще мусолить то?
Код написанный хуевым программистом будет хуевым, хорошим программистом - хорошим, а все литие воды про какие то принципы ооп, какое то мусоленье практик - какой то идиотский поиск сверхценных идей.
Еще и иммутабельность тут обсуждают, кек. Ну пердолься с иммутабельностью если хочешь пока у тебя коллекции маленькие, а в работе с большими коллекциями какая к чертям иммутабельность, тимлид за проеб производительности к стенке поставит и в очко напинает.
Аноним 11/02/18 Вск 01:53:41 #39 №1136377 
>>1136346
Потому что в конечном счеты ты так или иначе ебешься со стейтом. Сколько бы ты не делал вид, что его у тебя нет.
Аноним 11/02/18 Вск 02:25:27 #40 №1136397 
>>1136377
Нет, ты просто работаешь с данными. Но для этого у тебя должна быть саунд концепция айдентити и стейта, чего ООП-языки лишены.
Аноним 11/02/18 Вск 02:26:19 #41 №1136398 
>>1136372
Иммутабельные коллекции позволяют удобно работать с бесконечными коллекциями, например. Все еще слишком маленькие?
Аноним 11/02/18 Вск 03:11:51 #42 №1136408 
>>1136398
но ведь не позволяют
охуенно ты придумал копировать бесконечную коллекцию при вставке элемента в ее конец, прям нобелевскую премию в программировании учередят и тебе дадут.
Аноним 11/02/18 Вск 06:10:05 #43 №1136419 
>>1136408
>копировать бесконечную коллекцию при вставке элемента в ее конец
Ты не очень умный, да?
Аноним 11/02/18 Вск 06:18:33 #44 №1136421 
>>1136419

Конкатенация иммутабельных стринг, так-то оче медленная операция. Догадаешься почему?
Аноним 11/02/18 Вск 07:26:16 #45 №1136430 
>>1136377
Доказывай.
Аноним 11/02/18 Вск 11:43:33 #46 №1136478 
>>1136421
>Догадаешься почему?
Потому что реализована обычными дебилами вроде тебя
Очевидно же.
Аноним 11/02/18 Вск 13:42:09 #47 №1136512 
>>1136478
>Очевидно же.

В какой-то другой реальности, если только.
Аноним 11/02/18 Вск 14:58:43 #48 №1136593 
>>1136421
>Догадаешься почему?
Я не догадался. Почему?
Аноним 11/02/18 Вск 15:02:35 #49 №1136599 
>>1136346
>чтобы со стейтом не ебаться.
Что плохого в самом по себе ебли со стейтом? Ты так говоришь, как будто стейт - это причина зла в программах.
Проблема сайдов эффектов не в том, что они есть. Проблема в семантически неявных сайд эффекты и неопределенном поведении.

Например, есть класс
Rabothik {
public int zarplata;
}

zarplata может быть изменена где угодно, хотя это не ожидается, потому что семантически зарплату должен выдавать работодатель. И из-за этого может сломаться какой-то код.
Аноним 11/02/18 Вск 15:04:02 #50 №1136601 
>>1136593
Потому что.
Аноним 11/02/18 Вск 15:07:53 #51 №1136605 
>>1136601
А ну теперь понятно.
Аноним 11/02/18 Вск 15:08:43 #52 №1136606 
>>1136599
Или например такой класс
class Gradusnik {
public int getTemperatura();
}

Температура может измениться, но ее никто не может изменить через интерфейс градусника. Этот код безопасный и ничем не отличается от иммутабельного класса.
Аноним 11/02/18 Вск 15:21:45 #53 №1136619 
>>1136593

https://en.wikipedia.org/wiki/String_(computer_science)#String_buffers



Аноним 11/02/18 Вск 15:44:55 #54 №1136642 
>>1136419
А ты?
Ты вообще знаешь что твоя иммутабельность означает?
Как раз таки и означает, что если иммутабельную коллекцию надо скопировать в другую иммутабельную коллекцию, если надо ее все таки изменить, потому что, сюрприз, коллекци надо изменять.
Аноним 11/02/18 Вск 16:10:48 #55 №1136660 
>>1136619
Не понял, что там с конкатенацией. Но если там так всё с этим плохо, может, так не делать?
Аноним 11/02/18 Вск 16:19:21 #56 №1136665 
>>1136660
Конечно, можно сделать new ConcatenatedString(string a, string b) в котором динамически копировать строки. И все.
Зачем выделять сразу целый буфер
Аноним 11/02/18 Вск 17:29:46 #57 №1136733 
поясните чо за тупой форс унылого говна?
Аноним 11/02/18 Вск 17:38:40 #58 №1136737 
>>1136733
Неосилятор порвался.
Это ООП дисциплина, если следовать которой, то можно улучшить качество кода на порядки.
Аноним 11/02/18 Вск 17:55:38 #59 №1136742 
>>1136660
> Не понял, что там с конкатенацией.

Ты какой-то туговатый; уместное использование мутабельных объектов дает выигрыш в производительности.

>Но если там так всё с этим плохо, может, так не делать?

Ну почему же не стоит? В других кейсах иммутабельные стринги быстрее мутабельных, а в третьих - на производительность строго похуй.
Аноним 11/02/18 Вск 18:07:12 #60 №1136754 
>>1136737
какие порядки, какая дисциплина, что ты несешь?
Хуевые программисты пишут хуевый код, хорошие - хороший, и никакие тру-ооп методики тут не спасут.
Аноним 11/02/18 Вск 18:13:54 #61 №1136760 
Samurai-and-katana.jpg
>>1136754
>хороший делает хорошо, а плохой плохо.
спасибо, но мы это и без тебя знаем.
чтобы стать хорошим и не быть плохим, нужно следовать определенному пути, дисциплине.
можно научиться самому, а можно следовать за учителем.
Аноним 11/02/18 Вск 18:27:47 #62 №1136767 
>>1136737
Как ооп дисциплина и всратый даун с первого оппика связаны?
Аноним 11/02/18 Вск 18:29:15 #63 №1136768 
>>1136421
https://en.wikipedia.org/wiki/Rope_(data_structure)
Аноним 11/02/18 Вск 18:33:02 #64 №1136770 
>>1136767
это наш учитель. он нас учит ООП дисциплине.
ты что-то имеешь против? может, у тебя есть аргументы против его учения? так поделись ими с нами.
Аноним 11/02/18 Вск 18:56:49 #65 №1136795 
>>1136770
ну вас нахуй сектанты ебаные.
Аноним 11/02/18 Вск 19:08:09 #66 №1136802 
>>1136795
у меня сначала была такая же защитная реакция.
советую тебе вдумчиво почитать его блог прежде чем бросатьс такими громкими заявлениями.
sageАноним 11/02/18 Вск 19:20:45 #67 №1136822 
>>1136802
йэгор залогинься, ты заебал себя форсить.
Аноним 11/02/18 Вск 19:25:01 #68 №1136828 
>>1136768

tl;dr что за говно ты принес, и какое отношение это имеет к иммутабельности?
Аноним 11/02/18 Вск 20:16:06 #69 №1136891 
>>1136828
Нет шансов вылечить вас. Вы уёбок от природы.
Аноним 11/02/18 Вск 20:29:07 #70 №1136907 
>>1136760
люди у которых плохо с логикой и плохо с ответственностью за свой код (а ля "и так сойдет")
зашкварят любую практику и самодисциплинироваться не смогут. Можно таких согнать в опенспейс и обложить надсмотрщиками, которые будут бить палками по пальцам за несоблюдение код стайла, это поможет да. Но вот хорошие программисты, которые любят свой код, в таких условиях не выдержат и уволятся, а в проекте останется куча выдрессированных мартых, которые все зафейлят, если столкнутся с хоть сколько-нибудь нестандартной проблемой.
Проблема как всегда в людях, а не мутабельностях или неправильно выбранном паттерне.
Аноним 11/02/18 Вск 20:50:41 #71 №1136923 
Обучите его кто-нибудь php, а то из-за проблем в ООП реализации джавы уже полную хуйню городит. В статье http://www.yegor256.com/2016/12/20/can-objects-be-friends.html Пишет, что наследование класса в java не дает доступа к private атрибутам. Он предлагает решить проблему допусыванием слова Trust ChildClass в декларацию родителя. Эта хуйня в пхп давено реализована получше. Есть три типа атрибутов класса
private - доступен только сущности
protected - доступен и сущности и потомкам
public - доступен всем.

Аноним 11/02/18 Вск 20:51:50 #72 №1136924 
>>1136923
Так ведь в джаве тоже есть протектед.
Аноним 11/02/18 Вск 20:53:35 #73 №1136925 
>>1136924
Я не знал, но он тоже не знает? Иначе, зачем огород городит?
Аноним 11/02/18 Вск 21:02:16 #74 №1136937 
>>1136925
>Я не знал
Ну тогда узнай, что все, что реализуется в PHP тащится из других языков. И сейчас PHP именно подгоняется под джаву. В PHP нет никаких концепций родных для него или выдуманных в нем.
Аноним 11/02/18 Вск 21:03:42 #75 №1136940 
>>1136937
Только ни один язык не добился успеха php в вебе. Недостаточно заимствовали?
Аноним 11/02/18 Вск 21:07:02 #76 №1136943 
>>1136924
>>1136925
>>1136937
>>1136940
Два дебила - это сила.
Аноним 11/02/18 Вск 21:08:57 #77 №1136949 
>>1136943
Ты опять срешь в чатике, маленький засранец?
Аноним 11/02/18 Вск 21:19:42 #78 №1136960 
>>1136949
>маленький
Ох уж эти проекции.
Аноним 11/02/18 Вск 21:27:23 #79 №1136965 
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]
 
Это даже не шизик - это просто криворукий тупой дегенерат.
Как и вы все, тащемто.
Аноним 11/02/18 Вск 21:46:03 #80 №1136985 
>>1136965
>author Sven Windisch ([email protected])
ты зачем на егорку наговариваешь, сукин сын
Аноним 11/02/18 Вск 21:49:18 #81 №1136987 
>>1136985
>Copyright (c) 2014-2018 Yegor Bugayenko
Просто иди нахуй, гнида безмозглая, и сдохни там в муках.
Аноним 11/02/18 Вск 22:00:06 #82 №1137001 
ну эта так чо там с ооп, как его пердолить? поясняйте давайте?
Аноним 11/02/18 Вск 22:18:09 #83 №1137015 
>>1137001
>поясняйте давайте?
Пояснил тебе за щеку, можешь не проверять.
Аноним 11/02/18 Вск 22:23:32 #84 №1137019 
>>1137001
Настоящее ООП есть только в smalltalk-like языках. Ни в какой джаве, плюсах, пхп никаким ООП и не пахнет.
Аноним 11/02/18 Вск 22:34:00 #85 №1137032 
>>1137015
Проверил и спюлнул синглтоном.
Аноним 11/02/18 Вск 22:38:59 #86 №1137041 
>>1137032
>спюлнул
В следующий раз глотай, а то накажу.
Аноним 11/02/18 Вск 22:42:01 #87 №1137052 
>>1137019
>в smalltalk-like
в эппловском objective-c что ли? и тут хипсторы дали пососать
Аноним 11/02/18 Вск 22:43:53 #88 №1137057 
>>1137041
>накажу
Заставишь меня делать TDD?
Аноним 11/02/18 Вск 22:46:50 #89 №1137065 
>>1137057
Именно, причем в хорошем темпе и разнообразными циклами :3
Аноним 11/02/18 Вск 22:49:39 #90 №1137067 
>>1137065
Но ведь мы даже не делали ЮМЛ диаграммы, и вообще у меня это в первый раз...
Аноним 11/02/18 Вск 22:53:38 #91 №1137075 
Мне кажется у Егоры шизофрения или психоз в рамках БАР.
Аноним 11/02/18 Вск 22:54:15 #92 №1137076 
>>1137052
в js например
Аноним 11/02/18 Вск 23:31:32 #93 №1137116 
>>1136987
>не отличает автора от авторских прав
Аноним 11/02/18 Вск 23:40:47 #94 №1137124 
>>1137116
И правда тупая гнида.
Алсо все коммиты этого немецкого дурачка - это мелкие правки, тот самый говнокод он форкнул целиком изначально - что очевидно если посмотреть историю.
То есть очевидно всем, кроме обычных наследственных дебилов вроде тебя.
Аноним 12/02/18 Пнд 00:15:03 #95 №1137148 
>>1137124
> говнокод
А что не так с кодом?
Аноним 12/02/18 Пнд 00:23:47 #96 №1137151 
>>1137148
>что не так
Лично у тебя не так количество хромосом.
У автора говнокода, возможно, тоже.
sageАноним 12/02/18 Пнд 01:05:41 #97 №1137187 
>>1136642
>Как раз таки и означает, что если иммутабельную коллекцию надо скопировать
Во дебил.
Аноним 12/02/18 Пнд 01:08:03 #98 №1137189 
>>1137151
Судя по тому, что ты не можешь ответить на простой вопрос, проблемы со здоровьем у тебя.
Аноним 12/02/18 Пнд 01:10:22 #99 №1137193 
>>1137189
>ответить на простой вопрос
Услуги репетитора исключительно платно, деньги вперед.
Аноним 12/02/18 Пнд 01:14:09 #100 №1137197 
>>1137193
Дурашка, я знаю на что ты тригернулся, и просто хочу вывести макнуть тебя мордочкой в твои же какашки.

return this.decode(input.getBytes(this.charset))
Аноним 12/02/18 Пнд 01:21:31 #101 №1137206 
>>1137197
>эти манявры умственно неполноценного говнокодера
Ясно.
Аноним 12/02/18 Пнд 01:29:48 #102 №1137216 
>>1137206
ОБОСРАЛСЯ
@
ДЕЛАЙ ВИД ЧТО НИЧЕГО НЕ ПРОИЗОШЛО

Ага, ага, шаблонный гринтекст и твёрдое "Ясно", безусловно, прикроют твой обосрамс
Аноним 12/02/18 Пнд 02:19:14 #103 №1137245 
>>1137216
Егорка-дурачок, ты?
Аноним 12/02/18 Пнд 09:25:42 #104 №1137315 
>>1136960 FS@UR Выходи на связь. Поздравлю с твоим прошедшим ДР.
Аноним 12/02/18 Пнд 11:28:39 #105 №1137368 
>>1137315
Ты чо тут однаглазники устроил, а похавший? Пиздуй ответы мэйл отвечать.
Аноним 12/02/18 Пнд 12:19:55 #106 №1137399 
>>1137368 Што?
Аноним 12/02/18 Пнд 13:10:17 #107 №1137415 
>>1131879 (OP)
Классный мужик. Просмотрела видео по ООП, много чётких вещей. Прочитала статьи о том, как рассчитается рейт, где-то конечно перетолстил, но где-то чётко. В общем, я потекла.
Аноним 12/02/18 Пнд 13:58:12 #108 №1137460 
>>1137415
>я потекла
конечно, МММ... КАКОЙ МУЩИНА, аммириканец пащти, гринку может сделать. Только на хуец прыгай и щитай на трактор присела.. тАКИХ ЕЩЕ ЩИНОЧКАМи РАЗБиРАЮТ А там уже на велфере за косарь, да обамакер в моями жить успешно
Аноним 12/02/18 Пнд 14:45:33 #109 №1137535 
>>1137315
Живой.
Удивительно.
Аноним 12/02/18 Пнд 15:00:59 #110 №1137548 
>>1137460
Думал, на двощях на такое уже не триггерятся. Каждый раз забавно.
Аноним 12/02/18 Пнд 15:27:39 #111 №1137568 
ОБОЖЕКАКОЙМУЖЧИНА
подписалась на его бложик на зло бомбящим омежкам
Аноним 12/02/18 Пнд 15:37:07 #112 №1137575 
>>1137535 АТО! Давай, подтягивайся, пообщаемся.
Аноним 12/02/18 Пнд 15:41:18 #113 №1137578 
кстати, неплохая илея, что программисты не должны решать вопросы в чатика. Вместо этого на все создаются тикеты. Типа у когото есть вопрос по проекту, он его задаёт, ему платят за баг репорт, потом человек, ответственный за косяк, решает его и ему тоже платят. Сам сталкивался с тем, что разработка затягиваемся чатиками.
Аноним 12/02/18 Пнд 15:41:29 #114 №1137579 
>>1137548
на потекла не тригяряцо?
Аноним 12/02/18 Пнд 19:48:48 #115 №1137750 
>>1131879 (OP)
>on this graph you can see that the interest in oop was declining and increasing for functional programming
>обе кривые остались на том же значении, с которого они начинались
Аноним 12/02/18 Пнд 23:15:55 #116 №1137869 
>>1137187
Это ты дебил, хули с другими тредами будешь делать? мьютексы вставлять? а зачем тогда твоя иммутабельность?
Аноним 12/02/18 Пнд 23:22:39 #117 №1137872 
>>1137187
вот тебе и пруф, петушилла
>https://medium.com/@hussachai/scalas-immutable-collections-can-be-slow-as-a-snail-da6fc24bc688

The 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 ms
Mutable List: 0.1117 ms
Immutable List converted from Mutable List: 0.2081 ms
Now the gap is even wider. The immutable list is slower than the mutable one by 610 times!!!
Аноним 12/02/18 Пнд 23:44:21 #118 №1137878 
>>1137869
Эх, сейчас бы на иммутабельные коллекции мьютексы ставить...

>>1137872
Что-то я не вижу в твоей копипасте пруфов того, что иммутабельные коллекции надо копировать, чтобы "изменить".

Ты ведь не понимаешь, что значит слово "иммутабельный", да?
Аноним 13/02/18 Втр 00:16:06 #119 №1137888 
>>1137878
>>1137872

А по рюске чо за хуита эта мутабли имутабли?
Аноним 13/02/18 Втр 00:20:19 #120 №1137889 
Как понять, как разбить программу на объекты?
Аноним 13/02/18 Втр 00:44:37 #121 №1137897 

>>1137878
Ты дурак? Ты вообще не собираешься менять коллекции?
Иммутабельная коллекция подразумевает что при вставке элемента вся ее структура копируется в новую, отличающуюся тем, что добавлен этот новый элемент. В мутабельную добавляешь элемент и коллекция остается тем же инстансом, в иммутабельной при вставке получается новый инстанс. Сами элементы да не копируются, копируются свзяи между элементами, но это огромные накладные расходы при большом количестве элементов.
>Эх, сейчас бы на иммутабельные коллекции мьютексы ставить...
Ну вот затем чтобы мьютексы и не ставить, иммутабельные структуры и копируются
>>1137888
>А по рюске чо за хуита эта мутабли имутабли?
хуета набравшая моду ныне в мире жабаскрипта, абсолютно бесполезная в серьезной разработке. Но профаны почему то носятся с ними как со сверхценной идеей. По сути, иммутабельность - это обычный баззворд.
Аноним 13/02/18 Втр 01:03:27 #122 №1137906 
>>1137897
>Иммутабельная коллекция подразумевает что при вставке элемента вся ее структура копируется в новую
Niejt. Ты бы почитал сначала, как реализуются иммутабельные коллекции. В-общем, конечно не cache-friendly, но и не тотальная дупликация данных, как ты воображаешь.
Аноним 13/02/18 Втр 01:16:15 #123 №1137911 
>>1137906
И как они реализуются?
чем иммутабельный односвязный список отличается от мутабельного?
Да ничем, кроме того, что у иммутабельного после insert возвращает копию структуры куда элемент инсертится.
Аноним 13/02/18 Втр 01:37:15 #124 №1137920 
>>1137911
trie и прочие вариации.
Аноним 13/02/18 Втр 01:56:19 #125 №1137930 
ebff38063b30af2bd2abaa79827a3fd3.jpg
>>1137888
По-русски - неизменяемые (постоянные) структуры данных.

>>1137897
>Ты вообще не собираешься менять коллекции?
>неизменяемые коллекции

>вся ее структура копируется в новую
Ты бы хоть свою же статью по своей же ссылке прочитал. Не умеешь в английский?

>копируются свзяи между элементами
Астральные, надеюсь, связи? Пикрелейтед.

>иммутабельные структуры и копируются
Иммутабельные структуры. Копируются. Чтобы мьютексы не ставить. Ага, понятно.

>в мире жабаскрипта
Ох... Какой замечательный итт тред все-таки!
Аноним 13/02/18 Втр 02:00:43 #126 №1137934 
>>1137930
> Ох... Какой замечательный итт тред все-таки!
В жабаскрипте ещё со времён царя гороха есть Object.freeze, который делает массивы и объекты неизменяемыми. Правда после него они обычно работают медленней, потому что программисты JIT-конпеляторов не заморачиваются с их оптимизацией.
Аноним 13/02/18 Втр 02:04:16 #127 №1137938 
>>1137934
Еще со времен царя гороха можно было везде пихать const, да и просто ничего не изменять, нутыпонел.
Аноним 13/02/18 Втр 02:04:45 #128 №1137939 
Ну и гуава и прочие гуглоколлекции, разумеется. ИНТЕРПРАЙС, пацаны.
Аноним 13/02/18 Втр 02:08:36 #129 №1137943 
>>1137938
> можно было везде пихать const
Низзя. Он только Firefox'ом поддерживался, в его особенной JS1.8.5-ой форме. В ES6 его значительно изменили.
Например в 1.8.5 он напоминал `var` и имел отложенную инициализацию, что позволяло делать хуйню вроде
function() {
azaza = 5;
return azaza;
    const azaza;
}
Аноним 13/02/18 Втр 02:10:16 #130 №1137945 
>>1137943
Так я про си и ко как бы.
Аноним 13/02/18 Втр 02:30:52 #131 №1137951 
>>1137945

Конст - не панацея, это же не deep freeze.
Аноним 13/02/18 Втр 02:46:37 #132 №1137958 
>>1137951
Поэтому я и написал текст курсивом.
Аноним 13/02/18 Втр 05:58:23 #133 №1137972 
>>1137897
>коллекция остается тем же инстансом
Чем остаётся? Что это должно значить, вообще?
Аноним 13/02/18 Втр 06:21:02 #134 №1137974 
>>1137972
> Чем остаётся? Что это должно значить, вообще?
Значит переменная-ссылка (или указатель, зависит от ЯП и терминологии) указывает на тот же объект, просто его содержимое изменилось.
Аноним 13/02/18 Втр 08:07:36 #135 №1137987 
>>1137974
На ходу придумал? Новый смысл у термина 'инстанс'?
>тот же объект
Как понять? Он изменяется или нет? О каком 'объекте' идёт речь (в контексте ООП, или нет? что, если нет?)?
Аноним 13/02/18 Втр 08:36:25 #136 №1137989 
>>1137974
>> Чем остаётся? Что это должно значить, вообще?
>Значит переменная-ссылка (или указатель, зависит от ЯП и терминологии) указывает на тот же объект, просто его содержимое изменилось.

В сях создали массив на 40 элементов, не хватило, reallocнули на 80, указатель изменился.

Отсосал, байтоеб?
Аноним 13/02/18 Втр 08:38:38 #137 №1137990 
>>1137987
> Новый смысл у термина 'инстанс'?
Я откуда знаю, что тот анон вкладывал в это термин.
> Как понять?
А вот хуй его знает.

Воообще само понятие "иммутабельность" зависит от контекста и ЯП.

Есть иммутабельные коллекции, которые хранят ссылки на иммутабельные элементы и им нет нужды копировать себя вообще. Они просто копируют ссылки на нужные элементы, а элементы остаются теми же. Правда для их работы нужны как минимум счётчики ссылок, чтобы избежать утечек памяти. Пример такой коллекции - это строковый тип в JavaScript. Хоть в спеках ничего об этом и не сказано, но при выполнении str.substring(...) или str.substr(..) браузеры не копируют символы в новую строку, а создают строку на основе существующей, просто ставя другие индексы начала и конца. Конкатенация выполняется точно так же. Вместо копирования, создаётся псевдострока, которая содержит две ссылки на старые строки и описание того как они связаны (называется эта хуйня rope).
Аноним 13/02/18 Втр 09:24:32 #138 №1137993 
>>1137535 Ну, резче давай, на связь, ками.
https://www.youtube.com/watch?v=hcDs51s6Vyc
Аноним 13/02/18 Втр 11:16:48 #139 №1138016 
>>1137889
Эй мьютексы имутабленые, отвечать будити?
Аноним 13/02/18 Втр 12:16:26 #140 №1138047 
>>1138016
«В классы обычно собираются данные, которые изменяются вместе» ©
Аноним 13/02/18 Втр 12:27:37 #141 №1138053 
>>1138047
Тоесть всю программу запихать в клас, ведь она изменяется вить?
Аноним 13/02/18 Втр 12:28:44 #142 №1138054 
>>1138053
В джаве с шарпом так и делают
Аноним 13/02/18 Втр 12:33:05 #143 №1138058 
>>1138054
Так а нахой другие класы пейсать если программа и есть класс
Аноним 13/02/18 Втр 12:52:42 #144 №1138069 
>>1138058
Д Е К О М П О З И Ц И Я
Е
Т
Ы
П
И
Д
О
Р
Ц
И
Я
Аноним 13/02/18 Втр 12:58:37 #145 №1138072 
>>1138069
дети пидоры? как это поможет?
Аноним 13/02/18 Втр 13:09:44 #146 №1138082 
>>1138069
И нахуя? С таким же успехом можно переменные раскидать по разным файликам? В чем смысел?
Аноним 13/02/18 Втр 13:11:11 #147 №1138083 
>>1138082
> по разным файликам
Какие у тебя файлики еще в Смолтолке?
Аноним 13/02/18 Втр 14:14:58 #148 №1138119 
>>1138083
ну дак я и говорю все в одном файлике писать ведь программа то это объект, его никак нидикомпозировать.
Аноним 13/02/18 Втр 14:29:57 #149 №1138130 
>>1137990

> Воообще само понятие "иммутабельность" зависит от контекста и ЯП.

Разберись с основами для начала, иммутабельность значит только то, что объект не изменяется, хотя может содержать неизменяемые ссылки на изменяемые объекты.
Аноним 13/02/18 Втр 14:32:52 #150 №1138135 
>>1138119
Просто твое зашоренное сознание не может принять то, что есть системы без файловых абстракций.
Аноним 13/02/18 Втр 14:49:47 #151 №1138164 
>>1138130
>ссылки на изменяемые объекты.
Нахуй такую иммутабельность.
Аноним 13/02/18 Втр 15:09:41 #152 №1138188 
>>1138164

C иммутабельностью все впоряде, то на что ты вайнишь - сайд-эффект «impure» programming languages. Не нравится? Ну учи хаскелль, братиш.
Аноним 13/02/18 Втр 15:17:32 #153 №1138198 
>>1137911
Персистентные структуры данных, слышал?
Аноним 13/02/18 Втр 15:23:47 #154 №1138200 
>>1138198

А как персистентность связана с иммутабельностью?

ЕМНИП каждая иммутабельная структура полностью персистента, но не каждая, хотя бы частично, персистентная структура иммутабельна.
Аноним 13/02/18 Втр 15:55:44 #155 №1138222 
>>1138082
> С таким же успехом можно переменные раскидать по разным файликам? В чем смысел?
Компилятор джавки, например, выдаёт ошибку компилирования если каждому публичному классу не сделать отдельный файлик, название которого соответствует имени класса.
Аноним 13/02/18 Втр 16:12:33 #156 №1138231 
>>1138135
а кокиие еще есть?
Аноним 13/02/18 Втр 16:13:58 #157 №1138235 
>>1138222
Ну типа конпилятор жавы мешает, ок. А так в этом смысла нету получается.
Аноним 13/02/18 Втр 16:15:55 #158 №1138236 
>>1138235
Да ты прав. В твоём случае каждый класс будет представляться в виде файла
sageАноним 13/02/18 Втр 16:47:24 #159 №1138268 
>>1137990
Очередная порция охуительных историй. Иммутабельные коллекции требуют копирования ссылок на элементы и счетчиков ссылок. Ок.

>>1138200
>каждая иммутабельная структура полностью персистента
Заебись.

В этом треде мы выяснили, что:
1) ГОП-блядки не могут в английский.
2) ГОП-блядки не могут в базовые структуры данных.
3) ГОП-блядки не могут в си и указатели, не понимают, как работает их код.
4) ГОП-блядки совершенно не разбираются в том, о чем пытаются спорить.

ГОП-блядок - не человек. Унижай его, смейся над ним.
Аноним 13/02/18 Втр 16:55:55 #160 №1138275 
>>1138268
> Иммутабельные коллекции требуют копирования ссылок на элементы и счетчиков ссылок.
Не требует. Это один из способов их реализации. Так например делает эрланг. Хоть все коллекции там иммутабельны, при добавлении нового элемента в коллекцию она не копируется полностью, а просто создаётся новая структура с ссылкой на предыдущую коллекцию и новым элементом. Впрочем в языке есть средства и для полного копирования коллекции, если так надо.
Аноним 13/02/18 Втр 17:24:40 #161 №1138298 
>>1138275
Зачем ты мне это пишешь? Я цитировал другого анона. Алсо, как там в 80-ых? Рефкаунт, пацаны?
Аноним 13/02/18 Втр 17:26:05 #162 №1138300 
>>1138268
чо за гоп блядок? На коком это языке вообще?
Аноним 13/02/18 Втр 17:28:12 #163 №1138301 
>>1138298
> Алсо, как там в 80-ых? Рефкаунт, пацаны?
Там было написано "как минимум". Можно хоть gc прикрутить. В языках по встроенным сборщиком мусора даже ничего прикручивать не надо.
Аноним 13/02/18 Втр 17:36:19 #164 №1138304 
>>1138069
И как ей научится?
Аноним 13/02/18 Втр 18:53:12 #165 №1138346 
>>1138304
А это интересный вопрос.
Как мне кажется, способность к расчленению чего-то на части, с соблюдением логики связи между этими частями, это часть все того же абстрактного мышления. А как научится мыслить абстрактно, это извечный вопрос на подобных форумах.
Аноним 13/02/18 Втр 19:58:46 #166 №1138377 
>>1138304
Системный анализ + объектно ориентированный анализ
Аноним 13/02/18 Втр 20:13:53 #167 №1138380 
>>1138300
на сиплюсплюс >>1133004
Аноним 13/02/18 Втр 20:27:57 #168 №1138390 
>>1138304
https://youtu.be/agkWYPUcLpg
Аноним 13/02/18 Втр 23:33:12 #169 №1138474 
>>1138275
>а просто создаётся новая структура с ссылкой на предыдущую коллекцию и новым элементом
Ну давай, расскажи мне как это сделать для двусвязного списка?
А для B+-tree или T-tree? Хотя да, я забыл, что иммутаблябляди не могут в структуры данных, которые сложнее тех, что пишут в лабах.
Аноним 13/02/18 Втр 23:51:31 #170 №1138485 
>>1138474
Никак (изкаробки). Даже более того, добавлять элементы можно только в конец. Я просто привожу пример такой коллекции. У неё в эрланге даже отдельный тип есть.

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

А вообще я лично большие коллекции почти не использую. Большая часть данных у меня проходит в приложениях в потоках и обрабатывается по-одному (оно же реактивное программирование).
Аноним 14/02/18 Срд 00:08:40 #171 №1138495 
>>1138474
>иммутабельный двусвязный список
Ох...
Аноним 14/02/18 Срд 00:09:46 #172 №1138496 
>>1138485
Ну круто че, иммутабельность без катастрофического оверхеда возможна только для несортированных списков и простейших бинарных деревьев, в случае деревьев правда еще обязательно нужен gc.
Ну сразу очевидно же что всем срочно нужно переходить на иммутабельные коллекции и до потери сознания воевать в интернете с глубыми стейтоебами, иммутабельность - будущее!
Аноним 14/02/18 Срд 00:14:40 #173 №1138501 
>>1138495
в чем проблема? можно даже сделать изменения атомарными на платформах, что поддерживают DCAS.
https://en.wikipedia.org/wiki/Double_compare-and-swap
Аноним 14/02/18 Срд 00:19:08 #174 №1138503 
>>1138496
>иммутабельность без катастрофического оверхеда возможна только для несортированных списков и простейших бинарных деревьев

Ты всё неправильно понял.
Аноним 14/02/18 Срд 00:24:10 #175 №1138505 
>>1137930
>Ты бы хоть свою же статью по своей же ссылке прочитал.
С чего ты взял что мне всегда нужно вставлять элементы только в конец?
>Астральные, надеюсь, связи? Пикрелейтед.
Хуяльные
>Иммутабельные структуры. Копируются. Чтобы мьютексы не ставить. Ага, понятно.
Именно, петушок. Под копированием структуры я понимаю копирование структуры, а не данных в ней. Ну то есть копирование связей между рефкаунтными нодами, что содержат данные.
>в мире жабаскрипта
>Ох... Какой замечательный итт тред все-таки!
Именно после моды на immutable.js и всякие redux в интернете и расплодилось столько кукарекающих про иммутабельность петушков. Люди знакомые с функциональными языками, а не желающие покукарекать в интернете на волне хайпа, понимают, как мало иммутабельные структуры имеют общего с реальной жизнью и серьезной разработкой.
Аноним 14/02/18 Срд 00:24:38 #176 №1138506 
>>1138503
Да правильно я все понял
Аноним 14/02/18 Срд 01:59:43 #177 №1138532 
>>1138501
>иммутабельный изменяемый двусвязный список
Ах...
Аноним 14/02/18 Срд 02:03:59 #178 №1138534 
>>1138505
>С чего ты взял что мне всегда нужно вставлять элементы только в конец?
Ты о чем вообще?

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

>Именно после моды на immutable.js
Подозреваю, что тебе просто папа компьютер с интернетом купил только в это время :)
Аноним 14/02/18 Срд 05:44:17 #179 №1138549 
>>1138082
>переменные раскидать по разным файликам
Начнем с того, что понятие "переменная" связано с понятием "файл" от слова "никак". Когда выучишь определения и начнешь их осмысленно употреблять, возвращайся, поговорим о семантике.
sageАноним 14/02/18 Срд 16:17:27 #180 №1138840 
>>1131879 (OP)
https://gist.github.com/rklaehn/26c277b2b5666ec4b372

Сравнение производительности джавы и скалы.
Аноним 14/02/18 Срд 18:56:35 #181 №1138909 
>>1138840
Поясните что значат результаты
Аноним 14/02/18 Срд 20:52:30 #182 №1138952 
>>1132736
Очевидно, тайпклассами, набором комбинаторов для них и автоматическим выводом тайпклассов с помощью компайл-тайм макросов.
Аноним 14/02/18 Срд 21:10:47 #183 №1138963 
>>1138952
Кек, что - то авторам Scala2.0 (Dotty) ето не так уж очевидно.
Аноним 14/02/18 Срд 21:12:43 #184 №1138967 
>>1138909
Нихуя не значат результаты. На производительность именно языка не нассать только презренных байтоебам, на которых просто нужно нассать, а не выслушать их проблемы и мнение.
У нормальных же людей производительность измеряется алгоритмов, запросов и распределенных систем.
Аноним 14/02/18 Срд 21:26:23 #185 №1138976 
>>1138963
Шэйплесом обмазывайся.
Аноним 14/02/18 Срд 21:36:08 #186 №1138983 
>>1138909
Скала быстрее джавы. Иммутабельные коллекции скалы немного быстрее, мутабельные коллекции скалы быстрее в разы.
Аноним 14/02/18 Срд 21:43:44 #187 №1138990 
>>1138983
> Скала быстрее джавы.
> Иммутабельные коллекции скалы немного быстрее, мутабельные коллекции скалы быстрее в разы.
Это не скала быстрее жавы, а коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы.

Конкретно скала может быть значительно быстрее жавки только в том случае, если будет сконпелирована под .NET и активно использовать value types.
Аноним 15/02/18 Чтв 00:00:47 #188 №1139033 
>>1138990
>коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы.
Только аутисту, который не может в контекст между двумя предложениями, нужно это дополнительно объяснять, не?
Аноним 15/02/18 Чтв 00:04:54 #189 №1139036 
>>1139033
Что поделать, если первое предложение не подразумевает второе. Интересно будет посмотреть на скорость коллекций жавы, после того как там закончат вальхаллу. А так и сейчас понятно, что коллекции там немношк говно.
Аноним 15/02/18 Чтв 00:24:21 #190 №1139045 
>>1138534
>ты о чем вообще?
о том что в статье про то и написано, что если не использовать оператор склейки элемента в конец иммутабельной паращи, то оверхед чудовищный
>Рефкаунт, ага
Как по твоему устроены gc функциональных языков?
>Подозреваю, что тебе просто папа компьютер с интернетом купил только в это время :)
Скок получаешь то петушок? За 2к бачей то хоть перевалил?
Аноним 15/02/18 Чтв 01:15:03 #191 №1139066 
>>1139045
>что если не использовать оператор склейки элемента в конец иммутабельной паращи, то оверхед чудовищный
Прочитай уже какую-нибудь книжку по алгоритмам и узнай, как работают списки.

>Как по твоему устроены gc функциональных языков?
У языков нет gc, gc есть у рантаймов. Ты очень тупой. Жвм гц на рефкаунте, пацаны))

>Скок получаешь то
Оно еще и мамин фрилансер 300к\сек, ну просто праздник какой-то.
Аноним 15/02/18 Чтв 17:24:20 #192 №1139420 
>>1131879 (OP)
жавадебилы изобретают хаскелл
лет так через сорок до стандарта Haskell 98 доберуться
Аноним 15/02/18 Чтв 21:25:23 #193 №1139632 
>>1139036>>1138990
>коллекции стандартной библиотеки скалы быстрее коллекций из стандартной библиотеки жавы в данном тестировании.
мимо
Аноним 03/03/18 Суб 08:06:20 #194 №1148856 
Кажется мы стали забывать как выглядит настоящий ООП.
Аноним 03/03/18 Суб 13:29:46 #195 №1148927 
>>1148856
>2018
>ООП
Аноним 03/03/18 Суб 17:27:55 #196 №1149040 
>>1148856
как земля он выглядит
Аноним 03/03/18 Суб 17:43:09 #197 №1149045 
4146.jpg
>>1149040
красибо
Аноним 07/03/18 Срд 09:45:43 #198 №1151030 
Всем привет
Аноним 07/03/18 Срд 10:10:04 #199 №1151034 
>>1131879 (OP)
http://www.yegor256.com/2014/10/29/how-much-do-you-cost.html
> $100+ per hour - has a StackOverflow score above 20K;
Е Б А Н У Т Ы Й
Аноним 19/03/18 Пнд 09:08:05 #200 №1158737 
Хэллоу
comments powered by Disqus