OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 13:18

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




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 15:11 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Игорь Лоскутов писал(а):
Вариант с Active Oberon выигрывает только в том, что позволяет легко адаптировать алгоритм для единичной матрицы любой разумной размерности.
В случае же маленькой размерности, как в приведённом примере, то вариант Delphi намного лучше, особенно если вспомнить, что программы пишутся не только для компиляторов, но и для людей.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 15:25 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Я в затруднении ответить, нужны ли константы-массивы, но "плодить сущности" - это именно то, к чему Вы и призываете. В случае с массивом новых видов сущностей не добавляется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 15:31 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Valery Solovey писал(а):
Я в затруднении ответить, нужны ли константы-массивы, но "плодить сущности" - это именно то, к чему Вы и призываете. В случае с массивом новых видов сущностей не добавляется.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 15:43 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Madzi писал(а):
Просто получается что массив инициализируется не нулевым значением, а некоторым другим.
Каким, например? Просто получится лишь в случае простых-же выражений...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 15:45 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 16:36 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Игорь Лоскутов писал(а):
Главный вопрос "Чем так плохи конструкторы массивов?" пока повис в воздухе. Хотелось бы услышать внятные неоспоримые доводы, как про GOTO
Внятного ответа не последовало, поэтому попробую сам ответить на этот вопрос.
Рискну предположить, что веских оснований не включать конструкторы массивов в язык у создателей языка (Оберон, КП и тд) не было. Может Никлаус Вирт & Co руководствовались второстепенными доводами. Например, тупо не хватило "свободных" скобок. А что!, круглые скобки и так перегружены значениями, особенно после введения охраны типа и методов (принимающий параметр); фигурные скобки нельзя (SET); квадратные тоже нельзя (селектор элемента массива). В конце концов, видимо, было принято волевое решение, просто на правах автора языка, может и не без сомнений.
Может сыграл свою роль и тот факт, что конструкция получается не универсальной: в случае больших и (или) многомерных массивов код превращается в кошмар. Мол, начнут злоупотреблять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 06 Ноябрь, 2008 20:56 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Игорь Лоскутов писал(а):
Игорь Лоскутов писал(а):
Главный вопрос "Чем так плохи конструкторы массивов?" пока повис в воздухе. Хотелось бы услышать внятные неоспоримые доводы, как про GOTO
Внятного ответа не последовало, поэтому попробую сам ответить на этот вопрос.
Рискну предположить, что веских оснований не включать конструкторы массивов в язык у создателей языка (Оберон, КП и тд) не было.

Наоборот. Нужны веские доводы, чтобы *включать* что-то в язык. Пока таких не предъявлено, по умолчанию -- не включать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Пятница, 07 Ноябрь, 2008 09:16 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Info21 писал(а):
Наоборот. Нужны веские доводы, чтобы *включать* что-то в язык. Пока таких не предъявлено, по умолчанию -- не включать.
Похоже, это точка в разговоре о конструкторах массива.

Цитата:
Совершенство достигается не тогда, когда больше нечего добавить, а тогда, когда больше нечего отнять :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Суббота, 10 Январь, 2009 16:57 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
ха ха ха
оказывается есть!!!!
Код:
MODULE Untitled;
CONST
 test=[[1,2,3],[5,6,7],[8,9,10]];
VAR
 b:LONGINT;
BEGIN
 b:=test[1,2];
END Untitled.~


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 17:55 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
bohdant писал(а):
ха ха ха
оказывается есть!!!!
...
К сожалению, Ваш пример у меня не компилируется, ругается на синтаксис (BlackBox v1.5 Rus). Я бы удивился, если было бы иначе. В спецификации на КП таких конструкций нет (поправьте меня, если я ошибаюсь).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 18:03 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Естественно - речь про Актив Оберон и А2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 18:12 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
Игорь Лоскутов писал(а):
bohdant писал(а):
ха ха ха
оказывается есть!!!!
...
К сожалению, Ваш пример у меня не компилируется, ругается на синтаксис (BlackBox v1.5 Rus). Я бы удивился, если было бы иначе. В спецификации на КП таких конструкций нет (поправьте меня, если я ошибаюсь).

Игорь! Обратите внимание, что ветка называется Active Oberon & Bluebottle (A2)

Мой пример работает в A2 (aka BlueBottle, aka Aos)
Это операционная система, которая работает на голом железе, но может работать и под Виндовсом (WinAos) - в результате получается нечто похожее (за исключением графического интерфейса) на BlackBox, так же може работать и поверх Linux.

Язык программирования: ActiveOberon - очень похож на компонентный паскаль, но есть и некоторые различия. Например объекты описываются несколько по другому, как то компактнее (что мне особенно нравится).

Попробуйте, может Вам будет интересно ;)

Если Вам нужна дополнительная информация можете поискать здесь (рус.) http://a2os.org.ua/forums/ и здесь (англ.) http://www.ocp.inf.ethz.ch/forum/ и http://www.ocp.inf.ethz.ch/wiki/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 18:37 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Игорь Лоскутов писал(а):
В спецификации на КП таких конструкций нет (поправьте меня, если я ошибаюсь).
В спецификации на Active Oberon таких конструкций тоже нет (поправьте меня, если я ошибаюсь).
Не совсем понимаю авторов компилятора Active Oberon. Ведь невозможно нечаянно реализовать в компиляторе конструкторы массивов. Есть принципиальные вопросы, решение которых нельзя откладывать на потом 8) . А так, наводит на мысли... что там ещё таит в себе компилятор. И зачем тогда писать спецификации, если можно им не следовать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 18:51 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
bohdant писал(а):
Игорь! Обратите внимание, что ветка называется Active Oberon & Bluebottle (A2)
Sorry :oops: А я тут всё со своей КП-шной колокольни :)
bohdant писал(а):
Попробуйте, может Вам будет интересно ;)
Если Вам нужна дополнительная информация можете поискать здесь (рус.) http://a2os.org.ua/forums/ и здесь (англ.) http://www.ocp.inf.ethz.ch/forum/ и http://www.ocp.inf.ethz.ch/wiki/
Спасибо за ссылочки, но думаю, что пока мне рано переходить на AO. Не потому, что AO чем-то плох, просто нет достаточных оснований для таких метаний. По большому счёту нет большой разницы на каком из Оберонов писать, важно правильно мыслить, по обероновски :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Воскресенье, 11 Январь, 2009 20:01 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
Игорь Лоскутов писал(а):
В спецификации на КП таких конструкций нет (поправьте меня, если я ошибаюсь).

Игорь Лоскутов писал(а):
Ведь невозможно нечаянно реализовать в компиляторе конструкторы массивов.


Очень даже можно :) Если вы не с "нуля" пишете компилятор, то просто забыв удалить фичу вы ее вводите в новый компилятор :)

На самом деле, мне кажется, что не это причина появления "недокументированных" возможностей. Так как язык продолжает разширятся.
Вы также не найдете таких возможностей:
- векторные расширения компилятора(операции с матрицами);
- перегрузка операторов;
- ООП расширений (абстрактные методы и возможно другие)
- рефлекшин;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Суббота, 07 Февраль, 2009 17:55 

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

Можно записывать эти данные в файл и написать систему их загрузки и
контроля достоверности. А можно просто "зашивать" их в модуль и ни о
чём больше не беспокоится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Четверг, 29 Ноябрь, 2012 15:13 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 520
Откуда: Украина, Днепропетровская обл.
А то ведь действительно, можно завести константный массив (строку) типа CHAR:
Код:
CONST
  str* = "A0B0C0D0102030409080";
Но — нельзя типа INTEGER. Несимметрично как-то.

Мне за много лет использования Оберонов наверно наибольше не хватает в них константных массивов. Поэлементное присваивание в некоторых случаях неэффективно. И чтобы включить в модуль маленький массив приходится извращаться с кодовыми процедурами:
Код:
PROCEDURE -Rsrc1-;
  000H, 000H, 001H, ... ;
что, разумеется, непереносимо между диалектами Оберона. Здесь как с параметрами процедур (IN в КП, CONST в Oberon-07, READONLY в Modula-3) Или с нетрассируемыми указателями ({UNTRACED}, [untagged], [NOTAG] в разных реализациях и т.п.). Позволю себе предположить, что возможности эти на практике — крайне полезны. Но не будучи своевременно включенными в стандарт языка "расползлись" на разные варианты в разных реализациях. Вот вам недостатки минималистических стандартов.

Вобщем, я — за включение в новые редакции КП, если таковые будут, константных типизированных массивов.

P.S. В своё время для компьютера Амига много писали на модульных языках. Так вот в Amiga-Oberon v3.11 (F. Siebert / A+L AG) применяется интересное расширение Оберона-2:
Код:
TYPE TheClocks = ARRAY 10 OF INTEGER;
CONST AnimClockData = TheClocks(
    00400, 00070, 00000, 00700, 00100, 00380, 00000, 00700, 03008, 00000);
Почему бы не взять синтаксис отсюда, ведь есть же потребность, как видим. Хочу попробовать протолкнуть эту идею авторам GPCP, которые вводят экспериментальные расширения языка охотнее, чем OMinc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Типизированные константы"
СообщениеДобавлено: Понедельник, 10 Декабрь, 2012 01:11 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Я думаю, что при проектировании Оберонов был расчёт на разделение кода от данных. Что, в общем-то, является неплохой идеей, но, в то же время, перфекционистской попыткой приучить к "правильному" подходу в программировании ...


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

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


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

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


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

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