Hace 14 años | Por Manwe a developers.facebook.com
Publicado hace 14 años por Manwe a developers.facebook.com

Facebook presenta HipHop, un proyecto que permite transformar php en c++ para poder aumentar el rendimiento de sus sistemas. Según Facebook, el 90% de su tráfico se sirve ahora en código c++ optimizado a partir del php original. El código se hará disponible bajo licencia libre en los próximos días.

Comentarios

Olaz

Con ese nombre seguro que vienen los de Universal a joderlo, o por lo menos aqui en España.

#19 Cierto

q

#19 Tienes toda la razón pero podría ser peor, lo podrían haber llamado regueton.

AnTiX

#23 El reggaeton ya es chungo de buscar por si solo. Alguna vez que he tenido que bajar algo para mi hermana me las he visto y deseado... "Reggaeton, reggeton, regueton, requeson?"

mzneverdies

#19 por suerte los programadores sabemos usar varias opciones de google, como el evitar palabras en la busqueda:
hiphop -music -eminem -eminem -EMINEM!

D

#19 ¿Tanto te cuesta buscar "hiphop php" o "hiphop eminem"?

La gente se ahoga en un vaso de agua.

D

#6 Yo tampoco tengo una ingeniería informática, pero no creo que haga falta una ingenería para entenderlo. lol

Aunque todo sea dicho, desconocía que existieran 'traductores'. Me parece una propuesta muy interesante.

D

#27 De hecho para crear algo como esto tampoco hace falta una ingeniería informática.

q

#27 #31 Ing. Informática es la única carrera donde se tocan esos temas en la troncalidad, lo que no quita para que tú puedas pillar bibliografía, leerte el código de GCC o lo que sea y convertirte en un experto. Pero eso no sólo pasa en informática, pasa con cualquier otra carrera.

Si os interesa el temas os recomiendo el libro del dragón, un libro digno de tener en el mejor mueble de tu casa. Si queréis algo más asequible os recomiendo mirar ANTLR que tiene un libro que no presupone conocimiento de teoría de autómatas, lo cual por cierto, también se da en la carrera.

Menda

#33 Cierto, el libro rojo o algo así creo que lo llaman también. Un tocho de aproximadamente 900 y pico páginas. Mááááma.

D

#31 Ya ves, Gates y Jobs se hicieron multimillonarios sin ningún título y sin terminar la universidad.

#33 Pues sí, en esto de la informática todo no es más que coger y ponerse. Todo lo demás es titulitis y abrirse puertas (cosa que tampoco está mal).

Gracias por las recomendaciones. A ver si los encuentro en formato ebook y los meto en mi PRS-505.

q

#46 ¿En el PRS-505 ves bien los libros técnicos? Es que estoy con ganas de hacerme con uno pero tengo la duda de si basta con un e-book normal o necesitaría un DX.

D

#50 Depende de cómo tengas ajustado el tamaño de la fuente, en qué formato cargues el documento o con qué aplicación lo conviertas a LRF (solo si lo crees más conveniente).

Pero si quieres un lector de ebooks en el que se pueda leer muy bien esquemas, gráficos, y demás cosas (supongo que con eso te referirás a '_libros_ técnicos') te recomiendo un lector de ebooks con más de 6" de pantalla, como por ejemplo el Kindle DX. Supongo que habrá modelos de otras marcas con una pantalla igual de grande que la del Kindle DX, pero desconozco cuál te convendría más por características y precio.

Te recomiendo que mires en http://www.zonaebook.com o preguntes en los foros y ahí te podrán ayudar mejor.

Detalles técnicos del Kindle DX: http://www.zonaebook.com/index.php?module=dpDocs&func=view&mid=25

k

#13 no tiene por qué ser así. En el video (www.ustream.tv/recorded/4409735) Haiping (que creo que es el desarrollador principal) comenta que obtienen un 50% de beneficio (CPU) comparando con php + memcache (o apc, ya no recuerdo), que en principio se ocupará de mantener una cache de la BD (pq es un poco inocente pensar que cada visita que haces a facebook acaba haciendo consultas a la BD en vez de recoger los datos de una de las múltiples capas de cache (memcache, proxys, caches de la BD, ...)).

Otra cosa que cuenta en ese 50% de beneficio es que comparaban PHP sobre apache a HipHop sobre su propio servidor web, ya que no necesitan muchas cosas de las que da apache (y de hecho esperan que la comunidad sea la que haga el módulo de HipHop para ejecutarse en apache, ya que de momento son incompatibles).

#12 se especula que el nombre viene de Hyper PHP (o Haiping's PHP) => HPHP => HipHop (más letras, pero más fácil de pronunciar).

#7 efectivamente HipHop siempre irá (o almenos durante un tiempo) por detrás de PHP. Lo que han liberado esta tarde funciona con PHP 5.2, pero no con PHP 5.3. Hasta que Zend no tome el desarrollo de HipHop (si ocurre algún día, cosa que nadie espera hoy por hoy), éste siempre estará por detrás de las últimas versiones de PHP

DZPM

Quien no conoce Python está condenado a reinventarlo... mal lol

q

#5 Pero es que en el caso de los generadores activos el hecho de que el código final sea ilegible es irrelevante. Tú en principio no tienes que tocar ese código final para nada, piénsalo como si fuera código binario, a parte de los crackers poca gente se pone a tocar código binario.
El objetivo es que ese código resultante sea válido y estable, que es la duda que a mí me queda porque tal y como tú dices, cada vez que Zend saque una versión nueva de php, este generador estará por detrás.

s

#2, #17: se llama compilador

q

#30 No, compilador se llama cuando el resultado es código de bajo a nivel. Sería un compilador si en lugar de C++ generara código máquina.

http://en.wikipedia.org/wiki/Compiler

s

#32: no, compilador es cuando conviertes codigo en codigo

un traductor es un tipo de compilador, pero llamarlo compilador esta bien dicho

de hecho en el propio link que has puesto lo explica:
"A compiler is a computer program (or set of programs) that transforms source code written in a computer language (the source language) into another computer language (the target language, often having a binary form known as object code). "

y luego especifica:
"The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language"

en este caso se dan las dos condiciones porque el codigo resultante es de mas bajo nivel, pero aunque no lo fuera seguiria siendo un compilador. no hace falta que genere codigo maquina

a ver si leemos un poquito

q

#34 "a ver si leemos un poquito"

/dev/null

s

#35: estas haciendo un cursillo de "unix para tontos" o algo?

en fin, encima que intento explicarte como funciona... a ver si nos educamos un poco, que ya se que aqui todos sois informaticos de sillon pero algunos hemos acabado una carrera y sabemos de lo que hablamos

q

#36 > /dev/null

Blaxter

#36 no hace falta terminar una carrera para ser agradecido, reconocer los errores propios y querer aprender.

q

#34 #36 Mira, no sé para qué me estoy molestando en contestar dada tu falta de respeto pero bueno.

"a ver si leemos un poquito"
Tú mucho me parece que tampoco lees.

En el link del que has pegado trozos también pone :

A program that translates between high-level languages is usually called a language translator, source to source translator, or language converter

A program that translates between high-level languages is usually called a language translator, source to source translator, language converter, or language rewriter. The last term is usually applied to translations that do not involve a change of language.

". a ver si nos educamos un poco, que ya se que aqui todos sois informaticos de sillon pero algunos hemos acabado una carrera y sabemos de lo que hablamos "

¿Nos conocemos? ¿A qué viene esa suposición? Estoy harto de gente como tú que se cree que en internet se puede tratar a gente que ni conoces de cualquier manera. Menos confianzas.

s

#39: al final va a ser que no sabes mucho ingles... te repito, del link que pusiste tu mismo:
"The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language"

PHP a C++ es de un lenguaj de alto nivel a otro de mas bajo nivel, por tanto segun la deficion de la wikipedia seria un compilador

de todos modos, compilador y traductor son basicamente lo mismo, se pueden usar como sinonimos en muchos casos.

q

#40

Y te repito yo también del mismo link.

A program that translates between high-level languages is usually called a language translator, source to source translator, or language converter

A program that translates between high-level languages is usually called a language translator, source to source translator, language converter, or language rewriter. The last term is usually applied to translations that do not involve a change of language.

Y sino mira la noticia del meneo:

"HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer"

Si quieres discutes con ellos también que seguro que sabes más de teoría de compiladores.

PHP es un lenguaje de alto nivel y C++ también.

"al final va a ser que no sabes mucho ingles" Que pesado eres con esos comentarios gratuitos, ¿no te lo han dicho en casa? Sobran completamente.

s

#41: paso de seguir explicandotelo, ya veo que no te entra

no pasa nada, seguro que hay otras cosas que tu si sabes hacer y yo no - no te deprimas por esto

q

#42 Explícaselo también a los de facebook anda.

Serujio85

Esto es parecido a los parsers en XML??

#41 calificar C++ de lenguaje de alto nivel es cuanto menos osado.

Serujio85

#41 Aun así estoy contigo en que si que es un traductor entre 2 lenguajes, y no un compilador.

b

Programar bajo php, un lenguaje mas amigable, sin dolor de cabeza por los tipos de datos y convertir a c++, obteneniendo mejor rendimiernto. Algo asi como el CLI de .NET pero con lenguajes de primera. Un garbage colector decente para c++ y adiós .NET y Java

s

#1 Un garbage colector decente para c++ y adiós .NET y Java
Existe el shared_ptr para eso, ¿no te parece decente?

l

El código de servidor siempre se tiene que ejecutar dentro de una máquina virtual, esta es una lección aprendida por lenguajes como Java o Erlang desde hace años. La razón son las excepciones o situaciones imprevistas, que en código de servidor son extremadamente comunes y desde luego no quieres que se te caiga el servidor por alguna de ellas, aún a costa de sacrificar en rendimiento...

En servidor es más importante de disponibilidad que el rendimiento. Supongo que Facebook se puede permitir ejecutar código C++ por que basan la alta disponibilidad en cientos o miles de servidores trabajando en alta disponibilidad. No todo el mundo se lo puede permitir.

SiCk

#15 30.000 servidores creo que se dijo hace tiempo.

Pues nada, si es libre, bienvenido sea. Se probará y al que le sirva, que lo use lol

buly

Alguien sabe porqué lo han llamado así?

alexwing

Me resulta bastante interesante, me encanta PHP como lenguaje para le web, si además se puede incrementar su potencia mejor que mejor.

derethor

Señoras que usan HipHop de after y tienen el pelo violeta

starwars_attacks

#0 cuando a tí te da por hablar de facebook, de lo guay que es y la de cosas que tiene, yo te hablo de gnewbook y de lo libre que es, que a fin de cuentas es lo único que me importa: no ser una esclava, ni privatizar internet.

http://www.gnewbook.org/

D

#25 Qué decepción. A pesar de contar con la bendición del sumo profeta Stallman, no es más que una red social prefabricada (elgg) y modificada. Yo me esperaba algo hecho '_from_ scratch', como dicen los yanquis.

starwars_attacks

#28 cojonudo que te limites a clasificar gnewbook, pero mira, a mí lo que me importa es que es libre, por encima de todas las etiquetas que le pongas.

D

#52 A mí también me gusta que sea libre, no he dicho lo contrario ni estoy etiquetando a gnewbook de nada. Solo he comentado que me ha decepcionado algo el pensar que han cogido algo prefabricado y lo han hecho a partir de ahí, en vez de empezarlo de cero y ofrecer una alternativa libre más.

starwars_attacks

#56 te entiendo, pero también les entiendo a ellos. ¿porqué empezar de cero? uno no puede salvar al mundo desde cero, y la filosofía GNU parte de aprovechar todos los recursos ya libres, creo.

de alguna manera es lógico. Sinó gasta el doble de tus fuerzas y ahora mismo no andan sobrados....

D

#17 Me refiero a que al usar eso, y después un compliador de C++ (no creo que lo quieran para ver lo bonito que es el código en C++), obtienes lo mismo que si compilases el PHP de forma que obtuvieras un código muy eficiente para ese lenguaje, así que es como un supercompliador el conjunto hiphop + g++ (p.e.). El como es importante porque da idea de que no es una definición ni mucho menos rigurosa.

Aladaris

No quiero imaginarme el infierno que tiene que ser crear un transformador(traductor, diría yo) de código ...

D

Es como un super compilador de PHP, ¿no?

q

#14 no, en todo caso es un super traductor de PHP a C++

k

ya tardaba, parece que todo hilo de informáticos acaba convirtiendose en ver quien la tiene mas larga

constantino

Facebook utiliza el Zend Framework, es una plataforma muy pesada y lenta aunque sea robusta. El codeigniter lo supera por mucho mas en cuanto al rendimiento por casi 3 veces lo que consume Zend Framework.

http://avnetlabs.com/php/php-framework-comparison-benchmarks

Dicen q uno de los obstaculos del codeigniter es q utiliza PHP 4, ahora en la version actual ya usa PHP 5 =).

Salu2

b

#54 No

Gonzo345

Joder, algo así pero a nivel universal estoy seguro de que nos hubiera venido de perlas a todos lol

Torrezzno

Lo que si es cierto, es que hacer que esto funcione es complicado. Cualquiera que sepa algo de traductores (compiladores) sabrá que es más eficiente computacionalmente hablando trabajar en ensamblador que trabajar en c++ aunque obviamente no es nada practico. El proceso de traducción de c++ a código máquina una vez obtenido el árbol semántico es bastante complejo y dependiente de la máquina y nunca llega a ser tan eficiente ya que se crea a veces código de más. En este caso pasara lo mismo y peor ya que hablamos de un lenguaje orientado a objetos convertido a otro lenguaje orientado a objetos. Pero vamos no puedo predecir el trabajo de la gente de facebook pero puede ser una buena iniciativa si sale bien y hay de verdad grandes diferencias (entre el rendimiento de correr php en el servidor o c++)