IDE

Introduction

After reading a post on LL1 and seeing a webpage on the concept of Source Code In Database I became deeply interested in the idea of writing an Integrated Development Environment. While the ideas of SCID served as an inspiration, I have sense gone into amazing directions with this idea. The basic technology to be used is XML. The IDE will save source code parse trees in an XML intermediate format(and import and export code as necessary, while base-64 encoding any information that could be lost into the comments). Several features this will support: Display of expressions as equations, SVG/MathML/XHTML in comments. Transparent ability to switch between various "views" of the code... and edit the code in ANY of those views. Lisp like Macros for more common languages. XSLT transformations on the source tree, as well as code refactoring support enabled by the better source code representation(renaming variables is a snap). Innovative code visualization features like call graph diagramming. Tool-tips and code completion for everything, including code in your project. Code will be syntactically correct all the time due the ability of the editor to check syntax in real time. CWeb like intermingling of code and documentation and the ability to output views for multiple sources.

Free/Open Source IDE's

Any attempt to make new solutions to problems should be prefaced by looking at current solutions. This is my list of IDE's I've tried or in the process of trying.

GPL/Open Source

Free/Public Domain

Proprietary

Reading Material

An excellent ACM Queque article, The Big Bang Theory of IDEs, describes problems with IDE's that I feel that this project sets out to solve.

Here's the post from LL1(yes, I cut the personal email addresses from the post, I figure any lack of attribution is probably preferable to the amount of spam their address being on my page might generate. Besides I left enough headers that a search of the LL1 archives should produce it):

Date: Fri, 30 May 2003 00:26:34 -0400
Subject: Re: Questions for a language designer
Cc: ll1-discuss@ai.mit.edu
Sender: owner-ll1-discuss@ai.mit.edu
Precedence: bulk

>The user would be free to use the concrete representation of his
>choice to edit the program but it would be saved in its abstract
>representation. The program that would translate from abstract to
>concrete would be an highly configurable "unparser". Using a
>correctly choosen abstract representation would make programs more
>future proof because a future unparser will be able to identify patterns
>and unparse them distinctively.

Once upon a time it occurred to me that it would be merciful to allow a language's identifiers to be translated into various (natural) languages; I've always felt kind of sorry that so much of the world writes these bizarre, bilingual programs. An Indian friend told me that such a tool exists in India, a programming language whose keywords could be translated into a few dozen different Indian languages.

Have you looked at Source Code In Database (SCID)? It's a bit messianic in tone, but interesting.

http://mindprod.com/scid.html

You might also be interested in some of the things PLT has done with embedding non-text objects in Scheme source files. You can insert things like pictures and (I think) XML data inside a source file, and there's been recent discussion of a GUI builder where you can embed graphical representations of GUI elements in the source. I imagine you could ask Matthew Flatt for more info about that.

http://www.cs.utah.edu/~mflatt/tmp/guibuilder.jpg

One more reference that springs to mind is a paper by Simon Peyton-Jones et al about improving on Microsoft Excel as a functional programming language.

http://research.microsoft.com/Users/simonpj/papers/excel/index.htm

It seems like people often disparage syntax as insignificant, but maybe it's better framed as an HCI issue? In that sense it's orthogonal to semantics (well, duh), but not unimportant, especially since syntax is the part that human programmers interact most directly with.

Cheers,
Dave