Re[4]: На базе чего лучше всего продемонстрировать ООП?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 10.06.10 13:10
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Здравствуйте, samius, Вы писали:


S>>Интересно, а что делает CCompositeDataProcessor при вызове ReceiveData? Опрашивает несколько IDataProcessor по очереди?

LD>Ну да. Это как стек драйверов. При посылке данных идем сверху вниз. При получении наоборот.
Как комбинируются результаты?

LD>>>Надеюсь,навел на интересные мысли


S>>ООП — не самое элегантное решение этой задачи

LD>1. Как бы вы ее решили?
В ФП задача решалась бы композицией функций.

LD>2. Постановка задачи проста и понятна. Решение в целом тоже.

Но неясна роль объекта.
Re[2]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 13:11
Оценка:
Здравствуйте, Ligen, Вы писали:

L>Я когда то занимался с учеником по основам проектирования — писали змейку классическую ****@

L>Рекомендую, очень простое ТЗ и море удовольствия

А где-то уже на код такой игрушки можно глянуть?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
От: WolfHound  
Дата: 10.06.10 13:17
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>А чем вышеупомянутое реактивное программирование хуже ООП для симуляции вообще и игр в частности?

Хотябы тем что отсутствуют связи межу объектами.
А если ввести кучу исскуственных связей то мы получим проблемы с производительностью на ровном месте.
Возмем к примеру http://ru.wikipedia.org/wiki/Crimsonland
Попробуй представить реализацию проверки попдания пули по монстру используя реактивное программирование.

Единственное куда в игрушках напрашивается РП это реализация сильно заскриптованных сцен как вот тут: State-Based Scripting in Uncharted 2: Among Thieves [40MB PDF]
В данном случае авторы обошлись корутинами но ИМХО РП тут просто напрашивается.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 13:34
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Я в качестве одного из примеров ООП описываю сетевое приложение. Ну или программу для конвертации чего-либо куда-нибудь


Проблема в том, что эти задачи в разы лучше решаются с помощью ФП.

Тут все элементрано. Задачи трансформации лучше решать с помощью ФП. Задачи симуляции — с помощью ООП.

LD>Чуть подробнее: есть сетевое приложение (общается по сокетам, файл перегоняет). Оборачиваем посылку данных в класс с определенным интерфейсом. Например вот так:

LD>
LD>class IDataProcessor
LD>{
LD> virtual void SendData(std::vector<BYTE> &vData) = 0;
LD> virtual void ReceiveData(std::vector<BYTE> &vData) = 0;
LD>}
LD>

LD>Т.о. образом IDataProcessor отвечает за отправку и получение данных. Появляется класс CNetworkDataProcessor, отправляющий данные по сети. CCompositeDataProcessor, отвечающий за вызов нескольких IDataProcessor по очереди. Появляется CCompressDataProcessor для сжатия и CEncryptDataProcessor для шифрования данных. Скорее всего тебе лучше использовать не сеть, а просто сохранение данных в файл.

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

LD>Надеюсь,навел на интересные мысли


К сожалению, нет. За время общения с миром ФП мои воззрения несколько изменились и теперь я весьма скептически смотрю на применение ООП без особого на то основания. А тут же задача продемонстрировать сам ООП на примере. Хотелось бы чтобы пример не вызвал лишних вопросов, а демонстрировал бы преимущества ООП.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе чего лучше всего продемонстрировать ООП?
От: FR  
Дата: 10.06.10 13:58
Оценка:
Здравствуйте, VladD2, Вы писали:


FR>>например решение задачи о восьми ферьзях в ООП


VD>Боюсь, что на этом примере можно продемонстрировать только то, что для логических задачах лучше использовать Пролог, а не ООП.


Это да
Но там эта задача рассматривается как задача имитационного моделирования, так что ООП вполне на месте оказывается.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 14:04
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>А чем вышеупомянутое реактивное программирование хуже ООП для симуляции вообще и игр в частности?


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

А так, да — реактивное программирование — это классический пример симуляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 14:05
Оценка:
Здравствуйте, frontsquat, Вы писали:

F>ООП к месту лишь в узком специализированном классе задач. Например, моделирование. Вряд ли это простой класс задач, подходящий для ваших целей. А в большинстве случаев ООП неуместно, криво, искусственно притянуто за уши. Поэтому лучше вообще не приводите пример с ООП.


Почти согласен, кроме оценки степени. Как раз на практике мест где ООП рулит море. Только практика она обычно далека от простоты и понятности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе чего лучше всего продемонстрировать ООП?
От: dsorokin Россия  
Дата: 10.06.10 14:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> А тут же задача продемонстрировать сам ООП на примере. Хотелось бы чтобы пример не вызвал лишних вопросов, а демонстрировал бы преимущества ООП.


Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде. И чем не подходят всякие точки, окружности, прямоугольники? Ведь твоя задача продемонстрировать преимущества Немерле при использовании ООП, а не преимущества самого ООП, которые итак многим известны.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 14:08
Оценка:
Здравствуйте, FR, Вы писали:

FR>Это да

FR>Но там эта задача рассматривается как задача имитационного моделирования, так что ООП вполне на месте оказывается.

А ссылку можно?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.10 14:19
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.


Возможно. Я их не читал. Предлагай...

D>И чем не подходят всякие точки, окружности, прямоугольники?


Явной бессмысленностью применения ООП для этого. И полному практическому не соответствию действительности.

D>Ведь твоя задача продемонстрировать преимущества Немерле при использовании ООП, а не преимущества самого ООП, которые итак многим известны.


Моя задача не вызвать у читателя ощущения, что ему снова дурят голову разными фибоначами и родословными шариков. Меня самого выворачивает от этого.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: На базе чего лучше всего продемонстрировать ООП?
От: FR  
Дата: 10.06.10 14:22
Оценка: 77 (3)
Здравствуйте, VladD2, Вы писали:


VD>А ссылку можно?


Книжка тут http://www.ozon.ru/context/detail/id/136821/
Ну и так как в бумажном виде она сейчас недоступна можно посмотреть электрическую версию например
тут http://webmate.net.ru/ebooks/book73.html
Re: На базе чего лучше всего продемонстрировать ООП?
От: ZevS Россия  
Дата: 10.06.10 14:37
Оценка:
Здравствуйте, VladD2, Вы писали:

Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные. Кроме этого есть критерии оценки прохождения теста и различные метрики, как то — общее количество вопросов в тесте, количество вопросов с правльными оценками, процент правильных ответов, наиболее трудные вопросы. Тесты могут быть иерархичными — получаем группировку метрик. Возможны метрики по студентам: кто ответил лучше всех, средний бал... Вопросы могут быть отмечеты тегами, получаем группировку метрик по тегам (тегам + студентам).

Соответственно можно предусмотреть:
  • получение входных данных из различных источников: XML, .csv, база данных,
  • вывод результатов в различных форматах
  • Re[2]: На базе чего лучше всего продемонстрировать ООП?
    От: WolfHound  
    Дата: 10.06.10 14:57
    Оценка:
    Здравствуйте, ZevS, Вы писали:

    ZS>Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные.

    Это решается в функциональном стиле гораздо лучше.
    ... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
    Пусть это будет просто:
    просто, как только можно,
    но не проще.
    (C) А. Эйнштейн
    Re[3]: На базе чего лучше всего продемонстрировать ООП?
    От: ZevS Россия  
    Дата: 10.06.10 15:24
    Оценка:
    Здравствуйте, WolfHound, Вы писали:

    ZS>>Можно реализовать приложение для работы с результатами тестов. Тест содержит вопросы с вариантами ответов, некоторые из них правильные.

    WH>Это решается в функциональном стиле гораздо лучше.

    Возможно.
    Re[6]: На базе чего лучше всего продемонстрировать ООП?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.06.10 16:29
    Оценка:
    Здравствуйте, FR, Вы писали:

    FR>Книжка тут http://www.ozon.ru/context/detail/id/136821/

    FR>Ну и так как в бумажном виде она сейчас недоступна можно посмотреть электрическую версию например
    FR>тут http://webmate.net.ru/ebooks/book73.html

    Там ~300 страниц. Может подскажешь в каком разделе искать интересные примеры?
    Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
    Re[4]: На базе чего лучше всего продемонстрировать ООП?
    От: samius Япония http://sams-tricks.blogspot.com
    Дата: 10.06.10 16:34
    Оценка:
    Здравствуйте, dsorokin, Вы писали:

    D>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.


    Там не ахти какие идеи ООП. Да и подается все под соусом, что читателю наверняка придется писать библиотеки для использования на C#, взаимодействовать с FCL, потому и показывают как готовить объекты.
    Re[7]: На базе чего лучше всего продемонстрировать ООП?
    От: FR  
    Дата: 10.06.10 17:02
    Оценка:
    Здравствуйте, VladD2, Вы писали:


    VD>Там ~300 страниц. Может подскажешь в каком разделе искать интересные примеры?


    Главы 5, 6 и 8 ну и в 19 уже сложный пример (IDE)
    Re[5]: На базе чего лучше всего продемонстрировать ООП?
    От: gandjustas Россия http://blog.gandjustas.ru/
    Дата: 10.06.10 17:18
    Оценка:
    Здравствуйте, samius, Вы писали:

    S>Здравствуйте, dsorokin, Вы писали:


    D>>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде.


    S>Там не ахти какие идеи ООП. Да и подается все под соусом, что читателю наверняка придется писать библиотеки для использования на C#, взаимодействовать с FCL, потому и показывают как готовить объекты.


    Кстати идея, почему бы не написать расширение 2010 студии?
    Re[6]: На базе чего лучше всего продемонстрировать ООП?
    От: samius Япония http://sams-tricks.blogspot.com
    Дата: 10.06.10 17:29
    Оценка: 7 (1)
    Здравствуйте, gandjustas, Вы писали:

    G>Кстати идея, почему бы не написать расширение 2010 студии?


    интеграцию Немерла со студией!
    Re[8]: На базе чего лучше всего продемонстрировать ООП?
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 10.06.10 18:15
    Оценка: +1
    Здравствуйте, FR, Вы писали:

    FR>Здравствуйте, VladD2, Вы писали:



    VD>>Там ~300 страниц. Может подскажешь в каком разделе искать интересные примеры?


    FR>Главы 5, 6 и 8 ну и в 19 уже сложный пример (IDE)


    Кстати, мне очень понравилось первая глава этой книги где товарищ рассуждает о принципе Чёрча (об эквивалентнсоти языков по Тьюрингу) и рассуждения Сапира (лингвиста) из которых следует "язык программирования, на котором записывается решение задачи, напрямую влияет на ход мыслей программиста, заставляя его рассматривать задачу под определенным углом".

    Его вывод:

    Итак, как для компьютерных, так и для естественных языков справедливо: язык направляет мысли, но не предписывает их.

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