Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Какая типизация у Free Oberon? https://zx.oberon.org/forum/viewtopic.php?f=116&t=483 |
Страница 2 из 2 |
Автор: | Pimbom [ 14 дек 2019, 18:25 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Вроде такой крутой язык программирования и нету фичи . |
Автор: | SovietPony [ 14 дек 2019, 19:24 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Было в Паскале. Вырезание в Обероне объясняется тем что используется редко, но усложняет компилятор. |
Автор: | Zorko [ 14 дек 2019, 19:40 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Pimbom писал(а): А за счет чего это достигается? А как добиться таких же высоких результатов контроля ошибок в Оберонах? Это достигается за счёт сильного усложнения языка/компилятора, добавления возможности конструировать разные виды целочисленных типов и описаний сложных взаимодействий типов между собой. Так что это не Oberon-way, увы.Оберон реализует философию простоты, так что его наполнять разными фичами, надёрганными отовсюду, никто не собирался, задумка была другая. Это фактически ООП-ассемблер или предельно минимальный ЯВУ, наверное самый маленький из всех языков, которые можно использовать для решения своих задач на практике. Niklaus Wirth писал(а): Типы диапазонов были введены в Паскале (и сохранены в Modula-2) по двум причинам: (1) чтобы подчеркнуть тот факт, что переменная принимает значения из ограниченного диапазона базового типа, и чтобы дать возможность компилятору генерировать соответствующий проверочный код для присваиваний; (2) чтобы позволить компилятору выделять минимально необходимое пространство памяти для хранения значений из указанного диапазона. Это желательное свойство в плане использования упакованных записей. Лишь в небольшом числе реализаций используется данное преимущество экономии памяти, поскольку при этом компилятор довольно значительно усложняется. Причины под номером (1) явно недостаточно, чтобы оставить в Обероне работу с диапазонами. http://oberon2005.oberoncore.ru/obe_faq2.html
|
Автор: | sage [ 15 дек 2019, 20:02 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Pimbom писал(а): Вроде такой крутой язык программирования и нету фичи . В ActiveOberon введён тип RANGEКод: "OBERON"
|
Автор: | Pimbom [ 15 дек 2019, 20:12 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Это значит, что надо среди доступных Оберонов использовать Active Oberon, чтобы поезд не пошел навстречу другому не в свое время, чтобы сборка атомного реактора не вовремя не задвинулась или не выдвинулась и не произошел Чернобыль и чтобы ракета не свернула с орбиты раньше времени (или позднее)? |
Автор: | Zorko [ 16 дек 2019, 05:28 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Саша, вспомните, что я говорил про то, что компилятор любого языка не найдёт массу ошибок в логике программы, если синтаксически всё будет оформлено правильно. И AO'шный RANGE здесь не особо поможет. |
Автор: | Pimbom [ 16 дек 2019, 17:42 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
А в каком то простом языке программирования существует модуль защиты от дурака в виде дополнительной опции, чтобы из простого языка сделать наподобие Ады в случае необходимости? |
Автор: | Pimbom [ 16 дек 2019, 19:16 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Цитата: В Аде можно объявлять новые целочисленные типы данных с ограничениями вроде диапазонов возможных значений. В Оберонах такой фичи нет. Читал, что это можно делать во многих ЯП, только на основе классов\трейтов\типов и т.д.Достаточно создать свои классы с нужными ограничениями. |
Автор: | ivan_denisov [ 14 янв 2020, 04:51 ] |
Заголовок сообщения: | Re: Какая типизация у Free Oberon? |
Для этого используются приемы контрактного программирования, когда на входе и выходе процедур ставятся проверки, нарушение которых останавливает выполнение этой процедуры. ASSERT(x < 16, 21); При этом вызывается обработчик аварийных остановок, который решает что дальше делать. Чаще всего он показывает развернутый отчёт о произошедшей аварийной остановке. Тогда на этапе тестирования компонентов большая часть такого рода ошибок проявляется. Как поступить на этапе эксплуатации программы, это уже вопрос архитектуры проекта и типа проекта. На ПК обычно пользователь делает скриншот сообщение и отправляет по почте. Но можно сделать, чтобы отправлялся сам через Интернет. Микроконтроллер обычно уходит в перезагрузку и начинает выполнение программы с начала. При этом в специальных переменных сохраняется код аварийной остановки, начало модуля и положение в исходном тексте. Вот писал заметку про обработку аварийных остановок в STM32: http://wiki.oberon.org/ob/o7/debug |
Страница 2 из 2 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |