![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
El objetivo de este libro es de enseñar al estudiante a pensar como lo hacen los científicos informáticos. Esta manera de pensar combina las mejores características de la matemática, ingeniería, y las ciencias naturales. Como los matemáticos, los científicos informáticos usan lenguas formales para designar ideas (específicamente, computaciones). Como los ingenieros, ellos diseñan cosas, ensamblando sistemas 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 clara y precisamente. 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 vera mas 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, que también se los califica como lenguaje de máquina o lenguaje de ensamblado. A propósito, las computadoras sólo ejecutan programas escritos en lenguajes de bajo nivel. Los programas de alto nivel tienen que ser traducidos antes de ser ejecutados. 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 mas cortos y mas fáciles de leer, y es mas probable que estos programas sean correctos. En segundo lugar, lenguajes de alto nivel son portátiles, lo que significa que pueden ser ejecutados en tipos diferentes de computadoras sin modificación alguna o con pocas modificaciones. Programas escritos en lenguajes de bajo nivel solo pueden ser ejecutados en un tipo de computadora y deben ser re-escritos para ser ejecutados en otro.
Debido a estas ventajas, casi todo programa es escrito en un lenguaje de alto nivel. Los lenguajes de bajo nivel son sólo usados para unas pocas aplicaciones especiales.
Hay dos tipos de programas que traducen lenguajes de alto nivel a lenguajes de bajo nivel: interpretadoras y compiladores. Una interpretadora 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 alguno de los programas. A menudo se compila un programa como un paso a parte, y luego se ejecuta el código compilado. En este caso, al programa de alto nivel se lo llama el código fuente, y al programa traducido es llamado el código de objeto o el código ejecutable.

A Python se lo considera un lenguaje interpretado porque programas de Python son ejecutados por una interpretadora. Existen dos maneras de usar la interpretadora: modo de comando y modo de guión. En modo de comando se escriben sentencias en el lenguaje Python y la interpretadora 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 a la interpretadora Python. Las dos líneas siguientes son mensajes de la interpretadora. La tercera linea comienza con >>>, lo que es la invitación de la interpretadora para indicar que está listo. Escribimos 1+1 y la interpretadora contestó 2.
Alternativamente, se puede escribir el programa en un archivo y usar la interpretadora para ejecutar el contenido de dicho archivo. El archivo es, en este caso, llamado un guión. Por ejemplo, en un editor de texto se puede crear un archivo latoya.pyque 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 a la interpretadora.
$ python latoya.py
2
En otros entomos de desarrollo los detalles de la ejecución de programas diferirán. También, la mayoría de programas son mas interesantes que el mencionado.
La mayoría de ejemplos en este libro son ejecutados en la línea de comando. La línea de comando es más conveniente para el desarrollo de programas y para pruebas rápidas porque se pueden pasar a máquina las instrucciones de Python y pueden ser ejecutados inmediatamente. Una vez que un programa esta completo, se lo puede archivar en un guión para ejecutarlo o modificarlo en el futuro.
Un programa es una secuencia de instrucciones que especifican como 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 pueden 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:
Aunque sea difícil de creer, todos los programas en existencia son formulados exclusivamente de 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 ejecutada con una de estas simples instrucciones.
Quizás esta descripción es un poco ambigua. No se preocupe. Explicaremos con mas detalle con el tema de algoritmos.
La programación es un proceso complejo y a veces este proceso lleva a errores indefinidos, también llamados defectos o errores de programación (en inglés `bugs') y el proceso de buscarlos y corregirlos es llamado depuración (en inglés `debugging').
Hay tres tipos de errores que pueden ocurrir en un programa. Es muy útil distinguirlos para encontrarlos mas rápido.
Python sólo puede ejecutar un programa si el programa está correcto sintácticamente. Contrariamente, es decir si el programa no esta correcto sintácticamente, el proceso falla y devuelve un mensaje de error. El término sintáctica 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. esta oración tiene un error sintáctico. Esta oración también
Para la mayoría de lectores, unos pocos errores no impiden la comprensión de la poesía de e e cummings, la cual rompe muchas reglas de sintaxis. Sin embargo Python no es así. Si hay aunque sea un error sintáctico en el programa, Python mostrará un mensaje de error y abortará la ejecución del programa. Al principio usted pasará mucho tiempo buscando errores sintácticos, pero con el tiempo no tendrá tantos errores y los encontrará mas rápido.
El segundo tipo de error es un error de tiempo de ejecución. Este error aparece sólo cuando de ejecuta el programa. Estos errores también se llaman excepciones porque indican que algo excepcional ha ocurrido.
Con los programas que vamos a escribir al principio, errores de tiempo de ejecución ocurrirán con poca frecuencia.
El tercer tipo de error es el error semántico. Si hay un error de lógica en su programa, el programa será ejecutado sin ningún mensaje de error, pero el resultado no será el deseado. El programa ejecutará la lógica que usted le dijo que ejecutara.
A veces ocurre que el programa escrito no es el programa que se tenía en mente. El sentido o significado del programa no es correcto. Es difícil hallar errores de lógica. Eso requiere trabajar al revés, comenzando por la salida (output) para encontrar al problema.
Una de las técnicas más importantes que usted aprenderá es la depuración. Aunque a veces es frustrante, la depuración es un proceso interesante, estimulante e intelectual.
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 the llevarán a los resultados previstos.
La depuración también es una ciencia experimental. Una vez que se tiene la idea de el error, se modifica el programa y se intenta nuevamente. Si la hipótesis fue la correcta se pueden predecir los resultados de la modificación y estaremos mas cerca a un programa correcto. Si la hipótesis fue la 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 el programa tenga el resultado deseado. Esto quiere decir que el programa debe ser, desde un principio, un programa que funcione, aunque su función sea solo mínima. El programa es depurado mientras el crece y se desarrolla.
Por ejemplo, aunque el sistema operativo Linux contenga miles de líneas de instrucciones, 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 intercambiaría la impresión de AAAA con BBBB. Este programa se volvió en Linux" (de The Linux Users' Guide Versión Beta 1).
Otros capítulos tratarán más con el tema de depuración y otras técnicas de programación.
Lenguajes naturales son los lenguajes hablados por seres humanos, como el español, el inglés y el francés. Estos no han sido diseñados artificialmente (aunque se traten de imponer), pues se han desarrollado naturalmente.
Lenguajes formales son lenguajes que son 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. Es necesario notar que:
Lenguajes de programación son lenguajes formales que han sido 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. Similarmente, 2Xx no es formal porque no hay ningún elemento con la abreviación Zz.
La segunda clase de error sintáctico está relacionado con la estructura de un elemento; mejor dicho, el orden de las unidades. La estructura de la sentencia 3=+6$ no es aceptada 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 es 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 subconcientemente.
Por ejemplo cuando se escucha una oración simple, se puede distinguir el sustantivo y el verbo. Cuando se ha analizado la oración sintácticamente, se puede deducir el significado, o la semántica, de la oración. Si se conoce el sustantivo y el verbo, se 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 sintáctica y la semántica pero 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:
E aquí unas sugerencias para la lectura de un programa (y de otros lenguajes formales). Primero, recuerde que los lenguajes formales son mucho mas densos que los lenguajes naturales, y por consecuente lleva mas tiempo para leerlos. También, la estructura es muy importante, entonces no es una buena idea leerlo de pies a cabeza, de izquierda a derecha. En vez, aprenda a separar las diferentes partes en su mente, identificar las unidades y interpretando la estructura. Finalmente, ponga atención en los detalles. La fallas de puntuación y la ortografía afectarán negativamente la ejecución de su programa.
Tradicionalmente el primer programa en un lenguaje nuevo se llama "Hola todo el mundo!" (Hello world!) porque solo muestra las palabras "Hola todo el mundo" (Hello world!). En el lenguaje Python es así:
print "Hola todo el mundo!"
Este es un ejemplo de una sentencia print, la cual no imprime nada en papel, mas bien muestra un valor. En este caso, el resultado es las palabras
Hola todo el 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 de el programa "Hola todo el mundo!". Si seguimos ese criterio, Python cumple con todas sus metas.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |