Автор Тема: Online компилятор Oberon-07/11.  (Прочитано 165169 раз)

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #15 : Июнь 18, 2013, 02:58:06 pm »
Ну, сред как таковых в браузере полно в общем-то. И пока не слишком понятно насколько IDE в браузере востребованы и перспективны (хотя их уже довольно много, в том числе и для java - еклипс в браузере тоже бывает). Так что Оберон тут пока не обгоняет, но хотя бы догоняет остальных.

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

WDE для PascalABC.NET -- зачётная вещь для тех кто изучает или как-то пользуется обычным паскалем. Не нужно ничего устанавливать, простенькие примеры не нужно нигде сохранять -- написал, запустил, потестил -- и закрыл браузер ))
это классный пример того,  что даже грамотная реализация  UI  не спасает от хреновой основы...

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #16 : Июнь 18, 2013, 03:26:53 pm »
Цель создания, как я понимаю - интерес к онлайн компиляции.

Я там на виках в двух предложения попытался сформулировать. Да, хотелось бы пощупать в каком виде может быть статическая типизация на вебе (на client side). А реализация всего этого на мерзком жабаскрипте делает такую реализацию доступной везде и для всех :)
Не уверен, что для этого подходит Oberon в том виде, в котором он сейчас существует, но в целом - поддерживаю.

В своё время сам пытался сделать нечто подобное, но для Active Oberon. Реализовал сканер, часть парсера. Потом понял бесперспективность идеи и отложил проект.

Если помечтать, то конечная цель - иметь нормальный промышленный язык в браузере на client side. В смысле мне нужен такой язык непосредственно для рабочих проектов, а не just for fun.
Сейчас по факту это на 100% исследовательский проект. Ближайшие планы - загрузка модулей и эксперименты как это может выглядеть в браузере. Работа с учебными примерами из виртовских книжек. После этого можно говорить о логическом завершении проекта "компилятор оберон-07/11 на вебе".
В целом звучит привлекательно, но стоит вспомнить о GWT и прочих подобных вещах. В своё время был большой бум по их поводу, но потом всё сошло на нет, а сейчас на проекты с GWT смотрят мягко говоря "странно". Интересно почему ?

Я себе пока вижу такую цель - создать приятную онлайн среду для работы с обероном (без упора на компиляцию в js). Пойду смотреть, что там в MirrorCode надо подкрутить :)

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #17 : Июнь 18, 2013, 03:32:22 pm »
Вроде там всё просто. Но оформление кода просто ужасно :(.

Печально смотреть на мешанину, когда привык к хорошему (YUI). :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #18 : Июнь 18, 2013, 03:42:56 pm »
Вроде там всё просто. Но оформление кода просто ужасно :(.

Печально смотреть на мешанину, когда привык к хорошему (YUI). :)
Круто. А почему стандартные типы не подсвечиваются?

github'ом владеешь? Сможешь изменить нашу дефолтную страничку и сделать пул-реквест? (https://github.com/vladfolts/oberonjs , файлик странички конкретно вот: https://github.com/vladfolts/oberonjs/blob/master/browser/oberonjs.html )
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #19 : Июнь 18, 2013, 03:45:07 pm »
На всякий случай, вот что зарезервировано в Oberon-07/11. То есть ключевые слова и символы:

+ := ARRAY IMPORT THEN
- ^ BEGIN IN TO
* = BY IS TRUE
/ # CASE MOD TYPE
~ < CONST MODULE UNTIL
& > DIV NIL VAR
. <= DO OF WHILE
, >= ELSE OR
; .. ELSIF POINTER
| : END PROCEDURE
( ) FALSE RECORD
[ ] FOR REPEAT
{ } IF RETURN
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #20 : Июнь 18, 2013, 03:45:45 pm »
Да, запулю, но чуть попозже (когда до дома доберусь).

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #21 : Июнь 18, 2013, 03:49:43 pm »
На всякий случай, вот что зарезервировано в Oberon-07/11. То есть ключевые слова и символы:

+ := ARRAY IMPORT THEN
- ^ BEGIN IN TO
* = BY IS TRUE
/ # CASE MOD TYPE
~ < CONST MODULE UNTIL
& > DIV NIL VAR
. <= DO OF WHILE
, >= ELSE OR
; .. ELSIF POINTER
| : END PROCEDURE
( ) FALSE RECORD
[ ] FOR REPEAT
{ } IF RETURN

Поправил по этому списку. А куда LOOP дели ?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #22 : Июнь 18, 2013, 04:11:07 pm »
На всякий случай, вот что зарезервировано в Oberon-07/11. То есть ключевые слова и символы:

+ := ARRAY IMPORT THEN
- ^ BEGIN IN TO
* = BY IS TRUE
/ # CASE MOD TYPE
~ < CONST MODULE UNTIL
& > DIV NIL VAR
. <= DO OF WHILE
, >= ELSE OR
; .. ELSIF POINTER
| : END PROCEDURE
( ) FALSE RECORD
[ ] FOR REPEAT
{ } IF RETURN

Поправил по этому списку. А куда LOOP дели ?
Выпилили :-) Зато теперь TRUE/FALSE это ключевые слова, а не предопределенные идентификаторы.

Правда вот INTEGER и прочие стандартные типы - это предопределенные идентификаторы, которые могут быть перекрыты локальными определениями.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #23 : Июнь 18, 2013, 04:21:18 pm »
Правда вот INTEGER и прочие стандартные типы - это предопределенные идентификаторы, которые могут быть перекрыты локальными определениями.

Вообще в репорте не написано (как обычно) - могут или не могут :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #24 : Июнь 18, 2013, 04:26:29 pm »
Правда вот INTEGER и прочие стандартные типы - это предопределенные идентификаторы, которые могут быть перекрыты локальными определениями.

Вообще в репорте не написано (как обычно) - могут или не могут :)

Ну, поскольку они там ничем не выделяются среди других идентификаторов (кроме того, что предопределенный процедуры-функции нельзя сувать в процедурные типы), то должны действовать общие правила. Ну, то есть как минимум в данной конкретной функции точно локальным определением их можно перекрыть. А вот что будет на уровне модуля - хз. Возможно должна быть коллизия.
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #25 : Июнь 18, 2013, 04:29:42 pm »
Вообще эта пляска с типами мне не очень понятна. Я бы сделал предопределённые типы INT8, INT16, INT32, INT64, ..., а INTEGER - переопределяемым, который смотрел бы (по умолчанию), на определённый тип (например, INT32).

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #26 : Июнь 18, 2013, 04:36:06 pm »
Основное правило - что не запрещено ,  то разрешено.. если не вступает в противоречие с другими определениями определенными ЯВНО , и их  прямыми следствиями
(кроме того, что предопределенный процедуры-функции нельзя сувать в процедурные типы)
не понял, что я  не могу вызвать, скажем  S:=Sum(a, b, step, ABS); ?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #27 : Июнь 18, 2013, 04:38:41 pm »
Вообще эта пляска с типами мне не очень понятна. Я бы сделал предопределённые типы INT8, INT16, INT32, INT64, ..., а INTEGER - переопределяемым, который смотрел бы (по умолчанию), на определённый тип (например, INT32).
Там вообще всё печально с этим. Ведь в Обероне-07/11 это и руками не сделать. Если раньше можно было написать TYPE Foo = INTEGER, то теперь нельзя. Алиасы теперь возможны только для структурных типов (массивы, записи).
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #28 : Июнь 18, 2013, 04:45:08 pm »
Ну, поскольку они там ничем не выделяются среди других идентификаторов (кроме того, что предопределенный процедуры-функции нельзя сувать в процедурные типы), то должны действовать общие правила.

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

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #29 : Июнь 18, 2013, 04:47:43 pm »
Обычно наоборот, что не запрещено - то разрешено.

Вообщем, всё печально :(... :) но это не огорчает