| I'm not sure I fully understand your question. Of course text would still be highly involved in the process. But the unit of a program will not be lines in files stored on a file-system. The program will be a data structure and what the editor presents to you is just a editable projection of that structure. And that doesn't mean some clunky tree editor GUI with drag and drop either. A sufficiently capable editor could present itself to you almost like a text editor but under the hood it would be operating on rich data objects that form the program not on lines of text. This opens up a lot of opportunities, for example in project navigation. You could label an entire section of the program as something (example: "Create user") then the editor could give you nice fold/unfold features you could incrementally dig down and navigate the program that way. You could tag objects in the program with stuff (example: tag a set of functions with the business topic that they deal with). Because the editor accurately tracks meta-data related to program objects, for example it could be always aware of documentation related to a particular section or function in the program. So that editor could give you a shortcut to instantly switch to a "documentation view" or "test case view". I know some of this stuff is already sort-of possible with smart IDEs but they are still quite fragile and inaccurate and easily tricked as they rely on fragile tricks and heuristics to associate things with each other or they rely on conventions that pile up on top of each other and conflict with each other (file naming conventions to indicate something is a test case, etc...). Treating programs as data objects gives us a strong foundation upon which we can make these fancy features with ease and high accuracy so that you can let your guards down and trust the editor to always be correct. |
Thanks for the links, this was the first time I've heard of intentional programming. Neat idea!
[1] https://github.com/Datomic/codeq