Серж, с тем, что у каждого свои цели — абсолютно согласен. Я не только пишу для Спека, но и изучаю на себе же фактор ностальгии (или же "тёплых ламповых чувств" и привязок) как сильное средство внутренней мотивации. Плюс пробую на практике кроссплатформенность Оберон-технологий на очень ограниченной по аппаратным возможностям платформе. Ещё меня интересует вопрос: каким может быть представление программы, чтобы автоматически разворачивать (проецировать) его на различные платформы. Такие разработки есть и у мэйн-стрима, но они слишком ресурсоёмкие и обладают другими недостатками.
Трейсер — чрезвычайно полезный инструмент для разбора логики чужого кода (иногда своего
). Но, кстати, ты мог бы не вручную переписывать Aya с Оберона на Паскаль, а автоматически оттранслировать его в Си (например, с помощью XDev) и иметь возможность лазить по нему трейсером, существующим в сишных окружениях. Но это твой выбор.
Я тебе XDev не навязываю.
Минь Цун взял FPC и пробовал разрабатывать Aya сначала на нём, но разочаровался (
он об этом пишет), к тому же он предпочитает более простые инструменты. Миграция же с GPCP на самого себя — это самораскрутка компилятора, практикуемая штука. Уверен, что Минь Цун считает, что теперь уж Aya написана на самом правильном языке и переписывать не нужно.
Олежек , кстати Минь Цун при всём нежелании расширений
ввёл в свой компилятор типы INT8, INT16, INT32, CARD16, CARD32. Интересно, как он решает проблемы, с которыми столкнулись мы при попытках ввести беззнаковые типы в Ofront?
Đặng Minh Công писал(а):
INT8, INT16, INT32, CARD16, CARD32 types
Reason for introducing: Same as BYTE type, in order to economise the use of memory.
Note: Type inclusion is not the same as in Oberon-2/Component Pascal. All the integer types: BYTE, INT8, CARD16, INT16, CARD32, INT32 and INTEGER are interchangable. All integer variables when loaded to register are signed extended to 64-bit INTEGER type. All integer calculation results are 64-bit INTEGER. That means BYTE + BYTE = INTEGER. Therefore, there is no speed benefit for using small integer types over INTEGER type. The programmer should use only INTEGER type for most of cases, which is good programming practice.
Note: There is no range checking in assignments between integer types!
Note: The 64-bit CARDINAL is not introduced, because 64-bit INTEGER is big enough, and also because of you cannot loselessly convert CARDINAL to INTEGER.
Гм-м, смотрю: у него тут и UNION есть в интерфейсах... Это то, что я так и не сделал в XDev, а в BlackBox'е есть.