315 meneos

Facebook anuncia HipHop: Un transformador de código (EN)

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.

etiquetas: facebook, hiphop, php, c++
negativos: 0   usuarios: 168   anónimos: 147  
compartir:  twitter  facebook  tuenti  
  1. #1   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 :-P
    37  votos: 10   link
    el 02-02-2010 19:53 UTC por blackhattrick blackhattrick
  2. #2   Transformador queda raro, se suelen llamar traductores. En gnome hay un sector que recela de Mono pero que desea un lenguaje de más alto nivel para lo cual han creado los traductores Vala y Genie que generan C desde código similar a C# y Python respectivamente.
    El problema de los traductores es que requieren mucho trabajo de mantenimiento así que falta ver hasta que punto resulta estable el código generado.
    50  votos: 5   link
    el 02-02-2010 22:39 UTC por quicksort quicksort
  3. #3   #2 La verdad es que pensar en un traductor de código hace recelar y pensar que el código no puede ser muy bueno o estable. Lo que parece remarcable en este caso es que según el artículo, el 90% del tráfico servido por facebook ya está usando el código generado por este eproyecto. Aunque se vaya a liberar ahora es un código que ha sido probado en uno lo de los sitios con más tráfico de internet.

    We are proud to say that at this point, we are serving over 90% of our Web traffic using HipHop
    83  votos: 8   link
    el 03-02-2010 06:27 UTC por Manwe Manwe
  4. #4   Me resulta bastante interesante, me encanta PHP como lenguaje para le web, si además se puede incrementar su potencia mejor que mejor. ;)
    19  votos: 1   link
    el 03-02-2010 08:32 UTC por alexwing alexwing
  5. #5   #3: Pero esto implica que cada vez que se quiera hacer una modificación del código se haga primero en php y luego se aplique la transformación. Seguro que el codigo generado resultante es casi ilegible.

    Lo digo porque lo sufro mis carnes con una herramienta 4GL de IBM que genera java.
    65  votos: 7   link
    el 03-02-2010 08:33 UTC por Slant Slant
  6. #6   buen en representación de la parte de meneame que no estudió ingeniería informática añadiré un:

    WHAT THE FUCK!?!??

    :-P
    78  votos: 11   link
    el 03-02-2010 09:18 UTC por atenuart atenuart
  7. #7   #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.
    39  votos: 4   link
    el 03-02-2010 09:40 UTC por quicksort quicksort
  8. #8   Joder, algo así pero a nivel universal estoy seguro de que nos hubiera venido de perlas a todos xD
    6  votos: 0   link
    el 03-02-2010 09:42 UTC por Gonzo345 Gonzo345
  9. #9   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++)
    6  votos: 0   link
    el 03-02-2010 09:49 UTC por Branindor Branindor
  10. 7  votos: 0   link
    el 03-02-2010 09:49 UTC por morefeo morefeo
  11. #11   Quien no conoce Python está condenado a reinventarlo... mal xD
    52  votos: 5   link
    el 03-02-2010 09:50 UTC por DZPM DZPM
  12. #12   Alguien sabe porqué lo han llamado así?
    22  votos: 2   link
    el 03-02-2010 09:53 UTC por buly buly
  13. #13   En otro blog leí un enfoque bastante interesante de este tema. Se supone que PHP es un lenguaje para la web, casi exclusivamente. Esto no quiere decir que no sirva para otras cosas, pero creo que todos estaremos de acuerdo en que no es de propósito general.

    Dicho esto, la mejora que propone Facebook les servirá para ahorrar tiempo de CPU, pero en el campo de las aplicaciones web lo que realmente ralentiza el sistema son los tiempos de espera por I/O. Los scripts hacen peticiones a recursos externos como aplicaciones o bases de datos y se quedan esperando la respuesta. Por tanto, el ahorrar CPU no tiene tanto sentido cuando los cuellos de botella están en otros sitios ¿no?

    En resumen, esta mejora es más atractiva para el caso concreto de Facebook donde los tiempos de espera por I/O están más optimizados, que para PHP en general.
    56  votos: 5   link
    el 03-02-2010 10:05 UTC por equisdx equisdx
  14. #14   Es como un super compilador de PHP, ¿no?
    7  votos: 0   link
    el 03-02-2010 10:13 UTC por --138754-- --138754--
  15. #15   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.
    24  votos: 2   link
    el 03-02-2010 10:15 UTC por leviatan leviatan
  16. #16   #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 xD
    10  votos: 0   link
    el 03-02-2010 10:16 UTC por SiCk SiCk
  17. #17   #14 no, en todo caso es un super traductor de PHP a C++
    6  votos: 0   link
    el 03-02-2010 10:18 UTC por quicksort quicksort
  18. #18   #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.
    13  votos: 1   link
    el 03-02-2010 10:34 UTC por --138754-- --138754--
  19. #19   Yo solo le veo un problema a todo esto....
    Que se llame hiphop va a crear un problema muy serio en google, los raperos se encontraran tutoriales y los programadores tendran que esquivar a eminem o a violadores del verso entre los resultados.

    Puede sonar a broma, pero creo que puede ser un inconveniente y una molestia innecesaria.
    154  votos: 18   link
    el 03-02-2010 10:35 UTC por AnTiX AnTiX
  20. #20   Señoras que usan HipHop de after y tienen el pelo violeta
    19  votos: 1   link
    el 03-02-2010 10:52 UTC por derethor derethor
  21. #21   #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
    34  votos: 3   link
    el 03-02-2010 11:12 UTC por kiusap kiusap
  22. #22   Con ese nombre seguro que vienen los de Universal a joderlo, o por lo menos aqui en España.

    #19 Cierto
    7  votos: 0   link
    el 03-02-2010 11:31 UTC por Olaz Olaz
  23. #23   #19 Tienes toda la razón pero podría ser peor, lo podrían haber llamado regueton.
    6  votos: 0   link
    el 03-02-2010 12:02 UTC por quicksort quicksort
  24. #24   #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?"
    6  votos: 0   link
    el 03-02-2010 12:36 UTC por AnTiX AnTiX
  25. #25   #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.

    www.gnewbook.org/
    18  votos: 1   link
    el 03-02-2010 12:37 UTC por starwars_attacks starwars_attacks
  26. #26   No quiero imaginarme el infierno que tiene que ser crear un transformador(traductor, diría yo) de código ...
    9  votos: 0   link
    el 03-02-2010 12:58 UTC por Aladaris Aladaris
  27. #27   #6 Yo tampoco tengo una ingeniería informática, pero no creo que haga falta una ingenería para entenderlo. xD

    Aunque todo sea dicho, desconocía que existieran 'traductores'. Me parece una propuesta muy interesante.
    10  votos: 0   link
    el 03-02-2010 13:21 UTC por --11273-- --11273--
  28. #28   #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.
    10  votos: 0   link
    el 03-02-2010 13:27 UTC por --11273-- --11273--
  29. #29   #19 por suerte los programadores sabemos usar varias opciones de google, como el evitar palabras en la busqueda:
    hiphop -music -eminem -eminem -EMINEM!
    27  votos: 2   link
    el 03-02-2010 13:29 UTC por mzneverdies mzneverdies
  30. #30   #2, #17: se llama compilador
    15  votos: 1   link
    el 03-02-2010 13:53 UTC por sb3 sb3
  31. #31   #27 De hecho para crear algo como esto tampoco hace falta una ingeniería informática. :-P
    10  votos: 0   link
    el 03-02-2010 13:58 UTC por rodz rodz
  32. #32   #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.

    en.wikipedia.org/wiki/Compiler
    -3  votos: 1   link
    el 03-02-2010 14:20 UTC por quicksort quicksort
  33. #33   #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.
    22  votos: 2   link
    el 03-02-2010 14:31 UTC por quicksort quicksort
  34. #34   #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 :-)
    15  votos: 1   link
    el 03-02-2010 14:35 UTC por sb3 sb3
  35. #35   #34 "a ver si leemos un poquito"

    /dev/null
    -3  votos: 1   link
    el 03-02-2010 14:41 UTC por quicksort quicksort
  36. #36   #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 :-)
    15  votos: 1   link
    el 03-02-2010 14:53 UTC por sb3 sb3
  37. #37   #36 > /dev/null
    -10  votos: 2   link
    el 03-02-2010 15:09 UTC por quicksort quicksort
  38. #38   #36 no hace falta terminar una carrera para ser agradecido, reconocer los errores propios y querer aprender.
    9  votos: 0   link
    el 03-02-2010 15:11 UTC por Blaxter Blaxter
  39. #39   #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.
    6  votos: 0   link
    el 03-02-2010 15:21 UTC por quicksort quicksort
  40. #40   #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.
    6  votos: 0   link
    el 03-02-2010 15:38 UTC por sb3 sb3
  41. #41   #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.
    6  votos: 0   link
    el 03-02-2010 15:44 UTC por quicksort quicksort
  42. #42   #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
    6  votos: 0   link
    el 03-02-2010 15:47 UTC por sb3 sb3
  43. #43   #42 Explícaselo también a los de facebook anda.
    6  votos: 0   link
    el 03-02-2010 15:50 UTC por quicksort quicksort
  44. #44   #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.
    9  votos: 0   link
    el 03-02-2010 15:56 UTC por Menda Menda
  45. #45   ya tardaba, parece que todo hilo de informáticos acaba convirtiendose en ver quien la tiene mas larga
    6  votos: 0   link
    el 03-02-2010 18:55 UTC por kudeiro kudeiro
  46. #46   #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.
    10  votos: 0   link
    el 03-02-2010 19:25 UTC por --11273-- --11273--
  47. #47   Esto es parecido a los parsers en XML??

    #41 calificar C++ de lenguaje de alto nivel es cuanto menos osado.
    6  votos: 0   link
    el 03-02-2010 20:02 UTC por Serujio85 Serujio85
  48. #48   #19 ¿Tanto te cuesta buscar "hiphop php" o "hiphop eminem"?

    La gente se ahoga en un vaso de agua. :-P
    6  votos: 0   link
    el 03-02-2010 20:07 UTC por Malversan Malversan
  49. #49   #41 Aun así estoy contigo en que si que es un traductor entre 2 lenguajes, y no un compilador.
    6  votos: 0   link
    el 03-02-2010 20:07 UTC por Serujio85 Serujio85
  50. #50   #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.
    6  votos: 0   link
    el 03-02-2010 20:32 UTC por quicksort quicksort
  51. #51   #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 www.zonaebook.com o preguntes en los foros y ahí te podrán ayudar mejor.

    Detalles técnicos del Kindle DX: www.zonaebook.com/index.php?module=dpDocs&func=view&mid=25
    16  votos: 1   link
    el 04-02-2010 09:27 UTC por --11273-- --11273--
  52. #52   #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.
    8  votos: 0   link
    el 04-02-2010 14:25 UTC por starwars_attacks starwars_attacks
  53. #53   #1 Un garbage colector decente para c++ y adiós .NET y Java
    Existe el shared_ptr para eso, ¿no te parece decente?
    8  votos: 0   link
    el 04-02-2010 15:06 UTC por ANPez ANPez
  54. #54   #54 No
    6  votos: 0   link
    el 04-02-2010 17:34 UTC por blackhattrick blackhattrick
  55. #55   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.

    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
    6  votos: 0   link
    el 04-02-2010 18:39 UTC por constantino constantino
  56. #56   #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. :-P
    10  votos: 0   link
    el 05-02-2010 18:10 UTC por --11273-- --11273--
  57. #57   #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....
    8  votos: 0   link
    el 06-02-2010 18:29 UTC por starwars_attacks starwars_attacks
comentarios cerrados

menéame