Smarter Programming | |||||||||||||||||
(It's been a while since I've used programming interfaces, so bear with me if these ideas have already been implemented.) Programmers are certainly a hardy bunch, having to deal with hundreds or thousands of lines of text. I feel that there are plenty of ways to make working with code a lot simpler. While a program using these ideas can work with the code on a fundamental basis, the coder can interact with it much like someone uses an HTML editor, word processor, or diagram: - Tree interface: By imagining functions and other blocks as collapsible elements, the overall structure of a program may more easily be discerned. - Displacing comments: If we can give comments a different color, we can also treat them as bonafide annotations, with differing levels (such as permanent comments or temporary observations) with tools to conceal, reveal, or remove them as needed. - Metadata: Instead of clunky comment boxes adjoining functions, important details can be entered into a customizable form, which in turn can be standardized for education or style purposes. - Other Document Object Model considerations: Functions and variables can be linked to their first declaration, important (marked) instances, or other relative instances. - Diagram view: On-the-fly diagrams can be constructed, showing the relationships between variables, the functions that alter them, and the working of the program as a whole. I'm sure other inspirations can be found in how we interact with spreadsheets, databases, and other means.
nayhem, Sep 11 2006
What do you think of this idea or comment? | |||||||||||||||||
Users who liked this idea also liked: | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
Add your comment
This is a good idea. Sounds as if you have given this considerable thought. The question is how do you find the resources to implement it?
In my eye, this is just a more advanced coding enviroment. Rather good, IMO.
Kinda weird how programmers themselves don't seem to have examined ways to improve their coding.
I have always imagined VISUAL PROGRAMMING (not Visual Basic) you drag and drop concepts and variables and procedures into a "system" and the system represents its state of memory usage and speed with which it will work..
Regarding tree interface. See Graphical Programming Language This seems like it is related. The sequencing of logic is compartmentalized into graphical blocks and the user connects blocks together to obtain a function without having to write any code.
I would like to choose comment types that would allow me to automatically create a report to help explain in English the flow and intent of the functions and code created. How much better would C++ classes be if there were inherited documentation embedded in all code. The software engineer could annotate his concerns for being compatible with other code and document their assumptions as work progresses. In the end, a report can automatically be generated that spells out the assumptions, hooks, and flow of the code.
I've done programming and worked with programmers. I was in computer science as a major. Most of the things you suggest are already implmented by modern IDEs such as Visual Studio and Eclipse. You have tree views, syntax/comment highlighting and coloring, metadata, page folding, documentation generators, etc.
I have to take the HTML editor as an example here, as a great example of why we do not go after graphical programming interfaces.
Nobody who is a true professional web developer or designer uses Frontpage, Dreamweaver, or any other similar package. Art students and the like use Frontpage and Dreamweaver for conceptual webpages, where learning HTML, CSS, PHP, and SQL would get in the way of their overall vision. It doesn't allow the level of sophisication that you can get by manipulating raw text. Programmers work with text because it's much, much faster than development with visual tools. That's one of the reasons linux is popular with both engineers and progrgammers alike - it has a very robust, fast, and flexible text interface.
Visual tools (not visual analysis, there is a difference), in many ways, are a lot like swiss army knives. They don't do any one thing particularly well, but allow the layperson to do rudimentary tasks they would otherwise be unable to accomplish.
Take Microsoft Word and PageMaker. They allow relatively unskilled persons to create documents and publications: edit basic formatting, insert tables and grapics, etc. What is used for scientific journals and the like? LaTeX, a true typesetting language. A text language, edited by typesetting professionals who want fine grain control over what is going on and don't want to screw around with dialog boxes to find what they want.
Even though you have all these fancy tools, with great GUIs, people are still firing up a text editor and writing in old languages for advanced projects like newsletters, magazines, etc. Why? Because the old tool works better.
If you can come up with a graphical tool that gives you the absolute fine-grain control that text languages give while maintaining the same speed, kudos.
It just hasn't been done yet, and nothing in the pipeline looks like it will, either.
Try to use Visual Studio Enviroment.