ФорумПрограммированиеPHP для идиотов → Hack — programming language for HHVM that interoperates seamlessly with PHP

Hack — programming language for HHVM that interoperates seamlessly with PHP

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 22 марта 2014 г. 20:03

    Ну что, встречаем?

    function vector_add1(Vector«int» $v): Vector«int» {
    // Example of lambda expressions.
    return $v->map($x ==> $x + 1);
    }

    — это теперь PHP.

    http://hacklang.org

    Да, это PHP (или уже нет?). Только с аннотациями, generic'ами, асинхронными функциями, структурами (shapes), кортежами, лямбда-выражениями, блекджеком и статической типизацией и выводом типов (опционально). Сам написан на OCaml (!). И всё это в основном совместимо с текущей версией PHP, а работает во всё том же HHVM.



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

    «Действительно!» — сказали господа из Facebook. И решили, что одна только Java в качестве образца подражания — это как-то мелко.

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

    Спустя 108 сек.

    парсер — лох, почему-то криво экранирует > <
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 20:14, спустя 11 минут 14 секунд

    в чем прелесть этого перед PHP?

    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 22 марта 2014 г. 20:22, спустя 8 минут 3 секунды

    Ну я вроде как перечислил основные плюшки :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 20:25, спустя 2 минуты 39 секунд

    Только с аннотациями, generic'ами, асинхронными функциями, структурами (shapes), кортежами, лямбда-выражениями, блекджеком и статической типизацией и выводом типов (опционально)

    если честно, то я не понимаю зачем это все в пхп. надо яву? пиши на яве. или .net.

    я хз зачем такими монстроузностями заниматься :-)

    на мой взгляд это уже не пхп.

    а плюсы перевода живого проекта на этого монстра какие ? Чем можн оменя мотивировать перевести живой реальный проект на hack ?

    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 20:37, спустя 12 минут 13 секунд

    обратно совместим?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 21:02, спустя 25 минут 16 секунд

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

    ιιlllιlllι унц-унц
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 22 марта 2014 г. 21:11, спустя 8 минут 36 секунд

    надо яву? пиши на яве. или .net.

    Это значит что не нужно развивать пых? Типа язык, рожденный «фракталом плохого дизайна» не имеет права развиваться? )
    Можно, конечно, быть как ребята из VK, которым достаточно кастрированного kPHP. Но ведь хочется чтобы код был выразительный и распиздатый :)
    И, кстати, лямбды появились в Java только в 8-й версии, которая всего несколько дней назад релизнулась.

    Чем можн оменя мотивировать перевести живой реальный проект на hack ?

    Ну или а) отсутствие других занятий или б) какие-то очень специфичные причины, которые мне неизвестны :D

    Не подумайте, что я советую бросать всё и заменять все свои <?php на <?hh. Проект только вылупился. Ещё нет ни сформировашегоcя сообщества, ни годных примеров, ни «родных» библиотек, которые бы продемонстрировали все эти фичи в деле.
    Но по крайней мере, эта штука достойна того, чтобы обратить на неё внимание и пристально следить за развитием.

    Сам хочу заставить себя выбрать время и переписать какую-нибудь относительно небольшую либу, используя возможности Hack'а.

    обратно совместим?

    Собственно, он может бесшовно цеплять исходники на обычном PHP — всё крутится в общей виртуальной машине. Что касается самого Hack, то там есть аж четыре режима «строгости», которые в том числе, влияют и на совместимость. В подробностях наверное не стану рассказывать, чтобы случайно не соврать :) Но процитирую анонс с opennet'а:

    Из возможностей 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 регистр не учитывался.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 21:12, спустя 44 секунды

    обратно совместим?

    @vasa_c, ну синтаксис явно шире же, нет :)

    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 22 марта 2014 г. 21:19, спустя 7 минут 34 секунды

    Ну и в 5.5 синтакси шире, чем в 5.4. Обратная соместимость всегда страдает с развитием.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 22:03, спустя 44 минуты 17 секунд

    Ну и в 5.5 синтакси шире, чем в 5.4. Обратная соместимость всегда страдает с развитием.

    Ну, 5.4 обратно совместим с 5.5.
    Я писал на 5.4, поставил 5.5 и ничего переписывать не нужно.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 22:09, спустя 5 минут 47 секунд

    надо яву? пиши на яве. или .net.

    Это значит что не нужно развивать пых? Типа язык, рожденный «фракталом плохого
    дизайна» не имеет права развиваться? )

    я не совсем это имел ввиду. ну да ладно :-)

    пусть дальше работают, нужна нормальная перегрузка функций, без нее пых - язык, рожденный «фракталом плохого дизайна»

    Спустя 14 сек.

    то что есть это хуйня, а не перегрузка

    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 22 марта 2014 г. 23:47, спустя 1 час 37 минут 51 секунду

    а тем временем, пхп болеет дряными детскими болячками как раз изза: язык, рожденный «фракталом плохого дизайна»

    PHP :: Bug #62328 :: implementing __toString and a cast to string fails [bugs.php.net]

    напоролся ...

    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 23 марта 2014 г. 0:13, спустя 25 минут 48 секунд

    внезапно — http://habrahabr.ru/post/216651/

    ну всё, теперь PHP — официально Java.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 23 марта 2014 г. 0:17, спустя 4 минуты 29 секунд

    второй уродец родился на свет)))

    это не отвечает на мой вопрос - нахуя, если есть ява.

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 23 марта 2014 г. 7:36, спустя 7 часов 18 минут 9 секунд

    А причем здесь язык Java? Это виртуальная машина для исполнения байт-кода. А вот зачем было изобретать HHVM когда есть хорошо обкатанные JavaVM или .NET это вопрос! Фейсбучникам стоило сделать то, что сделал чувак с хабра.

    Спустя 237 сек.

    P.S. В каментах на хабре дают ссылку на уже существующий PHP для .NET. Сдается мне, со временем "настоящий" PHP тоже нырнет в одну из этих технологий.

    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!