![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
El objetivo de este libro es ense�arle a pensar como lo hacen los cient�ficos inform�ticos. Esta manera de pensar combina las mejores caracter�sticas de la matem�tica, la ingenier�a, y las ciencias naturales. Como los matem�ticos, los cient�ficos inform�ticos usan lenguajes formales para designar ideas (espec�ficamente, computaciones). Como los ingenieros, ellos dise�an cosas, ensamblando sistemas a partir de componentes y evaluando ventajas y desventajas de cada una de las alternativas. Como los cient�ficos, ellos observan el comportamiento de sistemas complejos, forman hip�tesis, y prueban sus predicciones.
La habilidad m�s importante del cient�fico inform�tico es la soluci�n de problemas. La soluci�n de problemas incluye poder formular problemas, pensar en la soluci�n de manera creativa, y expresar una soluci�n con claridad y precisi�n. Como se ver�, el proceso de aprender a programar es la oportunidad perfecta para desarrollar la habilidad de resolver problemas. Por esa raz�n este cap�tulo se llama "El Camino del programa".
A cierto nivel, usted aprender� a programar, lo cual es una habilidad muy �til por s� misma. A otro nivel, usted utilizar� la programaci�n para obtener alg�n resultado. Ese resultado se ver� m�s claramente durante el proceso.
El lenguaje de programaci�n que aprender� es Python. Python es un ejemplar de un lenguaje de alto nivel; otros ejemplos de lenguajes de alto nivel son C, C++, Perl y Java.
Como se puede deducir de la nomenclatura "lenguaje de alto nivel", tambi�n existen lenguajes de bajo nivel, a los que tambi�n se califica como lenguajes de m�quina o lenguajes ensambladores. A prop�sito, los computadores s�lo ejecutan programas escritos en lenguajes de bajo nivel. Los programas de alto nivel tienen que traducirse antes de ejecutarse. Esta traducci�n lleva tiempo, lo cual es una peque�a desventaja de los lenguajes de alto nivel.
Aun as� las ventajas son enormes. En primer lugar, la programaci�n en lenguajes de alto nivel es mucho m�s f�cil; escribir programas en un lenguaje de alto nivel toma menos tiempo, los programas son m�s cortos y m�s f�ciles de leer, y es m�s probable que estos programas sean correctos. En segundo lugar, los lenguajes de alto nivel son portables, lo que significa que pueden ejecutarse en tipos diferentes de computadores sin modificaci�n alguna o con pocas modificaciones. Los programas escritos en lenguajes de bajo nivel s�lo pueden ser ejecutarse en un tipo de computador y deben reescribirse para ejecutarlos en otro.
Debido a estas ventajas, casi todos los programa se escriben en un lenguaje de alto nivel. Los lenguajes de bajo nivel s�lo se usan para unas pocas aplicaciones especiales.
Hay dos tipos de programas que traducen lenguajes de alto nivel a lenguajes de bajo nivel: int�rpretes y compiladores. Un int�rprete lee un programa de alto nivel y lo ejecuta, lo que significa que lleva a cabo lo que indica el programa. Traduce el programa poco a poco, leyendo y ejecutando cada comando.
Un compilador lee el programa y lo traduce todo al mismo tiempo, antes de ejecutar cualquiera de las instrucciones. En este caso, al programa de alto nivel se le llama el c�digo fuente, y al programa traducido el c�digo de objeto o el c�digo ejecutable. Una vez compilado el programa, puede ejecutarlo repetidamente sin volver a traducirlo.
Python se considera como lenguaje interpretado porque los programas de Python se ejecutan por medio de un int�rprete. Existen dos maneras de usar el int�rprete: modo de comando y modo de gui�n. En modo de comando se escriben sentencias en el lenguaje Python y el int�rprete muestra el resultado.
$ python
Python 1.5.2 (#1, Feb 1 2000, 16:32:16)
Copyright 1991-1995 Stichting Mathematish Centrum, Amsterdam
>>> print 1 + 1
2
La primera l�nea de este ejemplo es el comando que pone en marcha el int�rprete Python. Las dos l�neas siguientes son mensajes del int�rprete. La tercera l�nea comienza con >>>, que es la invitaci�n del int�rprete para indicar que est� listo. Escribimos print 1 + 1 y el int�rprete contest� 2.
Alternativamente, se puede escribir el programa en un archivo y usar el int�rprete para ejecutar el contenido de dicho archivo. El archivo se llama, en este caso, un gui�n. Por ejemplo, en un editor de texto se puede crear un archivo latoya.py que contenga esta l�nea:
print 1 + 1
Por acuerdo un�nime, los archivos que contienen programas de Python tienen nombres que terminan con .py.
Para ejecutar el programa, se le tiene que indicar el nombre del gui�n al int�rprete.
$ python latoya.py
2
En otros entornos de desarrollo los detalles de la ejecuci�n de programas pueden ser diferentes. Aem�s, la mayor�a de programas son m�s interesantes que el mencionado.
La mayor�a de ejemplos en este libro se ejecutan desde en la l�nea de comando. La l�nea de comando es muy apropiada para el desarrollo de programas y para pruebas r�pidas porque se pueden teclear las instrucciones de Python y se pueden ejecutar inmediatamente. Una vez que un programa est� completo, puede archivarse en un gui�n para ejecutarlo o modificarlo en el futuro.
Un programa es una secuencia de instrucciones que especifican c�mo ejecutar una computaci�n. La computaci�n puede ser algo matem�tico, como solucionar un sistema de ecuaciones o determinar las ra�ces de un polinomio, pero tambi�n puede ser una computaci�n simb�lica, como buscar y reemplazar el texto de un documento o (aunque parezca raro) compilar un programa.
Las instrucciones (comandos, �rdenes) tienen una apariencia diferente en lenguajes de programaci�n diferentes, pero existen algunas funciones b�sicas que se presentan en casi todo lenguaje:
Lo crea o no, eso es todo. Todos los programas que existen, por complicados que sean, est�n formulados exclusivamente con tales instrucciones. As�, una manera de describir la programaci�n es: El proceso de romper una tarea en tareas cada vez m�s peque�as hasta que estas tareas sean suficientemente simples para ser ejecutadas con una de estas instrucciones simples.
Quiz�s esta descripci�n sea un poco ambigua. No se preocupe. Lo explicaremos con m�s detalle con el tema de los algoritmos.
La programaci�n es un proceso complejo y, por ser realizado por humanos, a menudo desemboca en errores. Por razones caprichosas, esos errores se llaman bugs y el proceso de buscarlos y corregirlos se llama depuraci�n (en ingl�s "debugging").
Hay tres tipos de errores que pueden ocurrir en un programa, de sintaxis, en tiempo de ejecuci�n y sem�nticos. Es muy �til distinguirlos para encontrarlos mas r�pido.
Python s�lo puede ejecutar un programa si el programa es correcto sint�cticamente. En caso contrario, es decir si el programa no es correcto sint�cticamente, el proceso falla y devuelve un mensaje de error. El t�rmino sintaxis se refiere a la estructura de cualquier programa y a las reglas de esa estructura. Por ejemplo, en espa�ol la primera letra de toda oraci�n debe ser may�scula, y todas las oraciones deben terminar con un punto. esta oraci�n tiene un error sint�ctico. Esta oraci�n tambi�n
Para la mayor�a de lectores, unos pocos errores sint�cticos no son significatvos, y por eso pueden leer la poes�a de e. e. cummings sin anunciar errores de sintaxis. Python no es tan permisivo. Si hay aunque sea un solo error sint�ctico en el programa, Python mostrar� un mensaje de error y abortar� la ejecuci�n del programa. Durante las primeras semanas de su carrera como programador pasar�, seguramente, mucho tiempo buscando errores sint�cticos. Sin embargo, tal como adquiera experiencia tendr� menos errores y los encontrar� mas r�pido.
El segundo tipo de error es un error en tiempo de ejecuci�n. Este error no aparece hasta que se ejecuta el programa. Estos errores tambi�n se llaman excepciones porque indican que algo excepcional (y malo) ha ocurrido.
Con los programas que vamos a escribir al principio, los errores en tiempo de ejecuci�n ocurrir�n con poca frecuencia, as� que puede pasar bastante tiempo hasta que vea uno.
El tercer tipo de error es el error sem�ntico. Si hay un error de l�gica en su programa, el programa se ejecutar� sin ning�n mensaje de error, pero el resultado no ser� el deseado. Ser� cualquier otra cosa. Concretamente, el programa har� lo que usted le dijo.
A veces ocurre que el programa escrito no es el programa que se ten�a en mente. El sentido o significado del programa (su sem�ntica) no es correcto. Es dif�cil hallar errores de l�gica, porque requiere trabajar al rev�s, observando el resultado del programa para averiguar lo que hace.
Una de las t�cnicas m�s importantes que usted aprender� es la depuraci�n. Aunque a veces es frustrante, la depuraci�n es una de las partes m�s intelectualmente ricas, interesantes y estimulantes de la programaci�n.
La depuraci�n es una actividad parecida a la tarea de un investigador: se tienen que estudiar las claves para inducir los procesos y eventos llevaron a los resultados que tiene a la vista.
La depuraci�n tambi�n es una ciencia experimental. Una vez que se tiene la idea de cu�l es el error, se modifica el programa y se intenta nuevamente. Si su hip�tesis fue la correcta se pueden predecir los resultados de la modificaci�n y estar� m�s cerca de un programa correcto. Si su hip�tesis fue err�nea tendr� que idearse otra hip�tesis. Como dijo Sherlock Holmes, "Cuando se ha descartado lo imposible, lo que queda, no importa cuan inveros�mil, debe ser la verdad." (A. Conan Doyle, The Sign of Four)
Para algunas personas, la programaci�n y la depuraci�n son lo mismo: la programaci�n es el proceso de depurar un programa gradualmente hasta que haga lo que usted quiera. La idea es que deber�a usted comenzar con un programa que haga algo y hacer peque�as modificaciones, depur�ndolas sobre la marcha, de modo que siempre tenga un programa que funcione.
Por ejemplo, Linux es un sistema operativo que contiee miles de l�neas de c�digo, pero Linus Torvalds lo comenz� como un programa para explorar el microprocesador Intel 80836. Seg�n Larry Greenfield, "Uno de los proyectos tempranos de Linus fue un programa que alternaba la impresi�n de AAAA con BBBB. Este programa evolucion� en Linux" (de The Linux Users' Guide Versi�n Beta 1).
Otros cap�tulos tratar�n m�s acerca del tema de depuraci�n y otras t�cnicas de programaci�n.
Los lenguajes naturales son los lenguajes hablados por seres humanos, como el espa�ol, el ingl�s y el franc�s. No los han dise�ados personas (aunque se intente poner cierto orden en ellos), sino que se han desarrollado naturalmente.
Los lenguajes formales son lenguajes dise�ados por humanos y que tienen aplicaciones espec�ficas. La notaci�n matem�tica, por ejemplo, es un lenguaje formal ya que se presta a la representaci�n de las relaciones entre n�meros y s�mbolos. Los qu�micos utilizan un lenguaje formal para representar la estructura qu�mica de las mol�culas. Y lo m�s importante:
Los lenguajes de programaci�n son lenguajes formales desarrollados para expresar computaciones.
Los lenguajes formales casi siempre tienen reglas sint�cticas estrictas. Por ejemplo, 3+3=6 es una expresi�n matem�tica correcta, pero 3=+6$ no lo es. De la misma manera, H20 es una nomenclatura qu�mica correcta, pero 2Zz no lo es.
Existen dos clases de reglas sint�cticas, en cuanto a unidades y estructura. Las unidades son los elementos b�sicos de un lenguaje, como lo son las palabras, los n�meros y los elementos qu�micos. Por ejemplo, en 3=+6$, $ no es una unidad matem�tica aceptada (al menos hasta donde nosotros sabemos. Similarmente, 2Xx no es formal porque no hay ning�n elemento con la abreviatura Zz.
La segunda clase de regla sint�ctica est� relacionada con la estructura de un elemento; o sea, el orden de las unidades. La estructura de la sentencia 3=+6$ no se acepta porque no se puede escribir el s�mbolo de igualdad seguido de un s�mbolo positivo. Similarmente, las f�rmulas moleculares tienen que mostrar el n�mero de sub�ndice despu�s del elemento, no antes.
A manera de pr�ctica, trate de producir una oraci�n con estructura aceptada pero que est� compuesta de unidades irreconocibles. Luego escriba otra oraci�n con unidades aceptables pero con estructura no v�lida.
Al leer una oraci�n, sea en un lenguaje natural o una sentencia en un lenguaje t�cnico, se debe discernir la estructura de la oraci�n. En un lenguaje natural este proceso, llamado an�lisis sint�ctico ocurre subconscientemente.
Por ejemplo cuando usted escucha la oraci�n "El otro zapato cay�", entiende que "el otro zapato" es el sujeto y "cay�" es el verbo. Cuando se ha analizado la oraci�n sint�cticamente, se puede deducir el significado, o la sem�ntica, de la oraci�n. Suponiendo que sepa lo ques es un zapato y lo que es caer, entender� el significado de la oraci�n.
Aunque existen muchas cosas en com�n entre los lenguajes naturales y
los lenguajes formales por ejemplo las unidades, la estructura,
la sintaxis y la sem�ntica tambi�n existen muchas diferencias:
Los que aprenden a hablar un lenguaje natural es decir, todo el
mundo muchas veces tienen dificultad en adaptarse a los lenguajes
formales. A veces la diferencia entre los lenguajes formales y los
naturales es comparable a la diferencia entre la prosa y la poes�a:
He aqu� unas sugerencias para la lectura de un programa (y de otros lenguajes formales). Primero, recuerde que los lenguajes formales son mucho m�s densos que los lenguajes naturales, y por consecuente lleva m�s tiempo leerlos. Tambi�n, la estructura es muy importante, as� que entonces no es una buena idea leerlo de pies a cabeza, de izquierda a derecha. En vez de eso, aprenda a separar las diferentes partes en su mente, identificar las unidades e interpretar la estructura. Finalmente, ponga atenci�n a los detalles. Los fallos de puntuaci�n y la ortograf�a, que puede obviar en el lenguaje natural, pueden suponer una gran diferencia en un lenguaje formal.
Tradicionalmente el primer programa en un lenguaje nuevo se llama "Hola, mundo" (Hello world!) porque s�lo muestra las palabras "Hola a todo el mundo". En Python es as�:
print "Hola, mundo"
Este es un ejemplo de una sentencia print, la cual no imprime nada en papel, m�s bien muestra un valor. En este caso, el resultado es las palabras
Hola, mundo
Las comillas se�alan el comienzo y el final del valor; no aparecen en el resultado.
Alguna gente eval�a la calidad de un lenguaje de programaci�n por la simplicidad del programa "Hola, mundo". Si seguimos ese criterio, Python cumple con todas sus metas.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |