Por: Guillermo Siliceo Trueba
1. Porque cuando quieres enseñar un concepto de programación en C tienes que enseñar muchos conceptos relacionados antes de poder llegar al que nos ocupa, en Python estos pasos extra(que confunden a un novato) no existen por lo tanto es más fácil enseñar en Python.
Ejemplo, como imprimir algo en la pantalla:
C
#include <stdio.h>
void main() {
printf(´Hola mundo´);
}
Python
print (“hola mundo”)
En C uno tiene que enseñar que es una librería la sintaxis para incluir una librería, que es una función, que es void, que son los corchetes, porque la f en print(formated) porque el punto y coma. En Python solo decir que print en inglés es imprimir que es una función y ya!.
Ahora que tal que decidimos capturar un dato de entrada del usuario
Python
Variable = input()
Aquí solo tenemos que enseñar que input captura cadenas de texto.
C
#include <stdio.h>
Char variable[20] ;
void main() {
scanf(“%s”,&variable);
}
Hay que enseñar que es una variable char, que significa el [20], que es scanf, que significa %c porque va entre comillas, y el que significa el operador unario &
2. Porque es muy parecido al pseudocódigo que escribimos en Algoritmos, y como ejemplo pondré una tarea que escribí primero en pseudocódigo luego en python y luego en C
El problema:
Sea N definido por el usuario
nn+nn+nn+… NN
Pseudocódigo
Inicio
Imprimir ("Introduzca el valor de un número entero");
Leer(N);
Declarar Sumapotencias = 0;
Mientras (N != 0)
{
Declarar Potencia = N;
Para i igual a 0 hasta N
{
Potencia = Potencia * N;
}
N = N - 1;
Sumapotencias = Potencia + Sumapotencias;
}
Imprimir('El resultado de sumar desde 1 hasta ',Numero,' elevando cada sumando al valor de si mismo es: ',Sumapotencias);
Fin
Python
Python
print("Introduzca el valor de un número entero")
N = int(input())
Sumapotencias = 0
while N != 0:
Potencia = N
for i in range(N-1):
Potencia = Potencia * N
N = N-1
Sumapotencias = Potencia + Sumapotencias
print("El total de la suma es: %i" %Sumapotencias)
C
#include <stdio.h>
#include <conio.h>
int main(int argc, char *argv[])
{
int N, Potencia,Sumapotencias,i;
printf ("Introduzca N: ");
scanf("%i", &N);
Sumapotencias = 0;
while (N != 0)
{
Potencia = N;
for ( i=1 ; i<N ; i++ )
{
Potencia = Potencia * N;
}
N = N - 1;
Sumapotencias = Potencia + Sumapotencias;
}
printf("El total de la suma es: %i \n",Sumapotencias);
system("PAUSE");
return 0;
}
Notese que el pseudocódigo está escrito con sintaxis parecida a C, la cantidad de código escrito y el parecido al pseudocódigo.
3. Porque Python no fuerza el usuario a escribir en programación funcional ni en orientada a objetos, el usuario puede elegir. En cambio en otros lenguajes se tienen que introducir conceptos de OO para poder empezar a usar el lenguaje, en C# y en Java para imprimir hola mundo primero hay que declarar primero la clase el ámbito de la función principal, en Python como ya vimos no es necesario, pero se puede hacer si se desea. Esta ventaja permite que se nos enseñe a programar primero con funciones y luego avanzar de manera natural a la orientada a objetos con el mismo lenguaje.
4. El interprete:
En python todo el código es interpretado, me es muy difícil destacar la importancia del interprete cuando se está aprendiendo pero puedo decir que es mucho más efectivo cambiar código en tiempo real a hacerlo en un depurador como en C, además de que es posible escribir código que afecta nuestro programa y que este se ejecute inmediatamente viendo sus efectos, sin tener que recompilar, así el intérprete nos permite trabajar mucho más rápido.
5. Tecnicamente Python no es un lenguaje de programación sino de scripts y fue diseñado para la administración rápida de sistemas, fue desarrollado para ayudar a los administradores de sistema a hacer más rápido el desarrollo de soluciones o como lenguaje para crear prototipos rápidos. Así si uno necesita conectar una base de datos en unas cuantas líneas en Python se soluciona el problema y después si se desea se puede reescribir en C, pero ya con la seguridad de que la implementación escrita funciona.
6. Lenguaje portable, multiplataforma:
Que sus alumnos desean trabajar en Linux, no hay problema, el código de Python es exactamente el mismo en Linux que en Windows o hasta en una Mac, o en Solaris o en Unix. Python tiene binarios listos para usarse para varias plataformas y sus librerías funcionan con independencia de estas.
7. Python tiene las baterías incluidas
Con esto me refiero a que la librería estándar de Python incluye módulos para hacer casi lo que uno quiera, por ejemplo, incluye modulos para cargar páginas web y trabajar con ellas, para trabajar con archivos xml, para trabajar con bases de datos, para usar expresiones regulares, una completa librería matemática, para trabajar con archivos en Windows, Linux u OsX, hasta incluye una librería para comprimir archivos usando zip. Así el programador puede escribir su programa, instalar Python en todas las maquinas en las que quiere que corra y olvidarse de las dependencias o de distribuir librerías extra a los clientes.
8. Python es libre y gratuito
Si la UGTO logra que se gradúen estudiantes que usan tecnologías libres, estará ahorrándole dinero al país, estará independizándolo de las soluciones costosas de empresas de otros países, estará dándole las herramientas para trabajar en cualquier PYME desde el dia 0 sin que esta tenga que pagar un solo centavo en licencias ni derechos.
9. La comunidad
Por la naturaleza libre de Python es normal que las personas en internet te quieran ayudar, escriban ejemplos y los publiquen, respondan dudas, hay una vibrante comunidad de programadores dispuestos a ayudar a los que están aprendiendo, sin mencionar una enorme cantidad de recursos y ejemplos por todo el internet.
10. Multiples implementaciones de Python
OK falto el número 10, existen diferentes versiones de Python que utilizan características de otros lenguajes de programación, por ejemplo si deseamos hacer la transición a Java podemos utilizar primero Jython, que compila código Python a byte-code de Java mismo que puede correr una JVM, pudiendo aprovechar las librerías de java con la misma flexibilidad que Java mismo.
Si deseamos utilizar las librerías de .NET utilizaríamos Iron Python, trabajando desde visual studio sin problemas con sintáxis de Python utilizando los componentes de .NET o de Windows Presentation Foundation, desde el ambiente conocido.
Si deseamos implementar una función de Python que resulta lenta en tiempo de ejecución en C podemos hacerlo, Python de fábrica puede trabajar con Módulos de C sin problemas utilizando Cython.
Si deseamos servir páginas dinámicas en internet, no hay problema no necesitamos aprender php o asp, con python y el framework Django podemos crear páginas dinámicas sin problemas.
Que queremos crear una aplicación con interfaz gráfica, Python incluye tk, una librería de interfaces gráficas.
Existen algunos otros proyectos interesantes en Python como el PyPy cuya misión es: Que el código de Python corra mas rápido que en C.
Conclusiones:
El lenguaje Python tiene serias ventajas sobre otros lenguajes para aprender, y si bien es cierto que aprendiendo C a uno se le facilita aprender cualquier otro lenguaje incluido Python(el intérprete de Python y muchas librerías están escritas en C), aprender C en si mismo es difícil y dado el poco tiempo con el que se cuenta para iniciar a la programación y la flojera de los estudiantes(ignorarla sería un error, hay que atacarla) se necesita un lenguaje que sea rápido y que requiera menos esfuerzo mental inicial, y que a la vez los prepare para las materias que más adelante llevarán y finalmente para el ambiente laboral.
Ligas
¿Qué es Python? [inglés]
http://www.python.org/doc/essays/blurb/
Comparando Python con otros lenguajes[inglés]
http://www.python.org/doc/essays/comparisons/
Descargar el interprete de Python 3.1.3
http://www.python.org/ftp/python/3.1.3/python-3.1.3.msi
Pyscripter - Un excelente IDE para Windows
http://code.google.com/p/pyscripter/downloads/detail?name=PyScripter-v2.4.1-Setup.exe&can=2&q=
Porque Python como primer lenguaje
http://mcsp.wartburg.edu/zelle/python/python-first.html
Un excelente libro introductorio
Dive into Python 3.0
http://diveintopython3.org/
Traducción al español
http://code.google.com/p/inmersionenpython3/updates/list