OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 15 Ноябрь, 2019 05:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 00:38 

Зарегистрирован: Пятница, 04 Декабрь, 2009 00:04
Сообщения: 3
Утро доброе, уважаемые форумчане!

Вот, в поисках чего-нибудь отличного от общепринятых языков и стандартов встретился с Компонентным Паскалем. Тут же почувствовал ностальгию по красоте кода на Паскале в 1 семестре... И тут же стукнули тяжелые мысли о страшном расположении скобок в С++, позже выработалось паскалеподобное написание, но появилось оно слишком поздно (а курсовая уже по большей части написана).

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

1)В С++ у меня была собственная реализация списка. Он реализован как набор шаблонных классов, что очень удобно - просто подставил нужный тип данных - вот список, заполненный требуемыми данными; в функцию сортировки передал в качестве аргумента функцию сравнения элементов - и всё работает. Весьма мощное средство.

Но вот вопрос. Насколько мне известно, в Компонентном Паскале нет шаблонов. (Надеюсь, передача функций как аргументов есть)
Каким же образом реализовать такой универсальный список?


И ещё вопрос. Часто в прикладных программах нужны таблицы. Наличие их в библиотеке Qt для С++ весьма приятно....
Как с этим обстоят дела в BlackBox? (можно ли, например, вручную заполнять таблицы, используемые для работы с базами данных , безо всякой привязки к конкретным СУБД - то есть "выдёргивать " таблицы из всего контекста их стандартного использования?).


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

Заранее спасибо)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 03:21 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4525
Откуда: Россия, Орёл
Аналога шаблонов нет.
Андрей@ писал(а):
Каким же образом реализовать такой универсальный список?
Языковыми средствами никак. Можно к среде прикрутить аналогичный механизм, но пока за 15 лет никто не прикрутил, значит... В КП стандартный подход такой: на базе мощного средства - сборки мусора - пропадает необходимость в повторяющемся коде управления памятью (напр. деструктор, освобождающий все элементы списка) - и списки делаются под задачу руками. Опять же - задачи решаются, проблем ни у кого от отсутствия способа сделать универсальный список не возникает... Разве что проблемы самообразования касательно основных алгоритмов и структур данных (разве их не должен знать любой, уважающий себя, программист?) Это я про свой опыт; как появится время, буду штудировать viewtopic.php?f=75&t=1970

Андрей@ писал(а):
(можно ли, например, вручную заполнять таблицы, используемые для работы с базами данных , безо всякой привязки к конкретным СУБД - то есть "выдёргивать " таблицы из всего контекста их стандартного использования?)
Работа с СУБД - см подсистему Sql (Dev-Man прежде всего и примеры). Про какие Вы таблицы - не понял. Пример приведите что ли... Таблицы как элементы интерфейса? - иделогия ББ - интерфейс непосредственно с обработкой данных (любых) не связан.

P.S. Тема - кандидат в ОДП. Товарищи, без фанатизма.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 06:46 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Всё же, думаю, надо разделять:
упорное возобновление вопроса одними и теми же зашоренными фанатами -- и повторное поднятие вопроса новичком.

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

Может, завести раздел типа "Стандартные вопросы новичков из партизанских краев".
Мы уже знаем эти стандартные вопросы, по мере возникновения можно соотв. веточку заводить, называя не слишком специфично. В данном случае, может быть, Про шаблоны.

Заодно человек будет видеть, что он не Америку открывает, а просто некий стандартный пунктик, который надо обдумать на предмет смены ментальных привычек.

----------------------
Кстати, в данном случае список с сортировкой можно сделать из записей ABSTRACT, ну и доопределять их, когда надо пользовать.

Только в большинстве маленьких рутинных задач проще "в лоб", как объяснил Е.Т., а способ с ABSTRACT хорош для специфических классов задач, где более-менее ясен набор примитивов работы с последовательностями, и он достаточно нетривиален, чтобы оправдать отдельный модуль, их инкапсулирующий.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 09:09 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Кстати, компонентов для таких обобщённых списков наделано уже много.
У Ивана Кузьмицкого что-то было, в коллекции Зинна - http://zinnamturm.eu.

Касательно их использования - Info21, в общем, отметил, что проще руками всё; в моём опыте - тоже, но я допускаю поправку на то, что у меня задачи такие - либо системные, либо прикадные нестандартные - типа графовых и т.п.; а человеку, решающему типовую прикладуху, могут такие библиотечки быть полезны.

И ещё: тут надо понять, не имеет ли Андрей под списками в виду массивы, т.е. индексируемую структуру, а?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 09:32 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Да у меня-то ничего особенного, просто различные часто используемые, рутинные, функции собраны в один класс, да и всё. Сортировку даже однажды чуть не сделал, да надобность в ней пропала :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 09:47 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 530
Откуда: Москва
Илья Ермаков писал(а):
У Ивана Кузьмицкого что-то было, в коллекции Зинна - http://zinnamturm.de
Илья, не надо так шутить - я кликнул на ссылку и увидел, что страницы больше не существует. Правильная ссылка http://www.zinnamturm.eu . Если и она загнется, то наступит окончательная и бесповоротная ж@%а.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 10:34 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Да, ошибся.

P.S. Для гуёвых приложений там, конечно, много всякостей; а так... у меня вот ни одного компонента оттуда нигде не применяется. Это не к критике хорошей коллекции, а к вопросу о ж. (часто последнее время поминается она на форуме :) ).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 11:15 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Андрей@ писал(а):
Каким же образом реализовать такой универсальный список?
Такой универсальный список (царь-машина) только преподавателям и студентам нужен. На реальной программерско-инженерной работе списки конкретные и пишутся по месту требования со своей спецификой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 12:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Peter Almazov писал(а):
Правильная ссылка http://www.zinnamturm.eu . Если и она загнется...
Что за черный пиар опять.
Никто не загибался, просто адрес поменялся на общеевропейский.
Прогресс можно сказать.

Этот архив не загнется. В том смысле, что Zinn обязательно передаст кому-то ресурс, если сам не сможет продолжать. Там самопиара не было и нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 14:33 

Зарегистрирован: Пятница, 04 Декабрь, 2009 00:04
Сообщения: 3
to Евгений Темиргалеев

Имею ввиду таблицы как элементы интерфейса.
Извиняюсь, что снова поднял битый вопрос... Искать не умею получается)


to Илья Ермаков

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

Что касается шаблонов.... Если поразмыслить, то в общем то всё для их использования уже есть. Называется найти и заменить))). Например все вхождения буковки T на нужный тип. И оформить это в отдельный модуль...

PROCEDURE compare(a:T,b:T):integer


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 14:59 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4525
Откуда: Россия, Орёл
Андрей@ писал(а):
Имею ввиду таблицы как элементы интерфейса.
С этими таблицами не густо. См. SqlControls, viewtopic.php?f=47&t=653. Можно формировать "таблицу" табуляциями (см. модуль-пример ObxPDBRep2 - разъясняется во встроенном учебнике, "5.1 Запись текстов")

Поднимите отдельную тему с описанием задачи где нужны таблицы - тогда Вам смогут более точно подсказать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 04 Декабрь, 2009 15:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Таблицы, например: viewtopic.php?f=47&t=653

По поводу "подстановка..." - эээ, шаблоны - это не подстановка. А кто типы будет проверять, извините, и т.п.?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Декабрь, 2009 21:44 

Зарегистрирован: Пятница, 04 Декабрь, 2009 00:04
Сообщения: 3
Илья Ермаков
Цитата:
По поводу "подстановка..." - эээ, шаблоны - это не подстановка. А кто типы будет проверять, извините, и т.п.?


Не очень понял. Мне понимается так:
Например есть класс:
Код:
template <class T> class listNode
{listNode* next,prev;
T data;}


где нибудь мы вызвали его так listNode<int> и сделалось вот что: в вышеприведённом коде все буковки T заменились на int, ну и вхождения listNode заменились на INTlistNode,
то есть получилось:
Код:
class INTlistNode
{INTlistNode* next,prev;
int data;}


Зачем добавилось INT? Просто потому, что в коде мы можем попросить создать класс listNode<char>, а если бы мы не изменили имя класса, то получилось бы, что мы дважды определяем его.

А уж после этого компилятор начинает просматривать код и проверять на корректность "раскрытия" шаблонов.
Или это делается как то совсем по-другому?
__________________________________________________________________________________
А что касается таблиц, то мне они нужны для стандартной задачи - реализовать машину Тьюринга.

И кажется, нашёл то, что надо: Controls->Insert Table Control.
Судя по событиям, на которые реагирует, полноценная таблица.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 10 Декабрь, 2009 22:24 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Не совсем так просто.
Шаблоны - это не препроцессор, а весьма плотно-привязанная часть компилятора.

(Поищите статью Зуева "История одного компилятора", про компилятор С++, которые они делали для голландцев; ныне потомок - компилятор ЗАО "Интерстрон").


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Декабрь, 2009 11:15 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Илья Ермаков писал(а):
Поищите статью Зуева "История одного компилятора" ...
Случайно не эта?: http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Декабрь, 2009 11:18 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Не, была другая, объёмная.

По-моему, так и называлась, как я выше написал.

Или эта..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 14 Декабрь, 2009 11:41 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Вроде та... В смысле, читал именно такую раньше в online и с Вашим названием.
Поучительная история, как ИТ-профессионалы открывают для себя давно известные инженерные принципы
И ничего не сделаешь вроде, доходит только через руки не только в ИТ....


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 01 Октябрь, 2010 23:42 

Зарегистрирован: Среда, 22 Февраль, 2006 10:35
Сообщения: 144
Откуда: Новочеркасск
Прочитал статью по ссылке... А про какую известную бельгийскую фирму в ней речь?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Октябрь, 2010 08:59 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
При размышлении о необходимости шаблонов все больше убеждаюсь, что они - стрельба из пушки по воробьям.
Изначальное их предназначение - повышение производительности программиста.
Казалось бы, как здорово: написал ОДИН раз - и все работает на всю оставшуюся жизнь.
Подставляй только тип - компилятор сам все сделает.
Но фокус- то в том, что то же самое можно делать и без включения в язык шаблонов. Например:
Код:
typedef тип value_type;
class ИМЯ
{
  value_type fild;
...
};

То есть, класс пишется в терминах абстрактного типа, если уж так хочется универсальности. Для повторного использования меняется typedef.
Городить мощнейший аппарат в языке ради такой мелочи, как РУЧНАЯ замена одной строки - перебор.
Шаблоны:
1. Существенно усложнили язык
2. Существенно усложнили компилятор.
Хотя сделано, конечно, красиво.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 02 Октябрь, 2010 09:19 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Хотя сделано, конечно, красиво.
Это не красота, а красивость.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB