LINUX.ORG.RU

ООП без множественного наследования.

 ,


1

2

А не кажется ли вам, господа, что, сабж попахивает противоречием. Например, Вася работает слесарем, а в свободное время играет в футбол. В множественном мы просто наследуем его от футболиста и слесаря, а как без него это выразить? Миксины я не беру в расчет, они в Ъ не катят. А как еще? Никак.

Допустим, я насколько знаю, в Смоллтоке нет сабжа. Я честно говорю, уважаю Алана Кея, он говорит много правильных вещей, его позиция и взгляды мне близки. Но тут ИМХО, он сделал ошибку. Как вы считаете?

Ответ на: комментарий от mix_mix

Ладно, немного поофтопю. Я никогда не слышал внятного ответа на следующий вопрос. близнецы. Один разгоняется со скоростью света бла-бла-бла. Почему этот аут считает что разгоняется корабль, а не земля относительно корабля? Мы точно также можем считать, что корабль стоит на месте, а земля удаляется от него со скоростью света. Вопрос точки зрения, ну ты понел.

А катющика я не читал. Но одобряю:)

javaQest
() автор топика

В множественном мы просто наследуем его от футболиста и слесаря, а как без него это выразить?

Так.

winlook38 ★★
()
Ответ на: комментарий от javaQest

Две теории действительно не стыкуются, это печально. Но более важно то, что человечеству не известно ни об одном эксперименте, результаты которого противоречили бы ТО (положим, на масштабах больше планковских). Теория замечательным образом работает, и у нас попросту нет ничего лучше. Проблема Катющика и подобных фриков вроде Напильника в том, что они ничего не предлагают адекватного взамен.

mix_mix ★★★★★
()
Ответ на: комментарий от javaQest

Почему этот аут считает что разгоняется корабль, а не земля относительно корабля?

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

mix_mix ★★★★★
()
Последнее исправление: mix_mix (всего исправлений: 1)

В этом смысле мне типажи понравились.

Вася может иметь типаж и слесаря и футболиста и быдла и чёрта лысого. А типажи вполне можно наследовать без проблемы ромба.

Gorthauer ★★★★★
()
Ответ на: комментарий от mix_mix

Проблема Катющика и подобных фриков вроде Напильника в том, что они ничего не предлагают адекватного взамен.

Вернее даже не так. Гораздо большая проблема в том, что они ни черта не знают ни физики, ни математики даже в рамках школы, но имеют наглость нести лютый бред и околесицу, «доказывая» на огурцах несостоятельность современной науки. Страшно не фричество само по себе, а распространение и, я бы даже сказал, пропаганда невежества среди людей и так недалёкого ума.

mix_mix ★★★★★
()
Последнее исправление: mix_mix (всего исправлений: 1)

осталось понять какое отношение Вася, слесарь и футбол имеют к программированию

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

не покажешь где там в коде используется такой подход?

таблички-то? таблички там не в коде, таблички там в самой концепции.

Так ты в глаза не видел код действительно приличных "(ММО)РПГ". Не стоит рассказывать о своих фантазиях.

Не стоит рассказывать о своих фантазиях, что я видел и чего нет.

next_time ★★★★★
()
Ответ на: комментарий от next_time

таблички-то? таблички там не в коде, таблички там в самой концепции.

LOL

Не стоит рассказывать о своих фантазиях, что я видел и чего нет.

Ты еще скажи, что я не прав.

anonymous
()
Ответ на: комментарий от mix_mix

Потому, что корабль с близнецом испытывает ускорение

Не особо убедительно это. Согласно ЕМНИП, первому закону ньютона, систем пребывает в инерционном состоянии. То бишь, как только корабль набрал соответствующую скорость, и не испытывает в дальнейшем заметного сопротивления других сил, он переходит в инерционное состояние без потери скорости, движется, самостоятельно и это состояние — состояние покоя. Ускорение — это просто переход в другое инерционное состояние, оно кратковременно и конечно.

javaQest
() автор топика
Ответ на: комментарий от t184256

Я ничего такого не говорил

Ладно, сынок, я вижу, ты запутался в 2 соснах, ты уже сам не понимаешь что ты говоришь и зачем.

Я тебе поясню, что имел в виду Алан Кей.

1 экстремальная динамика. Экстремально позднее связывание. Ресольвинг происходит только в рантайме.

2 объекты обмениваются сообщениями. Сообщение — это не методы и свойства, тут имеется концептуальное различие.

3 Объекты не так важны, как важны сообщения. Концентрация именно на них.

4 Метапрограммирование

5 Объект ВСЕГДА сам решает, как ему обработать сообщение.

Вот этим ООП отличается от псевдоооп, на котором ты так любишь пейсать свои писульки. Надеюсь, ты этот урок запомнишь, и впредь не будешь спорить со взрослыми дядями.

javaQest
() автор топика
Ответ на: комментарий от javaQest

Всё так. Но один испытывал ускорение, а второй нет. Чувака впечатало в кресло при взлете — в этот момент его время начало замедляться. Перед посадкой он стал сбрасывать скорость — в этот момент ход его времени плавно стал возвращаться к земному.

mix_mix ★★★★★
()
Ответ на: комментарий от t184256

Да, забыл еще одно.

-- Абсолютно любая сущность является объектом. Нет никаких атомарных, примитивных, скалярных, и прочих говноданных.

javaQest
() автор топика
Ответ на: комментарий от next_time

anonimous? anonymous — человек уважаемый; хоть и матерится, он будет поумнее и поадекватнее многих. =)

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Бред тут несешь ты. Причем бред в прямом смысле, бессвязные бессмысленные обрывки фраз. К чему были все эти высеры и экскурсы в историю, понять невозможно.

javaQest
() автор топика
Ответ на: комментарий от anonymous

Поведай - где же это.

Сходи что ли, хотя бы, википедию почитай.

не используй параметры в конструкторах или делай их дефолтными

Очередной бесполезный совет в духе «не нравится - не используй». Впрочем, я и так уже не помню когда прибегал к виртуальному наследованию.

Но это никак не отменяет того факта, что когда у нас есть два наследника от базового класса, то это они должны решать как базовый класс инициализировать. А с виртуальным наследованием кишки начинают торчать наружу.

Это тебя что-то постоянно не устраивает и ты рвешься об этом рассказать.

Вообще-то ты рассказываешь как всё круто. Я только указал, что не так уж оно круто и кривостей хватает. Если ты этого правда не замечаешь, то это похоже на фанатизм.

Если что, то пишу я как раз на С++ и меня «всё устраивает», что не отменяет того факта, что местами могло бы быть и лучше.

DarkEld3r ★★★★★
()
Последнее исправление: DarkEld3r (всего исправлений: 1)
Ответ на: комментарий от Gorthauer

А типажи вполне можно наследовать без проблемы ромба.

Чем это отличается от старых-добрых интерфейсов?

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Наличием реализаций. В интерфейсах только декларируется наличие методов.

Gorthauer ★★★★★
()
Ответ на: комментарий от DarkEld3r

Сходи что ли, хотя бы, википедию почитай.

Я так и знал, что твои знания ей и ограничены, и конечно же пример ты не покажешь.

Очередной бесполезный совет в духе «не нравится - не используй».

Какие претензии, такой и совет.

Но это никак не отменяет того факта, что когда у нас есть два наследника от базового класса, то это они должны решать как базовый класс инициализировать. А с виртуальным наследованием кишки начинают торчать наружу.

И в чем собс-но проблема? Да, в случае с виртуальным наследованием инициализацией базового класса в случае надобности (и только тогда) будет заниматься «верхний» класс. Это логично и очевидно, гораздо лучше чем доверять это одной из веток или даже двум подряд, или ты считаешь, что есть более правильное и простое решение?

Вообще-то ты рассказываешь как всё круто. Я только указал, что не так уж оно круто и кривостей хватает. Если ты этого правда не замечаешь, то это похоже на фанатизм.

Так ты не на кривости жалуешься (и их много), а на возможности. Если хочешь убедить в обратном - давай пример кода, мы его перетрем.

anonymous
()
Ответ на: комментарий от javaQest

К тому, что ты споришь с определением Кея, что такое ООП, а что — нет. Ты полдня приписываешь мне хрень и с ней же сам и споришь, а эти жалкие восемь слов так и не осилил понять.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

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

А ты, банальный скорострел, слышал звон, да не знаешь где он. О чем ты тут вообще распинаешься, я так и не понял.

javaQest
() автор топика
Ответ на: комментарий от anonymous

и конечно же пример ты не покажешь.

Ну то есть почитать ты не осилил?

Так ты не на кривости жалуешься (и их много), а на возможности.

Это где ты такое увидел? Я вообще-то не ратую за запрет этих возможностей - уж лучше так, чем никак. Просто изящными их не назовёшь.

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Ну то есть почитать ты не осилил?

Ну то есть примера так и не будет? Впрочем ожидаемо.

Это где ты такое увидел? Я вообще-то не ратую за запрет этих возможностей - уж лучше так, чем никак. Просто изящными их не назовешь.

Ну так скажи как сделать лучше.

anonymous
()
Ответ на: комментарий от javaQest

О том, что ты споришь с определением Кея, что такое ООП, а что — нет. Ты полдня приписываешь мне хрень и с ней же сам и споришь, а эти жалкие восемь слов так и не осилил понять.

t184256 ★★★★★
()
Ответ на: комментарий от javaQest

так вот аналог этого дерьма есть в Io

Ты тупой? Еще раз, в io нет MRO по C3. Посмотри уже видосик со звуком, может быть оторвешься от уровня моря. И у тебя проблемы с отношением множеств. Все динамические язычки умеют в лукап предка, который даже можно руками поправить, но не все в нормальную линеаризацию наследования.

anonymous
()
Ответ на: комментарий от anonymous

Насколько я понял, «MRO по C3» — есть ни что иное, как уродливый костыль, преодолевающий какую-то изначальную ошибку в уродливом дизайне пистона. В Io данной проблемы

Если у нас есть классы A и B, от которых наследуется класс C, то при поиске метода по старому алгоритму (C, A, object, B) получается, что если метод не определён в классах C и A он будет извлечён из object, даже если он определён в B. Это создаёт определённые неудобства, т.к. в object определены многие магические методы, типа __init__, __str__ и т.п. Но даже если object заменить на некий пользовательский класс D, то проблема останется — менее специфичный метод класса-предка может отработать вместо более специфичного метода класса-потомка.

просто не существует, изначально

Object foo := 1

A := Object clone
B := Object clone do(foo := 2)


C := Object clone

C prependProto(A)
C prependProto(B)

C foo print // 2

Иными словами, если у дизигнера дыра в голове, то ему сщ-временем потребуется не только MRO по C3, но и х*й_из головы_вытащи - линеаризация.

Но это язычку идет только на пользу, в плане популярности среди таких вот хомячков как-ты, потому что как вам тогда трясти яйцами на форумах и орать про линеаризации и пердофункторы? Придется в программирование врубаться, и, более того, в ООП, а это не возможно. Без таких уродств вы останетесь за бортом. В этом и заключается секрет популярности подобных языков.

javaQest
() автор топика
Ответ на: комментарий от javaQest

Омг, с3 позволяет выбирать нужную имплементацию в цепочке наследования. Видосик уже посмотри наконец. Я даже не знаю как такому идиоту можно что-то объяснить.

anonymous
()
Ответ на: комментарий от anonymous

Я не буду тратить время на видос, я прочитал что это такое, прекрасно все понял, и написал вердикт. Разуй глаза и прочитай сообщение.

javaQest
() автор топика
Ответ на: комментарий от javaQest

Оно решает проблему ромба, а не питонопроблему. Просто нарисуй на io пример с роботом из видосика и все поймешь, в том числе и то что авторы этого язычка школоло.

anonymous
()
Ответ на: комментарий от anonymous

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

javaQest
() автор топика
27 ноября 2015 г.
Ответ на: комментарий от javaQest

А ничо, что ТО противоречит квантовой механике?

Ложь. СТО прекрасно работает с КМ. ОТО можно квантовать, но выходят бесконечности если попытаться что-то посчитать в сильном грав. поле или на расстояниях близких к планковым. Но там и сама КМ ничего не дает. А так, ОТО квантованна и проблем с этим нету.

vlad9486
()
Ответ на: комментарий от vlad9486

Вот ты говно мамонта раскопал. Я уж думал анонiмус успел за день создать новый акк и забаниться.

anonymous
()
1 декабря 2016 г.
Ответ на: комментарий от vlad9486

СТО прекрасно работает с КМ.

Да как-то нет. Ни интеграл по путям, ни операторный формализм математически строго не определены. Даже хуже: про первый точно доказано что не существует, про второе не доказано, но многое подсказывает, что может быть противоречивым.

anonymous
()
Ответ на: комментарий от DiKeert

Так передавать же можно :) Тем более, что в ряде языков так и делается (тот же self в Питоне).

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.