Автор Тема: Сириус - обероноподобный язык и компилятор  (Прочитано 75155 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #165 : Декабрь 18, 2012, 03:38:22 pm »
Ох, не зря Вирт выкинул перечисления. Проблем с ними до хрена.

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #166 : Декабрь 18, 2012, 04:01:47 pm »
Видел. Со свистелками и перделками.
Перечисление изначально выглядело так: "первым идёт икс, вторым - игрек, третьим...". То есть, грубо говоря - нумерованный список. А вот такие перечисления - обыкновенные (хеш-?)таблицы. Если в изначальном примере Kemet-а дни недели расположить в алфавитном порядке, а потом из базы достать среду (которая там хранится в виде числа, соответствующего порядку в неделе), то получится ерунда.
Список, но не обязательно нумерованный. Enum - это тип который задается списком возможных значений переменной этого типа. А уж как соотносятся эти значения между собой (арифметическая это последовательность, геометрическая, или же просто явно значения указаны и между ними нет связи) - дело десятое.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #167 : Декабрь 19, 2012, 04:42:25 am »
Хотя для оберона это будет идти в разрез с идеологией Вирта -- такие типы (по сути алгебраические типы данных) можно имитировать иерархией записей...
Вот, кстати, в тему: Имитируем алгебраические типы данных в языке Java
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #168 : Декабрь 19, 2012, 06:38:14 am »
ну ладно, как я понял, для перечислений склоняемся к форме Активного Оберона:
Цитировать
TYPE  x = ENUM ..... END;

теперь о диапазонах
нет в жизни щастя
если для диапазонов оставить только RANGE x..y, то вместо
Цитировать
PROCEDURE Compare( a, b: Type ): [ -1..1 ];
придется писать
Цитировать
ROCEDURE Compare( a, b: Type ): RANGE -1..1;
в принципе воспринимается нормально
а типизированные диапазоны как-то так:
Цитировать
TYPE x = SHORTINT RANGE 1..9;

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #169 : Декабрь 19, 2012, 06:46:34 am »
Цитировать
ROCEDURE Compare( a, b: Type ): RANGE -1..1;
в принципе воспринимается нормально
тогда придется писать
не
Цитировать
IF a IN [ 1..9 ] THEN
а
Цитировать
IF a IN RANGE 1..9 THEN

DIzer

  • Гость
Re: Сириус - обероноподобный язык и компилятор
« Ответ #170 : Декабрь 19, 2012, 08:14:23 am »
тогда придется писать
не
Цитировать
IF a IN [ 1..9 ] THEN
а
Цитировать
IF a IN RANGE 1..9 THEN
   не комильфо.. есть еще такое понятие как множество  - для него  IN - есть стандартная операция проверки на принадлежность.., а в последнем случае -  то же не гуд -  если 1..9 это диапазон - то для него такая проверка не имеет смысла...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #171 : Декабрь 19, 2012, 09:16:00 am »
ROCEDURE Compare( a, b: Type ): RANGE -1..1;в принципе воспринимается нормально
а типизированные диапазоны как-то так:
TYPE x = SHORTINT RANGE 1..9;
Нормально.

IF a IN RANGE 1..9 THEN
Тоже нормально.
Диапазон значений -- это по сути множество этих зачений, а значит операция IN вполне уместна.

А, кстати, множества-то в Сириусе есть? Как они выглядят? Если как-то вроде [1..9], то тогда вполне нормально и
IF a IN [1..9] THEN
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #172 : Декабрь 19, 2012, 10:17:49 am »
не комильфо.. есть еще такое понятие как множество  - для него  IN - есть стандартная операция проверки на принадлежность.., а в последнем случае -  то же не гуд -  если 1..9 это диапазон - то для него такая проверка не имеет смысла...
В\На данный момент в Сириусе IN применима не только для множеств, но и для проверки значения на принадлежность элементам перечисления, вернее на соответствие MIN(enum)<=x<=MAX(enum), на вхождение в диапазон MIN(range)<=x<=MAX(range) и на вхождение в массив (поиск).

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #173 : Декабрь 19, 2012, 10:31:29 am »
А, кстати, множества-то в Сириусе есть? Как они выглядят? Если как-то вроде [1..9], то тогда вполне нормально и
IF a IN [1..9] THEN
Множества - это битовый массив. Максимальное колво элементов -255. Выглядят они также как и в Обероне {}, но задаются как SET OF Base|Range, т.е. SET OF CHAR, SET OF MyEnum, SET OF [10..20]

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #174 : Декабрь 26, 2012, 08:28:30 am »
Сейчас тип  элементов перечислений совпадает с типом целочисленных констант. Перечисления, по-сути, и есть целочисленные константы, заключенные в собственное пространство имен.
Т.е. можно так?
var a:integer;... x := Days.Monday

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #175 : Декабрь 27, 2012, 12:42:12 am »
Нет, так нельзя. Я говорю, что они по-сути константы, а так, перечисление это самостоятельный тип.

X512

  • Newbie
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #176 : Март 12, 2015, 08:00:00 am »
Уже прошло более 2 лет. Публиковать Сириус больше не планируется? Какого его текущее состояние?
Судя по сообщениям в Сириусе применяются уникальные интересные механизмы вроде охраны экземпляром, которые больше нигде не встречаются. Интересно было бы изучить.

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Сириус - обероноподобный язык и компилятор
« Ответ #177 : Март 16, 2015, 06:40:03 pm »
Уже прошло более 2 лет. Публиковать Сириус больше не планируется? Какого его текущее состояние?
Судя по сообщениям в Сириусе применяются уникальные интересные механизмы вроде охраны экземпляром, которые больше нигде не встречаются. Интересно было бы изучить.
Проводилась глобальная реорганизация и реструктуризация как самой компании, так и бизнеса, ИТ ...
Все свободные проекты были временно заморожены