Инструмент для моделирования среды (иерархия объектов)
От: E.L.  
Дата: 08.03.05 20:18
Оценка:
Здравствуйте!
Передо мной стоит задача компьютерного моделирования некоторой (довольно абстрактной) среды, на которую существует масса разрозненных (и иногда противоречивых) описаний, и которую в общем можно представить как иерархию объектов со своими свойствами и методами. Количество объектов — от нескольких сотен до нескольких тысяч. Сама среда является динамичной, т.е. набор объектов и их поведение может меняться.

Очень бы не хотелось с самого начала ошибиться с выбором направления и средства. Поэтому вопрос: какое инструментальное средство (язык/среда/платформа/что-то еще) лучше всего подходит для описанной задачи?

Мне видится, как вариант, использование Object Pascal / Delphi IDE и описание системы средствами самого языка (получится библиотека, по виду и объему сопоставимая с VCL) или использование другого языка / его IDE аналогичным способом. Но какого именно? По-возможности, хотелось бы максимальной синтаксической простоты языка. Синтаксис Object Pascal, например, для меня выглядит громоздким и не всегда последовательным (постоянное употребление begin/end, сильно снижающее читабельность; дублирование описаний в interface и implementation; отсутствие обозначения, указывающего на конец языковой конструкции (довольно часто в коде можно увидеть восполнение этого недостатка в комментариях типа '//end if' или 'end;//if') и др.)

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

Кроме этого, наверняка существуют системы/языки, специально созданные для такого рода моделирования. (Просто я пока с такими не сталкивался.) При этом мне бы не хотелось свалиться куда-нибудь в чисто теоретическое направление для решения этой, в общем-то, прикладной задачи.
Re: Инструмент для моделирования среды (иерархия объектов)
От: StanislavK Великобритания  
Дата: 09.03.05 11:59
Оценка:
Здравствуйте, E.L., Вы писали:

EL>Кроме этого, наверняка существуют системы/языки, специально созданные для такого рода моделирования. (Просто я пока с такими не сталкивался.) При этом мне бы не хотелось свалиться куда-нибудь в чисто теоретическое направление для решения этой, в общем-то, прикладной задачи.


Думаю, что проще будет использовать языки, которые поддерживают динамику на уровне классов — ты сможешь создавать динамически новые типы. К языкам, в которых это точно возможно, относятся C# & Java.
Re: Инструмент для моделирования среды (иерархия объектов)
От: Quintanar Россия  
Дата: 09.03.05 13:03
Оценка:
Здравствуйте, E.L., Вы писали:

EL>Кроме этого, наверняка существуют системы/языки, специально созданные для такого рода моделирования.


Lisp
Re[2]: Инструмент для моделирования среды (иерархия объектов
От: E.L.  
Дата: 09.03.05 20:23
Оценка:
Здравствуйте, StanislavK, Вы писали:
SK>Думаю, что проще будет использовать языки, которые поддерживают динамику на уровне классов — ты сможешь создавать динамически новые типы. К языкам, в которых это точно возможно, относятся C# & Java.

Под динамикой имеется ввиду создание новых типов объектов (наследников от уже имеющихся) и наделение их событиями/свойствами/методами прямо в runtime ? С одной стороны, мне очень интересно было бы увидеть пример, как это реализуется на практике. С другой стороны, такая возможность не является непременным условием в моей задаче. На первом плане стоит удобный механизм/синтаксис описания/изменения объектов.
Re[2]: Инструмент для моделирования среды (иерархия объектов
От: E.L.  
Дата: 09.03.05 20:40
Оценка:
Здравствуйте, Quintanar, Вы писали:
Q>Lisp

Что то я вообще не понимаю, как нем можно описывать объекты (в указанном выше смысле) ...
Нельзя ли пример?
Да, и мне всегда казалось, что это практически мертвый язык. Существуют ли под него вообще развитые и поддерживаемые IDE?


P.S. Присматриваюсь к Python как инструменту описания объектов и Delphi для GUI.
Что скажете? Эх, увидеть бы пример реализации похожей задачи!
А то странно получается, на всех углах идет обсуждение ООП, а как на практике реализуется самая типичная задача, для которой собственно и идеология ООП разрабатывалась — непонятно.
Re[3]: Инструмент для моделирования среды (иерархия объектов
От: StanislavK Великобритания  
Дата: 10.03.05 07:53
Оценка:
Здравствуйте, E.L., Вы писали:

SK>>Думаю, что проще будет использовать языки, которые поддерживают динамику на уровне классов — ты сможешь создавать динамически новые типы. К языкам, в которых это точно возможно, относятся C# & Java.


EL>Под динамикой имеется ввиду создание новых типов объектов (наследников от уже имеющихся) и наделение их событиями/свойствами/методами прямо в runtime ? С одной стороны, мне очень интересно было бы увидеть пример, как это реализуется на практике. С другой стороны, такая возможность не является непременным условием в моей задаче. На первом плане стоит удобный механизм/синтаксис описания/изменения объектов.


Да, именно это и имеется в виду.
Я что-то не совсем понимаю твою задачу. Можешь поподробнее ее описать? Что есть "изменения объектов" в твоем понимании и зачем его надо писывать?
Re[3]: Инструмент для моделирования среды (иерархия объектов
От: Quintanar Россия  
Дата: 10.03.05 09:49
Оценка:
Здравствуйте, E.L., Вы писали:

EL>Что то я вообще не понимаю, как нем можно описывать объекты (в указанном выше смысле) ...

EL>Нельзя ли пример?
EL>Да, и мне всегда казалось, что это практически мертвый язык. Существуют ли под него вообще развитые и поддерживаемые IDE?

Из твоего сообщения трудно понять, что тебе конкретно необходимо. Возможно ты и сам еще не до конца это понял. Именно поэтому Лисп идеальный язык для моделирования. Он позволяет в runtime менять абсолютно что угодно — реализации классов, методов, функций и т.п + с помощью макросов ты можешь встроить в язык необходимые лично тебе концепции. Как описывать объекты это уж тебе решать, в самом Лиспе есть поддержка ООП — CLOS, а дальше уж сам решай насколько она тебе подходит. Бытует мнение, что Лисп функциональный язык, на самом деле он поддерживает одинаково хорошо все подходы — и императивный и функциональный и объектно-ориентированный.
Если не нравится тяжеловесность Common Lisp, можно взять Scheme, он легче и понятнее, хотя не предназначен для разработки крупных программ. Я не призываю писать все на Лисп. Основная задача, как я понял, систематизировать сначала предметную область, понять, так сказать, что и как нужно реализовывать. Выбор статического языка типа Паскаля, С++ был бы на мой взгляд ошибкой. Прототип лучше писать на чем-то гибком, пусть не на Лиспе, но тогда на O'Caml, например, или Python.
Лисп не мертвый язык, есть коммерческие реализации со своими IDE — lispworks, franz (можно скачать demo версию). Для open source (SBCL, CMUCL) есть очень хорошая поддержка в виде пакета slime для Emacs. Но народ боится Emacs, так что тут смотри сам.

Пример приводить смысла нет, все похоже на обычную реализацию. Главное отличие — это то, что главные в CLOS не классы, а методы. Т.е. не класс имеет некоторые методы, а метод имеет некоторые классы, и методы можно специализировать сразу для нескольких классов (мультиметоды). Еще там довольно сложная иерархия методов — есть дополнительные after, before и around методы. Before выполняются до вызова основного метода, after — после, а around — вместо.

EL>P.S. Присматриваюсь к Python как инструменту описания объектов и Delphi для GUI.

EL>Что скажете? Эх, увидеть бы пример реализации похожей задачи!
EL>А то странно получается, на всех углах идет обсуждение ООП, а как на практике реализуется самая типичная задача, для которой собственно и идеология ООП разрабатывалась — непонятно.

Я с Python'ом не работал, пусть специалисты скажут подходит он или нет.
Re[3]: Инструмент для моделирования среды (иерархия объектов
От: eugals Россия  
Дата: 10.03.05 11:27
Оценка:
Здравствуйте, E.L., Вы писали:

EL>P.S. Присматриваюсь к Python как инструменту описания объектов и Delphi для GUI.

EL>Что скажете? Эх, увидеть бы пример реализации похожей задачи!
Пример не дам, а пару скриншотов покажу
Автор: eugals
Дата: 04.08.04
.
... << RSDN@Home 1.1.4 beta 4 rev. 303>> {WinAmp: silent}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.