Programación para Newbies IV: Más sobre los Lenguajes

Seguimos entonces con los lenguajes…

Bajo v/s Alto Nivel

Ahora, lo curioso (o por lo menos interesante) es que realmente el computador no entiende mejor Ensamblador que Fortran o C (bueno, realmente los computadores son conocidos precisamente porque no entienden nada, de ahí que la programación tiene que ser tan precisa), recuerda: sólo código máquina. Para poder traducir los comandos de un lenguaje de medioalto nivel es necesario otro programa especial conocido como compilador. Su trabajo se puede analogar al de traducir un texto de español a inglés.

stock.xchng | arte ram
stock.xchng | arte ram

Tan cierto como en la traducción entre lenguajes humanos, traducir un libro para niños al inglés es muchísimo más fácil y rápido que traducir un paper, dado que éste último tiene vocabulario más técnico y estructuras más complejas. Por lo tanto, es esperable que la traducción de ensamblador a código máquina es más fácil que la de C, y ésta a su vez, que la de FORTRAN a binario.
Como te puedes dar cuenta, vemos que cada uno tiene sus pros y sus contras. En la esquina oeste de shorts azules, tenemos al de alto nivel que es más fácil de aprender, de modificar y de entender, pero también requiere ser compilado, su traducción a lenguaje máquina puede no ser la más adecuado y su control sobre el hardware de la máquina no es demasiado. Por otra parte, en la esquina este de calzoncillos verdes, tenemos al campeón de peso pesado, lenguaje de bajo nivel, que por un lado permite un control importante sobre la máquina y si bien, requiere ser traducido (en general) por un ensamblador, es más rápido, en contraparte es difícil de aprender, utilizar y lo más importante difícil de modificar.

Modificar de nuevo… ¿cuál es tu problema?

Sí, como te habrás dado cuenta, he hecho mucha referencia a la modificación del código fuente y es la (in)consecuencia lógica de una las cosas que mencioné en la introducción. En el 95% de los casos, luego de pasar noches en vela intentando hacer que tu programa haga algo no lo hará (o más frustrantemente, hará justamente lo opuesto). De eso se desprende la importancia que el código sea fácil de modificar.

Ya, ya… al grano…

flickr.com | nic221. Algunos derechos reservados. Creative Commons BY-NC-SA.
flickr.com | nic221. Algunos derechos reservados. Creative Commons BY-NC-SA.

Si esperas que te responda ¿Cuál es el mejor?, lamento decepcionarte, pues como en muchas cosas, no hay una respuesta correcta. Va a depender de las necesidades que tengas. Por ejemplo, si vas a ser hacker del kernel, creo que sería más prudente aprender ensamblador y C. Un lenguaje de alto nivel probablemente poco sirva (al menos yo no conozco ningún sistema operativo programado en Python o BASIC). Personalmente además de ser muy difícil para mí, no es mi propósito, por lo que dejaré los lenguajes de bajo nivel para más adelante.

Más lenguajes…

Les he comentado sobre ensamblador, FORTRAN y C, sin embargo hay muchos más lenguajes. No tiene sentido siquiera intentar realizar un acercamiento, pero sí me gustaría comentarles acerca de dos subtipos de alto nivel. Los lenguajes interpretados, como Python y el bytecode, como el que utiliza Java.

Python

stock.xchng | Buzzybee
stock.xchng | Buzzybee

Me detuve en este porque será el lenguaje que utilizaremos en las siguientes secciones, de ahí que es importante añadir este nuevo concepto de intérprete a nuestro vocabulario de desarrollador. Este lenguaje es relativamente nuevo, fue creado por Guido van Rossum en el año 1991. Que sea interpretado significa que no tiene que ser compilado (traducido) para luego ser ejecutado, sino que la traducción se va haciendo en la medida que el programa se ejecuta. Para comprenderlo mejor, vamos a seguir con nuestra analogía[1].
Supongamos que el código fuente es el texto de un discurso, en el caso de un lenguaje compilado (como C), un traductor tiene que tomarlo y traducirlo completamente antes que un orador lo exponga. Por otra parte, si estuviera en un lenguaje interpretado (como Python), el orador iría a leerlo en su idioma, y un intérprete lo iría traduciendo en tiempo real. Esto significa que en el primer caso, luego de una vez realizada la traducción, podemos ejecutar la aplicación tantas veces como queramos, mientras que en el segundo se necesitaría al intérprete cada vez que quisiéramos leerlo. Al igual que antes, no hay ninguno tipo que sea superior al otro y la elección debería siempre va a depender de la necesidad/propósito que tengamos. Esta diferencia en el rendimiento entregaría otra razón por lo que no hay sistemas operativos escritos en Python. ¿Imaginas que cada vez tuviera que intepretarse?.

Ah, otra cosa, el nombre Python no se debe a la traducción de pitón (la serpiente), es en honor al grupo de comediantes británicos, Monty Python.

Estaba quedando muy largo es artículo, así que decidí dividirlo, en la próxima parte veremos Java y unas notas finales sobre como tomar la decisión de que lenguaje utilizar.

[1] Metodología y Tecnología de la Programación, Curso 2007/2008

10 comentarios en “Programación para Newbies IV: Más sobre los Lenguajes

  1. Estimado Pablo, con respecto a la sugerencia de youtube claro es dejar los ejemplos practicos( a lo mejor los mas avanzados) en video de pocos minutos. Estudio ingles a través de videos de personas q crean canales especializados para aprender ingles, macros, vbasic ( incluso sugiero youtube edu, vayan a clases del MIT o Standford) y me parecia oportuno tener un canal de ATELIER LINUX especificamente cuando halla tutoriales tan interesantes como este. Algunas personas poseen diferentes tipos de inteligencias y la visual en este caso seria muy buena incluyendo la voz del que relata. Bueno, excelente esta parate IV, ya estoy interiorizandome mas para estar preparado para la nueva entrega. Para los que sigan el curso, hagamos preguntas y el que sabe o cree tener mejores soluciones posteen, no dejemos solo el trabajo a Pablo, see you later

    Me gusta

  2. Grandioso !!! Este como los anteriores: MEJORANDO. Hace algunos días tuve que utilizar Python para una mini-aplicación que necesité y quedé asombrado de la sencillez y la eficacia del lenguaje: comencé copiando las líneas que indicaba un post y luego me fué muy fácil entender el programa y modificarlo para mis necesidades. Si el comienzo es con Python, me parece EXCELENTE elección. Gracias y hasta la próxima.

    Me gusta

  3. Lycus HackerEmo: Así es, en la próxima vamos a eso (¡al fin!).

    Edgar: Muchas gracias :).

    perro: La verdad no me gusta mucho Java… nunca nos hemos llevado bien. Qué bueno que te gustaron las imágenes! (pierdo mucho tiempo buscándolas… :P)

    Sergio Peralta Vega: Es una buena idea, no sé como de manera sencilla grabar lo que estoy haciendo en el escritorio. Si recuerdo bien Pablo N. alguna vez escribió un artículo, así que le voy a preguntar qué artículo era, y que le parece la idea para ver si la implementamos. Gracias por el Feedback!.

    Ravenman: Juas, quizá tengas tú que enseñarnos :P. Y sí es cierto, el lenguaje es sumamente sencillo… ¡incluso parece pseudocódigo!.

    Kaaos: Acabo de publicar la quinta parte ;).

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.