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

David Quiroga sqdavid en gmail.com
Lun Mayo 10 04:50:31 BST 2010


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

Otros elementos fundamentales son claro, debugger, compilador, y la
herramienta de construccion "build"

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.
Del parser se encargan Flex y Bison (geniales! necesitarás la definicion del
lenguaje y su gramática)
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?)

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.

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

> Un abrazo a todos,
>
> Quiero hacer una pregunta. ¿Qué se necesita hacer para crear un IDE?.
> Entendiendo por IDE como un ambiente Integrado de Desarrollo de
> Software, que cumple tareas de como autocompletado de codigo, ayuda
> contextual, refactorización, crear soluciones y proyectos integrados,
> herramientas para crear distribuciones de binarios y fuentes, Debuggers,
> Profilers, Tareas, Sistema de Bugs, etc.
>
> ¿Como hacer un IDE similar a Eclipse, MonoDevelop, Visual Studio, etc?
>
> Pregunto por los aspectos, no me quejo por que no exista un buen IDE.
> Esta pregunta es puramente curiosidad tecnica.
>
> Existe una gran cantidad de Increibles IDES Libres, Abiertos y Cerrados,
> si alguno es mejor que otro, ahorita no importa xD Si no :) Que se
> necesita considerar para crear uno.
>
> Especialmente el autocompletado, la inspección del código, cuales son
> los fundamentos con los que se hace?
>
> Podemos compartir ideas sobre esta pregunta?
>
>
> ¿Qué se necesita hacer para crear un IDE?
>
> --
> Mario César Señoranis Ayala
> http://softwarelibre.org.bo/mariocesar
> http://twitter.com/mariocesar_bo
> http://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/7a29dc83/attachment.htm 


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