The OpenNET Project / Index page

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

Facebook представил Hack, вариант языка PHP со статической типизацией

21.03.2014 10:05

Facebook представил новый язык программирования Hack, основанный на синтаксисе языка PHP и предназначенный для выполнения с использованием виртуальной машины HHVM (HipHop Virtual Machine). Приложения на языке Hack могут бесшовно взаимодействовать и сочетаться с существующим кодом на языке PHP, так как окружение HHVM поддерживает выполнение и немодифицированных PHP-скриптов. Код Hack распространяется под свободной лицензией PHP. Реализация языка уже опробована в промышленной эксплуатации, в частности, Facebook уже перешёл на использование Hack и перевёл на данный язык практически весь код своих PHP-проектов.

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

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

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

Кроме того, доступны инструменты для автоматической трансляции PHP-кода на язык Hack. Предоставляются средства мгновенной проверки типов через использование специального локального сервера (hh_server), отслеживающего изменения в файловой системе и сообщающего данные о возможных ошибках. Использование серверного процесса позволяет сократить время на периодическую верификацию кода, исключая необходимость ожидания завершения стадии анализа кода. Вместо этого код проверяется по мере изменения, а результат выводится почти мгновенно после запуска проверки (hh_client), не приостанавливая процесс разработки. Плагины для интеграции поддержки Hack, в том числе учитывающие наличие сервера верификации, подготовлены для Vim и Emacs.

  1. Главная ссылка к новости (https://code.facebook.com/post...)
  2. OpenNews: Facebook анонсировал виртуальную машину HipHop и JIT-компилятор для языка PHP
  3. OpenNews: Компания Facebook открыла код высокопроизводительного PHP транслятора
  4. OpenNews: PHP-транслятор HipHop позволил Facebook использовать в разы меньше оборудования
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/39368-hhvm
Ключевые слова: hhvm, php, hack, facebook
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (120) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:20, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    По-моему теперь выбор языка для будущих проектов очевиден.
     
     
  • 2.3, A.Stahl (ok), 10:22, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Си? Джава? Питон?
    Нет, не очевиден...
     
     
  • 3.79, Аноним (79), 18:27, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вообще-то nodejs.
     
     
  • 4.80, еще один аноним (?), 19:58, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    nodejs уже язык, а не платформа?
     
  • 4.105, EuPhobos (ok), 10:18, 24/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Накидал тесты по циклам в секунду
    https://github.com/EuPhobos/utils/tree/master/tps

    nodejs уступает php5-cli
    а php5-cli уступает go
    а go уступает java

     
     
  • 5.106, AlexAT (ok), 11:08, 24/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Отличный пример теста с отрицательной ценностью. Тестирует сферического коня в вакууме xD
     
     
  • 6.107, EuPhobos (ok), 11:34, 24/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Видать я заражён форониксом
     
  • 3.85, Admins (?), 23:09, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Конечно же Си.
     
  • 2.9, arisu (ok), 10:41, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > По-моему теперь выбор языка для будущих проектов очевиден.

    конечно: DLang.

     
     
  • 3.12, NikolayV81 (ok), 10:56, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но мода как всегда выберет другой путь :(
     
     
  • 4.13, arisu (ok), 11:01, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Но мода как всегда выберет другой путь :(

    ну и фиг с ней. D зато вон живёт, развивается, готовится в gcc 4.9 пойти. vibe.d, опять же. а моды приходят и уходят.

     
     
  • 5.57, йцу (?), 15:42, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    вот только vibe.d под gdc пока не собирается (к сожалению)
     
     
  • 6.59, arisu (ok), 15:46, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > вот только vibe.d под gdc пока не собирается (к сожалению)

    а не надо дубом собирать, дуб унылый. и gdc надо брать из гита, там уже 2064, а для вайба, насколько помню, минимальные требования — 2063.

    впрочем, я на dmd вертел, надо на свежем gdc попробовать.

     
     
  • 7.103, Crazy Alex (ok), 00:36, 24/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А чем тебе дуб не угодил?
     
     
  • 8.104, arisu (ok), 00:55, 24/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    yet another build system оно-то понятно, что это такое же развлечение, как тетр... текст свёрнут, показать
     
  • 6.77, arisu (ok), 18:20, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > вот только vibe.d под gdc пока не собирается (к сожалению)

    кстати, категорически протестую. только что таки уговорил дуб запуститься, собрал в виде примера echoserver: работает. собрал http_server: работает. естественно, собирал при помощи gdc.

    так что смело можно пробовать. срез gdc несколькодневной давности, для gcc 4.8.

    p.s. вайб тоже из git'а.

     
  • 3.28, Аноним (-), 12:21, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > конечно: DLang.

    Для вебни то? А по-моему, заменить пых на вот это было бы довольно разумно?

     
     
  • 4.33, arisu (ok), 12:49, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> конечно: DLang.
    > Для вебни то? А по-моему, заменить пых на вот это было бы
    > довольно разумно?

    а по-моему, vibe.d намного круче сабжевой фиготени. а когда там hotswap полностью заработает — и ещё «намножее».

     
     
  • 5.91, Аноним (-), 15:29, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > а по-моему, vibe.d намного круче сабжевой фиготени.

    А это что? URL?

     
     
  • 6.97, arisu (ok), 20:35, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> а по-моему, vibe.d намного круче сабжевой фиготени.
    > А это что? URL?

    научу пользоваться поисковиками. дорого.

     
  • 3.50, MPEG LA (ok), 14:00, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    в D уже можно вместо сегфолта просто поймать исключение на этом:

    class A { public int b; }

    void main()
    {
      A a = null;
      a.b = 0;
    }

    ?

     
     
  • 4.51, arisu (ok), 14:10, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > в D уже можно вместо сегфолта просто поймать исключение на этом:

    а зачем? это однозначно фатальная ошибка, и она *должна* приводить к сегфолту.

     
     
  • 5.63, MPEG LA (ok), 17:15, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    для того, чтобы фатальная ошибка влияла только на текущий поток и его стек, а не на всё приложение.
     
     
  • 6.65, arisu (ok), 17:21, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > для того, чтобы фатальная ошибка влияла только на текущий поток и его
    > стек, а не на всё приложение.

    это фатальная ошибка всего приложения, и падать должно всё приложение. изволь не писать говнокода.

     
     
  • 7.66, MPEG LA (ok), 17:35, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > это фатальная ошибка всего приложения, и падать должно всё приложение.

    не согласен. fault-tolerancy должен присутствовать.

    >изволь не писать говнокода.

    какое отношение имеет говнокод к возможности ловить и обрабатывать ошибки?


     
     
  • 8.67, arisu (ok), 17:42, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    if a is null throw new Exception too bad i m dead assert enforce in ... текст свёрнут, показать
     
     
  • 9.68, MPEG LA (ok), 17:48, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    assert enforce in отлично вот хотелось бы это самое на уровне языка, ч... текст свёрнут, показать
     
     
  • 10.70, arisu (ok), 17:55, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это и есть 171 на уровне языка 187 не ленимся, прописываем контракты это п... текст свёрнут, показать
     
     
  • 11.71, MPEG LA (ok), 18:03, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    мы плюсисты ассертим все что нужно и как нужно, да и смарт поинтеры в ходу а во... текст свёрнут, показать
     
     
  • 12.74, arisu (ok), 18:12, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    очень хорошо вписывается при помощи простых денежных стимулов один сегфолт 82... текст свёрнут, показать
     
     
  • 13.109, volax (?), 14:37, 25/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ээээ А для чего они предназначены ... текст свёрнут, показать
     
     
  • 14.110, arisu (ok), 15:23, 25/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    для разруливания ошибочных ситуаций ошибочная ситуация 8212 это не баг нет ... текст свёрнут, показать
     
     
  • 15.111, Аноним (-), 15:49, 25/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нет файлв нв диске тоже проверяется, и т д Тут обращение к недействительному у... текст свёрнут, показать
     
     
  • 16.112, arisu (ok), 16:08, 25/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вроде бы и не пятница, а бухие уже тут 8230 ... текст свёрнут, показать
     
  • 15.113, volax (?), 23:48, 25/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Бред Нафиг вообще тогда exception-ы, если можно проверять код возврата Для ум... текст свёрнут, показать
     
     
  • 16.114, arisu (ok), 04:44, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • –3 +/
    спасибо, мнение говнокодеров очень важно для меня ... текст свёрнут, показать
     
     
  • 17.115, volax (?), 15:52, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот не люблю я опеннетовских аналитегов, упёртые дураки ещё хуже стандартных ... текст свёрнут, показать
     
     
  • 18.116, ACCA (ok), 17:05, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Девочки, не ссорьтесь Есть два принципиально разных подхода к обработке исключи... текст свёрнут, показать
     
  • 18.117, arisu (ok), 17:07, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    ну не я же виноват, что ты дурак ... текст свёрнут, показать
     
  • 13.118, ACCA (ok), 17:16, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Походу, ты проект в одно рыло собрался писать Как может, так и пишет И это тво... текст свёрнут, показать
     
     
  • 14.119, arisu (ok), 17:22, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    походу, в одно рыло будет лучше, чем разгребать потом говнокод сроки релиза те ... текст свёрнут, показать
     
  • 11.72, MPEG LA (ok), 18:05, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну и разговор не о том, что контракты это круто некруто, а об элементарном nullr... текст свёрнут, показать
     

  • 1.2, A.Stahl (ok), 10:21, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >средства ... проверки типов через использование ... сервера, отслеживающего изменения в файловой системе

    Это как?

     
     
  • 2.6, AlexAT (ok), 10:33, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    FAM/Gamin?
     
     
  • 3.8, A.Stahl (ok), 10:39, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    И как это поможет проверке типов?
     
     
  • 4.36, Аноним (-), 13:01, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сервер увидел, что погромист поменял тип переменной - сразу посмотрел, где код от этого сломается, и выдал предупреждение.
     
  • 2.43, oxyum (ok), 13:08, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну как-как, скорее всего простейший демон, который через какой-нить inotify ловит изменившиеся файлы и запускает на них проверку, а результаты сливает через IPC или сеть в клиента, который уже цепляется к IDE и гадит туда списком ошибок.

    У Scala примерно тоже самое делается через SBT.

     
  • 2.86, piteri (ok), 23:16, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Они там специальную тулзу написали watchman, в лине работает через inotify. Ловит изменения в указанном каталоге. Юзаю её для мелкой автоматизации, весьма удобно.
     

  • 1.4, Аноним (-), 10:23, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Может я что-то в этой жизни пропустил? В PHP из bash перекочевала структура "if ... endif"? )))
    Если даже они убрали родной PHP'шный "if() {}", то кому нужен этот язык без if'ов...
     
     
  • 2.5, Аноним (-), 10:26, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибся, endif это альтернативный синтаксис if ...
     
  • 2.7, Аноним (-), 10:37, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    if ():

    endif;

     

  • 1.10, Аноним (-), 10:45, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну зачем, если есть java, нужна статика выберай
     
     
  • 2.25, Аноним (-), 11:56, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не нужно закрытое нутро runtime жабы.
     
     
  • 3.29, VoDA (ok), 12:26, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    google OpenJDK - все нутро открыто.

    закрыты только плагины, которые не являются обязательной частью.

     
     
  • 4.76, некто1120 (?), 18:18, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > google OpenJDK - все нутро открыто.

    продемонстрируйте пожалуйста. есть система. на системе компиляторы/интерпретаторы всех языков кроме явы. как мне получить яву, не ставя бинарь?

     
     
  • 5.78, arisu (ok), 18:25, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    есть система. на системе компиляторы/интерпретаторы всех языков кроме cи. как мне получить си, не ставя бинарь?
     
     
  • 6.90, Canis Dirus Leidy (?), 15:11, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > как мне получить си, не ставя бинарь?

    (trollface.png) http://ru.wikipedia.org/wiki/Раскрутка_компилятора

     
  • 6.92, Аноним (-), 15:32, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > как мне получить си, не ставя бинарь?

    Ты прикинь, а первые компьютеры программировали не имея компиляторов :).

     
     
  • 7.98, arisu (ok), 20:38, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    молодцы, чо. что ж вы предыдущему вопрошающему это не рассказали?
     
  • 2.124, a3k (?), 12:14, 12/02/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что Facebook может себе позволить.
     

  • 1.11, Аноним (-), 10:47, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    пхп становится самым настоящим комбаином. Нужна статика есть java,D,Go. Нужна динамика есть Python, Ruby.
     
     
  • 2.58, йцу (?), 15:43, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а если нужно всё вместе - PHP :D
     
     
  • 3.87, piteri (ok), 23:19, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > а если нужно всё вместе - PHP :D

    а если нужно всё вместе - перепишите пхп, напишите свою вм для переписанного пхп и т.д.

     

  • 1.14, rd (?), 11:07, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    По-моему название языка неподходящее. Гуглить по нему материалы будет проблематично.
     
     
  • 2.15, Аноним (-), 11:08, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не хуже, чем у Go.
     
  • 2.21, wd (?), 11:38, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    скорее будет наоборот, кинешься искать фильм "хакеры" - нет, вот на тебе маны по пхп

    оно и сейчас - сунешься за маном по сяшной функе в гугл (ну например когда обычных манов под рукой нет), ан нифига, 3 мана по пхп и 7 новостей, что в этой функе в пхп критическая уязвимость

     
     
  • 3.23, NikolayV81 (ok), 11:41, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > скорее будет наоборот, кинешься искать фильм "хакеры" - нет, вот на тебе маны
    > по пхп
    > оно и сейчас - сунешься за маном по сяшной функе в гугл
    > (ну например когда обычных манов под рукой нет), ан нифига, 3
    > мана по пхп и 7 новостей, что в этой функе в
    > пхп критическая уязвимость

    C oracl-ом ещё веселее, ссылает на docs.oracle но там справка по mysql, при этом особо и в глаза сразу не бросается.

     

  • 1.16, redwolf (ok), 11:10, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Когда я вижу запись &$x, у меня что-то внутри подпрыгиваеет.
     
     
  • 2.100, pavlinux (ok), 02:09, 23/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    &$x[i->j]:!x?y

     
  • 2.120, ACCA (ok), 17:26, 26/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда я вижу запись &$x, у меня что-то внутри подпрыгиваеет.

    "Уже и в роботов PHP напихали" (с)

     

  • 1.18, бедный буратино (ok), 11:28, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    круто
     
  • 1.19, jOKer (ok), 11:35, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Без условно, медведя можно научить кататься на велосипеде. Но вот будет ли от этого медведю удовольствие и польза?
     
     
  • 2.20, NikolayV81 (ok), 11:36, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Без условно, медведя можно научить кататься на велосипеде. Но вот будет ли
    > от этого медведю удовольствие и польза?

    Конечно, в цирке за это кормят, не будет кататься будет меньше еды...

     
  • 2.30, Аноним (-), 12:34, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Без условно

    Значение знаешь?

     
     
  • 3.38, Аноним (-), 13:03, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    >> Без условно
    > Значение знаешь?

    Не, курить!

     
  • 3.39, Аноним (-), 13:04, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Без условно!
     

  • 1.22, vn971 (ok), 11:39, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если кто-то будет теперь захваливать PHP -- я знаю какую ссылку ему кидать.)
     
     
  • 2.35, бедный буратино (ok), 12:53, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Если кто-то будет теперь захваливать PHP -- я знаю какую ссылку ему
    > кидать.)

    что значит "захваливать", и как это выглядит?

     
     
  • 3.37, Аноним (-), 13:02, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > что значит "захваливать", и как это выглядит?

    Это примерно то, что ты делаешь с питоном.

     
     
  • 4.45, бедный буратино (ok), 13:15, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а что я делаю с питоном?

    и вообще, это не я! оно само!

     
     
  • 5.93, Аноним (-), 15:34, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > и вообще, это не я! оно само!

    Вот, лучший пруф что у питонистов рантайм умнее программиста.

     

  • 1.24, некто (ok), 11:55, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как расширение это может и хорошо, но в целом это мало кому нужное замусоривание языка.
     
     
  • 2.34, бедный буратино (ok), 12:52, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Это решает (не язык даже, а весь стек) многие детские проблемы php, но при этом синтаксически с ним совместим. Те, кто при словах python и ruby начинают плакать и звать маму, смогут загрузить этот nethack, и постепенно привыкать к хорошему.
     
     
  • 3.40, некто (ok), 13:07, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Если это не будет выходить за пределы расширения, то терпимо. Но все равно есть опасность выпустить джина из бутылки, особенно когда пойдет по сети прикладной код и/или придется публиковать API.

    Возникает другой вопрос: если фб не может себе позволить разработку языка, а ограничивается лишь хаками, то это несколько странно.

    Проблемы тормозов вполне решаемы.

    Ничего плохого в строгой проверке типов нет, но это не решение.

     
     
  • 4.46, arisu (ok), 13:17, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    фб не могут себе позволить переписывать весь код с похапэ на Новый Стильный Язык. вот и лепят костыли.
     
     
  • 5.49, некто (ok), 13:51, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > фб не могут себе позволить переписывать весь код с похапэ на Новый
    > Стильный Язык. вот и лепят костыли.

    Проверку типов можно сделать интерфейсами и заворачиванием в объекты, единственная проблема это контроль типа возвращаемого значения. Но и это решаемо: например обернуть возвращаемое значение в принимающую функцию с нужным типом. Для скорости переписать на C и сделать для всех pecl.

    Оно конечно понятно: контроль типа, хорошее средство для борьбы с ошибками. Чем раньше программа завалится - тем лучше. Идеально, это когда валится на этапе компиляции. Для того чтобы это разрешать успешно - настроить свой редактор на linting. Благо средства для этого есть, хотя проблему контроля возвращаемого/принимаемого значения не решает к сожалению. Но это уже другой вопрос - лучше тогда уж делать компилятор нормальный, с раскруткой термов и контролем, если это возможно - и то не всегда... Эту проблему надо решать с другой стороны имхо.

     
  • 4.47, кто (?), 13:22, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    судя по их уродливому API - у них тонны дерьма на php которое уже давно никто не понимает - отсюда и желание не переписать это на нормальном языке - а ускорить существующее
     
     
  • 5.48, некто (ok), 13:43, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    похоже на то, но и как-бы намекает о внутренних противоречиях...

    Переписать на нормальном языке будет наверное дороже, ибо нормальные языки требовательны к себе.

    Только ускорить пытаются как-то не там и собственно не так... Вполне достаточно расширений на СИ, благо pecl никто не отменял. Другое дело, что php-internals это еще та каша, где хорошо постарался Zend API - до сих пор расхлебывают. Это о том, что жадность ни к чему хорошему не приводит...

     
  • 3.54, AlexAT (ok), 14:19, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    При слове python лично я беру ружье, при слове ruby - ставлю растяжки. А как у вас?


     
     
  • 4.55, arisu (ok), 14:25, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > При слове python лично я беру ружье, при слове ruby - ставлю
    > растяжки. А как у вас?

    руби хороший. как ребёнок-даун, который безобидный такой, пытается услужить, подражать взрослым. а питон — это даун агрессивный, который пытается всем рассказать, что они живут неправильно и надо брать пример с него, дауна.

     
     
  • 5.89, Аноним (-), 06:06, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > руби хороший. как ребёнок-даун, который безобидный такой,
    > а питон — это даун агрессивный,

    А ариша просто даун. Поэтому в его мире всё и все - дауны.


     
     
  • 6.94, Аноним (-), 16:42, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > А ариша просто даун.

    Он не даун. Он Капитан Очевидность. Но у некоторых от этого случается ужасный батхерт. Ну извините, такова наша реальность, что узнавать о себе правду - не всегда приятно.

     
  • 6.99, arisu (ok), 20:39, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    а вот это явно бидонист был. они — в том числе — отличаются высокой культурой дискуссий.
     

  • 1.26, Аноним (-), 12:00, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Расширение файлов ".hh"  давно занято языком C++, будет путаница.
     
     
  • 2.42, vitalif (ok), 13:08, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Надо было назвать *.hph
     
     
  • 3.81, Pop (?), 20:04, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    cpp -> cc
    hp -> hph

    Аббревеатура

     
     
  • 4.82, arisu (ok), 21:16, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Аббревеатура

    пикард.webp

     

  • 1.27, Аноним (-), 12:03, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Там на самом деле есть статическая типизация, или как в Dart?
     
  • 1.31, Аноним (-), 12:43, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    отличное развитие
    если язык развиваеется - значит, у языка есть будущее
     
  • 1.32, некто1120 (?), 12:44, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > использование "if/then/else" без обрамления блока символами "{}"

    скоро как в питоне обяжут отступы делать ровно 4 пробелами

     
     
  • 2.61, Аноним (79), 17:11, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы везде обязал единый синтаксис.
     
     
  • 3.95, Аноним (-), 18:11, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Я бы везде обязал единый синтаксис.

    Начни с себя - серая униформа зэка ждет тебя!

     

  • 1.41, кто (?), 13:08, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    когда же они сделают php парсером в LLVM?
     
  • 1.44, кто (?), 13:12, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ссылки то нафига убрали?!!
     
  • 1.52, Аноним (-), 14:16, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Над PHP столько издевательств, не легче уже изначально разработать язык с нужным функциональными качествами, вместо этих попыток из того что есть попытаться сделать что то хорошее
     
     
  • 2.53, arisu (ok), 14:18, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну, если ты готов ударными темпами переписать на этом новом языке весь код fb…
     
     
  • 3.62, Аноним (-), 17:15, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > ну, если ты готов ударными темпами переписать на этом новом языке весь
    > код fb…

    В одиночку этого не добиться. А у тех кто делает тот же Hack вполне себе могут позволить написать язык с нуля. Если говорить о Hack то он появился в результате того что это нужно самой Facebook так что не думаю что их нужды разделит кто то еще кроме самой Facebook. И открытость кода еще не гарантирует его популярность. Спасибо конечно за труды, если этот код может кому то принести пользу кроме самой Facebook.

     
     
  • 4.96, Аноним (-), 18:13, 22/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > В одиночку этого не добиться. А у тех кто делает тот же
    > Hack вполне себе могут позволить написать язык с нуля.

    Вот только остановить фэйсбук который уже есть и работает им никто не даст. И ждать пока они его весь перепишут на свой кульный ЯП тоже всем обломно. Ничего личного, это бизнес.

     

  • 1.56, Аноним (-), 14:36, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Аннотации типов для локальных переменных не работают, пичалька.

    <?hh

    function lal(string $name) {
        string $hello = 'Hello';
        /*array<string>*/ $words = [$hello, $name];
        return implode(' ', $words);
    }

    echo lal('world') . PHP_EOL;

    Fatal error: syntax error, unexpected T_VARIABLE in /tmp/hh/lal.hh on line 4

     
  • 1.60, Аноним (-), 15:53, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Где benchmark этого hack?
     
     
  • 2.64, Аноним (-), 17:20, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    facebook.com, не?
     

  • 1.69, Pop (?), 17:51, 21/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    kPHP скопипасили у вконтакта
     
     
  • 2.73, George (??), 18:08, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Facebook вообще клон ВКонтакта, даже тему скопипастил
     
  • 2.75, arka (?), 18:13, 21/03/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Даже поддержку ООП?
     

  • 1.101, Аноним (-), 12:37, 23/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне не совсем понятно зачем надо было делать этот новый ЯП с несколькими своими недофичами относительно похэпэ. Нельзя было аннотациями phpdoc пользоваться?
     
     
  • 2.123, george (??), 14:32, 14/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А я вот люблю, и рэп, и хип хоп, но хаком все равно не стану пользоваться) ПХП как то постабильней да и побогаче в плане поддержки модулей.
     

  • 1.102, Аноним (-), 20:52, 23/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Терпеть не могу хип-хоп и рэп. Поэтому даже на страницы проектов заглядывать не буду. Я понимаю, что это модные жарны в музыке среди молодёжи, но на мой взгляд такие названия - неудачный ход для раскрутки. Тоже монжо сказать и про Хак.
     
  • 1.108, Потерпевший (?), 12:49, 24/03/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сначала придумаем языки с динамической типизацией, а потом героически решим проблему с производительностью кода, убрав эту самую динамическую типизацию. #hiphop #asm.js и пр.
     
  • 1.121, bdo168.com (?), 08:13, 20/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "must say that overall I am really impressed with this blog. It is easy to see that you are passionate about your writing. If only I had your writing ability I look forward to more updates and will be returning.
    "
     
  • 1.122, Аноним (-), 11:32, 24/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Короче переизобрели Java... На что люди только не идут лиж бы не переписывать код :D
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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