IDE для Haxe — это HaxeDevelop, но только под Windows. Вот тут есть примеры возможностей:
Редактирование: haxedevelop.org/editing.html
Кодогенерация: haxedevelop.org/code-generation.html
Для JS разработки есть еще минифер для Css, на лету компилирует Less, Sass.Тут детальнее: haxedevelop.org/language.html
Для других редакторов есть плагины:
haxedevelop.org/other-haxe-editors.html
А что именно разочаровало? Может я смогу пролить свет на какие-то моменты.
PS. Есть еще такие интересные вещи:
github.com/...heckstyle/haxe-checkstyle
bitbucket.org/yar3333/haxe-refactor
Приведенный JS — сгенерированный JS ES5 из Haxe, а не руками написанный мною. Babel делает тоже самое.
Поддержка генерации ES6 будет добавлена в Haxe в следующей версии (во всяком случае так планируется).
Як заміну ні, не зовсім, бо реакт — це фреймворк, а Haxe — це інструмент для написання фреймворків (мова + компілятор + бібліотека классів для всіх платформ).
Тож з одного боку так, бо можна написати свій реакт, проте це буде важче, ніж просто взяти react.
На данний момент як доповнення — легко, оскільки Haxe дуже добре інтегрується з JS, то його можна використовувати саме з React Native напряму. Хтось вже, навіть, зробив біндінги:
github.com/...e-react/haxe-react-native
Я саме займаюсь фреймворком, який заміняє мені реакт і який написаний за допомогою Haxe. Трохи згодом я віддам його в опенсорс і обов’язково напишу статтю про це на DOU.
Якщо мова про live reloading, то саме для JS можна користуватись якимись NodeJS модулями, наприклад watchify. Якщо мова про щось інше, то розшифруйте абревіатуру :)
Этими примерами демонстрируются некоторые базовые возможности Haxe по оптимизации кода на каждой платформе, не более. Не вижу смысла усложнять примеры в данном контексте.
У меня есть идея интересного, более сложного примера под JS, но это тянет на отдельную статью. Надеюсь, напишу её когда-то.
Я как раз в теле статьи описал свой опыт применения Haxe вне игр. Мобильное приложение с нативным UI. Оно еще в стадии разработки, а не продакшена, так что пока без ссылки на стор.
Скриншот с андроида: i.imgur.com/ILLzV50.png
Практически аналогично выглядит под iOS.
Чуть ниже я скидывал скриншот с использованием Qt:
i.imgur.com/Tqn42LB.png
Есть еще биндинги к wxWidgets, но не мои.
Но в целом, да. Это проблема неширокой известности Haxe — отсутствуют биндинги для многих полезных вещей.
Я нигде не говорил, что сгенерированный С++ будет быстрее вручную написанного.
Я говорил только то, что он дает вменяемую производительность.
Дело ведь не только в производительности и скорости, потому что в 95% софта такого рода оптимизации не нужны вообще.
Но даже если сгенерированный С++ будет не сильно обходить JVM по тестам, это все равно не отменяет того факта, что ты можешь запустить сгенерированный С++ на консолях, где джавы нет, например. Даже на QNX, где джава если и заработает, то это будет pain in the ass. Ты можешь общаться напрямую к С++ библиотеками, там, где для джавы нужен будет JNI. Ты можешь написать руками оптимизированный С++ бекенд для высоконагруженной задачи, а логику отдать Haxe. Применений на самом деле великое множество.
Я не хорчу сказать, что С++ когда-то умрет, но лоу-левел постепенно уходит на второй план. Haxe, как раз таки, дает возможность писать под С++, не прибегая к низкоуровневому программированию (если его можно так называть в данном контексте).
С++ программисты бородаты и суровы, если они пишут на С++ и другие языки их не интересуют впринципе, то переходить на Haxe смысла особо то и нет, действительно. Лучше продолжать писать оптимизированный, ручной код.
Но такой подход с автогенерацией особенно выгоден как раз таки тем, кто не хочет тратить десяток лет на глубокое изучение С++. И получать при этом, вменяемую нативную производительность, а не фантики, мимикрирующие под натив, а-ля Electron. Используя при этом мощный язык, к слову говоря.
Если разделять эти две группы специалистов, то атосгенерированный С++ стает не таким уж страшным делом :)
Как я и писал в самом начале статьи, изначально Haxe начали использовать в основном для игр. Т.к. сама по себе парадигма трансляции кода, повзоляет запускать игру сразу на всех современных платформах. Это изначально поставило цель перед авторами делать высокопроизводительный инструмент. С++ таргет, как раз, один из самых востребованных в этой области, потому, его развитие не прекращается.
Из реальной жизни, я могу привести примеры работы с графикой, т.к. и сам пришел к Haxe через игры.
PBR рендер:
i.imgur.com/jfuUfU4.png
Игра, которая делается ради фана:
i.imgur.com/LAfxDd8.gif
Мой пример коннекта Haxe с Qt:
i.imgur.com/Tqn42LB.png
Нет скриншотов, но я так же успешно пользуюсь С++ библиотеками Assimp, ImGui, Bullet physics вместе с кодом на Haxe.
Постараюсь раскрыть эту тему в будущих статьях и уделить особое внимание С++ таргету.
Отвечая сразу на вопрос — да, регулярно дебажу и профилирую студией. Стоит сказать, что в случае чего, Haxe позволяет сопостовлять строку кода в сгенерированном С++ со строкой в исходниках. То есть, если что-то идет не так, вы сможете знать, в каком месте это происходит на стороне Haxe. Хотя специфические ситуации бывают, ведь мы говорим о С++, где и вручную написанный код может вести себя странно, если писать его недостаточно внимательно.
С++ один из самых сложных таргетов в силу своей специфики. Что есть, то есть, код на выходе получается сложнее, чем с JS и менее производительный чем вручную написанный. Однако, Haxe развивается в этой области и с каждым новым релизом сгенерированный С++ стает чище, целостней и производительней. Есть даже свой дебаггер, но с той же VS студией не сравнится, конечно. В любом случае, если говорить о десктопных либо мобильных приложениях, С++ на выходе даст вменяемую производительность. В данном контексте, я сравнивал Java со сгенерированным C++ для игр под Android, разница более чем ощутима.
Я попробую описать С++ таргет подробнее, расскажу о нюансах работы с ним в будущих статьях, если они будут, конечно.
Это ведь очень простые примеры, статья призвана только рассказать о том, что такое Haxe.
Но в сравнении, он значительно мощнее, как язык, чем JS.
Если я буду продолжать писать о Haxe, то постараюсь раскрыть побольше нюансов, приведу более сложные примеры. Может напишу программу, которая будет работать под всеми мажорными платформами.
Сейчас такое время, что знать одного языка недостаточно, имхо. Иначе не поспеешь за поездом.
Более того, опытному программисту неважно, на каком языке писать: стоит ему лишь почитать немного про синтаксис, как можно начинать с ним работать.
Я это к тому, что неважно, какой ты выберешь язык. Он все равно не будет твоим единственным, если ты продолжишь развиваться как программист.
Задай себе вопрос по-другому: что я хочу, для начала, сделать? Исходя из этого, выбирай язык.
Хочешь веб приложение? Попробуй начать с JS.
Что-то из софта под Windows? Попробуй C# (или Qt, но там C++, зато не только Windows)
Под андроид? Бери Java или Kotlin.
Под iOS? Swift (или Objective-C, если нравится синтаксис)
С игр не начинай, имхо. Писать грамотно игры — это значит разбираться в лоу-левел вещах, а-ля GL или D3D, понимать работу видеокарты и как вообще устроен графический пайплайн. На изучение этого ты потратишь 5+ лет. Со своими знаниями ты сможешь писать только скрипты в существующих движках, а это будет только отуплять тебя как программиста.
И не парься по-поводу говнокода. Ты все равно будешь говнокодить, потому что нельзя не говнокодить, не имея достаточного опыта.
Так что пиши так, чтобы работало. А строить архитектуру и вылизывать код научишься со временем. Если пойдешь обратным путем и начнешь с «правильного кода», то там и застрянешь.
Ну а потом ты сам поймешь что тебе надо, чего хочется и на каком языке тебе комфортнее кодить. Сейчас об этом сильно не думай, просто пиши код.
Я вот думаю, статью может чиркануть... А то уж через чур мало людей о нем знают.
Это само собой, любые сетевые данные нужно проверять всеми возможными способами, но опять же, если кто-то мимикрирует под твой сервер, создав эмулятор — это никак не скажется на целостности твоего сервера. Если это не ААА тайтл, никто этого делать не станет ибо это очень сложно. Более того, пиратам для этого придется пропатчить и игру, а, соответственно, оригинал игры будет продолжать работать с твоим, надежным сервером. И если кто-то осознанно скачает пиратку, так это абсолютно не твои проблемы.
Проблемы — это когда на оригинальном сервере читы и кража денег. Читов не избежать никак, но поскольку все расчеты на сервере — это позволяет сразу банить негодников.
Ну а если же есть шанс, что кто-то попросту получит доступ к оригинальному серверу — это абсолютно другая тема, не из области нашего обсуждения.
Конечно. Но если оппонет соизволит подключить логику, то сможет догадаться, что огромная масса джавистов набралась тогда, когда альтернатив было не столько, сколько их есть сейчас.
JVM продолжает прекрасно работать, соответственно и массе джавистов нет смысла спрыгивать на всякие скалы и новомодные котлины. Убери JVM и джависты будут ненужны. А Котлин останется, например, т.к. умеет в JS и LLVM.
Да никакой обфускатор не поможет, никогда. Если цель сделать чит, его сделают, т.к. можно не только код игры вытянуть, а и сетевые пакеты подделать. Единственное, что нельзя пропатчить — это сервер, так что логика важных расчетов никогда не доверяется клиентам.
Вернее, сделать это все на клиентах, конечно же, можно, никто не отрицает, полно игр, которые работают по данной модели.
Но тут вопрос в проффесианализме и правильном выборе подхода к решению задачи. Доверять любым расчетам клиентов — неправильный подход, игры с таким решением обязательно обзаводятся читами. Инфа сотка.
Включив диванного аналитика, подключусь к треду и скажу, что Java удерживает позиции, в основном, за счет JVM, которая и является тем зёрнышком, имхо. У меня все :)
Верно. HaxeDevelop — это его форк. Пока там отличий практически нет, но в дальнейшем HaxeDevelop планируют сделать кроссплатформенным.