Проект Оберс Linguage:
Ukrainian
English

- Головна - Технологія - Транслятор - Завантаження - Посилання - Про автора -

Проект призначений для тих програмистiв, якi б хотiли мати проосту i логiчну високорівневу мову для вирiшення своїх нетрiвiальних задач. Переконаний, що цiєю мовою програмування є Оберон-2. Аргументація наступна:

  1. Автоматичне керування дінамічною пам'яттю (збір сміття);
  2. Можливість створювати масиви розмір яких невідомий на час компіляції;
  3. Оберон-2 є об'єктно-орієнтованим;
  4. Опис мови займає приблизно 30 сторінок (з прикладами);
  5. Мова визначена досить суворо. Наприклад, гарантується, що вирази обчислюватимуться зліва направо (C цього не гарантує ...).
Про недоліки (з точки зору прикладного програміста):
  1. Невизначені засоби ввода-вивода;
  2. Невизначена математична бібліотека.

Крім самої мови програмування важливо те, як вона реалізована. Мої вимоги були такими:

  1. Можливість трансляції програми на мову макроасемблера;
  2. Невибагливість до характеристик системи;
  3. Якмога менше обмежень, як то: максимальний розмір типа, максимальний рівень вкладеності підпрограм, максимальна довжина рядка у тексті програми, максимальна вкладеність виразів, максимальна кількість параметрів у підпрограми перераховувати можна ще довго;
  4. Повна відповідність стандарту;
  5. Неприв'язка результатів трансляції до конкретної операційної системи;
  6. Імена змінних на національних мовах.

Я спробував три реалізації компілятора Оберон-2 які мене не задовольнили. Тому я створив транслятор з мови програмування Оберон-2 на мову макроасемблера. Зрозуміло, що свої вимоги я виконав. Про другий пункт скажу, що вимоги такі: процесор 8086, сопроцесор 8087, DOS 3.0, пам'яті від 256 Кб. Ясна річ, що на Pentium у Віндовс все теж працюватиме.

По третьму пункту. Доступна DOS пам'ять (до 640 Кб) ділиться на вузли (Node) розміром по 16 байт. Ці вузли і використовуються для усіх потреб (стек, рядки, структури). Буфер під ввод-вивід виділяється статично. Звідси і витікають обмеження. Якщо наприклад є у розпорядженні транслятора 512*1024 байт то ви не зможете оголосити більше 16384 іменованих об'єктів у одному модулі (один вузел на ім'я, другий на описувач).

Недоліки транслятора:

  1. Не підтримується роздільна компіляція;
  2. Нема оптимізації кода;
  3. У вихідному тексті не зберігаються імена змінних.

Цікаво? - Добре. У розділі Технологія пояснюється як створити просту програму. Завантаження - завантажити транслятор (приблизно 25Кб) і інші файли. Транслятор - технічні деталі серця проекта - транслятора. Посилання - ресурси які тим чи іншим боком стосуються цього проекта: визначення мови Оберон, асемблер NASM, і т.і.


Homepage: www.obers.net.ua
EMail: admin@obers.net.ua
18 Dec 2006 .. 14 May 2007