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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #180 : Август 30, 2013, 03:56:08 pm »
...А испортить программу всю на C# можно ... на С++ можно...
Программист на C# не станет этого делать потому, что писать на другом языке менее удобно, тяжелее. А плюсы такого подхода нивелируются его минусами. Поэтому, программист станет прибегать к нему в крайних случаях.
Вряд ли веб-программист будет стоять в таких же условиях. Те, кто использует js и плюётся, здесь не рассматриваются: были бы такими все - и я даже и не начинал бы. А вот с остальными проблема. Приходят они в новый проект, а там oberonjs. В котором даже цикла с брейком нет! Или процедура возвращает данные последним оператором (никаких return из середины цикла или if-а)! Так нивапрос же. Зато есть JS.do. Долго ли они думать будут?
Описываемая ситуация - это rich man problem :-) До этого нужно еще дожить, что бы веб-приложения на Обероне в вебе разрослись до такого размера, что js'нику таки пришлось бы над ним работать, ибо альтернатив нет :-)

Людей, которым не нравится js, но которым приходится таки под js-среду что-то писать, на самом деле достаточно много, и именно они одна из целевых аудиторий сабжа. А еще есть info21 со своими мелкими падаванами, и, похоже, ему тоже это дело слегка интересно. А еще есть народ который рад начать программировать что-то наглядное и прикольное, но к сюрпризам js не готовы, равно как не готовы и толмуды C# изучать и вообще в шеле ковыряться, не говоря уже о C++. Этим мы тоже сможешь помочь, я думаю. А есть (начинающие)электронщики, которые тоже в программировании ни бум-бум, но что-то потыкать им хочется (светодиодиком помигать, там машинкой порулить), а тут можно и в браузере не отходя от кассы алгоритмы поковырять, и в микроконтроллер (Astrobe) залить.

В общем, спокойно. Мы не идем войной на мир js-разработчиков, мы просто обкусываем этот мир по краям :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #181 : Август 30, 2013, 05:05:22 pm »
В общем, спокойно. Мы не идем войной на мир js-разработчиков, мы просто обкусываем этот мир по краям :-)
Так то да - на покусанный жабаскрипт, как и на пошарпаный с желающие всегда найдутся. Главное, чтобы была межпространственная связь.

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #182 : Август 30, 2013, 07:45:02 pm »
А как мне с онлайнового компилятора получить AST и таблицу символов (SYM файл) ?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #183 : Август 30, 2013, 10:16:33 pm »
А как мне с онлайнового компилятора получить AST и таблицу символов (SYM файл) ?

Ну и вопросы у вас... Неудобно даже :) А зачем?

P.S. Это простой однопроходный компилятор. Он даже AST не строит (я вроде писал).

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #184 : Август 31, 2013, 08:20:55 am »
Хочу генерить свой вариант JS. У меня есть идеи как реализовать аналог ББ на JS. При этом как обойтись вообще без JS вставок. Модули можно будет писать и на Обероне и на JS (в особом стиле), и использовать их из Оберона. Т.е что-то типа.
MODULE TestDom;

VAR
    node : SysDom.Node;

IMPORT
    SysDom;

PROCEDURE DemoAlert* (x : ARRAY OF CHAR);
BEGIN
    SysDom.setHTML(node, x);
END DemoAlert;

BEGIN
    node := SysDom.create('<div>Hello wolrd!</div>');
END TestDom.
Где SysDom - системный модуль в отдельном файле написанный на JS.
А в модуле, написанном на JS можно будет вызывать код, созданный из Оберона:
    Y.O7.TestDom.DemoAlert('New message');
...
    requires: [
        ...
        'o7-TestDom',
        ...
    ]

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #185 : Август 31, 2013, 03:00:13 pm »
А еще есть народ который рад начать программировать что-то наглядное и прикольное, но к сюрпризам js не готовы,

Из этой ниши - как раз педагогическая среда. Активно юзающая флеш как для фана детишкам, так и для создания всяких пособий.
Вот их-то OberonJS-ом, да на фоне WebGL-я, SVG и прочих, и надо окультуривать.

Снимется, кстати, глубокое драматическое противоречие для тех учителей, кто понимает, что флеш - г-но, непригодное для обучения и вообще ни для чего; но не знает, чем можно так же легко закрыть вот эти задачки визуализации, каких-то мини-приложений-пособий, да чтоб они ещё веб-публикабельны были (ну, типа, как коллекции http://school-collection.edu.ru/ или http://fcior.edu.ru/).

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #186 : Август 31, 2013, 09:27:55 pm »
Хочу генерить свой вариант JS.

Выделеного бакенда сейчас нет. Как я уже говорил - компилятор максимально простой и однопроходный (код генерится непосредственно в процессе парсинга). В ближайшее время переделывать в этом плане ничего не собираюсь. Но исходники открыты ;)

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Online компилятор Oberon-07/11.
« Ответ #187 : Сентябрь 02, 2013, 11:13:41 pm »
Вот такой код не комплируется:
MODULE Test;
IMPORT JS;
PROCEDURE Do*;
 VAR x: INTEGER;
BEGIN
 x:=MAX(INTEGER);
 JS.alert(x);
 x:=07FFFFFFFH +1;
 JS.alert(x);
 x:=0FFFFFFFFH * 2;
 JS.alert(x);
END Do;
END Test.
Цитировать
undeclared identifier: 'MAX'

P.S. А нельзя ли хотя бы добавить базовый модуль Out?

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #188 : Сентябрь 02, 2013, 11:20:52 pm »
Вот такой код не комплируется:
MODULE Test;
IMPORT JS;
PROCEDURE Do*;
 VAR x: INTEGER;
BEGIN
 x:=MAX(INTEGER);
 JS.alert(x);
 x:=07FFFFFFFH +1;
 JS.alert(x);
 x:=0FFFFFFFFH * 2;
 JS.alert(x);
END Do;
END Test.
Цитировать
undeclared identifier: 'MAX'

P.S. А нельзя ли хотя бы добавить базовый модуль Out?
1.  :) а что  такое MAX  в  07?
2.  Куда должны по= вашему выводить процедуры модуля  Out?

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #189 : Сентябрь 03, 2013, 04:41:32 am »
В консоль вестимо.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #190 : Сентябрь 03, 2013, 04:49:56 am »
Вот такой код не комплируется:
MODULE Test;
IMPORT JS;
PROCEDURE Do*;
 VAR x: INTEGER;
BEGIN
 x:=MAX(INTEGER);
 JS.alert(x);
 x:=07FFFFFFFH +1;
 JS.alert(x);
 x:=0FFFFFFFFH * 2;
 JS.alert(x);
END Do;
END Test.
Цитировать
undeclared identifier: 'MAX'
И не должен. MAX действительно в Обероне нет: http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf

P.S. А нельзя ли хотя бы добавить базовый модуль Out?
Будет в стандартной библиотеке. Но в язык вшит не будет.
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #191 : Сентябрь 03, 2013, 05:29:08 am »
В консоль вестимо.
Какую консоль... Если имеется ввиду  отладочная консоль JS - то нет проблем
используйте
JS.console.log()  только не забудьте активировать ее в соответствующем браузере - все прекрасно работает
 примеры:
...
VAR s:INTEGER;
....
JS.console.log("Привет МИР!");
s:=45;
JS.console.log(s*5);
....
 ;) когда я задавал вопрос , я подспудно-паскудно намекал на нечто другое  :)

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #192 : Сентябрь 03, 2013, 06:04:41 am »
Кстати, Vlad, возможно стоит в качестве платформенной фичи(регулируемой опцией компилятора)
дать возможность делать псевдонимы на обьекты JS наподобие
....
IMPORT con:=JS.console;
...
con.log("Hello!");
.....
вроде один фиг всегда создаются их экземпляры с одной стороны, с другой - они внешние и недоразумений при комбинировании быть не должно....

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #193 : Сентябрь 03, 2013, 06:35:43 am »
А еще есть народ который рад начать программировать что-то наглядное и прикольное, но к сюрпризам js не готовы,

Из этой ниши - как раз педагогическая среда. Активно юзающая флеш как для фана детишкам, так и для создания всяких пособий.
Вот их-то OberonJS-ом, да на фоне WebGL-я, SVG и прочих, и надо окультуривать.

Снимется, кстати, глубокое драматическое противоречие для тех учителей, кто понимает, что флеш - г-но, непригодное для обучения и вообще ни для чего; но не знает, чем можно так же легко закрыть вот эти задачки визуализации, каких-то мини-приложений-пособий, да чтоб они ещё веб-публикабельны были (ну, типа, как коллекции http://school-collection.edu.ru/ или http://fcior.edu.ru/).

Ну, не только. Десктоп-приложения (точнее их GUI) сейчас уже очень часто также пишутся с помощью html/js. Ну, скажем недавний пример: http://forum.oberoncore.ru/viewtopic.php?f=47&t=4470&p=82127

Приложение LeaderTask. GUI этого приложение построено на html (c небольшой добавкой js) с помощью HTMLayout. Само приложение (логика), насколько я понимаю, писано на С++. Данные хранятся в sqlite 3.

Еще про HTMLayout: http://habrahabr.ru/post/62330/
Ну и офиц. сайт: http://www.terrainformatica.com/htmlayout/
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #194 : Сентябрь 03, 2013, 06:43:34 am »
Кстати, Vlad, возможно стоит в качестве платформенной фичи(регулируемой опцией компилятора)
дать возможность делать псевдонимы на обьекты JS наподобие
....
IMPORT con:=JS.console;
В обероне это запрещено же, qualident в именах модулей нельзя использовать.
А жаль, можно было бы иерархии модулей выстраивать. Тогда JS.console был бы просто модулем console в папке JS...
to iterate is human, to recurse, divine

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