Здравствуйте, IT, Вы писали:
IT>Другими словами твоя цель — контроль над сложностью проекта. Остальное побоку. Я прав?
Угу. А что, могут быть другие цели ? Типа фен шуй рулит ?
M>Расскажи, как ложится на ООП-парадигму такое банальное описание, как «открыть дверь». С нетерпением жду
создать объект "дверь". у двери могут быть состояния: открыта, закрыта, закрыта-и-замкнута, на-обслуживании. у двери есть методы...
да, все это круто, но только в данном случае метод "открыть", вероятно, придется наследовать от абстрактного объекта от которого наследуется еще и окна, т.к. они открываются по аналогичной схеме. ящики в столе, как ни странно, тоже.
возникает вопрос -- что общего между окном и ящиком? в процедурном программировании можно создать функцию open(obj) и абстрагироваться от объекта (в частности, у окна может быть свойство прозрачности/матовости).
в случае ооп мы пишем obj->open(). поскольку obj приходится наследовать от абстрактного класса, которому трудно дать осмысленное имя, то добавление новых объектов затруднено и реально только в рамках одного компилятора.
на процедурных языках можно писать реализацию "дверь" на си, а "окно" на асме. главное -- это обеспечить единый и унифицированный интерфейс. если obj это структура, то все процедурные языки позволят реализовать ее какой бы язык мы ни выбрали. а вот писать дверь на си++, а окно на жабе -- увы и ах. будет либо дикий оверхид, либо фактически мы откажемся от вкусняшек ооп и откатимся на процедурный уровень.
взять питон. наличие утиной типизации позволяет писать в процедурной стиле то, что на плюсах пишут в объективном и то, что называется громким словом полиморфизм.
не знаю как думаете вы, а я уверен, что в плюсах неправильный ооп и все беды идут от него. у меня в резюме заявлен пятнадцатилетный опыт. щас получит лет пять опыта в большом проекте. и только-только начал робко пробовать ооп с удивлением обнаружив, что я знаю как его готовить (местами). или я даун или одно из двух. а чего вы хотите от тех, кто сразу начал с ооп, других языков не видел, асм не курил и не под капот компилятора не заглядывал? причем, наблюдая за плюсами, я обнаруживаю как они героически решают проблемы, которые сами же и создают, в результате чего и без того переусложненный язык превращается в монстра.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Steamus, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>Здравствуйте, samius, Вы писали:
S>Любой чел, который не спал последние 10 лет, хорошо знает, что этот эксперимент, совсем даже не мысленный, а чётко осязаемый, поставила сама жизнь. И в нём, со счётом миллион к одному, выиграли C++, Java и C#.
широко используется си (без плюсов). широко используется питон (на нем вроде как ютуб частями написан). широко используются JS и AS.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
> Любой чел, который не спал последние 10 лет, хорошо знает, что этот эксперимент, совсем даже не мысленный, а чётко осязаемый, поставила сама жизнь. И в нём, со счётом миллион к одному, выиграли C++, Java и C#. > Эрланг, Хаскель и Лисп, так любимые ботаниками-маргиналами, далеко в аутсайдерах. Но, их нежно и с любовью пользуют там где они уместны. Давно уже не рассуждая об этих вещах. И тактично обходя любые дискуссии, дабы не задеть легкоранимое самолюбие кухонных теоретиков от ФП, давно и основательно дистанцировавшихся от реальной жизни.
Прально говоришь, так ему и надо. Если есть аргумент противоречащий твоей теории, есть масса типовых способов его опровергнуть:
— каждый ребенок знает;
— это естественно как сама жизнь;
— а вы вообще ботаники-маргиналы, основательно дистанцированные от жизни;
Только вот эта... сейчас уже каждый ребенок знает функциональное программирование. И это естественно как сама жизнь. И ты вообще, ботаник маргинал
Здравствуйте, Steamus, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>Любой чел, который не спал последние 10 лет, хорошо знает, что этот эксперимент, совсем даже не мысленный, а чётко осязаемый, поставила сама жизнь. И в нём, со счётом миллион к одному, выиграли C++, Java и C#.
S>>Я вижу что вы избегаете обсуждения своих тезисов о связи ООП с необходимой моделью, связи ООП с работой мозга, но легко переключаетесь на самолюбие кухонных теоретиков от ФП. Я фактически этого и ожидал.
S>Рад, что оправдал Ваши ожидания, но я тут (и не только тут) уже столько написал, что упрекать меня в том, что я чего-то там где-то избегаю — просто неприлично.
Вместо аргументации одного сомнительного тезиса вы приводите другой сомнительный тезис. А вместо его аргументации следуют эпитеты. Когда я вам указываю на противоречия, вы их скипаете. Имхо, упреки справедливы.
S>Я согласен с тем, что большинство программиеров книг про ФП не читали.
Согласны с тем что условия эксперимента не соблюдены, но тем не менее утверждаете выделенное сверху.
S>Но архитекторы обычно люди более широко эрудированные, и они таки понадкусывали эти книги. И многие даже используют ФП языки, ибо инструмент в своей нише — мощный. В своей нише. По сути в этом то и точка соприкосновения.
Ну вот а я считаю что там не точка соприкосновения, я считаю что ниши у подходов пересекаются в значительной мере. Причем я затрудняюсь назвать области, где рулит ООП и не рулит ФП. А наоборот — легко.
Так же считаю что мозг работает в большей мере таким образом, каким обучен. И что минимальная достаточная модель (по-вашему "реальная модель мира") вообще не относится ни к ФП ни к ООП и что люди описывать такую модель вряд ли смогут. Ведь по вашему определению нет требований что бы такая модель была понятна хотя бы части программистов.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Steamus, Вы писали:
S>>Здравствуйте, samius, Вы писали:
S>S>>>Любой чел, который не спал последние 10 лет, хорошо знает, что этот эксперимент, совсем даже не мысленный, а чётко осязаемый, поставила сама жизнь. И в нём, со счётом миллион к одному, выиграли C++, Java и C#.
S>>>Я вижу что вы избегаете обсуждения своих тезисов о связи ООП с необходимой моделью, связи ООП с работой мозга, но легко переключаетесь на самолюбие кухонных теоретиков от ФП. Я фактически этого и ожидал.
Я не избегаю обсуждений. Но вы постоянно переворачиваете и подменяете мою мысль, пытаясь выставить её надуманным вами боком, что бы затем использовать удобный аргумент. Полирнув это всё словами ...так я и знал...
Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно, соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга. Проще ему так внутри себя всё держать. И стало быть вы сможете построить более сложную систему не потеряв над ней контроль. ФП удобно для реализации алгоритмов определённого толка. К чему предлагать проводить экперименты, если они уже проделаны самой цивилизацией? ООП методология не вчера появилась. Ей уже много лет и она доказала все те посылы о которых я пишу. Если кому-то нравится оригинальничать и называть это всё ненужным, то это его право. Я могу пояснять какие-то мысли, но не перевоспитывать/переучивать чьи-то мозги. Это дело самого человека. Если ему это нужно. И не говорите мне в сотый раз что ваш мозг другой и он не держит предметных абстракций, а мыслит функциями. Считайте что я это уже признал.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, Mamut, Вы писали:
М>да, все это круто, но только в данном случае метод "открыть", вероятно, придется наследовать от абстрактного объекта от которого наследуется еще и окна, т.к. они открываются по аналогичной схеме. ящики в столе, как ни странно, тоже.
Мдя...
Открыть можно ящик стола, ящик Пандоры, Америку, окно, дверь, глаз, рот, душу... От того, что глагол 'открыть' применим ко всем этим существительным, абсолютно никак не следуют что все они имеют общего предка. Дверь и окно, если мы говорим о комнате, могут иметь предка ДыраВСтене или ЭлементИнтеръера или ЭлементПокраски или ГорючийМатериал или. То есть некую абстракцию, несущую общие ствойства этих предметов в контексте решаемой задачи.
Здравствуйте, SV., Вы писали:
SV.>...и это невероятно печально.
SV.>Примеры. Допустим, некто спрашивает, зачем нужно наследование интерфейсов. Я привожу пример, когда оно нужно. В ответ приводится пример, как то же самое можно сделать без наследования интерфейсов. История, конечно, вымышлена, все возможные совпадения случайны. Как хотите, а для меня такой ответ — признак полнейшего непонимания ООП. Оно нужно не потому, что без него не обойтись, и не потому, что сокращает количество кода, и не потому, что что-то там гарантирует (на любую хитрую жопу, как известно всегда что-нибудь найдется). Любой ОО-код переписывается в процедурный роботом на автомате. Не говоря про машину Тьюринга. А нужно оно только для того, чтобы сделать код чуточку понятнее любому нубу на проекте (в том числе, клиентам библиотек/фреймворков/сервисов). Чтобы было можно быстрее сопоставить примитивы в коде со знанием предметной области. Все.
SV.>Другой пример. Когда я обсуждал эту (конечно же, чисто гипотетическую) ситуацию, один человек прямо сказал: все дело в бэкграунде. У тебя, грит, оопный бэкграунд, а придет нуб с функциональным бэкграундом и скажет — ни хрена непонятно. А были бы, грит, чистые функции, он бы все понял мгновенно. И такое высказывание для меня другой признак непонимания ООП. Во-первых, ООП не находится в антагонистических отношениях с ФП. Они отлично уживаются, просто потому, что нужны в разных местах. Во-вторых, НЕТ, НЕПРАВДА, с любым бэкграундом (ФП, ООП, лапша) проект, выдержанный в ОО-духе понять легче. Просто потому, что мы мыслим объектами.
SV.>На протяжении долгих лет я встретил ровно одного человека, который излагал (насколько я его понял) то же самое — Эрика Липперта. По удивительному совпадению (это сарказм), кокреатора одного из лучших языков — C#, а также отца Roslyn. На следы жизнедеятельности таких людей я натыкался чаще (взять тот же .NET FCL), но не сильно. Так вот, не дайте угаснуть моей вере в человечество или добейте ее окончательно.
Какая цель топика? Повозмущаться существованием в природе всяких уродов? Ну дальше что? Сам без греха? А ну ка быстро кинул в меня стотонный камень.
Здравствуйте, 0x7be, Вы писали:
S>>Назовите какое-нибудь, хотя бы одно, существительное для которого нет более высокого абстрактного понятия. 0>"Нечто"
S>Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно, соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга.
Нуну. А банальное «открыть дверь» ты так и не смог описать так, чтобы оно легло на реальную жизнь.
S>>Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно, соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга.
M>Нуну. А банальное «открыть дверь» ты так и не смог описать так, чтобы оно легло на реальную жизнь.
А чё там сложного? Дверь — это не объект штоле?
Здравствуйте, Steamus, Вы писали:
S>Здравствуйте, samius, Вы писали:
S>>>>Я вижу что вы избегаете обсуждения своих тезисов о связи ООП с необходимой моделью, связи ООП с работой мозга, но легко переключаетесь на самолюбие кухонных теоретиков от ФП. Я фактически этого и ожидал.
S>Я не избегаю обсуждений. Но вы постоянно переворачиваете и подменяете мою мысль, пытаясь выставить её надуманным вами боком, что бы затем использовать удобный аргумент. Полирнув это всё словами ...так я и знал...
Ну как же, избегаете. А иначе почему вы скипаете все текущее сообщение и отвечаете на часть позапрошлого?
S>Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно,
Вот еще один пример. Вашу мысль о том что мозг мыслит объектно вы уже декларировали. Но ни одного подтверждающего обстоятельства не привели. Т.е. то что мозг мыслит объектно, выдвигается вами за постулат. Причем, выглядит это так, что утверждение абсолютно. Если у вас в принципе мозг может оперировать лишь объектами при решении задач вроде там нахождения факториала, задачи о ферзях, моделировании физических процессов, то у вас ООПГМ.
S>соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга. Проще ему так внутри себя всё держать. И стало быть вы сможете построить более сложную систему не потеряв над ней контроль.
Нет такой особенности мозга, пока не доказано обратное. Соответственно моделировать надо исходя из соображений разумности выбора модели. Выбор объектной модели далеко не всегда самый разумный. Примеры: расчеты физических явлений, расчеты вероятности происхождения явлений, компьютерное зрение. Объекты идут лесом. Причем заметьте, я не доказываю что там ФП подойдет лучше. Я пытаюсь показать что при решении некоторых задач мозг сразу отметает объекты и их взаимодействие через посылку сообщений и стремится к известным ему моделям, ну там незнаю, к идеальному газу, к формуле Байеса, сегментации отрезков и т.п.
Да, какие-то процессы описываются с помощью объектов и их взаимодействия. Но утверждать на этом фоне об объектных особенностях мозга — абсурд. Точно так же некий математик из НИИ может утверждать что мозг мыслит дискретными сетками.
S>ФП удобно для реализации алгоритмов определённого толка. К чему предлагать проводить экперименты, если они уже проделаны самой цивилизацией? ООП методология не вчера появилась. Ей уже много лет и она доказала все те посылы о которых я пишу.
Так приведите уже эти доказательства. Если ваши доказательства основаны на численном сопоставлении количеств разработок в разных парадигм, то я могу таким же образом доказать что лучший автопроизводитель автоваз а самая продвинутая страна — Китай.
S>Если кому-то нравится оригинальничать и называть это всё ненужным, то это его право. Я могу пояснять какие-то мысли, но не перевоспитывать/переучивать чьи-то мозги. Это дело самого человека. Если ему это нужно. И не говорите мне в сотый раз что ваш мозг другой и он не держит предметных абстракций, а мыслит функциями. Считайте что я это уже признал.
Да я вам про функции даже разу не сказал.
Мозг склонен использовать проверенные решения и строить новые на основе проверенных. Соответственно, если вы не видили букварь по ФП, то вряд ли ваши решения будут иметь отношение к ФП. Если вы не видели букварь по ООП, то ваши решения вряд ли будут иметь отношение к ООП. У меня много примеров перед глазами. Сотни. ООП дается со скрипом даже тем, кто от него получает фан. Вы и тему-то именно об этом завели. Но продолжаете исходить из того что мозги работают объектно. Второй раз об этом пишу. И да, я намеренно пытаюсь свернуть полет вашей мысли к противоречию.
S>>Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно, соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга.
M>Нуну. А банальное «открыть дверь» ты так и не смог описать так, чтобы оно легло на реальную жизнь.
интерфейс ИОткрывашка
класс Пинок : ИОткрывашка
класс Сквозняк : ИОткрывашка
класс Дверь
метод Откройся(ИОткрывашка)
туц Дверь().Откройся(туц Сквозняк())
Здравствуйте, Steamus, Вы писали:
S>Моя мысль проста как слеза — мозг мыслит объектно
Мысль простая... и ложная.
Мозг не работает объектно. Мозг хз как работает. Просто если бы народ знал, что мозг мыслит объектно, ИИ в его первоначальном понимании был бы создан лет 20 назад. Но ИИ до сих пор нет и не редвидится. Ах и увы.
Здравствуйте, D. Mon, Вы писали:
DM>Это не существительное, это местоимение.
В именительном и винительном падежах "нечто" применяется как существительное.
S>>Ещё раз — я нигде не говорил, что ФП это плохо. Моя мысль проста как слеза — мозг мыслит объектно, соответственно моделирование/проектирование/реализацию системы разумнее вести с учётом этой особенности мозга.
M>Нуну. А банальное «открыть дверь» ты так и не смог описать так, чтобы оно легло на реальную жизнь.
Программа не моделирует реальную жизнь вообще и в целом. Программа абстрагируется от многих деталей, оставляя только то важное, что необходимо для решения задачи. Таким образом нельзя без знания задачи описать так, что бы правильно легло на реальную жизнь. Если этих данных нет, то, для начала, хватит пары строк:
class Дверь {
открыть();
закрыть();
};
Дверь дверь = new Дверь();
дверь.открыть();
дверь.закрыть();
Здравствуйте, Wolverrum, Вы писали:
W>Здравствуйте, Steamus, Вы писали:
S>>Моя мысль проста как слеза — мозг мыслит объектно
W>Мысль простая... и ложная.
W>Мозг не работает объектно. Мозг хз как работает. Просто если бы народ знал, что мозг мыслит объектно, ИИ в его первоначальном понимании был бы создан лет 20 назад. Но ИИ до сих пор нет и не редвидится. Ах и увы.
Да. Это я неправильно сказал употребив фразу ...мозг работает... Никто не знает как он там себе работает. Скажем так, было замечено, что для понимания проблемы мозг "опускает" незначащие детали и оперирует только теми, которые важны для понимания проблемы. То есть делает некое абстрагирование, декомпозицию.