viernes, 7 de octubre de 2011

IPnaf IDE - La IDE definitiva para python

Dentro del titulo mentiroso, que usé para atraer la atención (el plan B era poner "cerveza gratis!") encierro un pensamiento mío, pero que creo que muchos compartimos. Pero, primero lo primero:

IPnaf IDE quiere decir: IPnaf Please Not Another Fucking IDE!!

Aunque, debería ser "not another fucking python IDE!" Y a qué me refiero con esta misteriosa frase?? He visto, y ultimamente mucho mas, una proliferacion de lo que hacen llamar IDEs. Pero, me voy a centrar en IDEs para el lenguaje pythyon: cito, spyder, Ninja, entre otros, que aparecieron como "somos la IDE definitiva".

Hay un chiste de Xkcd donde, la idea más o menos es que, alguien dice "uh, hay n maneras de hacer x! No puede ser, hay que generar un standard. Horas luego hay n+1 maneras de hacer x"

Y es así. Siempre. Siempre?? Bueno, no siempre, pero en el 99.9% de los casos. Otras veces, ese pensamiento da lugar a innovaciones. Pero, es lo común?? Diríamos que no.

Vuelvo a los ejemplos que cité: Spyder y Ninja. Ambas las bajé, instalé y probé. Aclaro que no tengo nada en contra de quienes la desarrollan (ni los conozco) ni me parece que su trabajo y esfuerzo sea malo. Al contrario. Pero, veo que está desperdiciado. Gente con talento claro, pone esfuerzo en cosas que ya existen y, sin innovaciones reales. A qué me refiero??

Spyder y Ninja [0] son, sin duda esfuerzos de desarrollo y diseño. Pero, que son? Editores de texto lindos y python friendly. Nada más. Ah, y que ejecutan código. Nada que no puede hacer con Emacs y un poco de tiempo + macros.

Debugger? No, gracias. [1]

Ojo, no es que sea fácil hacer un debugger como la gente, que corrar el código paso a paso y podamos inspeccionar varibles, ejecutar código en el contexto de ejecución, editar código on the fly, hacer remote debugging etc. [2]
Pero, es lo que falta!! (en general) Y si, es más lindo ponerse a escribir la IDE desde cero [3], y luego agregarle esas funcionalidades superstar, pero, primero hay que hacer el editor, el highlighter, el buscador de código, el generador de plugins, el pseudo intellisense, etc. Y, para cuando llegamos a las funcionalidades breakers, rockstar, "la papa", quizá el proyecto ya murió.

"No necesitamos esos features de maricones". Diría el macho programmer. (y esto me hizo acordar a otro chiste de Xkcd) pero, la realidad es que, cuando más cómodo esté uno, mejor trabaja y más se puede concentrar en el problema puntual que esté resolviendo.

Por qué no tomar una IDE existente y opensource y mejorarla en vez de arrancer una from scratch?

Entonces, si se van a poner a programar, aviso, no necesitamos más IDEs =) 

EOF

[0] Elegí Spyder y Ninja porque son 2 que recuerdo haber visto últimamente, y que además las instalé y probé.

[1]  Creo que Spyder estaba implementando pdb y winpdb. De todos modos, mi punto sigue en pie.

[2] Acá es cuando alguien me va a decir, "vos, porque estás acosbumbrado a visual basic" Puedo asegurar que he programado en editores de texto plano como en Visual Studio, Eclipse o Netbeans. Uno puede usar un debugger o usar prints, pero, las funcionalidades rock star en las IDEs, son geniales!! No es que uno no pueda vivir sin ellas, pero, si existen, mucho mejor!!

[3] Es como el caso de las n distribuciones de Linux. Ya hay suficientes en variedad como para parar un poco, si tenés tantas ganas de laburar en una distro, contribuí con una que exista!!!

10 comentarios:

  1. Debugger, Diseñador de UI, Code Completion, Code Locator (Una feature que te permite acceder a cualquier archivo, funcion, clase con muy pocas teclas), entre otras cosas, es todo lo que va a estar incluido en NINJA-IDE 2.0.

    http://www.diegosarmentero.com/2011/08/algunos-adelantos-de-ninja-ide-20.html

    También podes consultar el Roadmap para esta versión que estamos desarrollando:

    http://code.google.com/p/ninja-ide/wiki/Tasks

    Y siempre se escuchan propuestas de mejoras en la lista de correo.

    ResponderEliminar
  2. Diego,
    Capaz que puse enfasis de forma erronea en mi texto. Lo que quise decir es que, más allá de si las IDEs que nombre estén o no buenas, lo que me hace ruido es que gente con capacidad y talento (porque, claramente lo tienen) se ""desperdicie"" (no encontré mejor término) en hacer algo desde cero que, mal o bien ya existe.

    Es decir, capaz podrían haber tomado una IDE ya existente, y hacer un fork para plasmar sus ideas, en lugar de arrancar from scratch.

    Es un pensamiento/opinión. Tal vez esté muy equivocado y sean ese pequeño porcentaje que rompe con paradigmas. Who knows? =)

    ResponderEliminar
  3. Lo de tomar algo que ya existe y agregar ahí las ideas obviamente se planteo al comienzo... pero era perder muchoooo tiempo en tratar de entender otro proyecto para terminar encima acarreando con cosas que no te convencían de otro proyecto, en lugar de simplemente comenzar algo desde cero, que no digo que sea lo mejor en todos los casos, pero en casos como este te evitas venir con código ya viciado que por X motivo no es lo que queres, te priva de plantear una arquitectura global que te parezca mejor y para colmo muchos de los IDEs mas usados de Python suelen ser software privativo (por ende, no hay chance de extender esos), y me pareció mejor intentar hacer algo completamente libre, y escrito en Python (muchos de los que existen están escritos en java :S) para que cualquier desarrollador Python pueda mirar y modificar simplemente el código, o pasar sus ideas a la lista para que se vaya construyendo algo que realmente nos beneficie a todos.

    Lo digo con la mejor onda, pero es siempre muy fácil criticar a los proyectos libres sin conocer por ahí el trasfondo que tienen y por que se decidió que era mejor empezar algo from scratch en lugar de seguir utilizando lo que ya existe, y la idea no es simplemente tratar de ser lo mismo que los demás, sino realmente ir identificando características que hagan que el desarrollo de programas en Python sea muy rápido y cómodo... pero tampoco se construye eso de la noche a la mañana.

    My two cents a la reflexión :P

    ResponderEliminar
  4. Si no hay ningún IDE con debugger como a vos te gusta, es por que no te sentaste a codearlo. Mis 5¢.

    ResponderEliminar
  5. Evidentemente fallé en mi redacción ya que fue más evidente la parte en la que ejemplifiqué mi punto, que mi punto en sí.

    Mi idea era como en los cuentos, que hubiera una moraleja, cimo en la fabula de la cigarra, lo que importa es el mensaje, y no si el personaje es una cigarra o un grillo.

    ResponderEliminar
  6. Definitivamente sos malo escribiendo fabulas, por que no agarraste una existente y la forkeaste?

    ResponderEliminar
  7. Jaja, estuviste bien.
    Siguiendote la joda, podría decir que la fabula no te gusta porque no te sentaste a escribirla =)

    ResponderEliminar
  8. Una consulta, este sos vos?

    Martin Cerdeira:
    "Casualmente, yo estoy armando una IDE para django y, por esas casualidades de la vida, la empecé a armar web y basada en Ace. Cuando vi el post de Franco, no podía creer la casualidad (igual, el proyecto de él está mucho más avanzado, años luz) Pero, aproveché para preguntarle algunas cosillas, jejeje! =)

    Saludosss"

    :P

    ResponderEliminar
  9. Jaja, seguramente no necesitamos más IDEs, lo que si necesitamos es una plataforma completa que incluya soporte real para desarrollo rápido:

    http://code.google.com/p/rad2py/

    Te dejo un link a mi tesis que justamente vengo investigando esto desde 2006:

    https://docs.google.com/document/d/1tQYzvI4_2Nq5Wv6srdCZPG5Da0ZzCLpabwsYGm0db5I/edit

    Hace como 5 años que estoy intentando, primero con drPython, despues Geany/Gedit, Idle/Pythonwin, etc.

    Creo que el problema es mas de fondo, pero bue...

    YMMV ;)

    ResponderEliminar
  10. Mariano, muy interesante tu tesis! Ya me estoy bajando el pdf para leerla más tranqui, con la Kindle =)

    Así que estudiaste en Morón? Yo soy de Padua y también estudié ahí, solo que otra carrera (Lic. en Publicidad) que luego abandoné.

    Saludos y gracias por comentar

    ResponderEliminar