Инструменты для компиляции в JavaScript

Компилирование в javascriptИзобилие языков, позволяющих с удивительной легкостью и небольшими компромиссами перенести ваш код в Интернет.
У каждого программиста есть любимый язык или два. Любителям JavaScript сегодня повезло больше всего, потому что их язык захватывает Интернет, а Интернет захватывает мир. Однако те, чьи сердца находятся где-то еще в мире языков программирования, застряли. Они могут либо оставаться в стороне и проклинать безжалостную мощь HTML, CSS, JavaScript и Node.js, либо они могут найти способ полюбить это.

К счастью, есть третий способ, который позволяет вам наслаждаться любимым языком, в то же время развертывая код в постоянно расширяющемся мире JavaScript: просто преобразовать код, что может быть на удивление легко. Производительность может немного пострадать, но часто намного меньше, чем вы можете себе представить. Затем вы можете отправить свой код в браузеры и перестать пытаться заставить людей устанавливать исполняемые файлы.

Содержание:

Вместо предисловия
Язык Ruby
Язык Java
Язык Erland
Язык C
Язык Python
Послесловие

Вместо предисловия

Непоколебимый будет чувствовать, что это жалкая капитуляция, горькое отступление от принципов, которые связывают вас с вашим любимым синтаксисом. Некоторым это может показаться предательством, настолько предательским поступком, что вы должны скрыть это от своих коллег. Другие совершенно правильно предполагают, что это не так просто. Запустить код — это одно. Склеивание частей вместе и создание пользовательского интерфейса — это большая дополнительная работа.

Вы можете погрязнуть в своей жалости, но есть множество оправданий, которые делают эту идею более приемлемой. Во-первых, движки JavaScript работают намного быстрее, чем раньше. Во-вторых, создание веб-интерфейса никогда не было таким простым, благодаря фреймворкам и обширному таланту в области дизайна HTML / CSS. В-третьих, JavaScript становится своего рода лингва-франка. Если вы можете преобразовать все эти языки в JavaScript , а список на удивление длинный, вы также можете связать их все вместе.

Здесь мы рассмотрим множество маленьких языков, которые позволяют некоторым из самых популярных языков программирования компилироваться в JavaScript. В следующей статье мы рассмотрим, как исчезающие языки возрождаются, перенося их в браузер. Нет причин погрязнуть в жалости или ненависти. Эти методы позволяют наслаждаться любимым языком и работать везде, где работает JavaScript.

RUBY

Есть несколько вариантов, которые позволяют вам думать как программист на Ruby, работая в среде JavaScript.

Например , RubyJS — это библиотека JavaScript, которая добавляет многие базовые примитивы в один объект JavaScript. То, что вы пишете, технически является JavaScript, но особый объект Ruby большую часть времени ведет себя как код Ruby. Строки, числа, итераторы и перечислители ждут вас.

[JavaScript — самый широко распространенный язык в мире. Независимо от того, являетесь ли вы начинающим, средним или продвинутым разработчиком JavaScript, вы освоите новые навыки с помощью этого курса из девяти частей от PluralSight. ]

Если написания JavaScript, который работает как Ruby, недостаточно, Opal переведет исходный код Ruby непосредственно в JavaScript. Часто он ведет себя как виртуальная машина Ruby, но иногда это не так. Например, изменяемые строки Ruby преобразуются непосредственно в неизменяемые строки JavaScript, что не должно быть проблемой для некоторых приложений, но может свести с ума некоторых людей. Другие небольшие эффекты, подобные этому, могут в крайних случаях привести к неприятным сюрпризам.

8 шагов к реализации концепции «облака повсюду»
SponsoredPost спонсируется HPE

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

Для тех, кто хочет большего, HotRuby предлагает более полное решение — виртуальную машину JavaScript, которая обрабатывает операционные коды Ruby. Кодовая база устарела, но она предлагает истинным верующим другой вариант.

JAVA

Трудно понять, что вдохновило Google на создание Google Web Toolkit , препроцессора, преобразующего Java в JavaScript. Возможно, менеджер любил Java и не хотел, чтобы она умирала. Возможно, у них были дополнительные гении Java, которые сидели без дела, ожидая запуска Интернета.

Какой бы ни была причина, они это сделали и часто используют для своих самых сложных веб-продуктов. Это отличный подарок для тех, у кого есть куча Java и некогда ее переписывать. Все внутренности языка есть, но отсутствуют некоторые из менее распространенных классов, таких как BigInteger; Тем не менее, вы обычно можете найти способ добавить их . Фреймворк пользовательского интерфейса в значительной степени заимствован у Swing, поэтому разработчики Swing будут чувствовать себя как дома. Другим не составит труда научиться.

Google Web Toolkit — далеко не единственный выбор для Java-программистов. Java2Script полностью интегрирован с Eclipse, а GrooScript преобразует « целующего кузена» Java, Groovy.

Есть несколько инструментов, которые запускают байт-код JVM с помощью JavaScript. Это умная идея, которая позволяет развертывать файлы JAR, даже если у вас нет исходного кода Java. Некоторые, например Doppio и Node-jvm , являются интерпретаторами; другие, такие как TeaVM или Dragome , будут постоянно преобразовывать байтовый код в JavaScript.

ERLAND

У любителей Erlang есть несколько вариантов. Одним из решений является использование Erjang , инструмента, запускающего Erlang на JVM, который затем используется для запуска байтового кода Java с одним из указанных выше вариантов Java. Звучит просто, правда?

Shen — это компилятор, конвертирующий Erlang и его кузенов, таких как Elixir, Joxa и Lol, в JavaScript. Если вы хотите запустить этот код в Node.js, есть также пакет erlang-shen-js .

Третий вариант — использовать LuvvieScript , строгое подмножество Erlang, которому предоставлены ловушки для доступа ко всем объектам DOM. Вы используете структуру Erlang, которая вам нравится, и она переводит ваши инструкции в то, что понимает DOM. Это не совсем то же самое, но подойдет.

C

Многие люди с удивлением обнаруживают, что они могут использовать C или C-подобные языки с JavaScript. Конечно, базовый синтаксис JavaScript очень похож на C, но внутренняя часть отличается. C позволяет напрямую касаться памяти, но JavaScript скрывает все эти детали. C позволяет манипулировать указателями, но JavaScript защищает вас от их опасной силы. Тем не менее, эти различия можно преодолеть с помощью хитрого взлома.

Возможно, было бы несправедливо называть LLJS версией C, но эта версия JavaScript предлагает статически типизированные переменные и программный контроль над памятью — ну, не памятью как таковой, а ее версией на JavaScript. Документация любит обещать выполнение без пауз, потому что нет сборки мусора.

Если вы хотите работать со стандартным C, Clue преобразует C в JavaScript и множество других языков сценариев, таких как Perl или Lua. Разработчики даже заявляют, что некоторый код на самом деле будет работать быстрее в JIT для этих динамических языков, чем при компиляции в собственные двоичные файлы. Секрет в том, что JIT могут замечать во время выполнения вещи, которые не могли заметить базовые компиляторы, потому что они могут наблюдать за выполнением программы.

Самым большим именем может быть Emscripten , модифицированная версия LLVM, которая переделана так, чтобы выдавать инструкции для asm.js вместо машинного кода. Секрет в том, что asm.js — это узкое подмножество JavaScript, предназначенное для легкой оптимизации с помощью новейших движков JavaScript, таких как SpiderMonkey. Результаты впечатляют, и одним из лучших доказательств является игровое сообщество. Как движки Unity, так и Unreal могут запускать игры в браузерах, совместимых с HTML5.

PYTHON

Python — еще один популярный динамический язык, который легко отображается на JavaScript. Многие внутренние функции похожи, и некоторые из самых больших различий заключаются в синтаксисе.

Более простые варианты, такие как RapydScript и PyvaScript , просто предлагают синтаксис, подобный Python, который напрямую транслируется в JavaScript. Они выполнят несколько преобразований, например, вставят фигурные скобки, чтобы они соответствовали блокам с отступом от пробелов, и вуаля — это выполняется в браузере. Это больше для программистов, которые думают на JavaScript, но хотят печатать на языке Python, как говорят любители языка.

Более сложные версии, такие как PYXC-PJ и Pyjs , будут активно преобразовывать Python в JavaScript, часто создавая что-то вполне читаемое — или, по крайней мере, такое же читаемое, как исходный код. Pyjs также поставляется с набором инструментов для виджетов, который очень похож на Google Web Toolkit.

Однако самым интересным может быть PyPy — невероятный подвиг в области разработки программного обеспечения с почти пропорциями Руба Голдберга. Python входит и работает на интерпретаторе Python, написанном на RPython , подмножестве Python, предназначенном для простой компиляции. Затем этот RPython компилируется во что-то похожее на C, которое можно передать в Emscripten. Разработчики утверждают, что они могут показать некоторые тесты Python, работающие быстрее в SpiderMonkey, чем в CPython.

Если они могут сделать это с помощью Python и C, вы тоже сможете.

JavaScript, в другом костюме

Конечно, даже когда дело касается JavaScript, у вас есть альтернативы. В конце концов, одним людям нравятся знаки препинания, а другим — нет. CoffeeScript для тех, кто этого не делает. Если вам нужно программировать на JavaScript, но вам не нравится вводить столько точек с запятой или фигурных скобок, то CoffeeScript для вас.

По сути CoffeeScript такой же, как и JavaScript, потому что на самом деле это не язык. Это препроцессор, который добавляет точки с запятой и фигурные скобки, так что вам не нужно. Вы набираете свою программу на простом языке Ruby, и CoffeeScript конвертирует ее в уменьшенную версию JavaScript.

Это не то же самое, что программирование на другом языке, потому что переменные и функции, которые вы определяете, будут по-прежнему вести себя как переменные и функции JavaScript. Переменные по-прежнему будут динамически типизированы, и все мелкие неприятности останутся. Математика и непростое, перегруженное поведение оператора плюса по-прежнему утомят вас, но вы сэкономите время на вводе текста.

Мир CoffeeScript удивительно разнообразен. Когда мир понял, что он может предварительно обработать свой код, многие вошли в игру. Iced CoffeeScript , например, похож на обычный CoffeeScript, но с несколькими дополнительными конструкциями, которые делают асинхронные вызовы немного чище и проще для ввода и чтения. Может быть, по крайней мере, дюжина кузенов, предлагающих упростить ваш конкретный стиль программирования.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *