Комментарии 88
О, как.
>Одной из задач при переводе сайта на kPHP было полное избавление от ООП.
>Одной из задач при переводе сайта на kPHP было полное избавление от ООП.
+24
А потом:
Из ближайшего — ребята планируют добавить ООП
+36
А вот и ответ подоспел:
В ВК ООП-подход почти не использовался — так что избавление от него было нужно, чтобы весь код был в едином стиле и уже работал на kPHP. Поддержка ООП понадобится уже позже, на нужном нам этапе — для удобной работы с TL, например).
То есть, в данный момент ее нет. А сайт есть :)
TL — это схема типов из обсуждаемого будущего протокола.
В ВК ООП-подход почти не использовался — так что избавление от него было нужно, чтобы весь код был в едином стиле и уже работал на kPHP. Поддержка ООП понадобится уже позже, на нужном нам этапе — для удобной работы с TL, например).
То есть, в данный момент ее нет. А сайт есть :)
TL — это схема типов из обсуждаемого будущего протокола.
+4
скомпилированный бинарник весит около 300 мегабайт
А сколько, интересно, тогда исходных кодов? Или это вместе со сторонними библиотеками?
+1
Комментарий от самого Павла:
К сожалению, никто из «знатоков» технологии HipHop не пробовал скомпилировать в нем хотя бы Hello world. Иначе вопрос «а зачем, уже есть» у них не возник бы.
+4
Не Hello World, но всё же Getting WordPress running on HHVM
+5
Ну я собирал, и статей достаточно в интернет об этом.
Или у Дурова все за пределами VK под запретом?
Или у Дурова все за пределами VK под запретом?
+13
НЛО прилетело и опубликовало эту надпись здесь
Опишите порядок действий. Было бы интересно Drupal на Hip Hop VM завести.
0
Самое интересное, что для HHVM ничего компилить не надо) «Hello world» заводится с «полпинка»)
+1
То неловкое чувство когда твой комментарий задали как вопрос разработчикам )))
+10
а еще через пару лет они напишут свой JIT компилятор. и назовут его kHIPHOP
-4
НЛО прилетело и опубликовало эту надпись здесь
Они транслируют PHP в С++, у них есть куча базовых функций, написанных на С++. Я понимаю ответ на вопрос «а почему бы сразу всё не писать на С++» — потому что долго. Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++. Это ведь не сложно — имея код на PHP, зная требуемый вход и выход — переписать то же самое на С++. Переписали одну страничку — подменили, переписали вторую — подменили. Обновился код на PHP? Ок, используем PHP, пока не дойдут руки обновить С++ версию. Это всё легко может подменяться\деплоиться автоматом, так что ни PHP ни С++ программеры не будут думать «а что там за версия сейчас будет работать?». Код ведь будет явно быстрее и лучше, чем этот KPHP сделает.
+1
И ещё одну команду которая будет с с++ на ассемблер переписывать.
+27
Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++.Дык может они и наняли команду в пару десятков С++-программистов, которые постепенно переписывали каждую имеющуюся страничку, а потом заколебались и процесс автоматизировали, а результат назвали kPHP? :)
+7
Проблема в том, что практически весь сайт — это единое целое, из-за уведомлений, инлайн-чатов и синхронизации проигрывателей. Так по одной не перепишешь.
0
Да ладно, ну какое «единое целое». Каждый запрос (браузера или аякса) — входит в какую-то одну точку, эта точка выполняет какой-то свой код, для всех точек разный. Ничего там сбитого в цельный кусок нет, я уверен.
+2
какой то трешак получается, подо все свой велосипед.
+4
Мое личное мнение: одно универсальное решение не будет лучше общей базы, которая допиливается под себя и, в свою очередь, становится базой кому-то другому.
Я бы себе велосипед, например, напечатал, если бы умел и были технологии .)
Я бы себе велосипед, например, напечатал, если бы умел и были технологии .)
+1
Тут история скорее про то, что люди, которые катаются на тротуарчиках в городе, дают совет «не изобретай велосипед» тем, кто на нём штурмует Эверест.
А им-то как раз изобретать велосипед надо.
А им-то как раз изобретать велосипед надо.
+5
Если религия не позволяет залететь на вертолете — то однозначно.
+2
Вертолет не может залететь на Эверест. Только на один из лагерей снизу, а на сам пик — только ножками. Недаром там столько трупов лежат — их не могут снять
+1
Кстати, про котят. Во времена фидо (12-13 лет назад) Андрей Лопатин ( 2:5030/744@fidonet ) написал альтернативный и достаточно популярный мейлер KittenMail, а на всяких чемпионатах по программированию его команда называлась Kitten Computing. Сейчас Лопатин, насколько я знаю, имеет непосредственное отношение к девелоперам контакта, поэтому с очень большой вероятностью именно он — источник котят в PHP :)
+11
Взглянуть бы на релизную версию и документацию.
0
Прирост в 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% быстрее).
Я уже говорил, что по приведённым графикам судить о приросте производительности очень сложно. Видно, что он есть, но какой конкретно — неизвестно, тк мы не знаем что и в каком соотношении лопало время.
Бегло прикинул прирост отталкиваясь от предположения, что 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% быстрее).
-1
НЛО прилетело и опубликовало эту надпись здесь
Никак не вспомнить, у нас тут не Аншлаг, а айтишный ресурс. Люди пытаются найти оптимум между скоростью и дешевизной разработки (ПХП) и скоростью работы (Cи++). Такие попытки двигают прогресс. А очередной коммент про мышей и кактусы просто увеличивает энтропию.
+11
НЛО прилетело и опубликовало эту надпись здесь
Опять вы петросяните… сколько можно.
-5
НЛО прилетело и опубликовало эту надпись здесь
Я уверен, что ни Фейсбук, ни ВК не знали будут ли они популярны. Монументальность хорошо для проектов, которые гарантировано дадут доход, а когда нужен быстрый и дешёвый старт, стали бы вы выбирать Cи++?
Конечно да.
Например:
ru.wikipedia.org/wiki/Cython
search.cpan.org/~nwclark/perl-5.8.9/utils/perlcc.PL
Наверное что-то ещё есть, про эти два я просто знаю. Можно поискать что-то у Руби, у других языков.
Кстати, а есть в индустрии еще примеры подобного подхода? Когда кто-то так привязывался к любимому ЯП, что писал его компилятор в С++, чтобы решить проблемы с быстродействием.
Конечно да.
Например:
ru.wikipedia.org/wiki/Cython
search.cpan.org/~nwclark/perl-5.8.9/utils/perlcc.PL
Наверное что-то ещё есть, про эти два я просто знаю. Можно поискать что-то у Руби, у других языков.
+2
Скажу пару слов в поддержку ВК, хотя я как и Вы достаточно сильно убеждён в том, что для каждой задачи есть наиболее оптимальный набор инструментов, которые позволяют её решать.
Вы все наверняка неоднократно слышали фразы вроде этой:
«Пишите на том, на чём умеете. Когда упрётесь в производительность у вас будут в распоряжении уже совсем другие ресурсы. А если не упрётесь или ресурсов не будет, то это признак того, что вы что-то делаете не так.»
или этой:
«Решайте проблемы по мере их поступления».
И вы знаете, я НЕ рискну спорить ни с одним из этих убеждений (если выбранный инструментарий не на грани абсурда или возможная проблема крайне очевидна и близка).
Более того, сам по себе PHP со многих сторон весьма не плох, если вы умеете его правильно готовить, а тех, кто умеет не так много (впрочем, как и везде). А вот тех, кто возомнил о себе (из-за низкого порога входа), что он умеет, в разы больше. Но сейчас не об этом.
ВК всегда придерживался позиции того, что если им что-то нужно — они это делают сами. Это их право, тем более, что теперь у них на это есть необходимые силы и ресурсы. Кроме того мы не видели ни одного тотального фейла из-за того, что они придерживаются этой позиции.
Почему не Java, C# или Go? Ответ на поверхности — в ВК, пожалуй, одни из лучших и опытнейших С/C++ и PHP разработчиков в Рунете (если не лучшие, ИМХО). Есть ли ВК специалисты по Java и C#? Да, по крайней мере разработчики мобильных аппов (например, Григорий Клюшников). Но сколько их? Человека 2-3 (могу ошибаться =) ). И навряд ли они обладают такими глубокими знаниями как ДОСТОПОЧТЕНЫЕ TheShade, Walrus, Филипп Дельгядо и другие гуру Java. Думаю, тут всё очевидно.
Лично для меня остался неразрешённым один вопрос — почему компилятор, а не VM? Ведь у неё, как мне кажется, гораздо более широкий набор возможностей для дальнейших оптимизаций. С другой стороны разработка VM, наверняка гораздо более трудоёмкая задача. Возможно сейчас, когда они уже экономят благодаря KPHP, ребята позволят себе разработку kotVM =)
З.Ы. ИМХО: Павел, воистину сумел создать сильнейшую команду, как по техническим знаниям, так и по сплочённости и целеустремлённости. Это заслуживает уважения.
Вы все наверняка неоднократно слышали фразы вроде этой:
«Пишите на том, на чём умеете. Когда упрётесь в производительность у вас будут в распоряжении уже совсем другие ресурсы. А если не упрётесь или ресурсов не будет, то это признак того, что вы что-то делаете не так.»
или этой:
«Решайте проблемы по мере их поступления».
И вы знаете, я НЕ рискну спорить ни с одним из этих убеждений (если выбранный инструментарий не на грани абсурда или возможная проблема крайне очевидна и близка).
Более того, сам по себе PHP со многих сторон весьма не плох, если вы умеете его правильно готовить, а тех, кто умеет не так много (впрочем, как и везде). А вот тех, кто возомнил о себе (из-за низкого порога входа), что он умеет, в разы больше. Но сейчас не об этом.
ВК всегда придерживался позиции того, что если им что-то нужно — они это делают сами. Это их право, тем более, что теперь у них на это есть необходимые силы и ресурсы. Кроме того мы не видели ни одного тотального фейла из-за того, что они придерживаются этой позиции.
Почему не Java, C# или Go? Ответ на поверхности — в ВК, пожалуй, одни из лучших и опытнейших С/C++ и PHP разработчиков в Рунете (если не лучшие, ИМХО). Есть ли ВК специалисты по Java и C#? Да, по крайней мере разработчики мобильных аппов (например, Григорий Клюшников). Но сколько их? Человека 2-3 (могу ошибаться =) ). И навряд ли они обладают такими глубокими знаниями как ДОСТОПОЧТЕНЫЕ TheShade, Walrus, Филипп Дельгядо и другие гуру Java. Думаю, тут всё очевидно.
Лично для меня остался неразрешённым один вопрос — почему компилятор, а не VM? Ведь у неё, как мне кажется, гораздо более широкий набор возможностей для дальнейших оптимизаций. С другой стороны разработка VM, наверняка гораздо более трудоёмкая задача. Возможно сейчас, когда они уже экономят благодаря KPHP, ребята позволят себе разработку kotVM =)
З.Ы. ИМХО: Павел, воистину сумел создать сильнейшую команду, как по техническим знаниям, так и по сплочённости и целеустремлённости. Это заслуживает уважения.
+7
НЛО прилетело и опубликовало эту надпись здесь
Занимаюсь коммерческой разработкой и на PHP, и на Java. Также, экспериментирую дома с разными технологиями/языками, из недавнего — Erlang. Что такого сложного может быть в мире PHP, чтобы говорить о «одни из лучших и опытнейших разработчиков в Рунете»? PHP — простой и крайне ограниченный в возможностях язык. В глубину там обучаться просто некуда. Нет, я понимаю, что рынок PHP девелоперов перенасыщен бестолочами, которым вообще к реальному коду нельзя давать прикасаться, но как-то брать их в расчет некорректно, имхо.
+1
remal, вы, верно, хотели выпендриться?
Всегда, когда читаю комменты в таком стиле, мне хочется спросить: «а вы то, сами кто?»
Не хочу никого обидеть, но уж давайте на чистоту.
Я уже 4-ый год занимаюсь созданием крупных (DAU > 1 млн.) highload проектов на php. И уж сколько за это время я повидал таких коммерсантов, которые пишут и на PHP, и на Java, и на C, и на Erlang, и с Node.js работают, и на дуде с балалайками играют… А уж сколько знатоков различных баз данных встретил уууу… Знаете в чём прикол? 99% из них — «ни о чём. три раза.». Причём, как ни странно, «ни о чём» во всех перечисленных областях знаний…
Вы, наверное, думаете: «Я не такой. Я не такой. Я не такой. Они все такие. Они все такие. Они все такие, а Я не такой.».
Ну-ну, подумаем мы все…
Ну а теперь по делу:
На мой взгляд Highload, сам по себе, прост как и всё гениальное =)
Всё искусство заключается в знании как эффективно работать с огромными наборами данных, как быстро обрабатывать сотни тысяч и миллионы хитов в минуту, понимании того, что может привести к задержкам в обработке и падению. Надо уметь принимать правильные, эффективные решения, быстро распознавать и признавать ошибки и просчёты, учиться на своих и чужих ошибках, принимать меры по их сокращению =)
Если честно, не хочется разводить тут холиваров насчёт php и его ограниченнрости. Он хорош для быстрого решения узкого круга задач.
По поводу простоты — да, простой. Это плохо? А вы знаете сложный ЯП? =)
Всегда, когда читаю комменты в таком стиле, мне хочется спросить: «а вы то, сами кто?»
Не хочу никого обидеть, но уж давайте на чистоту.
Я уже 4-ый год занимаюсь созданием крупных (DAU > 1 млн.) highload проектов на php. И уж сколько за это время я повидал таких коммерсантов, которые пишут и на PHP, и на Java, и на C, и на Erlang, и с Node.js работают, и на дуде с балалайками играют… А уж сколько знатоков различных баз данных встретил уууу… Знаете в чём прикол? 99% из них — «ни о чём. три раза.». Причём, как ни странно, «ни о чём» во всех перечисленных областях знаний…
Вы, наверное, думаете: «Я не такой. Я не такой. Я не такой. Они все такие. Они все такие. Они все такие, а Я не такой.».
Ну-ну, подумаем мы все…
Ну а теперь по делу:
На мой взгляд Highload, сам по себе, прост как и всё гениальное =)
Всё искусство заключается в знании как эффективно работать с огромными наборами данных, как быстро обрабатывать сотни тысяч и миллионы хитов в минуту, понимании того, что может привести к задержкам в обработке и падению. Надо уметь принимать правильные, эффективные решения, быстро распознавать и признавать ошибки и просчёты, учиться на своих и чужих ошибках, принимать меры по их сокращению =)
Если честно, не хочется разводить тут холиваров насчёт php и его ограниченнрости. Он хорош для быстрого решения узкого круга задач.
По поводу простоты — да, простой. Это плохо? А вы знаете сложный ЯП? =)
+2
Вот как раз потому что он ограничен в возможностях и нужны знания и опыт чтобы находить нормальные способы обхода этих ограничений. Причем определения нормальности единого нет, для каждого проекта или даже для каждой стадии развития проекта они свои.
0
Может разработчикам просто скучно писать только сайт? (=
+10
> в kPHP встроен веб-сервер
Это заметно: после ввода KPHP ответы апи стали терять последние байты, и периодически виснуть во время ответа на неограниченный срок, что для apache/fpm невозможно.
С другой стороны, хороший статический анализатор php-кода — это перспективно. Интересно, планируется ли на основе него сделать поиск потенциальных ошибок?
Это заметно: после ввода KPHP ответы апи стали терять последние байты, и периодически виснуть во время ответа на неограниченный срок, что для apache/fpm невозможно.
С другой стороны, хороший статический анализатор php-кода — это перспективно. Интересно, планируется ли на основе него сделать поиск потенциальных ошибок?
0
Все верно. Java&co — для кровавого ынтырпрайза. А статический компилятор php — это стильно, модно, молодежно!
+14
Там же ООП выпилить нельзя, так что джава не подходит.
+6
Я люблю программирование за то, что в нем нет места тро-ло-ло, а есть код, который работает. Из интервью мы узнали, что Вконтакте обладают технологией ускорения PHP-кода, но ничего нового или интересного в этой технологии нет или журналист не смог узнать об этом.
-2
Хватанули .) Я не журналист, просто часто общаюсь с разными хорошими людьми.
Какие вопросы бы задали?
Какие вопросы бы задали?
-1
Например, какие конструкции PHP не поддерживаются, можно ли самому указывать типы переменных в комментариях определенного вида,.
Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.
В общем, больше деталей для программистов.
Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.
В общем, больше деталей для программистов.
+2
Я узнал больше. VK разработали PHP-подобный язык (не подмножество, не надмножество, а пересекающиеся множества) и написали компилятор его в C++.
0
Представляю, какой когнитивный диссонанс сейчас испытывают фанаты ООП и ненавистники PHP.
А если еще эти два качества складываются…
Впрочем по комментам видно.
А если еще эти два качества складываются…
Впрочем по комментам видно.
+1
Фанаты ООП с чего должны испытывать то негативные чувства? ООП обещан и заявлен как нужный ;-)
0
Из интервью сложилось впечатление, что у них там творится какой-то ад.
+16
Забавно, только недавно хотел вернуться к своему давнему проекту, который интерпретирует любую PHP либу в си, так что бы можно было собрать расширение для PHP в виде SO файла. Все распланировал, продумал и даже придумал как быть с yield в сях. Однако теперь и не знаю, стоит-ли дальше развивать проект?
-2
Даешь транслятор из PHP в VHDL!!!
+1
VM более перспективны чем статическая компиляция. И задача джит-компиляции на порядок сложнее и интереснее чем «сгенерить с++ и оставить все оптимизации за ним» (примерная цитата разработчика вк). Так что хвастать вконтакту здесь особо и нечем. А оптимизировать пхп несложно — такой вот он неэффективный с родения
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
О kPHP: как котята ускоряют ВКонтакте