<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FayerWayer &#187; C++</title>
	<atom:link href="http://www.fayerwayer.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fayerwayer.com</link>
	<description>Dosis diarias de tecnología en español.™</description>
	<lastBuildDate>Tue, 14 Feb 2012 21:00:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>El lenguaje C++ cumple 25 años</title>
		<link>http://www.fayerwayer.com/2010/10/el-lenguaje-c-cumple-25-anos/</link>
		<comments>http://www.fayerwayer.com/2010/10/el-lenguaje-c-cumple-25-anos/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 15:15:37 +0000</pubDate>
		<dc:creator>ZooTV</dc:creator>
				<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Bjarne Stroustrup]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.fayerwayer.com/?p=320041</guid>
		<description><![CDATA[Utilizado sobre todo en videojuegos, este lenguaje se convirtió en uno de los más populares en el mundo de la programación.]]></description>
			<content:encoded><![CDATA[<div id="attachment_320401" class="wp-caption alignright" style="width: 310px"><a href="http://www2.research.att.com/~bs/homepage.html"><img class="size-medium wp-image-320401" title="Bjarne" src="http://static.betazeta.com/www.fayerwayer.com/up/2010/10/Bjarne-300x218.jpg" alt="" width="300" height="218" /></a><p class="wp-caption-text">Bjarne Stroustrup</p></div>
<p>El 14 de octubre del año 1985 salió publicada la primera guía de referencia de <strong>C++</strong>, por lo que es considerada como la fecha de “nacimiento” de este lenguaje de programación.</p>
<p>El C++ fue diseñado por <a href="http://www2.research.att.com/~bs/homepage.html" target="_blank">Bjarne Stroustrup</a> en el año 1980 (en los míticos Laboratorios Bell) como una extensión del lenguaje de programación <em>C</em>, diseñado para ser un &#8220;lenguaje de uso general&#8221;: puede correr sobre cualquier plataforma, y está en todos lados, sobre todo en videojuegos y sistemas integrados.</p>
<p>Con el correr del tiempo se fue convirtiendo en uno de los lenguajes más populares en el mundo de la informática, aunque también existen muchas personas que han terminado por odiarlo.</p>
<p><span id="more-320041"></span></p>
<p>Este éxito llevó a que en el año 1990 se reunieran las organizaciones ANSI e ISO con el objeto de definir un estándar que formalizara al lenguaje, proceso que culminó en el año 1998 cuando salió aprobado ANSI C++.</p>
<p>Una de las últimas variantes surgidas en torno a este lenguaje es C# (diseñado por Anders Hejlsberg), presentado en el año 2000 por Microsoft junto con su plataforma .NET.</p>
<p>C# es una especie de lenguaje híbrido de C++ y Java, ya que fusiona la capacidad de combinar operadores propio de C++ junto con la orientación a objetos de Java.</p>
<p>Con motivo de este aniversario en la revista Wired publicaron una interesante entrevista a Bjarne Stroustrup (quien reconoció que utiliza un computador portátil con Windows y un computador de escritorio con Linux), respondiendo a la consulta sobre la importancia del software:</p>
<blockquote><p>Cuando está bien hecho, el software es invisible. Hay varios procesadores en mi cámara digital, pero no pienso en ella como en una computadora. Hay decenas de procesadores en un auto moderno, pero seguimos pensando en él como en un auto.</p>
<p>Creo que la gente no aprecia lo mucho que dependemos del software hoy en día. Dada la complejidad de la sociedad moderna y los sistemas de transporte, no exagero al decir que la mayoría de la población simplemente moriría de hambre sin software, además de que tampoco tendríamos electricidad, calor ni teléfonos</p></blockquote>
<p><strong>Link:</strong> <a href="http://www.wired.com/thisdayintech/2010/10/1014cplusplus-released/all/1" target="_blank">Oct. 14, 1985: C++ Adds to Programming</a> <em>(Wired)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fayerwayer.com/2010/10/el-lenguaje-c-cumple-25-anos/feed/</wfw:commentRss>
		<slash:comments>115</slash:comments>
		</item>
		<item>
		<title>Facebook aplica ritmo al lenguaje PHP con HipHop</title>
		<link>http://www.fayerwayer.com/2010/02/facebook-aplica-ritmo-al-lenguaje-php-con-hiphop/</link>
		<comments>http://www.fayerwayer.com/2010/02/facebook-aplica-ritmo-al-lenguaje-php-con-hiphop/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:30:02 +0000</pubDate>
		<dc:creator>Franco Catrin</dc:creator>
				<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[HipHop]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.fayerwayer.com/?p=53822</guid>
		<description><![CDATA[Facebook está liberando como código abierto una tecnología que desarrollaron internamente que permite que sitios web escritos en PHP puedan tener un rendimiento sólo reservado para expertos programadores en C++.  El proyecto se inició hace un par de años y [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-53887" title="HipHop_logo_white" src="http://www.fayerwayer.com/up/2010/02/HipHop_logo_white.png" alt="HipHop_logo_white" width="213" height="278" />Facebook está liberando como código abierto una tecnología que desarrollaron internamente que permite que sitios web escritos en PHP puedan tener un rendimiento sólo reservado para expertos programadores en C++.  El proyecto se inició hace un par de años y luego de demostrar su efectividad, han decidido publicarlo para que otros también pueden participar en su desarrollo, y por qué no, mejorar sus propios sitios web.</p>
<p>Uno de los problemas de sitios de alta demanda como Facebook es la escalabilidad. Se trata de la capacidad de que una solución pueda crecer a medida que se le vaya exigiendo más. Un sitio con buena escalabilidad puede rendir de igual forma independiente del volumen de solicitudes o independiente de su propia complejidad. En el caso de servicios como Facebook, la escalabilidad es algo vital ya que cada vez son más los usuarios que se integran al sistema, agregando nuevo contenido y por lo tanto, más información que procesar y desplegar.  Sitios con problemas de escalabilidad han sido <em>víctimas de su propio éxito</em>, como ocurrió en los inicios de Twitter.</p>
<p>Como muchos otros sitios web de alta demanda, Facebook fue escrito en el lenguaje PHP.  Se trata de pequeños trozos de código que se ejecutan cada vez que un usuario solicita una página.  El lenguaje es bastante flexible pero tiene una restricción de diseño: Está conceptualizado como lenguaje interpretado, lo que significa que cada vez que el usuario pide una página PHP, un programa llamado intérprete debe procesar el código para convertirlo en algo ejecutable por el procesador.</p>
<p><span id="more-53822"></span>PHP es un lenguaje simple y pensado para simples mortales, por lo que sus expresiones se alejan bastante del código nativo que se ejecuta finalmente en el procesador, esto hace que el código que genera el interprete tenga que agregar operaciones innecesarias por la falta de información precisa sobre lo que el programador quiere lograr, disminuyendo el rendimiento final.</p>
<p>La distancia entre PHP y el código de máquina (o código nativo) es suficientemente amplia como para que sitios como Facebook estén interesados en acercar el código original al código que corre finalmente en el procesador.  Hay que pensar que Facebook ejecuta unas 400 mil millones de solicitudes al mes, que equivalen a unas 13 mil millones de solicitudes por día.  En estos casos, cualquier mejora por mínima que sea es bienvenida.</p>
<h2>¡Ya, ya! Pero ¿Qué tiene que ver HipHop?</h2>
<p>Hace un par de años, en Facebook vieron que las optimizaciones existentes para PHP eran insuficientes.  En este ámbito una técnica usual es compilar el código PHP a código nativo para no tener que usar un intérprete, pero al final el código que se ejecuta también tiene el problema de agregar operaciones innecesarias, sólo se ahorra el tiempo que el intérprete hubiera ocupado para realizar la conversión.</p>
<p>Otra técnica disponible es implementar parte de la aplicación en un lenguaje cercano a la máquina como C++ y llamar a estos pedacitos veloces desde PHP.  El problema es que esta combinación hace que el código final sea mucho más complejo, y un detalle no menor: También se necesitan buenos programadores en C++, lo que limitaría la capacidad de crecimiento de un sitio como Facebook.</p>
<p>Lo que hizo finalmente Facebook es crear HipHop, se trata de un procesador de código que convierte código escrito en PHP en código C++ puro.  Este código luego se compila con el tradicional g++ (parte de GCC / GNU Compiler Collection) para obtener código nativo optimizado que es funcionalmente equivalente al código original en PHP.</p>
<p>En palabras no tan técnicas, HipHop permite que cualquier desarrollador que escriba PHP logre código final que se ejecuta con el rendimiento del código nativo escrito por un programador experto&#8230; Claro que <a href="http://en.wiktionary.org/wiki/your_mileage_may_vary"><em>your mileage may vary</em></a>.</p>
<p>Previamente en Facebook habían realizado algunas mejoras a PHP que fueron enviadas al proyecto principal para que formaran parte del código original, pero no se logró gran mejora.  Otra alternativa era reescribir Facebook en C++, pero eso podría haber detenido el desarrollo de Facebook por mucho tiempo. La gracia de tener un conversor que tome código original en PHP es que los desarrolladores pueden seguir escribiendo su código como siempre y HipHop se encarga de prepararlo para que g++ lo optimice y convierta en código nativo.</p>
<p>La sintaxis de PHP tiene algunas similitudes con C++ por lo que la idea no es tan descabellada.  Si se evita usar las características dinámicas del lenguaje y se escribe pensando en que el código será convertido a C++, HipHop puede procesarlo sin mayor dificultad.</p>
<p><strong>Link:</strong> <a href="http://developers.facebook.com/news.php?blog=1&amp;story=358">HipHop for PHP &#8211; Move fast</a> <em>(Facebook Developers)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fayerwayer.com/2010/02/facebook-aplica-ritmo-al-lenguaje-php-con-hiphop/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
		<item>
		<title>Microsoft &#8220;libera&#8221; C# y CLI</title>
		<link>http://www.fayerwayer.com/2009/07/microsoft-libera-c-y-cli/</link>
		<comments>http://www.fayerwayer.com/2009/07/microsoft-libera-c-y-cli/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:00:21 +0000</pubDate>
		<dc:creator>ZooTV</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.fayerwayer.com/?p=30966</guid>
		<description><![CDATA[Desde hace un tiempo que se viene discutiendo la conveniencia de utilizar Mono (Implementación Open Source de la plataforma .NET de Microsoft), debido a las demandas que podría presentar Microsoft por su uso. De hecho el tema había sido advertido [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-30982" title="mono-gorilla-aqua100px" src="http://www.fayerwayer.com/up/2009/07/mono-gorilla-aqua100px.png" alt="" width="100" height="120" /></p>
<p>Desde hace un tiempo que se viene discutiendo la conveniencia de utilizar <a href="http://www.mono-project.com/Main_Page" target="_blank">Mono</a> (Implementación Open Source de la plataforma .NET de Microsoft), debido a las demandas que podría presentar <a href="http://www.fayerwayer.com/?s=microsoft" target="_blank">Microsoft</a> por su uso.</p>
<p>De hecho el tema había sido advertido por Richard M. Stallman <a href="http://www.fsf.org/news/dont-depend-on-mono" target="_blank">en una publicación</a>, luego que los encargados de la distribución Debian anunciaran que no incluirían Mono en su principal modo de instalación de GNOME.</p>
<p>Al parecer la discusión llegó a oídos de Microsoft (era que no), quienes rápidamente salieron al paso señalando que no pensaban emprender acciones legales contra aquellos que utilizaran C# y CLI (Common Language Insfraestructure), por lo que todas las implementaciones de Mono no corren peligro.</p>
<p>Lo anterior fue posible gracias a que Microsoft incorporó a C# y CLI dentro de su iniciativa <a href="http://www.microsoft.com/interop/community/default.aspx" target="_blank">Community Promise</a>, por medio de la cual la compañía se compromete a no ejecutar demandas ante cualquiera que haga uso de cualquier implementación que este cubierta bajo cualquier tipo de modelo de desarrollo o distribución, incluyendo las licencias open source como LGPL o la GPL.</p>
<p>No han faltado quienes han criticado a Microsoft por lo liviano que puede resultar este compromiso de no iniciar acciones legales, pero no hay que olvidar que estamos hablando de una compañía que basa su negocio en el secreto de su código fuente.</p>
<p><strong>Link:</strong> <a href="http://www.theregister.co.uk/2009/07/07/mono_microsoft_promise/" target="_blank">Microsoft promises no patent prosecution of open-source .NET</a> <em>(The Register)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fayerwayer.com/2009/07/microsoft-libera-c-y-cli/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Pixel City: Ciudad generada dinámicamente por computadora</title>
		<link>http://www.fayerwayer.com/2009/05/pixel-city-ciudad-generada-dinamicamente-por-computadora/</link>
		<comments>http://www.fayerwayer.com/2009/05/pixel-city-ciudad-generada-dinamicamente-por-computadora/#comments</comments>
		<pubDate>Sat, 16 May 2009 12:17:19 +0000</pubDate>
		<dc:creator>Boxbyte</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Procedimientos]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.fayerwayer.com/?p=26425</guid>
		<description><![CDATA[Pixel City es un procedimiento para generar una ciudad 3D en tiempo de ejecución escrito en C++ y usando OpenGL que igual se puede ejecutar en maquinas viejas (de 5 años o menos) como screensaver para Windows. Este procedimiento es [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: center"><p><a href="http://www.fayerwayer.com/2009/05/pixel-city-ciudad-generada-dinamicamente-por-computadora/"><em>Click aqui para ver el video.</em></a></p></p>
<p><a href="http://flowingdata.com/2009/05/14/pixel-city-computer-generated-city/" target="_blank">Pixel City</a> es un <a href="http://en.wikipedia.org/wiki/Procedural_generation" target="_blank">procedimiento para generar</a> una ciudad 3D en tiempo de ejecución escrito en C++ y usando OpenGL que igual se puede ejecutar en maquinas viejas (de 5 años o menos) <a href="http://code.google.com/p/pixelcity/" target="_blank">como screensaver para Windows</a>. Este procedimiento es creado y explicado a detalle en <a href="http://www.shamusyoung.com/twentysidedtale/?p=2940" target="_blank">10 pasos por el creador Shamus Young</a>, al que le tomo 50 horas de trabajo.</p>
<p>El resultado es una ciudad con 1,700 edificios y 43,000 polígonos generados aleatoriamente, sin utilizar la asistencia de <em><a href="http://es.wikipedia.org/wiki/Pixel_Shader" target="_blank">pixel shaders</a> </em>o <em><a href="http://es.wikipedia.org/wiki/Vertex_Shader" target="_blank">vertex shaders</a></em>, que se ejecutan directamente en <a href="http://www.chw.net/tag/vertex-shader+pixel-shader/" target="_blank">tarjetas de video 3D modernas</a>.</p>
<p>Sin duda un trabajo increíble después del <a href="http://www.introversion.co.uk/subversion/" target="_blank">documentado</a> <a href="http://en.wikipedia.org/wiki/Subversion_(computer_game)" target="_blank">juego Subversion</a> que usa contenidos generado por procedimientos, o bien el juego alemán de <a href="http://es.wikipedia.org/wiki/Acci%C3%B3n_en_primera_persona" target="_blank">disparos en primera persona</a> <em><a href="http://en.wikipedia.org/wiki/Kkrieger" target="_blank">.kkrieger</a></em> de apenas 176Kb.</p>
<p>Creo que la generación de mundos virtuales e inteligencia artificial mediante procedimientos dinámicos no está tan lejos de la ciencia ficción y me hacen recordar un poco la película <em><a href="http://es.wikipedia.org/wiki/The_Thirteenth_Floor" target="_blank">The Thirteenth Floor</a></em>.</p>
<p><strong>Link:</strong> <a href="http://digg.com/design/Pixel_City_Computer_generated_City" target="_blank">Pixel City: Computer-generated City</a> <em>(Digg)</em><a href="http://digg.com/design/Pixel_City_Computer_generated_City"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fayerwayer.com/2009/05/pixel-city-ciudad-generada-dinamicamente-por-computadora/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
	</channel>
</rss>

