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

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #195 : Сентябрь 03, 2013, 06:48:15 am »
Кстати, Vlad, возможно стоит в качестве платформенной фичи(регулируемой опцией компилятора)
дать возможность делать псевдонимы на обьекты JS наподобие
....
IMPORT con:=JS.console;
В обероне это запрещено же, qualident в именах модулей нельзя использовать.
А жаль, можно было бы иерархии модулей выстраивать. Тогда JS.console был бы просто модулем console в папке JS...
Евгений, причем тут Оберон - читайте внимательней, я говорю про РЕГУЛИРУЕМУЮ настройками компилятора ПЛАТФОРМЕННУЮ фичу ВНЕШНИХ по отношению к Оберону объектов, другое дело, что есть определенные  нюансы...

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #196 : Сентябрь 03, 2013, 06:51:02 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #197 : Сентябрь 03, 2013, 07:27:22 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...

valexey упрётся -- ведь это нарушит переносимость программ, создаст ещё один несовместимый диалект оберона ))
to iterate is human, to recurse, divine

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

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #198 : Сентябрь 03, 2013, 07:31:28 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...

valexey упрётся -- ведь это нарушит переносимость программ, создаст ещё один несовместимый диалект оберона ))
  какой в п.. ду "диалект Оберона" ведь не смущает же вызов JS.alert("Hello") и  JS.alert(a*5) c позиции этого самого "диалекта" - сие есть обычная ПЛАТФОРМЕННАЯ особенность.

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #199 : Сентябрь 03, 2013, 07:33:43 am »
и потом, это всего лишь предложение  :)

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #200 : Сентябрь 03, 2013, 08:36:17 am »
Да проблем-то нет... Даже и без платформенных особенностей...
Представьте, что console - это RECORD  с процедурными полями, внутри модуля JS.... Типа.

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #201 : Сентябрь 03, 2013, 08:51:52 am »
Да проблем-то нет...
ЕСТЬ, сможете найти пяток навскидку ?  :D

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #202 : Сентябрь 03, 2013, 09:47:03 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...
Я бы не торопился с вводом такой фичи. Мне кажется введение этой фичи будет стратегической ошибкой, которая приведет как минимум к замедлению темпов разработки стандартной библиотеки для Оберона, а также приведет к повсеместному использованию динамической типизации в Обероне через JS-модуль, ведь использование функций JS будет смотреться в коде вполне нативно.

Как сказал один финский товарищ: "...это все равно, что мочиться в штаны, как это делают финские мальчики с целью согреться. "Это принесло бы минутное облегчение, но не избавило бы от проблем в будущем"". Правда компания совету этого товарища в результате не последовала.
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #203 : Сентябрь 03, 2013, 10:00:45 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...
Я бы не торопился с вводом такой фичи. Мне кажется введение этой фичи будет стратегической ошибкой, которая приведет как минимум к замедлению темпов разработки стандартной библиотеки для Оберона, а также приведет к повсеместному использованию динамической типизации в Обероне через JS-модуль, ведь использование функций JS будет смотреться в коде вполне нативно.

она у вас (динамическая типизация и нарушение правил интерпретации ЯВУ) И ТАК в наличии имеется более того (см. пример с консолью), смотрится это дело весьма "наитивно" хотя, никаких проверок на существование обьекта console  не производится. Но плюсом является псевдо проверка засылаемых в обьект значений.  С другой стороны нужно отдавать себе отчет, что эта реализация  ЧИСТО платформенная, а одной из важнейших платформенных особенностей JS является взаимодействие с  ОПРЕДЕЛЕННЫМИ (на  уровне интерфейса) обьектами реализуемыми клиентским окружением (браузерами) и лишать возможность взаимодействия с ними напрямую имхо... это пендаль на эффективность решений получаемых с помощью Оберона.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #204 : Сентябрь 03, 2013, 10:20:22 am »
но как бы то не было (по моим прикидкам) реализовать эту фичу гораздо проще, чем std библиотеки, и однозначно , это решение будет гораздо эффективнее...
Я бы не торопился с вводом такой фичи. Мне кажется введение этой фичи будет стратегической ошибкой, которая приведет как минимум к замедлению темпов разработки стандартной библиотеки для Оберона, а также приведет к повсеместному использованию динамической типизации в Обероне через JS-модуль, ведь использование функций JS будет смотреться в коде вполне нативно.

она у вас (динамическая типизация и нарушение правил интерпретации ЯВУ) И ТАК в наличии имеется более того (см. пример с консолью), смотрится это дело весьма "наитивно" хотя, никаких проверок на существование обьекта console  не производится. Но плюсом является псевдо проверка засылаемых в обьект значений.  С другой стороны нужно отдавать себе отчет, что эта реализация  ЧИСТО платформенная, а одной из важнейших платформенных особенностей JS является взаимодействие с  ОПРЕДЕЛЕННЫМИ (на  уровне интерфейса) обьектами реализуемыми клиентским окружением (браузерами) и лишать возможность взаимодействия с ними напрямую имхо... это пендаль на эффективность решений получаемых с помощью Оберона.
Порядок появления фич имеет значение. Если эта фича появится после стандартной библиотеки, то возможно вреда она и не нанесет, а нанесет наоборот пользу.

Про JS.alert("hello") и ему подобных – в свете наличия JS.do(), я бы вообще это дело выпилил бы. Но поскольку сейчас у нас библиотеки ввода-вывода пока нет, а пользоваться JS.do("alert('hello world')") таки сложнее и не удобней чем JS.alert("hello world"), то пусть пока будет.

На счет эффективности - думаю что эффективность с биндингом или без, будет примерно одна и та же. Впрочем, чтобы утверждать однозначно, нужно провести тесты.

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

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #205 : Сентябрь 03, 2013, 10:28:35 am »
Ну и вообще, посмотрим что у нас выходит с библиотекой ввода-вывода и всяким разным стандартным иным.
  а что там нахрен смотреть... пример.  которого так не хватает Ромирасу модуль Out -  пять процедур  в теле каждой один и тот же вызов JS.console.log().... модуль про модуль Math говорить что-то нужно?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #206 : Сентябрь 03, 2013, 10:38:53 am »
Ну и вообще, посмотрим что у нас выходит с библиотекой ввода-вывода и всяким разным стандартным иным.
  а что там нахрен смотреть... пример.  которого так не хватает Ромирасу модуль Out -  пять процедур  в теле каждой один и тот же вызов JS.console.log().... модуль про модуль Math говорить что-то нужно?
Если ты говоришь о скорости исполнения - то да, нужно проверять. Я полагаю что скорость исполнения будет неотличима (ибо инлайн функций с последующей jit-компиляцией). Либо уточни плиз, что именно ты под эффективностью подразумеваешь.
Y = λf.(λx.f (x x)) (λx.f (x x))

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: Online компилятор Oberon-07/11.
« Ответ #207 : Сентябрь 03, 2013, 12:17:22 pm »
Я всего лишь хотел обратить ваше внимание на особенности работы с целыми числами OberonJS, поскольку зависит от спецификаций EcmaScript.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #208 : Сентябрь 03, 2013, 12:22:26 pm »
Я всего лишь хотел обратить ваше внимание на особенности работы с целыми числами OberonJS, поскольку зависит от спецификаций EcmaScript.
Да, мы учитывали это (по этому поводу нас даже спрашивали: https://github.com/vladfolts/oberonjs/issues/9 ), но видимо не везде учли. Таки баг.
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #209 : Сентябрь 03, 2013, 12:27:35 pm »
Я полагаю что скорость исполнения будет неотличима (ибо инлайн функций с последующей jit-компиляцией)....
ни фига не понимаю.. какой может быть инлайн в  платформенном компиляторе выдающем js -код акромя вызова непосредственно этого кода вложенного в Оберонный сырец? эта вставка (в частном случае ЛЮБОЙ вызов обьекта JS - окружения) и есть инлайн, разве нет?