Jump to content

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

Взломать
Логотип Hack: белые строчные буквы «hack» на черном фоне и стилизованные треугольные геометрические фигуры слева.
Разработано Жюльен Верлаге, Алок Менграджани, Дрю Пароски и другие. [1]
Разработчик Мета-платформы
Впервые появился 2014
Стабильная версия
4.172  Отредактируйте это в Викиданных / 2 ноября 2022 г .; 21 месяц назад ( 2 ноября 2022 г. )
Дисциплина набора текста Статический , динамичный , слабый , постепенный.
ТЫ Кросс-платформенный
Лицензия МОЯ лицензия [2]
Веб-сайт хакланг .org
Под влиянием
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;
}

См. также

[ редактировать ]
  1. ^ Брайан О'Салливан (28 марта 2014 г.). «Где заслуга взлома» . Архивировано из оригинала 01 марта 2021 г. Проверено 06 февраля 2019 г.
  2. ^ Jump up to: а б «facebook/hhvm: hhvm/hphp/hack/ЛИЦЕНЗИЯ» . github.com . Метаплатформы . 11 апреля 2018 г. Архивировано из оригинала 07 января 2019 г. Проверено 06 февраля 2019 г.
  3. ^ Jump up to: а б Джош Локхарт (3 апреля 2014 г.). «Взлом Facebook, HHVM и будущее PHP» . О'Рейли Медиа . Архивировано из оригинала 07 января 2019 г. Проверено 06 февраля 2019 г.
  4. ^ Кейд Мец (20 марта 2014 г.). «Facebook представляет «Hack» — язык программирования будущего» . Проводной . Архивировано из оригинала 28 марта 2014 г. Проверено 06 февраля 2019 г.
  5. ^ Асим Растоги; Авик Чаудхури; Бэзил Хосмер (январь 2012 г.). «Все тонкости постепенного вывода типов» (PDF) . Ассоциация вычислительной техники (ACM). Архивировано (PDF) из оригинала 12 августа 2017 г. Проверено 06 февраля 2019 г.
  6. ^ Jump up to: а б «Руководство по взлому: Взлом и HHVM — аннотации типов» . docs.hhvm.com . Архивировано из оригинала 02 августа 2018 г. Проверено 06 февраля 2019 г.
  7. ^ Верлаге, Жюльен; Менграджани, ГАНДИ (20 марта 2014 г.). «Хак: новый язык программирования для HHVM» . Фейсбук . Архивировано из оригинала 09 февраля 2019 г. Проверено 06 февраля 2019 г.
  8. ^ Jump up to: а б «Несоответствия: Введение» . docs.hhvm.com . Архивировано из оригинала 4 апреля 2019 г. Проверено 4 апреля 2019 г.
  9. ^ «Руководство по взлому: частичный режим» . docs.hhvm.com . Архивировано из оригинала 19 ноября 2018 г. Проверено 06 февраля 2019 г.
  10. ^ «Руководство по взлому: строгий режим» . docs.hhvm.com . Архивировано из оригинала 19 ноября 2018 г. Проверено 06 февраля 2019 г.
  11. ^ Эммотт, Фред (11 февраля 2019 г.). «ХХВМ 4.0.0» . hhvm.com . Архивировано из оригинала 14 мая 2021 г. Проверено 2 мая 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 39c30ddbcb119044e35bf382a82daf8e__1722031320
URL1:https://arc.ask3.ru/arc/aa/39/8e/39c30ddbcb119044e35bf382a82daf8e.html
Заголовок, (Title) документа по адресу, URL1:
Hack (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)