У цій статті Адріан Тьєррі розповідає про NectarJS, цей трохи божевільний проект, який нещодавно з’явився на KickStarter, дозволяє компілювати код JavaScript на будь-якій платформі, у WebAssembly або навіть у ASM.js.
Привіт, Адрієне, і дякую за це інтерв’ю, спершу пропоную вас познайомити:
Привіт, Матьє! Я французький підприємець, експерт з ІТ-безпеки та захоплений новими технологіями. П'ять років тому я заснував Seraum, консалтингову та навчальну компанію з ІТ-безпеки. Я проводив різні дослідницькі проекти з безпеки онлайн-платежів та безпеки доступу загалом. Я розробляю кілька рішень безпеки та тестую їх у режимі реального часу на hackmyfortress.com , хакерському челенджі, який пропонує 30 000 доларів тому, хто зможе його зламати.
Чи можете ви пояснити нам, що таке NectarJS?
NectarJS — це кросплатформний компілятор JavaScript SAAS, або CAAS (Compiler As A Service). Він дозволяє компілювати JavaScript з будь-якої платформи на будь-яку платформу. Наразі можна компілювати в Windows (32 і 64 біти), Linux (32, 64 біти та ARM), Arduino (UNO і Mega), у WebAssembly et ASM.JS. Тому можна скомпілювати JavaScript з Rasbperry PI 3 на Arduino. Я говорю про компіляцію, отриманий результат - це виконуваний двійковий файл або прошивка, специфічна для цільової платформи. Ви також можете компілювати зі свого телефону Android на Windows або Linux. Платформа для розробки більше не є перешкодою. У команді розробників більше не потрібно буде турбуватися про таку версію віртуальної машини чи таке середовище тестування чи компіляції.

Як виникла ідея цього проекту?
Під час запуску бенчмарків я виявив Crystal , який дозволяє компілювати код, дуже схожий на Ruby. Скомпільований результат у 5-10 разів швидший, ніж NodeJS, для HTTP-запитів. У мене було два варіанти для збільшення швидкості: перенести мій стек NodeJS на Crystal (який обмежений Linux) або скомпілювати JavaScript для покращення швидкості. Я обрав другий варіант і дуже швидко отримав обнадійливі результати. Різні бенчмарки підтвердили мій вибір і мотивували мене продовжувати розробку. Я опублікував випадкову новину на Hacker News, яка стала вірусною (137 балів і 78 коментарів).
Цей проект справді здається занадто божевільним, щоб бути правдою, чи можете ви трохи пояснити, як він працює, не вказуючи весь рецепт?
NectarJS створює AST (абстрактне синтаксичне дерево) і генерує з нього проміжну мову (IL), яку потім можна скомпілювати на будь-яку платформу. Клієнт NectarJS, встановлений на машинах, які бажають компілювати, просто зашифрує код і відправить його на сервери для компіляції.
Які поточні обмеження проекту, чи можу я скомпілювати свою програму Node/Express?
Поки що ні, ми на початку розробки, і у нас ще є багато бібліотек для кодування чи транскрибування. Ми вже можемо зібрати деякі частини бібліотеки FS (FileSystem) або Process NodeJS, але попереду ще довгий шлях. Зрештою, обмежень не буде. Ми маємо намір повністю скомпілювати JavaScript до стандарту ES5, а потім до ES6 і ES7. У нас також є алгоритм, який дозволяє нам компілювати “eval()” або “this.”.
Як я можу налагодити свою скомпільовану програму?
Буде кілька способів налагодити вашу програму. Браузер за допомогою WebAssembly може бути простим способом аналізу роботи свого коду за допомогою повсякденних інструментів. Ми також плануємо інтегрувати в NectarJS всі інструменти відстеження та налагодження, що дозволить компілювати в режимі налагодження та полегшить дослідження. Ми дуже хочемо демократизувати розвиток, і зробимо все, щоб він був максимально простим і ефективним.
Як ви думаєте, чи може ваш проект з часом замінити рідні мови мобільних додатків?
Якщо його широко впроваджать, він може замінити багато речей: мобільну розробку, а також розробку Інтернету речей , розробку на стороні сервера, веб-розробку… З NectarJS JavaScript стає універсальним та ефективним. Будь-хто може кодувати з будь-чим; обчислювальна потужність не має значення, оскільки всю роботу виконують сервери NectarJS. NectarJS також зменшує споживання енергії, тим самим роблячи обчислення більш екологічними.
Також можна дозволити кодувати людям з обмеженими засобами: простий Raspberry дозволяє розробляти для будь-якого типу платформи за допомогою NectarJS.
NectarJS дозволяє розробнику JavaScript бути таким же ефективним, як і розробнику низького рівня. Деякі контрольні показники показують, що деякі математичні операції скомпільовані з NectarJS швидше, ніж C.
NectarJS також можна використовувати в середовищах, де швидкість є ключовим фактором успіху (алгоритмічна торгівля тощо).
Чи проект уже був дуже вдалим?
Ми спілкуємося з компаніями, які хочуть використовувати NectarJS щодня. Створити спільноту з нуля дуже складно, і краудфандингова кампанія на KickStarter дає мені змогу побачити проблеми спілкування та опір розробників змінам. Для багатьох JavaScript – це не мова програмування, а мова сценаріїв. Однак Paypal та інші великі групи щодня використовують JavaScript з NodeJS. Я спілкуюся з кількома відомими розробниками у спільноті JavaScript (наприклад, NativeScript), які підтримують проект. Багато людей вважають, що це підробка, що дуже прикро.
Наприклад, NectarJS викликав резонанс у Японії, і за дуже короткий час його розповсюдили на багатьох новинних сайтах. Зараз я прагну зробити те саме в Сполучених Штатах і Європі.
Якщо проект KickStarter запрацює, які будуть наступні кроки?
Завершіть компіляцію стандарту JavaScript ES5, а потім перейдіть до NodeJS. У той же час ми дуже швидко додамо в компіляцію відсутні платформи (Mac Os, різні Arduinos і платформи розробки). Ми також створимо маркетплейс для розробників, які будуть дарувати чи продавати код чи бібліотеки. Мета кампанії – дозволити спільноті розробників вибрати наступні покращення NectarJS.
У разі невдачі кампанії ми маємо приватних інвесторів як резерв, але вибір розвитку буде зроблено в пріоритеті для їхніх потреб.
Заключне слово?
Для всіх тих, хто любить JavaScript або хто захоплений технологіями, робототехнікою чи ШІ, не соромтеся поширювати інформацію та краудфандингову кампанію: http://kickstarter.com/projects/adrien-thierry/nectarjs-compile-javascript-for-and-from-any-devic
Щиро дякуємо за це інтерв'ю Адрієну і бажаємо успіхів у вашому проекті.
Матьє Бретон, технічний директор JS-Republic.
[actionbox color=”default” title=”” description=”JS-REPUBLIC – сервісна компанія, що спеціалізується на розробці JavaScript. Ми є затвердженим навчальним центром. Знайдіть всю нашу технічну підготовку на нашому партнерському сайті, присвяченому навчанню” btn_label=”Наше навчання” btn_link=”http://training.ux-republic.com” btn_color=”primary” btn_size=”big” btn_icon=”star” btn_external =”1″]
