Как стать автором
Обновить

Комментарии 88

А потом:
Из ближайшего — ребята планируют добавить ООП
А не проще ли было ребятам на пхп 4.0 откатиться?
Скорость же?
А вот и ответ подоспел:
В ВК ООП-подход почти не использовался — так что избавление от него было нужно, чтобы весь код был в едином стиле и уже работал на kPHP. Поддержка ООП понадобится уже позже, на нужном нам этапе — для удобной работы с TL, например).
То есть, в данный момент ее нет. А сайт есть :)

TL — это схема типов из обсуждаемого будущего протокола.
скомпилированный бинарник весит около 300 мегабайт

А сколько, интересно, тогда исходных кодов? Или это вместе со сторонними библиотеками?
Хм… Вы думаете, они используют сторонние библиотеки?
Вы думаете, они писали веб-сервер (который входит в kPHP) с 0 сами?
А почему бы и нет, если то позволяют ресурсы?
зачем? есть куча готовых либ, реализующих HTTP сервер, libevent например
Комментарий от самого Павла:
К сожалению, никто из «знатоков» технологии HipHop не пробовал скомпилировать в нем хотя бы Hello world. Иначе вопрос «а зачем, уже есть» у них не возник бы.
Ну я собирал, и статей достаточно в интернет об этом.
Или у Дурова все за пределами VK под запретом?
Во vk лочат другие сайты. Так vk мстит за то, что в других компаниях лочат доступ к vk.
НЛО прилетело и опубликовало эту надпись здесь
Опишите порядок действий. Было бы интересно Drupal на Hip Hop VM завести.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Молодца =)

Я под debian 6 зимой HHVM настраивал) Главное было MySQL 5.5 завести на нём. Было стрёмно (ибо прод и я не гуру админ), но всё получилось)
Самое интересное, что для HHVM ничего компилить не надо) «Hello world» заводится с «полпинка»)
То неловкое чувство когда твой комментарий задали как вопрос разработчикам )))
В моем случае — то неловкое чувство, когда твоя ирония оказалась реальностью :)
а еще через пару лет они напишут свой JIT компилятор. и назовут его kHIPHOP
… и назовут его kIPkOP
у меня такое чувство что они просто обнаружили в хипхоп фатальный недостаток — его написали не они.
НЛО прилетело и опубликовало эту надпись здесь
уходим от memcache-протокола к своему собственному

обнаружили в мемкеше фатальный недостаток — его написали не они
Они транслируют PHP в С++, у них есть куча базовых функций, написанных на С++. Я понимаю ответ на вопрос «а почему бы сразу всё не писать на С++» — потому что долго. Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++. Это ведь не сложно — имея код на PHP, зная требуемый вход и выход — переписать то же самое на С++. Переписали одну страничку — подменили, переписали вторую — подменили. Обновился код на PHP? Ок, используем PHP, пока не дойдут руки обновить С++ версию. Это всё легко может подменяться\деплоиться автоматом, так что ни PHP ни С++ программеры не будут думать «а что там за версия сейчас будет работать?». Код ведь будет явно быстрее и лучше, чем этот KPHP сделает.
И ещё одну команду которая будет с с++ на ассемблер переписывать.
Транслятор c++ в машинные коды, так как у gcc, clang и msvc есть общий фатальный недостаток… :)
У машинных кодов есть один серьезный фатальный недостаток… ;)
Осталось поспорить с законами физики!
Вы пропустили этап собственной процессорной архитектуры, т.к. x86 тоже обладает фатальным недостатком.
Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++.
Дык может они и наняли команду в пару десятков С++-программистов, которые постепенно переписывали каждую имеющуюся страничку, а потом заколебались и процесс автоматизировали, а результат назвали kPHP? :)
Проблема в том, что практически весь сайт — это единое целое, из-за уведомлений, инлайн-чатов и синхронизации проигрывателей. Так по одной не перепишешь.
Да ладно, ну какое «единое целое». Каждый запрос (браузера или аякса) — входит в какую-то одну точку, эта точка выполняет какой-то свой код, для всех точек разный. Ничего там сбитого в цельный кусок нет, я уверен.
Через localstorage, насколько я помню.
habrahabr.ru/post/153937/

Хотя тут нету никаких ссылок на источники.
Ибо датамайнилось вручную
какой то трешак получается, подо все свой велосипед.
Мое личное мнение: одно универсальное решение не будет лучше общей базы, которая допиливается под себя и, в свою очередь, становится базой кому-то другому.
Я бы себе велосипед, например, напечатал, если бы умел и были технологии .)
Тут история скорее про то, что люди, которые катаются на тротуарчиках в городе, дают совет «не изобретай велосипед» тем, кто на нём штурмует Эверест.
А им-то как раз изобретать велосипед надо.
Если религия не позволяет залететь на вертолете — то однозначно.
Хоть это и не имеет отношения к посту, но я немножко в теме ;) Рекордные подскоки на Эверест у вертолетов были. Прям как в обсуждаемой статье :)
Кстати, про котят. Во времена фидо (12-13 лет назад) Андрей Лопатин ( 2:5030/744@fidonet ) написал альтернативный и достаточно популярный мейлер KittenMail, а на всяких чемпионатах по программированию его команда называлась Kitten Computing. Сейчас Лопатин, насколько я знаю, имеет непосредственное отношение к девелоперам контакта, поэтому с очень большой вероятностью именно он — источник котят в PHP :)
даже адрес его страницы в vk говорит об этом)
Взглянуть бы на релизную версию и документацию.
Интересно, почему все сравнивают только с HipHop… а как же phalcon?
Потому что HipHop — новый компилятор/VM, как и kPHP, а phalcon — фреймворк.

Сравнивать kPHP с phalcon – это как сравнивать Rubinius с Sinatra или PyPy с Flask.
Прирост в 10 раз?

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

Бегло прикинул прирост отталкиваясь от предположения, что php у них кушал 70-75% времени:
0,25 — 100%
0,1875 — 75% // PHP

другие расходы: 0,0625

С KPHP:
0,12 — 100%
0,12 — 0,0625 = 0,0575
0,0575 — 30% // KPHP

Исходя из этих примитивных расчётов можно сделать предположение о приблизительно 70% приросте производительности со стороны php (то, что раньше делал php сейчас делается на 70% быстрее).
НЛО прилетело и опубликовало эту надпись здесь
Никак не вспомнить, у нас тут не Аншлаг, а айтишный ресурс. Люди пытаются найти оптимум между скоростью и дешевизной разработки (ПХП) и скоростью работы (Cи++). Такие попытки двигают прогресс. А очередной коммент про мышей и кактусы просто увеличивает энтропию.
НЛО прилетело и опубликовало эту надпись здесь
Опять вы петросяните… сколько можно.
НЛО прилетело и опубликовало эту надпись здесь
Я уверен, что ни Фейсбук, ни ВК не знали будут ли они популярны. Монументальность хорошо для проектов, которые гарантировано дадут доход, а когда нужен быстрый и дешёвый старт, стали бы вы выбирать Cи++?
Кстати, а есть в индустрии еще примеры подобного подхода? Когда кто-то так привязывался к любимому ЯП, что писал его компилятор в С++, чтобы решить проблемы с быстродействием.

Конечно да.

Например:
ru.wikipedia.org/wiki/Cython
search.cpan.org/~nwclark/perl-5.8.9/utils/perlcc.PL

Наверное что-то ещё есть, про эти два я просто знаю. Можно поискать что-то у Руби, у других языков.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Скажу пару слов в поддержку ВК, хотя я как и Вы достаточно сильно убеждён в том, что для каждой задачи есть наиболее оптимальный набор инструментов, которые позволяют её решать.

Вы все наверняка неоднократно слышали фразы вроде этой:

«Пишите на том, на чём умеете. Когда упрётесь в производительность у вас будут в распоряжении уже совсем другие ресурсы. А если не упрётесь или ресурсов не будет, то это признак того, что вы что-то делаете не так.»

или этой:

«Решайте проблемы по мере их поступления».

И вы знаете, я НЕ рискну спорить ни с одним из этих убеждений (если выбранный инструментарий не на грани абсурда или возможная проблема крайне очевидна и близка).

Более того, сам по себе PHP со многих сторон весьма не плох, если вы умеете его правильно готовить, а тех, кто умеет не так много (впрочем, как и везде). А вот тех, кто возомнил о себе (из-за низкого порога входа), что он умеет, в разы больше. Но сейчас не об этом.

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

Почему не Java, C# или Go? Ответ на поверхности — в ВК, пожалуй, одни из лучших и опытнейших С/C++ и PHP разработчиков в Рунете (если не лучшие, ИМХО). Есть ли ВК специалисты по Java и C#? Да, по крайней мере разработчики мобильных аппов (например, Григорий Клюшников). Но сколько их? Человека 2-3 (могу ошибаться =) ). И навряд ли они обладают такими глубокими знаниями как ДОСТОПОЧТЕНЫЕ TheShade, Walrus, Филипп Дельгядо и другие гуру Java. Думаю, тут всё очевидно.

Лично для меня остался неразрешённым один вопрос — почему компилятор, а не VM? Ведь у неё, как мне кажется, гораздо более широкий набор возможностей для дальнейших оптимизаций. С другой стороны разработка VM, наверняка гораздо более трудоёмкая задача. Возможно сейчас, когда они уже экономят благодаря KPHP, ребята позволят себе разработку kotVM =)

З.Ы. ИМХО: Павел, воистину сумел создать сильнейшую команду, как по техническим знаниям, так и по сплочённости и целеустремлённости. Это заслуживает уважения.

НЛО прилетело и опубликовало эту надпись здесь
Занимаюсь коммерческой разработкой и на PHP, и на Java. Также, экспериментирую дома с разными технологиями/языками, из недавнего — Erlang. Что такого сложного может быть в мире PHP, чтобы говорить о «одни из лучших и опытнейших разработчиков в Рунете»? PHP — простой и крайне ограниченный в возможностях язык. В глубину там обучаться просто некуда. Нет, я понимаю, что рынок PHP девелоперов перенасыщен бестолочами, которым вообще к реальному коду нельзя давать прикасаться, но как-то брать их в расчет некорректно, имхо.
remal, вы, верно, хотели выпендриться?

Всегда, когда читаю комменты в таком стиле, мне хочется спросить: «а вы то, сами кто?»

Не хочу никого обидеть, но уж давайте на чистоту.

Я уже 4-ый год занимаюсь созданием крупных (DAU > 1 млн.) highload проектов на php. И уж сколько за это время я повидал таких коммерсантов, которые пишут и на PHP, и на Java, и на C, и на Erlang, и с Node.js работают, и на дуде с балалайками играют… А уж сколько знатоков различных баз данных встретил уууу… Знаете в чём прикол? 99% из них — «ни о чём. три раза.». Причём, как ни странно, «ни о чём» во всех перечисленных областях знаний…

Вы, наверное, думаете: «Я не такой. Я не такой. Я не такой. Они все такие. Они все такие. Они все такие, а Я не такой.».
Ну-ну, подумаем мы все…

Ну а теперь по делу:

На мой взгляд Highload, сам по себе, прост как и всё гениальное =)

Всё искусство заключается в знании как эффективно работать с огромными наборами данных, как быстро обрабатывать сотни тысяч и миллионы хитов в минуту, понимании того, что может привести к задержкам в обработке и падению. Надо уметь принимать правильные, эффективные решения, быстро распознавать и признавать ошибки и просчёты, учиться на своих и чужих ошибках, принимать меры по их сокращению =)

Если честно, не хочется разводить тут холиваров насчёт php и его ограниченнрости. Он хорош для быстрого решения узкого круга задач.

По поводу простоты — да, простой. Это плохо? А вы знаете сложный ЯП? =)

А спроить по поводу огромнейшего опыта и знаний у ребят, работающих в ВК, я даже смысла не вижу. Если у вас есть желание порассуждайте хотя бы отталкиваясь от опыта) если с логикой дружны, то у вас всё получится)
Вот как раз потому что он ограничен в возможностях и нужны знания и опыт чтобы находить нормальные способы обхода этих ограничений. Причем определения нормальности единого нет, для каждого проекта или даже для каждой стадии развития проекта они свои.
Может разработчикам просто скучно писать только сайт? (=
> в kPHP встроен веб-сервер

Это заметно: после ввода KPHP ответы апи стали терять последние байты, и периодически виснуть во время ответа на неограниченный срок, что для apache/fpm невозможно.

С другой стороны, хороший статический анализатор php-кода — это перспективно. Интересно, планируется ли на основе него сделать поиск потенциальных ошибок?
Там же ООП выпилить нельзя, так что джава не подходит.
Я люблю программирование за то, что в нем нет места тро-ло-ло, а есть код, который работает. Из интервью мы узнали, что Вконтакте обладают технологией ускорения PHP-кода, но ничего нового или интересного в этой технологии нет или журналист не смог узнать об этом.
Хватанули .) Я не журналист, просто часто общаюсь с разными хорошими людьми.
Какие вопросы бы задали?
Например, какие конструкции PHP не поддерживаются, можно ли самому указывать типы переменных в комментариях определенного вида,.

Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.

В общем, больше деталей для программистов.
Окей .)
Я узнал больше. VK разработали PHP-подобный язык (не подмножество, не надмножество, а пересекающиеся множества) и написали компилятор его в C++.
Представляю, какой когнитивный диссонанс сейчас испытывают фанаты ООП и ненавистники PHP.
А если еще эти два качества складываются…
Впрочем по комментам видно.
Фанаты ООП с чего должны испытывать то негативные чувства? ООП обещан и заявлен как нужный ;-)
Сейчас-то нет. Значит не так уж он самому VK нужен.
Ну, я тоже когда-то без ООП писал — жить можно, хоть и с ростом проекта, если не найти способ «разделять и властвовать» становится неудобно ))
Но ок, совсем фанатики всегда найдут повод расстроиться )))
Из интервью сложилось впечатление, что у них там творится какой-то ад.
Это хорошо, или плохо?
НЛО прилетело и опубликовало эту надпись здесь
Ну, если судить по результатам (продукту), то, по-крайней мере, неплохо. Сайт то вконтакта, несмотря на все свои нагрузки проворен, быстр и часто обновляется новыми фичами.
Забавно, только недавно хотел вернуться к своему давнему проекту, который интерпретирует любую PHP либу в си, так что бы можно было собрать расширение для PHP в виде SO файла. Все распланировал, продумал и даже придумал как быть с yield в сях. Однако теперь и не знаю, стоит-ли дальше развивать проект?
Почему бы и да?
Даешь транслятор из PHP в VHDL!!!
VM более перспективны чем статическая компиляция. И задача джит-компиляции на порядок сложнее и интереснее чем «сгенерить с++ и оставить все оптимизации за ним» (примерная цитата разработчика вк). Так что хвастать вконтакту здесь особо и нечем. А оптимизировать пхп несложно — такой вот он неэффективный с родения
Зарегистрируйтесь на Хабре, чтобы оставить комментарий