~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 83DF55BF03DE6FE6FB88E6503D1635C3__1716849180 ✰
Заголовок документа оригинал.:
✰ Haxe - Wikipedia ✰
Заголовок документа перевод.:
✰ Хаксе — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Haxe ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/83/c3/83df55bf03de6fe6fb88e6503d1635c3.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/83/c3/83df55bf03de6fe6fb88e6503d1635c3__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 11:55:22 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 28 May 2024, at 01:33 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Хаксе — Википедия Jump to content

Смешанный

Из Википедии, бесплатной энциклопедии
Смешанный
Парадигма Мультипарадигмальность : объектно-ориентированная , функциональная , универсальная.
Семья ECMAScript
Разработчик Фонд Хаксе
Впервые появился 14 ноября 2005 г .; 18 лет назад ( 14 ноября 2005 г. )
Стабильная версия
4.3.4 [1]  Отредактируйте это в Викиданных/ 4 марта 2024 г .; 3 месяца назад ( 4 марта 2024 г. )
Дисциплина набора текста статический , динамический через аннотации, номинальный
Объем лексический
Язык реализации OCaml
Платформа IA-32 , x86-64 , AArch64 , Armel, Armhf , MIPS, MIPS64el, MIPSel , ppc64el , s390x
ТЫ Андроид , iOS ; Linux , MacOS , Windows
Лицензия GPL 2.0, библиотека: Массачусетский технологический институт
Расширения имен файлов .hx, .hxml
Веб-сайт смешивание .org Отредактируйте это в Викиданных
Под влиянием
ECMAScript , JavaScript , ActionScript , OCaml , Java , C++ , PHP , C# , Python , Lua , NekoVM

Haxe — это высокого уровня кроссплатформенный язык программирования и компилятор , который может создавать приложения и исходный код для множества различных вычислительных платформ из одной базы кода. Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией MIT . [2] Компилятор, написанный на OCaml , распространяется под лицензией GNU General Public License (GPL) версии 2.

Haxe включает в себя набор функций и стандартную библиотеку. [3] поддерживается на всех платформах , включая числовые типы данных , строки , массивы , карты , двоичные файлы , рефлексивное программирование , математику, протокол передачи гипертекста ( HTTP ), файловую систему и распространенные форматы файлов . Haxe также включает в себя интерфейсы прикладного программирования ( API ) для конкретной платформы для каждой цели компилятора. [4] Kha , OpenFL и Heaps.io — популярные фреймворки Haxe, которые позволяют создавать многоплатформенный контент из одной базы кода. [5]

Haxe возник с идеей поддержки клиентского и серверного программирования на одном языке и упрощения логики взаимодействия между ними. [6] Код, написанный на Haxe, можно скомпилировать в JavaScript , C++ , Java , JVM , PHP , C# , Python , Lua. [7] и Node.js. [8] Haxe также может напрямую компилировать SWF , HashLink и NekoVM байт-код , а также работать в интерпретируемом режиме. [9]

Haxe поддерживает externs (файлы определений), которые могут содержать информацию о типах данных существующих библиотек для описания целевого взаимодействия типобезопасным способом, например, C++ файлы заголовков могут описывать структуру существующих объектных файлов . Это позволяет использовать значения, определенные в файлах, как если бы они были статически типизированными объектами Haxe. Помимо внешних средств, существуют и другие решения для доступа к собственным возможностям каждой платформы.

Многие популярные IDE и редакторы исходного кода поддерживают разработку Haxe. [10] Haxe Foundation официально не рекомендует какую-либо конкретную среду разработки или набор инструментов, хотя VS Code , IntelliJ IDEA и HaxeDevelop имеют наибольшую поддержку разработки Haxe. Основные функции подсветки синтаксиса , завершения кода , рефакторинга , отладки и т. д. доступны в различной степени.

История [ править ]

Разработка Haxe началась в октябре 2005 года. Первая альфа-версия была выпущена 14 ноября 2005 года. [11] [12] Haxe 1.0 был выпущен в апреле 2006 года с поддержкой программ Adobe Flash , JavaScript и NekoVM . Поддержка PHP была добавлена ​​в 2008 году, а C++ — в 2009 году. Дополнительные платформы, такие как C# и Java, были добавлены после капитального ремонта компилятора в 2012 году.

Haxe был разработан Николя Каннассом и другими участниками и первоначально назывался haXe. [13] потому что он был коротким, простым и «имеет X внутри», что, как с юмором утверждает автор, необходимо для успеха любой новой технологии. [14]

Haxe является преемником компилятора ActionScript 2 с открытым исходным кодом MTASC . [15] также создан Николя Каннассом и выпущен под лицензией GNU General Public License версии 2 или более поздней.

Компилятор [ править ]

Язык Haxe может компилироваться в байт-код , который может выполняться непосредственно виртуальными машинами, на которые он нацелен. Он может компилироваться в исходный код на C++ , JavaScript , PHP , C# , Java , Python и Lua . У Haxe также есть интерпретатор eval . [16] Этот же интерпретатор также используется во время компиляции для запуска макросов, которые позволяют изменять абстрактное синтаксическое дерево (AST).

Эта стратегия компиляции в несколько языков исходного кода основана на парадигме «запись один раз, запуск где угодно» . Это также позволяет программисту выбрать лучшую платформу для работы. Типичные программы Haxe работают одинаково на всех платформах, но разработчики могут указать код, специфичный для платформы, и использовать условную компиляцию , чтобы предотвратить его компиляцию на других платформах.

Компилятор Haxe является оптимизирующим компилятором и использует встраивание полей и функций , устранение хвостовой рекурсии , свертывание констант , развертывание цикла и устранение мертвого кода (DCE) для оптимизации производительности скомпилированных программ во время выполнения. [17] Компилятор Haxe предлагает опцию null-safety , он проверяет время компиляции на наличие значений, допускающих значение NULL.

Цели [ править ]

В Haxe поддерживаемые платформы известны как «цели» и состоят из следующих модулей:

  • Серверные компиляторы, отвечающие за генерацию соответствующего кода.
  • Специальные API-интерфейсы времени выполнения, выходящие за рамки поддержки основного языка (цели платформы).

В следующей таблице описывается платформа и языковая поддержка в Haxe. Язык Haxe позволяет разработчикам получить доступ ко многим функциям платформы, но Haxe не является полнофункциональным движком, им могут потребоваться фреймворки, позволяющие создавать контент для определенных платформ.

Цели компилятора Haxe [9]
Имя Уровень Выход Платформа Использовать Начиная с версии Haxe
Ничего 3 байт-код НекоВМ Сервер, рабочий стол, CLI 2005 (альфа)
Флэш/SWF 3 байт-код Flash : AVM2 , Flash Player 9+, AIR Рабочий стол, браузер, сервер 2005 (альфа)
JavaScript 1 источник JavaScript : HTML5 , NodeJS , PhoneGap. Сервер, настольный компьютер, браузер, мобильный телефон 2006 г. (бета)
ActionScript источник ActionScript 3 : AIR , Flex , Royale Сервер, настольный компьютер, браузер, мобильный телефон 2007 г. (1.12), удалено с 2019 г. (4.0)
PHP 1 источник PHP : Zend-движок Сервер 2008 (2.0) PHP 5 ; PHP 7 с 2019 г. (4.0)
С++ 2 источник C++ : Windows , Linux , macOS , Android , iOS , Palm , WebOS Сервер, настольный компьютер, мобильный телефон, интерфейс командной строки, игровые консоли 2009 г. (2,04); cppia добавлено в 2014 г. (3.2)
С# 3 источник C# : .NET Framework, .NET Core , Mono Сервер, настольный компьютер, мобильный 2012 (2.10)
Джава 3 источник Java : Java OpenJDK. Сервер, десктоп 2012 (2.10)
Питон 3 источник Питон CLI, веб, рабочий стол 2014 (3.2)
Два 2 источник Два CLI, веб, настольный компьютер, мобильный телефон 2016 (3.3)
ХэшСсылка 1 байт-код HashLink VM или HL/C (компилировать в файл C) Сервер, настольный компьютер, мобильный телефон, игровые консоли (экспорт C) 2016 (3.4)
JVM 1 байт-код JVM : HotSpot , OpenJ9 Сервер, десктоп 2019 (4.0)
Оценить 1 устный переводчик переводчик Хаксе Прототипирование, скриптинг 2019 (4.0)

Преимущества [ править ]

  • Возможность ориентироваться на несколько платформ и устройств, используя один и тот же язык.
  • Умение использовать строго типизированный код
  • Возможность использования макросов (преобразование синтаксиса), которое можно выполнить с помощью языка Haxe. [18]
  • Добавлены функции языка, такие как методы расширения и функциональное программирование.
  • Скорость выполнения программ Haxe сопоставима с рукописными источниками. [19]

Язык [ править ]

Haxe — это язык программирования общего назначения, поддерживающий объектно-ориентированное программирование , обобщенное программирование и различные функционального программирования конструкции . Такие возможности, как итерации , исключения и рефлексивное программирование (отражение кода), также являются встроенными функциями языка и библиотек. Необычный среди языков программирования, Haxe содержит систему типов одновременно строгую и динамичную . Компилятор будет проверять типы неявно посредством вывода типа и выдавать ошибки во время компиляции, но он также позволяет программам обходить проверку типов и полагаться на динамическую обработку типов целевой платформы. Можно использовать все собственные целевые API.

Типовая система [ править ]

Haxe имеет сложную и гибкую систему типов. Типы типов, которые он предлагает, — это классы , интерфейсы, типы-функции-методы, анонимные типы, алгебраические типы данных (называемые enum в Haxe) и абстрактные типы. Параметрический полиморфизм возможен с классами, алгебраическими типами и типами функций, обеспечивая языковую поддержку универсального программирования, основанного на стирании типов. Это включает поддержку вариативности в полиморфных функциях , но не в конструкторах типов .

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

Модули и пространства имен [ править ]

Весь код Haxe организован в модули, адресация которых осуществляется с помощью путей. По сути, каждый файл .hx представляет собой модуль, который может содержать несколько типов. Например, чтобы создать тип A в пакете my.pack, как показано, структура папок должна быть my\pack , а файл A.hx. в папке package может иметь формат

 // файл my/pack/A.hx, 
 пакет   my  .   пакет  ; 

  класс   А   {} 

В других модулях другие типы можно импортировать, поставив import утверждения под определением пакета, например import my.pack.A;

Модуль может содержать несколько типов, например следующие. Из этого модуля можно импортировать по одному типу, используя import my.pack2.A;. Тип может быть private, и в этом случае доступ к нему может получить только содержащий его модуль.

упакуйте   мой  .   пакет2  ; 

  typedef   A   =   {  a  :  String  } 
 частный   typedef   B   =   {  b  :  String  } 

Классы [ править ]

Классы (ключевое слово class) в Haxe аналогичны тем, что есть в Java или TypeScript. Их поля могут быть методами, переменными или свойствами, статическими или экземплярными соответственно. Haxe поддерживает средства доступа public и privateи более продвинутые методы управления доступом, обозначаемые с помощью аннотаций. Методы и статические константные переменные можно встроить с помощью ключевого слова inline. Поля могут быть помечены как final объявить константу, которая должна быть инициализирована немедленно или в конструкторе и не может быть записана в случае функции final будет помечен как непереопределяемый в подклассах.

Интерфейсы в Haxe очень похожи на интерфейсы, например, в Java.

интерфейс   ICreature   { 
     общественная   переменная   рождения  :  Дата  ; 
      публичное   переменной   имя  :  String  ; 

      публичная   функция   age  ():  Int  ; 
  } 

 Класс   Fly   реализует   ICreature   { 
     общественная   вар   рождения  :  Дата  ; 
      публичное   переменной   имя  :  String  ; 
	
      публичная   функция   age  ():  Int   return   Date  .   сейчас  ().   getFullYear  ()    рождение  .   получитьПолныйГод  (); 
  } 

Дженерики [ править ]

Haxe поддерживает общее программирование . Ниже приведен пример функции идентичности .

 функции  идентичность  <  T  >(  arg  :  T  ):  T   { 
	 return   arg  ; 
  } 

Перечислимые типы [ править ]

Перечислимые типы — важная особенность языка; они могут иметь параметры типа и быть рекурсивными. [20] Они обеспечивают базовую поддержку алгебраических типов данных , позволяя включать типы продуктов аналогично Haskell и ML . А switch Выражение может применять сопоставление шаблонов со значением перечисления, что позволяет элегантно решать сложные проблемы программирования:

перечисление   Цвет   { 
	 красный  ; 
	  зеленый  ; 
	  синий  ; 
	  rgb  (  r  :  Int  ,   g  :  Int  ,   b  :  Int  ); 
  } 

 класса   Colors   { 
	 статическая   функция   toInt  (  c  :  Color  ):  Int   { 
		 возврата   переключатель   (  c  )   { 
			 регистр   красный  :   0xFF0000  ; 
			 регистр    зеленый  :   0x00FF00  ; 
			 регистр    синий  :   0x0000FF  ; 
			  случай   rgb  (  р  ,   г  ,   б  ):   (  р   <<   16  )   |    (  г   <<   8  )   |    б  ; 
		  } 
	 } 

	 Статическая   функция   validCalls  ()   { 
		 var   redint   =   toInt  (  Color  .  red  ); 
		  var   rgbint   =   toInt  (  Color  .  rgb  (  100  ,   100  ,   100  )); 
	  } 
 } 

Примерами параметрических типов перечислений являются типы стандартной библиотеки Haxe. [21] и либо: [22]

enum   Option  <  T  >   { 
     Some  (  v  :  T  ); 
      Никто  ; 
  } 

 enum   Либо  <  L  ,   R  >   { 
     Влево  (  v  :  L  ); 
      Вправо  (  v  :  R  ); 
  } 

Haxe также поддерживает обобщенные алгебраические типы данных (GADT). [23] [24]

Анонимные типы [ править ]

Анонимные типы определяются путем явного обозначения их структуры с использованием синтаксиса, который соответствует математическому представлению типа на основе записей. Их можно использовать для реализации структурной типизации аргументов функции (см. ниже), и им можно дать псевдоним с ключевым словом typedef:

typedef   AliasForAnon   =   {   a  :  Int  ,   b  :  String  ,   c  :  Float  ->  Void   }; 

Типы функций [ править ]

Функции — это первоклассные значения в Haxe. Их тип обозначается стрелками между типами аргументов, а также между типами аргументов и возвращаемым типом, как это принято во многих функциональных языках. Однако, в отличие от известных примеров, таких как Haskell или семейство языков ML , не все функции являются унарными (функциями только с одним аргументом), а в Haxe функции не могут применяться частично по умолчанию. Таким образом, следующие сигнатуры типов имеют иную семантику, чем в вышеупомянутых языках. Тип F1 это функция, которая принимает String в качестве аргументов и возвращает значение типа Float.

Типы F1 и F2 обозначают тот же тип, за исключением того, что F2 использует помеченный параметр, который полезен для завершения и документирования.

Типы F4 и F5обозначают один и тот же тип. Обе являются двоичными функциями, которые возвращают двоичную функцию типа F3. Для F5 используется синтаксис для объявления типа функции внутри типа функции.

typedef   F1   =   String   ->   Float  ; 
  typedef   F2   =   (  текст  : String  )   ->   Float  ; 

  typedef   F3   =   (  оценка  : Int,   текст: String  )   ->   Float  ; 
  typedef   F4   =   (  оценка  : Int,   текст: String  )   ->   F3  ; 
  typedef   F5   =   (  оценка  :Int,   текст:String  )   ->   ((  оценка  :Int,   текст:String  )   ->   Float  ); 

Анонимные функции [ править ]

В Haxe анонимные функции называются лямбда-выражениями и используют синтаксис function(argument-list) expression; .

var   f   =   функция  (  x  )   return   x  *  x  ; 
  ж  (  8  );    // 64 

 (  функция  (  x  ,  y  )   возвращает   x  +  y  )(  5  ,  6  );    // 11 

Абстрактные типы [ править ]

Относительно новым дополнением к системе типов Haxe является концепция, называемая абстрактными типами . В Haxe это относится к чему-то отличному от обычного абстрактного типа . Они используются для неявных преобразований между типами, позволяя повторно использовать существующие типы для определенных целей, например реализацию типов для единиц измерения. Это значительно снижает риск смешивания значений одного и того же базового типа, но с разным значением (например, мили и км).

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

абстрактный   километр  (  Float  )   { 
     общественная   функция   new  (  v  :  Float  )   this   =   v  ; 
  } 
 
 Abstract   Mile  (  Float  )   { 
     общественная   функция   new  (  v  :  Float  )   this   =   v  ; 
      @:to   общедоступная   встроенная   функция   toKilometer  ():  километра   возврат   (  новый   километр   (  this   /   0.62137  )); 
  } 
 
 Класс   Test   { 
   статический   вар   км  :  километр  ; 
    статическая   функция   main  () { 
     var   one100Miles   =   новая   миля  (  100  ); 
      км   =   один100 миль  ; 
 
      трасса  (  км  );    // 160.935 
   } 
 } 

Как показано в примере, для присвоения «km = one100Miles;» явное преобразование не требуется. поступать правильно.

Абстрактные типы полностью являются особенностью Haxe во время компиляции и вообще не существуют во время выполнения программы. Например, обе переменные используют абстрактные типы выше. Mile и Kilometer будет типа Float во время выполнения. [25]

Структурная типизация [ править ]

Во многих функциональных языках программирования структурная типизация важную роль играет . Haxe использует его при наличии анонимных типов, используя именительную типизацию , объектно-ориентированного программирования когда задействованы только именованные типы. Анонимные типы в Haxe аналогичны неявным интерфейсам языка Go в плане типизации. В отличие от интерфейсов Go, можно создать значение, используя анонимный тип.

класс   FooBar   { 
	 общественный   вар   foo  :  Int  ; 
	  общественная   var   панель  :  String  ; 

	  публичная   функция   new  ()   { 
		 foo   =   1  ; 
		  бар   =   "2"  ; 
	  } 

	 Функция   AnyFooBar  (  v  : {  foo  :  Int  ,   bar  :  String  }) 
		 трассировка  (  v  .  foo  ); 

	 статической   функции    тест  ()   { 
		 вар   fb   =   новый   FooBar  (); 
		  фб  .   AnyFooBar  (  ФБ  ); 
		  фб  .   AnyFooBar  ({  foo  :   123  ,   bar  :   "456"  }); 
	  } 
 } 

Внутренняя архитектура [ править ]

Компилятор [ править ]

Компилятор Haxe разделен на один интерфейс и несколько серверов. Интерфейсный интерфейс создает абстрактное синтаксическое дерево (AST) из исходного кода и выполняет проверку типов, расширение макросов и оптимизацию AST. Различные серверные части преобразуют обработанный AST в исходный код или генерируют байт-код , в зависимости от их цели.

Компилятор написан на OCaml . Его можно запускать в режиме сервера, чтобы обеспечить завершение кода для интегрированных сред разработки (IDE) и поддерживать кэш для дальнейшего ускорения компиляции. [26]

См. также [ править ]

Ссылки [ править ]

  1. ^ «Выпуск 4.3.4» . 4 марта 2024 г. Проверено 16 марта 2024 г.
  2. ^ «Лицензия открытого исходного кода Haxe» .
  3. ^ Введение в стандартную библиотеку Haxe , Haxe Docs
  4. ^ Целевые API-интерфейсы, Введение в стандартную библиотеку Haxe , Документы Haxe
  5. ^ Дусе, Ларс (24 июня 2014 г.). «Уважаемый Adobe: поддержите Haxe, сохраните свои инструменты» . Гамасутра .
  6. ^ «Интервью Хакса» . Я программа. 01 апреля 2009 г. стр. 1–6.
  7. ^ «Привет, Луа!» . Haxe.org .
  8. ^ "hxnodejs" .
  9. ^ Перейти обратно: а б «Цели компилятора» . Хаксе . Проверено 5 ноября 2021 г.
  10. ^ Список IDE, поддерживающих Haxe , Haxe Foundation
  11. ^ «Выпуск альфа-1» . хаксе . Фонд Хаксе. 14 ноября 2005 г. Получено 2 апреля 2022 г. - через GitHub .
  12. ^ Каннасс, Николя (17 ноября 2005 г.). «Хакс Альфа 1б» . haXe (список рассылки). Архивировано из оригинала 26 октября 2007 г.
  13. ^ «Объявление Николаса об изменении написания в официальном списке рассылки Haxe» .
  14. ^ «Сообщение в списке рассылки Haxe об именовании» . Архивировано из оригинала 28 марта 2007 г.
  15. ^ Компилятор MTASC , веб-сайт MTASC
  16. ^ «Eval — новый интерпретатор макросов Haxe» .
  17. ^ «Функции компилятора» .
  18. ^ «Макросы в Хаксе» .
  19. ^ Дьяченко, Вадим (05.12.2013). «О том, что «В Haxe невозможно создавать хорошие HTML5-игры» » . Желтый после жизни.
  20. ^ «Справочник по Haxe, подробно описывающий использование перечисления» . Архивировано из оригинала 11 мая 2012 г.
  21. ^ «haxe/Option.hx в стадии разработки · HaxeFoundation/haxe» . Гитхаб . 7 ноября 2021 г.
  22. ^ "haxe/Either.hx в стадии разработки · HaxeFoundation/haxe" . Гитхаб . 7 ноября 2021 г.
  23. ^ «Особенности языка» . Haxe — Кроссплатформенный набор инструментов . Фонд Хаксе . Проверено 30 апреля 2015 г.
  24. ^ "haxe/TestGADT.hx в стадии разработки · HaxeFoundation/haxe" . Гитхаб . 7 ноября 2021 г.
  25. ^ "Абстрактный" . Haxe — Кроссплатформенный набор инструментов . Проверено 24 апреля 2023 г.
  26. ^ Командная строка режима сервера: haxe --wait [host:]port

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 83DF55BF03DE6FE6FB88E6503D1635C3__1716849180
URL1:https://en.wikipedia.org/wiki/Haxe
Заголовок, (Title) документа по адресу, URL1:
Haxe - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)