Хак (язык программирования)
![]() | |
Разработано | Жюльен Верлаге, Алок Менграджани, Дрю Пароски и другие. [1] |
---|---|
Разработчик | Мета-платформы |
Впервые появился | 2014 |
Стабильная версия | |
Дисциплина набора текста | Статический , динамичный , слабый , постепенный. |
ТЫ | Кросс-платформенный |
Лицензия | МОЯ лицензия [2] |
Веб-сайт | хакланг |
Под влиянием | |
PHP , OCaml , Java , C# , Scala , Haskell |
Hack — это язык программирования для виртуальной машины HipHop (HHVM), созданный компанией Meta (ранее Facebook) как диалект PHP . Реализация языка имеет открытый исходный код , распространяется по лицензии MIT License . [2] [3] [4]
Хак позволяет программистам использовать как динамическую, так и статическую типизацию . Такая система типов называется постепенной типизацией , которая также реализована в других языках программирования, таких как ActionScript . [5] Система типов Hack позволяет указывать типы для функции аргументов функции , возвращаемых значений и свойств класса ; однако типы локальных переменных всегда выводятся и не могут быть указаны. [3] [6]
История
[ редактировать ]Хак был представлен 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 'Hello, World!';
}
Приведенный выше скрипт, аналогичный PHP, будет выполнен, и в браузер будет отправлен следующий вывод:
Hello, World!
В отличие от PHP, код Hack и HTML не смешиваются; либо XHP , либо другой механизм шаблонов . необходимо использовать [8]
Функции
[ редактировать ]Как и PHP 7, Hack позволяет указывать типы аргументов функций и возвращаемых значений функций. Таким образом, функции в Hack помечаются типами, подобными следующим:
// Hack functions are annotated with types.
function negate(bool $x): bool {
return !$x;
}
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Брайан О'Салливан (28 марта 2014 г.). «Где заслуга взлома» . Архивировано из оригинала 01 марта 2021 г. Проверено 06 февраля 2019 г.
- ^ Jump up to: а б «facebook/hhvm: hhvm/hphp/hack/ЛИЦЕНЗИЯ» . github.com . Метаплатформы . 11 апреля 2018 г. Архивировано из оригинала 07 января 2019 г. Проверено 06 февраля 2019 г.
- ^ Jump up to: а б Джош Локхарт (3 апреля 2014 г.). «Взлом Facebook, HHVM и будущее PHP» . О'Рейли Медиа . Архивировано из оригинала 07 января 2019 г. Проверено 06 февраля 2019 г.
- ^ Кейд Мец (20 марта 2014 г.). «Facebook представляет «Hack» — язык программирования будущего» . Проводной . Архивировано из оригинала 28 марта 2014 г. Проверено 06 февраля 2019 г.
- ^ Асим Растоги; Авик Чаудхури; Бэзил Хосмер (январь 2012 г.). «Все тонкости постепенного вывода типов» (PDF) . Ассоциация вычислительной техники (ACM). Архивировано (PDF) из оригинала 12 августа 2017 г. Проверено 06 февраля 2019 г.
- ^ Jump up to: а б «Руководство по взлому: Взлом и HHVM — аннотации типов» . docs.hhvm.com . Архивировано из оригинала 02 августа 2018 г. Проверено 06 февраля 2019 г.
- ^ Верлаге, Жюльен; Менграджани, ГАНДИ (20 марта 2014 г.). «Хак: новый язык программирования для HHVM» . Фейсбук . Архивировано из оригинала 09 февраля 2019 г. Проверено 06 февраля 2019 г.
- ^ Jump up to: а б «Несоответствия: Введение» . docs.hhvm.com . Архивировано из оригинала 4 апреля 2019 г. Проверено 4 апреля 2019 г.
- ^ «Руководство по взлому: частичный режим» . docs.hhvm.com . Архивировано из оригинала 19 ноября 2018 г. Проверено 06 февраля 2019 г.
- ^ «Руководство по взлому: строгий режим» . docs.hhvm.com . Архивировано из оригинала 19 ноября 2018 г. Проверено 06 февраля 2019 г.
- ^ Эммотт, Фред (11 февраля 2019 г.). «ХХВМ 4.0.0» . hhvm.com . Архивировано из оригинала 14 мая 2021 г. Проверено 2 мая 2019 г.