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
- Anjuta - License:GPL - Languages:C,C++ - Haven't tried it yet.
- Design Tree(Redwood) - License:GPL - Languages:? - Haven't tried it yet.
- Dev-C++ - License:GPL - Languages:C,C++ - Haven't tried it yet.
- Eclipse - License:CPL(Common Public License) - Languages:Java,? - Haven't tried it yet, primarily a Java IDE although C modes exist.
- GPS(GNAT Programming System) - License:GPL - Language:Any?(claims to be, I suspect it has an Ada bias though...) - Haven't tried it yet.
- Jabberwocky - License:GPL - Language:Lisp - Haven't tried it yet.
- J.O.O.D.A. - License:GPL - Language:Java - Haven't tried it yet.
- JUDO - License:GPL - Language:Java - Haven't tried it yet.
- Relo - License:GPL - Languages:C,C++ - Haven't tried it yet.
- SPE(Stani's Python Editor) - License:GPL - Language:Python - Haven't tried it yet.
- Titano - License:GPL - Language:Unspecified "lots" - Haven't tried it yet.
- V - License:GPL - Languages:C++,Java Haven't tried it yet.
- Visual MinGW - License:GPL - Haven't tried it yet.
Free/Public Domain
- jGRASP - License:Free - Language:Java - Haven't tried it.
- MinGW Developer Studio - License:Free - Languages:C,C++ - I've tried it, and while it could certainly use a lot of work, its got some good basic ideas, and works very well. Unfortunately, the guy is dead-set against releasing it open source, its a crying shame, I would have considered writing some patches for it.
- Quincy 2002 - License:Public Domain - Languages:C,C++ - Haven't tried it yet. Written by Al Stevens of Dr. Dobbs Journal as a project for his C programming column.
Proprietary
- ActiveDeveloper - License:Proprietary - Languages:C,Objective C - I won't be trying it soon(ever).
- AnyJ - License:Proprietary - Language:Java - I won't be trying it soon(ever).
- CodeGuide - License:Proprietary - Language:Java - I won't be trying it soon(ever).
- Simplicity for Java - License:Proprietary - Language:Java - I won't be trying it soon(ever).
- SNiFF+ - License:Proprietary - Language:C,C++,Java,Ada,Fortran,Cobol,Eiffel - I haven't tried it.
- KDE Studio - License:Proprietary - Language:C++ - Haven't tried it yet.
- Wing IDE - License:Proprietary - Language:Python - Its proprietary, how quaint. I won't be trying it soon(ever).
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 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. 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 |