Comments 88
О, как.
>Одной из задач при переводе сайта на kPHP было полное избавление от ООП.
>Одной из задач при переводе сайта на kPHP было полное избавление от ООП.
А потом:
Из ближайшего — ребята планируют добавить ООП
А вот и ответ подоспел:
В ВК ООП-подход почти не использовался — так что избавление от него было нужно, чтобы весь код был в едином стиле и уже работал на kPHP. Поддержка ООП понадобится уже позже, на нужном нам этапе — для удобной работы с TL, например).
То есть, в данный момент ее нет. А сайт есть :)
TL — это схема типов из обсуждаемого будущего протокола.
В ВК ООП-подход почти не использовался — так что избавление от него было нужно, чтобы весь код был в едином стиле и уже работал на kPHP. Поддержка ООП понадобится уже позже, на нужном нам этапе — для удобной работы с TL, например).
То есть, в данный момент ее нет. А сайт есть :)
TL — это схема типов из обсуждаемого будущего протокола.
скомпилированный бинарник весит около 300 мегабайт
А сколько, интересно, тогда исходных кодов? Или это вместе со сторонними библиотеками?
Комментарий от самого Павла:
К сожалению, никто из «знатоков» технологии HipHop не пробовал скомпилировать в нем хотя бы Hello world. Иначе вопрос «а зачем, уже есть» у них не возник бы.
Не Hello World, но всё же Getting WordPress running on HHVM
Ну я собирал, и статей достаточно в интернет об этом.
Или у Дурова все за пределами VK под запретом?
Или у Дурова все за пределами VK под запретом?
UFO just landed and posted this here
Самое интересное, что для HHVM ничего компилить не надо) «Hello world» заводится с «полпинка»)
То неловкое чувство когда твой комментарий задали как вопрос разработчикам )))
а еще через пару лет они напишут свой JIT компилятор. и назовут его kHIPHOP
UFO just landed and posted this here
Они транслируют PHP в С++, у них есть куча базовых функций, написанных на С++. Я понимаю ответ на вопрос «а почему бы сразу всё не писать на С++» — потому что долго. Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++. Это ведь не сложно — имея код на PHP, зная требуемый вход и выход — переписать то же самое на С++. Переписали одну страничку — подменили, переписали вторую — подменили. Обновился код на PHP? Ок, используем PHP, пока не дойдут руки обновить С++ версию. Это всё легко может подменяться\деплоиться автоматом, так что ни PHP ни С++ программеры не будут думать «а что там за версия сейчас будет работать?». Код ведь будет явно быстрее и лучше, чем этот KPHP сделает.
И ещё одну команду которая будет с с++ на ассемблер переписывать.
Но почему бы не писать всё на PHP, держа параллельно команду в пару десятков С++ программистов, которая бы переписывала постепенно каждую имеющуюся страничку на С++.Дык может они и наняли команду в пару десятков С++-программистов, которые постепенно переписывали каждую имеющуюся страничку, а потом заколебались и процесс автоматизировали, а результат назвали kPHP? :)
Проблема в том, что практически весь сайт — это единое целое, из-за уведомлений, инлайн-чатов и синхронизации проигрывателей. Так по одной не перепишешь.
Да ладно, ну какое «единое целое». Каждый запрос (браузера или аякса) — входит в какую-то одну точку, эта точка выполняет какой-то свой код, для всех точек разный. Ничего там сбитого в цельный кусок нет, я уверен.
какой то трешак получается, подо все свой велосипед.
Мое личное мнение: одно универсальное решение не будет лучше общей базы, которая допиливается под себя и, в свою очередь, становится базой кому-то другому.
Я бы себе велосипед, например, напечатал, если бы умел и были технологии .)
Я бы себе велосипед, например, напечатал, если бы умел и были технологии .)
Тут история скорее про то, что люди, которые катаются на тротуарчиках в городе, дают совет «не изобретай велосипед» тем, кто на нём штурмует Эверест.
А им-то как раз изобретать велосипед надо.
А им-то как раз изобретать велосипед надо.
Если религия не позволяет залететь на вертолете — то однозначно.
Вертолет не может залететь на Эверест. Только на один из лагерей снизу, а на сам пик — только ножками. Недаром там столько трупов лежат — их не могут снять
Кстати, про котят. Во времена фидо (12-13 лет назад) Андрей Лопатин ( 2:5030/744@fidonet ) написал альтернативный и достаточно популярный мейлер KittenMail, а на всяких чемпионатах по программированию его команда называлась Kitten Computing. Сейчас Лопатин, насколько я знаю, имеет непосредственное отношение к девелоперам контакта, поэтому с очень большой вероятностью именно он — источник котят в PHP :)
Взглянуть бы на релизную версию и документацию.
Прирост в 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% быстрее).
UFO just landed and posted this here
Никак не вспомнить, у нас тут не Аншлаг, а айтишный ресурс. Люди пытаются найти оптимум между скоростью и дешевизной разработки (ПХП) и скоростью работы (Cи++). Такие попытки двигают прогресс. А очередной коммент про мышей и кактусы просто увеличивает энтропию.
UFO just landed and posted this here
Опять вы петросяните… сколько можно.
UFO just landed and posted this here
Я уверен, что ни Фейсбук, ни ВК не знали будут ли они популярны. Монументальность хорошо для проектов, которые гарантировано дадут доход, а когда нужен быстрый и дешёвый старт, стали бы вы выбирать 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
Наверное что-то ещё есть, про эти два я просто знаю. Можно поискать что-то у Руби, у других языков.
Скажу пару слов в поддержку ВК, хотя я как и Вы достаточно сильно убеждён в том, что для каждой задачи есть наиболее оптимальный набор инструментов, которые позволяют её решать.
Вы все наверняка неоднократно слышали фразы вроде этой:
«Пишите на том, на чём умеете. Когда упрётесь в производительность у вас будут в распоряжении уже совсем другие ресурсы. А если не упрётесь или ресурсов не будет, то это признак того, что вы что-то делаете не так.»
или этой:
«Решайте проблемы по мере их поступления».
И вы знаете, я НЕ рискну спорить ни с одним из этих убеждений (если выбранный инструментарий не на грани абсурда или возможная проблема крайне очевидна и близка).
Более того, сам по себе 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 =)
З.Ы. ИМХО: Павел, воистину сумел создать сильнейшую команду, как по техническим знаниям, так и по сплочённости и целеустремлённости. Это заслуживает уважения.
UFO just landed and posted this here
Занимаюсь коммерческой разработкой и на PHP, и на Java. Также, экспериментирую дома с разными технологиями/языками, из недавнего — Erlang. Что такого сложного может быть в мире PHP, чтобы говорить о «одни из лучших и опытнейших разработчиков в Рунете»? PHP — простой и крайне ограниченный в возможностях язык. В глубину там обучаться просто некуда. Нет, я понимаю, что рынок PHP девелоперов перенасыщен бестолочами, которым вообще к реальному коду нельзя давать прикасаться, но как-то брать их в расчет некорректно, имхо.
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 и его ограниченнрости. Он хорош для быстрого решения узкого круга задач.
По поводу простоты — да, простой. Это плохо? А вы знаете сложный ЯП? =)
Вот как раз потому что он ограничен в возможностях и нужны знания и опыт чтобы находить нормальные способы обхода этих ограничений. Причем определения нормальности единого нет, для каждого проекта или даже для каждой стадии развития проекта они свои.
Может разработчикам просто скучно писать только сайт? (=
> в kPHP встроен веб-сервер
Это заметно: после ввода KPHP ответы апи стали терять последние байты, и периодически виснуть во время ответа на неограниченный срок, что для apache/fpm невозможно.
С другой стороны, хороший статический анализатор php-кода — это перспективно. Интересно, планируется ли на основе него сделать поиск потенциальных ошибок?
Это заметно: после ввода KPHP ответы апи стали терять последние байты, и периодически виснуть во время ответа на неограниченный срок, что для apache/fpm невозможно.
С другой стороны, хороший статический анализатор php-кода — это перспективно. Интересно, планируется ли на основе него сделать поиск потенциальных ошибок?
Все верно. Java&co — для кровавого ынтырпрайза. А статический компилятор php — это стильно, модно, молодежно!
Там же ООП выпилить нельзя, так что джава не подходит.
Я люблю программирование за то, что в нем нет места тро-ло-ло, а есть код, который работает. Из интервью мы узнали, что Вконтакте обладают технологией ускорения PHP-кода, но ничего нового или интересного в этой технологии нет или журналист не смог узнать об этом.
Хватанули .) Я не журналист, просто часто общаюсь с разными хорошими людьми.
Какие вопросы бы задали?
Какие вопросы бы задали?
Например, какие конструкции PHP не поддерживаются, можно ли самому указывать типы переменных в комментариях определенного вида,.
Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.
В общем, больше деталей для программистов.
Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.
В общем, больше деталей для программистов.
Я узнал больше. VK разработали PHP-подобный язык (не подмножество, не надмножество, а пересекающиеся множества) и написали компилятор его в C++.
Представляю, какой когнитивный диссонанс сейчас испытывают фанаты ООП и ненавистники PHP.
А если еще эти два качества складываются…
Впрочем по комментам видно.
А если еще эти два качества складываются…
Впрочем по комментам видно.
Фанаты ООП с чего должны испытывать то негативные чувства? ООП обещан и заявлен как нужный ;-)
Из интервью сложилось впечатление, что у них там творится какой-то ад.
Забавно, только недавно хотел вернуться к своему давнему проекту, который интерпретирует любую PHP либу в си, так что бы можно было собрать расширение для PHP в виде SO файла. Все распланировал, продумал и даже придумал как быть с yield в сях. Однако теперь и не знаю, стоит-ли дальше развивать проект?
Даешь транслятор из PHP в VHDL!!!
VM более перспективны чем статическая компиляция. И задача джит-компиляции на порядок сложнее и интереснее чем «сгенерить с++ и оставить все оптимизации за ним» (примерная цитата разработчика вк). Так что хвастать вконтакту здесь особо и нечем. А оптимизировать пхп несложно — такой вот он неэффективный с родения
Sign up to leave a comment.
О kPHP: как котята ускоряют ВКонтакте