OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 11 Август, 2025 19:21

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




Начать новую тему Ответить на тему  [ Сообщений: 69 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 11:14 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Не только удобно. Как Вирт выразился "немногословно".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 11:29 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 240
Откуда: Питер
Как мне кажется, предложенный метод не является полноценной заменой паскалевских перечислений. Как вы собираетесь при помощи данной конструкции индексировать массив, при необходимости? Допустим, при помощи поля index. Тогда при расширении перечисления сталкнётесь с той же проблеммой, что и при использовании констант.

Цитата:
О, вы знакомы с XDS? Практически или теоретически? Что-то разрабатывали на нем?


Пока что я программирую в Делфи численные рассчёты. Выбираю лучший для меня язык. В XDS, для пробы, я перевёл несколько личных маленьких библиотек.

На данный момент мне нравятся Oberon (XDS) и Ада (GNAT). Ада больше всего нравится наличием настраиваемых пакетов (темплэйтов), но пока что я не совсем представляю их возможности. Кто-нибудь может порекоммендовать книгу, в которой рассматривается программирование с помощью настраиваемых модулей? И, вообще, насколько это мощный инструмент для реализации абстрактных алгоритмов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 11:56 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Александр Ильин писал(а):
А если нет диапазона, то и массив ARRAY Int OF ... тоже создать не получится.
А что с ним делать потом? Я действительно не понимаю какая в нем романтика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 12:15 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
GameHunter писал(а):
Как мне кажется, предложенный метод не является полноценной заменой паскалевских перечислений. Как вы собираетесь при помощи данной конструкции индексировать массив, при необходимости? Допустим, при помощи поля index. Тогда при расширении перечисления столкнётесь с той же проблемой, что и при использовании констант.
Одного поля index недостаточно. Но при необходимости можно слепить некий метод - возвращающий элемент такого массива. Кстати, нечто подобное уже благополучно работает в виде коллекций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 12:17 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2463
Откуда: Россия, Томск
GameHunter писал(а):
Как мне кажется, предложенный метод не является полноценной заменой паскалевских перечислений. Как вы собираетесь при помощи данной конструкции индексировать массив, при необходимости? Допустим, при помощи поля index. Тогда при расширении перечисления столкнётесь с той же проблемой, что и при использовании констант.

Индексировать массив, то есть, обращаться к тому или иному элементу, идентифицированному константой, - да, при помощи index.
Не совсем понял, в чем будет проблема расширения перечисления? В том, что размер массивов надо будет изменить? В том, что нужна специальная константа, равная текущему числу элементов в перечислении, чтобы использовать эту константу в качестве размера массива при его объявлении? Да, такую константу завести придется. Вопрос в том, почему ее придется завести. А потому, что, как у нас с вами выясняется, размер перечисления может меняться.

Язык Оберон предназначен для создания систем с раздельной компиляцией модулей. Представьте, что в модуле А объявлено перечисление П из трех элементов. Потом написан и скомпилирован модуль Б, использующий перечисление из модуля А. Исходник модуля Б может быть недоступен (например, он находится в составе чужой библиотеки). А теперь мы добавляем в перечисление П четвертый элемент. Что должен делать модуль Б? Продолжать работать с массивами из трех элементов? Или все-таки отказаться работать и попросить себя перекомпилировать под новый интерфейс модуля А?

Наиболее корректным, с моей точки зрения, было бы все же признать то, что размер перечислений - величина динамичная, известная только во время выполнения. Во время компиляции может быть одно, а при выполнении - совсем другое. Соответственно, нужно в интерфейс модуля А ввести механизм запроса текущего числа элементов перечисления и создавать массивы-контейнеры динамически, с помощью NEW. А полноценной замены паскалевских перечислений вы и не получите, потому что Паскаль не поддерживает раздельной компиляции. Это очень важное отличие двух языков. В некотором смысле тут вам нужно преодолеть инерцию мышления и взглянуть на вещи под новым углом зрения: действительно ли это нужная фича или без этого можно обойтись, грамотно организовав структуру объектов и межмодульное взаимодействие. Статические перечисления слишком ригидны. В XDS они есть, потому что там на выходе - слинкованный EXE либо DLL. В ОС Oberon или в BlackBox такое не "прокатит".


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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Александр Ильин писал(а):
...
Я за концептуальную чистоту Оберона: если что-то можно реализовать уже имеющимися средствами, не нужно вводить новых "для удобства". Пусть лучше в голове будет порядок. Есть в этом какая-то своя... романтика, что ли.

Полностью с Вами согласен. А в простоте заключается не только легкость освоения и порядок в голове, но и легкость переноса реализации на другую платформу.

ИМХО, кому не достаточно средств, типа перечислений, поддиапазонов, супер строгой проверки типов (различие между вещественными высотой и скоростью, например), проверки на диапазоны при вычислениях и проч., можно пользоваться Адой. Там этих средств хватает. С избытком. И не зачем пытаться сделать из Оберона/КП ту же Аду, вставляя туда те средства, которые исключили авторы языка. Они, в отличие, от нас, я думаю, продумали все более детально и не один раз взвесили все за и против. А подход типа "Ну, очень удобное средство - давайте включим в язык" - этот подход оставим для С++ и иже с ним. Все знают, что из себя представляет С++, благодаря именно такому подходу.


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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
GameHunter писал(а):
Кто-нибудь может порекоммендовать книгу, в которой рассматривается программирование с помощью настраиваемых модулей? И, вообще, насколько это мощный инструмент для реализации абстрактных алгоритмов?
Книга Гаввы "Адское программирование". Попробуйте посмотреть на http://www.ada-ru.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 12:43 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Евгений Темиргалеев писал(а):
Полностью с Вами согласен. А в простоте заключается не только легкость освоения и порядок в голове, но и легкость переноса реализации на другую платформу.
В общем да. Только о решениях, зависищях от платформы, речь пока не шла. Здесь обсуждается вполне конкретный вопрос о механизме задания значений перечислений и о нежелании его расписывать каждый раз, когда он понадобится. Я надеюсь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 13:25 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 240
Откуда: Питер
Цитата:
А потому, что, как у нас с вами выясняется, размер перечисления может меняться.


Я никогда не думал, в том числе и в этом форуме, о перечислениях как о динамически изменяемом типе или структуре. Наверное, я слишком ограничен :oops: :lol: . По моему для динамики существуют лучшие стандартные решения, чем изменять понятие перечисления - списки или динамические массивы, например. Так что все мои слова относятся только к статическим перечислениям, и расширение я понимаю тоже как статическое, известное до компиляции. Тем не менее, по моему, списки являются хорошим инструментом для моделирования предметной области. Из-за лучшего контроля типов и меньшей вероятности ошибки. Неужели это, даже в статике, не важно для оберона? Статические перечисления в Модуле-2, кстати, спокойно уживаются в раздельной компиляцией.

Цитата:
А подход типа "Ну, очень удобное средство - давайте включим в язык" - этот подход оставим для С++ и иже с ним. Все знают, что из себя представляет С++, благодаря именно такому подходу.


Как мне кажется, это не правильный аргумент. То же самое можно сказать и про Аду - весьма достойный, как мне кажется, язык.

Цитата:
Книга Гаввы "Адское программирование". Попробуйте посмотреть на http://www.ada-ru.org


Читал. Я имел в виду книгу не по синтаксису настраиваемых модулей в Аде, а по методике абстрактного программирования с их помощью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 13:41 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 240
Откуда: Питер
Кстати, что означает слово "ригидный"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 13:45 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
GameHunter писал(а):
Кстати, что означает слово "ригидный"?

"впэртый" :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 13:46 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
GameHunter писал(а):
По-моему для динамики существуют лучшие стандартные решения, чем изменять понятие перечисления - списки или динамические массивы, например. Так что все мои слова относятся только к статическим перечислениям, и расширение я понимаю тоже как статическое, известное до компиляции.
То, что перечисление не будет расширяться - неизвестно никому, даже компилятору, иначе - другие проблемы совсем.


Последний раз редактировалось Сергей Оборотов Четверг, 24 Май, 2007 15:08, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 13:46 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2463
Откуда: Россия, Томск
GameHunter писал(а):
Кстати, что означает слово "ригидный"?

Жесткий, негибкий, неспособный к адаптации.


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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
GameHunter писал(а):
Цитата:
А подход типа "Ну, очень удобное средство - давайте включим в язык" - этот подход оставим для С++ и иже с ним. Все знают, что из себя представляет С++, благодаря именно такому подходу.
Как мне кажется, это не правильный аргумент. То же самое можно сказать и про Аду - весьма достойный, как мне кажется, язык..

Про аду этого сказать нельзя. Сначала разрабатывались требования к языку, потом стандарт, и потом делались компиляторы. Стандарт после удверждения не менялся (за исключением исправления противоречий).
С++ же делался непонятно как. Впихивали то одну, то другую модную фичу без какого-либо осмысления. Вот крутая фича - засунем в язык. Потом оказалось, что нужен стандарт. Давай делать - делали 10 лет. Стандарт появился более чем через 15 лет, после появления языка. На тот момент, как он появился и несколько лет после - хрен сыщешь компилятор, который его полностью поддерживает. Зато все без исключения новые компиляторы поддерживали какие-либо фичи - расширения стандарта.
Еще раз повторю свое мнение:
1) КП - это не С++. Стандарт КП - сообщение о языке. Он сделан раз и навсегда. Никто ничего менять не будет. Если и появится что-то новое, то это будет уже не КП.
2) Вы думаете, что Вирт делал Паскаль-Модулу-Модулу2-Оберон-Оберон2 более 20 лет и просто так, бездумно, убрал перечисления? А тут теперь появимся мы, такие умные, такие супер программисты, которым никак без перечислений или чего еще не жить. Перестандартизируем КП, и засунем туда все что нам нужно??? :evil:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 18:10 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Евгений Темиргалеев писал(а):
Вы думаете, что Вирт делал Паскаль-Модулу-Модулу2-Оберон-Оберон2 более 20 лет и просто так, бездумно, убрал перечисления? А тут теперь появимся мы, такие умные, такие супер программисты, которым никак без перечислений или чего еще не жить. Перестандартизируем КП, и засунем туда все что нам нужно??? :evil:

"З иншого боку" - "кто не гибкий, тот - ломается"... :о)
Принципиальность - это, наверное, всё-таки, что-то другое...
Си++ все ругают, но промышленности "правильности минимализьма" оказались не нужны!
Я вот, по-началу, тихо охреневал, на что наши миньеджеры соглашаются по срокам, а потом посмотрел: а и правда: в сложившемся положении вещей ИМЕННО ТАК (средства, языки, подходы) - будет БЫСТРЕЕ. КОд валится тоннами в проект, никто никому на "раскрутку" и "обмозговывание" времени НЕ ДАЁТ.
Счастлив тот,кто подсел на "жилу" проектов одной направленности. Первое это сработало у веб-клепальщиков. Там ребята, при наработках, имеют бешенный выход проектов - как пирожки пекут. Менеджеры других тематик стали "подкручивать гайки".
Но это всё - "аутсорсинг". Массовое, поточное производство "чего изволите"...
Страшненько, что в этот водоворот вовлекается всё больше и больше программеров и коллективов.
"Гонка за морковкой". Кто меньшие сроки поставил и выкатил (хотябы дерьмо) - уже получил бабаки. Оборотец растёт...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 24 Май, 2007 18:20 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 240
Откуда: Питер
Нет необходимости убеждать меня в том, что КП хороший язык - я и сам в это верю :) Просто я сейчас на распутье, хочется всё понять, вопросы об устройстве языка в голову лезут. Разве это грешно?

Цитата:
Вы думаете, что Вирт делал ...

Ничего против Вирта я, естественно, не имею. Однако, ссылки на авторитеты в подобном ключе, ИМХО, - это путь к тому, чтобы поверить, а не понять. Давайте лучше конкретные аргументы приводить, если, конечно, есть желание подискутировать.

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

Как мне кажется, это не правильный аргумент. То же самое можно сказать и про Аду - весьма достойный, как мне кажется, язык..


Я здесь не сравниваю Аду с C++ напрямую, просто подчеркиваю неудачность приведённого аргумента. В Аде при разработке стандарта не ставили целью минимизацию языка, и, вроде, не плохо получилось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 25 Май, 2007 04:50 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Евгений Темиргалеев писал(а):
Еще раз повторю свое мнение:
1) КП - это не С++. Стандарт КП - сообщение о языке. Он сделан раз и навсегда. Никто ничего менять не будет. Если и появится что-то новое, то это будет уже не КП.
Изменение стандарта и выпуск дополнения к нему - есть две большие разницы. И если появится что-нибудь новое и все существующие программы сохранят свою с ним совместимость то это будет КП - кто бы что другое ни предполагал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 25 Май, 2007 09:40 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Евгений Темиргалеев писал(а):
1) КП - это не С++. Стандарт КП - сообщение о языке. Он сделан раз и навсегда. Никто ничего менять не будет. Если и появится что-то новое, то это будет уже не КП.

Ну кроме ББ есть ещё GPCP. Это ведь Компонентный Паскаль?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 25 Май, 2007 09:41 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4727
Откуда: Россия, Орёл
Ivor писал(а):
Евгений Темиргалеев писал(а):
1) КП - это не С++. Стандарт КП - сообщение о языке. Он сделан раз и навсегда. Никто ничего менять не будет. Если и появится что-то новое, то это будет уже не КП.

Ну кроме ББ есть ещё GPCP. Это ведь Компонентный Паскаль?

Конечно. Он оприается на сообщение о языке Оминк (вот только на сколько поддерживает точно не знаю). Но там есть некоторые небольшие расширения, которые неизбежны при работе с .NET.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 25 Май, 2007 09:43 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Там есть одно большое расширение, которое достаточно сильно меняет язык - исключения.


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

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


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

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


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

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