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

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Online компилятор Oberon-07/11.
« : Июнь 18, 2013, 11:07:15 am »
А можно кратко рассказать о целях создания (примерный Roadmap) транслятора Оберона в JS ?

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #1 : Июнь 18, 2013, 11:53:42 am »
Так roadmap (то есть план разработки), или цель создания? :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #2 : Июнь 18, 2013, 12:17:49 pm »
Одно вытекает из другого.

Цель создания, как я понимаю - интерес к онлайн компиляции.
В своё время на оберон-коре было сообщение о подобном проекте OberonScript, который не только компилировался в JS, но и умел работать с DOM и т.п.

Поэтому интересно какие цели у онлайн компиляции? Как планируется развивать проект ?
Может быть будет общий интерес и повод посотрудничать.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1949
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #3 : Июнь 18, 2013, 12:27:22 pm »
[Оффтоп]
Посмотрел на фотку Ralph Sommerer (автор OberonScript)


что за такая высокомерная оберонщицкая рожа ?
о_О
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #4 : Июнь 18, 2013, 12:41:32 pm »
Одно вытекает из другого.

Цель создания, как я понимаю - интерес к онлайн компиляции.
В своё время на оберон-коре было сообщение о подобном проекте OberonScript, который не только компилировался в JS, но и умел работать с DOM и т.п.
OberonScript - это вообще не оберон. Это js с синтаксисом похожим на Оберон. Там же динамическая типизация!

Одной из целей oberonjs является получить статически типизированный язык для браузера, частично заменяющий оный js. Ибо достало. Но поскольку полностью заменить не выйдет, то транслироваться оно должно в человекочитаемый код, а не как обычно.

Другая цель - глубоко изучить Oberon-07/11. В процессе написания (vlad'ом) оного транлятора, и моего периодического консультирования, было расковырено много хм.. нюансов языка. Изучение языка через использование существующих реализаций (того же Astrobe) - это совсем не то.

Поэтому интересно какие цели у онлайн компиляции? Как планируется развивать проект ?
Может быть будет общий интерес и повод посотрудничать.
Конкретно про онлайн компиляцию: это позволит любому человеку попробовать Оберон не устанавливая чего-либо, сразу в браузере. Причем поскольку компиляция идет в самом браузере, а не на сервере, мгновенна. Это ли не здорово?

Дальняя цель: потихоньку построить среду, в чем-то похожую на ОберонОСь в браузере, основываясь на DOM. Собственно прямо сейчас для начала этой работы не хватает поддержки статической модульности (то есть проверки на этапе компиляции). Динамическая модульность там делается внешними средствами и проблем не составляет.

Как-то так.
Y = λf.(λx.f (x x)) (λx.f (x x))

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #5 : Июнь 18, 2013, 12:50:16 pm »
Понятно. А как же различные CoffeScript и иже с ними ?...

Для статической типизации в JS я использую YUI фреймворк. Там можно задать тип свойства и фреймворк будет следить за этим свойством. Для меня проблема была бы полностью решена, если бы существовала среда, которая позволяла бы осуществлять такую проверку в момент написания кода. Т.е. надстройка над JS.

А вот среда в браузере это дело интересное.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #6 : Июнь 18, 2013, 01:08:30 pm »
Понятно. А как же различные CoffeScript и иже с ними ?...

Для статической типизации в JS я использую YUI фреймворк. Там можно задать тип свойства и фреймворк будет следить за этим свойством. Для меня проблема была бы полностью решена, если бы существовала среда, которая позволяла бы осуществлять такую проверку в момент написания кода. Т.е. надстройка над JS.
КофеШкрипт и иже с ним - динамически типизированные. Там вообще везде беда - они мало того что динамически, так еще и слабо типизированы.

YUI, насколько я понимаю, статическую типизацию не вводит. То есть проверки опять таки все в рантайме. А статическая типизация - это когда у тебя на этапе компиляции (на самом деле автоматической верификации, ну да не суть) тебе проверяют соответствие типов, и это гарантирует (без проверок!) в рантайме корректность.

А вот среда в браузере это дело интересное.
Ну, сред как таковых в браузере полно в общем-то. И пока не слишком понятно насколько IDE в браузере востребованы и перспективны (хотя их уже довольно много, в том числе и для java - еклипс в браузере тоже бывает). Так что Оберон тут пока не обгоняет, но хотя бы догоняет остальных.

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

Madzi

  • Jr. Member
  • **
  • Сообщений: 86
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #7 : Июнь 18, 2013, 01:28:41 pm »
Статическая типизация есть в TypeScript (версии JavaScript от Microsoft). Поскольку изменить JavaScript уже нет возможности, то среда имеющая статическую проверку кода JS была бы крайне полезна разработчикам. И таких сред пока нет.

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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1949
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #8 : Июнь 18, 2013, 01:31:22 pm »
Ну, сред как таковых в браузере полно в общем-то. И пока не слишком понятно насколько IDE в браузере востребованы и перспективны (хотя их уже довольно много, в том числе и для java - еклипс в браузере тоже бывает). Так что Оберон тут пока не обгоняет, но хотя бы догоняет остальных.

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

WDE для PascalABC.NET -- зачётная вещь для тех кто изучает или как-то пользуется обычным паскалем. Не нужно ничего устанавливать, простенькие примеры не нужно нигде сохранять -- написал, запустил, потестил -- и закрыл браузер ))
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #9 : Июнь 18, 2013, 01:33:53 pm »
Ну, сред как таковых в браузере полно в общем-то. И пока не слишком понятно насколько IDE в браузере востребованы и перспективны (хотя их уже довольно много, в том числе и для java - еклипс в браузере тоже бывает). Так что Оберон тут пока не обгоняет, но хотя бы догоняет остальных.

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

WDE для PascalABC.NET -- зачётная вещь для тех кто изучает или как-то пользуется обычным паскалем. Не нужно ничего устанавливать, простенькие примеры не нужно нигде сохранять -- написал, запустил, потестил -- и закрыл браузер ))
Я видел. Компиляция на стороне сервера, исполнение приложения - тоже (причем подвиндой). Со всеми вытекающими. Нет, это не наш путь :-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1949
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #10 : Июнь 18, 2013, 01:35:30 pm »
Компиляция на стороне сервера, исполнение приложения - тоже (причем подвиндой). Со всеми вытекающими.

Да это всё фигня. Главное -- идея ))
to iterate is human, to recurse, divine

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #11 : Июнь 18, 2013, 01:42:03 pm »
Статическая типизация есть в TypeScript (версии JavaScript от Microsoft).
У TypeScript'а статическая типизация опциональна (как например и у ActionScript'a). Причем типизация, по моему, там так и осталась слабой. В общем, в топку.

Поскольку изменить JavaScript уже нет возможности,
Насколько я помню, тот же TypeScript по сути есть реализация новых фич жабаскрипта, которые в жабаскрипт еще не вошли.

то среда имеющая статическую проверку кода JS была бы крайне полезна разработчикам. И таких сред пока нет.
Такие среды в принципе не возможны. Для того, чтобы узнать тип переменной у языка с динамической типизацией, в общем случае необходимо приложение исполнить. Из за этого же у языков с динамической типизацией невозможен и точный автокомплит. Оберон - решает эти проблемы (но не покрывает полностью все области применения жабаскрипта в браузере, то есть в проекте сколько-то js-кода останется).

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

Впрочем, можете присоединяться - все же в открытом доступе, мы не оберонкор с их тайными ложами. Для начала нужно облагородить хотя бы редактор кода. Скажем вкрутить туда Code Mirror (http://codemirror.net/) добавив туда поддержку Оберон-синтаксиса. Это чисто работа на фронтенд (то есть js).
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость
Re: Online компилятор Oberon-07/11.
« Ответ #12 : Июнь 18, 2013, 02:10:46 pm »

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

Впрочем, можете присоединяться - все же в открытом доступе, мы не оберонкор с их тайными ложами. Для начала нужно облагородить хотя бы редактор кода. Скажем вкрутить туда Code Mirror (http://codemirror.net/) добавив туда поддержку Оберон-синтаксиса. Это чисто работа на фронтенд (то есть js).
  боюсь , что только для этого и сгодится , с некоторыми оговорками,   - необходимо иметь ПОЛНОСТЬЮ некоторый минимум функционала реализованный на достаточно ВЫСОКОМ  уровне..  без этого, в современной реальности нельзя всерьез говорить о "среде для обучения".

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3009
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #13 : Июнь 18, 2013, 02:13:26 pm »

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

Впрочем, можете присоединяться - все же в открытом доступе, мы не оберонкор с их тайными ложами. Для начала нужно облагородить хотя бы редактор кода. Скажем вкрутить туда Code Mirror (http://codemirror.net/) добавив туда поддержку Оберон-синтаксиса. Это чисто работа на фронтенд (то есть js).
  боюсь , что только для этого и сгодится , с некоторыми оговорками,   - необходимо иметь ПОЛНОСТЬЮ некоторый минимум функционала реализованный на достаточно ВЫСОКОМ  уровне..  без этого, в современной реальности нельзя всерьез говорить о "среде для обучения".

Дорогу осилит идущий :-) Тем более что это ж фан.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1388
    • Просмотр профиля
Re: Online компилятор Oberon-07/11.
« Ответ #14 : Июнь 18, 2013, 02:50:05 pm »
Цель создания, как я понимаю - интерес к онлайн компиляции.

Я там на виках в двух предложения попытался сформулировать. Да, хотелось бы пощупать в каком виде может быть статическая типизация на вебе (на client side). А реализация всего этого на мерзком жабаскрипте делает такую реализацию доступной везде и для всех :)

В своё время на оберон-коре было сообщение о подобном проекте OberonScript, который не только компилировался в JS, но и умел работать с DOM и т.п.

valexey правильно откаментил - OberonScript оказался совсем не тем, чем мог бы быть. Так что пришлось пилить свое :)

Поэтому интересно какие цели у онлайн компиляции? Как планируется развивать проект ?

Если помечтать, то конечная цель - иметь нормальный промышленный язык в браузере на client side. В смысле мне нужен такой язык непосредственно для рабочих проектов, а не just for fun.
Сейчас по факту это на 100% исследовательский проект. Ближайшие планы - загрузка модулей и эксперименты как это может выглядеть в браузере. Работа с учебными примерами из виртовских книжек. После этого можно говорить о логическом завершении проекта "компилятор оберон-07/11 на вебе".
После - хочу поэкспериментировать непосредственно с языком на предмет приближения к прмышленному виду. Прежде всего на предмет включения хорошо зарекомендовавших себя решений (посмотреть как они влияют на язык в целом). Для начала, наверное, даже без изменения оригинального синтаксиса, только расширяя его. Куда потом -  трудно сказать, туда где будет интересно :)

Может быть будет общий интерес и повод посотрудничать.

Давай, давай! :)