ActionScript как язык для разработки JS приложений c jQuery и дебагером

    Представляем вашему вниманию ролик.




    1. Имеем инструмент генерации JS из AS3.
    2. Имеем IDE которая знает как сгенерированный JS соответствует коду в редакторе.
    3. Имеем дебагер, которые позволяет ставить брейкойнты в AS3, а останавливать JS.
    4. Имеем тонну полезных вещей, такие как OOP, автокомлит, type-checking, рефакторинги и языковые расширения.
    5. Имеем jQuery поддержку — автокомлит и синтаксический сахар.
    6. Имеем возможность самим расширять функционал редактора и писать свои языки (платформа MPS).
    7. Имеем кучу готовых наработок накопленных миром Flash за годы ее существования.

    Пишем на AS3 богатые интернет приложения исполняемые в браузере. Без флэш плеера.

    Мечта или утопия?

    Интересен взгляд не только со стороны флэшеров. Очень интересен взгляд JS разработчиков.

    Нужен ли JS разработчикам OOP язык? Нужен ли языковой сахар? Интересно ли им развиваться в этом направлении?

    Появление coffeecript, lesscss и dart показывают тенденцию в которой мы вполне вписываемся.

    Но может быть это все не нужно и мы просто теряем время? Что думаете?

    В следующей версии будет поддержка jQuery-плаганов, d3.js и более развитый дебагер. Будут работать все языковые расширения RASE в среде исполнения JS — generics, collections, traits, events flow и др.

    Скачать бету Realaxy ActionScript Editor 1.1 можно тут.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 60

      +2
      Лично мне не нужен, почти все фичи которые вы описали доступны и для простого JS, даже рефакторинг и автокмплит худо бедно, но есть, а менять JS на AS3 ради ООП, который там в принципе не ахти какой — думаю не стоит, не говоря уже о том, что я не смогу пользоваться фрэймворками JS кроме как JQuery, который мне и не нужен…
      Не говоря уже о вопросах насколько все кроссбраузерно…
      А по пункту седьмому, скажите хотя бы одну наработку, которой нет на JS?
        +6
        Ну почему нельзя пользоваться другими js-фреймворками? Пиши на здоровье. Мы будем поддерживать из коробки более интересные на наш взгляд — jquery, extjs, d3, lesscss. И набор jquery-плагинов.
        Можно добавлять свои. Для этого будет специальный инструментарий.
        Какие фреймворки интересуют? Можем добавить поддержку из коробки.

        Про OOP в AS3. Нормальный такой OOP. Плюс OOP у нас развит за счет языковых расширений. Generics и Traits дают множество вкусностей. Тут можно поглядеть референс языков на английском. Посмотри trais и generics. Все это будет работать и в JS.
        Тут слайды — идея JS как среды исполнения для языков более высокого уровня абстрации. Как байткод во флэш.
          0
          То есть, что бы использовать допустим dojo, мне надо будет создать расширение?
          В принципе тот же dojo дает packeging, хорошие, скажем так, плюшки для работы с событиями, OOP, collection, и кучу, кучу всего другого.

          Хотя я вообще достаточно негативно отношусь к расширениям языка, по-моему мнению если они тебе нужны, то ты что-то делаешь не так. В добавок просто усложняет чтение кода, особенно для не посвященных. Пока, на мой взгляд, вы просто нагрузили достаточно простой язык, кучей сомнительных фич. Да и судя из того, что на тот же GWT многие плюются, писать в ООП стиле для веба, мало кому нравится…

          В AS3 крайне не хватает перегрузки функций (насколько я понял у вас ее тоже нету в расширениях, нашел только перегрузки операторов).

          За полгода разработки RIA на JS, пришел к выводу, что в принципе не хватает только возможности указания конкретного типа… (решило бы множество проблем, в том числе и ту же автоподстановку).

          Мне кажется, что самим JS разработчикам такое решение в принципе не нужно, так как они знают как максимально эффективно его применять, даже не взирая на его недостатки, но вот людям, привыкшим писать приложения для декстопа\RIA на java, as, C# и тому подобных OOP языках, вполне может пригодиться, так что мне кажется вам нужно в первую очередь ориентироваться на них, хотя может вы и так на них и ориентируетесь.

            0
            Method overloading есть. Не совсем чистый overloading — метод имеет специальные аннотации, а редактор их вычисляет в зависимости от типа аргументов и валидирует параметры в соответсвии с выбранной сигнатурой. Сам метод один, но сигнатур много. Узнать какая конкретно сигнатура была выбрана в рантайме можно будет с помощью специальных конструкций. Как раз для поддержки jquery и был сделан. Пока не закончен полностью. Можно поглядеть код jQuery — там как раз видны такие аннотации (скриншот)

            Про «сомнительные фичи» — ну прямо так не разобравшись и сомнительные :)
              0
              Думаю на GWT плюются из-за жесткости языка java по большей части. Излишняя жесткость мешает. Сам постоянно сталкиваюсь. Плюс отсутствие нужных языковых фич — нужна фукнциональщина. Которая есть в AS3, кстати. Хотя когда-то мечтал о компиляторе java5->swc.
              Язык AS вполне хорош. И очень похож на структуру того же JS. Но в нем есть типизация, классы.
              Если не ошибаюсь драфт JavaScript 2 был очень похож на ActionScript3. Нет?
                +1
                Возможно, я то сам не особо плевался, мне не нравилось, что все громоздко уж сильно. В принципе замыкания и в java можно делать, через задний проход конечно, но можно, тот же jQuery встроили в GWT умельцы.
                Драфтов не видел, но согласен, что as3 от js отличается только ООПешностью, вот кстати мне как раз таки и не понравился darts тем, что там, насколько я понял, выпили всю динамическую составляющую js(
                  +1
                  Да as3 хорош, но мне больше нравится c# — там писанины меньше.

                  К примеру объявление переменной.

                  AS3
                  var a:uint = 10;
                  Тут явно лишняя информация — var.

                  С#
                  uint a = 10;
                  Тут все строго и ничего лишнего.

                  Или объявление функции.

                  AS3
                  public function example():uint
                  Тут явно лишняя информация — function.

                  С#
                  public uint example()
                  Тут опять же ничего лишнего.

                  Просто как не крутись работа программиста сводится к писанине кода. И чем его меньше тем лучше. Автокомплит спасает но восприятие страдает.
                    0
                    Некоторая избыточность в AS3 да, есть. Ключевое слово function особо раздражает. Для этого кстати мы добавили closure-синтаксис.

                    $("p").click(function(e:EventObject){
                    });

                    превращается в

                    $("p").click({e=>
                    });


                    На то и языковые расширения, чтобы улучшать дизайн языка.
                      0
                      Для упрощения работы с переменными есть smart variables —
                      mc:new Spite();

                      они сами вычисляют тип и указание типа не нужно.
                      Синтаксис слишком компактный на мой взгляд для деклараций переменных.
                      Предназначение smart variables — использование в декларативных языках типа Object Builder
                      mc:Spite{
                      width : 100;
                      height : 100;
                      };

                      или в условиях
                      if(this.parent is MyClass && mc:(this.parent as MyClass).visible && mc.widht > 0){
                      }


                –5
                С вами полностью согласен. От себя добавлю что не стоит везде пихать ООП. Эт не всему панацея. Раз есть у нас прототипы давайте не делать вокруг них кучу всего громоздкого, чтобы получилось «удобное».

                мы же не будем жарить нори и варить семгу, чтобы борщ сварганить?
                  +4
                  Лично на OOP не молюсь. Отболел. Люблю функциональное программирование и DSL-и.
                  Но и без элементарных классов не знаю как народ в JS живет. Вы уж простите. В свое время на AS1 прототипами наигрался.

                  Признаюсь честно сам хочу программировать для браузера. Есть задачки, которые бы взялся, но меня пугает языковая убогость JS. JQuery понравился, d3 — шикарно! Но строить систему на JS не преставляю возможным.

                  Сейчас же имея инструмент можно будет смело в эту кашу окунаться. А там поглядим :)

                  Вижу в JS-разработчиках тех самых «древних» флэшеров, которые только «слезли с прототипов». Не в смысле что древние такие. А любопытные и любители поиграться как флэшеры когда-то. Повыдумывать чего. Хотя и древние может быть тоже чуток. Так что игра в языковые расширения (не в OOP) уверен будет интересна.
                +3
                Появление coffeecript, lesscss и darts показывают тенденцию в которой мы вполне вписываемся.

                Непонятно, зачем притянули за уши lesscss? Он вообще к JS имеет такое же отношение, как к ванильному мороженому.
                  +3
                  Языковое расширение. Есть язык низкого уровня абстракции — CSS, а есть более высокий уровень с плюшками. Выгоняется компилятором в чистый CSS. Не JS конечно. Относится больше к платфоме.
                  +2
                  Есть тот же Webstorm, которая позволяет всячески рефакторить, дебажить, автоматически запускать юнит-тесты и прочее-прочее. В третьей версии даже jslint прикрутили.
                    0
                    Для меня эта IDE вообще была открытием месяца. особенно когда после ковыряния с Extjs в Notepad++ я получил практически полноценный автокомплит этой не маленькой библиотеки.
                    0
                    Очень классно. И конвертация JS, и сама IDE. А как у неё дела с цветами? Может становиться полностью темной, независимо от «цвета» темы операционной системы?
                      0
                      Спасибо!
                      Пока тема расцветки одна — белая. Но мы обязательно сделаем альтернативный выбор. Таск такой есть.
                      +5
                      Упрощение не может быть упрощением, когда является усложнением.
                      Не стоит приделывать собаке 6-ую ногу, чтобы она 5-ой могла пользоваться нормально.
                      Всё холиварное на тему AS оставлю при себе.
                        +16
                        Хабраконфуций в треде. :)
                          0
                          Лао-Хабро-Цзы
                          0
                          Есть задачи разного уровня сложности. И действительно, в большинстве случаев JS вполне соответствует стоящим перед ним задачам.
                          В свое время ActionScript1 также соответствовал. И пилили на нем баннеры да тетрисы. И до сих пор на нем же пилят — синтаксис AS1 практически сохранился во Flash IDE именно для этих целей.

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

                          Ну и, JS программисты воспряли духом на тему очередного кровавого убийства Flash с помощью HTML5. Ок, AS программисты в очередной раз посыпали голову пеплом и в печали взирают на эти попытки. И они видят, как HTML5 наступает на пятки технологии Flash — ведь чтобы обогнать, нужно пройти тот же путь и только потом вырваться вперёд.

                          В 2003 году Macromedia выпустила ActionScript2. Это была в сущности надстройка над AS1 — при компиляции код из AS2 выгонялся в AS1. Примерно то же самое (но на другом уровне и со множеством дополнительных возможностей, разумеется) сейчас делает Realaxy ActionScript Editor.

                          Вы не представляете, какой скачёк в развитии JS это может дать. JS программеры смогут одним махом выйти из пещер прототипирования на более-менее приличный языковой синтаксис. Ура!
                            0
                            У каждого языка своё предназначение и диапазон применения, предметная область… О чем вы, собственно, в начале и сказали. Если начинают возникать проблемы, вроде тех, о которых вы пытаетесь сказать, то следует задуматься, а тот ли язык вы вообще выбрали для решения своих задач.

                            На выходе вы всё-равно будете получать JS, который, до кучи сформировала для вас IDE. Вы видели, что Google Dart на выходе даёт? Эти тонны лишнего кода по-вашему являются тем самым светлым развитием языка? Или в данном случае всё работает как-то иначе и магически формирует чистый и правильный, во всех аспектах, код? Едва ли.

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

                            Развитием же JS всегда были спецификации EcmaScript, а не попытки оперировать людей, используя для этого сантехника, стоя у него за спиной и выдавая ему инструкции на его профессиональном диалекте.

                            А про типизацию вы Python’истам, мне в том числе, расскажите ;)

                            Что касательно HTML5, то он даж близко не идёт стопами Flash. Как и JS не пойдет стопами AS. Концептуально и идеологически разные вещи.
                              0
                              Вот хорошо, когда люди думают о чистоте языка. Здорово это. Вот только решает тут не чистота языка, а эффективность. За сколько человеко-часов можно решить задачу. Сколько человеко-часов стоит поддержка проекта. Насколько легко модифицировать существующий код.
                              Однозначно, без разницы во что выгоняется, тот же dart, в конечном случае — это информация для js-движка, не более. Вы еще посмотрите что там на ассемблере или на байткоде. Главное чтобы быстро и без проблем работал, белы легок в разработке, имел средства отладки, решал проблемы среды исполнения.
                                0
                                Сомнительно сравнивать асм, с которым работает процессор, и кучу лишнего JS, с которым работает движок браузера. Чем больше лишнего, тем больше трафика, тем дольше время выполнения, — это ничем неоправданные затраты. Увеличение объемов обрабатываемого кода вряд ли увеличит скорость его выполнения.
                                Если JS — не чужой язык, то и с эффективностью всё будет в порядке.
                                0
                                «а тот ли язык вы вообще выбрали для решения своих задач.» — верно. Но так же и верно, что языки на месте не стоят и осваивают решение новых задач. А здесь речь именно об этом.

                                Или в данном случае всё работает как-то иначе — иначе. Прежде всего контролируемо: не нравится результат трансформации? — Залез в код языкового расширения, что нужно исправил.

                                ничего не мешает нормально и эффективно писать на даже чистом JS — писать-то можно. Но помимо «писать» есть ещё больше десятка пунктов, характеризующих потребительские свойства языка программирования.

                                Развитием же JS всегда были спецификации EcmaScript — были. Но тут возникла проблема: не решились перейти на ООП. Хотя давно пора — рынок в этом нуждается и его ничем не остановить. Отсюда и подобные решения.
                                Даже более того: рынок нуждается в инструменте, благодаря которому можно было бы делать приложения под разные платформы. Рынок нуждается в простых языках, максимально приближенных к предметной области.
                                Повышение уровня абстракции — общий вектор развития отрасли. На сегодняшний день, решение Jetbrains MPS мне представляется для этого наиболее эффективным.

                                А про типизацию вы Python’истам, мне в том числе, расскажите ;) — примите мои глубочайшие соболезнования.
                                Ну, а если серьезно, то об этом мы уже говорили: У каждого языка своё предназначение и диапазон применения, предметная область. Но кто делает погоду в нашей психушке?

                                JS не пойдет стопами AS — есть другой путь? Я не знаю такого. Чтобы JS не пошел по пути AS, он должен стоять на месте. Что он с успехом и делает.
                                  0
                                  Ага, т.е. для облегчения процесса я должен ещё и языковые расширения править, чтобы добиться какого-то результата. Это ок, время и ресурсы экономит колоссально =)

                                  С потребительскими свойствами JS всё отлично. Если не пытаться думать, что JS — это что-то другое.

                                  Хочется глубины абстракций? C++ её имеет достаточно, чтобы утонуть. ООП нужно там, где оно нужно, и не надо совать везде и всюду. Ещё раз, в JS вполне можно сделать конструкции удовлетворяющие ОО подходу. Нужны ли там интерфейсы, абстрактные классы и т.д.? Едва ли.

                                  Хотите простой язык, максимально приближенный к предметной области? Учите Python, все соболезнования сразу исчезнут. А JS всегда будет языком вэб-фронтэндов и единственной его платформой будет браузер. Это то, зачем он был создан, это его суть. Да, есть NodeJS, но это исключение, подтверждающее правило.

                                  И да, JS не пойдет стопами брата-уродца Джавы. Вымрет Flash, вымрет и AS, ибо нигде больше он что-то не применяется, кроме как в. Другой путь есть и это его собственный.
                                    0
                                    Далеко не в каждом случае будет экономия — это очевидно. Но, если ты лично с этим не сталкивался, это вовсе не значит, что никто с этим не сталкивался или что ты не столкнешься с такой необходимостью впоследствии.

                                    Ну, кого-то устраивают потребительские свойства JS, а кого-то нет. Всё зависит от стоящих задач и возможностей реализации. Тот факт, что многих JS в нынешнем виде не устраивает очевиден, иначе не появлялись бы продукты типа Dart.

                                    Да, далеко не всегда в JS нужны интерфейсы, абстрактные классы и т.д. Но иметь лучше, чем не иметь. Тот же AS3 позволяет писать в стиле AS1 (читай JS), и это активно используется баннеростроителями. Зачем городить огород из классов, если нужно обработать один клик.
                                    Но уже появляются задачи, типа гугловых доков, которые без ООП практически нереально реализовать.

                                    Phyton под браузером не запустишь. А тенденция такова, что приложения мигрируют в браузер. И возникает спрос на инструментарий, позволяющий эти приложения делать в нормальной среде используя полноценный язык. Точка.

                                    Брат-уродец Java и косящий под него С# занимают подавляющую часть рынка. Эту часть они отобрали в том числе и у питона. Ты можешь сражаться за свой любимый язык (и я тебя понимаю), но тенденция тут налицо и спорить с ней бессмысленно.
                                      0
                                      Приложения мигрируют, но у них всегда есть бэкэнд, на нормальном языке, интерфейсу же достаточно того, что может JS. Инструментариев, опять же, валом. Это никак не оправдывает написание чего-то на одном языке, используя другой, при том, что удобства поверхностны, ибо никаких нативных конструкций и т.д. не появляется, простая иллюзия, фантик, который, до кучи, усложняет количественно и качественно то, что производит.

                                      Даже для гуглодоков вполне хватает того ООП, которое возможно реализовать через JS. Всё, чего не хватает, дополняется со временем из свежих спецификаций EcmaScript и, если там до сих пор не нашлось места нативному ООП и глубокой абстракции, то наверное не просто так.

                                      Пложением лишних сущностей и прослоек это точно не решается. Не может усложнение упрощать =)

                                      С пайтоном итак всё хорошо, Java и C# — это энтерпрайз, там своя специфика. AS — это как-раз брат Java ;-)
                                        0
                                        Именно лишними сущностями и прослойками решается!!! Именно ими! И НИЧЕМ БОЛЬШЕ.

                                        Называется это повышением уровня абстракции. Который идёт с момента создания первого языка программирования.

                                        Вся история развития отрасли программирования и языков программирования это доказывает.
                                        Если бы не эти прослойки, писал бы ты единички и нолики руками на харде :)

                                        И самое интересное, что когда происходит переход на новый уровень абстракции, почему-то всегда находятся люди, верные «старой школе».

                                        Всё потому, что они чего-то в ней смогли добиться и сильно не уверены в том, что смогут это повторить это ещё раз.
                                        Я уже говорил: это прямой путь на свалку истории.
                                          0
                                          Пробовал Dart. В первый раз выполняется долговато, пока не закэшируется. Задач где на JS действительно нужно много абстракций — мало. Абстракции тоже надо городить с умом, даже с умом делать вызовы jquery. Потому что если не знать, что поиск по прототипам в FF замедляется в 10 раз больше 2х наследований, не знать как медленно происходит работа с DOM, особенно в IE 7,8. Не знать как быстро JS может сжирать память, и как с этим бороться — то используя высокоуровневые абстракции, которые преобразуют код в JS действительно можно создать монстра, который не будет юзабелен. Вычислительные ресурсы ограничены мощностью компов целевой аудитории проекта, и нужно стараться чтобы работало не только на core i7.
                                          А если нужны абстракции, каркасы MVC, RIA — библиотек, фреймворков куча, которые делают разработку быстрой. Просто непонятно, зачем учить ради этого Flash, или Java ради GWT? А Flash программист без глубокого знания JS эффективно писать не станет. И на моей практике отладка через консоль firebug или консоль хрома, куда можно вставить кусок js и проверить, отладка просто через файрбаг, с брейкпоинтами — более удобна чем мост с IDE.
                                          И куда проще найти на проект просто JavaScript разработчика, чем разработчика со знанием JS, умеющего эффективно писать на GWT/Dart(наше приложение работает в FF и Chrome)/чем либо еще.
                                          На видео еще было ощущение что IDE притормаживает. И не понятно чем она облегчает жизнь, кода написано еще больше чем выполняющий тоже самое на JS.
                                            0
                                            Узнаю себя.
                                            Давным-давно я был фанатом AS1 и жутко ненавидел AS2. Да и пересел на программирование на классах только, когда вышел AS3.
                                            Но.
                                            На AS2 была сделана масса проектов, кторые резко расширили область применения Flash. При этом, производительность была ниже, чем на AS1, кода писать больше, и так далее.

                                            «Задач где на JS действительно нужно много абстракций — мало.» — это как раз про эту фразу. Область применимости языка из-за его устаревшего синтаксиса существенно ниже.

                                            «И не понятно чем она облегчает жизнь, кода написано еще больше чем выполняющий тоже самое на JS»
                                            — кода должно быть ровно столько, чтобы его было легко читать. Писать за программера код должен редактор. Что современные редакторы с успехом делают.
                                              0
                                              Есть современные IDE с дебагом JS, автодополнением, поддержкой JSDoc, проверкой синтаксиса, стилистики по своим правилам и JSLint.

                                              Вы можете сказать чем синтаксис JS является устаревшим? Это спорный момент. Например в PHP костыльно появились замыкания, который давно есть в JS. Костыльно — потому что все равно в PHP функция не является типом данных. При этом PHP с 5й версии поддерживает модификаторы доступа, интерфейсы, абстрактные классы, модификатор final.

                                              AS еще поддерживает пакеты, и модификаторы доступа для классов. Но это действительно все применимо, когда количество строк кода проекта сотни тысяч, и команда десятки человек.

                                              В Java строгий синтаксис, он типизирован, много библиотек, все является классом(кроме простых типов данных), но не уверен что он поддерживает замыкания, и полностью объектный. Питон не имеет нормально реализованных модификаторов доступа для классов, не имеет из коробки абстрактных классов, но зато в нем все является объектом, он чистый ООП язык. Можно перегружать операторы(не знаю, доступно ли это в Java, AS).
                                              В JavaScript много решают замыкания,, нетипизированность дает гибкость. И в последние годы он набирает темпы развития, наоборот. Его ограниченность развития определяется только развитием браузеров. Но количество проектов, техник программирования, только растет.
                                              Поэтому говорить что какой-то язык устарел — это слишком самоуверенно, на мой взгляд.
                                                0
                                                Ну, не устарел совсем уж. Тут я палку перегнул, наверное. Но поотстал от требований пользователей, это да.
                                          0
                                          Просто посчитай сколько «лишних» прослоек находится между пользователем и приложением.
                                          И как эти усложнения упрощают им жизнь.
                              0
                              Хорошо хоть не brainfuck.
                                0
                                Это, что вроде GWT вы компилити ActionScript в js? Не совсем понял.
                                  +1
                                  Круто! А это вы концепцию поменяли или побочный продукт такой получился? :)
                                    0
                                    Идем по роадмапу :) Планировали этот функционал давно.
                                    +5
                                    Классно, молодцы. Прочитал заголовок и подумал что в Релакси же можно такое замутить было бы, очень обрадовался когда понял что это вы и есть.
                                    Думаю только так и можно доказать что релакси это круто…
                                    Осталось as3 в Objective C выгонять :)
                                      0
                                      В версии 1.2 будем генерировать код для unity3d. Они в свою очередь будут выгонять вод кучу платформ. Будет полноценная поддерка с парсингом unity-библиотек и дебагром.

                                      По ObjectC думаем, но пока кажется более реалистичным путь PnoneGap — сделать нативную оболочку и заливать туда JS+Html+CSS. Расширяя ее фукнционал нативными плагинами. Это уже будет через месяц.

                                      Ну и до ObjectC доберемся :)
                                      +1
                                      Очень бы хотел просить Вас, Relaxy, задуматься над серверной «перекомпиляцией» AS3 (или даже, чем черт не шутит swf) в JS в дополнение к Вашему проекту.
                                      Может даже у Вас получится разработать online IDE — потребность есть
                                        +1
                                        Да задача по серверной компиляции есть — JS (node.js) и java (обычное и под Google App). Хочется использоваться одну среду для написания всего приложения.
                                        По поводу онлайн — планируем html5 версию редактора (как виджет) к лету-осени.
                                        +4
                                        Идея классная!

                                        Как не странно тоже работаю в этом(почти) направлении. Делаю плагин для Flash Develop, способный компилировать в HTML5. В дальнейшем хотел сделать компиляцию в objectiveC и Java.

                                        Идея на самом деле простая и логичная. Мало кто захочет писать сложное приложение на js. К тому же флешерам не надо переучиваться. Жалко что возможности HTML5 очень сильно уступают flash технологии(чего то нет, а что то сильно тормозит).

                                        Столкнулся с двумя проблемами.
                                        1. Замучился с AST(парсер as3 кода) пишу свой велосипед. Класс парсит отлично, а код не очень детально. Может кто подскажет отличный парсер на c#? Нашел кстати в сорцах Jangaroo парсер, он на джаве(очень похож на c#), может его буду использовать.

                                        2. Класс на js в точности повторяющий класс as3 довольно не просто сделать со всеми ООП фичами. К примеру «перекрытие приватных переменных в наследнике и предке» или «вызов super». Решения есть, но они меня не устраивают.

                                        Не считаю свое действо потерей времени, т.к. во-первых большой опыт, во-вторых ну не хочу я писать на js. Когда пишешь на js создается впечатление что ты попал в прошлое и допускаешь глупейшие ошибки :).
                                          +3
                                          Здравствуйте! Я отвечаю за парсинг AS в проекте Realaxy ActionScript Editor. Про C# решения я не в курсе, рассматривал только Java. Но уверен, что перенести их на C# достаточно тривиально.

                                          Мы в качестве парсера используем модифицированный metaas — это брошенный (последний раз обновлялся в 2008 году) проект по работе с AST ActionScript'а на основе ANTLR грамматики, взятой из ASDT:
                                          www.badgers-in-foil.co.uk/projects/metaas/

                                          Можно взять его и смигрировать на C#, или же взять «чистую» ANTLR грамматику AS и написать свой tree-parser (существует C# target для ANTLR).

                                          Еще есть оперсорсный AS парсер во Flex SDK (в модуле ASC). Насколько я помню, он не тянет за собой каких-то навороченных зависимостей, и смигрировать его на C# тоже должно быть несложно.
                                            0
                                            Спасибо за ответ!

                                            Да, про все эти решения я знаю (кроме ANTLR). Попробую что нибудь портировать.

                                            Еще проблема в том что у меня нету опыта в JAVA программировании.
                                              0
                                              А вы планируете выложить свои модификации для metaas?
                                            0
                                            Интересно как будет развиваться дальше. Мы кстати искали замену js и нашли:

                                            ru.wikipedia.org/wiki/HaXe
                                            haxe.org/
                                            code.google.com/p/eclihx/

                                            При этом сейчас есть часть написанная на gwt — которую оказалось тяжело поддерживать.
                                            Достаточно мно js в стиле jquery.ui — которые поддерживать не возможно — только переписывать.

                                            Google Dart — пока не юзабельная альфа.
                                              0
                                              Уже давно есть haxe, я его периодически использую. По-моему, realaxy и прочим еще далеко до haxe, так как haxe мощнее, лучше отлажен и уже давно существует. + Абсолютно бесплатен и еще много чего. Уже 3 года как юзаю.
                                                0
                                                Мы идем от IDE, а haxe от компилятора. Мы же сразу делаем развитую IDE.
                                                Какой подход нужен решать пользователям. Думаю разнообразие выбора — это хорошо.
                                                  +1
                                                  Бесспорно вы молодцы(особенно учитывая что умеет realaxy на основе метаязыков, если не ошибаюсь), но, я сторонник бесплатных продуктов.
                                                    0
                                                    Да метаязыки есть и много ну и пожалуй умеют много :)
                                                    Тут референс.
                                                    Тут туториалы.
                                                    Тут еще туториалы.
                                                      0
                                                      haxe имеет более богатый синтаксис и множество других прелестей. На as я писал и на haxe писал. Haxe больше понравилось. Если б ваша мега ide была б как-то доступна бесплатна, например, по eap 30 дней как jetbrains, то я б её юзал потому что в ней есть отладчик. Кстати, поддержка haxe планируется?
                                                        +1
                                                        Присмотрелся получше, очень даже неплохо для начала. Расширения языка радуют, хотя мне и не особо нравится их синтаксис.
                                                          0
                                                          Соглашусь.
                                                          Но тут ситуация объяснима — такая моща в руках, хочется и то и то попробовать, и разными способами, и новые операторы ввести и концепции, и там поиграться и тут поэкспериментировать.

                                                          Понимание правил создания синтаксиса языковых расширений придёт, как только эти правила выработаются. А для этого нужно опыта набраться, слышать фидбэк от пользователей, шишек набить — куда уж без этого.

                                                          Важно, что возможность создания языковых расширений есть и это работает. И хоть сам пиши, если не нравятся чужие.
                                                            0
                                                            Понимаю, а EAP планируется?
                                                              +1
                                                              Если ты про European Association for Psychotherapy, то нет наверное. Если про Extensible Authentication Protocol, то это к автору поста. Я не настоящий сварщик, просто мимо проходил.
                                                                –1
                                                                EAP = «Early Access Preview», у продуктов JetBrains часто есть.
                                              –1
                                              Музыка достала уже через минуту.

                                              Only users with full accounts can post comments. Log in, please.