OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 16 Август, 2018 07:23

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




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 12 Декабрь, 2006 07:28 

Зарегистрирован: Вторник, 04 Июль, 2006 13:04
Сообщения: 88
Откуда: Novosibirsk
info21 писал(а):
На этой ссылке пример того, как законный энтуазизьм порождает маниловщину во всех наши планах ...
Кстати, нужно обязательно учитывать, что Модула-2/Оберон с одной стороны, и Компонентный Паскаль с другой -- определены с точки зрения переносимости существенно по-разному.

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

следствия этих требований:

разрешение 1-2 приводит к необходимости поддержки
как минимум набора целочисленных типов разного размера и соответственно диапазонов значений.
стандартно - TINY(8) SHORT(16) INT(32) LONG(64) бит.
исходя из 4 возможно следует добавить еще CHAR(8) и LONGCHAR(16) потому что работа с текстами идет практически всегда. Строки, множества, дескрипторы типов, указатели и процедурный тип, вещественные числа - можно сделать как стандартные расширения языка. Наличие и использование которых надо контролировать. Видимо по аналогии с SYSTEM.

3 автоматически означает ограниченную портируемость такого кода. Используя типы с не полностью заданными в описании языка характеристиками программист на самом деле соглашается сам переделывать свою программу под все размеры системного целого. Например в инициализаторе модуля проверять их размер и диапазон. Чтоб он это не забывал как минимум требуется вынести в SYSTEM такие типы как CHAR, INTEGER, LONGINT... да практически все))
и иметь там SYSTEM.MAX() SYSTEM.MIN() SYSTEM.SIZE()...

4 означает необходимость в отдельных типах для:
символов,
множеств,
дескрипторов типов,
беззнаковых,
указателей на данные и код,
вещественных чисел.
с явными конверсиями в целое и назад.

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

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

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

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

Оберон был создан в результате критической фильтрации идей. Его идеи следовательно общеизвестны но так-же в некотором смысле действительно уже не модные. Это не значит что они плохие. напротив, модное еще не проверено и может оказаться как лучше так и хуже старого.
КП же был создан на базе Оберона введением нескольких
средств усиления контроля над целостностью проекта.
Что похвально но не все из них одинаковы.
Добавились например общепринятые шаблоны-модели наподобие type-bound процедур. Которые на являются необходимыми (представляют собой промежуточный вариант между медленным полностью динамическим разбором и обычным статическим вызовом и могут быть реализованы вручную программистом самостоятельно)
Но сейчас достаточно часто используются, модны.

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


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

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


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

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


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

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