Eu li que o Facebook começou em PHP e, para ganhar velocidade, agora eles compilam o PHP como código C ++. Se for esse o caso, por que não:
Basta programar em c ++? Certamente deve haver ALGUNS erros / bugs ao pressionar um botão de compilador mágico que porta PHP para código c ++, certo?
Se este impressionante conversor funciona tão bem, por que aderir ao PHP? Por que não usar algo como Ruby ou Python? Nota - escolhi esses dois aleatoriamente, mas principalmente porque quase todo mundo diz que codificar nesses idiomas é uma "alegria". Então, por que não desenvolver uma linguagem super ótima e clicar no botão de compilação c ++?
<snark>
(Na medida em que JS pode nunca ser chamado de "legível", ou seja.)</snark>
Respostas:
Eles não. Não mais, pelo menos. Acontece que fazê-lo dessa maneira causa muitos problemas, incluindo dores de cabeça na implantação e anula uma das principais vantagens do uso de uma linguagem de script em primeiro lugar - poder alterar scripts sem a necessidade de recompilar - e, assim , reformulamos o sistema HipHop para uma arquitetura de VM com uma fase JIT transparente e reprovou o compilador C ++.
Curiosamente, aparentemente fazê-lo dessa maneira também é duas vezes mais rápido (como no desempenho) que a abordagem de trans-compilação C ++ original.
fonte
O engenheiro sênior do Facebook, Haiping Zhao, provavelmente responde melhor às suas perguntas .
O restante da postagem do blog é uma boa leitura, e eu recomendo. Ele fornece algumas dicas sobre os desafios de programação que o Facebook lida e como eles estão tentando resolver esses problemas.
fonte
Certo, mas a programação em C ++ implicaria substituir toda a base de código existente - uma idéia reconhecida mundialmente por ser totalmente estúpida e devastadora.
Porque isso implicaria, novamente, substituir a base de código PHP existente.
Em um mundo ideal, eles simplesmente codificariam em C ++ do zero. Infelizmente, como eles têm uma carga de código existente no PHP, isso não é possível. Então, em vez disso, eles resolvem o problema. É muito mais barato.
fonte
they hack around the problem
? A otimização do código usando C ++ ou mesmo assembly não é novidade, faz isso desde antes de haver um PC."De fato, por que não trabalhar diretamente na montagem, já que o código C ++ é finalmente traduzido em instruções de código de máquina?"
- Isso, em essência, é a que o argumento se reduz. E espero que isso torne óbvio por que não é feito:
fonte
Não estou no Facebook, mas meu melhor palpite sobre os motivos seria "evitar riscos significativos". Nesse ponto, mudar para um idioma diferente não é mais uma decisão de tecnologia: acima de tudo, é uma decisão de negócios.
Quando você é uma grande empresa que cresceu organicamente para o tamanho do FB, atrai lentamente pessoas que adquirem experiência em sua plataforma de programação (no caso do FB, isso é PHP). Um por um, você recebe alguns milhares de funcionários com grande experiência em PHP. Nesse momento, mudar para qualquer outro idioma se torna muito perigoso: seus engenheiros não estarão atualizados com o novo ecossistema e podem exigir um tempo significativo para atingir o nível de conhecimento exigido por seus empregos atuais, sem falar em melhorar suas habilidades.
Deixando de lado os méritos relativos do PHP e as linguagens alternativas, com a quantidade de investimento que o FB fez na tecnologia PHP, seria arrogante pensar que uma opção seria indolor e tola demais para tentar. Nos negócios, a tecnologia é um meio para atingir um fim, de modo que a "alegria" da programação nem entra em discussões.
fonte
Só consigo pensar em um site importante que foi implementado em C ++. H2G2
Mesmo assim, a implementação atual é na verdade um intérprete com um grande número de funções de manipulação de texto e banco de dados embutidas (isso não soa nem um pouco como no PHP :-)).
O Facebook está bastante satisfeito com a funcionalidade do site. Eles acabaram de chegar ao ponto em que o PHP vanilla não suporta os volumes que processam. Daí a compilação do PHP no C ++, daí o código da máquina. Eles poderiam ter escrito um compilador completo para PHP, mas teriam perdido os 20 anos de otimização sutil que foram inseridos na pilha do compilador gcc. O ponto é que o código "C ++" não pode ser legível ou mantido por humanos, é apenas uma etapa intermediária no caminho para o código da máquina.
Como muitos programadores neste site, sinto que você subestima a quantidade de trabalho investido na lógica de negócios e na funcionalidade incorporada nos aplicativos existentes e no código de valor por si só.
fonte