Комьюнити-менеджер
0,0
рейтинг
19 июля 2013 в 23:30

Разработка → KPHP от ВКонтакте

PHP*
Буквально несколько минут назад Павел Дуров на своей странице ВКонтакте представил новый вариант PHP, названный KPHP.
Слово автору:

В конце мая, перед началом сезона отпусков, суточная посещаемость ВКонтакте достигла очередного рекорда — почти 50 млн. пользователей. Именно тогда мы завершили перевод всего кода ВКонтакте на компилируемый язык программирования, который разрабатывали более года, — KPHP. В результате практически все страницы сайта стали грузиться более чем 2 раза быстрее.


image
image
image
image

На изображениях видно среднее время создания страниц нашими серверами до и после их перевода с PHP на KPHP. KPHP поддерживает большинство стандартов обычного PHP, но работает значительно быстрее и предоставляет дополнительные возможности оптимизации. Позже мы предоставим код KPHP в открытый доступ для всех разработчиков мира.


Я попросил Павла дать чуть более развёрнутый комментарий и вот что он ответил:

На всех тестах было неудобно за PHP HipHop (похожая технология от FB). Либо Facebook дал в общий доступ сильно испорченную версию, либо мы разработали нечто принципиально лучшее. Это касается не только скорости работы скомпилированного кода, но, в первую очередь, скорости компиляции.

Если там на некоторых тестах можно ждать окончания компиляции полчаса, то у нас весь код ВКонтакте компилируется распределённо меньше, чем за минуту.

Плюс, там есть дополнительные встроенные возможности оптимизации. Создавался чемпионами ACM. Из минусов — поддерживается не весь синтаксис PHP, а только то подмножество, которое мы использовали в ВК. Скажем, там сильно ограничено все, что связано с ООП.


В ближайшее время ожидаются более детальные подробности, stay in touch, Хабрахабр.
Фёдор Скуратов @Teodorix
карма
40,7
рейтинг 0,0
Комьюнити-менеджер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (264)

  • +5
    суровый сумрачный гений скрестил HipHop с APC?
    интересно посмотреть что же они там такого наворотили.
    • 0
      Последнюю цитату, приведенную в посте, вы явно не читали.
  • +76
    У PHP был фатальный недостаток…
  • +128
    Типичный вконтакт — взять то что придумал фэйсбук и сделать его лучше :)
    • +144
      Это же хорошо. Вы так не считаете?
      • 0
        Еще-бы выдали наружу все это дело…
        • +5
          Написали же, что выложат. Думаю надо время подготовить это все. Весточка в любом случае хорошая.
          • +29
            Ага, уже писали, что хотят выложить свою «волшебную БД» — воз и ныне там.
            • +4
              Писать, что выложим, не мешки ворочать.
        • +4
          По моему мнению пользы от этого действия будет не много. Из-за урезанности PHP фреймворки работать там с большой вероятностью не будут. Можно будет использовать только для собственных наработок и то, если вы прочувствуетесь их подходом. Так как они под себя оптимизировали, то там может быть вырезано много того, что вы привыкли использовать.

          Разве что посмотреть что они там наваяли…
          • +2
            А кто мешает это форкнуть и развить до полной работоспособности?
            • +7
              Возможно за счёт вырезания функционала они и получили такую оптимизацию. Добавите все возможности и получите продукт схожий по скорости с APC :). Но это всего-лишь мои предположения.
            • +3
              Мешает отсутсвие бюджета на найм того, кто это сделает. Либо тех, кто сделает за идею.
              Проспонсируете?
              • +1
                Нет, подождите, вы тут говорите, что вам оно не нужно, потому что функционал не полный.
                Так пилите сами или не возмущайтесь, вам никто ничем не обязан.
                • +2
                  Да проще тогда сделать что-то своё, да под себя.
                  Но где взять на это время?
                  • 0
                    время найти всегда можно, главное правильно расставить приоритеты
          • +2
            Для малых проектов это вообще не имеет смысла. А вот для больших, когда на серверных ресурсах можно сэкономить огромные финансы. Стоит заморочится и возможно отказаться от приятностей ooп.
        • +3
          и главное не какую-нибудь «сильно испорченную версию»
    • +44
      Молодцы же
      • +3
        Очень классно что это у нас происходит. Приятно!
    • +4
      За что и любúм. ;-)
      На очереди надёжная быстрая распределённая база — ждём-с. А то фейсбук на свою совсем забил. :-)
      • +10
        люби́м
        • 0
          У меня так через Compose-Key не ставится, возможно не знаю как — приходится извращаться с латинницей
          • +1
            В раскладке Ильи Бирмана есть, ставится так: «и», «alt+shift+/», «alt+shift+/».
            • +1
              Илья Бирман странно относится к Линуксу. Впрочем, это его личные тараканы.
              Вики привела на вот эту статью по теме, обещающую, что всё должно быть из коробки, но я у себя в штатных раскладках не нахожу.
              Пользуюсь украинской RSTU — она тоже богата типографикой.

              Хм, забавно: таки случайно нащупал модифицирующий акут а́ е́ о́ на «ф» в третьем ряду (интересно, как это смотрится под виндой?). Но то, что в редакторе смотрится правильно, то ли парсер, то ли браузер преобразует в смещённый в сторону апостроф. В общем, предпросмотр рулит )

              UPD.: а при сохранении всё не так как на предпросмотре — вот и доверяй после этого! ))
          • 0
            Решил так:
            >>> grep apostrophe .XCompose 
            <Multi_key> <apostrophe> <apostrophe> : "́"
            
          • –1
          • 0
            и, Shift+Ctrl+U0341 = и́
            • 0
              1375030981-clip-5kb
              • +1
                Забавно. У меня и в Убунте, и на Андроиде всё нормально, акцент стоит точно над «и».
      • 0
        А то фейсбук на свою совсем забил

        Это про Cassandra? Так она и без них отлично развивается.
        • 0
          Так о чём и речь — не осилили. Вообще, в последнее время такое ощущение, что Фейсбук загибается — грузиться стал как ЖЖ в худшие времена…
    • +56
      Вконтакт = Фэйсбук + блэкджек + шлюхи :)
      • +20
        + музыка
        + видео
        + более вменяемое API
        • +31
          Пиратская, замечу, музыка и пиратское же видео.

          Ну и про API не смешите!
          • +11
            То есть, если я, к примеру, сам пишу музыку и выкладываю её для того, чтобы показать людям, она сразу становится пиратской? :)
            • +13
              Выкладывать собственную музыку вам никто не мешает и на Фэйсбуке.

              Но в контакт народ в основном ходит, увы, не за вашей музыкой :)
              • +27
                «Никто не мешает и на Фейсбуке» — гм, ну вообще-то немного мешает то, что там нет аудиосервиса.
            • +1
              Все правообладатели так и делают чтоб потом получить деньги!
            • +1
              В РФ если Вы ее не зарегистрировали в нужных организациях — то и ее могут признать пиратской.
              • +2
                Да и не только в РФ — аналоги РАО существуют почти во всех странах.
              • –2
                а у кого она будет «спирачена» в таком случае? Мне казалось, что нужно заявление от правообладателя, если музыка не зарегистрирована то и правообладателя нет. Я ошибался?
                • +1
                  Ошибались. Вспомните, например, дело РАО против группы Deep Purple за исполнение песен группы Deep Purple без отчисления авторских гонораров группе Deep Purple, само собой, без заявления со стороны группы Deep Purple.
                  • 0
                    при таком раскладе да, но
                    То есть, если я, к примеру, сам пишу музыку и выкладываю её для того, чтобы показать людям, она сразу становится пиратской? :)

                    вот при этой ситуации, каким образом отсутствие регистрации музыки в нужных организациях делает ее пиратской? украденной у кого?
                    • 0
                      Абсолютно аналогично. Возьмется такая организация защищать авторские права на ваши произведения без вашего ведома и согласия, от вас, в том числе…
                      • 0
                        это очень абсурдно звучит. Подача иска подразумевает какое-то наказание ответчику при удовлеторении иска. Вы всерьез утверждаете что человека, выложившего свою музыку в сеть могут за это оштрафовать и, как следствие, штраф будет выплачен ему же?
                        • +2
                          А вы всерьез утверждаете, что такой маразм невозможен? :) У РОА государственная аккредитация по коллективному управлению правами на обнародованные музыкальные произведения в т.ч. по 7-8му подпунктам 2го пункта статьи 1270 ГК — если хватит наглости, и за такое наезжать начнут. Само собой, штраф будет выплачен РОА, где половина, как издержки и за услуги посредника, и осядет, а остаток автор получит назад :)
                          • 0
                            Ух ты, аж 2 раза очепятался. РАО же.
                            • 0
                              не подозревал что все настолько дремуче.
                  • 0
                    Передергиваете. Иск был к какому-то российскому ООО — организатору концерта.
          • +4
            Пиратским контент делает не носитель. Замечу, что для одного человека она может быть пиратской, а для другого — вполне законно приобретённой )
            • +14
              Конечно не носитель! Мы все знаем, что по-настоящему пиратскую музыку пишут пираты!
            • 0
              Замечу, что для одного человека она может быть пиратской, а для другого — вполне законно приобретённой

              «Законно приобретённый» в большинстве случаев вряд ли предполагает неограниченное распространение / публичный доступ.
          • +3
            Пиратская или нет, это не понятия среды передачи данных.
            А социалка — это просто среда для передачи музыки. Не делать плеер в социалке — это всё равно, что откачивать воздух из зала собраний.
            • 0
              В смысле, звука в вакууме не будет? А то я не очень понял вашу метафору с воздухом и залом собраний.
        • +7
          Слушайте, а почему апи более вменяемое?
          У меня какие-то проблемы с ним постоянно, в том числе с документацией. А в фб всё почти всегда работает предсказуемо, и документация хорошо структурирована.
          • +8
            Еще скажите что в ФБ интерфейс интуитивно-понятный:)
            • 0
              интерфейс там совершенно непонятен, но API лучше. Например в ВК при установки кнопки «мне нравится» генерируется событие, которое сообщает что был поставлен/снят лайк, но если на одной странице несколько кнопок, то определить к какой именно относится событие невозможно. В ФБ такой проблемы нет
        • +2
          API слабо документированно. Для несложных задач вроде получения имени и фамилии друзей все хорошо описанно. Но вот, например, работа с массивами в методе execute почти не документированна. Вообще документация по методу сводится к шести примерам и пару строчкам о возможностях.
          Прошу убедиться: https://vk.com/dev/execute
          Я, например, так и не понял как изменять значения в массиве.
      • +5
        + адекватный интерфейс.
      • +11
        Где вы видели API лучше фейсбука? Да, оно сложное, но оно полное и предсказуемое. А ещё есть масса средств тестирования.
        • –13
          У ВК, хотя бы тем, что его не меняют каждый месяц без предупреждения.
          • +10
            Эм, предупреждает FB сильно заранее и при этом есть куча Developer Alert'ов, которые об этом напоминают. ЧЯДНТ?
            • –6
              Да, я понял, что был не прав, что всё с ним в порядке. Печальная история о погибшем проекте знакомого, на который не выделили инвестиций после перекочегаривния АПИ, по словам этого же знакомого.
    • +10
      Ограничение ООП — это действительно лучше? Я даже начинаю понимать почему эта разработка быстрее, учитывая то, что у фейсбука с относительно недавнего времени поддерживается весь язык…
      • –2
        Хотелось бы верить, что это не архитектурный просчет. И со временем возможно подтянут весь язык.
        • +5
          Согласен, хотя я был бы только «за», если бы наоборот — вырезали половину совершенно бессмысленных функций.
          • +1
            PHP открытый проект, думаю можно провернуть такой фокус выпустив свой форк ))
            • +10
              Вот только первым же issue в багтрекере появится «Ну и как мне на этом запустить вордпресс?»
              • +6
                Логически продолжая цепочку: Wordpress — тоже открытый проект )
            • +1
              учитывая то, что их уже 924, не думаю что 925-ый без половины функционала будет особо популярным. А вот если он будет не только урезанным, но ещё и в два раза быстрее — это уже другой разговор.
    • 0
      Типичный путь всего нового — основываясь на существующих технологиях и идеях создавать новое и лучшее. Вы же перед тем как писать код не придумываете язык программирования.
  • –23
     
    • +2
      это зависть и это цукерберг научился писать по русски именно для такого коментария.
  • +38
    > Скажем, там сильно ограничено все, что связано с ООП.

    у них там все лапшой написано, что ли? :)
    • +2
      «Ограниченно», не значит «отсутствует».
      Я так полагаю «магию» вырезали — для такого проекта это более чем оправдано.
      • +1
        У пыха «магия» работает быстрее чем, допустим метод миссинг в руби и зачастую без подобной магии не обойтись, так что отсутствие гетов\сетов\коллов\инвоук и прочее — считаю довольно сильным ограничением языка.
        • +4
          А при чём тут руби? Тот же пых написанный без магии работает прилично быстрей. Просто не всем это существенно.

          Без всего этого добра вполне обойтись можно, вызывая их в явном виде, как это принято в Java. Да, не так удобно, не руби-стайл, но жить можно. Тем более, что в подобных случаях народ вообще лезет в написание модулей на си и вспоминает о спичках.
          • +1
            Да ладно, там различие несущественно, если у вас не 100500 вызовов магических методов.
        • 0
          Я думаю сложность только в гетах, сетах, коллах и статикКоллах, но и их можно сделать, при большом желании.
          инвоук — так вообще просто, $obj() ~> $obj->__invoke();
      • –1
        в коде вк ООП именно что отсутствует :)
        • +2
          Ну, тут я пас — код не видел, оценивать коэффициент лапшеобразия не могу )
        • 0
          А что наличие/отсутствие в коде ООП как-то показывает на его качество?
          • 0
            Нет, не показывает.
    • +23
      Это вы так альтернативы ООП лапшой назвали что ли?) Не ООП единым, всё зависит от ООПухоли головного мозга. :)
      • +1
        У меня от прототипов, например, большая головная боль, чем от объектно-ориентированности. Может к лучшему, может к сожалению, но альтернатив ОО пока нет, если уж брать в глобальном масштабе (ну если не считать пристройки в виде аспектов), а все попытки что-то реализовать иначе — выливаются… хм, в друпал например. Или есть альтернативы?
        • 0
          Textpattern посмотрите, например.
          Все очень просто, понятно и логично. Современный процедурный стиль во всей красе.
          • +6
            А чего там современного? Обычный лапшекод а-ля вордпресс.
        • +8
          альтернатив ОО пока нет

          Безболезненно перешел на методы, используемые для организации исходного кода в golang. Сильного зуда из-за отсутствия ООП не ощутил.
          Не стоит быть таким категоричным :)
          • 0
            Безболезненно перешел на методы, используемые для организации исходного кода в golang
            А что там используется?
            • 0
              Я, наверное, не совсем корректно выразился. Имеется в виду не что-то агрегирующее исходники(идея packages не нова), а сам подход при написания кода.
              Если же вы меня правильно поняли, то Go многопоточный императивный структурированный язык. Притянуть за уши идеи ООП конечно можно(си с классами вот до сих пор выдумывают :)), но на мой взгляд пустая трата времени.
        • 0
          Пишу и на Erlang и на Python. И ничего, создавать в Erlang абстракции прекрасно удаётся и без наследования. Если очень хотите — могу примеров привести (но лень как то).
    • +27
      Создавался чемпионами ACM.

      Вот они программисты-олимпиадники: враг ни за что не догадается, как работает их код:-)
      • –9
        Печально что чемпионам ACM приходится писать на РНР
        • +31
          Я не думаю, чтобы они компилятор писали на пыхе. Они же не больные, в самом деле.
        • +4
          Ну, строго говоря, чемпионам АСМ приходится разрабатывать новый язык программирования(не особо существенно, что синтаксис основан на синтаксисе PHP), а это вполне интересная задача:)
          • 0
            Не думаю, что это можно назвать новым языком. Семантику им тоже нужно было сохранить.
            • 0
              Ну C++, несмотря на обратную совместимость с ANSI C таки является новым языком. А тут мы даже подробностей не знаем, чтобы на 100% говорить, что это НЕ новый язык)
              • +1
                Вы через одно место всё вывернули.
                В вашем случае (очень-очень грубо говоря) С++ — надмножество языка С.
                С сабже же выделили подмножество PHP — KPHP. Семантически это всё же урезаный PHP.
                • +1
                  >грубо говоря С++ — надмножество языка С.
                  классики С++ так не считают, они утверждают, что Си и С++ это два разных языка, с одинаковыми элементами синтаксиса.
                  • 0
                    Я с вами согласен. Но я сделал небольшое допущение. Совсем небольшое.
                    • 0
                      Ну, в допущениях можно пойти чуть дальше — PHP является частично пересекающимся множеством с C, вследствие чего урезанный PHP оказывается ближе к C ))
                      • 0
                        А C в допущении это «высокоуровневый ассемблер». А ассемблер это…
                        • 0
                          И всё сведётся к конфигурированию клеточного автомата основанного на… эээ, из чего там кварки состоят?.. :-)
                          • 0
                            Из преонов — как только их найдут.
                  • –2
                    Кажется я только что догадался как это расшифровывается — К(астрированный)PHP. Давно пора, а то популяция быдлокодеров на этом языке размножается почище кроликов.
                    • 0
                      Такое предположение было и раньше вашего. А насчёт быдлокодеров — это больше от человека зависит, язык программирования ни при чём, ИМХО.
                      • 0
                        Ну почему же, низкая сложность вхождения очень даже способствует тому, что именно этот язык будет выбран представителем данной разновидности кодописателей. Конечно это не может расцениваться как недостаток языка, ровно наоборот, но не об этом речь.
        • –5
          хейтеры, когда же вы успокоитесь?
      • +2
        И такое же API в придачу :)
    • +2
      А что, ООП каким-то магическим образом распутывает лапшу из кода или препятствует её появлению?
    • –5
      Я вообще слабо представляю как можно писать на PHP без нормально ООП и как вообще можно писать на PHP проект уровня вконтактика.
      • 0
        Хм, и что же мешает? конкретно пожалуйста.
      • +3
        а как можно писать проект уровня FB? уровня Википедия?
        и ВК и ФБ,… и Дуров и Марк, были когда-то студентами. И начиналось все с небольших стартапов и кучей кривого кода. Дурову было полегче, он шел протоптанной дорогой и знал уже куда нужно грести… а впрочем песня не о нём, а о любви…

        В общем, молодцы что сделали. Осталось посмотреть и оценить, что получилось и на сколько этим можно пользоваться. Яндекс вон уже более трех лет обещает выложить сырцы своего WEB сервера. Сколько там лет обещенного ждут?
        • 0
          А до фейсбука не было MySpace? Ведь тоже дорожка была не по целине…
  • +57
    Вначале прочитал по-русски как КНР.
  • +7
    Такими темпами появится новая ОС
    • 0
      Метадистрибутив Gentoo создавался как инструмент для создания собственных ОС (ок, пусть не ОС, пусть дистров). Но этим, увы, мало кто пользуется.
    • 0
      Ну, вроде как Мозилла свою Ось пишет. Чем ВК хуже?
    • 0
      Сомневаюсь что Вконтакте будет что-то делать после провала Фесбукофона, HTC First.
  • +5
    Одного меня мучает вопрос, что такое загадочное K?
    • +1
      Компилируемый, вестимо. Надо же в названии обнозначить, что сделано в России .)
      • +3
        именно этого я и боялся :)
      • 0
        Тогда бы уж писали CPHP — Compiled если
        • +3
          чипи от вк — это вы сильно загнули
        • +1
          VKPHP — почему не так?
        • 0
          Может быть, фанаты Mortal Kombat?
    • +49
      Кастрированный? :)

      Из минусов — поддерживается не весь синтаксис PHP, а только то подмножество, которое мы использовали в ВК
      • +8
        Kitten
        upd: немного промазал веткой, но ничего.
    • +12
      ВКонтакте?
    • +2
      Контакт же!
    • +4
      Контакте Эр Нэ Эр
    • 0
      Контакт, очевидно же.
    • –9
      Как я надеюсь, что это пришло из KDE. У нас в сообществе, почти у всех продуктов первая согласная К. Например: Kate, KWin, Okular, KWrite и так далее.

      Вот и пополнится коллекция KDE.
      • –3
        Ребята, вы сарказм не понимаете? :)
        • +2
          Видно, нет.
  • +4
    Меня одного смущает вопрос, почему бы сразу не писать на C/C++ и не изобретать всякие там HipHopKPHP?
    Т.е любая другая причина, кроме времени разработки.
    • +21
      На плюсах писать дольше, это же очевидно. Да и поддержка сложнее. Дешевле докупить оперативки или новый сервер, чем поддерживать серьёзную команду плюсовиков.
      • +4
        Точно. Об этом в 12 ночи как-то забыл. Тогда всё верно.
      • +4
        Не слышал, чтобы вконтакте экономил на кадрах. Подозреваю, просто изначально он писался на коленке на пхп, рос, а теперь переписать на плюсы просто нереально, проще что-нибудь сделать с пхп.
        • +30
          В мире PHP программистов — мы свято верим в его (PHP) могущественность и неповторимость, по этому своим предположением — Вы разрушаете наш хрупкий розовый мир. Не надо так.
      • –1
        А на D?
        • –1
          Тогда уж на Erlang.
    • +1
      А еще круче C — писать веб-приложения на Ассемблере!
      • 0
        Ну с Ассемблером Вы явно загнули.
        • +2
          Я, кстати, встречал в корпоративной среде полноценный веб на сях (морда биллинга). Тут и правда до асма недалеко. Теоретически-то это вполне возможно.
          • +8
            Практически — тоже. :) В начале 2000-ных мы в стенах веб-студии девелопили полнофункциональную CMS на С++. Скорость работы была феерической. Но вот с саппортом — реально проблема, ибо каждый проект это был по-сути отдельный форк со своими допилками.
            И лично у меня был проект интернет-магазина для немцев с абсолютно безумными требованиям: C++, Windows, Apache+FastCGI, MSSQL. Тоже весьма шустро работало.
          • 0
            Половина мейлрушных проектах на сях написана.
          • 0
            Я работаю в проекте, который реализован, как модуль апача. Проект обслуживает 20-30К сессий одновременно, 3 млн сообщений ежесуточно. Так что — полноценный WEB проект полностью на Сях (и даже не плюсы). И работает, и с поддержкой, и с расширением нет проблем. Обслуживался двумя программистами сишниками, недавно еще двух программистов взяли.
        • +2
          Неужто действительно с юмором настолько туго?
        • +2
          Нет ну почему же allasm.ru/set_12.php
        • +3
          Ну с Ассемблером Вы явно загнули.
          «Самый быстрый сервер в мире» G-WAN поддерживает модули написанные на асме.
    • +2
      Потому что до определённого предела это долго, сложно и невыгодно.
      А потом как подумаешь, что можно перенести код и полтора года серверов не добавлять и сразу задумываешься, наверное =)
  • –9
    Надо было сразу на perl писать, и не мучаться.
    А, да, чуть не забыл: [sarcasm]
    • 0
      PHP на Perl'е, ага…
      • 0
        Так вроде же перл6 (parrot vm) к тому и шел что бы быть универсальной vm, и PHP он поддерживает, ЕМНИП :-)
  • +9
    Вот бы еще они своей СУБД поделились с сообществом…
    • +8
      И хорошо бы вместе со всем содержимым )
      • +2
        Чтобы вас тоже потом всякие там Лиги без Интернета обвиняли в хранении детской порнографии?)
        • +3
          В России хранение детской порнографии не запрещено.
          • 0
            Скажите это отделу К, если обнаружат при изъятии компьютера.
            • +3
              Они просто скорее всего постараются привязать вам продажу продукции или участие в производстве.
  • +19
    Это типично русский подход к программированию — взять чужую жалкую наработку, выкинуть все ненужно, нужно оптимизировать, запилить туда Катюшу и покорить мир.
    • +6
      А можно еще таких «типичных» проектов? Интересно даже, почти не слежу за опенсорсом русских компаний.
      • –2
        Вот вам с Катюшей и покорением мира.
        • +1
          Спасибо, но вроде Игорь Сысоев, работая в Рамблере, с нуля писал nginx, речь была про чужие перепиленные разработки.
          • 0
            Ну, вроде как он первоначально модули к апачу пилил, а потом понял, что это не жизнь…
            Тут же с KPHP такая же история — они своё с нуля вроде как написали, реализовав собственное ви́дение идеала
    • +5
      Почему-то все, за что в последнее время берется Фейсбук, завершается на стадии «жалкой наработки».
  • –11
    Вот что бывает, если чуть-чуть начать ДУМАТЬ ГОЛОВОЙ и НЕ ЗАБЫТЬ про оптимизацию архитектуры, алгоритмов и кода!!!
    Если еще подумать — будет еще быстрее! Было бы желание.
    PS: Вообще нужно всегда это стараться СРАЗУ делать по-максимуму…
    • +4
      Сразу-то зачем? Если сразу, то рынок может уйти за это время. Особенно, когда продукт делается как proof of concept. Release early и всё такое.
      • –1
        ну да… Согласен.
        Два варианта:
        1. Можно потратить силы «впустую»…
        2. «Поезд» может уйти…

        Но хотя бы постараться чтобы не «испугаться сильно»…
  • +18
    Мы сделали свой PHP с приложениями и одноклассницами…
  • –5
    Господи, Vk начинают мне напоминать яндекс. Решают уже решенную задачу, правда яндекс еще обычно делает это хуже, чем уже существующие решения. Дуров говорит, что у них хотя бы работает быстрее, но утверждение голословное.

    Что мешало им взять HipHop и сделать его лучше? Они бы осчастливили не только тех, кто перейдет на этот KPHP, но и тех, кто уже использует HipHop.
    Ну и, конечно, не могу не отметить, что в Facebook уже (спрашивал лично разработчиков) около 50% инфраструктуры работает на HipHop VM github.com/facebook/hiphop-php, www.facebook.com/note.php?note_id=10150415177928920. Так что я слабо представляю, где там «на некоторых тестах можно ждать окончания компиляции полчаса».

    Кому, конечно, нужен мой совет, но я бы сказал так: лучше меньше снобизма и больше открытости. Пускай примером служат то, как Google поступил с Vine, а Facebook с Cassandra.
    • 0
      прошу прощения, Google поступил с Wine.
      • +11
        а как гугл поступил с вайном?
        • 0
          тоже интересно)
          • 0
            Когда портировали Picasa, google очень много патчей туда влил. Примерно в 2009-2010 годах
            • +4
              Имхо, гораздо более полезен вклад Google в Wine в виде GSoC: в пересчёте на деньги — $22000 в 2013, $27500 в 2012 году, и так каждый год. А с учётом того, что таких проектов помимо Wine сотни, вклад Google в OpenSource просто бесценен.
      • +1
        Wine, и рекурсия мозга секунд на 10.
    • +20
      Очень часто бывает, что реализовать с нуля аналог решения получается быстрее чем взять чужое готовое, полностью разобраться как оно работает и рефакторить, улучшать, допиливать (ваш ко). Думаю что ничего не мешало смотреть в хипхоп и вк-шники конечно смотрели. Ничего криминального в своей разработке с нуля нет. Да и снобизма вроде никакого… Имхо сейчас чтобы не ляпнули из вк — воспринимается в штыки. Есть конечно причины, но тут-то вроде место ровное. Выложат исходники там и поглядим.

      А чем вам Яндекс не угодил?
    • +29
      Звучит как: почему бы разработчикам symfony не взять yii и пилить его, почему бы разработчикам mercurial не забить на свое видение и не пилить git, почему бы битбакету не присоединиться к гитхабу, почему бы…
      Да потому что конкуренция! И хорошо что она будет. Вам нравится бешеный темп развития техники за последние 10 лет? Неужели это от того что у нас существует 1 супер-компания, в которой собраны лучшие умы, а не от конкуренции и различий подходов к одному и тому же?
      • –3
        Потому что вы сравниваете два фрэймворка, у которых разный подход к разработке. KPHP это технология, которая решает одну задачу, И такая технология уже есть, я как раз не за одну большую компанию, которая соберет лучшие умы. Я за то, чтобы все компании, в которых собраны лучшие уму объединялись и пилили один продукт, доводя его до совершенства. Здесь мы видим не свою идеологию, а велосипед.
        • +3
          У yii и и symfony одна задача — вывод информации посетителю сайта (если грубо)
          Но разгые методы реализации.

          Вы сравнивали архитектурный подход HipHop-a и KPHP? Сомневаюсь. А уже делаете выводы.
        • 0
          ну то есть гугл молодцы, придумали хороший поисковик, а яндекс, дакдакго, бинг и прочие — идиоты, пилят велосипед, присоеденились бы к гуглу и проблем не было бы
          • +2
            Вообще то наоборот. Яндекс появился раньше, насколько мне известно
            • 0
              если честно — мне все равно кто появился первый, это сарказм выше был, я бы просто хотел чтобы у всех проектов в техническом мире были альтернативы
              • 0
                Я понял что это сарказм, просто даже сарказм, должен быть правильным) и смотрелся бы он нагляднее
          • +1
            Нет, все молодцы. Но все, что вы перечислили — это коммерческие продукты. А мы вроде бы про опенсорс говорим, мне кажется странным такие паралели проводить
            • +1
              git, mercurial — GNU GPL 2
              YII — BSD, Symfony — MIT
              Битбакет, гитхаб, поисковики — да, коммерческие.
              • 0
                Я точно не сомневался в статусе yii, smfony, git и mercurial. И имел ввиду только поисковики.
                • 0
                  Пардон, не понял на какой коммент ответили. Я думаю тема исчерпана)
  • +25
    Разрабатывают свой шифрованный протокол для im, собственный компилируемый язык и обещают поделиться с миром. В любой другой стране их бы похвалили, а у нас как всегда…
    • +9
      Обещать не значит делиться. И потом — комментаторы пока весьма осторожны в оценках. Вот когда поделятся, тогда уж обольют известно чем с ног до головы. Меня, например, тоже смутили слова про «сильную урезанность ООП».
    • –9
      Да пусть делают что угодно. Проблема в том, что от кол-ва разных проектов качество онных не поднимается. В итоге 90% не то что в продакшен ставить не рискнешь, а даже экспериментировать с этим не станешь, когда увидишь сколько детских болезней у этого нового проекта.

      Они что-то сделали, что позволило им ускорить код в 2 раза? — Прекрасно! Только вот энтузиазма по поводу выкладывания этого чего-то в паблик лично я не разделяю.

      Понимаю, что переписывать код с нуля на другом языке задачи не стояло, но PHP, даже ускоренный в 2 раза, все равно в N раз будет медленней той же Java. Еще, как вариант, Erlang есть. Масштабируется отлично. Кстати, не сильно сложный язык, если только не учитывать сложность перехода к функциональной парадигме.
      • +1
        От количества проектов (коммерческих) качество как раз таки поднимается.
      • +2
        гхм… а где сказано, что скорость исполнения всего в два раза возросла? Сказано, что скорость генерации страниц возросла в 2 раза, а это очень разные понятия. Вполне возможно, что допустим нагрузка при генерации страницы упала в 10ть раз. И еще не известно какие процессы стоят перед процедурой генерации страницы.
    • +1
      Я в свою очередь обещаю честно их похвалить.
  • +5
    Если и вправду будет лучше, чем HipHop, то почему бы и нет.Свои продукты — это хорошо, тем более, если выкладывать в открытый доступ.
    Они молодцы, в любом случае.
  • +2
    Быстрее ли оно чем java c# go?
    • –3
      это компилируемые, статически-типизированные языки, о чем вообще тут речь?
      • +3
        На всех тестах было неудобно за PHP HipHop (похожая технология от FB). Либо Facebook дал в общий доступ сильно испорченную версию, либо мы разработали нечто принципиально лучшее. Это касается не только скорости работы скомпилированного кода, но, в первую очередь, скорости компиляции.
        В общем-то, все по делу. Раз упомянули HIPHOP, значит KPHP тоже компилируемый.
        • 0
          ага, только компилируется скрипт не статически типизированный. И если уже совсем на чистоту говорить, то для начала он транслирует код в c++, а затем уже компилирует.
          • +1
            Ну почитайте, пожалуйста, хотя бы страничку github hiphop'a, ну какой он уже статически компилируемый. github.com/facebook/hiphop-php
            • 0
              я так понял это уже вообще не транслятор/компилятор, это виртуальная машина
          • 0
            Ну компилируется сначала в C++, ну и что с того?
    • 0
      Очень сомневаюсь, с учетом малого времени компиляции (минута на весь код ВК) и нерасположенности синтаксиса и семантики PHP к оптимизациям.
      • +1
        Распределённой компиляции. А какие там мощности, об этом умалчивается. Может на том же кластере webkit за 10 секунд собирается…
  • +16
    Расскажите мне еще раз про вечно тормозящую базу и несущественное время выполнения кода на основном языке в хайлоаде.
    • –1
      Так от контекста же зависит. Одно дело 50к хостов обслуживать, 50м — другое. Соразмерность усилий/стоимости разработки и требуемого результата.
    • +9
      Хотите, я могу поделиться печальной историей взаимоотношений Ruby on Rails и оперативной памяти на сервере?
      • +8
        Поделитесь
        • +3
          +1
      • +4
        Делись
  • –4
    Рад что прекратились преследования Павла Дурова.
    KPHP интересует меньше.
  • +1
    Интересно почему не VPHP?
  • –2
    <sarcasm>
    
    Я вот сижу, и думаю — Велосипед? Да не. Наверное новая технология пришла в мир, что тут ровнять Павел VS Zend?
    </sarcasm>
    
    • 0
      Ну да, кто этот Марк, когда сошлись такие фигуры как Павел и Расмус! )
  • +42
    Не понимаю, почему столько критики. Во-первых, это личная разработка ВК под себя, им что именно нужно было, они то и реализовали. Во-вторых, Дуров ничего не сказал про развитие KPHP, а вполне возможно, что там появятся более широкие возможности PHP.

    Почему ВК не взяли Hip-Hop у фейсбука и не стали развивать его — тут все та же целесообразная необходимость — для них, вероятно, Hip-Hop был избыточен, и решили написать под конкретные нужды свой компилятор, тем более, что это весело и средства позволяют.

    И наконец, много ли кто вообще пользуется Hip-Hop для себя? Для подавляющего большинства оно нафиг не нужно. Хватает обычной скорости PHP + кеширование байткода. А те, кто собираются писать новый HighLoad-проект c использованием одно лишь Hip-Hop или KPHP — ну удачи, я бы не рискнул. Это ВК и Фейсбуку деваться уже некуда, у них приличная часть всего написана на PHP, но мы то в сами сегодня располагаем более широким инструментарием, чем даже 5 лет назад, верно? Где нужно, применим Node, где оправдано — Erlang или, прости господи, Go, а всякую обвязку — на PHP. И не нужно говорить, что потом это все будет сложно поддерживать, поддерживать конкретную реализацию, заточенную под конкретную задачу куда эффективнее, чем мостырить PHP для всего-всего.
    • +2
      Это ВК и Фейсбуку деваться уже некуда, у них приличная часть всего написана на PHP, но мы то в сами сегодня располагаем более широким инструментарием, чем даже 5 лет назад, верно? Где нужно, применим Node, где оправдано — Erlang или, прости господи, Go, а всякую обвязку — на PHP. И не нужно говорить, что потом это все будет сложно поддерживать, поддерживать конкретную реализацию, заточенную под конкретную задачу куда эффективнее, чем мостырить PHP для всего-всего.

      Я думаю, что при большом желании такие монстры как VK и FB могут себе позволить переписать все на Node / Erlang и т.п. И по времени это займет скорее всего меньше, чем писать свой компилятор для PHP. И кстати у VK по-моему довольно много сервисов работает на Node.js (по крайне мере Node.js они точно используют в качестве прослойки для реализации XMPP). Я думаю, что все они используют PHP более чем эффективно и как раз-таки по месту, где и надо. Другое дело что, как вы правильно заметили, с их масштабами все время приходится придумывать что-то новое и выкручиваться.
      Плюс выбор PHP как языка (а не какого-нить Erlang-а или там чего-нить ещё) обусловлен ещё тем, что ребята просто хорошо умеют его готовить. А зачем использовать что-то новомодное, если ты хорошо справляешься и со старым?
      • 0
        Я думаю, что при большом желании такие монстры как VK и FB могут себе позволить переписать все на Node / Erlang и т.п. И по времени это займет скорее всего меньше, чем писать свой компилятор для PHP.

        ЕМНИП, как раз таки после выхода HipHop'а, ребята из FB сказали, что когда они уперлись в производительность так, что добавление железа было уже экономически невыгодным, у них было 2 пути:
        1. переписать все под что-нибудь более шустрое;
        2. написать компилятор для PHP.

        Второй путь оказался намного более дешевым.
      • 0
        Думаю, главным образом они не переписывают с PHP на что-то другое по причине того, что уже есть хорошая команда PHP-кодеров, а для чего-то другого опять придется нарабатывать опыт, изучать, наступать на грабли. Но я правда думаю, что основным аргументом написать компилятор было что- вроде «почему бы и нет?». Одна команда пишет в привычных рамках на PHP, а другая в это время пишет компилятор. В час X весь код компилируют, и как такового изменения команда PHP-кодеров не заметила. А вот как раз-таки взять и начать внедрять в уже работающем проекте что-то совсем новое — сильно не просто, на памяти есть только пример Твитера.
        Хоть реализация XMPP на Node и получилась, стоит отметить, что при ее невероятной непопулярности, там что-то отпадывает по нескольку раз на дню (пользуюсь IM через QIP). При этом Node.js довольно неплохо подходит для подобной задачи, и видимо вопрос действительно в умении готовить на чем-то другом.
  • +1
    Команде Дурова нужно выписать медаль «Legacy Fighters 2013». Сделать надмножество было, очевидно, самым простым вариантом, чем переписывать код.
    • +3
      Переписать код всего ВК на другой язык?
      Флаг вам в руки =)
      • 0
        Какой мне флаг то? Я вообще-то написал, что это тяжело. Но, на самом деле, задача на практике сводится к написанию транслятора.
        • 0
          А сопровождать это оттранслированное потом как?
          • 0
            А в чем проблема? вы же не в бинарные коды транслируете, а в похожий язык.
            • 0
              Как правило, результат подобной трансляции пригоден только для выполнения на другом языке, но внутри состоит из кучи однотипных непонятных конструкций.
              А если там ещё будет какой-нибудь оптимизатор, то совсем беда.
              • 0
                То что вы говорите представляется мне надуманным: между языками можно установить вполне четко однозначное соответствие. PHP — это C-подобный язык. Более сложная проблема — это построить соответствие API/Standard library, но и это тоже разрешимо.
                Откуда возьмутся «однотипные непонятные конструкции», если в транслирующей грамматике их не будет?
                • 0
                  php это не c-подобный язык, так как в нём нет статической типизации.
                  Следующий код будет очень тяжело перенести на си/с++, сохраняя его смысл и не добавляя костылей:
                  if ($x == 2) $y = 1 else $y = "один" $z = 2 + $y; $a = function ($x) { return $z + 2; } var_dump($a($z));
                  Либо вводить волшебный тип вроде QVariant, который умеет быть контейнером для всех используемых типов/функций/классов.
                  • 0
                    Можно переносить код на динамический язык. Если нет, то нужно делать вывод типов. Я проблему вывода типов глубоко не знаю, но вышеуказанный пример точно поддается автоматизации.
                  • +1
                    Вы уверены что такой код _действительно_ нужен?
                    Мне кажется главная проблема переноса кода с динамической типизации на статическую это не возможность жонглирования типами в рамках переменной а угадывание типа с которым нужно эту переменную объявлять.

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

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

                    Частный случай с контактом не учитываем, вполне возможно что их стиль работы может требовать определенной лапши.
                    • +1
                      Такой код, конечно, не нужен. Он был примером того, что поддерживать очень сложно.
                      Нужно — это, например, аналог Nullable из c# — вроде int/bool/ещё чего-то, что может быть ещё null и отличаться от нулевого значения этого типа. То есть обёртывание всех примитивных типов в отдельные классы.
                      Другим вопросом при конвертировании на c++ будет вопрос использования ссылок или указателей при передаче аргументов и отсутствие сборки мусора.

                      К сожалению, я не могу сказать, насколько всё плохо в случае контакта, но, видимо, если они приняли решение писать свой продукт, а не пользоваться готовым, то необходимость рефакторинга их не устраивала.
                      • 0
                        А почему именно на С++? Мы тут про С++ то и не писали :)
      • +2
        Я не вижу ничего сложного в подобной задаче. Там наверняка все разбито по сервисам, и можно постепенно заменять их по одному.
        • +1
          Сложность тут одна: на это требуются ресурсы неслабые.
  • –17
    Главное чтоб он не был очередным ёмобилем (извините за кусочек политики).
  • +2
    Я так понимаю VK не пробовали новый HipHop VM с JIT, где нет понятия «компиляция»?
    • +1
      Вы считаете, что отсутствие компиляции это безусловное благо?
    • 0
      На момент написания этого комментария у статьи уже 230 комментариев, но только 2 человека, включая вас, упомянули про HipHop VM. Печально, что большинство PHP-разработчиков не следят за этим замечательным проектом. Странно, но кажется, что даже в Вконтакте не в курсе про виртуальную машину HipHop…

      Вы случайно не знаете, когда планируется к выпуску стабильная версия HipHop VM?
      • 0
        На момент, когда у статьи уже 230 комментариев, вы статью даже не прочли и поиском по странице даже не пользовались.
        • 0
          Вообще-то статью я прочел еще вчера и поиском пользовался. Но все равно спасибо за информацию.
        • +1
          Несмотря на 230 бессмысленных комментариев хомячков, ни один не захотел увидеть бенчмарки HipHopVM vs KPHP от Vkontakte.
          Эти же бессмысленные хомячки заминусовали первый логичный и релевантный комментарий с упоминанием HopHopVM, что как-бы намекает что большинство комментируемых — школота и идиоты с отключенным мозгом, набежавшие на красную тряпку с надписью VK.
  • –2
    Решение не в стиле ВК. Хотя подоплека неизвестна, может у них кроме непосредственно бекенда сайта и АПИ еще куча сервисов на ПХП написана. Не думаю, что сам бекенд это такой уж огромный объем кода.

    Преимущества переписывания бекенда на каком-нибудь хорошем компилируемом языке, например D:
    — еще большая скорость
    — разработка на нормальном языке
    — не надо тратить время на поддержку и развитие компилятора
  • +4
    Забавно, еще никто не видел проект живьем, но уже столько мнений и критики.
  • +4
    «Создавался чемпионами ACM»
    Многие справедливо считают, что успехи в олимпиадном программировании не всегда многое значат для реальных разработок. После того, как окажется в паблике, можно будет в этом убедиться или разочароваться.
    А вообще заявление серьезное. Может быть было бы разумнее уже после успеха похвалить свою команду, чем их так выставлять, на суд)
    • +5
      Любой код (тем более только что внедренной версии), который оказывается в паблике, обязательно подвергнется критике. Независимо от того, кто его писал.
  • 0
    Было бы глупо на их месте сидеть, и ничего не делать добившись такой большой постоянной аудитории. Браво.
  • –3
    Одному мне по заголовку показалась ассоциация с КНР?
  • +2
    а потом понесется: KAJAX, KSQL, KavaScript…
  • +1
    А кто-нибудь сталкивался с такой штукой как Phalanger?
    Phalanger — это компилятор языка PHP для .NET, представляет собой язык и реализацию стандартной библиотеки совместимой с большинством существующих PHP-приложений. Также поддерживает вызов родных PHP4 расширений, что дает возможность использовать большинство PHP-функций и классов. Phalanger, для внутренних нужд, использует ASP.NET фреймворк, но только для реализации управления HTTP запросов и ответов, сессий и куки. Рендеринг страниц все еще такой же как в PHP, что дает программисту полный контроль над генерируемым кодом, а также совместимость с уже существующим кодом.
    вики

    Например WordPress + Phalanger = WP.NET с тестами производительности (улучшение в 4 раза).
    Не сочтите рекламой, но блин, выглядит красиво.
    • 0
      Сталкивался, сейчас перевожу один свой проект (не веб) на Phalanger+Gtk#. Есть некоторые проблемы, с одной стороны с поддержкой Mono (сами авторы говорят, что приоритетной платформой является windows+.net+visual studio, Mono поддерживается по остаточному принципу), с другой — с самим phalanger'ом: интеграция с .net неполна (например, нельзя напрямую создать не-дженерик делегат если существует дженерик версия такого делегата с совпадающим именем), документации мало, коммюнити довольно невелико. Плюс в том, что как минимум один человек из команды довольно оперативно отвечает на вопросы на форуме и принимает пулл-реквесты на гитхабе.
      • 0
        А первоначально ваш проект на чём написан? php? если да, то компиляция фалангером прошла успешно? был прирост производительности?
        • 0
          Это интерактивное GUI-приложение (изначально на php-gtk). На phalanger переводится не из соображений производительности, а потому, что php-gtk сейчас практически не развивается. Плюс возможность получить доступ к многопоточности, и за счет этого упростить код (блокирующийся сетевой код проще, чем неблокирующийся, хотя такое упрощение и скомпенсируется необходимостью межпоточного взаимодействия). Также надеюсь получить более отзывчивый пользовательский интерфейс, тоже благодаря многопоточности.

          Собственно, производительность не мерял, т.к. во-первых, и старая версия особых проблем не имела и во-вторых, большую часть времени приложение спит, ожидая действий пользователя.
  • –3
    прочитал заголовок «КНДР Вконтакте», удивился, только поэтому открыл

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.