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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #150 : Август 27, 2013, 02:01:09 pm »
Да, на всякий случаю нюанс - веб-серверу нужна удобная асинхронность. Желательно оформленная либо через "легковесные потоки" либо через continuations какие-нибудь.

И еще момент - какой-то особой поддержки в компиляторе oberon'a node.js не нуждается. Так что искаропки оно будет работать сразу (только биндинги к нужным либам сделать и все). Но собственно это выбор программиста на чем ему писать серверную часть. Может он вообще на ерланге захочет :-)

Компилятор akron1 тоже можно использовать, как я уже говорил, курс на совместимость и переносимость модулей между современными реализациями Оберона-07. Но для этого компилятора придется написать tcp-биндинг и http-либу как минимум.
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #151 : Август 27, 2013, 04:01:18 pm »
Но собственно это выбор программиста на чем ему писать серверную часть. Может он вообще на ерланге захочет :-)

Если программист для серверной части выберет тот же Ерланг, то логично будет и для клиентской части взять ерланговский фреймворк/вебсервер, которых уже куча -- всякие YAWS, Nitrogen, ChikagoBoss и прочие...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #152 : Август 27, 2013, 04:04:29 pm »
Сейчас тренд на веб-приложения которые (после загрузки в браузере, или куда-то еще) спокойно работают полностью автономно, без интернета. В частности таким "веб-приложением" является например сам компилятор. Загрузилась страничка - после этого можно смело отрубать интернет, компилятор работать будет нормально.
т.е. речь идет о приложениях ориентированных на выполнение в изолированной среде - "песочнице", со всеми вытекающими из этого достоинствами и ограничениями.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #153 : Август 27, 2013, 04:07:39 pm »
Но собственно это выбор программиста на чем ему писать серверную часть. Может он вообще на ерланге захочет :-)

Если программист для серверной части выберет тот же Ерланг, то логично будет и для клиентской части взять ерланговский фреймворк/вебсервер, которых уже куча -- всякие YAWS, Nitrogen, ChikagoBoss и прочие...
YAWS/Nitrogen/ChikagoBoss - это все СЕРВЕРНЫЕ фреймворки. Приложения в браузере с помощью них (без js) не реализовать в принципе. Максимум что там есть - это шаблонный движок который отрабатывает НА СТОРОНЕ СЕРВЕРА, и генерит там html-страничку которая грузится уже в браузер.

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #154 : Август 27, 2013, 05:26:38 pm »
Но собственно это выбор программиста на чем ему писать серверную часть. Может он вообще на ерланге захочет :-)

Если программист для серверной части выберет тот же Ерланг, то логично будет и для клиентской части взять ерланговский фреймворк/вебсервер, которых уже куча -- всякие YAWS, Nitrogen, ChikagoBoss и прочие...
YAWS/Nitrogen/ChikagoBoss - это все СЕРВЕРНЫЕ фреймворки. Приложения в браузере с помощью них (без js) не реализовать в принципе. Максимум что там есть - это шаблонный движок который отрабатывает НА СТОРОНЕ СЕРВЕРА, и генерит там html-страничку которая грузится уже в браузер.

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

Я имел в виду, что желательно ограничивать набор инструментария. В веб-программировании он и так уже черезчур большой -- html+css+js, ты предлагаешь ещё и oberonjs.
Успех asp.net и nodeJS показывает, что следует пользоваться одним языком как на серверной части, так и на клиентской. Если уж клиентскую часть предлагается делать с использованием оберона, то и серверную тоже желательно на нём же...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #155 : Август 29, 2013, 09:59:02 am »
Таки новая версия - vlad добавил JS.do, то есть js-вставки. Теперь можно писать модули ввода-вывода, маршалинга и пробовать делать биндинги.

Выглядит это так:
MODULE MyModule;
IMPORT JS;
 
PROCEDURE Test;
VAR
  i : INTEGER;
BEGIN
  i := 42;
  JS.do("alert('hello world '+i)")
END Test;
 
BEGIN
  Test;
END MyModule.

Превращается в:
var MyModule = function (JS){

function Test(){
var i = 0;
i = 42;
alert('hello world '+i);
}
Test();
}(this);

Кстати, всвязи с тем, что у нас кода вскоре может стать довольно много, нужно решить, какого стиля кодирования придерживаемся? То есть отступы/именования и проч.
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #156 : Август 29, 2013, 10:52:33 am »
Таки новая версия - vlad добавил JS.do, то есть js-вставки. Теперь можно писать модули ввода-вывода, маршалинга и пробовать делать биндинги.

...

Кстати, всвязи с тем, что у нас кода вскоре может стать довольно много, нужно решить, какого стиля кодирования придерживаемся? То есть отступы/именования и проч.
Не вижу смысла. Это не будет Оберон "в чистом виде", поэтому он не будет пересекаться с другой кодовой базой. Как тут уже справедливо заметили, что подобный подход "поощряет" и если сначала будет 80% обероновского кода против 20% JS, то через некоторое время будет 20% обероновского и 80% JS. Потому что на JS проще/удобнее/быстрее/привычнее/... (подставить по желанию).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #157 : Август 29, 2013, 10:58:02 am »
Не вижу смысла. Это не будет Оберон "в чистом виде", поэтому он не будет пересекаться с другой кодовой базой.
Будет.

Как тут уже справедливо заметили, что подобный подход "поощряет" и если сначала будет 80% обероновского кода против 20% JS, то через некоторое время будет 20% обероновского и 80% JS. Потому что на JS проще/удобнее/быстрее/привычнее/... (подставить по желанию).
Кому проще писать на JS тот пусть на JS и пишет, наш компилятор ему ни к чему. А нам удобней, в ряде приложений, использовать статически типизированный язык. Оберон.

Вообще вы так говорите, будто Оберон в принципе конкурировать с js не способен :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #158 : Август 29, 2013, 11:01:22 am »
Так. Обнаружилась (при попытке написать что-то полезное :-) ) новая бага:

Не экспортируется "указательный" тип:
MODULE A;
TYPE AA* = POINTER TO RECORD END;
END A.

MODULE B;
IMPORT A;
VAR a : A.AA; (* error, identifier 'AA' is not exported by module 'A' *)
END B.

Завел багу на гитхабе: https://github.com/vladfolts/oberonjs/issues/14
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #159 : Август 29, 2013, 11:14:09 am »
Вообще вы так говорите, будто Оберон в принципе конкурировать с js не способен :-)
Я надеюсь найти вариант их симбиотического сосуществования.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #160 : Август 29, 2013, 02:26:56 pm »
Вообще вы так говорите, будто Оберон в принципе конкурировать с js не способен :-)
Я надеюсь найти вариант их симбиотического сосуществования.

Усложнять взаимодействие с внешним миром (JS) нельзя, особенно на первоначальном этапе. Потому что:
- взаимодействовать придется много (все уже написано на JS)
- нет ресурсов для расписывания кошерного маршаллинга/биндинга

Кроме того, последующие обнаружение "идеологически неправильных мест" тривиально - текстовый поиск "IMPORT JS". Архитектуру перекалбашивать не надо.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #161 : Август 29, 2013, 02:38:30 pm »
Вообще вы так говорите, будто Оберон в принципе конкурировать с js не способен :-)
Я надеюсь найти вариант их симбиотического сосуществования.

Усложнять взаимодействие с внешним миром (JS) нельзя, особенно на первоначальном этапе. Потому что:
- взаимодействовать придется много (все уже написано на JS)
- нет ресурсов для расписывания кошерного маршаллинга/биндинга

Кроме того, последующие обнаружение "идеологически неправильных мест" тривиально - текстовый поиск "IMPORT JS". Архитектуру перекалбашивать не надо.

Более того, текущее решение (JS.do("some js code here")) не меняет синтаксис языка, то есть модуль остается синтаксически правильным с точки зрения Оберона, и может быть проверен на синтаксис любым другим компилятором Оберона-07, либо вообще сторонним инструментом (например не слетает подсветка синтаксиса в редакторах). Более того, этот модуль может быть даже скомпилирован, компилятором скажем akorn1, если добавить модуль-заглушку JS такого вида:

MODULE JS;

PROCEDURE do(js : ARRAY OF CHAR);
BEGIN
  ASSERT(FALSE); (* or other runtime check/runtime reporting *)
END do;

END JS.

Таким образом становится возможным плавный перенос модулей туда-сюда. Таковой перенос намного менее болезненнен чем, скажем, перенос системозависимых модулей между ББ и GPCP (ибо BB и GPCP для взаимодействия с внешним миром меняют язык на уровне грамматики).

Чем больше я думаю о JS.do, тем больше убеждаюсь во мнении, что именно так и есть правильно.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #162 : Август 29, 2013, 04:32:23 pm »
А нам удобней, в ряде приложений, использовать статически типизированный язык.
"Нам"? Это кому?

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #163 : Август 29, 2013, 04:35:57 pm »
Чем больше я думаю о JS.do, тем больше убеждаюсь во мнении, что именно так и есть правильно.
За остальных не скажу, но я считаю, что - да, это очень хорошее решение на техническом уровне. Но есть ещё и человеческий фактор.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #164 : Август 29, 2013, 06:45:11 pm »
А нам удобней, в ряде приложений, использовать статически типизированный язык.
"Нам"? Это кому?
Как минимум мне и Владу.
Y = λf.(λx.f (x x)) (λx.f (x x))