<?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>Geeks &#38; Linux Atelier! &#187; newbies</title>
	<atom:link href="http://www.glatelier.org/tag/newbies/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.glatelier.org</link>
	<description>El Taller de GNU/Linux..., pero Chileno!</description>
	<lastBuildDate>Wed, 08 Feb 2012 18:12:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Programación para Newbies VII: Ingredientes &#8211; Variables y Tipos de Números</title>
		<link>http://www.glatelier.org/2009/07/programacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros/</link>
		<comments>http://www.glatelier.org/2009/07/programacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 21:24:10 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[enteros]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[int]]></category>
		<category><![CDATA[long]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[numeros]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2826</guid>
		<description><![CDATA[Como les decía anteriormente, ahora vamos a dar una sucinta revisión a los &#8220;ingredientes&#8221; de un programa en Python. Así como en las recetas de cocina son necesarios distintos ingredientes (te desafío a preparar algo con sólo &#8220;un&#8221; ingrediente). En Python a estos ingredientes, los llamaremos variables. &#62;&#62;&#62; 2 + 2 4 &#62;&#62;&#62; ¡Sorpresa! El [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />Como les decía <a title="GNU/Linux Atelier - Programación para Newbies VI - Hola mundo" href="http://www.glatelier.org/2009/06/30/programacion-para-newbies-vi-hola-mundo/" target="_blank">anteriormente</a>, ahora vamos a dar una sucinta revisión a los &#8220;ingredientes&#8221; de un programa en Python. Así como en las recetas de cocina son necesarios distintos ingredientes (te desafío a preparar algo con sólo &#8220;un&#8221; ingrediente). En Python a estos <strong>ingredientes</strong>, los llamaremos <strong>variables</strong>.</p>
<pre>&gt;&gt;&gt; 2 + 2
4
&gt;&gt;&gt;</pre>
<p>¡Sorpresa! El intérprete de Python puede funcionar como una calculadora. Aprovecho de mostrarte los signos que puedes utilizar:</p>
<p><span id="more-2826"></span></p>
<table border="1">
<tbody>
<tr>
<th>Operador</th>
<th>Descripción</th>
</tr>
<tr>
<td>+</td>
<td>Suma</td>
</tr>
<tr>
<td>-</td>
<td>Resta</td>
</tr>
<tr>
<td>*</td>
<td>Multiplicación</td>
</tr>
<tr>
<td>**</td>
<td>Exponente</td>
</tr>
<tr>
<td>/</td>
<td>División</td>
</tr>
<tr>
<td>//</td>
<td>División entera</td>
</tr>
<tr>
<td>%</td>
<td>Módulo (en Chile conocido  como &#8220;resto&#8221;)</td>
</tr>
</tbody>
</table>
<pre>&gt;&gt;&gt; 2**3
18
&gt;&gt;&gt; 10 % 3
1</pre>
<p>(3 por 3 nueve, a 10, uno)</p>
<p>La división merece una mención aparte, pero lo veremos en la siguiente sección. Demás está decir la diferencia entre 2 + 3 * 4 y (2 + 3) * 4. Pero esto no es una clase de matemáticas, así que no me detendré en este punto.</p>
<h2>Variables</h2>
<pre>&gt;&gt;&gt; x = 1
&gt;&gt;&gt;</pre>
<p>Por mucho que se parezca a una ecuación matemática (no, no huyas, es mucho más simple). La verdad es que el signo &#8220;=&#8221;, <strong>no es realmente el &#8220;igual a&#8221;</strong>. Lo que realmente está haciendo es asignando, siendo específico, con una asociatividad de derecha a izquierda (el valor a la derecha del signo &#8220;=&#8221;; 1, se asocia al de la izquierda; x. Y no al revés, es decir que: x = 1 <strong>no es igual a</strong> 1 = x). Esto puede parecer una exquisitez, pero muy pronto veremos lo relevante que es entender esta diferencia. Otra cosa, si te diste cuenta la asignación no entrega ningún mensaje. Al igual que en los intérpretes en *nix, es una buena señal, o bueno, por lo menos, no hay un error.</p>
<pre>&gt;&gt;&gt; x + 1
2
&gt;&gt;&gt;</pre>
<blockquote><p><strong>Nota:</strong> Para el nombre de las variables puede utilizarse cualquier caracter alfanumérico y el <em>underscore</em> (guión bajo: &#8220;<code>_</code>&#8220;), es importante si tomar en cuenta que <strong>no</strong> puede comenzar con un número y es <strong>sensible a las mayúsculas</strong>, es decir que, variable, es distinto de VARIABLE, de Variable o VaRiAbLe. Por motivos obvios (y de sanidad mental) recomendaría no utilizar. Algunos programadores usan la primera letra mayúscula, por ejemplo PrimerNombre, otros primer_nombre. No importa cuál ocupes, pero recomiendo que sea cuál sea el que escojas, <strong>siempre utilices el mismo</strong> y que el nombre de las variables -ojalá- <strong>se explique por si mismo</strong>.</p></blockquote>
<p>Las variables podemos dividirlas (básicamente) en tipos, a saber:</p>
<ul>
<li>Números (y sus respectivos conjuntos)</li>
<li>Cadenas de textos (strings,[<code>str</code>]) y,</li>
<li>Valores <em>booleanos</em> (es decir, de <code>true</code> (verdadero) y <code>false</code> (falso))</li>
</ul>
<p>Bueno, vamos y creemos algunas:</p>
<pre>&gt;&gt;&gt; numero = 1
&gt;&gt;&gt; decimal = 0.1
&gt;&gt;&gt; numero_grande = 2**32
&gt;&gt;&gt; caracter = "c"
&gt;&gt;&gt; cadena = "soy una cadena"</pre>
<blockquote><p>Nota: Como Python proviene de un país de habla inglesa utiliza el punto (<code>.</code>) en vez de la coma (<code>,</code>) para dividir decimales como lo hacemos en Chile y -creo- los países de lengua castellana.</p></blockquote>
<p>A diferencia de otros lenguajes de programación, en Python no es necesario declarar el tipo de variable al inicializarla. En <span style="text-decoration:line-through;">C</span> C++ por ejemplo para el ejemplo anterior debería haber escrito:</p>
<pre>int numero = 1;
double decimal = 0.1;
char caracter = "c";
string cadena ="soy una cadena";
bool booleano = true;</pre>
<h2>Tipos de Números</h2>
<h3>Enteros (<code>int</code>) y flotantes (<code>float</code>)</h3>
<pre>&gt;&gt;&gt; numero = 1
&gt;&gt;&gt; type(numero)
&gt;&gt;&gt; decimal = 0.1
&gt;&gt;&gt; type(decimal)</pre>
<p>Por defecto, cualquier número ingresado en Python lo hace como entero (integer; <code>int</code>) lo que significa que al intentar una operación como 3/2 entrega un valor que claramente no es el que buscamos:</p>
<pre>&gt;&gt;&gt; 3/2
1
&gt;&gt;&gt; type(3/2)</pre>
<p>Para sortear el problema tenemos que hacer que al menos alguno de los dos números sean de coma flotante (<code>float</code>):</p>
<pre>&gt;&gt;&gt; float(3)/2
1.5
&gt;&gt;&gt; type (float(3)/2)</pre>
<p>Del mismo modo:</p>
<pre>&gt;&gt;&gt; 3.0/2
1.5
&gt;&gt;&gt; type (3.0/2)</pre>
<p>Si queremos ser un poco más prácticos en caso de utilizar el intérprete podemos comenzarlo con el argumento <code>-Qnew</code>:</p>
<p><code>~$ python -Qnew</code></p>
<pre>Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; 3/2
1.5
&gt;&gt;&gt;</pre>
<p>Si acaso lo necesitamos para un programa podemos importar una función de un curioso módulo llamado <code>future</code> (más adelante les contaré algo sobre el mismo):</p>
<pre>&gt;&gt;&gt; from __future__ import division
&gt;&gt;&gt; 3/2
1.5
&gt;&gt;&gt; 3//2
1
&gt;&gt;&gt; a = 3//2
&gt;&gt;&gt; type(a)</pre>
<p>(He ahí que significa la división entera, del resultado sólo presenta la parte entera. <em>Duh</em>.)</p>
<p>Básicamente y para no complicarse más de lo debido, si necesitas utilizar números del conjunto de los <a title="Wikipedia - Número Natural" href="http://es.wikipedia.org/wiki/N%C3%BAmero_natural" target="_blank">naturales</a> o <a title="Wikipedia - Número Entero" href="http://es.wikipedia.org/wiki/N%C3%BAmero_entero" target="_blank">enteros</a> (Z, es decir, los naturales más los negativos) se utiliza <code>int</code>, mientras que si necesitas números <a title="Wikipedia - Número Real" href="http://es.wikipedia.org/wiki/N%C3%BAmero_real" target="_blank">reales</a>, utiliza <code>float</code>.</p>
<pre>&gt;&gt;&gt; from math import pi
&gt;&gt;&gt; pi
3.1415926535897931
&gt;&gt;&gt; type(pi)</pre>
<h3>Largos (<code>long</code>)</h3>
<pre>&gt;&gt;&gt; numero_grande = 2**32
&gt;&gt;&gt; type(numero_grande)
&lt;type 'long'&gt;</pre>
<p>Por razones técnicas, el computador no es capaz de almacenar números mayores ni menores que los comprendidos entre &#8211; 2.147.483.647 y 2.147.483.647. Por supuesto es posible de todas formas: para representar números fuera de dicho rango se utiliza una nueva notación donde los números son almacenados como largos (<code>long</code>):</p>
<pre>&gt;&gt;&gt; numero_grande
4294967296L</pre>
<p>Estos números funcionan como cualquier otro con el único detalles es la &#8220;L&#8221; mayúscula al final. Puedes utilizar la minúscula también (l), pero se parece mucho al número uno (1), por lo que se desaconseja.</p>
<blockquote><p>Nota: ¿Por qué ese límite? En realidad no es trascendental, pero me parece que es interesante: Toda la culpa es que usamos procesadores de 32 bits. Si en cada bit se pueden almacenar dos valores (&#8220;0&#8243; y &#8220;1&#8243;), entonces sólo bastaría elevar el número de opciones (2) al número de bits (32), es decir: 4.294.967.296. Dado que habitualmente requerimos números negativos (y no sólo naturales), podemos dividir el valor por 2 (positivos y negativos), es decir, 2<sup>31</sup>. El único problema que nos queda sería que estamos omitiendo el cero, por ende, el valor máximo en un ordenador de 32 bits sería 2<sup>31</sup> &#8211; 1. En el caso de procesadores de 64 bits los límites son de 2<sup>63</sup> &#8211; 1.</p></blockquote>
<p>Python también puede manejar números <a title="Wikipedia - Número Complejo" href="http://es.wikipedia.org/wiki/N%C3%BAmero_complejo" target="_blank">complejos</a>, pero creo eso ya escapa a los objetivos de estos artículos :). Si te interesa saber más sobre el tema, te recomiendo que <a title="Python - An informal introduction to Python - Numbers" href="http://docs.python.org/tutorial/introduction.html#numbers">visites</a> la documentación oficial.</p>
<h2>¿Por qué el detalle de los tipos?</h2>
<p>Buena pregunta: Dudo si aún tenga validez (creo que sí), resulta que en los comienzos de la programación los computadores eran mucho más lentos y contaban con mucha menos memoria por lo que cada vez que era posible había que <em>ahorrar</em>. Puesto que por ejemplo, <code>long</code> (al igual que <code>float</code>) utiliza más memoria que <code>int</code>, lo ideal era sólo recurrir a este tipo de variable cuando fuera estrictamente necesario. Un caso interesante al respecto es con el lenguaje C que cuenta con un tipo conocido como <code>unsigned int</code> que funciona como los límites de <code>int</code>, pero sin valores negativos, por lo que su valor máximo es: 2<sup>32</sup> &#8211; 1. Utilizando éste uno se podía <em>ahorrar</em> utilizar <code>long</code> en los valores positivos (hasta el límite de 4.294.967.295 por supuesto).</p>
<p>Un poco larga esta parte, pero bueno, me pareció que no era muy buena idea cortarla. En la siguiente parte veremos qué son las cadenas y como podemos juguetear un poco ellas.</p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/07/programacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros/" data-text="Programación para Newbies VII: Ingredientes - Variables y Tipos de Números" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F07%2Fprogramacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20VII%3A%20Ingredientes%20%26%238211%3B%20Variables%20y%20Tipos%20de%20N%C3%BAmeros" id="wpa2a_2">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/07/programacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies VI: Hola mundo</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-vi-hola-mundo/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-vi-hola-mundo/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 04:21:30 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[geany]]></category>
		<category><![CDATA[hola mundo]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[idle]]></category>
		<category><![CDATA[interprete]]></category>
		<category><![CDATA[ipython]]></category>
		<category><![CDATA[komodo]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[pydev]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2739</guid>
		<description><![CDATA[Bueno, luego de una soberana lata, por fin nos vamos a entrar en la programación. Finalmente entre los muchos lenguajes de programación existentes me pareció que el mejor para comenzar es Python. ¿Por qué Python? Lenguaje de alto nivel interpretado Sintaxis sencilla (prácticamente pseudocódigo) Ampliamente disponible Libre Multiplataforma Orientado a objetos En fin, como ven [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />Bueno, luego de una soberana <a title="GNU/Linux Atelier - Programación para Newbies V: Lenguajes, Java y palabras finales" href="http://www.glatelier.org/2009/06/21/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/" target="_blank">lata</a>, por fin nos vamos a entrar en la programación. Finalmente entre los muchos lenguajes de programación existentes me pareció que el mejor para comenzar es Python.</p>
<h2>¿Por qué Python?</h2>
<ul>
<li>Lenguaje de alto nivel interpretado</li>
<li>Sintaxis sencilla (prácticamente <a title="Wikepedia - Pseudocódigo" href="http://es.wikipedia.org/wiki/Pseudoc%C3%B3digo" target="_blank">pseudocódigo</a>)</li>
<li>Ampliamente disponible</li>
<li>Libre</li>
<li>Multiplataforma</li>
<li>Orientado a objetos</li>
</ul>
<p>En fin, como ven las bondades son numerosas&#8230;</p>
<p><span id="more-2739"></span></p>
<p>Para programar con este lenguaje basta un <strong>editor de texto plano</strong> (nada de MS Word, u OpenOffice) o el intérprete, en el primer caso es suficiente, pero de todas formas un <a title="Wikipedia - Entorno de Desarrollo Integrado" href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado">IDE</a> puede facilitar bastante las cosas. El que siempre es recomendado es <a href="http://pydev.sourceforge.net/">PyDev</a>, un <em>plugin</em> para <a href="http://www.eclipse.org/">Eclipse</a>, pero la verdad es que como les comentaba en los artículos anteriores no me gusta mucho utilizar aplicaciones basadas en Java. De todas formas en Ubuntu el paquete se llama <code>eclipse-pydev</code>.</p>
<p>Hay otro llamado <a href="http://www.activestate.com/komodo/">Komodo</a>, que es de pago (bastante profesional por cierto) y <a href="http://www.activestate.com/komodo_edit">Komodo Edit</a> que es la version gratuita y libre. Otro de pago al parecer muy bueno sería <a href="http://www.wingware.com/">Wing IDE</a> que según leía en <a href="http://mundogeek.net/tutorial-python/">Python para Todos</a>, con suerte podrían darte una licencia profesional si lo utilizas para desarrollar software libre no comercial.</p>
<p>Yo voy a utilizar <a href="http://www.geany.org/">Geany</a> (<code>geany</code>), porque cumple perfectamente mis expectativas, tiene coloreado de sintaxis, autocompletado, edición en pestañas y abajo tiene una pequeña terminal donde se pueden ejecutar los programas que creamos. Por otra parte es muy liviano, rápido y ha demostrado ser bastante estable.</p>
<p>Respecto al intérprete, puedes instalar <a href="http://ipython.scipy.org/moin/">iPython</a> (<code>ipython</code>) que viene siendo una versión mejorada del intérprete común y silvestre. Al menos en el comienzo creo que es más lo que enreda por ser más avanzado, así que no lo utilizaré.</p>
<p>Si te sientes incómodo utilizando la línea de comandos, también podría recomendarte <code>IDLE</code> un IDE de Python que es un intérprete, a medio camino entre el &#8220;a secas&#8221; y lo estrambótico de iPython.</p>
<p>Para este tutorial, utilizaré <a href="http://docs.python.org/library/idle.html">IDLE</a>, pero con cualquiera deberías andar bien.</p>
<h2>¡Hola mundo!</h2>
<p>Como es costumbre en esto de la programación, para comenzar vamos a realizar nuestro primer programa que imprimirá &#8220;Hola Mundo!&#8221; por la pantalla. Para entonces vamos a arrancar el intérprete (o IDLE, lo mismo)&#8230;</p>
<pre>pablo@xubuntu:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt;</pre>
<p>La última línea (&gt;&gt;&gt;) es el prompt, es decir que python está esperando que tipiemos alguna orden.</p>
<pre>&gt;&gt;&gt; hola
Traceback (most recent call last):
    File "", line 1, in
NameError: name 'hola' is not defined
&gt;&gt;&gt;</pre>
<p>Como ves, Python no reconoció el comando &#8220;hola&#8221;, vamos a probar con otro&#8230;</p>
<pre>&gt;&gt;&gt; print "¡Hola mundo!"
¡Hola mundo!
&gt;&gt;&gt;</pre>
<p>¡Felicitaciones! Tu primer programa en Python :D.</p>
<blockquote><p>Para salir del intérprete puedes hacerlo de tres formas: <code>exit()</code>, <code>quit()</code> o con &lt;Ctrl + D&gt; (comando de fin de línea; <a title="Wikipedia - End of File" href="http://en.wikipedia.org/wiki/End-of-file">EOF</a>)</p></blockquote>
<p>La otra forma que puedes programar es escribir lo anterior en un archivo de texto y guardándolo con extensión <code>.py</code>:</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/env python
# coding: latin-1

print &quot;¡Hola mundo!&quot;
</pre>
<p>La primera línea es un comando Unix que se conoce como <em>shebang</em>, <em>hashbang</em> o <em>sharpbang</em>. Su función es indicar en que ruta buscar el intérprete, si estuviera programando en bash, tendría que cambiar &#8220;<code>python</code>&#8221; por &#8220;<code>bash</code>&#8221; o el que corresponda. Habitualmente el intérprete de Python se encuentra en <code>/usr/bin/python</code>, pero como por desgracia eso no está estandarizado, preferiría asegurarme de que lo encontrase si acaso estuviera en una ubicación poco habitual. Para eso utilice el comando <code>env</code> que se encarga de ubicar al intérprete, así corro menos riesgos que no lo encuentre.</p>
<p>La línea siguiente es para que Python <a href="http://www.python.org/dev/peps/pep-0263/" target="_blank">entienda</a> más caracteres: mira que pasa si ejecutas sin la segunda línea, tirará un error porque el carácter <code>¡</code> no es ASCII. En fin, si quieres utilizar caracteres presentes en el castellano y no sólo los provenientes del inglés (básicamente ASCII) agrégalo, sino puedes omitirlo.</p>
<p>Por supuesto, además de añadir esta línea debemos darle permiso de ejecución:</p>
<p><code>~$ chmod +x hola.py</code></p>
<p>Luego ya podemos ejecutarlo con:</p>
<p><code>~$ ./hola.py</code></p>
<p>En ambos casos obtendremos los mismos resultados, con el intérprete tenemos la ventaja que no necesitamos darle permiso de ejecución ni estar guardando el archivo, por lo que utilizaré este.</p>
<blockquote><p>Si están familiarizados con algún otro lenguaje, notarán que no es necesario agregar el punto y coma al final de cada línea <code>;</code>, puedes agregarlo si quieres, pero no tendrá ningún efecto. Si agregas código después, Python lo considerará como un salto de línea, pero la verdad es que no es muy buena idea porque sacrificas algo de legibilidad.</p></blockquote>
<h2>Ingredientes e instrucciones</h2>
<p>¿<a title="GNU/Linux Atelier - Programacion para Newbies II - Introducción" href="http://www.glatelier.org/2009/06/11/programacion-para-newbies-parte-ii-introduccion/" target="_blank">Recuerdas</a> la receta que puse en un par de partes atrás?</p>
<ol>
<li>Mezclar azúcar y mantequilla hasta que quede una sustancia cremosa</li>
<li>Agregar 3 huevos</li>
<li>Mezclar y agregar 2 tazas de harina</li>
<li>Cocinar en un horno a llama baja por 45 minutos</li>
</ol>
<p>Bueno, nuestra receta tiene ingredientes ¿verdad?, huevos y harina (por ejemplo) y también presenta instrucciones (<em>statements</em>), como mezclar y cocinar. Un programa tiene ambas cosas, éstos serán los temas les hablaré en las <a title="GNU/Linux Atelier - Programación para Newbies VII: Ingredientes – Variables y Tipos de Números" href="http://www.glatelier.org/2009/07/05/programacion-para-newbies-vii-ingredientes-variables-y-tipos-de-numeros/" target="_blank">siguientes</a> partes (comenzando con los <em>ingredientes</em>).</p>
<blockquote><p><strong>Nota:</strong> Lamento lo corta, poco interesante y como si fuera poco &#8211; la tardanza para escribir esta parte, pero me costó mucho decidirme y la verdad es que tuve que rehacer varias veces porque no sabía cuál de las siguientes dos partes poner primero. Lo bueno es que quedé con todos los artículos a medio hacer, así que voy a poder desarrollarlos más rápido.</p></blockquote>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-vi-hola-mundo/" data-text="Programación para Newbies VI: Hola mundo" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-vi-hola-mundo%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20VI%3A%20Hola%20mundo" id="wpa2a_4">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-vi-hola-mundo/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies V: Lenguajes, Java y palabras finales</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 17:43:23 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[bytecode]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[lenguajes]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2711</guid>
		<description><![CDATA[Y continuamos con la tercera y última parte sobre lenguajes de programación. Java Este lenguaje también de alto nivel desarrollado por James Gosling en Sun Microsystems, apareció paralelamente con Python, a principios de los años 90. Basado en gran parte en la sintaxis de C/C++. Este lenguaje tiene una particularidad que considero interesante. Este debe [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />Y <a title="GNU/Linux Atelier - Programacion para Newbies IV - Más sobre los Lenguajes" href="http://www.glatelier.org/2009/06/18/programacion-para-newbies-iv-mas-sobre-los-lenguajes/" target="_blank">continuamos</a> con la tercera y última parte sobre lenguajes de programación.</p>
<h3>Java</h3>
<p><img class="alignleft size-full wp-image-2730" title="Duke Thinking" src="http://www.glatelier.org/wp-content/uploads/2009/06/duke-thinking.png" alt="Duke Thinking" width="70" height="72" />Este lenguaje también de alto nivel desarrollado por <a title="Wikipedia - James Gosling" href="http://es.wikipedia.org/wiki/James_Gosling" target="_blank">James Gosling</a> en <a title="Sun" href="http://www.sun.com/" target="_blank">Sun Microsystems</a>, apareció paralelamente con <a title="Wikipedia - Lenguaje de Programación Python" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a>, a principios de los años 90. Basado en gran parte en la sintaxis de <a title="Wikipedia - Lenguaje de Programación C" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C">C</a>/<a title="Wikipedia - Lenguaje de Programación C++" href="http://es.wikipedia.org/wiki/C%2B%2B" target="_blank">C++</a>. Este lenguaje tiene una particularidad que considero interesante. Este debe ser compilado en <a title="WIkipedia - Bytecode" href="http://es.wikipedia.org/wiki/Bytecode" target="_blank"><em>bytecode</em></a> (aunque también puede compilarse a <a title="Wikipedia - Código Máquina" href="http://es.wikipedia.org/wiki/C%C3%B3digo_m%C3%A1quina" target="_blank">código máquina</a>), ¿qué ventaja tiene esto?. Si bien, en teoría, un programa escrito en C podría compilarse (traducirse) con un <abbr title="valga la redundancia">compilador</abbr> ya sea de GNU/Linux o Windows, en la práctica vemos que ésto no es así, lamentablemente el <strong>código debe ser modificado de manera importante</strong> (me gustaría explicarles por qué, pero está fuera de mi conocimiento). La <em>gracia</em> de <a title="Wikipedia - Lenguaje de Programación Java" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" target="_blank">Java</a> es que el lenguaje es <strong>completamente estándar</strong>. Bueno, hasta ahora tenemos el mismo problema que con C, lo que pasa es que el <em>bytecode</em>, vendría siendo algo así como una &#8220;traducción a medias&#8221;, es decir, que <strong>no</strong> es código máquina, pero está mucho más cerca de serlo. Pero como este es el único lenguaje que el equipo entiende, de alguna forma igual tenemos que arreglarnos de alguna forma para que la traducción/interpretación lo haga. Para logra este fin, el código debe ser interpretado en su ejecución y se utiliza una aplicación especial conocida como <a title="Wikipedia - Máquina Virtual Java" href="http://es.wikipedia.org/wiki/M%C3%A1quina_virtual_Java" target="_blank">Máquina Virtual Java</a> (JVM). <img class="alignright size-full wp-image-2731" title="Duke Plug" src="http://www.glatelier.org/wp-content/uploads/2009/06/duke-plug.png" alt="Duke Plug" width="70" height="82" />De esta forma, para ejecutar el <strong>mismo</strong> código de Java, <strong>sólo necesito la máquina virtual</strong> del sistema operativo correspondiente y <em>voilà</em>. Claramente esto presenta un inconveniente (lo suficientemente grande para que rechace siempre que pueda utilizar Java), el rendimiento, para ejecutar una aplicación necesitamos estar ejecutando la JVM cosa que no consume pocos recursos (aunque diría que con la tecnología actual no debería ser tan importante la diferencia). Por otro lado, presenta una ventaja sumamente importante, <strong>la portabilidad</strong>, es decir, la posibilidad de desarrollar el programa para distintos sistemas operativos/plataformas.</p>
<p><span id="more-2711"></span></p>
<h2>Aún más lenguajes&#8230;</h2>
<p>Como si no fuera suficiente, existen muchos más lenguajes de los que yo puedo comentar y sería un despropósito hacerlo. Sin embargo, es importante saber que esta gran cantidad de lenguajes tiene una base muy lógica y que la he estado repitiendo todo el tiempo, las necesidades. Para programación web tenemos HTML, CSS, Php, JavaScript, para bases de datos tenemos SQL, hay otros lenguajes de uso más general como C, LISP para inteligencia artificial, etc. En fin, son una infinidad.</p>
<h2>Nota final sobre los lenguajes</h2>
<div id="attachment_2713" class="wp-caption aligncenter" style="width: 610px"><a href="http://xkcd.com/378/"><img class="size-full wp-image-2713" title="Real Programmers..." src="http://www.glatelier.org/wp-content/uploads/2009/06/real_programmers.png" alt="Real Programmers | xkcd.com" width="600" height="329" /></a><p class="wp-caption-text">Real Programmers | xkcd.com</p></div>
<p>Automáticamente nace la pregunta: &#8220;¿Cuál es el mejor lenguaje?&#8221; y bueno te respondo&#8230; hacer esa pregunta es tan absurda como preguntar: &#8220;¿Cuál es el mejor color?&#8221;. Entrar en discusiones de ese tipo es una gran pérdida de tiempo, aunque no es raro que muchos crean que su lenguaje es el <em>mejor</em> y se enfrenten en eternas guerras santas. La verdad es que el <em>mejor</em> va a depender de las circunstancias, el propósito y la experiencia. C puede ser un muy buen lenguaje de propósito general, pero ¿de que me sirve si somos newbies y no podemos sacarle <abbr title="el máximo provecho">el jugo</abbr>?. Obviamente sería mucho mejor utilizar BASIC, pero ser capaces de resolver el problema. Si quiero realizar una aplicación web, sin duda voy a escoger Php o JavaScript y no C y no creo que eso los haga &#8220;mejores&#8221; o &#8220;peores&#8221; lenguajes. Al igual que el color, puede ser que para un funeral el negro sea mucho más adecuado que el rojo, ¿pero lo hace eso &#8220;mejor&#8221;?. Lo dudo. Probablemente en otro momento el rojo sea más adecuado (como en una marcha). Como en todo, hay cosas de gustos y es perfectamente lógico esperar que prefieras un lenguaje sobre otro.</p>
<p>Programa en el lenguaje que más te guste y acomode utilizando las herramientas que a ti te sirvan más, si es con notepad, vim, Emacs o eclipse, no importa mientras seas capaz de hacer bien tu trabajo y disfrutarlo. Y si en algún momento te ves envuelto en ese tipo de discusiones estúpidas, mi consejo: retírate y haz algo mejor con tu tiempo, como estudiar tu lenguaje favorito o incluso mirar como crece el pasto.</p>
<p>Ya en la <a title="GNU/Linux Atelier - Programación para Newbies VI - Hola mundo" href="http://www.glatelier.org/2009/06/30/programacion-para-newbies-vi-hola-mundo/" target="_blank">próxima parte</a> comenzamos de lleno en el tema que nos convoca.</p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/" data-text="Programación para Newbies V: Lenguajes, Java y palabras finales" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-v-lenguajes-java-y-palabras-finales%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20V%3A%20Lenguajes%2C%20Java%20y%20palabras%20finales" id="wpa2a_6">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies IV: Más sobre los Lenguajes</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-iv-mas-sobre-los-lenguajes/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-iv-mas-sobre-los-lenguajes/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 17:44:39 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[basico]]></category>
		<category><![CDATA[bytecode]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[fortran]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2649</guid>
		<description><![CDATA[Seguimos entonces con los lenguajes&#8230; Bajo v/s Alto Nivel Ahora, lo curioso (o por lo menos interesante) es que realmente el computador no entiende mejor Ensamblador que Fortran o C (bueno, realmente los computadores son conocidos precisamente porque no entienden nada, de ahí que la programación tiene que ser tan precisa), recuerda: sólo código máquina. [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><a title="GNU/Linux Atelier - Programacion para Newbies III - Lenguajes... ¿Qué son?" href="http://www.glatelier.org/2009/06/13/programacion-para-newbies-iii-lenguajes-que-son/" target="_blank">Seguimos</a> entonces con los lenguajes&#8230;</p>
<h2>Bajo v/s Alto Nivel</h2>
<p>Ahora, lo curioso (o por lo menos interesante) es que realmente el computador <strong>no entiende mejor</strong> Ensamblador que Fortran o C (bueno, realmente los computadores son conocidos precisamente porque no entienden nada, de ahí que la programación tiene que ser tan precisa), recuerda: sólo código máquina. Para poder <em>traducir</em> los comandos de un lenguaje de <abbr title="como C">medio</abbr>-<abbr title="como FORTRAN o BASIC">alto</abbr> nivel es necesario otro programa especial conocido como <a title="Wikipedia - Compilador" href="http://es.wikipedia.org/wiki/Compilador" target="_blank">compilador</a>. Su trabajo se puede analogar al de traducir un texto de español a inglés.</p>
<div id="attachment_2712" class="wp-caption alignleft" style="width: 310px"><a href="http://www.sxc.hu/photo/1185567"><img class="size-full wp-image-2712" title="Fight!" src="http://www.glatelier.org/wp-content/uploads/2009/06/fight.png" alt="stock.xchng | arte ram" width="300" height="274" /></a><p class="wp-caption-text">stock.xchng | arte ram</p></div>
<p>Tan cierto como en la traducción entre lenguajes humanos, <strong>traducir un libro para niños al inglés es muchísimo más fácil y rápido que traducir un <em>paper</em></strong>, dado que éste último tiene vocabulario más técnico y estructuras más complejas. Por lo tanto, es esperable que la <em>traducción</em> de ensamblador a código máquina es más fácil que la de C, y ésta a su vez, que la de FORTRAN a binario.<br />
Como te puedes dar <abbr title="espero...">cuenta</abbr>, vemos que <strong>cada uno tiene sus pros y sus contras</strong>. En la esquina oeste de shorts azules, tenemos al de alto nivel que es más fácil de aprender, de modificar y de entender, pero también requiere ser compilado, su <em>traducción</em> a lenguaje máquina puede no ser la más adecuado y su control sobre el hardware de la máquina no es demasiado. Por otra parte, en la esquina este de calzoncillos verdes, tenemos al campeón de peso pesado, lenguaje de bajo nivel, que por un lado permite un control importante sobre la máquina y si bien, requiere ser <em>traducido</em> (en general) por un ensamblador, es más rápido, en contraparte es difícil de aprender, utilizar y lo más importante difícil de modificar.</p>
<p><span id="more-2649"></span></p>
<h3>Modificar de nuevo&#8230; ¿cuál es tu problema?</h3>
<p>Sí, como te habrás dado cuenta, he hecho mucha referencia a la <strong>modificación del código fuente</strong> y es la (in)consecuencia lógica de una las cosas que mencioné en la introducción. En el 95% de los casos, luego de pasar noches en vela intentando hacer que tu programa haga algo <strong>no lo hará</strong> (o más frustrantemente, hará justamente lo opuesto). De eso se desprende la importancia que el código sea fácil de modificar.</p>
<h3>Ya, ya&#8230; al grano&#8230;</h3>
<div id="attachment_2716" class="wp-caption alignright" style="width: 294px"><a href="http://www.flickr.com/photos/nic221/561370770/"><img class="size-full wp-image-2716" title="Barbie Hacker" src="http://www.glatelier.org/wp-content/uploads/2009/06/barbie-hacker.png" alt="flickr.com | nic221. Algunos derechos reservados. Creative Commons BY-NC-SA." width="284" height="375" /></a><p class="wp-caption-text">flickr.com | nic221. Algunos derechos reservados. Creative Commons BY-NC-SA.</p></div>
<p>Si esperas que te responda <em>¿Cuál es el mejor?</em>, lamento decepcionarte, pues como en muchas cosas, <strong>no hay una respuesta correcta</strong>. Va a depender de las <strong>necesidades</strong> que tengas. Por ejemplo, si vas a ser <a title="Wikipedia - Hacker" href="http://es.wikipedia.org/wiki/Hacker" target="_blank">hacker</a> del kernel, creo que sería más prudente aprender ensamblador y C. Un lenguaje de alto nivel probablemente poco sirva (al menos yo no conozco ningún sistema operativo programado en Python o BASIC). Personalmente además de ser muy difícil para mí, no es mi propósito, por lo que dejaré los lenguajes de bajo nivel para más adelante.</p>
<h2>Más lenguajes&#8230;</h2>
<p>Les he comentado sobre ensamblador, FORTRAN y C, sin embargo hay <strong>muchos</strong> más lenguajes. No tiene sentido siquiera intentar realizar un acercamiento, pero sí me gustaría comentarles acerca de dos <em>sub</em>tipos de alto nivel. Los lenguajes <a title="Wikipedia - Interpreted Language" href="http://en.wikipedia.org/wiki/Interpreted_language" target="_blank">interpretados</a>, como <a title="Wikipedia - Python" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a> y el <a title="Wikipedia - Bytecode" href="http://es.wikipedia.org/wiki/Bytecode" target="_blank"><em>bytecode</em></a>, como el que utiliza <a title="Wikipedia - Java" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" target="_blank">Java</a>.</p>
<h3>Python</h3>
<div id="attachment_2715" class="wp-caption alignleft" style="width: 300px"><a href="http://www.sxc.hu/photo/704414"><img class="size-full wp-image-2715" title="Python" src="http://www.glatelier.org/wp-content/uploads/2009/06/tree-green-python.png" alt="stock.xchng | Buzzybee" width="290" height="211" /></a><p class="wp-caption-text">stock.xchng | Buzzybee</p></div>
<p>Me detuve en este porque será el lenguaje que utilizaremos en las siguientes secciones, de ahí que es importante añadir este nuevo concepto de <em>intérprete</em> a nuestro vocabulario de desarrollador. Este lenguaje es relativamente nuevo, fue creado por <a href="http://www.python.org/~guido/">Guido van Rossum</a> en el año 1991. Que sea interpretado significa que <strong>no tiene que ser compilado</strong> (<em>traducido</em>) para luego ser ejecutado, sino que la traducción se va haciendo en la medida que el programa se ejecuta. Para comprenderlo mejor, vamos a seguir con nuestra analogía<sup><a href="#1">[1]</a></sup>.<br />
Supongamos que el código fuente es el texto de un discurso, en el caso de un lenguaje compilado (como C), un traductor tiene que tomarlo y traducirlo completamente antes que un orador lo exponga. Por otra parte, si estuviera en un lenguaje interpretado (como Python), el orador iría a leerlo en su idioma, y un intérprete lo iría traduciendo en tiempo real. Esto significa que en el primer caso, luego de una vez realizada la traducción, podemos ejecutar la aplicación <strong>tantas veces como queramos</strong>, mientras que en el segundo se necesitaría al intérprete <strong>cada vez </strong>que quisiéramos leerlo. Al igual que antes, no hay ninguno <em>tipo</em> que sea superior al otro y la elección debería <strong>siempre va a depender de la necesidad/propósito que tengamos</strong>. Esta diferencia en el rendimiento entregaría otra razón por lo que no hay sistemas operativos escritos en Python. ¿Imaginas que cada vez tuviera que intepretarse?.</p>
<blockquote><p>Ah, otra cosa, el nombre Python no se debe a la traducción de pitón (la serpiente), es en honor al grupo de comediantes británicos, <a title="Wikipedia - Monty Python" href="http://es.wikipedia.org/wiki/Monty_Python" target="_blank">Monty Python</a>.</p></blockquote>
<p>Estaba quedando muy largo es artículo, así que decidí dividirlo, en la <a title="GNU/Linux Atelier - Programación para Newbies V: Lenguajes, Java y palabras finales" href="http://www.glatelier.org/2009/06/21/programacion-para-newbies-v-lenguajes-java-y-palabras-finales/" target="_blank">próxima parte</a> veremos Java y unas notas finales sobre como tomar la decisión de que lenguaje utilizar.</p>
<p><sup><a name="1">[1]</a></sup> Metodología y Tecnología de la Programación, <a href="http://marmota.act.uji.es/MTP/teoria.shtml" target="_blank">Curso</a> 2007/2008</p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-iv-mas-sobre-los-lenguajes/" data-text="Programación para Newbies IV: Más sobre los Lenguajes" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iv-mas-sobre-los-lenguajes%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20IV%3A%20M%C3%A1s%20sobre%20los%20Lenguajes" id="wpa2a_8">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-iv-mas-sobre-los-lenguajes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies III: Lenguajes, ¿qué son?</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-iii-lenguajes-que-son/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-iii-lenguajes-que-son/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 02:16:27 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[alto]]></category>
		<category><![CDATA[b]]></category>
		<category><![CDATA[bajo]]></category>
		<category><![CDATA[basico]]></category>
		<category><![CDATA[bcpl]]></category>
		<category><![CDATA[bell]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[ensamblador]]></category>
		<category><![CDATA[fortran]]></category>
		<category><![CDATA[medio]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[nivel]]></category>
		<category><![CDATA[ritchie]]></category>
		<category><![CDATA[thompson]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2647</guid>
		<description><![CDATA[&#8230;viene de la segunda parte&#8230; Ya hemos revisado y aprendido la primera premisa de la programación: &#8220;Los computadores son estúpidos&#8221;. Programar entonces no es más difícil que dar instrucciones paso a paso de lo que queremos que haga. Por desgracia, (aunque no debería sorprendernos) un equipo no entiende español, inglés ni ningún otro lenguaje que [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />&#8230;viene de la <a title="GNU/Linux Atelier - Programacion para Newbies II - Introducción" href="http://www.glatelier.org/2009/06/11/programacion-para-newbies-parte-ii-introduccion/" target="_blank">segunda</a> parte&#8230;</p>
<p>Ya hemos revisado y aprendido la primera premisa de la programación: &#8220;Los computadores son estúpidos&#8221;. Programar entonces no es más difícil que dar instrucciones paso a paso de lo que queremos que haga. Por desgracia, (aunque no debería sorprendernos) un equipo <strong>no entiende</strong> español, inglés ni ningún otro lenguaje que los seres humanos podamos comprender. Puesto que de alguna forma tenemos que <em>comunicarnos</em> con el computador nace este nuevo concepto, <strong>lenguaje de programación</strong>, que será el idioma en el que le daremos las instrucciones que puestas en secuencias, formarán lo que se conoce como <a title="Wikipedia - Código Fuente" href="http://es.wikipedia.org/wiki/C%C3%B3digo_fuente" target="_blank">código fuente</a>.</p>
<h2>Código máquina</h2>
<div id="attachment_2665" class="wp-caption aligncenter" style="width: 506px"><a href="http://www.sxc.hu/photo/1159613"><img class="size-full wp-image-2665" title="Binary" src="http://www.glatelier.org/wp-content/uploads/2009/06/binary.png" alt="stock.xchng | flaivoloka" width="496" height="199" /></a><p class="wp-caption-text">stock.xchng | flaivoloka</p></div>
<p>No voy a entrar en mucho detalle sobre el funcionamiento interno de la memoria del computador, pero les diré que ésta alterna entre ceros y unos, que vendría siendo el <strong>único</strong> lenguaje que el equipo entiende directamente. Puesto que es el código que <em>realmente</em> comprende el computador, se conoce como <a title="Wikipedia - Lenguaje de Máquina" href="http://es.wikipedia.org/wiki/Lenguaje_de_m%C3%A1quina" target="_blank">código máquina</a>. Sorprendentemente, cuando recién aparecieron, los programadores trabajaban de esta forma. Como te podrás imaginar, programar de esta forma es sumamente difícil, imagina lo fácil que es cambiar un cero por uno (o viceversa) y eso produzca que el programa falle (como si eso fuera poco, ¡imagina lo difícil que sería encontrar el error!).</p>
<p><span id="more-2647"></span></p>
<h2>Ensamblador</h2>
<p>Como todo el sentido de la programación es intentar simplificar las cosas, ya hacia el comienzo de los años 50 apareció el primer intento de desarrollar un lenguaje que fuera más sencillo de aprender, éste traducía las instrucciones a las correspondientes combinaciones de unos y ceros de cada equipo. Aún los programas seguían siendo dependientes de la máquina puesto que cada una tiene su propio set de instrucciones. No era perfecto, pero qué va! es más fácil de leer, comprender y más importante, de modificar. Un ejemplo de una aplicación escrita en ensamblador sería:</p>
<pre><code>title Hello World Program
; This program shows "Hello World" on the screen
.model Small
.stack 100h
.data
db msg 'Hello, world!$'
.code
start:
    mov ah, 09h
    lea dx, msg ; or mov dx, offset msg
    int 21h
    mov ax,4C00h
    int 21h
end start</code></pre>
<div id="attachment_2666" class="wp-caption alignright" style="width: 273px"><a href="http://www.flickr.com/photos/jooray/1342209731/"><img class="size-full wp-image-2666" title="Assembler" src="http://www.glatelier.org/wp-content/uploads/2009/06/assembler.png" alt="flickr.com | jooray" width="263" height="221" /></a><p class="wp-caption-text">flickr.com | jooray</p></div>
<p>Aquí aparece un nuevo concepto, utilizado ampliamente en el ámbito de la programación: <strong>lenguaje de bajo nivel</strong>. Esto es cualquier lenguaje que requiere pasar por menos <em>fases</em> para ser transformado a código máquina y se acerca más al funcionamiento de ésta. En el caso particular de este lenguaje es que un ensamblador lo transforma a unos y ceros. Obviamente es más simple que en binario, pero aún así, es bastante críptico y muchas de las instrucciones resultan incomprensibles.</p>
<h2>Fortran</h2>
<p>Ya a finales del 1953, <a title="Wikipedia - John W. Backus" href="http://es.wikipedia.org/wiki/John_Backus">Backus</a>, desarrolló el primer lenguaje que se conoce como de <em>alto nivel</em>. Al contrario que los de bajo nivel, el lenguaje pasa a ser un estándar, y no requiere instrucciones distintas para cada procesador. Un ejemplo:</p>
<pre><code>program hello
    print*, 'Hello, world!'
end
</code></pre>
<p>Al comparar ambos programas, podemos ver que aunque <strong>hacen exactamente lo mismo</strong> (imprimir &#8220;Hello World!&#8221; en pantalla), éste último es <strong>mucho</strong> más corto (¡4 líneas contra 14, ¡casi la cuarta parte!) y más comprensible. Esto fue una revolución en el mundo de la programación y aparecieron numerosos lenguajes, pero me los voy a saltar para viajar un par de décadas más adelante&#8230;</p>
<h2>C</h2>
<div id="attachment_2664" class="wp-caption alignleft" style="width: 224px"><a title="Wikipedia - The C Programming Language (book)" href="http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)" target="_blank"><img class="size-full wp-image-2664" title="The C Programming Language" src="http://www.glatelier.org/wp-content/uploads/2009/06/kr_c_prog_lang.jpg" alt="El famoso libro publicado por primera vez en 1978" width="214" height="282" /></a><p class="wp-caption-text">La segunda edición del famoso libro publicado por primera vez en 1978</p></div>
<p>Bastantes años más tarde, en 1972 <a title="Wikipedia - Dennis Ritchie" href="http://es.wikipedia.org/wiki/Dennis_Ritchie" target="_blank">Dennis Ritchie</a><a title="Wikipedia - Ken Thompson" href="http://es.wikipedia.org/wiki/Ken_Thompson"></a> desarrolla en los laboratorios de <a title="Bell Labs" href="http://www.alcatel-lucent.com/wps/portal/BellLabs" target="_blank">Bell Labs</a> el lenguaje probablemente más popular e influyente de todos los tiempos, basándose en <a title="Wikipedia - Lenguaje de Programación B" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_B">B</a> y <a title="Wikipedia - Basic Combined Programming Language" href="http://en.wikipedia.org/wiki/BCPL">BCPL</a> (aunque la verdad es que nunca existió un A), crean el lenguaje <a title="Wikipedia - Lenguaje de Programación C" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C" target="_blank">C</a>, principal lenguaje en el que están programados los sistemas Unix. Se le trata algunas veces de <em>nivel medio</em> puesto que presenta características de un lenguaje de bajo nivel, es decir, un gran control sobre la máquina, pero al mismo tiempo estructuras típicas de un lenguaje de alto nivel. Esta mezcla de Es por estas razones que es un lenguaje tan ampliamente utilizado. Para continuar con la tradición, un ejemplo del ya famoso &#8220;Hello World!&#8221; en C:</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;stdio .h&gt;

int main ()
{
    printf(&quot;Hello World!\n&quot;);
    return(0);
}
</pre>
<p>Esta parte ha parecido más libro de historia que el intento de programar, pero bueno, estos contextos le dan un poco de sabor a este tema tan árido. En la <a title="GNU/Linux Atelier - Programacion para Newbies IV - Más sobre los Lenguajes" href="http://www.glatelier.org/2009/06/18/programacion-para-newbies-iv-mas-sobre-los-lenguajes/" target="_blank">siguiente</a> parte, también veremos algo más sobre los lenguajes, pero de manera un poco más aplicada.</stdio></p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-iii-lenguajes-que-son/" data-text="Programación para Newbies III: Lenguajes, ¿qué son?" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-iii-lenguajes-que-son%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20III%3A%20Lenguajes%2C%20%C2%BFqu%C3%A9%20son%3F" id="wpa2a_10">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-iii-lenguajes-que-son/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies II: Introducción</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-ii-introduccion/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-ii-introduccion/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 02:14:48 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[basico]]></category>
		<category><![CDATA[desarrollar]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[programar]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2620</guid>
		<description><![CDATA[Nota: No es que la segunda parte tenga otra introducción, a la primera parte le cambié el título a Prefacio. Sólo modifiqué el título y no el link, porque no quería que fallaran los enlaces. Antes de querer aprender a hacer algo, es necesario saber qué es lo que vamos a aprender, ¿no?. Puede ser [...]]]></description>
			<content:encoded><![CDATA[<p id="top" />
<blockquote><strong>Nota:</strong> No es que la segunda parte tenga otra introducción, a la primera parte le cambié el título a Prefacio. Sólo modifiqué el título y no el link, porque no quería que fallaran los enlaces.</p></blockquote>
<p>Antes de querer aprender a hacer algo, es necesario saber <em>qué</em> es lo que vamos a aprender, ¿no?. Puede ser un poco obvio, pero nunca está de más detenerse a pensar que <em>realmente</em> significa lo que vamos a intentar aprender.</p>
<h2>Programar, programas&#8230;. ¿ah?</h2>
<p>Todos como usuarios de un equipo sabemos de la existencia de distintos programas (o aplicaciones), hay algunas para escribir (procesador de texto), para calcular (calculadora), otros para ver/escuchar multimedia (reproductores) y así podríamos continuar mencionando varios (y seguramente no terminaríamos nunca). Así podemos ver que cada programa cumple una tarea específica, en el procesador de texto no se puede jugar ni tampoco ver un video de YouTube. Podríamos decir entonces que cada programa resuelve algún problema en particular y como los problemas del mundo tienden al infinito, por tautología, tendríamos que la variedad de programas es prácticamente inacabable. <abbr title="creo...">Lógicamente</abbr>, esto es directamente proporcional con la dificultad para escribir un programa. Hacer que un programa te pregunte el nombre y luego te salude debería ser <strong>bastante más simple</strong> que un programa que muestre dos ejércitos enfrentándose entre sí mientras esquivan una lluvia de flechas ardiendo por el ejército enemigo y fuego que es escupido por dragones que zurcan un estrellado cielo con 3 lunas.</p>
<p><span id="more-2620"></span></p>
<div id="attachment_2638" class="wp-caption aligncenter" style="width: 609px"><a title="Zsuzsanna Kilián" href="http://www.sxc.hu/photo/1177309"><img class="size-full wp-image-2638" title="Keyboard" src="http://www.glatelier.org/wp-content/uploads/2009/06/keyboard.png" alt="nkzs | stock.xchng" width="599" height="227" /></a><p class="wp-caption-text">nkzs | stock.xchng</p></div>
<p>Para lograr esto, debemos decirle al computador <em>qué</em>, <em>cómo</em> y <em>cuándo</em> realiza una determinada tarea. El computador <strong>no</strong> &#8220;piensa&#8221; <abbr title="aún... ¡afortunadamente!">por sí mismo</abbr> por lo que es mi tarea como <abbr title="ya quisieras...">programador</abbr> darle las instrucciones adecuadas. Por último, un programa no hace más que decirle al computador como recibir una entrada de datos (generalmente por parte del que utiliza la aplicación), manipularla y escupirla de vuelta, idealmente de una manera comprensible para un ser humano común y corriente. WordPress por ejemplo, recibe de entrada las teclas que yo presiono (<em>input</em>), lo manipula dándole formato y luego lo entrega en un texto <abbr title="¿?">comprensible</abbr> para ustedes (espero).</p>
<h2>¿Difícil? Nahh&#8230; sólo dame un minuto más</h2>
<p>Wallace Wang en <a title="A reference for the rest of us!" href="http://www.dummies.com/store/product/Beginning-Programming-For-Dummies-4th-Edition.productCd-0470088702.html" target="_blank">Beginning Programming for Dummies</a> (¡gracias por tan buen libro!) dice que programar no es precisamente difícil, sino más bien consume mucho tiempo. Básicamente, si eres capaz de dar instrucciones escritas de como llegar a tu casa o como preparar un queque deberías ser capaz de escribir un programa.</p>
<ol>
<li>Mezclar azúcar y mantequilla hasta que quede una sustancia cremosa</li>
<li>Agregar 3 huevos</li>
<li>Mezclar y agregar 2 tazas de harina</li>
<li>Cocinar en un horno a llama baja por 45 minutos</li>
</ol>
<p><a href="http://www.sxc.hu/photo/1170293" target="_blank"><img class="alignright size-full wp-image-2637" title="Recipe" src="http://www.glatelier.org/wp-content/uploads/2009/06/recipe.png" alt="Recipe" width="290" height="232" /></a>Por muy razonablemente claras sean estas instrucciones (si sé que faltaron pasos), tenemos que recordar que el computador hace exactamente lo que le pidamos -ni más, ni menos- por lo que es más bien estúpido (por cierto, diría que esta es la primera premisa que deberías asimilar). Al tratar de ingresar esas instrucciones se detendrá y nos preguntará:</p>
<ol>
<li>¿Dónde está el ázucar y la mantequilla? ¿Cuánto tiempo se debe batir? *cof* ¿qué significa batir? ¿qué tan cremosa debe ser la sustancia?</li>
<li>¿Dónde están los huevos? ¿se ponen enteros o se deben romper antes?</li>
<li>¿Dónde está la harina? ¿qué tan llenas deben estar las tazas?</li>
<li>¿Qué tipo de horno? ¿qué significa <em>llama baja</em>?</li>
</ol>
<p>Como se pueden dar cuenta, la programación puede ser sumamente frustrante, por lo que deberíamos recordar que es aún más básico que intentar hacer entender a un niño que tiene (o no tiene) que hacer. Sencillamente, al menos que explicites precisamente lo que quieres, el equipo lisa y llanamente <strong>no</strong> hará lo que le solicitaste.</p>
<p>Para cerrar esta introducción diría que la mejor manera de enfrentar la difícil tarea de escribir un programa, es dividir el <em>gran problema</em> en problemas más pequeños. No sólo para ahorrar tiempo, sino también por sanidad mental.</p>
<p>En la <a title="GNU/Linux Atelier - Programacion para Newbies III - Lenguajes... ¿Qué son?" href="http://www.glatelier.org/2009/06/13/programacion-para-newbies-iii-lenguajes-que-son/" target="_blank">siguiente</a> parte revisaremos un concepto muy utilizado, el de los lenguajes de programación (¡tema que me gusta en particular!).</p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-parte-ii-introduccion/" data-text="Programación para Newbies II: Introducción" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-ii-introduccion%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20II%3A%20Introducci%C3%B3n" id="wpa2a_12">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-ii-introduccion/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Programación para Newbies I: Prefacio</title>
		<link>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-i-introduccion/</link>
		<comments>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-i-introduccion/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 03:11:04 +0000</pubDate>
		<dc:creator>PaBLoX</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación para Newbies]]></category>
		<category><![CDATA[aprender]]></category>
		<category><![CDATA[basico]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[catedral]]></category>
		<category><![CDATA[dummies]]></category>
		<category><![CDATA[newbies]]></category>
		<category><![CDATA[principiante]]></category>
		<category><![CDATA[raymond]]></category>

		<guid isPermaLink="false">http://glatelier.wordpress.com/?p=2572</guid>
		<description><![CDATA[Siempre he querido aprender a programar, no hay ninguna razón particular, como saben, no estudio algo relacionado a la informática. La razón es simple: gusto, me parece realmente divertido y desafiante. ¿Qué?. Sí, soy geek&#8230; pero bueno, a gente le gusta leer, bailar, hacer deporte,* jugar WOW, babear por Steve Jobs y cosas más turbias [...]]]></description>
			<content:encoded><![CDATA[<p id="top" /><a href="http://www.sxc.hu/photo/468319"><img class="alignleft size-full wp-image-2573" title="Código" src="http://www.glatelier.org/wp-content/uploads/2009/06/code_up.png" alt="Código" width="225" height="186" /></a>Siempre he querido aprender a programar, no hay ninguna razón particular, como saben, no estudio algo relacionado a la informática. La razón es simple: <strong>gusto</strong>, me parece realmente divertido y desafiante. ¿Qué?. Sí, soy <a title="Wikipedia - Geek" href="http://en.wikipedia.org/wiki/Geek" target="_blank">geek</a>&#8230; pero bueno, a gente le gusta leer, bailar, hacer deporte,* jugar WOW, <a title="Mac OS X a la chilena" href="http://chilenomac.wordpress.com/" target="_blank">babear</a> por Steve Jobs y cosas más turbias también ¿qué tiene que me guste meterle instrucciones al equipo para el equipo haga lo que yo <abbr title="no, no soy obsesivo por el control :P">quiera</abbr>?. Mi idea ahora es comenzar a escribir una serie, que espero sea muy <abbr title="por lo buena y ojalá aceptación">larga</abbr>, sobre ¡programación para newbies!.</p>
<p>Okay, te preguntarás entonces, ¿cuál es la gracia que escriba cuando hay infinidad de recursos en toda la red?. Estoy muy en contra de hacer SPAM en la web, ya hay suficiente información repetida como para seguir du(tri)plicando. Por lo mismo, creo que puedo hacer algo distinto y aportar con mi granito de arena :). ¿Cómo?&#8230; a eso voy ahora&#8230;</p>
<p><span id="more-2572"></span></p>
<p>Cuando tomas un libro sobre programación (cualquiera sea el lenguaje; no, no te preocupes, ya veremos que significa), te podrás dar cuenta que la mayoría están escritos por entendidos en la materia. Lo mismo pasa con otros tópicos, ¡prefiero estudiar medicina de un autor conocido!. Bueno, pero ahora, mi propuesta sería la siguiente: &#8220;¿Por qué no en vez de esperar a ser perito para enseñar, vamos aprendiendo juntos?&#8221;. ¡La web y las nuevas <a title="Wikipedia - Tecnologías de la información" href="http://en.wikipedia.org/wiki/TI" target="_blank">TI</a> nos permiten un <em>feedback</em> que con los métodos tradicionales sería imposible!. Escribir capítulo a capítulo, recibiendo comentarios, corrigiendo, pasa a ser un trabajo de edición mucho más fácil y rápido para todos.</p>
<blockquote><p>Given enough eyeballs, all bugs are shallow &#8212; <a title="Wikipedia - Eric S. Raymond" href="http://es.wikipedia.org/wiki/Eric_S._Raymond" target="_blank">Eric S. Raymond</a>. The Cathedral and the Bazaar.</p></blockquote>
<p>Traducido al español (con bastante menos estilo) sería:</p>
<blockquote><p>Con los suficientes ojos, todos los errores serán fáciles de encontrar</p></blockquote>
<p><a href="http://www.sxc.hu/photo/995000"><img class="aligncenter size-full wp-image-2575" title="Php Code" src="http://www.glatelier.org/wp-content/uploads/2009/06/php_code_up.png" alt="Php Code" width="588" height="456" /></a></p>
<p>Así, con la &#8220;<a title="Wikipedia - Ley de Linus" href="http://es.wikipedia.org/wiki/Ley_de_Linus" target="_blank">Ley de Linus</a>&#8220;  como la llama el cofundador de la <a href="http://www.opensource.org/">Open Source Initiative</a>, voy a intentar demostrar -empíricamente- que este sistema también se podría aplicar fuera de la programación (bueno, también lo voy a probar en la programación en mucho menor grado, dado el contenido a tratar) y que el <a title="Wikipedia - Free, Libre and Open Source Software" href="http://es.wikipedia.org/wiki/FLOSS" target="_blank">FLOSS</a> va mucho más allá de un montón de <em>geeks</em> reclamando sin razón a <a href="http://www.microsoft.com" target="_blank">Microsoft</a>.</p>
<p>Sí, es un proyecto ambicioso, pero espero que podamos terminarlo y si no, bueno, ojalá que podamos pasarla bien en el camino y aprender algo de programación. Pretendo ser muy básico, por lo que creo que a los que ya sepan no les va a ser muy útil. En la próxima, ya entramos de lleno en el tema.</p>
<p>* Por cierto, también hago esas cosas, ¡de hecho me gustan mucho!. No estoy todo el día encerrado en mi casa :P.</p>
<p>Esta serie continúa en la <a title="GNU/Linux Atelier - Programacion para Newbies II - Introducción" href="http://www.glatelier.org/2009/06/11/programacion-para-newbies-parte-ii-introduccion/" target="_blank">segunda parte</a>: Introducción.</p>
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.glatelier.org/2009/06/programacion-para-newbies-parte-i-introduccion/" data-text="Programación para Newbies I: Prefacio" data-count="horizontal">Tweet</a><p><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_facebook" href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Digg" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_meneame" href="http://www.addtoany.com/add_to/meneame?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Meneame" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/meneame.png" width="16" height="16" alt="Meneame"/></a><a class="a2a_button_google_reader" href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a><a class="a2a_button_tumblr" href="http://www.addtoany.com/add_to/tumblr?linkurl=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;linkname=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" title="Tumblr" rel="nofollow" target="_blank"><img src="http://www.glatelier.org/wp-content/plugins/add-to-any/icons/tumblr.png" width="16" height="16" alt="Tumblr"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.glatelier.org%2F2009%2F06%2Fprogramacion-para-newbies-parte-i-introduccion%2F&amp;title=Programaci%C3%B3n%20para%20Newbies%20I%3A%20Prefacio" id="wpa2a_14">Compartir</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.glatelier.org/2009/06/programacion-para-newbies-parte-i-introduccion/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss>

