Я читал, что Facebook начинался на PHP, а затем, чтобы набрать скорость, теперь он компилирует PHP как код C ++. Если это так, почему бы им не
Просто программа на с ++? Конечно, должны быть НЕКОТОРЫЕ ошибки / ошибки при нажатии волшебной кнопки компилятора, которая портирует PHP на код C ++, верно?
Если этот впечатляющий конвертер работает так хорошо, зачем вообще придерживаться PHP? Почему бы не использовать что-то вроде Ruby или Python? Примечание. Я выбрал эти два наугад, но в основном потому, что почти все говорят, что кодирование на этих языках - «радость». Так почему бы не развиться на супер отличном языке, а затем нажать волшебную кнопку компиляции c ++?
<snark>
(Поскольку JS когда-либо можно назвать «читабельным», т.</snark>
Ответы:
Они не По крайней мере, больше. Оказалось, что выполнение этого способа вызывает слишком много проблем, включая головные боли при развертывании и сводит на нет одно из главных преимуществ использования языка сценариев в первую очередь - возможность изменять сценарии без необходимости перекомпиляции - поэтому они преобразовали систему HipHop в архитектура виртуальной машины с прозрачной фазой JIT и устаревший компилятор C ++.
Интересно, что, по-видимому, делать это таким же образом примерно в два раза быстрее (как в перформанте) по сравнению с оригинальным подходом к транскомпиляции C ++.
источник
Старший инженер Facebook Хайпин Чжао, вероятно, лучше всего ответит на ваши вопросы .
Остальная часть поста в блоге хорошо читается, и я рекомендую это. Это дает некоторое представление о проблемах программирования, с которыми сталкивается Facebook, и о том, как они пытаются решить эти проблемы.
источник
Правильно, но программирование на C ++ повлечет за собой замену всей их существующей кодовой базы - идея, известная во всем мире как совершенно глупая и разрушительная.
Потому что это, опять же, повлечет за собой замену существующей базы кода PHP.
В идеальном мире они просто программировали бы на C ++ с нуля. К сожалению, из-за того, что у них есть куча существующего кода на PHP, это невозможно. Таким образом, вместо этого они решают проблему. Это намного дешевле.
источник
they hack around the problem
? Оптимизация кода с использованием C ++ или даже ассемблера не нова, это делалось еще до появления ПК.«Действительно, почему бы не работать в ассемблере напрямую, поскольку код C ++ в конечном итоге переводится в инструкции машинного кода?»
- Это то, к чему сводится аргумент. И, надеюсь, это делает очевидным, почему это не сделано:
источник
Я не нахожусь в Facebook, но моя лучшая догадка по мотивам будет «избегать значительных рисков». На этом этапе переключение на другой язык больше не является технологическим решением: прежде всего, это бизнес-решение.
Когда вы большая компания, которая органически выросла до размера FB, вы постепенно привлекаете людей, которые затем приобретают опыт в вашей программной платформе (в случае FB, это PHP). Один за другим вы получаете несколько тысяч сотрудников с большим опытом работы с PHP. На этом этапе переключение на любой другой язык становится очень опасным: ваши инженеры не будут в курсе новой экосистемы, и им может потребоваться значительное время для достижения уровня знаний, требуемого их текущей работой, не говоря уже о повышении квалификации.
Оставляя в стороне относительные достоинства PHP и альтернативных языков, учитывая объем инвестиций FB в технологию PHP, было бы слишком высокомерно думать, что переход будет безболезненным, и слишком глупым, чтобы попробовать его. В бизнесе технологии - это средство для достижения цели, поэтому «радость» программирования даже не вступает в дискуссию.
источник
Я могу вспомнить только один крупный сайт, который был реализован на C ++. h2g2
Даже тогда текущая реализация на самом деле является интерпретатором с большим количеством встроенных функций манипулирования текстом и базой данных (разве это не похоже на ранний PHP :-)).
Facebook вполне доволен функциональностью своего сайта. Они только что выросли до такой степени, что ванильный PHP не может поддерживать объемы, которые они обрабатывают. Следовательно, компиляция PHP в машинный код C ++. Можно было бы написать полный компилятор для PHP, но они упустили бы 20 лет тонкой оптимизации, которые вошли в стек компилятора gcc. Дело в том, что код «C ++» не предназначен для того, чтобы быть читаемым или обслуживаемым человеком, это всего лишь промежуточный этап на пути к машинному коду.
Как и многие программисты на этом сайте, я чувствую, что вы недооцениваете объем работы, вложенной в бизнес-логику и функциональность, встроенные в существующие приложения, и в ценность кода для себя.
источник