[ubuntu-bo] [OFFTOPIC] Una pregunta, ¿Qué se necesita hacer para crear un IDE?

David Quiroga sqdavid en gmail.com
Lun Mayo 10 05:37:49 BST 2010


Siendo tu quien sugiere el ejercicio creo justo tu definir los aspectos como
lenguaje y plataforma :)
En verdad, todo depende de eso.
En C, la info de las lirberias las tendrás a partir de los headers y del
linker... otros lenguajes no se. Como tú dijiste, todo depende del lenguaje
y la plataforma.
sqlite es solo una opcion... otros motores integrados pueden ser buenos
igual... Tmbién se puede usar una estructura propia... pero no se si seria
buena desicion (mucho de reinventar la rueda) Sobre esta desicion, VS usa el
sql embebido, y creo que qt-creator usa sqlite... (claro, en memoria)
Pero tienes razón... la velocidad es muuuuuuuy importante. creo la escencia
del core.
Acabo de encontrar un documento interesante en IBM sobre desarrollo de IDEs
-- http://www.ibm.com/developerworks/edu/os-dw-os-ecl-commplgin1.html --
Necesitarás una cuenta en IBM (registrarse)

Bueno ahroa voy a dormir qu emi esposa va a matarme xD

Saludos :)

2010/5/10 Mario César Señoranis Ayala <mariocesar.c50 en gmail.com>

>  El 09/05/10 23:50, David Quiroga escribió:
>
> Nota: Estas son mis ideas sobre una IDE, No se si es asi como se hacen en
> el mundo real :)
>
>  Dividiria la IDE en dos componentes: Core e UI
> Para hacer el core es necesario tener teoria de parseo y lexicográfia de
> lenguajes. (teoria de compiladores y automatas finitos)
> Es necesario tener un modulo de parser. Este intrepretará el lenguaje
> (identificar simbolos, palabras reservadas, etc) y el contexto en el cual
> están (gramática).
> La UI es el frontend y donde reside el codigo... son parte de este
> componente el "outline" y tambien el resaltado "highlight"
> Esta es la visión mas simplista y básica de una IDE
>
>
> Excelente! el parser como comentas es fundamental interpretar el lenguaje y
> su "gramatica", acotando que es fundamental para el "autocompletado" tipica
> funcion de los IDES, la inspección a las librerías, añadir a eso la
> documentación y conexion con el componente  UI. Este aspecto en especial me
> fascina y me tiene pensando, cual es la forma más optima de leer toda las
> librerias, modulos, de un ambiente. De forma que esa información se muestre
> de forma instantanea
>
>
>  Otros elementos fundamentales son claro, debugger, compilador, y la
> herramienta de construccion "build"
>
>
> Añadiria Profiling, aunque es un pedido personal creo, no se si es común
> para todos. :-)
>
>
>  Imaginemos que usaremos cmake, gcc y gdb. El lenguaje soportado será ansi
> c...
> El core descompondrá el código (mientras se escribe o cuando lee de disco)
> en "tokens" que serán identificados como identificadores, constantes,
> simbolos, operaciones, palabras reservadas, etc... pudiendo asi asignar un
> tipo a cada token
> clase token
>    el token en si (cadena de caracteres)
>    el tipo del token (esta será usada por la UI para dibujar el resaltado)
>    ...
>  fin clase.
> La UI toma estos datos y los representa graficamente.
> Cada herramienta adicional debe tener un wrapper dentro del Ide (build,
> compile, debug) que da instrucciones a esta herramienta y recibe el
> resultado y lo exibe como sea conveniente
>
>  No es una tarea facil, pero seguramente divertida...
> para gran parte del proyecto se podria usar SCintilla que ya ofrece gran
> parte del control de texto, resaltado, etc listo para ser usado.
>
>
> Usando cosas más actuales :-) las librerias de GTKSourceView an tenido una
> actividad interesante http://projects.gnome.org/gtksourceview/
>
> Esto plantea una pregunta más, jugamos a la misma estrategia de otros IDES,
> hacer un IDE que funcione en varios Escritorios/Sistemas Operativos, o hacer
> uno especifico para una Plataforma, Linux por ejemplo. Sera interesante usar
> las caracteristicas particulares de la plataforma para optimizar este
> *hipotetico* IDE, como llamadas a la api del Kernel para optimizar la
> ordenación, parseo, usar inotify, polls, etc?
>
>
>  Del parser se encargan Flex y Bison (geniales! necesitarás la definicion
> del lenguaje y su gramática)
>
>
> No conoció Flex y Bison, estoy poniéndome al tanto de ellos, interesantes
> :-D
>
> Ademas veo que hay mucha variedad: http://en.wikipedia.org/wiki/Ragel
>
> http://en.wikipedia.org/wiki/List_of_parser_generators
>
>
>  El mismo parser se puede usar para el autocompletado y la ayuda
> contextual.. (usando una base de datos para guardar los simbolos y
> relacionarlos (sqlite?)
>
>
> sqlite seria lo suficiente rápido? Tengo buenas experiencias, pero imagina
> una consulta por cada tecla presionada, funcionara? talves guardarlo en
> memoria? es posible levantar sqlite en memoria RAM. Pero cuanto memoria
> tendrá que usarse? O.O
>
>
>  Me encantaría seguir discutiendo y aprendiendo sobre este tema... Tanto
> si quieres satisfacer tu curiosidad o hacer una IDE como ejercicio, sugiero
> propongas un lenguaje y un dev-chain para discutir y poder profundizar mas
> :)
> A mi tambien me parece fascinante este tema
> De hecho tengo deseos de hacer uno... bueno, cuando tenga tiempo :)
>
>  Saludos.
>
>
> Pienso y Pienso, que pasaría si se hace un IDE especializado para una
> plataforma (Linux) y quien sabe especializado para un Lenguaje.
>
>
>
> --
> Mario César Señoranis Ayala
> http://softwarelibre.org.bo/mariocesarhttp://twitter.com/mariocesar_bohttp://facebook.com/mariocesar
>
>
> --
> Canal oficial #ubuntu-bo @ irc.freenode.net
> SLOB: http://softwarelibre.org.bo/ubuntu
> Lista de correo Ubuntu-bo
> Ubuntu-bo en lists.ubuntu.com
> Modifica tu subscripción en:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-bo
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://lists.ubuntu.com/archives/ubuntu-bo/attachments/20100510/f7390010/attachment-0001.htm 


Más información sobre la lista de distribución Ubuntu-bo