Ada_Ru форум

Обсуждение языка Ада

К вопросу об указателях

Оставить новое сообщение

Сообщения

Vadim Godunko
К вопросу об указателях
2007-07-26 17:25:32

Доброго времени суток!

 

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

 

http://www.adapower.com/index.php?Command=Class&ClassID=Patterns&Title=Patterns

On Thu, 26 Jul 2007 21:25:32 +0400, you wrote:

 

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

 

http://www.adapower.com/index.php?Command=Class&ClassID=Patterns&Title=Patterns

 

Я использую несколько другую технологию указателей. Постараюсь объяснить разницу. Во-первых Handle должен быть публично Controlled. Это полезно, для делегирования и специализированных указателей. Иначе, не будет dispatch-а на примитивных операциях Handle. По-вторых, объекты выводятся из общей базы. Это снимает необходимость в узлах, т.к. reference count получается по-наследованию. Другая причина - сравнение объектов. Они наверняка будут строить иерархию, и понадобится эмуляция double-dispatch для построения разных упорядоченных контейнеров гетерогенных объектов. Третья причина - можно относительно легко добавить persistence layer. Четвертая -

Controlled-объекты в Аде автоматически убиваются по уничтожении

указательного типа. В Finalize если reference count не 0 возбуждается, Program_Error. Так по выходе из "нормально" работающей, но "текучей" программы, получается Program_Error. Бывает исключительно полезно. Пятая - можно иметь много разных типов указателей. Например, реализация массива объектов содержит "глупые", но быстрые указатели, а счетчики увеличивает сама. Шестая - реализовать клонирование, например для штук типа разделяемых строк или узлов деревьев, попроще будет.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

On Thu, 26 Jul 2007 23:32:05 +0400, you wrote:

 

Dmitry A. Kazakov wrote:

 

Я использую несколько другую технологию указателей. Постараюсь объяснить разницу.

Если не секрет, можно какие примеры на [псевдо]коде? :)

 

Ну зачем же псевдо, описание и код здесь:

 

http://www.dmitry-kazakov.de/ada/components.htm#Objects_etc

 

(Пример реализации примитивных разделяемых строк далее по тексту)

...

Всё - Ада 95, так что указательные типы именованы, у Heany - тоже. Есть интересный вопрос следует-ли использовать анонимный указательный тип с переходом на Аду 2005. Имеется подозрение, что, нет. Причина -

необходимость работы с пулами памяти, что вполне естественно для GC схем. Преобразование неспецифичных указателей в специфичные - геморрой. Но, надо будет посмотреть, когда GNAT стабилизируется.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти