Python - una posible elección para programadores que habitualmente usan C.(**)
Descripción: Generalmente un programador que usa C, quizás pueda buscar una alternativa que permita hacer tareas en menos tiempo pero sin perder las posibilidades que C puede entregar; Python es una genial opción.
Articulo En Construcción!!
Introducción
Muchas veces he escuchado a programadores hablar muy mal de lenguajes interpretados, como por ejemplo Mono y Python. Pero muchas veces también he escuchado quejas y/o comentarios de programadores C contra el mismo lenguaje de programación C o C++. El motivo es que generalmente se tienen que programar muchas lineas de código e intervenir a veces a bajo nivel; el manejo de memoria durante el tiempo de ejecución es un buen ejemplo. Y que por cierto no es una tarea menor, de hecho uno de los errores comunes que son reportados y/o corregidos es lo que se llama un "memory leak", que es básicamente que ciertos sectores de memoria que han sido solicitados al sistema por un programa y posteriormente desocupados por el mismo no son devueltos o liberados, causando una sobrecarga que podría llevar a un cuelgue de la aplicación o a una lentitud general en el resto de las aplicaciones, debido a que el sistema operativo (en casos muy extremos) se encuentra muy ocupado reservando mucha más memoria de la que se debiese ocupar.
Es por esto que quise escribir un breve artículo para que si hay algún desarrollador que se encuentre en una situación similar, pueda servirle de base. Todos los comentarios son bienvenidos.
Pequeña comparación de códigos
El lenguaje de programación C es un lenguaje muy potente y, a pesar de que se dice que es de alto nivel, en mi opinión diría que puede ser considerado como uno de nivel medio. La curva de aprendizaje no es alta por lo que además es usado en muchos centros de enseñanzas como Institutos y Universidades. Este es un pequeño ejemplo que quizás si mi querido lector es programador C lo encontrará bastante burdo:
#include <stdio.h>
int
main(int arc, char **argv)
{
printf ("Un tipico ejemplo de codigo C.\n") ;
}
Creo que a simple vista se sabe lo que hace el programa, aun si fuera un estudiante relacionada a la computación recién matriculado :-) sin embargo el código podría extenderse un poco dependiendo de la aplicación a desarrollar, con lo cual quizá podría además complicar su lectura posteriormente. Veamos un ejemplo muy simple de abrir un archivo de texto simple y a continuación mostrar lo que hay en él; tomaremos como ejemplo el archivo /proc/filesystems:
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 30
int
main (int argc, char **argv)
{
FILE *f;
char *buffer;
f = fopen ("/proc/filesystems", "r");
while (!feof(f))
{
fgets(buffer, BUFFER_SIZE, f);
printf ("%s", buffer);
}
fclose(f)
return 0;
}
Ahá! El código aumentó en cantidad de lineas para simplemente tomar un archivo y mostrar su contenido. Tú te preguntarás quizás ¿Para que tanto si sólo quiero ver un archivo? ¿Te parece bien ver un ejemplo en Python? Bueno, sigamos leyendo:
print open("/proc/filesystems").read()
Simple, ¿verdad? Bueno, y creo que no debiera ser más necesario que esto.
Algunas referencias del lenguaje
Python es un lenguaje interpretado, eso quiere decir que no necesitas compilar tu código fuente cada vez que hagas un cambio pero si vas a necesitar tener el interprete instalado, el cual en las mayoría de las distribuciones Linux modernas (lease Mandriva, Ubuntu, Fedora,...) no tienes que preocuparte de eso. Existen versiones también para otros sistemas operativos pero más información la encontrarás en sección de descargas de la página oficial.
Estructuras básicas y de control
Como todo lenguaje de programación con Python puedes programar códigos básicos (condiciones y bucles) pero también puedes utilizarlo para: programar interfaces gráficas, servicios de red, módulos matemáticos, estadísticos, bioinformáticas y mucho más. Veamos un ejemplo práctico y simple de como sería programar con Python:
mi_variable = -10
if mi_variable >= 0:
print "Numero positivo o cero"
else:
print "Numero negativo"
¿Que podemos aprender?
- No se necesita incluir o importar nada para hacer funcionar este ejemplo.
- No hay puntos de comas (;) para terminar una orden.
- Un bloque es señalado por dos puntos (Lo mismo que hacían las llaves en C) y la linea siguiente debe empezar con un tabulador o cuatro (4) espacios en blanco.
- No es requerido iniciar la variable con un determinado tipo de dato
Quizás te puedas preguntar: ¿Pero donde escribo esto? La respuesta es simple y breve: "En el editor de textos que quieras". Lo bueno es que no tendrás que aprender a usar un nuevo editor, aquí podrás seguir usando el mismo que usas siempre, como emacs, vi u otros más gráficos como gedit o kwrite. Luego guardas el archivo (en mi caso ejemplo.py) y lo ejecutas de la siguiente forma en un terminal:
[mario@localhost ~]$ python ejemplo.py Numero negativo
Variables más elaboradas
Ya hemos visto que no necesitas definir el tipo de dato a una variable, sin embargo sí puedes crear una variable que se "transforme" en algo más elaborado, veamos. Existen tres (3) estructuras en Python que son muy útiles y por ende muy utilizadas que son las listas, tuplas y diccionarios; las tres se asemejan un poco a los vectores en el lenguaje de programación C.
Listas: se crean cuando se asigna un par de corchetes a la variable:
La ejecución en un terminal y posterior salida es:mi_variable = [ 1,3,6.5, "Una cadena de caracteres" ] print mi_variable mi_variable.append( 10 ) print mi_variable
[mario@localhost ~]$ python ejemplo.py [1, 3, 6.5, 'Una cadena de caracteres'] [1, 3, 6.5, 'Una cadena de caracteres', 10]
¿Que podemos aprender?
- Se puede almacenar diversos tipos de datos en la misma estructura.
- Se permite cambiar su tamaño durante la ejecución del programa.
- Python se basa en el modelo Orientado a Objetos, es por eso que en la linea tres, logré ejecutar el método "append".
Tuplas: se crean cuando se asigna un par de paréntesis a la variable. Funcionan de manera muy similar a las Listas con la salvedad que no se puede alterar su tamaño en tiempo de ejecución. Veamos un ejemplo:
La ejecución en un terminal y posterior salida es:mi_variable = ( 1,2,3 ) print mi_variable mi_variable.append( 4 )
[mario@localhost ~]$ python ejemplo.py (1, 2, 3) Traceback (most recent call last): File "ejemplo.py", line 4, inmi_variable.append( 4 ) AttributeError: 'tuple' object has no attribute 'append'
¿Que podemos aprender?
- No se permite cambiar el tamaño de la tupla, una vez que se haya iniciado el programa.
- Python te ayuda a encontrar él o los errores haciendo un "seguimiento hacia atrás" mostrando el estado del programa antes de producirse el fallo (Traceback) .