Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Когда ООП не ООП, Сравнение ОО-моделей некоторых языков 
:(
    Опции темы
DENNN
Дата 2.3.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Попалась в сети маленькая статья. Думаю кому-то будет интересно:
http://www.itk.ru/article/oo_paul.shtml
PM ICQ   Вверх
setq
Дата 2.3.2006, 13:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Интересно посмотреть на этот CLU
  Вверх
Exception
Дата 2.3.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



Несогласен со многими утверждениями. Тем более, статья устарела.
PM   Вверх
LSD
Дата 2.3.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Exception @ 2.3.2006, 15:15 Найти цитируемый пост)
Тем более, статья устарела.

Потому что .NET не рассматривается? smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
DENNN
Дата 2.3.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Цитата(Exception @ 2.3.2006, 15:15 Найти цитируемый пост)
Несогласен со многими утверждениями. Тем более, статья устарела.

поподробнее пожалуйста smile. Меня например многие помеченные особенности зацепили.
PM ICQ   Вверх
Exception
Дата 2.3.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



LSD smile
Для начала, в Яве уже есть дженерики aka параметризованные типы aka шаблоны. Потом я совершенно не вкурил, что там аффтар писал про "сохранение доступности" и необходимость использования public-членов в Яве. Затем, меня удивило, что "в новых версиях С++ появились шаблоны...". Я думал, они были еще давным-давно smile . Потом еще уж слишком мягко сказано о поддержке исключений в С++. Они чрезвычайно неформализованны. К примеру, одни функции стандартной библиотеки кидают исключение, другие возвращают -1, WinAPI вообще Бог знает что возвращает. В Java/.NET это куда более формализовано. Затем, удивила фраза "типы "первого" сорта нельзя описать средствами языка (это относится и к С++)". Покажите мне язык, где самому можно написать int.
PM   Вверх
LSD
Дата 2.3.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Exception @ 2.3.2006, 16:30 Найти цитируемый пост)
Для начала, в Яве уже есть дженерики aka параметризованные типы aka шаблоны.

Генерики, это не шаблоны.


Цитата(Exception @ 2.3.2006, 16:30 Найти цитируемый пост)
Потом я совершенно не вкурил, что там аффтар писал про "сохранение доступности" и необходимость использования public-членов в Яве.

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

Такими ограничениями являются: отказ от средств определения классов, отказ от статического контроля типов, поддержка во время выполнения контроля типов и классов памяти объектов, изменение структуры программы c "классово-ориентированной" на "модульно-ориентированную".

Таким образом, этот язык-спутник является языком использования объектов, оставляя их определение более мощному и удобному для этого базовому языку. Компилятор базового языка при компиляции класса должен генерировать специальные модули для связи интерпретатора байт-кода языка-спутника с реализацией класса.

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

Ну просто один в один Windows Scripting.


Цитата(Exception @ 2.3.2006, 16:30 Найти цитируемый пост)
Покажите мне язык, где самому можно написать int.

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



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Exception
Дата 2.3.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



Хм. А чем дженерики отличаются от шаблонов в Сцы++?
PM   Вверх
LSD
Дата 2.3.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Exception @ 2.3.2006, 17:42 Найти цитируемый пост)
Хм. А чем дженерики отличаются от шаблонов в Сцы++?

Не порождают дополнительный код, это только опция языка. Что-то типа autoinboxing, чуть удобней писать код, но ничего принципиально нового нет. Код с генериками запросто можно скомпилировать для выполнения в JVM версий младше 1.5.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Exception
Дата 2.3.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 2
Всего: 186



[offtop]
Ладно, другой вопрос smile
Чем дженерики в Java отличаются от дженериков в .NET?
Цитата(LSD @ 2.3.2006, 18:49 Найти цитируемый пост)
Код с генериками запросто можно скомпилировать для выполнения в JVM версий младше 1.5.

Как это smile
[/offtop]

PM   Вверх
LSD
Дата 2.3.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Exception @ 2.3.2006, 18:06 Найти цитируемый пост)
Чем дженерики в Java отличаются от дженериков в .NET?

Я не знаком с генериками в .NET.

Цитата(Exception @ 2.3.2006, 18:06 Найти цитируемый пост)
Как это

Борландовский компилятор это умеет. Там нет ничего такого, что требавало бы поддержки со стороны JVM.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Void
Дата 2.3.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(LSD @ 2.3.2006, 20:36 Найти цитируемый пост)
Чем дженерики в Java отличаются от дженериков в .NET?

В Java, как сказал LSD, это не более чем синтаксический сахар. В .NET дженерики напрямую поддерживаются рантаймом, и JIT создает для value-типов более эффективные специализации — без boxing/unboxing.
Цитата(Exception @ 2.3.2006, 18:30 Найти цитируемый пост)
К примеру, одни функции стандартной библиотеки кидают исключение, другие возвращают -1, WinAPI вообще Бог знает что возвращает. В Java/.NET это куда более формализовано.

Хм... «Формализовано» — это, пожалуй, не совсем удачный термин в данном контексте. Никакого математического формализма за повсеместным применением исключений в Java/.NET не стоит. Просто их фреймворки навязали стиль “exceptions everywhere”, и им предпочитают пользоваться, хотя «индусам» от программирования это не помеха. Что до C++, то как раз в стандартной библиотеке используются только исключения.

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


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
chipset
Дата 2.3.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 4
Всего: 164



Цитата(Exception @ 2.3.2006, 06:30 Найти цитируемый пост)
WinAPI вообще Бог знает что возвращает. В Java/.NET это куда более формализовано.

А ну, попробуй обратиться к Win32Api функциям из C#? Неужто тоже выбрасывают исключения? :O
Задолбало уже ассоциирование С++ c MFC или, того хуже, Win32Api. C++ это STL и Boost.

А теперь критика статьи.
Цитата

Совершенно неприемлемым является то, что любое изменение private-членов и особенно private-методов класса приводит к необходимости перекомпиляции всех модулей, использующих этот класс. Зто прямое нарушение инкапсуляции.

Я так полагаю аффтар немного недоучил C++. Если выделять C++ методы в .cpp файл то не надо никакой перекомпиляции.
Цитата
1.1.3. Язык CLU

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


Если вы такие умные то почему вы такие бедные? Я про этот CLU в первый раз вообще слышу, судя по тому что статья старая, он так и остался "идеальным" языком.
Цитата

С нашей точки зрения, множественное наследование в C++ - классическое "темное место", и видимо поэтому разработчики предпочитают не использовать его (кроме самых простых случаев). Сложные иерархии классов проектировать в C++ очень трудно.

Аффтар не читал никогда Александреску.

---
Со всем остальным я согласен.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Void
Дата 2.3.2006, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(chipset @ 2.3.2006, 23:24 Найти цитируемый пост)
Я так полагаю аффтар немного недоучил C++. Если выделять C++ методы в .cpp файл то не надо никакой перекомпиляции.

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

Цитата(chipset @ 2.3.2006, 23:24 Найти цитируемый пост)
Со всем остальным я согласен.

И с трехуровневой моделью тоже? По мне так это overkill во многих случаях.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
maxim1000
Дата 2.3.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата(chipset @ 2.3.2006, 20:24 Найти цитируемый пост)
Я так полагаю аффтар немного недоучил C++. Если выделять C++ методы в .cpp файл то не надо никакой перекомпиляции.

Цитата(Void @ 2.3.2006, 20:39 Найти цитируемый пост)
Я так полагаю, речь идет об изменении сигнатур private-методов. Тогда от перекомпиляции уже не отвертишься, хотя по идее это не меняет контракт класса, и клиентам должно быть все равно.

да, частенько это неприятно, прчина простая - чтобы выделить объект в стеке надо знать его размер

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

в том-то я приятность C++ - в нем много чего не встроено (как элемент языка), но это можно сделать
Добавлено @ 23:55
ну или privat-часть выделить в отдельный объект, а в основном оставить на нее указатель, это уж кому как нравится...


--------------------
qqq
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.