sábado, julio 28, 2007

IDEs, Editores y Compiladores

Tengo que aceptarlo. Hasta tercer semestre para programar en java usaba JCreator, y para programar en C++ usaba Visual C++. Si no tenia dichas herramientas (cada uno con su respectivo botoncito de compilar super visible) no era capa de hacer nada.

El asunto de usar este tipo de herramientas no tiene nada de vergonzoso. Lo vergonzoso resulta en que a veces, tanto "user friendly" en las herramientas de programación resulta perjudicial... especialmente cuando uno está aprendiendo.

Pues bien. El semestre pasado estaba de monitor de Matemáticas Especiales 2 (Traducido a un lenguaje mas universal sería algo así como Matemáticas Discretas) y como "motivación" era un pequeño trabajo en Haskell. Cuando empecé a dar la inducción al lenguaje y comencé por lo básico.

Diego: "Bueno... Inicialmente las herramientas mas usadas son GHC y Hugs. Existe versión para Windows y Linux..."
Estudiante: "Ahí descargamos el IDE?"
Diego: "No... ahí encuentran el compilador o el interprete"
Estudiante: "Por eso"
Diego: "Ehm no... no son la misma cosa"

A eso es precisamente a lo que me refiero. Algunos personajes creen que la labor pedagógica consiste en hacerle las cosas fácil al pequeño padawan y en este intento surgen oleadas de profesionales incapaces de salirse del ambiente Java .Net de turno. Y respecto a eso hay una historia muy curiosa.

Pascal, el lenguaje desarrollado por Niklaus Wirth, tenía como objetivo principal un uso educacional de la programación estructurada. De hecho uno a veces se topa en mucho articulo que el formalismo no muy práctico de pascal resulta conveniente para escribir pseudocódigo. El uso académico de dicho lenguaje resulto en la utilización del mismo para aplicaciones de verdad simplemente porque a la hora de que el nuevo profesional escogiera una herramienta, usaría la que conocía.

En fin, no me desviare mas.

Que es un Editor?
Esta es fácil.
Básicamente hay dos tipos, editores de texto plano, y editores de "richt text" (texto enriquecido?). Los primeros son los que nos interesan. Estos permiten manipular texto en alguna de sus diversas codificaciones, pero usualmente se refiere a editores de texto plano ASCII.

A veces estos poseen capacidades para reconocer que el texto que se escribe, posee algún tipo de gramática y otras veces tienen herramientas para interactuar con el entorno (Acceso a Shell por ejemplo).

Que es un Compilador?
Sin meternos mucho en discusiones casi filosóficas como que el compilador debe ser tipo 2 en la jerarquía de Chomsky no es compilador, o cosas del estilo, entenderemos por compilador como aquel programa que, toma un Programa fuente, y entrega un Programa Objetivo.

Un Compilador es un traductor y nada mas.

Que es un IDE?

Integrated Development Environment. La idea es esa, tener un compilador, un editor y otras cosas, por ejemplo:

Debugger:
Usualmente se refiere a la posibilidad de poner puntos de parada en el programa y revisar el estado de las variables.
Perfiles de compilación
Si. Posibilidad de tener varias formas a la hora de compilar el proyecto, para ajustar opciones de optimización y demás.

y muchas otras cosas.

En fin. Creo que hasta ahí hay suficiente contexto y pese a que digo solo cosas elementales tenía que hacer un esfuerzo por arreglar el camino al resto de Desencaminados. Probablemente mañana hable de mi reciente experiencia con Emacs ya que hoy me extendí mucho.

4 comentarios:

acadavid dijo...

Es curioso eso.. hay estudiantes de semestres avanzados que no son capaces de compilar un programa por línea de comandos... sin su IDE se sienten incapaces de programar.. Esta entrada podría resultar util para estudiantes de primeros semestres.

Alejandro González Estrada dijo...

Es muy normal y muy común, muchas personas se ciñen con exactitud a lo que se les enseña, en especial cuando no hay un enfoque directo con la programación, pero en realidad, el utilizarlos o no utilizarlos, en la vida real, a un cliente no le va a interesar como compiles tu programa, lo importante es que funcione y que solucione la necesidad que te plantearon. Para que lo tengas en cuenta: las nuevas herramientas hay que utilizarlas, porque hay programadores que programan para programadores y no podemos seguir haciendo las cosas de la misma manera toda la vida, simplemente: evolución.

diegoeche dijo...

Evolución en el sentido adaptativo implica el cambio, por algo mejor. Porque hay que usar las nuevas herramientas? y a que nuevas herramientas se refiere? porque no se programa para programadores? quien mas va leer el código fuente diferente del programador?

diegoeche dijo...

a programadores digo