Duda

Chema Cortes py en ch3m4.org
Mar Jul 18 12:24:15 CEST 2006


Daniel Cabrera escribió:

> tengo una duda sobre aprender y usar Python o C# con Mono, he visto los 2
> lenguajes y me parecen buenos, pero me gustaria especializarme en uno, por
> eso me gustaria saber sus comentarios sobre estos dos lenguajes.

No creo que sea bueno "especializarse" por capricho, sin más motivación.
Ambos son buenos lenguajes, libres y con una gran comunidad de
desarrolladores apoyándolos. Aprovéchate y pruébalos tú mismo.

Conviene distinguir entre el lenguaje de programación y la tecnología
que le da soporte. Para hablar de C# hay que contextualizarlo en la
plataforma tecnológica donde se ejecuta (CLI-Common Language
Infrastructure). Esta plataforma usa un lenguaje intermedio conocido por
CLS/CTS (Common Language System/Common Type System) que facilita la
integración de todos los lenguajes hasta el extremo de quitar toda
transcendencia en la elección del lenguaje principal de un proyecto de
desarrollo.

Un desarrollo para CLI, por tanto, podría programarse tanto en C# como
en Ironpython (python para mono/.Net) sin ningún problema para encajar
los distintos módulos. El usar uno u otro lenguaje depende más de los
gustos del programador que de otra cosa.

De ironpython hay que resaltar que, aún siendo un lenguaje dinámico, su
ejecución se hace con escasa penalización, por lo que puede
perfectamente el "lenguaje principal" de un proyecto de desarrollo. Otro
lenguaje a considerar es el "boo", un modo de aproximar la sintaxis de
python al CLS/CTS. Es una buena alternativa, por lo menos hasta que
ironpython termine de madurar del todo. (Una tercera vía sería usar
PythonNet, aunque lo dejo fuera del estudio).

El gran competidor del CLI es java. Puede que algún día se libere la
máquina virtual, pero dudo que sea alguna de las versiones actuales. A
pesar de no estar pensado para multilenguaje, la integración de java y
jython (python para java) es excelente, por lo que hace de jython el
lenguaje de script idóneo para acompañar a todo proyecto de desarrollo
en java.

El tercer y principal entorno donde se ejecuta python es con su propia
máquina virtual hecha en C (CPython), que funciona allí donde exista un
compilador de C. Pero no queda aquí todo, ya que hay otras máquinas
virtuales (eg: Parrot) en las que también corre python.

Con todo lo dicho, estas son mis conclusiones:

- Con python, puedes hacer desarrollos para cualquier sistema operativo
y para cualquier plataforma tecnológica; con C# te limitas a la
plataforma CLI (.Net y mono)

- Con python puedes usar multitud de entornos gráficos (wx, gtk, qt, tk,
..., swt, awt/swing,...); con C# te tienes que limitar a windows.forms
(.Net) o gtk# (mono/.Net) (aunque haya otros disponibles como wx# o swt)

- Con python tienes multitud de frameworks para web (zope, django,
turbogears, cherrypy, ..., tomcat, ASP, cgi, mod_python,...); en C# te
limitas a ASP.Net y XSP.

- Aunque no se tenga por importante, python evoluciona pausadamente,
debatiendo cualquier cambio con la comunidad; C#, en cambio, evoluciona
dirigido por Microsoft, sin demasiado apego a mantener la compatibilidad
hacia atrás.


Con lo dicho, espero haberte convencido para que uses python, como era
de esperar siendo ésta una lista de python. Aún con todo, te recomiendo
que eches un vistazo a C# y a boo; incluso te diría que eches un vistazo
a lua, una especie python minimalista, o al ruby, un lenguaje con fuerte
orientación a objetos. Todo menos especializarte. Si quieres dominar un
lenguaje necesitas conocer sus carencias, y éso sólo se consigue viendo
los aciertos que han tenido en otros lenguajes.



-- 
Chema Cortés (py en ch3m4.org)
"Proudly made on earth by generic humanoid carbon units"




Más información sobre la lista de distribución Python-es