Автор Тема: Oberon-07M  (Прочитано 52538 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Oberon-07M
« : Март 21, 2011, 09:14:28 am »
Появился новый компилятор для языка программирования Oberon-07M. "M" означает, что язык разширен, в частности разрешены одномерные динамические массивы. 

Разработчиком данного компилятора являюсь я сам. Компилятор изначально разрабатывался на Component Pascal, после чего исходные тексты были немного изменены и скомпилированы, самим компилятором Oberon-07M.

Компилятор можно скачать с сайта http://ExaProg.com. Сайт пока очень простой. В дальнейшем планирую сделать его более красивым, выложить туда документацию по компилятору.

Если будут вопросы или найдете ошибки, то пишите мне на почту, адрес почты указан на сайте: http://ExaProg.com.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #1 : Март 21, 2011, 09:30:44 am »
Попробовал. Под Win7 все собралось (хотя компилирует конечно несколько задумчиво для таких объемов). То есть Hello World даже работает. Попробовал сборщик мусора, сборщик мусора явно лучше чем во всех виденых мною реализациях Оберонов (ну, если не брать в рассчет тот, что в gpcp и прочих живущих в чужих виртуальных машинах).

Однако имеются вопросы:
1) Как у этого сборщика мусора с многопоточностью? То есть если я засандолю несколько потоков, не попортит ли мне сборщик мусора что-нибудь?
2) Что с поддержкой 64 бит?
3) Документация по компилятору какая-нибудь будет?

Ну и предложение — таки именовать исходники не как .txt, а как .ob7 например. Чтобы визуально различались.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #2 : Март 21, 2011, 09:36:00 am »
Цитата: Евгений Темиргалеев
Цитата: Info21
...возможность использовать компиляторы вариантов Оберона из-под ББ, чтобы создавались бинарники стандартного ББ-формата.

Не вижу (пока) причин, почему такие бинарники не могли бы бесшовно вписываться в среду ББ.
Согласен. Исходя из общих соображений, по-моему, достаточно переделать только ББй сканер/парсер КП под О7, плюс склепать какую-то переключалку.

Проблем масса. Другой рантайм, например. Другой сборщик мусора. Другая семантика, другие типы. Например Оберон-07 ничего не знает про процедуры связанные с типом записи. Ничего не знает про то, что некоторые записи нельзя расширять, иерархия записей в Обероне-07 не имеет единого корня, в отличае от КП. То есть проблемы будут со интеграцией.

Вот если бы ББ был построен на Обероне, то сверху насадить КП было бы много проще, чем сейчас.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #3 : Март 21, 2011, 09:42:16 am »
Ах да, еще вопрос — будет ли портабельный вариант компилятора? То есть для невинды, а posix'а (linux/bsd/macos x/qnx/solaris etc).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re:Oberon-07M
« Ответ #4 : Март 21, 2011, 09:43:47 am »
Цитата: Евгений Темиргалеев
Цитата: Info21
...возможность использовать компиляторы вариантов Оберона из-под ББ, чтобы создавались бинарники стандартного ББ-формата.

Не вижу (пока) причин, почему такие бинарники не могли бы бесшовно вписываться в среду ББ.
Согласен. Исходя из общих соображений, по-моему, достаточно переделать только ББй сканер/парсер КП под О7, плюс склепать какую-то переключалку.

Проблем масса. Другой рантайм, например. Другой сборщик мусора. Другая семантика, другие типы. Например Оберон-07 ничего не знает про процедуры связанные с типом записи. Ничего не знает про то, что некоторые записи нельзя расширять, иерархия записей в Обероне-07 не имеет единого корня, в отличае от КП. То есть проблемы будут со интеграцией.

Вот если бы ББ был построен на Обероне, то сверху насадить КП было бы много проще, чем сейчас.
Есть ощушение, что Rifat пошел по пути фичивания 07- на практике, это мало что добавляет к сфере его использования -ИМХО Не самый лучший вариант, целесообразнее разработать новый язык базового уровня на основе  07 ..

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #5 : Март 21, 2011, 09:46:09 am »
Есть ощушение, что Rifat пошел по пути фичивания 07- на практике, это мало что добавляет к сфере его использования -ИМХО Не самый лучший вариант, целесообразнее разработать новый язык базового уровня на основе  07 ..
Но это и не самый плохой вариант. Опыт опять таки. Алсо, никто не мешает желающим разрабатывать новый язык базового уровня на базе 07, таки уже его разрабатывать (на уровне спек). И когда там что-то будет, можно и компилятор сделать, благо опыт уже будет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Rifat

  • Jr. Member
  • **
  • Сообщений: 62
    • Просмотр профиля
Re:Oberon-07M
« Ответ #6 : Март 21, 2011, 09:47:22 am »
Oднако имеются вопросы:
1) Как у этого сборщика мусора с многопоточностью? То есть если я засандолю несколько потоков, не попортит ли мне сборщик мусора что-нибудь?
2) Что с поддержкой 64 бит?
3) Документация по компилятору какая-нибудь будет?

Ну и предложение — таки именовать исходники не как .txt, а как .ob7 например. Чтобы визуально различались.
Компилятор расчитан на однопоточные программы, также как и ББ.
Компилятор генерирует 32 битный код, в планах есть сделать 64-битную версию компилятора.
Документация будет в ближашие дни.
Насчет расширения согласен, что txt не очень удачно, что лучше ob7. В принципе вы сами можете переименовать файлы и изменить в bat файле расширение.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #7 : Март 21, 2011, 09:47:46 am »
Да, уточню конфигурацию где у меня все заработало: Windows 7 32 bit rus.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #8 : Март 21, 2011, 09:50:08 am »
Однопоточность это печально… Ну да ладно.
И еще вопрос по разработке компилятора – есть ли у набор компиляторных тестов?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Rifat

  • Jr. Member
  • **
  • Сообщений: 62
    • Просмотр профиля
Re:Oberon-07M
« Ответ #9 : Март 21, 2011, 09:52:29 am »
Есть ощушение, что Rifat пошел по пути фичивания 07- на практике, это мало что добавляет к сфере его использования -ИМХО Не самый лучший вариант, целесообразнее разработать новый язык базового уровня на основе  07 ..
Но это и не самый плохой вариант. Опыт опять таки. Алсо, никто не мешает желающим разрабатывать новый язык базового уровня на базе 07, таки уже его разрабатывать (на уровне спек). И когда там что-то будет, можно и компилятор сделать, благо опыт уже будет.
Что вы имеете в виду под фичиванием?
То что я добавил динамические массивы. Я размышлял над тем нужны ли они, можно ли обойтись только указателями на запись, но пришел к выводу, что в некоторых случаях несколько блоков фиксированного размера не могут заменить одного большого массива. Например, когда требуется за логарифмическое время находить какое-нибудь значение в большом объеме данных, при помощи бинарного поиска.
Кроме того, никто не запрещает не пользоваться динамическими массивами, если вы не хотите, а программировать так, как будто их нет.

Rifat

  • Jr. Member
  • **
  • Сообщений: 62
    • Просмотр профиля
Re:Oberon-07M
« Ответ #10 : Март 21, 2011, 09:54:36 am »
Однопоточность это печально… Ну да ладно.
И еще вопрос по разработке компилятора – есть ли у набор компиляторных тестов?
У меня есть свои тесты на которых я тестировал, но выложить их пока не могу, их надо еще причёсывать.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #11 : Март 21, 2011, 09:55:29 am »
Компилятор генерирует 32 битный код, в планах есть сделать 64-битную версию компилятора.
64 битную версию компилятора, или компилятор генерирующий 64битный код? Впрочем, поскольку он компилирует сам себя, то видимо и то и это.

Однако вопрос возникает – как быть с типами данных? В Обероне-07 размеры всех примитивных типов четко расписаны. То есть видимо придется расширять язык новыми типами вроде LONGINT, ну и чтобы NEW(arr, len) len принимал типа LONGINT. Жаль что в Обероне-07 нельзя создавать псевдонимы для примитивных типов, это помогло бы в данном случае.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Rifat

  • Jr. Member
  • **
  • Сообщений: 62
    • Просмотр профиля
Re:Oberon-07M
« Ответ #12 : Март 21, 2011, 10:00:42 am »
Компилятор генерирует 32 битный код, в планах есть сделать 64-битную версию компилятора.
64 битную версию компилятора, или компилятор генерирующий 64битный код? Впрочем, поскольку он компилирует сам себя, то видимо и то и это.

Однако вопрос возникает – как быть с типами данных? В Обероне-07 размеры всех примитивных типов четко расписаны. То есть видимо придется расширять язык новыми типами вроде LONGINT, ну и чтобы NEW(arr, len) len принимал типа LONGINT. Жаль что в Обероне-07 нельзя создавать псевдонимы для примитивных типов, это помогло бы в данном случае.
Как я себе представляю 64 битную весию, что тип INTEGER и указатели будут занимать 64 бита, и не будет необходимости в другом типе данных. Но об этом еще пока рано думать, надо сначала обкатать эту версию.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #13 : Март 21, 2011, 10:04:09 am »
То что я добавил динамические массивы. Я размышлял над тем нужны ли они, можно ли обойтись только указателями на запись, но пришел к выводу, что в некоторых случаях несколько блоков фиксированного размера не могут заменить одного большого массива. Например, когда требуется за логарифмическое время находить какое-нибудь значение в большом объеме данных, при помощи бинарного поиска.
На самом деле можно и без них. Например см. http://en.wikipedia.org/wiki/VList
Ясно что нам для реализации VList'a произвольного размера потребуется 32 типа массивов фиксированного размера оберона-07.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Oberon-07M
« Ответ #14 : Март 21, 2011, 10:05:48 am »
Как я себе представляю 64 битную весию, что тип INTEGER и указатели будут занимать 64 бита, и не будет необходимости в другом типе данных. Но об этом еще пока рано думать, надо сначала обкатать эту версию.
Это, вообще говоря, нарушит совместимость с Оберон-07 и будет явно противоречить спеке на оный Оберон-07. Но наверное да, пока рано об этом.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"