Транскомпиляция 6to5 и 5to6 в режиме реального времени

Всем привет. Как мы знаем, существуют транспайлеры/транскомпиляторы/трансшпилеры (нужное подчеркнуть), как из старой версии в новую, так и наоборот. Можно ли сделать так, чтобы в текстовом редакторе одновременно видеть код ES5 и ES6 и при каждом корректном изменении одного из кодов видеть оттранскомпиленный второй? Если нельзя, то почему?

Изменения работают только в одном направлении: es6 → es5.

Логически и последовательно объяснить почему невозможно обратное преобразование я не могу. Единственному описанию es6 может соответствовать бесконечное множество реализаций на es5 (например наследование). Думаю, что задача не решаема без очень больших допущений.

В вебшторме есть возможность геренировать из es6 es5 код. Открываешь оба файла, смотришь на результаты.

Есть онлайн трансляторы, где можно посмотреть результаты вживую.

Понятно, а вам вобще известны программы, в которых компиляция чего-нибудь идёт одновременно в двух направлениях? По-моему, было бы интересно писать одну и ту же программу, например, в функциональном и ОО стилях, мне кажется это бы открыло огромнейшее поле для оптимизаций в IDE, или я один так думаю?

Я плохо понимаю как ты представляешь конечный результат. То, что я могу понять из твоих слов не сулит большой выгоды. Лучше уже все писать в функциональном стиле, примешивая классы по мере необходимости (или наоборот). Языки как раз в эту сторону и эволюционируют (у лиспов есть всякие CLOS, в джавах появляются анонимные фуркции с 8 версии).

Любой wysiwyg редактор html. Качество кода, который он генерирует говорит о степени сложности задачи. Это только язык разметки, где логики нет.

Я понимаю, что сейчас я говорю в основном глупости и фантазии, имеющие слабое отношение к реальным вещам. Но, наверное, круто было бы видеть в одном окошке программу, а во втором какую-нибудь блок-схему, например drakon, и чтобы это было wysiwyg. Или иметь IDE, которая просто не разрешит писать код не по стайлгайду и будет автоматически делать все возможные “преждевременные оптимизации” в хорошем значении этого термина, на основании своих познаний в вычислительной сложности каждой из возможных инструкций кода. Или получить возможность написать алгоритмическую часть веб-приложения на каком-нибудь Ruby, но с тем условием, что серверная часть будет скомпилена в C, а клиентская - в JavaScript. Если бы у всех веб-разработчиков была бы такая IDE, то при выходе новой версии, например, jQuery, все сайты мира оказались бы перекомпилены на новую версию библиотеки без участия программистов.
Но это сложно, да. Я ещё не видел IDE, в которой можно было бы использовать emmet в PHP в тех местах, где пишутся HTML-вставки, потому что современные языки программирования работают со стрингами, а не с веб-сайтами (и хорошо что со стрингами, а не с char*), и я думаю, что когда IDE научатся понимать код, профит будет огромный. Кстати, основная проблема wysiwyg, по моему опыту, в том, что кода генерируется слишком много. Если была бы возможность его обучать для своих типовых паттернов, то не было бы причин его не использовать.

Есть парень, который недавно опубликовал планы работать над чем-то подобным, что ты описываешь Chris Granger - Beyond Light Table

Встретил инструмент, который компилирует js в coffeescript http://js2.coffee. Поведение программы очень похоже на то, что ты хочешь: компиляция из цели компиляции. Обычно преобразование кода происходит по схеме: source -> target. Например coffeescript -> es5. Ты описываешь обратное преобразование: es5 -> coffescript, target -> source. Этим и занимается http://js2.coffee.

1 лайк