Re[5]: Что такое ООП
От: Аноним  
Дата: 30.05.03 09:47
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:

S>Они не покрывают ООП.

Покрывают. Что еще нужно ?
Одних графов достаточно почти для всего, а вкупе с алгеброй и матлогом — даже с избытком.
Re[11]: Что такое ООП
От: Dmitry123 Эстония  
Дата: 30.05.03 10:58
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну видимо тебе не приходилось сталкиваться с соотв. задачками. Как столкнешься, так сразу напрягут


Возможно
А ты можешь привести какой-нибудь пример? Ради академического интереса так сказать
Re[6]: Что такое ООП
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.05.03 11:11
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

А>Покрывают. Что еще нужно ?

Все остальное.
А>Одних графов достаточно почти для всего, а вкупе с алгеброй и матлогом — даже с избытком.
Ну так можно сказать, что все покрывается одной теорией множеств. Ибо и алгебра, и логика, и анализ вкупе с графами построены поверх нее.
Покажите мне то место графах, в котором что-то говорится об инкапсуляции. Графы в ООП заканчиваются на теореме "любой ориентированный ациклический граф соответствует валидной схеме наследования".
... << RSDN@Home 1.0 beta 7a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Что такое ООП
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.05.03 11:11
Оценка:
Здравствуйте, Andir, Вы писали:

A>Формализация это хорошо, однако человек проще понимает формализмы путём аналогий и примеров.

Согласен. Но заменить формализм примером нельзя — уж больно неравноценная замена.

A>Плохой ты выбрал пример.

A>Ничего подобного, ты пытаешься показать. что эти определения различны, однако вся наука строится на том, что эти определения одинаковы (ну кроме первого), а вот если бы это было не так, тогда и можно было бы говорить о недостаточности теории.
Ок, ладно, черт с ним с моментом. Вообще говоря, тот факт, что некие определения эквивалентны, вовсе не является очевидным. В данном случае имеем два эквивалентных и одно неэквивалентное определения.

S>Я думаю, что в ООП в итоге будет также. Типа "Наследование в смысле Руматы — это ........". Или там "полиморфизм в смысле Синклера".

A>Мне кажется, что всё это можно формализовать. Может быть в конечном итоге получится вот так: "Синклер наследованием назвал вот это ..., но он не учитывал вот такие аспекты ..." и т.п.

A>Есть очень интересная наука методологией зовётся и смысл именно в существовании некоторого общего базиса на котором можно построить новые методы познания (точнее даже определить дорогу к новым познаниям). Этот базис может быть размытым только вначале развития, чем дальше тем всё больше требования формализма к этому базису.

A>ООП как научный метод получил развитие в масштабах времени не так то и давно, именно поэтому, как мне кажется, он столь неформализованный. Но как я уже сказал, чем дальше тем больше требуется формализма, чтобы построить полную теорию. Вот уже и от нас (программистов) начали поступать справедливые возмущения (хотя это прерогатива теоретиков).
A>Поэтому как мне кажется формализм со временем появится и может даже кто-то из нас и станет его основателем.
Конечно появится. Но их будет много разных. Потом, возможно, будет доказана эквивалентность различных подходов, как это было с Гейзенбергом vs Шредингер.
Я очень сильно сомневаюсь, что какой-то один подход будет принят в качестве единственно правильного. Это все к вопросу о "стандартах".
... << RSDN@Home 1.0 beta 7a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Что такое ООП
От: Nikto Россия  
Дата: 02.06.03 08:44
Оценка:
Здравствуйте, Rumata, Вы писали:

M>>Когда люди хотят друг друга понять, они не сомневаются в смысле слов "полиморфизм", "наследование" и т.п. А если поп*%деть на лекции — тогда конечно. Тогда и в математике договорённости плавающие.

R>Не сомневаются? А у меня после 5-ой книги по пэттернам в OOD осталось совсем другое впечатление. А в математике — некоторые краевые договоренности действительно плавающие (например слово "комплексный" в Питереи Москве математики по разному произносят — ударение на разных слогах), но центральные определения вполне четкие (на то они и определения). Есть еще понятия, но их довольно таки мало.

Аксиомы в математике? Различные геометрические пространства которые казалось бы должны друг ддругу противоречить, а на самом деле дополняют?
Re[5]: Что такое ООП
От: mihailik Украина  
Дата: 02.06.03 13:24
Оценка:
M>P.S. Хотя, на сегодняшний день, самым классическим и строгим стандартным языком ООП-программирования можно считать Java.

AVK>Я бы не был столь категоричен. В джаве очень много моментов не очень хорошо ложащихся в ОО-парадигму. Ну те же примитивные типы к примеру.


Но всё-таки если выбирать самый классический язык ООП, то, уверен, победит Java.
... << RSDN@Home 1.0 beta 7a >>
Re[5]: Что такое ООП
От: mihailik Украина  
Дата: 02.06.03 13:24
Оценка:
M>P.S. Хотя, на сегодняшний день, самым классическим и строгим стандартным языком ООП-программирования можно считать Java.

L>Все верно. Но только не java, а smalltalk.


А он разве не остался в счастливом детстве?
... << RSDN@Home 1.0 beta 7a >>
Re[7]: Точки, множества и т.п.
От: mihailik Украина  
Дата: 02.06.03 13:24
Оценка:
Vi2>Интересно, есть ли определение точки, множества и т.п. терминов, краеугольные для математики? Которые вроде всем известны и понятны, но тем не менее...

S>Насчет точки — не помню. Вот материальная точка в физике вполне четко определена.


Всю геометрию можно вывести через координатный метод из арфметики. А арифметика выводится их логики и теории множеств.

Мало того, геометрия, как и все некорневые дисциплины может быть задана ещё хитрее, через определение.

Точкой, прямой, плоскостью называются объекты, для которых верны аксиомы геометрии.


То есть аксиомы геометрии на сегодняшнем уровне уже не являются аксиомами, это просто определения. И дело не только в Лобачевском.

S>А множество вводится как интуитивно понятная категория, без чего невозможно даже начать математику При этом уверенность математиков во взаимопонимани основана на том, что таких "интуитивно понятных" категорий и неявных правил вывода используется весьма небольшое количество. И оно жестко контролируется.


Строгая теория множеств и строгая логика очень связаны между собой. Если удастся каким-нибудь акробатическим трюком задать логику, то, скорее всего, теория множеств будет тут же неподалёку.

Что такое, например, определение, как не задание множества объектов? И что такое задание множества объектов как не определение?
... << RSDN@Home 1.0 beta 7a >>
Re[18]: Что такое ООП
От: mihailik Украина  
Дата: 02.06.03 13:24
Оценка: :)
R>>Ну почему же, я вот верю, что математика в конце концов опишет все =)

M>Что всё?


R>Да вообще все...

R>Посмотрите книги Арнольда по нечеткой логике

Я бы посмотрел, но поблизости нету. Может сам в двух словах прояснишь?


M>Ты, кажется, математику с физикой перепутал. Математика вообще не занимается реальным миром. В принципе не занимается.


R>Нет, не перепутал. Математика применяется при моделировании реальной жизни. Физика здесь не при чем.


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

Есть много областей математики, которые никто не собирался применять к реальной жизни. Лобачевский, например, геометрию свою придумал не для реальной жизни. Да она ему в реальной жизни не очень-то и помогла. А то, что потом эту идею развили разные другие люди, а Эйнштейн приспособил какие-то результаты — так это просто сопутствующие последующие факты. Сама математика живёт без причинной связи с реальным миром.


M>Можно даже так сказать: любая отрасль знаний, опирающаяся на строгую логику, и исследующая абстрактные модели — называется математикой.


R>Сказать — можно. Не уверен, что это будет правильно.


Найди лучшее определение, или опровергни это.
... << RSDN@Home 1.0 beta 7a >>
Re[19]: Что такое ООП
От: Rumata Россия http://atamur.livejournal.com
Дата: 02.06.03 14:29
Оценка:
Здравствуйте, mihailik, Вы писали:

R>>Посмотрите книги Арнольда по нечеткой логике

M>Я бы посмотрел, но поблизости нету. Может сам в двух словах прояснишь?
К сожалению, под рукой и у меня не оказалось. Может быть чуть позже найду. Там очень красочные примеры применения математики в необычных на первый взгляд областях.

M>Есть много областей математики, которые никто не собирался применять к реальной жизни. Лобачевский, например, геометрию свою придумал не для реальной жизни. Да она ему в реальной жизни не очень-то и помогла. А то, что потом эту идею развили разные другие люди, а Эйнштейн приспособил какие-то результаты — так это просто сопутствующие последующие факты. Сама математика живёт без причинной связи с реальным миром.

Согласен. Но есть одно но: существующие математические теории описывают больше, чем возможно в реальной жизни. Бывает и такое, что красивое математическое построение оказывается никому не нужным, т.к. таких объектов, на которых все рассматривается попросту не существует. Однако из этого множства теорий выделяли, выделяют и будут выделять те, которые, иногда неожидано, как в случае с теорией относительности, "ложаться" на реальный мир.

M>>Можно даже так сказать: любая отрасль знаний, опирающаяся на строгую логику, и исследующая абстрактные модели — называется математикой.

R>>Сказать — можно. Не уверен, что это будет правильно.
M>Найди лучшее определение, или опровергни это.
Нда, забавно, я понимал, что определение это проблема, но чтобы такая =))
Имхо самое удачное определение это "математика — это то, что написано в книгах по математике" =))
А вообще-то, в Вашем определение слишком много темных мест, чтобы его можно было считать определением =) ну, например, что такое "отась знаний", причем здесь "строгая логика" (В.И.Арнольд, как раз занимался нечеткой логикой =)) н и далее, по тексту =))
Re[6]: Что такое ООП
От: TK Лес кывт.рф
Дата: 02.06.03 20:10
Оценка:
Hello, "mihailik"
>
> Но всё-таки если выбирать самый классический язык ООП, то, уверен, победит Java.
>

а чем eiffel не нравится?
а java, ihmo это это больше академический язык.
Posted via RSDN NNTP Server 1.5
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[7]: Что такое ООП
От: Lloyd Россия  
Дата: 03.06.03 06:24
Оценка:
Здравствуйте, TK, Вы писали:

TK>а чем eiffel не нравится?

TK>а java, ihmo это это больше академический язык.

Да вы оказывается шутник, батенька.
Re[20]: Что такое ООП
От: mihailik Украина  
Дата: 03.06.03 13:10
Оценка:
M>Есть много областей математики, которые никто не собирался применять к реальной жизни.

R> Бывает и такое, что красивое математическое построение оказывается никому не нужным, т.к. таких объектов, на которых все рассматривается попросту не существует.


Красивое математическое построение может быть "никому не нужным" с внешней стороны. Но внутри математики, слава богу, это не самое главное. Это я и пытаюсь доказать: математика не имеет внешних причин, вроде описания реальности. Разве что гранты на реалистичные исследования могут различаться. Но не всегда.

R> Однако из этого множства теорий выделяли, выделяют и будут выделять те, которые, иногда неожидано, как в случае с теорией относительности, "ложаться" на реальный мир.


Контрпример: тараканы выделяют литературу, напечатанную натуральными красками, а синтетические не жалуют. Но сама литература на эти внешние тараканьих оценки особо не смотрит.


M>>Можно даже так сказать: любая отрасль знаний, опирающаяся на строгую логику, и исследующая абстрактные модели — называется математикой.

R>>Сказать — можно. Не уверен, что это будет правильно.
M>Найди лучшее определение, или опровергни это.

R>Нда, забавно, я понимал, что определение это проблема, но чтобы такая =))


Здесь нужно просто уяснить, что ты имеешь ввиду, когда говоришь "математика". Действенный метод для таких общих понятий.

R>Имхо самое удачное определение это "математика — это то, что написано в книгах по математике" =))


Не рублю соль в этом определении. Если состязаться с такими перлами, то я бы сказал, "математика — это гнилой сыр".

R>А вообще-то, в Вашем определение слишком много темных мест, чтобы его можно было считать определением =) ну, например, что такое "отась знаний", причем здесь "строгая логика" (В.И.Арнольд, как раз занимался нечеткой логикой =)) н и далее, по тексту =))


Конечно, смутность есть. Но она не мешает, определение-то работает.

Определение должно быть адекватным определяемому понятию. И должно показывать, что можно называть определяемым словом, а что нет. Моё определение, кажется, вполне соотвествует. Приложи к нему любой предмет — и оно покажет, является ли предмет математикой или нет.
... << RSDN@Home 1.0 beta 7a >>
Re[7]: Что такое ООП
От: mihailik Украина  
Дата: 03.06.03 13:10
Оценка:
> Но всё-таки если выбирать самый классический язык ООП, то, уверен, победит Java.

TK>а чем eiffel не нравится?

TK>а java, ihmo это это больше академический язык.

Именно-именно! Eiffel годится, но если искать чего-то классического, академического, остаётся наш основной кандидат.
... << RSDN@Home 1.0 beta 7a >>
Re: Огонь что это?
От: Аноним  
Дата: 06.06.03 16:57
Оценка: +1
Здравствуйте, Rumata, Вы писали:

Читая эту ветку, вспомнилось мне:

... они говорят: "На что оно похоже — то, что ты видел? И он пытается рассказать им. Быть может, он видел самый первый в мире огонь. Он говорит им: "Он красен, как мак, но пляшут в нём и иные цвета. У него нет формы, как у воды, он текуч. Он тёплый, как летнее солнце, даже теплее. Он существует какое-то время на куске дерева — и дерево исчезает, будто съеденное, остаётся что-то чёрное, сыпучее, как песок. И он исчезает вместе с деревом." И вот слушатели вынуждены думать, что реальность эта схожа с маком, с водой, с солнцем, с тем, что ест и испражняется. Они думают, что она, эта реальность, схожа со всем, чему она подобна по словам познавшего её. Но вот огонь снова и снова появляется в этом мире. Всё новые и новые люди видят его. И спустя какое-то время огонь становится так привычен, как трава, облака, как воздух, которым они дышат. И они видят, что хотя и похож он на мак, это не мак, хотя и похож на воду, не вода, хотя похож на солнце, но не солнце, хотя похож на того, кто ест и испражняется, всё же это не тот, кто ест и испражняется, но нечто отличное от каждого из этих предметов или ото всех их разом. Так что смотрят они на эту новую суть и изобретают новое слово, чтобы назвать её. Они зовут её "огонь".
— Если же случится им вдруг встретить человека, который ещё не видел огня, и они скажут ему о нём, не поймёт он, что же они имеют в виду. И опять им, в свою очередь, придётся говорить ему, на что похож огонь. Но при этом они знают по собственному опыту, что говорят они ему не истину, а только часть истины. Они знают, что человек этот никогда не познает с их слов реальность, хотя и могут они использовать все слова на свете. Он должен взглянуть на огонь, ощутить его запах, согреть у него руки, всмотреться в его сердце — или остаться навеки неведающим.

Р. Желязны, Князь Света

Сдаётся мне, что Rumat'е может помочь в ответе на этот вопрос только собственный опыт, т.к. опыт лучший друг программиста (и злейший враг его также).
Re[2]: Что такое ООП
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 08.07.04 15:26
Оценка: 7 (2)
А так ли много потеряно?
Как-то не убеждают меня приведенные аргументы, что мы идем неверным путем. Сейчас я попробую каждый из них прокомментировать. Я не настаиваю на своей точке зрения — напротив, очень хотелось, чтобы, если я чего-то не вижу, мне это объяснили. Поскольку я совершенно не разбираюсь, в частности, в SmallTalk и мое мнение о нем основано на той самой статье, на которую ссылается _vovin.

Итак, концепция ООП чудовищно изуродована и сужена? То есть многое, что легко и красиво можно реализовать при изначальной трактовке ООП, становится сложным и запутанным, а подчас и невозможным?
Сразу оговорюсь,

_>Но это является пагубным упрощением, которое практически сводит на нет всю идею объектного подхода. Где главным выигрышем является возможность непосредственного манипулирования динамическим миром объектов посредством гибкой операции посылки сообщения, минуя привычную чрезмерную серию трансформаций текст->код->запуск->взаимодействие->результаты->текст->...

Не понимаю...
Во-первых, откуда хвост "результаты->текст->..."? Что это за процесс описывается, создание программы, что ли?
Во-вторых, как переход от концепции вызова метода к концепции посылки сообщения позволит обойтись без текста, или кода, или взаимодействия? Ну ладно еще без запуска — при определенной организации создаваемого кода его может быть просто не нужно как-то особо запускать...
А насчет описанного в предлагаемой статье примера процесса разработки можно сказать: такой подход отличается от обычного лишь тем, что окна отладчика все время висят на экране. Все равно в какие-то моменты времени программист ими пользуется, а в другие — пишет код и реализует методы, и вот тогда ему отладчик совершенно не нужен. Иногда, конечно, нужен (ради того самого контекста выполнения) — но ведь для редактирования кода не обязательно выходить из режима отладки, можно продолжать любоваться контекстом.

_>Кое-что на эту тему можно прочитать здесь.

Стало жутко интересно, прочитал. Не убедили

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

такие языки называются prototype-based; в них создание новых типов объектов осуществляется посредством клонирования имеющихся и внесения изменений непосредственно в структуру нового объекта

То есть я в ответ на некое сообщение могу взять какой-то прототип, сделать с него копию и выкусить из копии пару полей или реакций на события? А какая мне от этого польза, ведь объекты, сконструированные на базе такого прототипа, не будут целостными? Ну, в плане добавления полей и реакций все вроде бы понятно. Непонятно только, зачем это делать при эксплуатации разработанной программы? Ведь возможные генерируемые таким образом прототипы все равно должны быть учтены при проектировании, а тогда их, вероятно, лучше описать заранее, чтобы не осложнять понимание программы? Иначе говоря, я опять же не вижу реальных преимуществ по сравнению, скажем, с Delphi и тем более с C# (C++ в расчет не беру только потому, что в языке отсутствует возможность конструирования объектов, класс которых на этапе компиляции неизвестен).

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

Автор-то понимает, о чем сказал, а мне как быть? Что это означает и какие возможности открывает?

Мне пока пришло на ум только одно потенциальное преимущество: можно использовать в своих откомпилированных разработках сторонние классы, неизвестные на момент компиляции. Хотя хранение метаданных часто само по себе позволяет решить эту задачу, даже в рамках "суженной" концепции ООП.

Наконец, объясните мне, почему концепция вызова метода не может быть очень легко расширена до концепции посылки сообщения? В примитиве это вполне возможно даже в C, вспомним WinAPI SendMessage Если же сопроводить сообщение метаданными, описывающими передаваемую информацию и т.п., то разве концепции вызова метода будет недостаточно для воспроизведения операции посылки сообщения? Я не знаю, может быть, и нет.... Тогда, пожалуйста, объясните, в чем я ошибаюсь.




Теперь про скорость.

Тот факт, что одни типы вызовов в статически типизированных языках выполняются значительно медленнее других, объявляется автором статьи недостатком этих языков. Довольно странно — я бы сказал, хорошо, что некоторые менее общие типы вызовов выполняются быстрее, чем более общие. Вряд ли можно назвать достоинством подхода его единообразно медленную работу на всех операциях.
Врочем, далее автор опровергает мою сентенцию о единообразно медленной работе. Обратимся в слух:

Заметим, что посылка сообщения реализуется в динамических языках реализуется исключительно эффективно. По скорости она незначительно медленнее статического вызова. И, естественно, намного эффективнее виртуального вызова. (1)

Неплохо! Но в то же время:

Чем же таким особым обладает операция посылки сообщения (message passing), по сравнению с обычным вызовом метода (method invocation), который применяется в статически-типизированных языках?
Для начала, стоит разобрать из каких этапов состоят эти две операции.
И то, и другое имеет два основных этапа: поиск метода (method lookup) и собственно вызов метода (method invocation).

Откуда видно, что все метод равно нужно искать. Виртуальный вызов метода требует всего одного дополнительного обращения к памяти по ср. со статическим. Что в таком случае может быть медленнее статического вызова, но значительно быстрее виртуального (1)?

Кроме того, далее говорится о том, что в результате покупки динамического компилятора и его адаптации для Java удалось значительно ускорить работу Java-приложений. Вывод: Java-приложения работали медленно отнюдь не из-за ущербности Java по сравнению со Smalltalk или, в частности, из-за преимущества технологии посылки сообщений перед вызовом методов, а из-за меньшей эффективности компилятора и среды выполнения.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[4]: Что такое ООП
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 08.07.04 15:49
Оценка:
Здравствуйте, mihailik, Вы писали:

M>А что, есть какие-то стандарты "реляционности" баз данных?

Насчёт стандартов не знаю, но базис есть. Называется теорией множеств.
Re[3]: Что такое ООП
От: WolfHound  
Дата: 08.07.04 19:49
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM>(C++ в расчет не беру только потому, что в языке отсутствует возможность конструирования объектов, класс которых на этапе компиляции неизвестен).

А ты случайно не забыл про абстрактные фабрики? Ну да ни чего... я напомню...
В прочем это оффтоп в данной теме.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Что такое ООП
От: Воронков Василий Россия  
Дата: 08.07.04 19:59
Оценка:
Здравствуйте, Rumata, Вы писали:

R>Вот например, всем известно, что бывают у объектов эл-ты public, private и protected. А почему только 3? Почему нет какого-нибудь четвертого?


Четвертое как правило есть А часто бывает еще и пятое, и шестое
Re[4]: Что такое ООП
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 08.07.04 20:23
Оценка:
Вот бука! Андрей, так это ж не в языке В языке присутствует возможность дать пользователю это сделать, но сам язык ничего не знает об абстракных фабриках.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.