Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - akron1

Страницы: 1 2 3 [4] 5 6
46
А можно нескромный вопрос: поддержка ОС "Колибри" не планируется?

Возможные варианты:

1) Win64
2) Linux
3) Внутреннее представление, оптимизации
4) Транслятор Oberon-07 -> C/C++

С чего начать, пока не выбрал.
Так что и без Колибри есть над чем работать.

47
Можно ещё так реализовать SYSTEM.ADDRESS:
TYPE
    ADDRESS = ARRAY [untagged] machineWordSize DIV 8 OF BYTE;
;)

А с выравниванием проблем не возникнет?
ARRAY OF BYTE вроде как должен выравниваться на 1 байт. Тогда как 16-битный тип выравнивается на 2 байта.

48
Здесь есть некоторые потенциальные проблемы: Процессоры 16-ти разрядные, не во всех есть не только модуль плавающей точки, но  и даже банальный умножитель.
Т.е. "искаропки" микроконтроллеры не поддерживают умножение/деление целых чисел и вещественные числа отсутствуют как класс.

Ну так придется эмулировать матсопроцессор и умножитель.

Может есть смысл ввести тип ADDRESS как это сделали в Активном Обероне?

А другого выхода здесь по-видимому нет.

Тип SET в Обероне 32-х разрядный, а INTEGER в этой реализации 16-ти разрядный, т.е. во первых прямого взаимного отображения не получится, и для реализации 32-х разрядного SET'а на 16-ти разрядных машинах опять потребуется дополнительные телодвижения, снижающие эффективностьт. Может есть смысл сделать SET тоже 16-ти разрядным.

SET 32-х разрядный наверное не в обероне, а мире, в котором живет Вирт, где все машины 32-битные. Конечно, разрядность SET и INTEGER должна совпадать с разрядностью машины. Это естественно.

49
Не нашел в репорте ни слова про возможность/невозможность рекурсивного описания:

Репорт здесь ни причем. Невозможность рекурсивного описания я ввел, чтобы не допускать такие объявления:

CONST c = c;
TYPE A = ARRAY 10 OF A;
TYPE R = RECORD x: R END;
VAR v: v;

такое объявление:

TYPE P = POINTER TO RECORD x: P END;

можно заменить на

TYPE P = POINTER TO R; R = RECORD x: P END;

а об этом:

TYPE P = PROCEDURE(): P;

я просто не подумал  :)

Вообще же, в репорте много неясностей. Например, если следовать репорту, то:

TYPE
P1 = POINTER TO R1;
P2 = POINTER TO R2;
R1 = RECORD ... END;
R2 = RECORD (R1) ... END;

VAR a: P1; b: P2;

a := b; (*запрещено*)

TYPE
p1 = PROCEDURE;
p2 = PROCEDURE;
VAR a: p1; b: p2;

a := b; (*запрещено*)

хотя в репорте Oberon-2 (и в реализации Oberon-07 Astrobe) эти присваивания разрешены (что вполне логично).

50
а еще убрать (игла == null) в условии цикла

51
Тем хуже для компилятора akorn1. Процедурный тип возвращающий переменную этого же типа

P = PROCEDURE(): P;

ничем не хуже типа

X = POINTER TO RECORD x: X END.

Тип P может использоваться для программирования цепочек вычислений а-ля конечный автомат.

В C# объявить такой тип тоже можно:

delegate P P ();


Согласен, здесь я ошибся.
Сейчас посмотрел, как это обрабатывается в Astrobe (ver 4.0.2):

TYPE
P = PROCEDURE(): P;
X = POINTER TO RECORD x: X END.

компилируется без ошибок

TYPE
R = RECORD x: R END;
A = ARRAY 10 OF A;
VAR v:v;

Сообщение компилятора:
"Error: not a type or undefined"

CONST c = c;

А вот здесь Astrobe упал.

52
Общий раздел / Re: Машинный код x86
« : Январь 14, 2013, 08:42:56 am »
У меня давно уже есть идея написать компилятор обероноподобного языка. Как писать лексер и парсер в принципе понятно, но где брать информацию о машинном коде x86 не совсем. Где можно найти информацию о генерации кода для x86?

Ну я делал так: писал интересующий меня код на ассемблере, транслировал и смотрел в шестнадцатиричном редакторе, что сгенерировал ассемблер.

53
Если можно, перекодируйте в utf-8, а то просмоторщик вопросы вместо комментариев показывает.

Пока нельзя. См. http://oberspace.dyndns.org/index.php/topic,396.msg12275.html#msg12275 и далее.

Уже можно. Теперь формат модулей UTF-8. Редактор сохраняет текст в кодировке UTF-8, но редактирование возможно пока только в кодировке win-1251 (при открытии файла utf-8 -> win-1251, при сохранении win-1251 -> utf-8)

Пушнул на github свежую версию исходников. Дифы с предыдущей версией смотреть забавно :-)
Например видно, что мое исправление: http://oberspace.dyndns.org/index.php/topic,396.msg11495.html#msg11495

Было принято, переработано и добавлено: https://github.com/valexey/Oberon-07-11-compiler/commit/021b154489b9d2599428318947dca14c46798823#L11L16

В связи с переходом на utf-8, пришлось вернуть WriteConsoleW, вместо WriteFile.

54
вместо break; -- i = сундуки.Length;

Упс, виноват, не пройдет. Не сохраняется индекс

55
вместо break; -- i = сундуки.Length;

56
Зоннон трудно назвать современным императивным языком. Система типов довольно убогая по современным меркам.
Единственная фишка у Зоннона -- протоколы, но я пытался их осилить и не сумел, увы...
Так и не стал я зоннонистом...  ;D

Благодарю за ответ.

57
Вопрос “А что Вы делаете на Обероне?” считается неприличным и вызывает праведный гнев. Некоторые вообще не знают, что такое Оберон, но для них это и не главное. А некоторые прозревают Обероны интуитивно, не запрограммировав на них ни строчки.
Сделал я одну программку на Зонноне: http://www.99-bottles-of-beer.net/language-zonnon-1241.html
Мне вполне хватило, что бы понять, что такие языки, как оберон, мне не нравятся. Их время прошло...

Цитировать
http://www.99-bottles-of-beer.net/language-zonnon-1241.html
Спасибо за ссылку! Анализируя код программы, пришёл к таким же выводам, как и Вы.

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

58
Oleg N. Cher
Цитировать
И почему сейчас передачи по телевизору больше смахивают на промывание мозгов, чем на нечто более другое.

Если бы это было промыванием (прочищением)...
Это прямо противоположное - загаживание.

59
Общий раздел / Re: Новый закон о образовании.
« : Январь 01, 2013, 02:58:22 pm »
1. А где произошел большой взрыв?  ;)
Что находится за пределами вселенной?
Эти вопросы того же масштаба что и существование творца. Само существование вселенной, его смысл, и эта наша с вами беседа посреди океана мироздания...  все это не менее удивительно и абсурдно. Тут наука от религии не далеко ушла.

Наука не может дать ответы на вопросы о возникновении вселенной (и вряд ли сможет), но ближневосточная мифология еще менее пригодна для этого.

60
А IDE работает с кодировкой cp1251?? :-\
Да
По идее, проблем с переходом на utf-8 быть не должно. Равно как и в компиляторе. Надо решить этот вопрос сначала раз и навсегда.
По идее да. Но это повлечет за собой изменение типа CHAR - он должен стать вместо 8ми битного 16ти, а лучше 32х битным. Что может повлечь за собой изменения/проблемы в чем-то системозависимом (всякое там ffi и проч).
Ну это только макет. Буду делать нормальный фронт-энд, тогда и перейду на юникод.

Страницы: 1 2 3 [4] 5 6