Введение
Haxe - это высокоуровневый кроссплатформенный язык программирования и компилятор, который может создавать приложения и исходный код для многих различных вычислительных платформ из одной базы кода. Это свободное программное обеспечение с открытым исходным кодом, выпущенное под лицензией MIT. Компилятор, написанный на OCaml, выпущен под лицензией GNU General Public License (GPL) версия 2. Haxe включает в себя набор функций и стандартную библиотеку, поддерживаемую на всех платформах, такие как числовые типы данных, строки, массивы, карты, двоичные, отражения, математика, протокол передачи гипертекста (HTTP), файловые системы и общие форматы файлов. Haxe также включает в себя специальные API для каждой платформы. Ха, OpenFL и Хьюпс. io - популярные фреймворки Haxe, которые позволяют создавать мультиплатформенный контент из одной кодовой базы. Haxe возникла с идеей поддержки программирования на стороне клиента и сервера на одном языке и упрощения логики связи между ними. Код, написанный на языке Haxe, может быть скомпилирован в JavaScript, C++, Java, JVM, PHP, C#, Python, Lua и Node. - Что? Haxe также может напрямую компилировать SWF, HashLink и NekoVM байт-код, а также работает в интерпретируемом режиме. Haxe поддерживает внешние файлы (файлы определения), которые могут содержать информацию о типах существующих библиотек для описания целевого конкретного взаимодействия безопасным способом, как файлы заголовков C++ могут описывать структуру существующих файлов объектов. Это позволяет использовать значения, определенные в файлах, как если бы они были статически напечатанными объектами Haxe. Кроме внешних, существуют и другие решения для доступа к возможностям каждой платформы. Многие популярные IDE и редакторы исходного кода имеют поддержку для разработки Haxe. Фонд Haxe официально не рекомендует никакой конкретной среды разработки или набора инструментов, хотя VS Code, IntelliJ IDEA и HaxeDevelop имеют наибольшую поддержку для разработки Haxe. Основные функции выделения синтаксиса, завершения кода, рефакторинга, отладки и т. д. доступны в разной степени.
Haxe is a high level cross platform programming language and compiler that can produce applications and source code for many different computing platforms from one code base. It is free and open source software, released under the MIT License. The compiler, written in OCaml, is released under the GNU General Public License (GPL) version 2. Haxe includes a set of features and a standard library supported across all platforms, like numeric data types, strings, arrays, maps, binary, reflection, maths, Hypertext Transfer Protocol (HTTP), file system and common file formats. Haxe also includes platform specific API's for each compiler target. Kha, OpenFL and Heaps. io are popular Haxe frameworks that enable creating multi platform content from one codebase. Haxe originated with the idea of supporting client side and server side programming in one language, and simplifying the communication logic between them. Code written in the Haxe language can be compiled into JavaScript, C++, Java, JVM, PHP, C#, Python, Lua and Node. js. Haxe can also directly compile SWF, HashLink, and NekoVM bytecode and also runs in interpreted mode. Haxe supports externs (definition files) that can contain type information of existing libraries to describe target specific interaction in a type safe manner, like C++ header files can describe the structure of existing object files. This enables to use the values defined in the files as if they were statically typed Haxe entities. Beside externs, other solutions exist to access each platform's native capabilities. Many popular IDEs and source code editors have support available for Haxe development. No particular development environment or tool set is officially recommended by the Haxe Foundation, although VS Code, IntelliJ IDEA and HaxeDevelop have the most support for Haxe development. The core functionalities of syntax highlighting, code completion, refactoring, debugging, etc. are available to various degrees.
История
Разработка Haxe началась в октябре 2005 года. Первая альфа-версия была выпущена 14 ноября 2005 года. Haxe 1.0 был выпущен в апреле 2006 года с поддержкой программ Adobe Flash, JavaScript и NekoVM. Поддержка PHP была добавлена в 2008 году, а C++ - в 2009 году. Более платформы, такие как C # и Java были добавлены с пересмотром компилятора в 2012 году. Haxe был разработан Николасом Каннассом и другими участниками, и первоначально был назван haXe, потому что он был коротким, простым и "имеет X внутри", что, по юмористическому утверждению автора, необходимо для успеха любой новой технологии. Haxe является преемником компилятора MTASC с открытым исходным кодом ActionScript 2, также созданного Николасом Каннассом и выпущенного под GNU General Public License версии 2 или более поздней.
Компилятор
Язык Haxe может компилировать в байт-код, который может быть выполнен непосредственно виртуальными машинами, на которые он нацелен. Он может компилировать исходный код на C ++, JavaScript, PHP, C #, Java, Python и Lua. У Haxe также есть интерпретатор, называемый eval. Этот же интерпретатор также используется во время компиляции для запуска макросов, которые позволяют модифицировать абстрактное синтаксическое дерево (AST). Эта стратегия компиляции на нескольких языках исходного кода вдохновлена парадигмой write once, run anywhere. Это также позволяет программисту выбрать лучшую платформу для работы. Типичные программы Haxe работают одинаково на всех платформах, но разработчики могут указать код, специфичный для платформы, и использовать условную компиляцию, чтобы предотвратить его компиляцию на других платформах. Компилятор Haxe - оптимизирующий компилятор, использующий встроенные поля и функции, устранение рекурсионных хвостов, постоянное складывание, разворачивание циклов и устранение мертвого кода (DCE) для оптимизации производительности выполнения компилированных программ. Компилятор Haxe предлагает опцию "незащищенность", он проверяет время компиляции на наличие нулевых значений.
Язык
Haxe - это язык общего назначения, поддерживающий объектно-ориентированное программирование, общее программирование и различные конструкции функционального программирования. Такие функции, как итерации, исключения и отражение кода, также встроены в функции языка и библиотек. Необычно среди языков программирования, Haxe содержит систему типов, которая одновременно сильна и динамична. Компилятор будет проверять типы имплицитно, используя вывод типа и давая ошибки времени компиляции, но он также позволяет программисту обходить проверку типа и полагаться на динамическую обработку типа целевой платформы. Можно использовать все нативные целевые API.
Система типа
У Хаксе сложная и гибкая система типов. Типы, которые он предлагает, - это классы, интерфейсы, типы методов функций, анонимные типы, алгебраические типы данных (называемые enum в Haxe) и абстрактные типы. Параметрический полиморфизм возможен с классами, алгебраическими типами и типами функций, что дает языковой поддержку для общего программирования, основанного на стирании типов. Это включает в себя поддержку дисперсии в полиморфных функциях, хотя и не в конструкторах типа. Система типов является статической, если только не присутствуют аннотации для динамического типографирования, для использования с целями, которые их поддерживают. Проверка типа следует за номинальным типированием, за исключением анонимных типов, где вместо этого используется структурное типирование. Наконец, поддерживается вывод типа, позволяющий декларировать переменные без аннотаций типа.
- Да.
Компилятор Haxe разделен на один фронтэнд и несколько бэкендов. Фронтенд создает абстрактное синтаксическое дерево (AST) из исходного кода и выполняет проверку типов, расширение макросов и оптимизацию на AST. Различные бэкенды переводят обработанный AST в исходный код или генерируют байт-код, в зависимости от их цели. Компилятор написан на OCaml. Он может работать в режиме сервера для обеспечения завершения кода для интегрированных сред разработки (IDE) и поддержания кэша, чтобы ускорить компиляцию.