Разработано | Жюльен Верлаге, Алок Менграджани, Дрю Пароски и другие [1] |
---|---|
Разработчик | |
Впервые появился | 2014 г. |
Печатная дисциплина | Статический , динамичный , слабый , постепенный |
Операционные системы | Кроссплатформенность |
Лицензия | Лицензия MIT [2] |
Интернет сайт | hacklang |
Под влиянием | |
PHP , OCaml , Java , C # , Scala , Haskell |
Hack - это язык программирования для виртуальной машины HipHop (HHVM), созданный Facebook как диалект PHP . Реализация языка имеет открытый исходный код и находится под лицензией MIT License . [2] [3] [4]
Hack позволяет программистам использовать как динамическую, так и статическую типизацию . Такая система типов называется постепенной типизацией , которая также реализована в других языках программирования, таких как ActionScript . [5] система типа Hack позволяет типы должны быть указаны для функциональных аргументов , функция возвращаемых значений и свойств класса ; однако типы локальных переменных всегда предполагаются и не могут быть указаны. [3] [6]
История [ править ]
Хакер был представлен 20 марта 2014 года. [7] Перед объявлением нового языка программирования Facebook уже реализовал код и провел «боевые испытания» его на большей части своего веб-сайта.
Особенности [ править ]
Hack разработан для беспрепятственного взаимодействия с PHP, широко используемым языком сценариев с открытым исходным кодом , который ориентирован на веб-разработку и может быть встроен в HTML . Большинство допустимых сценариев PHP также действительны в Hack; однако многие менее часто используемые функции PHP и языковые конструкции не поддерживаются в Hack. [8]
Hack расширяет подсказки типов, доступные в PHP 5, за счет введения статической типизации, добавляя новые подсказки типа (например, для скалярных типов, таких как целое число или строка), а также за счет расширения использования подсказок типов (например, для свойства класса или возвращаемые значения функции). Однако нельзя указать типы локальных переменных. [6] Так как Hack использует систему постепенного набора текста, в режиме по умолчанию аннотации типов не являются обязательными даже в тех местах, где их невозможно вывести; система типов предполагает, что автор прав, и допускает код. [9] Однако доступен «строгий» режим, который требует таких аннотаций и, таким образом, обеспечивает полностью звуковой код. [10]
Синтаксис и семантика [ править ]
Основная файловая структура сценария взлома аналогична сценарию PHP с некоторыми изменениями. Файл взлома не включает <?php
открывающий тег разметки и запрещает использование объявлений верхнего уровня. [11] Код должен быть помещен в функцию точки входа. Они автоматически выполняются , если они находятся в файле верхнего уровня, но если файл включается с помощью include
, require
или автозагрузчика. Как и другие функции в Hack, имена функций должны быть уникальными в рамках проекта - т.е. проекты с несколькими точками входа не могут вызывать оба main
:
<< __EntryPoint >> function main () : void { echo 'Hello, World!' ; }
Вышеупомянутый сценарий, аналогичный PHP, будет выполнен, и в браузер будет отправлен следующий вывод:
Привет, мир!
В отличие от PHP, код взлома и HTML не смешиваются; необходимо использовать XHP или другой шаблонизатор . [8]
Функции [ править ]
Как и PHP 7, Hack позволяет указывать типы для аргументов функции и возвращаемых значений функции. Таким образом, функции в Hack аннотируются следующими типами:
// Функции взлома аннотируются типами. функция negate ( bool $ x ) : bool { return ! $ x ; }
См. Также [ править ]
- Виртуальная машина Parrot
- Фалангер
Ссылки [ править ]
- ↑ Брайан О'Салливан (28 марта 2014 г.). «Где кредит для взлома» . Проверено 6 февраля 2019 .
- ^ a b "facebook / hhvm: hhvm / hphp / hack / LICENSE" . github.com . Facebook . 2018-04-11 . Проверено 6 февраля 2019 .
- ^ a b Джош Локхарт (2014-04-03). «Взлом Facebook, HHVM и будущее PHP» . O'Reilly Media . Проверено 6 февраля 2019 .
- ^ Кейд Мец (2014-03-20). «Facebook представляет« Hack », язык программирования будущего» . Проводной . Проверено 6 февраля 2019 .
- ^ Асим Растоги; Авик Чаудхури; Бэзил Хосмер (январь 2012 г.). «Плюсы и минусы постепенного вывода типов» (PDF) . Ассоциация вычислительной техники (ACM) . Проверено 6 февраля 2019 .
- ^ a b «Руководство по взлому: взлом и HHVM - аннотации типов» . docs.hhvm.com . Проверено 6 февраля 2019 .
- ^ Верлаге, Жюльен; Менграджани, Алок (20 марта 2014 г.). «Хак: новый язык программирования для HHVM» . Facebook . Проверено 6 февраля 2019 .
- ^ a b «Несоответствия: Введение» . docs.hhvm.com . Проверено 4 апреля 2019 .
- ^ «Руководство по взлому: частичный режим» . docs.hhvm.com . Проверено 6 февраля 2019 .
- ^ «Руководство по взлому: строгий режим» . docs.hhvm.com . Проверено 6 февраля 2019 .
- ^ Эммотт, Фред (2019-02-11). «ХХВМ 4.0.0» . hhvm.com . Проверено 2 мая 2019 .
Внешние ссылки [ править ]
- Официальный веб-сайт и языковая справка
- Facebook Q&A: Hack приносит статическую типизацию в мир PHP
- Учебник по преобразованию существующего проекта PHP в Hack
- KPHP: исполняемая формальная семантика для PHP