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

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #225 : Сентябрь 04, 2013, 05:47:12 pm »
а вот и иллюстрация того, что не нравится:
MODULE Math;
IMPORT JS;

PROCEDURE Random*() : INTEGER;
VAR
  res : INTEGER;
BEGIN
  JS.do("res = JS.Math.random();")
  RETURN res
END Random;

END Math.

MODULE Out;
IMPORT JS;

CONST
  console* = 0;
  alert  * = 1;

VAR
  Mode* : INTEGER;

PROCEDURE Real*(v : INTEGER);
BEGIN
  CASE Mode OF
      console : JS.do("JS.console.log(v);")
    | alert   : JS.do("JS.alert(v)")
  END
END Real;

PROCEDURE SetMode*(m : INTEGER);
BEGIN
  Mode := m
END SetMode;

BEGIN
  Mode := alert
END Out.

MODULE Test;
IMPORT Out, Math;

BEGIN
  Out.Real(Math.Random());
  Out.SetMode(Out.console);
  Out.Real(Math.Random())
END Test.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #226 : Сентябрь 04, 2013, 06:00:14 pm »
а вот и иллюстрация того, что не нравится:
PROCEDURE Random*() : INTEGER;
VAR
  res : INTEGER;
BEGIN
  JS.do("res = JS.Math.random();")
  RETURN res
END Random;
[/quote]
Ну, тут дело такое - пишешь биндинг - будь внимателен. Точно также можно поломать Оберон или Си функцией с асмовой вставкой. Ну, или почти также (эффекты там все же несколько другие будут - там будет целочисленный мусор или сегфолт, в зависимости от нюансов).
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #227 : Сентябрь 04, 2013, 06:04:39 pm »
Теперь можно осторожно пробовать писать библиотеки (но пока без полиморфизма, потому что еще жив другой монстр: https://github.com/vladfolts/oberonjs/issues/16 ).

Оно частично фикснуто. Не закрываю, потому что осталось фикснуть диагностику для случая, когда пытаются кастать переменную или не-VAR параметр (оно тебе не должно мешать).

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #228 : Сентябрь 04, 2013, 06:08:33 pm »
Vlad, как планируется кастовать значения обьектных типов JS в примитивные типы оберона (скажем, чтобы сделать бинд к Math.sin())

Я планировал просто пытаться приводить к нужному обероновскому типу. Сейчас "v := JS.Math.sin()" просто ругается о том, что функция не имеет результата. Т.е., можно только писать JS.do("v = Math.sin()") со всеми "небезопасными" последствиями.

DddIzer

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

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #230 : Сентябрь 04, 2013, 06:16:04 pm »
Вы не совсем поняли - речь идет о том, что ожидаемой надежности и строгости в построения (т.е. продуктов выполняемых на это языке) - Оберон не предоставляет (правда это в моем понимании   :( ) - а количество подобных казусов херово уловимых (по сути дела была "прошита" система контроля типов) , прямо пропорционально количеству дуканий как ни крути.

Никто не обещал безопасность и строгость при использовании SYSTEM. Ни в одном из оберонов. Тут только один ответ может быть - не использовать SYSTEM (особенно в JS.do() виде). JS.method - нужно сделать контроллируемым (в виде АВОСТ в случае невозможности приведения к ожидаемому типу), чтобы упростить написание биндингов.

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #231 : Сентябрь 04, 2013, 06:23:26 pm »

Никто не обещал безопасность и строгость при использовании SYSTEM. Ни в одном из оберонов. Тут только один ответ может быть - не использовать SYSTEM (особенно в JS.do() виде). JS.method - нужно сделать контроллируемым (в виде АВОСТ в случае невозможности приведения к ожидаемому типу), чтобы упростить написание биндингов.
а без него нельзя поскольку характер плаформы такой что будут активно понужаться внешние обьекты, возможно стоит задуматься о нормальном модуле SYSTEM.

valexey_u

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

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

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

А вот флеш и детишки: http://habrahabr.ru/post/192968/

Черт, бедные дети. Там же еще и Lua. Для мобильников. Ужоз!
(самое смешное что флеш, ActionScript - язык статически типизированный, но от этого не менее убогий)
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Online компилятор Oberon-07/11.
« Ответ #233 : Сентябрь 08, 2013, 06:54:29 pm »
Там же еще и Lua. Для мобильников.
А что такого в Lua?
Такие средства разработки как CoronaSDK - это мейнстрим вроде сейчас. Для игр просто идеально.

Jordan

  • Sr. Member
  • ****
  • Сообщений: 282
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #234 : Сентябрь 09, 2013, 10:10:38 am »
Предлагаю, переименовать компилятор в оберон 2 и запилить нормальные массивы. Плюс ещё строки в стиле паскаль, s1 + s2.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #235 : Сентябрь 09, 2013, 10:32:55 am »
Предлагаю, переименовать компилятор в оберон 2 и запилить нормальные массивы. Плюс ещё строки в стиле паскаль, s1 + s2.
И как это поможет для, например, map'ов? Ну и других типов контейнеров.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #236 : Сентябрь 09, 2013, 12:14:23 pm »
Там же еще и Lua. Для мобильников.
А что такого в Lua?
Динамическая типизация, как и в js или питоне.

Такие средства разработки как CoronaSDK - это мейнстрим вроде сейчас. Для игр просто идеально.
Смотря для каких игр.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #237 : Сентябрь 09, 2013, 01:49:20 pm »
Предлагаю, переименовать компилятор в оберон 2 и запилить нормальные массивы. Плюс ещё строки в стиле паскаль, s1 + s2.

Любые расширения синтаксиса/семантики (если будут сделаны) будут оформлены явно - опцией компилятора или еще как. Дабы любители минимализма/хардкора/квинтэссенции_императивного_программирования всегда имели возможность пощупать оригинал.

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #238 : Сентябрь 17, 2013, 02:52:08 pm »
Я конечно уже задавал вопрос, но на тот момент вникать не стал, т.к. не было программы, на которой можно было попробовать.

Сейчас снова (правда немного другой вопрос):

Есть программа, которая подгружает файлы js скриптов, не браузер.
Что надо сделать, чтобы в нее включить компилятор, и как оформлять код на обероне, чтобы он компилировался?

Или это невозможно данным компилятором. Если вдруг это возможно, то по мере наличия времени начну тестировать компилятор (правда со временем ужасно туго).

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #239 : Сентябрь 17, 2013, 02:54:46 pm »
И да, я тупой 1сник :) (думаю не такой как ilovb , в смысле отличаюсь от него в противоположную сторону :) ), поэтому ответы прошу излагать доступно