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

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #120 : Август 23, 2013, 03:09:15 pm »
Предыдущий пример валится на компиляции: ошибка указана после первого окна.
MODULE Out;
IMPORT JS;
PROCEDURE Int*(i : INTEGER);
BEGIN
JS.alert(i)
END Int;
PROCEDURE String*(s : ARRAY OF CHAR);
BEGIN
JS.alert(s)
END String;
END Out.

MODULE test;
IMPORT Out;
BEGIN
Out.Int(42);
    Out.String("Hello, World!")
END test.
Вот это тоже не компилируется:
Цитировать
SyntaxError: missing } after property list
Ошибка указывается после второго окна

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #121 : Август 23, 2013, 03:16:56 pm »
Проблемка заключена вreturn {
Int: Int
String: String
}
Не хватает запятой.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #122 : Август 23, 2013, 03:43:50 pm »
Проблемка заключена вreturn {
Int: Int
String: String
}
Не хватает запятой.

Это фикснул (issue #13). Ждем обновления странички.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #123 : Август 23, 2013, 03:48:09 pm »
PROCEDURE String*(s : ARRAY 20 OF CHAR);

Должен быть открытый массив. А диагностика хреновая, да.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #124 : Август 23, 2013, 03:51:48 pm »
Вот это выводит список ASCII-кодов

Потому что оно транслируется в жабаскриптовый массив (жабаскриптовые строки не могут быть использованы для ARRAY OF CHAR - они иммутабельны). Пока остается только ручками делать маршаллинг в жабаскрипте (идти по массиву и собирать строку).

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #125 : Август 23, 2013, 03:55:13 pm »
Это фикснул (issue #13). Ждем обновления странички.
Вы ж так не пугайте. Я уж подумал, что у меня глюки начались. Нашёл я файл в репозитории, в котором экспорт генерится, а там запятая есть. Снова попробовал свой примерчик - а оно работает... Только потом заметил, что время коммита позже моего сообщения.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #126 : Август 23, 2013, 03:56:33 pm »
Потому что оно транслируется в жабаскриптовый массив (жабаскриптовые строки не могут быть использованы для ARRAY OF CHAR - они иммутабельны). Пока остается только ручками делать маршаллинг в жабаскрипте (идти по массиву и собирать строку).
Ничего страшного. Там всё равно JS импортируется.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #127 : Август 25, 2013, 10:22:05 am »
С другой стороны, импорт JS ничего полезного не принёс.

Я тут глянул в исходник: символы представлены числами, а не строками длиной в один символ. Если не вдаваться в подробности, то oberonjs реализует машину js не в должной мере, чтобы у него была возможность выводить символьные данные. Чтобы такая возможность появилась, нужна либо подходящая предопределённая процедура, либо встроенный модуль (например, Streams).

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #128 : Август 25, 2013, 01:38:32 pm »
Возможная реализация канала исходящих данных.
var OutputChannel = function(name) {
  this.chan = document.getElementById(name);
  this.Int = function (i) {
    var item = document.createTextNode(i);
    this.chan.appendChild(item);
  }
  this.String = function (str) {
    var item = document.createTextNode(String.fromCharCode.apply(this, str));
    this.chan.appendChild(item);
  }
  this.Char = function (ch) {
    var item = document.createTextNode(String.fromCharCode(ch));
    this.chan.appendChild(item);
  }
  this.Ln = function () {
    var item = document.createElement("br");
    this.chan.appendChild(item);
  }
}

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #129 : Август 25, 2013, 01:55:34 pm »
Полагаю, что в следующем "релизе" у нас появится возможность "асмовых" (то есть JS'ных) вставок. Как-то так:
MODULE Test;
IMPORT JS;

BEGIN
   JS.Code("console.log("hello world")")
END Test.
Y = λf.(λx.f (x x)) (λx.f (x x))

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #130 : Август 25, 2013, 02:49:27 pm »
Тогда смысл использования oberonjs пропадёт. Даже, если административно принудить использовать этот язык вместо js, то все всюду такие вот вставки делать будут, и смысл перехода на oberonjs исчезнет, потому что при его использовании будут те же проблемы, что и в js (собственно, из-за его - js - использования проблемы и будут).

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #131 : Август 25, 2013, 03:43:59 pm »
Тогда смысл использования oberonjs пропадёт. Даже, если административно принудить использовать этот язык вместо js, то все всюду такие вот вставки делать будут, и смысл перехода на oberonjs исчезнет, потому что при его использовании будут те же проблемы, что и в js (собственно, из-за его - js - использования проблемы и будут).
Эти вставки - чисто для написания системных модулей/либ. Для маршалинга и так далее. Считай это налогом SYSTEM :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #132 : Август 26, 2013, 12:34:08 pm »
Вообще, для скриптиков всяких смысла нет...

Вот для цельных приложений в браузере (типа, как Qooxdoo и им подобные фреймворки дают) - уже можно, но нужно фреймворк делать. И ХЗ, насколько Оберон-07 будет удобен без методов и обычного ООП для таких задач.

В свете появления WebGL появилась ниша 3D-приложений - вот там, возможно, раздолье. В силу процедурного характера GL-интерфейсов, думаю, и Оберон-07 будет удобен.

P.S. Вообще, я не говорю, что "без обычного ООП не жизнь", просто удобные схемы в таком стиле как-то не наработаны, за пределами Project Oberon.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #133 : Август 26, 2013, 12:41:22 pm »
Вообще, для скриптиков всяких смысла нет...

Вот для цельных приложений в браузере (типа, как Qooxdoo и им подобные фреймворки дают) - уже можно, но нужно фреймворк делать. И ХЗ, насколько Оберон-07 будет удобен без методов и обычного ООП для таких задач.

В свете появления WebGL появилась ниша 3D-приложений - вот там, возможно, раздолье. В силу процедурного характера GL-интерфейсов, думаю, и Оберон-07 будет удобен.

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

Собственно мы и не собираемся полностью изжить js, будет мирное сосуществоание каждый на своем месте :-) Почти как asm и какой-нибудь ЯВУ. ;-)
Y = λf.(λx.f (x x)) (λx.f (x x))

kkk

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #134 : Август 26, 2013, 03:51:54 pm »
Вы же против Dart.