Недавно меня осенило, что хорошее ООП это ни что иное, как ФП, сделанное через жопу.Хорошее ООП минималистично, хороший архитектор будет стараться писать атомарные классы.Хорошее ОПП избегает сайд еффектов, а может даже, о чудо, жаба старпер додумается написать свою систему иммутабельных типов.Поумневший ООП программист будет избегать наследование как чуму.Поумневший ООП программист ибзегает сайд эффекты, и стремится писать "чистые" методы, ясен хуй, на ООП языке чистый метод написать ему не удастся, но он хотя бы старается, значет, хоть что-то начал понимать.Поумневий ООП пргограммист избегает эксепшоны, может он даже додумался написать Maybe типПаттерн "визитор" это ни что иное, как банальный колбэк, оверинджернутый, неявный колбэкПаттерн "фабрика" это ни что иное, как неявное, неестественно написаное каррирование.Паттерны "билдер" и "декоратор" это опять же, неявные, неестественный, криво написаные функции высшего порядка.и т.д. Я так весь день могу. Дискасс?
>>793393 (OP)Картинка говно, кстати.Слева можно было написать "объекты, объекты, объекты", типа тоже все ПРОСТО И ЛАКОНИЧНО. Но двуличные функционалобляди предпочитают захуярить strawman'а.
>>793397>Слева можно было написать "объекты, объекты, объектыТы имел в виду "классы, приватные абстрактные чистые виртуальный деструкторы, фабрики фабрик фабрик, объекты"?
>>793393 (OP)Ты забыл написать, что лямбды - это те же объекты, только иммутабельные и с одним методом.
>>793393 (OP)ООП хорошо подходило для сочетания двух условий - "у нас есть задачи дискретно-событийного моделирования" и "у нас есть Algol60 и больше нихуя". К Алголу60 оказалось очень легко прикрутить несколько полезных (для той задачи) хаков, которые (на тех компьютерах) еще и были дешевы в смысле скорости. Сначала они хотели сделать препроцессор (что логично - Страуструп через много лет тоже начал с этого и собирался этим и ограничиться), но им понадобились и некоторые другие расширения Алгола и ограничиться препроцессором не удалось.И все эти "Концепции ООП" появлялись именно таким способом: вот интересный (и дешевый в реализации) эффект — как мы можем его использовать? Началось все с того, что понадобилось придумать новый (быстрый) способ передачи параметров в процедуры. Стандартные алголовские способы: по значению и по имени были медленными по разным причинам. Тогда Хоар изобрел ссылки и null. Раз уж структурная эквивалентность оказалось сложной в реализации, сравнивать стали адреса, по которым "объекты" располагаются — появилось identity. Обратили внимание на то, что блок памяти B, структурированный в начале так же, как и блок A можно обрабатывать процедурами, написанными для работы с A — появился "префиксинг" (даже синтаксически объявление класса родителя было префиксным), под который потом подвели идеологию и назвали "наследованием" (ну и понятно, почему сначала никаких "множественных наследований" не было — что такое "множественный префиксинг"?). К рекордам добавили процедуры, диспетчеризующиеся по одному аргументу. Почему именно по одному? Потому что по n > 1 — сложно в реализации.Прекрасно решили свои задачи дискретно-событийного моделирования, на тех компьютерах что у них были, и успокоились. Но пришел Алан Кей и все испортил. Кей и прочие смолтокеры захотели сделать не такой вот "натянутый" на структурное программирование ООП, а идеологически чистый и непротиворечивый. Для этого они подвели базу под все эти технические срезания углов. Получилась чистая реализация идей, придуманных для быстроты и простоты реализации, только медленная и сложная. Они не смогли все это заставить вертеться с приемлемой скоростью до 90-х годов, когда стало уже поздно. Чтоб ввести Симула-лайк ООП в мейнстрим понадобилось только (временно) отказаться от сборщика мусора. Однако, вся философия и методология ООП, паттерны и юнит-тесты и т.д., придуманные смолтокерами не пропали, а были адаптированы мейнстримом.Смолток — это не "изначальное древнее ООП", а возрождение умирающего старого и реформация неправильного ООП, загнувшееся, правда, раньше нем неправильное, пока по настоящему древнее ООП все продолжало умирать. Ну и, понятно, философия ООП, которая превратила все картины, загораживающие дырки на обоях, в "краеугольные камни" концепции и "имманентные особенности человеческого мЫшленья".
ооп для питухов
>>793393 (OP)По паттернам ты всюду обосрался. Визитор это не колбек, а используется для двойной диспетчеризации. Абстрактная фабрика создает разные конкретные типы в рантайме, какое нахуй каррирование. Билдер - чтобы твои любимые иммутабельные типы создавать, а как иначе то. Короче учи ооп, хватит у мамки на шее сидеть.
>>793583Василий, 35 лет, младший научный сотрудник в Крыжопольском НИИ ХУЯ.
>>793654надеюсь ты математик, тогда ты будешь знатаком двух бесполезных хуйнь
>>793648>двойной диспетчеризации.защеку, вот это вот все нинужно
>>793393 (OP)>Паттерн "петушиная фабрика"
>>793702Монада "иммутабельный анус".
Ещё один осознал, что ООП умерло.
>>793722Думаешь вкатываться в ойти, учишь ООП и паттерны. Как только стал готов к собеседованиям, оказывается, что ООП умерло.
>>793393 (OP)ФП:АнаморфизмКатаморфизмХиломорфизмПараморфизмПрепроморфизмПостпроморфизмЗигоморфизмХистоморфизмООП:ЦиклЦиклЦиклЦиклЦиклЦиклЦиклЦикл
>>793393 (OP)>Паттерн "визитор" это ни что иное, как банальный колбэк, оверинджернутый, неявный колбэкУ вас там мультиметоды-то все никак не завезут, я погляжу.
1 005 631 387 байт весит ебаный редактор IntelliJ, эталон ООП уебищности и непригодности.
>>793791Будь он написан с приминением функциональщины (а особенно хуиты вроде реактивщмны) тормозил бы ещё сильнее, не говоря о том что ни у одного функционального компилируемого языка нету нормального линкера.
>>793796>Будь он написан с приминением функциональщиныпо крайней мере не создавался бы класс на каждый ебаный чих со стопицот ненужными методами прозапас
>>793796>ни у одного функционального компилируемого языка нету нормального линкераэто еще что за маняфантазия?
>>793798А хаскель/окамл уже научились компилироваться во что-то меньшее чем дыа десятка мегабайт на хэловорлд?>>793797И тормозил бы ещё в 10 раз сильнее, разницы?
>>793803>А хаскель/окамл уже научились компилироваться>И тормозил бы ещё в 10 раз сильнекошерная сишечка тормозила бы и занемала меньше дыа десятка мегабайт на хэловорлд?и причем тут ненужное говно типа хаскель/окамл?
>>793806Как процедурная сишечка относится к функциональным языкам, поехавший? Может справку на википедии хоть откроешь прежде чем что-то писать?
>>793807чем процедура от функции отличается, мамкин куаретик?
>>793812Я мимокрокодил.
>>793816вот зачем ты свое матановское говно сюда принес? тащи два снипита, где функциональную парадигму нельзя выразить через процедурную и наоборот.
>>793812Тем что ты либо поехавший, либо траль?Просто открой хотя бы первый же раздел и найди там си, после можешь продолжать тралить (правки котироваться не будут).
>>793820https://ru.m.wikipedia.org/wiki/Функциональное_программированиеМакаба - хороший движок
>>793745Полиморфнул тебе в зигаморфизм.
>>793745>ХистоморфизмИди джинсы подворачивай.
>>793820в си например можно применить ооп подход и? почему его не отнесли к ооп?
>>793745КлаудморфизмХардкордморфизмИндиморфизмМаняморфизм
>>793820>>793821Некоторые концепции и парадигмы специфичны для функционального программирования и в основном чужды императивному программированию (включая объектно-ориентированное программирование). Тем не менее, языки программирования обычно представляют собой гибрид нескольких парадигм программирования, поэтому «большей частью императивные» языки программирования могут использовать какие-либо из этих концепций.вот в этом весь смысл, матанопидоры сами же понапридумали всякой хуйни и сами же обосрали.
Википидоры говорят:Языки функционального программирования...F# — функциональный язык семейства ML для платформы .NET...а в статье про F#:...F# (произносится эф-шарп) — это мультипарадигмальный язык программирования из семейства языков .NET Framework, поддерживающий функциональное программирование в дополнение к императивному (процедурному) и объектно-ориентированному программированию. ...манякукаретики, оправдывайтесь, чем ФЯП отличаются от ПЯП?
>>793819Долбоебик узнал про тезис Черча и тезис Тьюринга, аж глаза слепит от этого ПРОЗРЕВАНИЯ.
>>793834Вейперморфизм.Эмоморфизм.Херкоморфизм.Индастриальный морфизм.Праворадикальный морфизм.
>>793843Долбоебик, иди нахуй вмести со своим тезисом Черча и тезисом Тьюринга и прочими тезисами матанопидорами, вы кукаретики, придумываете всякую хуиту, от которой мы в ИТ имеем то, что имеем, ООП, Хаскелы, Джавы и прочую хуйню. Показываешь мне реальный пример функциональщины не решаемый процедурщиной и наооборот или пиздун.
>>793851Двачую, матаноблядям не место в ИТ.
>>793851>от которой мы в ИТ имеем то, что имеемНе в ИТ, а в макакинге. Куда ты денешься в разработке мобильных сетей без мат. анализа, теории сигналов и алгебры, петушок.
>>793858>Куда ты денешься в разработке мобильных сетейче дохуя новых стандартов GSM наразрабатывал? даже вся твоя петушиная кафедра к этому никакого отношения не имеет, кукаретики аки есть. И да, сети это физика, причем довольно элементарная. Математика нинужна, лол.
>>793861>Математика нинужна, лолСкажи это последовательностям Голда в лицо, питуз.
>>793863>Скажи это последовательностям Голдаи? вы матанопетухи к этому какое отношение имеете? все уже придумано и разжевано.
>>793816Б-же какой суходроч без смысла на пикче.
>>793861> сети это физикаМного мусора на своих сетях передал? Сети это коды, а уже потом линии.
>>793878Просто ты не желающий разбираться ни в чем, кроме формошлёпства, дегенерат.
Анон, проверь себя на олигофрению.http://psyera.ru/4239/umstvennaya-otstalost-oligofrenii
>>793879>Сети это кодыхуеды, волны в среде, можешь даже начинать рассказывать о максимальном размере пакета в TCP/IP.
господа, гоните матанопитухов ссаными тряпками от кода, везде где только будет возможно.
>>793897Сделайте мне сайт, похожий вот на этот, пожалуйста.
>>793899Сделайте мне денежный перевод, похожий вот на этот 30000, пожалуйста.
>>793878Это первая страница учебника, а уже на десятой ты охуеешь, я гарантирю это.
>>793906Сделаю за 24к и чизбургер.матанопидор
>>793393 (OP)Паттерны из книги - хуйня, т.к. банда из четырех хуесосов читала Кристофера Алекзанедра жопой.ООП нужно, т.к. это правильный подход для симуляций, игр и прочих задач, которые по самой постановке должны решаться "снизу вверх". То есть для тех случаев, когда мы не знаем, как система должна вести себя в целом, но знаем как должны себя вести ее компоненты.Когда же нам нужно добиться конкретного поведения от системы вцелом, то делать это через объекты ебучий геморрой, т.к. поведение графа объектов с дохуллиардом связей предсказать очень сложно.
>>793816Нахуя дан новый оператор произведения функций если у нас уже есть такая же запись g(f(x))? Более того, эти хуесосы зачем-то оставили обратный порядок вычисления, хотя операторы подразумевают прямой порядок. Почему эти ебнутые дебилы не перевернули формулу как f*g? Тут все понятно, сначала вычисляется f, потом результат передается в g, данная запись работает как арифметическая операция, без коммутативности разумеется. И в хаскеле оставили этот убогий математический выблев, ебучие дебилы.Матанобляди хотя бы стараются?
>>793970> Нахуя дан новый оператор произведения функций если у нас уже есть такая же запись g(f(x))?Если бы в питоне был такой оператор (в coconut это 2 точки), его бы активно использовалиСравни:sorted(list(set(filter(f, seq))))sorted..list..set..filter(f, seq)Чище, легче читается, не объебешься со скобками. Впрочем, в императивщине это дело вкуса. Но для фп такой синтаксический сахар это мастхев.Насчет порядка наверное ты прав
>>793970ах да, в математике символ удобен когда мы рассматриваем уже сами функции как элементы какого-то множества со структурой (в группе автоморфизмов чего-то там любой элемент это функция, но нас это вообще не ебет никак, мы просто рассматриваем композицию функций как бинарную операцию и записываем ее как fgh чем f(g(h)))
>>793986макаба съела звездочки, ну ты понел
>>793986В математике может быть. Но зачем хаскелобляди тащат из математики все дерьмо даже не задумываясь что им нужно будет его реально применять? Не просто дрочить абстракции, а применять к реальным задачам.В итоге получается они бездумно используют ЧИСТЫЙ МАТАН только чтобы дрочить что они МОРФЕУСЫ, которые не просто кодят, а стоят на одной ступени с богами математики.А в итоге выходит что они строят деревянные самолеты и диспетчерские вышки как ебаные туземцы с их ебаным культом карго.
>>794000Неистово двачую. Совсем пизданулися сэтими своими ФП. Пихают везде где только можно. И где нельзя тоже пихают. Скоро, блеать, документообороти проее говно уже на ФП делать будут.
>>793939>ООП нужно, т.к. это правильный подход для симуляций, игр и прочих задач>игрНаверное, поэтому последние лет пятнадцать ооп в играх не используется.
>>794040Есть хоть один движок, написанный без него?
>>793393 (OP)Минималистичный базис обманчиво представляется тебе чем-то абсолютно хорошим. Он:1. Затрудняет коммуникацию, "сунь функцию в функцию и недовызови вот эту функцию" очень трудно воспринимать2. Приводит к XZIBITу. См. наивную теорию множеств.3. Налагает неоправданные ограничения на реализацию (нет, все надо выразить через функции!!!11)В плюсах конечно у нас остается академическая красота, легкость машинной обработки, возможность вывода всяких штук, типа сериализаторов, операций над структурой из атомарных и т.п. Но это вещь все таки специфическая.Сколько уже народа пришло в яваскрипт и плакало "ой, а че тут везде функции, я хочу ключевые слова класс, делегат, неймспейс, а у вас какие-то костыли все время".
>>794002> Скоро, блеать, документообороти проее говно уже на ФП делать будут.Прекрасно же. Отобрази дебитные счета на кредитные, а потом левой сверткой получишь бухгалтерский баланс. Не то что 1Сники ебутся на пустом месте.
Очередной сектантский фп-пиздеж в стиле квиксорта на хаскеле, который и не квиксорт, и не юзабелен. В ФП дохуя паттернов-хуятернов, антипаттернов, и прочего говна.
>>794042Каждый второй? Если, конечно, под ооп понимать программирование объектами (у вас - классами), а не использование его для имитации модулей или как синтаксический сахар для включения/выключения функций в рантайме. Поищи, хотя бы, критику OGRE (который окодемичное ооп до самой последней строчки) и вообще Марка Актона, в частности typical c++ bullshit и data oriented design. Потом можешь поискать Entity Component Systems.
>>794050Нахуя мне гуглить твоё говно? Слепо следовать парадигме во вред продукту – дегенератизм, потому и все мейнстримовые языки мультипарадигменны, а не сфокусированы на этом как смалталк или хаскель.
>>794058>Слепо следовать парадигмеЕжели так, то сишка - функциональный язык, ведь в нём есть функции.
>>793530Это надо куда-то на лурк потомкам, чтоб не смыло
>>794078Ежели так, то ты видимо так и не смог открыть вики.
>>793393 (OP)Долго же до тебя доходило, кк.
>>793697Молодцом! Подставляй другую.
>>793393 (OP)А что плохого в наследовании?(нихуя не шарю в ООП)
>>794182g evolve your hierarchyДва фундаментальных неразрешимых вопроса ооп:1. У тебя есть сущность, которая может писать, и сущность, которая может читать. Тебе нужна новая сущность, которая умеет писать, читать и кричать. От чего её лучше наследовать, WriterEntity или ReaderEntity?2. string.write(paper) или paper.write(string)? (А если сюда добавить pen, то всё становится ещё веселее).
>>794217Интерфейсы.
>>794236Расскажи же.
>>794040Ты наркоман, сука, штоле?Юнити, анрил енджин вот эти все монстры индустрии. Везде ооп.
>>794217Когда все нормальное человечество училось не задаваться вопросами "что было первее, яйцо или курица" и "в чем смысл бытия" функциональные бляди в очередной раз оптимизировали факториал и все проебали. Так и появились эти два ФУНДАМЕНТАЛЬНЫХ НЕРАЗРЕШИМЫХ ВОПРОСА
>>794236А как быть с повторным использованным? Что делать, если в классах реализующих один и тот же интерфейс, допустим, один метод выглядит одинаково? Это что же копипастить?
>>794217мн наследование?нет, не слышал
Сейчас будет какареканье про множественное наследование реализаций
>>794267Какой идиот будет так делать?
>>794262Нихуя не понял
>>794264Хау эбаут композиция?
>>794217TextWriter.Write(pen, paper, string)
>>794274Это его способ сказать "хуй его знает" на второй вопрос.>>794279Вот, собственно, и вся суть ооп. В учебнике у нас class Shape extends Drawable и triangle.draw(), а в реальности DrawingManager.createDrawingManager().setDrawingTarget(TargetManager().create().makeDrawingTargetFromScreen(ScreenManager.getInstance().getCurrentScreen())).build().getContext().drawShape(triangle).finalize().
Есть на свете хоть один ООП-даун, который может сформулировать постулаты своей йобаной религии? Почему во всех ООП-языках это ООП такое разное? И ведь адепты всегда считают свой самым труЪ. Что за хуйня у вас там творится? Что есть ООП, а что -- нет?
>>794287>ООПэто философия, что есть объект, что есть сущность, а матанобляди в нее не могут.
>>794291А ООП-дятлы могут?
>>794287ООП это когда платят, а ФП - ждешь завтрака от невьебенного руководителя стартапа.
>>794293Заебись вокруг да около >>794287 ходить
>>794281>Вот, собственно, и вся суть ооп. В учебнике у нас class Shape extends Drawable и triangle.draw(), а в реальности DrawingManager.createDrawingManager().setDrawingTarget(TargetManager().create().makeDrawingTargetFromScreen(ScreenManager.getInstance().getCurrentScreen())).build().getContext().drawShape(triangle).finalize().Высасываешь аргументы из пальца. Ну или из чего ты там их высасывать.>>794279 тебе привел нормальный пример, а ты прикрываешься какими-то учебниками, которые нужны только как указатели направления, а не догматы.ооп это средсто а не цель, та мгде ооп соснет (а таких областей немного и они сугубо специфичны) его конечно же с удовольствием можно заменить фпно таких мест немного
>>794292наврядли, адепты ооп это по большей части матанобляди которым не нашлось места на стройке.
>>794297>ооп это средстону вот и нехуй это средство тащить как последнюю истину
>>794299ФП фаги - это хуи которые через анальные боли осилили новый интсрумент, теперь все должны перед ними падать в охуении и предлагать самых пездатых самок и кучу бабла. Хуй вам.
>>794300>ну вот и нехуй это средство тащить как последнюю истинуэто двачи, тут все что ни попадя школьники хватают и тащат как последнюю истинуесли ты решил с ними поспорить и доказать им что в интернете кто-то не прав то флаг тебе в руки
>>794301там выше один анон так и не смог объяснить чем ФЯП отличаеюся от ПЯП на практике
>>794299Бля, анон, объясни кто такая матаноблядь. Не вдупляю о ком ты.
>>794312Матаноблядь - это, очевидно, существо, которое не может в хардкорный матан, из которго, понтяное дело состоит весь ФПЯ, следовательно не может его понять и никогда не достигнет конкуртного уровня в программировании. Поэтому эту парадишму нужно всячески рекламировать, чтобы им больше денег не досталось, лучше поделиться.
>>794316Спс. Согласен с тобой
>>794307ИМХО ничем. Но ФП легче масштабируется. Точнее эта масштабируемость легче достигается
>>794307В том же хаскелле часто можно проглядеть последовательность выполнения без проблем.
>>794321масштабируемость чего? безработных людей?
>>794321>масштабируемость легче достигаетсянапример? давай какойнить детский снипет на пару строк
>>794287Короче, ясно -- сосать, так с проглотом
>>794281А что собственно не так в твоем примере, кро ме того, что он в одну строку? На ФП было бы то же самое, только не последовательность методов, а последовательность передач данных и функций внутри функций.
Я не вдупляю, а что, знать И ООП И ФП и использовать определенную парадигму там, где она уместна, религия не позволяет?А об объектно-ориентированом ФП, я так полагаю, сэры вообще не слыхивали?
>>794373Двачую. Холивары на пустом месте разводят.
>>794373>объектно-ориентированом ФПБлять, какой ужас. Ты про скалку что ли?
>>794534Главное от ашлиста унаследоваться и намазать в конструкторе монаду.
>>794534>Ты про скалку что ли?Да хоть динамопараша, Руби там или ЖабаСпирт. Функции возвращающие классы, вызов функции при объявлении класса, вот это вот все.
>>794607Ахуеть. Для тебя наличие функций в языке делает его хоть немного функциональным?
>>794616А ты там по чистоте угораешь? Что мешает в любом языке, в котором есть функции, намутить себе иммутабельные типы и принципиально писать только чистые функции?
>>794616А для тебя отсутствие в языке понятия классов делает его тру функциональным?
>>794624А) Всё чистыми функциями не напишешь;Б) В моей области от постоянного копирования и прочих ништяков чистоты просос по перформансу будет.Ц) Это даже не четверть фп паттернов. А на какой хуй их имитировать там где их нет – непонятно.>>794625Для меня их наличие делает язык "ОО-образным".
>>794636>Для меня их наличие делает язык "ОО-образным".Об Жабу обжегся? Только там ООП доведен до маразма, во всяких сисечках если не хочешь писать классы, то не пиши.
>>794636>Для меня их наличие делает язык "ОО-образным".И для тебя это зашквар, я правильно понимаю?Пограммить на "ОО-образном" языке ты можешь только накрыв клавиатуру вафельницей?
>>794640>Об Жабу обжегся? Только там ООП доведен до маразмавангую ты не видел смалтолка
>>794646А ты видел, что ли? Тебе сколько лет, деда?
>>794643Сука тупая, я про то что наличие функций != фп язык, ты мне про какую-то ненависть у ооп которой нету.
>>794655Ну ладно ладно. Че ты завелся? Нормально же общались.
>>794655И вообще в чем тогда смысл чисто ООП или чисто ФП? Ведь есть же мультипарадигменные языки где можно юзать и то и другое в зависимости от необходимости. Те же кресты, например. я умышленно не упоминаю жабу ибо там лямбды убогие
>>794373Можно. Но тогда ты будешь писать или как на мутабельном хаскеле, или как на скале.Как на скале лучше не писать.
>>794690А как на OCaml?
>>794696Тоже не стоит.
>>794698Свадьбу играть в конце лета или в начале осени?
>>793393 (OP)Ну расскажи мне как Dependency Inversion функциями заменяется
Частичтное примение?
>>794729Функциями высшего порядка.
Для необразованых даунов, которых полон /pr:1) ООП и ФП это ортогональные парадигмы.2) ООП применяемое в большинстве джава etc пректов это просто процедурщина со специальной записью первого параметра процедур и идиотским способом переиспользования кода.3) Отличие ФП от ПП заключается в https://en.wikipedia.org/wiki/Referential_transparency.
>>793530История Вирта очень трагичная, братюни. Начиналось все хорошо:Хоар сказал: «В Алгол нужно добавить ссылки с нуллами»А Вирт сказал: «Мы с Хоаром считаем, что в Алгол нужно добавит ссылки, да с такими-то нуллами»Потом Хоар сказал: «Алгол 68 сосет»И Вирт, конечно, сказал: «Мы с Хоаром ваш Алгол 68 в рот ебали, пидоры комитетские!!111»А потом Хоар внезапно сказал: «Анаморфизм, катаморфизм, иломорфизм, параморфизм, наконец»И Вирт сказал:«Ана-што? Иломорфизм? Хуе-мое! Так, падажжи, ебана, Карри же был моим научруком, параморфизм? Ах тыж ебаный ты нахуй!АЛГОЛ 68 СОСЕТ!!!111 ССЫЛКИ ДА С ТАКИМИ-ТО НУЛЛАМИ!!!111 АЛГОЛ 68 СОСЕТ!! СОСЕТ АЛГОЛ 68 !!11111»Ну, так с тех пор и повторяет.
>>795028Теперь это копипасты тред?Есть ли в природе хоть один жавапидорас, который знает что-нибудь кроме джавы? Ну хотя бы ту же Скалку, работающую на jvm. Причем `знает' не в смысле запускал 2 раза и посчитал рекламную хуйню с сайта, а действительно хорошо знает. Работал минимум полгода, знает, решению каких проблем адресован язык, знает, зачем он нужен и какие преимущества имеет перед джавой, хорошо понимает, какие принципы заложены в систему типов и нахуя они вообще туда заложены, знает, как она жутко она фейлит на оптимизации хвостовой рекурсии, знает, как она затирает типы и вызывает методы через рефлексию, знает, почему на уёбищной jvm по-другому не сделать, знает, почему неленивые языки - говно, знает, что такое abstraction penalty и почему любой джаваынтырпрайз адово тормозит, несмотря на превосходные результаты на шотауте, самый лучший мусоросборник и hotspot до которого всему немейнстиму в говне плыть и плыть, знает, почему джава - не язык программирования для нормальных людей, а говно для переквалифицировавшихся таксистов? Нет таких? Ни одного? Только студентота и дрочеры на абстрактные фабрики абстрактных аннотаций виртуальных плагинных шин? Так я и знал. И это программисты. Говно какое-то. Пидоры блядь.
Является ли вся GUI-концепция побочным эффектом? Ведь, что такое GUI — это бессмысленный набор состояний.
>>795065GUI легко решается ФРП. Причем с ФРМ он намного более предсказуемый.
>>793812>чем процедура от функции отличается, мамкин куаретик? Ну давай разберем по частям, тобою написанное )) Складывается впечатление что ты реально контуженный , обиженный жизнью имбицил )) Могу тебе и в глаза сказать, готов приехать послушать?) Вся та хуйня тобою написанное это простое пиздабольство , рембо ты комнатный)) от того что ты много написал, жизнь твоя лучше не станет)) пиздеть не мешки ворочить, много вас таких по весне оттаяло )) Про таких как ты говорят: Мама не хотела, папа не старался) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
>>794058>Нахуя мне гуглить твоё говно? Наверное, потому что ты сначала верещал про ООП в играх. А потом когда тебе показали главного архитектора Insomniac Games вебмрелейтед, который доказывает, что ООП в играх НЕ НУЖНО ты начал кукарекать про мультипарадигму?
>>795067>ФРП>ФРМ Расшифруй плиз.
>>795095Функциональная реактивщина.
>>795095Функциональное Реактивное Программирование."ФРМ" это очепятка
Бамп
GUI для быдла
Я офигиваю от этого треда, вы тут проста траллите, правда?>>793812> чем процедура от функции отличается, мамкин куаретик?Функция при одном и том же входе всегда возвращает один и тот же результат. Всё остальное это процедура.>>793984> Чище, легче читается, не объебешься со скобками. Впрочем, в императивщине это дело вкуса. Но для фп такой синтаксический сахар это мастхев(.) в Haskell это функция, а не ёбаный сахар для скриптодебилов. Это означает, что её можно использовать в более сложных композициях чем просто g . f. Например, используя (.) фолдить структуру (дерево, например) функций, ну и вообще делать всё, что можно делать с функцией.>>794000> А в итоге выходит что они строят деревянные самолеты и диспетчерские вышки как ебаные туземцы с их ебаным культом карго.https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BF%D1%81%D0%B8%D1%85%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F)>>794047> 3. Налагает неоправданные ограничения на реализацию (нет, все надо выразить через функции!!!11)Вот не знаю как в других функциональных языках программирования, но в Haskell, по моему опыту, всё выражается через типы прежде всего. Вообще там самое главное это не просто функции, а удобство моделирования данных. В Haskell система типов ещё развивается, а вот в таких языках как Agda совсем здорово, там можно программировать на уровне типов, это и есть самая смакота к которой Haskell идёт. Но часть проблемы это терминология, люди не знающие языка, узнав, что он функциональный думают, что там всё только на функциях. Как бы да, там функции везде, но это всё-равно что сказать, что в императивных языках повсюду переменные -- это как бы не самое важное и не суть, как это не парадоксально.> Сколько уже народа пришло в яваскрипт и плакало "ой, а че тут везде функции, я хочу ключевые слова класс, делегат, неймспейс, а у вас какие-то костыли все время".Ну ты сравнил, в JS полно особенностей, там quirk на quirk-е, quirk-ом подгоняет. Мы обсуждаем функциональное программирование, как-будто оно всё одинаково на всех языках программирования могущих в него, а это неправильно, тут надо язык смотреть каждый отдельно.>>794325> В том же хаскелле часто можно проглядеть последовательность выполнения без проблем.Мы живём в многопроцессорном мире, сейчас на обычном домашнем комлюктере по четыре ядра, да и в мобильных устройствах. Думать о порядке выполнения в такой ситуации это ебать себе мозги, потому, что у тебя многие вещи вообще могли бы выполняться одновременно. Вот большой плюс ФП и Haskell конкретно это то, что ты получаешь многопоточное выполнение почти за бесплатно, даже не обязательно думая о нём.TL;DR: Есть хороший курс Дэна Гроссмана в котором сравнивается ООП и ФП: https://www.coursera.org/learn/programming-languages Как раз начинается 25 Июля. Просто пройдите его для развлечения, не пожалеете.
http://www.yegor256.com/thread/>
>>794048>1Сники ебутсяРеквестирую 1С на хаскеле
>>797030> (.) в Haskell это функция, а не ёбаный сахар для скриптодебилов. Это означает, что её можно использовать в более сложных композициях чем просто g . f. Например, используя (.) фолдить структуру (дерево, например) функций, можно пример для питонодебила?я вроде понимаю что такое дерево функций, но что значит его фолдить хз
проигрываю с дебиков, ставящих знак равенства между ФП и типами
>>797030>Вот большой плюс ФП и Haskell конкретно это то, что ты получаешь многопоточное выполнение почти за бесплатно>получаешь многопоточное выполнение>получаешь
>>794275интерфейсы наследуй, блджад, а не классы
>>797494> реализуй классы типов, блджадНо тогда всё ООП превратиться в хаскель.
>>797348>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному слову в каждой следующей строке>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному слову в каждой следующей>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному слову в каждой>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному слову в>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному слову >Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по одному>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать по>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь убирать>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и начинаешь>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше" и>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак "больше">Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним знак >Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед ним>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь перед>Такой пишешь сука хуйню какую-то длиной в целое предложение, ставишь>Такой пишешь сука хуйню какую-то длиной в целое предложение>Такой пишешь сука хуйню какую-то длиной в целое>Такой пишешь сука хуйню какую-то длиной в >Такой пишешь сука хуйню какую-то длиной>Такой пишешь сука хуйню какую-то>Такой пишешь сука хуйню >Такой пишешь сука >Такой пишешь >Такой
>>797075почитал, чувак просто несет херню чтобы попиариться, типичный BPBS. Втюхивает всякую ерунду безосновательную для дураков, которые верят всему. Все его проекты - это кусок говнокода типичнейшего.
>>797030>Вот большой плюс ФП и Haskell конкретно это то, что ты получаешь многопоточное выполнение почти за бесплатно, даже не обязательно думая о нём.Очередная пропаганда ФП-сектантов.
>>799315>дибил
>>794217>От чего её лучше наследовать, WriterEntity или ReaderEntity?От обоих. Множественное наследование везде есть в том или ином виде.>string.write(paper) или paper.write(string)?По ситуации. Это проблема множественного диспатча, а не ООП.
>>794252>Юнити, анрил енджин вот эти все монстры индустрии. Везде ооп.В обоих компоненты.
>>799378>Similar to Java, UnrealScript is object-oriented without multiple inheritance (classes all inherit from a common Object class), and classes are defined in individual files named for the class they define. Unlike Java, UnrealScript does not have object wrappers for primitive types. Interfaces are only supported in Unreal Engine generation 3 and a few Unreal Engine 2 games. UnrealScript supports operator overloading, but not method overloading, except for optional parameters.
>>799402А в юнити сишарп, который тоже ООП, но при этом оба движка используют компоненты, а не наследование для организации данных сцены. Потому что это удобнее.
>>799402У них там еще стейт-машины в язык встроены были. Олсо анрилскрипт выкинули, там теперь кресты как скриптовый язык лол.
>>799447> кресты как скриптовый язык лол.
>>795031Скорее всего, нет. Я тут мимосишарпник и считаю ООП говном, несмотря на то, что сишарп один из годнейших ООП-языков. Кресты на уровне гомоебли в сратокан. Жаба вообще дно и рак всего программирования.
>>799377Мелкомягкие решили не заморачиваться с множественным наследованием, жрите интерфейсы.
>>793393 (OP)Я нашел откуда картинка:https://www.youtube.com/watch?v=E8I19uA-wGY
>>799377>От обоих.Псевдокот:class WriterEntity {fun setBuffer(buf);fun execute();}class ReaderEntity {fun setBuffer(buf);fun execute();}Наследуйся, пожалуйста.>Множественное наследование везде есть в том или ином видеНазови-ка из головы пять языков, кроме питона и крестов, которые его поддерживают. Расскажи-ка, как это делается в шарпее и джавке.
>>800987Мда, с таким дизайном классов понятно, откуда у тебя такие охуительные вопросы про ООП. Студент?
>>794217 Интерфейсы + стратегии.Но конкретно эту хуйню можно через трейты заебашить.
>>7942171. Нужна композиция.2. Не принципиально.>>794262Удваиваю этого остроумного господина. Борщееды буквально выковыривают проблемы из носа и героически их решают.
>>801018>я всегда пишу весь код с нуля>библиотек не существует>"повторное использование кода", которое ставят в плюсы ооп, означает, распечатывание кода на бумаге и складывание её в туалетеТы после подписи вопросительный знак случайно поставил. Можешь не благодарить - добрососач же - но впредь постарайся следить за собой.
правильный подход к ооп -всю get-set хуиту выкидываем нахуйвсе поля делаем public + final и устанавливаем в конструкторе один развсе методы делаем static и раскидываем по адекватным неймспейсамтаким образом мы приходим к stateless функциям оперирующими иммутабельными объектамигде-то мы это уже видели? подсказка: Haskell
Поясните мне как конченые долбоебые все время кукарекают как ООП и ФП можно совмещать, когда вся суть второго в неизменяемом стейте, а первое - в петушении инкапсулированных кусков стейта? Ну есть конечно клоуны типа Одерский которые шутки ради засунули все в один язык и теперь это еле движется. И что это доказывает? Вон в плюсы по десять новых фишечек в секунду добавляют и скоро на этом говне никто не сможет ничего написать без опыта костыления в 40 лет.
>>801329Нет не Haskell, потому eager.Когда же вы, дауны, поймёте, что ФП было задолго до Хаскеля. Хаскель = ебля с ленивостью.
>>793648> двойной диспетчеризацииУбогий костыль, покрывающий отсутствие тайпклассов или мультиметодов.
>>801340Без копирования и множественных ссылок нет особой разницы между изменением состояния и пересозданием состояния, например.>>801350Классов типов не было.
>>801354>Без копирования и множественных ссылокКак программы писать тогда предлагаешь? Приведи пример.
>>800987>ПсевдокотЕстественно, надо к дизайну разумно подходить, и заранее предупреждать подобную хуиту.>Назови-ка из головы пять языков, кроме питона и крестовПочти во всех современных языках есть трейты, миксины и т.п. средства. Про динамические языки даже не говорю - там обычно можно вообще все что угодно делать. Даже в жабе добавили поведение в интерфейсы.>Расскажи-ка, как это делается в шарпее и джавкеsetWriterBuffer( buf ) {( (WriterBuffer) this ).setBuffer( buf );}
>>801340>как ООП и ФП можно совмещатьООП это сабтайпинг, он иммутабельность ортогонален - смотри окамл, например.
>>793393 (OP)>Паттерн "визитор" это ни что иное, как банальный колбэк, оверинджернутый, неявный колбэкЕсли это подписка на сообщения, передаваемые через очередь сообщений, то не совсем.Но в целом, всё так и есть.
>>801366Линейные/аффинные типы.
>>801371>ООП это сабтайпингВон оно оказывается как. Разве в верблюде не петушат стейт? Тоже что и в скалке получается лень даже смотреть.>>801390>Линейные/аффинные типы.Полторы статьи с icfp прилагаются?
>>801340Наоборот, писать на нем станет так же просто как на Питоне, но понимать во что это автовыводится будут только петушители конпеляторов.
>>801340>Поясните мне как конченые долбоебые все время кукарекают как ООП и ФП можно совмещать, когда вся суть второго в неизменяемом стейте, а первое - в петушении инкапсулированных кусков стейта?Это суть ФП и ООП глазами аутистов с имиджборд. ООП - это сабтайпинг, как тебе выше написали, а ФП - это программирование с помощью комбинирования первоклассных функций. Совмещать это можно легко, причем как в иммутабельном, так и в мутабельном случаях.
>>801553Поэтому в нормальных языках (e.g. Haskell) никакого сабтайпинга нет. И вообще от этой хуйни plt компуктер-саентесты начинаются сраться под себя и могут еще в еблет прописать.И каким хуем спрашивается>ООП - это сабтайпингэто вообще что-то совершенно новенькое. Правда говорят что такое ООП неизвестно даже самым продвинутым адептам ООП.
>>801572>Поэтому в нормальных языках (e.g. Haskell) Даже не начинай, не смешно уже.> от этой хуйни plt компуктер-саентесты начинаются сраться под себя и могут еще в еблет прописать.Своей маме они могут в еблет прописать, за то, что борщ не вовремя принесла.>это вообще что-то совершенно новенькое.ООП - это наследование+инкапсуляция+полиморфизм. Что тут специфично именно для ООП? Полиморфизм - разным бывает, инкапсуляция - даже в сишке есть, а вот наследование - это ООП-specific вещь, которая и отличает ООП от другой парадигмы. А калифорнийские пидорки типа Алана Кея могут и нахуй пойти - их заслуга только в том, что из этого штата слышно их говно и баззворды на весь мир. А ООП появилось и развивалось без них. Но ты предпочитаешь слушать пидорков и представлять, что они имеют какое-то отношение к тому ООП, которое мир пишет уже лет 40.
>>801393>Разве в верблюде не петушат стейт?По желанию, сугубо опционально, как и в скале.
>>801572>Поэтому в нормальных языках (e.g. Haskell) никакого сабтайпинга нетСабтайпинга там нет, чтобы не превращать тайпчекер в пиздецому как в скале. И оверлоада функций там нет по той же причине - чтобы работал алгоритм W.
>>801580>А калифорнийские пидорки типа Алана Кея могут и нахуй пойтиВ смолтолке тоже есть наследование.
>>801597Я про его определение ООП:OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme LateBinding of all things.Именно за это цепляются ФП-петушки, типа "аааа, а у вас есть стеееейт".
>>801622Блядь, каким же надо быть ебланом, чтобы придираться к стейту. ООП бионическая парадигма, заимствованная у природки, у которой у любых форм жизни в башке - surprise! - есть стейт.Другое дело, что многие черви-пидоры не умеют в messaging, заменяя его шаровой памятью, и закономерно огребая в итоге. Это да, беда-печаль.
>>801580Дибилка не отличающая сабтайпинг и наследование учит жизни, спешите видеть.>вот наследование - это ООП-specific вещьЗначит все остальное можно выкидывать нахуй? Смело.Что скажешь на счет JS? Есть ли в нем ООП? Что на счет наследования/сабтайпинга?Что на счет того что наследованию уже давно присматривают место на помоечке? Не слышал?
>>801586>По желанию, сугубо опционально, как и в скале.Только глядя на функцию нельзя сказать попетушила она стейт или нет и теряется вся прозрачность. Значит это творог подзалупный получается, а не ФП.Это даже не говоря о том как простейший компрехеншен теряет у старого доброго цикла в производительности несколько порядков, потому что компилятор не осиливает.>>801591К тому же нет адекватной теории для этого дела. Это как если бы одно доказательство доказывало две теоремы - нонсенс. Хотя Одерски чего-то там пилит, посмотрим что получится у него.
>>801627>Дибилка не отличающая сабтайпинг и наследование учит жизни, спешите видеть.Вот сразу видно аутиста, пришедшего на борды посраться. Я тебя не оскорблял. Поэтому какой смысл тебя, говно, учить жизни, если что такое жизнь ты не понимаешь и никогда не поймешь?>Значит все остальное можно выкидывать нахуй?Л-о-г-и-к-а. Если то, что у тебя хуй делает тебя мужского пола, это не значит, что если вырвать у тебя сердце, ты будешь жить. Это не очевидно?>Что скажешь на счет JS?В JS все объекты имеют один и тот же тип, то есть отношение сабтайпинга ("If S is a subtype of T, the subtyping relation is often written S <: T, to mean that any term of type S can be safely used in a context where a term of type T is expected." - TAPL) выполняется автоматически.>Что на счет того что наследованию уже давно присматривают место на помоечке?Обосрался по теме - переходи к эмоциям.
>>801632>Только глядя на функцию нельзя сказать попетушила она стейт или нет и теряется вся прозрачность.Функциональные языки намного старше хаскелля. Дроч на стейт в типах - это дроч конкретных людей в академии, и от этого авторы Scala (которые не менее академичны) сознательно отказались. Это уже неинтересно, ну можно пихать IO везде, рассмотрели это, соснули и пошли дальше, и бомбит только аутистам, которым интересен контроль ВСЕГО в программе, независимо от сложности, вносимой этим контролем.
>>801632>К тому же нет адекватной теории для этого дела. Есть давно: http://users.cis.fiu.edu/~smithg/papers/thesis91.pdf но Хиндли-Милнер гораздо проще.
>>801632>Только глядя на функцию нельзя сказать попетушила она стейт или нет и теряется вся прозрачностьЭто детали реализации языка. Факт в том, что сабтайпинг и ФП вполне совместимы.
>>801655Кажется эта дибилка порвалась. Отлично.>Л-о-г-и-к-аПопробуй применить ее. Если ты сам же пишешь>ООП - это наследование+инкапсуляция+полиморфизма затем сам же выбрасываешь две другие компоненты как несущественные - то это уже у тебя проблема с головой.>выполняется автоматическиЭто типичный пустой аргумент. Так можно дойти и до ассемблер - ООП язык>Обосрался по теме - переходи к эмоциям.Про diamond problem почитай хоть, перестань уже позориться.>>801656>Scalahttps://www.reddit.com/r/haskell/comments/1pjjy5/odersky_the_trouble_with_types_strange_loop_2013/cd3bgcu>>801672Как это ты перепрыгнул с иммутабельности на сабтайпинг? Не путай народ.
>>801682>diamond problemХотя нет вообще то вот это по темеhttps://en.wikipedia.org/wiki/Fragile_base_classНо и про первое тоже можешь читнуть для развития.
>>801670А в языках с зависимыми типами подобное есть? Просто на сколько я понимаю там отказались от этого понятия в принципе.
>>801682>а затем сам же выбрасываешь две другие компоненты как несущественныеРаз старик закинул невод: "Что тут специфично именно для ООП? Полиморфизм - разным бывает, инкапсуляция - даже в сишке есть".Два старик закинул невод: Если то, что у тебя хуй делает тебя мужского пола, это не значит, что если вырвать у тебя сердце, ты будешь жить. И тут ты опять расписался в своем неумении читать. Объясняю ТРЕТИЙ раз: все три элемента являются необходимыми для ООП, но специфичной вещью (отличающий ООП от других парадигм) является только наследование. Полиморфизм и инкапсуляция есть и в других парадигмах.>Это типичный пустой аргумент. Так можно дойти и до ассемблер - ООП языкНельзя, из определения ООП.>Про diamond problem почитай хоть, перестань уже позориться.Я лучше прочитаю про existential typeclass antipattern и подумаю, какого хуя нужно было наворачивать столько говна в такой простой задаче, как статическая типизация собственного кода.
>>801702>А в языках с зависимыми типами подобное есть?Нет. Там применимость типа доказывается тьюринг полным языком, а не выводятся тайп чекером.
>>801682>Как это ты перепрыгнул с иммутабельности на сабтайпинг? В результате дискуссии. Ты за тредом следишь вообще?>>801340>Поясните мне как конченые долбоебые все время кукарекают как ООП и ФП можно совмещать, когда вся суть второго в неизменяемом стейте, а первое - в петушении инкапсулированных кусков стейта?
>>801682>Про diamond problem почитай хотьDiamond problem - это деталь реализации языка. В С++ ты разруливаешь вручную, а, например, в скале четкие правила порядка наследования, и никаких diamond problem.
>>801722Ну ты и мразь тупая>все три элемента являются необходимыми для ООПвот же оно. Если нет инкапсуляции значит нет и ООП. До этого тебя хватает? Или совсем никак? Какая-то особая дибилка-логика? Что такое необходимое и что такое достаточно ты понимаешь или еще не проходили?>Нельзя, из определения ООП.Включаю твою дибилко-логику: в ассемблере все есть байт -> значит есть сабтайпинг -> значит это ООП. Чтд - дибилко-логика не работает, нужно пользоваться нормальной.>>801735И где же в дискуссии эти два понятия приравнивались. Я конечно понимаю что тут есть один еблан не способный наследование от сабтайпинга отличить, но путать иммутабильность и сабтайпинг - это уже совершенно новый уровень ебанутости.>>801734Очень странный и бессмысленный набор слов. Тип терма проверяется тайпчекером, при этом возможны (хотя тут я не уверен, зависит от обстоятельств) произвольные вычисления. Но что тогда получается на счет понятия подтипа? Непонятно.>>801737Что на счет fragile base class тогда?
>>801735Разъясню еще немного> Факт в том, что сабтайпинг и ФП вполне совместимы.С этим утверждением я даже не спорю. Только1) сабтайпинг - тупик и нахуй не нужен2) сабтайпинг, чтобы тут не кукарекали клоуны, не является определяющим свойством ООП. Это очевидно если посмотреть на любой динамический язык.А главное в ООП - это инкапсулированное мутабельное состояние. Что ну никак не укладывается в иммутабельное ФП.
>>801627>>вот наследование - это ООП-specific вещь>Значит все остальное можно выкидывать нахуй? Смело.>T = X + Y + Z, X и Y много где есть, но Z - специфично для T.>Значит можно выкинуть X и Y?Ебать ты дебил. Почитай про логику, сынок и по упражняйся в ее применении. А то совсем плохо.
>>801370>надо к дизайну разумно подходитьКод получен от разных людей. Они работали над разными проектами. Компьютер с исходниками сгорел (буквально). Разработчики умерли. Всё, что у тебя есть - этот интерфейс. ООП - это легкое переиспользование кода же. Переиспользуй.>setWriterBufferА теперь то же самое для ридера. Я пока промолчу, что это через жопу и не совсем то наследование, о котором выше говорилось.
>>801775>А главное в ООП - это инкапсулированное мутабельное состояниеНе тред, а сборище охуительнейших историй.
>>800122Чем шарик лучше?
>>801839>Код получен от разных людей. Они работали над разными проектами. Это уже не проблема языка, сам понимаешь.>Я пока промолчу, что это через жопу и не совсем то наследованиеЕсли тебе нужно то наследование, то ты класс-потомок кастишь к ридеру-райтеру в месте вызова, и компилятор так находит нужный метод.
>>801775>не является определяющим свойством ООППотому что у ООП нет четкого определения. Это расплывчатое понятие, под которое можно подогнать что угодно.
>>801769>НепонятноТайп чекер-инферер - это готовая программа для доказательства, в которую подставляются факты-типы, и она на основании их вычисляет применимость типа. В языках с зависимыми типами такое невозможно, универсальный тайп чекер не напишешь. Поэтому типы там записываются на особом тьюринг-полном языке, и текст прогрмаммы является ее собственным тайп-чекером.
>>801897>Это уже не проблема языкаА при чём тут язык? О нём и разговора не было.>класс-потомок кастишь к ридеру-райтеру в месте вызоваНу напиши это. Только помни, что код получен из разных источников, сорцов у тебя нет, и ты уже отнаследовался от райтера.
>>801775>А главное в ООП - это инкапсулированное мутабельное состояние. Что ну никак не укладывается в иммутабельное ФП.Оба утверждения - хуита.См. >>794982.Под идиотским способом переиспользования кода я как раз и имел в виду наследование.
>>801930Ну напиши это. http://ideone.com/uDsHaT
>>801913> Поэтому типы там записываются на особом тьюринг-полном языкеНа всё том же языке программирования, так как термы это тоже типы.> тьюринг-полном языкеВ большинстве случаев не тьюринг-полном.
>>801992Какое охуенное наследование. А что, в крестах специального оператора для этого нет, что ты такие пляски устраиваешь?
>>802042>Какое охуенное наследованиеНормальное наследование, не понимаю, что тебя не устраивает. Если нет имплисит кастов в языке, придется явно композицию использовать, конечно.
>>802050Я тебя пытаюсь плавно подвести к тому, что все эти разрекламированные фичи ооп на самом деле не работают на практике, но ты всеми силами стараешься этого не понимать.Кресты, вроде бы, ооп, в крестах, вроде бы, есть множественное наследование, а ты всё равно устроил танцы с бубном в жопе ради такой простой задачи из учебника для десятиклассников. Кому-то на этом месте должно быть стыдно.
>>801829Это была логика дибилки, так что все претензии к нему. Следи внимательнее за дискуссией няша.>>801850Проблемы? Выкладывай свое определение.>>801973Значит ты согласен с тем что понятия ООП и ФП не совместимы? Собственно чтд.
>>801913Каша>>801996>термы это тоже типыЧто простите?Вопрос о возможности введения понятия подтипа в языках с зависимыми типами оставляю открытым для всех желающих.
>>802066>что все эти разрекламированные фичи ооп на самом деле не работают на практикеРаботают же.>крестах, вроде бы, есть множественное наследованиеВопрос был как без множественного наследования сделать, если ты за тредом следишь. Тебе сказали как - композицией или имплисит кастами.
>>802099Нет, дружок. Вопрос был: "от чего насдедоваться", на что было отвечено "от обоих". А ты не отнаследовался вообще ни от чего, ты создал независимый третий (а так же четвёртый и пятый) объект, в который запихнул два изначальных. Просто замечательная парадигма, которой для того, чтобы работать, нужно, чтобы её концепциями не пользовались.>Работают же.Ага, охуенно просто работают.
>>802114> А ты не отнаследовался вообще ни от чего, ты создал независимый третийВнутри которого и отнаследовался от чего нужно. Композиция с небольшим сахаром. В шарпе можно то же самое сделать. >Ага, охуенно просто работаютОхуенно или нет, второй вопрос. Проблемы которые ООП создает, можно с его помощью же и решить, пусть и тяжеловесно.
>>802079>Значит ты согласен с тем что понятия ООП и ФП не совместимы? Собственно чтд.Не могу сказать что согласен, зависит от определения ООП. Если это "современное классическое" ООП, как в C++, Java etc, по совместимо. Если старое "объекты со стейтом и сообщения", как в Smalltalk/современных Actor System (только с аккой работал, про другие не могу говорить подробно), то не совместимо.>Проблемы? Выкладывай свое определение.Это способ думать о программах как о наборе, хм, объектов, которые общаются друг с другом. Вот такая вот гуманитарная поебень.
>>802245
>>797030> Вот не знаю как в других функциональных языках программирования, но в Haskell, по моему опыту, всё выражается через типы прежде всего.Ну так замени в моем изначальном сообщении функции на типы, примерно то же самое и выйдет. Конечно нетипизируемые выражения еще поискать надо, это не ограничение, ограничение в том - что вообще все типизировать надо, причем весьма дотошно. Ошибешься с типизированием, потеряешь время и код выйдет некрасивым. Это ваше type-directed иногда конечно и помогает, а иногда выдирективает тебя в какие-то загогулины.Это мой личный опыт, если че. Понятное дело, что у "всех нормальных людей" (ц) (р) (тм) таких проблем нет.> Вообще там самое главное это не просто функции, а удобство моделирования данных.Любой язык программирования строит расчетную модель прикладной задачи, так что это не только в хачкеле.> Ну ты сравнил, в JS полно особенностей, там quirk на quirk-е, quirk-ом подгоняетИ все равно конструкции ;(function () {})(); запутывают новичков. namespace {} было бы понятнее.>>801655>В JS все объекты имеют один и тот же типДопустим, есть множество объектов T, описание которых в исходном коде занимает не ноль байт. Тогда все сущности в хачкеле принадлежат к одному типу Т и могут быть все между собой безопасно использованы один вместо другого. Таким образом тип Т не нужен и может быть опущен => хачкель - бестиповой язык (могилка).
>>797110Это такое тонкое признание в девственности?
>>801722> все три элемента являются необходимыми для ООПНо ведь в тайпклассах тоже есть сорт оф наследование.Мне вообще эта формула инкапсуляция+наследование+полиморфизм не нравится. Давайте тогда хачкель-парадигму называть как-нибудь также иммутабельность+ссылочная прозрачность+полиморфизм.Я вот держусь такого определения ООП (Алан Кеевского по-моему), что это инкапсуляция стейта + мессаджинг. Чтобы только сам объект менял свой стейт, потому что только он лучше всех разбирается, как его стейт внутри устроен. А инстанциация конструкторами - это типа как нуль в моноиде. Вроде ничего так пока, быдло очень боится.
>>802302Проигрываю с этого персонажа, который постит Люси. Шизофреник высирает какие-то простыни банальной философии под водочку, а его просто игнорируют.
>>801580> А калифорнийские пидорки типа Алана Кея могут и нахуй пойти - их заслуга только в том, что из этого штата слышно их говно и баззворды на весь мир. А ООП появилось и развивалось без них. Но ты предпочитаешь слушать пидорков и представлять, что они имеют какое-то отношение к тому ООП, которое мир пишет уже лет 40.Да ну загонять. Как вы стейт с сообщениями писали, так и пишете, только обвесились нашлепками для переиспользвоания знаний в виде статической типизации, дженериков, интерфейсов, наследования. А поверх этого всего подключаете какую-нибудь rabbitmq и обзываете это архитектурой.Пишет один студент курсач, мутно и без конкретики, в ссылках у него http://google.com - вот так полиморфизм. Скачивает другой студент курсач, исправляет там свое ФИО и распечатывает - наследование в чистом виде. А потом оба приходят на работку и делают то же самое с бородой и умным видом. История успеха парадигмы ООП.
>>802318C подливой проигрываешь или без? Это важно.
>>802325Просто кекаю немношк. Иногда еще пускаю шептуна.
>>802329Ну тогда ок.
>>802245>совместимоДА КАК БЛЯДЬ?!Полтреда макаю совместимо-петушков в говно и все никак они не уймутся. И в следующем же подобном обсуждении наверняка такой петушок снова выпрыгнет из первых рядов с криком - да вы жи ничиго нипонимаите! онисовместимы!!111 все можно!!!!
>>801769>вот же оно. Если нет инкапсуляции значит нет и ООП. Из этого не следует, что инкапсуляция специфична для ООП. Она в любом языке с модулями есть. Наследование - специфично, инкапсуляция - нет. То, что у тебя есть сердце и печень не делает тебя женщиной, а пизда делает (и, прикинь, нет печени, нет и женщины).>Включаю твою дибилко-логикуТы для начала предыдущее осиль.
>>802317>Но ведь в тайпклассах тоже есть сорт оф наследование.Здесь нужно define наследование, которое в случае ООП и тайпклассов будет определяться сильно по-разному, а суть-то не в этом.>Я вот держусь такого определения ООП (Алан Кеевского по-моему), что это инкапсуляция стейта + мессаджинг. Чтобы только сам объект менял свой стейт, потому что только он лучше всех разбирается, как его стейт внутри устроен.Смотри на вики статью actor model: The actor model in computer science is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent computation. In response to a message that it receives, an actor can: make local decisions, create more actors, send more messages, and determine how to respond to the next message received. Actors may modify private state, but can only affect each other through messages (avoiding the need for any locks). (чесслово, я это написал до того, как выше увидел что кто-то сослался на нее же).Ровно то, что ты описываешь. Только это не ООП. Алан Кей не придумывал симулы, С++ и Java, он придумал термин, который пошел в индустрию только из-за его географического положения в центре ИТ-мира. В самом термине же другое наполнение буквально с его рождения.А потом какие-то ... берут кеевское определение и открывают для себя, что ФП и ООП не совместимы. Хотя они нормально совместимы. Причем не только ООП совместимо с отсутствием стейта (т.е. когда у тебя объекты, имеющие только конструкторы и const-методы), но ФП совместимо с его наличием (причем и без анального IO-контроля).
>>801329>где-то мы это уже видели? подсказка: HaskellХаскель не может в сабтайпинг, поэтому не может и в человеческую гетерогенность (только в пердолинг экзистенциальными типами), поэтому мимо.
>>802524> Смотри на вики статью actor modelНе убедил. Это не ровно то, что я описываю, т.к. в моем описании нет ни слова про конкурентность. Акторы же - это как раз модель конкурентности для ооп, объектики, каждый из которых живет в своем потоке. Частный случай ооп, в котором инкапсуляция используется для организации корректного асинхронного взаимодействия.> Причем не только ООП совместимо с отсутствием стейта (т.е. когда у тебя объекты, имеющие только конструкторы и const-методы), но ФП совместимо с его наличием (причем и без анального IO-контроля).Двачую. Но в криках о несовместимости кеевское определение не виновато, виноваты участники дискуссии под ооп понимающие непонятно что, а под фп обязательную ссылочную прозрачность и наличие еба-тайпчекера, что вообще мало с чем совместимо.
>>802394Не уверен что ты понял что я написал. Перечитай еще раз.>>802550>под ооп понимающие непонятно чтоЭто и есть непонятно что, нет формального определения ООП. Неформальное я дал, но оно слишком общее и относится скорее к философии програмирования, а не к инженерным практикам.>а под фп обязательную ссылочную прозрачность и наличие еба-тайпчекера, что вообще мало с чем совместимо.Тайп чекер не обязателен, а без ссылочной прозрачности само понятие функции, а значит и ФП, не имеет смысла.
>>793984print('Modified on {}'.format(time.ctime(op.getmtime(path))))print .. 'Modified on {}'.format .. time.ctime .. op.getmtime .. pathПрикольно. Звоните Гвиде
>>793846Прогрессив-морфизмВапор-морфизмБлэк-морфизмДум-морфизмПавер-морфизмЗолотце, вернись!