An Overview of TUNES
These days it's easy to forget that computers were invented to automate repetitive chores, and for many of us they've had the opposite effect. TUNES began in the 1990s as a revolt against the "user friendly" graphical interfaces that took the world by storm and prematurely thrust computers into the mainstream. We saw the need to balance user-friendliness with programmer-friendliness... and that includes making programming accessible to all computer users, as it was in the early days of the PC revolution.
The name TUNES is ostensibly an acronym for Tunes is a Useful, Not Expedient, System. (For a time the N stood for Nevertheless, but after a decade it's clear there's nothing expedient about this project!) Now, you may ask, does TUNES have anything to do with music? Not directly, but there are quite a few musicians among us, and you can draw some interesting parallels between music and computers.
[More to come]
Features of our ideal system
- Metaprogramming
- Automatic programming - especially the boring, repetitive aspects of programming. Saves time for more interesting things and results in shorter programs that are easier to understand and maintain. It's something a lot of programmers do already, but it should be more convenient.
- Reflection
- Programs programming themselves. (Not necesarily AI; more like self-modifying code.)
- Orthogonal Persistent Storage
- A replacement for filesystems. It makes everything on disk look like objects in memory. "Orthogonal" means everything works the same way, and "Persistent" means everything stays in memory when the computer turns off (unless you specifically make it "transient.")
- Garbage Collection
- Finds and deletes unused objects in memory. Many programming languages provide GC, some better than others... We'd like to see it done well, by the OS.
- A Few Good Programming Languages
-
The explosion of new languages, libraries and toolkits has been a major obstacle in our path, even worse than GUIs. As the software industry matures, we want to see this situation rectified -- and we're prepared to help.
We foresee a system built around a good all-purpose language somewhat like LISP, with a few "standard" languages (e.g. Javascript, Python) written on top of it. Custom "sub-languages" will also play an important role.