stringtranslate.com

Хак (язык программирования)

Hackязык программирования для HipHop Virtual Machine (HHVM), созданный Meta (ранее Facebook) как диалект PHP . Реализация языка — бесплатное программное обеспечение с открытым исходным кодом , лицензированное по лицензии MIT . [2] [3] [4]

Hack позволяет использовать как динамическую, так и статическую типизацию . Этот тип систем типов называется постепенной типизацией и реализован также в других языках программирования, таких как ActionScript . [5] Система типов Hack позволяет указывать типы для аргументов функций , возвращаемых значений функций и свойств классов ; однако типы локальных переменных всегда выводятся и не могут быть указаны. [3] [6]

История

Hack был представлен 20 марта 2014 года. [7] До анонса нового языка Facebook уже внедрил код и протестировал его на большей части своего веб-сайта.

Функции

Hack разработан для бесшовного взаимодействия с PHP, который является широко используемым языком сценариев с открытым исходным кодом , который ориентирован на веб-разработку и может быть встроен в HTML . Большинство допустимых скриптов PHP также допустимы в Hack; однако многие менее часто используемые функции PHP и языковые конструкции не поддерживаются в Hack. [8]

Hack расширяет подсказки типов, доступные в PHP 5, посредством введения статической типизации, добавляя новые подсказки типов (например, для скалярных типов, таких как целое число или строка), а также расширяя использование подсказок типов (например, для свойств класса или возвращаемых значений функций). Однако типы локальных переменных не могут быть указаны. [6] Поскольку Hack использует постепенную систему типизации, в режиме по умолчанию аннотации типов не являются обязательными даже в тех местах, где они не могут быть выведены; система типов будет считать, что автор прав, и допустит код. [9] Однако доступен «строгий» режим, который требует таких аннотаций и, таким образом, обеспечивает полностью надежный код. [10]

Синтаксис и семантика

Базовая структура файла скрипта Hack похожа на скрипт PHP с несколькими изменениями. Файл Hack не включает <?phpоткрывающий тег разметки и запрещает использование деклараций верхнего уровня. [11] Код должен быть помещен в функцию точки входа. Они автоматически выполняются, если находятся в файле верхнего уровня, но не если файл включен через include, require, или автозагрузчик. Как и другие функции в Hack, имена функций должны быть уникальными в пределах проекта, т. е. проекты с несколькими точками входа не могут быть вызваны одновременно main:

<< __EntryPoint >> function  main () :  void  {  echo  'Привет, мир!' ; }

Приведенный выше скрипт, аналогичный PHP, будет выполнен, и в браузер будет отправлен следующий вывод:

Привет, мир!

В отличие от PHP, код Hack и HTML не смешивается; необходимо использовать либо XHP , либо другой шаблонизатор . [8]

Функции

Как и PHP 7, Hack позволяет указывать типы для аргументов функций и возвращаемых значений функций. Таким образом, функции в Hack аннотируются типами, как показано ниже:

// Хак-функции аннотируются типами. function  negate ( bool  $x ) :  bool  {  return  ! $x ; }

Смотрите также

Ссылки

  1. ^ О'Салливан, Брайан (28.03.2014). «Where Credit Belongs for Hack». Архивировано из оригинала 01.03.2021 . Получено 06.02.2019 .
  2. ^ ab "facebook/hhvm: hhvm, hphp, hack, License". GitHub.com . Meta Platforms . 2018-04-11. Архивировано из оригинала 2019-01-07 . Получено 2019-02-06 .
  3. ^ ab Lockhart, Josh (2014-04-03). "Взлом Facebook, HHVM и будущее PHP". O'Reilly Media . Архивировано из оригинала 2019-01-07 . Получено 2019-02-06 .
  4. ^ Кейд Метц (2014-03-20). «Facebook представляет „Hack“, язык программирования будущего». Wired . Архивировано из оригинала 2014-03-28 . Получено 2019-02-06 .
  5. ^ Асим Растоги; Авик Чаудхури; Бэзил Хосмер (январь 2012 г.). «Внутри и снаружи постепенного вывода типов» (PDF) . Ассоциация вычислительной техники (ACM). Архивировано (PDF) из оригинала 2017-08-12 . Получено 2019-02-06 .
  6. ^ ab "Hack Manual: Hack and HHVM – Type Annotations". docs.hhvm.com . Архивировано из оригинала 2018-08-02 . Получено 2019-02-06 .
  7. ^ Верлаге, Жюльен; Менграджани, Ганди (2014-03-20). "Hack: новый язык программирования для HHVM". Facebook . Архивировано из оригинала 2019-02-09 . Получено 2019-02-06 .
  8. ^ ab "Несоответствия: Введение". docs.hhvm.com . Архивировано из оригинала 2019-04-04 . Получено 2019-04-04 .
  9. ^ "Hack Manual: Partial Mode". docs.hhvm.com . Архивировано из оригинала 2018-11-19 . Получено 2019-02-06 .
  10. ^ "Hack Manual: Strict Mode". docs.hhvm.com . Архивировано из оригинала 2018-11-19 . Получено 2019-02-06 .
  11. ^ Эммотт, Фред (2019-02-11). "HHVM 4.0.0". hhvm.com . Архивировано из оригинала 2021-05-14 . Получено 2019-05-02 .

Внешние ссылки