nixp.ru v3.0

26 декабря 2024,
четверг,
18:34:22 MSK

Longobard написал 25 сентября 2005 года в 18:55 (951 просмотр) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

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

Нужно, чтобы при ее реализации имело смысл использование ООП (конечно при желании можно даже Hello World написать с использованием хитрой иерархии классов и шаблонов, но все же хотелось бы чтобы ООП было тут в тему). Причем чем больше — тем лучше.

Практическая ценность задачи может быть и нулевая. По книжке C++ глубоко не изучишь, нужна практика. А просто реализовывать тот или иной изврат на примере классов A, B и C — скучно :) Нужна реальная цель, а не «ух ты, круто, работает, читаем следующую главу».

В общем заранее спасибо за любые мысли по теме :)

anonymous

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

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

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

Uncle Theodore
zIG
А реальный мир состоит из объектов. И чтобы программа была более адекватна предметной области в ней тоже нужно использовать концепцию объектов.

Объективист! Живой объективист, это ж надо! Ayn Rand и Nathaniel Branden в одном флаконе. Ату его, ату! :-)

Good Luck,

UT

decvar

:D

жжжжошь!

anonymous

Я что-то неправильно понимаю? Может подискуссируем? :)

decvar

[flame]

«хочешь поговорить об этом?"(c)

[/flame]

just kidding ;)

myst
zIG
Я что-то неправильно понимаю? Может подискуссируем? :)

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

rgo

LONGBOARD слушай:

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

мне кажется zIG дело говорит Мне сложно оценить что же позволяют творить шаблоны, тк я предпочитаю C. Но всё же рискну развить тему. Моделирование какой-нибудь системы, сильно сподвигает на использование полиморфизма. Например, можно следом за Кнутом моделировать работу лифта. Но лифт, наверное, слишком простой пример. Так же как стратегия или ещё хуже мир — слишком сложны. Ну так моделируй общественный туалет, метрополитен, аэропорт или ещё что-то. А чтоб совсем весело было, забудь про существование stl.

Longobard

Гы, а топик то жив :)

Почему я не хочу игру… Эмм, я просто на работе был занят как раз таки над проектом игрухи онлайновой, и у меня уже от слов Hp, Strength, Agility итд начинается понос и краснуха, в общем надоело игры писать :) А идея про модель апщественного туалета — гуд ;)

anonymous

Что касается моделирования, то вот чего я наслушался и что мне понравилось в универе: «Модель — это то, что позволяет отвечать на заданные вопросы к моделируемой системе с заданной точностью. Моделирование должно иметь цель.» То есть, прежде чем моделировать что-то, нужно определить те вопросы, на которые модель должна будет ответить. Например модель судна делают для проверки плавучих свойств, модель бизнесс-процесса для выяснения возможностей его совершенствования (в том числе и автоматизации).

Поэтому вопрос: какова цель моделирования общественного туалета? Ради самого моделирования?

Модель без цели — это бессмыслица. Если цели нет, то подразумевается, что модель должна отвечать на все вопросы, либо ни на один. Модель, отвечающая на все вопросы — это сам объект. Тебе нужен свой общественный туалет!? :)

Longobard

Да, буду водить друзей на экскурсию :D

Хм, а на тему моделей процессов — это интересно….

anonymous

Послушай, zIG, ты и вправду чего-то не того наслушался в своем универе.

Моделирование не обязано иметь каких либо целей или может иметь целью само моделирование. Детские модельки самолетов и автомобилей не призваны ответить ни на какие вопросы. Модели домов из кубиков призваны улучшить способности детей к моделированию.

Во взрослой жизни моделирование называется наукой. Любая наука строит модели, математические или не очень, абстрагируясь от неважных вещей и заменяя терминами (кубиками) вещи важные. Законы Ньютона — часть модели движения, с материальными точками и их скоростями и ускорениями (а также силами, массами и прочим антуражем в реальной жизни не встречающемся) в качестве кубиков. Математика занимается моделированием ради самого моделирования, придумывая новые кубики и исследуя возможности их соединения в конструкции.

ООП — одна из технологий моделирования. Ее отношение к реальной жизни ничуть не более близкое, чем у дифференциальных уравнений. Некоторые задачи удобнее решать в этой парадигме, некоторые — процедурно (чего никак не могут понять разработчики Джавы). Реальный мир состоит из объектов не более, чем он состоит из детских кубиков или функций и их производных. Теория Айн Рэнд — что-то типа мальчика для битья в современной философии. Попытка объявить модели реальными и существующими независимо от модельера привела к краху многие философские течения, не только материалистические, позитивистов, например. Погугли на доктрину «АНАТМАНа» в буддизме, например, если тебе интересно.

Такие вот дела, братец. :-)

Good Luck,

UT

anonymous

:)

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

Я не согласен с тем, что модели можно строить без цели.

Любая наука строит модели, математические или не очень, абстрагируясь от неважных вещей и заменяя терминами (кубиками) вещи важные

Если нет цели моделирования, то что считать критерием важности?

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

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

anonymous
zIG
:)

Все делается для чего-то. Математика не просто строит модели от нечего делать.

Поверь мне, именно этим она и занимается. :-) Некоторым математическим разработкам везет, и они используются разными науками ПОСЛЕ ТОГО, КАК они проидуманы. Повезло, например, Леви-Чивитовским тензорам, их Эйнштейн использовал для записи уравнений своей общей теории относительности. Правда, те уравнения в общем случае хрен решишь, так что польза тут тоже весьма сомнительная…

В чем полезность теории Галуа? В теореме Абеля, утверждающей, что уравнение пятой и выше степени не разрешимо в радикалах? Ну и что?

Ньютон и Лейбниц создали дифференциальное и интегральное исчисление вместе с физической теорией движения. А зачем была создана топология? По инерции, при разработке теоретических оснований этого исчисления. Может, когда и ей повезет. Кому нужна теория гомологий, теория пучков и алгебраических систем? Пока никому. В чем прелесть теории категорий? В том, что она такая красивая есть. :-) Кого интересует Великая Теорема Ферма? Всех. А почему? А просто… :-)

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

Да-да, именно так оно все и было… :-) См выше.

Я не согласен с тем, что модели можно строить без цели.

Все, что угодно можно делать бесцельно, а потом оправдывать сколь угодно высокой целью. :-) Или строить с целями, не сводящимися к ответам на вопросы, которые может дать сама модель.

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

А зачем что-то оставлять кому-то? Мы — мысляшие личности, давай мыслить. :-)

Good Luck,

UT

Longobard

Uncle_Theodore вам пора сесть за написание книги на тему «Что такое модели и с чем их едят». Честно, очень интересно :)

anonymous
Поверь мне, именно этим она и занимается. :-) Некоторым математическим разработкам везет, и они используются разными науками ПОСЛЕ ТОГО, КАК они проидуманы. Повезло, например, Леви-Чивитовским тензорам, их Эйнштейн использовал для записи уравнений своей общей теории относительности.

Кого интересует Великая Теорема Ферма? Всех. А почему? А просто… :-)

Убедил :)

Я себе эти факты вполне определенно объясняю особенностями человеческого мышления. Вот как я себе его представляю:

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

Вот такое у меня представление. Оно не полное и не претендует на правоту. Я попробовал формализовать более-менее те образы, которыми, я себе все это представляю. Если бы вы знали какими образами я себе ето представляю!

Поэтому давайте не будем про модель мозга и искусственный интеллект? :)

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

Ну, например:

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

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

Хочется просто сказать, что цель важна при целенаправленном изучении систем. Но ведь это масло масленное, и ежу это понятно! :)

А зачем что-то оставлять кому-то? Мы — мысляшие личности, давай мыслить. :-)

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

anonymous

Устройся на работу, и там вовсю используй шаблоны проектирования :)

Longobard

Работал я летом, вовсю использовал (правда не шаблоны, а просто иерархию классов, т.к. приходилось писать на PHP 4) :) А теперь надо учитсо.

Steck

Ух ты. Универ отдыхает…

Когда вторая лекция? ;D

Longobard

Усе, задачу нашол, интересную и все такое ;)

sarel

И чего за задача если не секрет??

anonymous

Я вот тоже хочу вставить свои пять копеек.

Тут вот говорили про ООП, процедурный подход. А ведь вся эта музыка решает лишь заранее формализованые задачи. А 80% задача либо не формализуются, либо это очень проблематично. Вот где поле для деятельности! А вы про ООП и шаблоны.

Any_Key

2 UT

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

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

2 LONGOBARD

давай колись,интересно же.

Longobard

участие в разработке одной С++ либы, подробностей сказать не могу т.к. обещал не говорить :)

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.