A Humanist Programming Language
For years I’ve had this idea of a programming language (really a programming system) designed not for building software, but for exploring ideas. If built, it would be a system where you can easily access data both locally and remotely, process the data in many different ways, and use built in tools to visualize the answers. The current way we code just isn’t very amenable to exploring and thinking (outside of an Emacs Lisp buffer).
I’ve gone down this road before with essays on typographic programming, tabs vs spaces, APL, and programming beyond text. I’ve decided many times that the world does not need another programming language, especially from me.
Something feels different this time.
Over the past few months I’ve been working on a full design doc for the Ideal desktop OS, continuing on the work I’ve written about previously. In the process I discovered that the most valuable part of the design may actually be my proposed system wide scripting system. It’s a concise language with SQL like additions that lets you work with the system wide database. You can query your data and visualize it in interesting ways, as well as automate tasks based on that database. Hmm. Sounds like the language for thinking I mentioned above.
After designing several examples I started to get really excited about the language, much more than the OS itself. So I’ve decided to pause the OS for now and try to actually build the language.
For the time being I’m calling it HL for a Humanist Language. In the art, history, and philosophy worlds Humanism means “a perspective that affirms some notion of human freedom and progress. It views humans as solely responsible for the promotion and development of individuals and emphasizes a concern for humans in relation to the world”. That sounds like a good basis for a programming language. Later I’ll find a better name than HL but this works for now.
Much of software is about automating away humans. That’s an important concept but not what I’m talking about here. It’s not about teaching the computer to do what humans can do. Instead HL is about improving the abilities of humans with assistance from the computer. The computer is not a robot to do our bidding, but rather a tool to help us think and answer questions.
I believe that humanity faces a lot of big fundamental problems over the next few decades. Any tool which can aid us in solving these problems is a tool we can and must build. So I’m going to try.
Over the next few weeks I will post about the development of HL, its unique features, and dive deeper into the philosophy behind it. Even if HL is an utter failure (the odds are certainly against me) there will be a lot to learn. Remembering that the only difference between alchemy and chemistry is publishing your work, I’m going to share my learnings as I build it.
You can check out the repo here. Ignore the code. The Markdown files are where the meat currently is.