The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Facebook представил Hack, вариант языка PHP со статической т..."
Отправлено opennews, 21-Мрт-14 10:20 
Facebook представил (https://code.facebook.com/posts/264544830379293/hack-a-new-p.../) новый язык программирования Hack (http://hacklang.org/), основанный на синтаксисе языка PHP и предназначенный для выполнения  с использованием виртуальной машины HHVM (http://hhvm.com/) (HipHop Virtual Machine). Приложения на языке Hack могут бесшовно взаимодействовать и сочетаться с существующим кодом на языке PHP, так как окружение HHVM поддерживает выполнение и немодифицированных PHP-скриптов.  Код Hack распространяется (https://github.com/facebook/hhvm/tree/master/hphp/hack) под свободной лицензией PHP.

Отличия Hack от PHP сводятся (http://docs.hhvm.com/manual/en/hacklangref.php) к поддержке статической типизации и ряда расширенных возможностей, заимствованных из других языков программирования. Например, в Hack поддерживаются такие возможности, как обобщения (generics (http://docs.hhvm.com/manual/en/hack.generics.php) по образу C# и Java),  null-значения (http://docs.hhvm.com/manual/en/hack.nullable.php), коллекции (http://docs.hhvm.com/manual/en/hack.collections.php) (типы Vector, Map, Set, Pair), Lambda-выражения (http://docs.hhvm.com/manual/en/hack.lambda.php) (аналог PHP closures), механизмы асинхронного программирования (категории функций async и await (http://docs.hhvm.com/manual/en/hack.async.php)), составные shape-структуры (http://docs.hhvm.com/manual/en/hack.shapes.php), средства для переопределения имён типов (type aliasing (http://docs.hhvm.com/manual/en/hack.typealiasing.php)). Указание типов осуществляется через систему аннотаций (http://docs.hhvm.com/manual/en/hack.annotations.php), например указывается "function increment(int $x): int {" вместо "function increment($x) {".


Из возможностей PHP, поддержка которых прекращена (http://hacklang.org/manual/en/hack.unsupported.php) в Hack, можно отметить операторы goto, break N, continue N,  global, "if:...endif", AND, OR, XOR (нужно использовать "&, |, ^"), ссылки ("function foo(&$x)"), символ приглушения вывода "@", использование "if/then/else without" без обрамления блока символами "{}", elseif (правильно "else if"), средства динамического вызова (eval, $$x и т.п.), переменные в переменных ($a = "hello"; $$a = "world"; echo "$a + $hello"), задание имени функции через переменную  ($func = 'myFunc'; $func(1,2);), объекты ArrayAccess. Отдельно можно подчеркнуть, что имена функций в Hack вызываются с учётом регистра символов, в то время как в PHP регистр не учитывался.

Hack реализован на уровне виртуальной машины HHVM, поддерживающей JIT-компиляцию. HHVP в полной мере поддерживает обычный PHP 5, но при выполнении программ на языке Hack обеспечивается существенно более высокая производительность, так как благодаря наличию информации о типах в процессе JIT-компиляции удаётся сгенерировать более оптимальный и компактный машинный год. Бесшовная поддержка PHP в  HHVM существенно упрощает портирование на язык Hack - проект может переводиться на статические типы поэтапно, смешивая код и  сочетая файлы ".php" и ".hh" (в одном файле может смешиваться статическая и динамическая типизация).


Кроме того, доступны (http://hhvm.com/manual/en/install.hack.conversion.php) инструменты для автоматической трансляции PHP-кода на язык Hack. Предоставляются (http://hacklang.org/manual/en/install.hack.bootstrapping.php) средства мгновенной проверки типов через использование специального локального сервера (hh_server), отслеживающего изменения в файловой системе и сообщающего данные о возможных ошибках. Подготовлены плагины для интеграции поддержки Hack в Vim и Emacs.


URL: https://code.facebook.com/posts/264544830379293/hack-a-new-p.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=39368

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру