A new wave of programming
This page is a collection of links of articles, demos, experiments and more all around the idea of new interfaces and editors to program in.
This list was compiled by Martijn Brekelmans, a Dutch computer engineering student who's getting more and more inspired by "what's out there". I've compiled this list to be as accurate and free of negative judgement as possible.
Index of TLA's (Three Letter Abbreviations)
- dsl - a domain specific language.
A domain-specific language is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language, which is broadly applicable across domains, and lacks specialized features for a particular domain.
- ast - an abstract syntax tree. The underlying representation of any programming language.
an abstract syntax tree, or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language.
Quotes from Wikipedia
Articles
Typography in code
An article by Microsoft's research department, showcasing an editor made specifically to greatly enhance the readability of programs by means of typography.
-- Author: Sean McDirmid, Microsoft Research
Domain specific languages
An article about the difference between traditional domain specific languages and notation. It argues that traditional domain specific languages aren't actual dsl's. Examples of real domain specific languages are math, music and chess notation.
emulating the English language—complete with nouns, verbs, and prepositions—is simply the language of the domain, not a truly domain-specific language. A truly domain-specific language is a new language designed for use in a particular domain, with a new vocabulary and grammar suited to the specific problem.
...
A key difference between using the language of the domain and a domain-specific language is that a true DSL—notation—is not only suited for expressing problems and solutions, but also for getting from one to the other.
-- Author: Eric Shull
Why programming languages use only one "view" and how to fix that
An article taking a different look at programming interfaces, discussing the usage of text as the primary interface for programming.
The more I think about 'program models,' the more our treatment of program source code seems bizarre. Why aren't the models of computer programs prior to their source code representations? Shouldn't program models be the basis for generating program views? Shouldn't we store models on disk and build views when using our programming tools? Shouldn't we pass models around the internet instead of views?
On a side note, for people interested in building multiple views on top of code, I made a JavaScript library that synchronizes objects over multiple webpages, an array in your source code can be visualized as an unsorted list on your phone! check it out here
-- Author: Weston Beecroft
Demos
Conspire
Conspire is an editor developed for an incredibly ambitious game by duangle game studios. Conspire is deceivingly simple and best defines the concept of "graphical macros". Similar in ideology and usability as Moonchild. Conspire, unlike most of the other editors shown here is based on a lisp
-- Author: Leonard Ritter, Duangle
Moonchild
Moonchild is an experimental editor which is able to replace parts of your source code with alternative graphical representations. A sliding number widget, rendering markdown in your source code, unit tests that run while you're writing functions, and more!
my fork of Moonchild, which contains a live editing environment in the live
branch. If you're interested in using this, you can contact me via [email protected]
you can check out Moonchild brings source code to life. It's a toolkit for experimenting with new kinds of programming interfaces. It's based on CodeMirror, a web-based text editor. Moonchild adds a framework which makes it easy to create plugins which modify and extend the source code presentation.
-- Author: Patrick Dubroy, cdglabs
Jetbrains MPS
Jetbrains' MPS is different compared from others, because it's the only one in this list that has a stable release backed by a company! It is by far the most stable editor included in this list.
MPS differs with most other editors in this list because it's not targeting the presentation layer, it's targeting the language itself. Languages defined using Jetbrains' MPS are not textual languages, they're editable structures. This has some advantages, such as not having to deal with a parser at all and of course the embedding of non-textual structures in the source. Unfortunately, it also comes with a disadvantage; MPS Java is not the same as real Java, by rebuilding and then extending the language itself, backwards compatibility with the source language is thrown away.
That said, MPS has many original ideas in editing and presentation of program source files. It has by far the most documentation, and there are even plenty of videos on MPS available on their own website, and YouTube. Because these videos are plentiful, instead of linking to some of them, I'll invite you to visit their website to see for yourself.
With MPS you can design your own extensible DSLs and start using them right away to build end-user applications. Unique technology of projectional editing allows to overcome the limits of language parsers, and build much richer DSL editors, such as ones with tables and diagrams. Along with the editors, you can write comprehensive generators from your DSL to multiple target languages, be it another MPS DSL, or any of the "base" languages such as Java, C, XML, and other.
Be wary however,
-- Authors, developers at Jetbrains
Vogo
An experimental direct manipulation interface for Turtle Graphics.
Vogo adds a direct manipulation user interface to Turtle Graphics. This takes on an entirely new approach to programming. This is programming without even touching text.
-- Author: Matthias Graf
Recursive Drawing
Recursive Drawing is an exploration of user interface ideas towards the development of a spatially-oriented programming environment.
-- Author: Toby Schachman
Shadershop
Shadershop is an editor for directly manipulating mathematical functions to aid in the process of designing of shaders. Shadershop is open source, and you can try it right now inside your browser
-- Author: Toby Schachman
Light table
In a collection like this, Light Table cannot be forgotten. You are likely familiar with Light Table already.
Light table is one of the first non-experimental usable editors that tried to innovate in the area of programming editors. It comes with features like live-editing, showing your data flow through your program, inline evaluation and far more.
-- Authors: Chris Granger, based on amount of Github commits, Gabriel Horner and Jamie Brandon. This is a large open source project with a total of 56 contributors.
Videos
Ken Perlin's student lecture
The first half of this talk is mainly about what inspired Ken Perlin to get into computer graphics. The second half of this talk is about the tool used in this talk. It's a tool inspired by blackboards and childrens' shows. Drawings made in this program will turn to life. Examples of drawings embedded in this editor are movies, diagrams, 3d objects, vases, birds, graphs, butterflies that follow any light source, sound, shaders and much much much more. It is intended to go open source at some point in the future.
People, pages and organizations to watch
Terry Davis
No, I'm not kidding when including Terry Davis. Terry Davis has some very legitimate ideas on how to improve the current state of programming. For those of you who don't know him, he's a controversial software developer. We won't go deeper into any controversies surrounding him or his project, templeOS.
Terry Davis is a dedicated software developer who has spent the last 12 years building his own operating system from scratch. This operating system, templeOS, is inspired by the Commodore 64.
Because templeOS has been built from scratch, Terry is not restrained by any constraints imposed by any other operating system out there. It's built around exploration and experimentation.
Terry Davis has a youtube account on which he frequently posts videos about his operating system. Here is TempleOS's official site
To get started on his work, I recommend checking out this introductory article on TempleOS first.
A constructive look at TempleOS
Chris Granger
Author of Light Table. He's now working on Eve, his next project. He has many ideas, blog posts and videos on innovating inside the area of programming.
Future programming workshop
The future programming workshop is a top-notch workshop for students who want to learn how to cook on a budget. Workshop on the future of programming.
There are many interesting videos demos and talks available on their website.
I wish to go (or even speak) here some day!
Microsoft Research
Microsoft has a large research department, spending lots of time and brainpower on all kinds of areas. Here are a few articles to get you started.
Communication Design Labs
The CDG labs, or communication design labs is a collection of highly intelligent and motivated people working together on a large collection of very interesting projects.
The previously mentioned Moonchild and Shadershop projects come from the CDG labs.
At the moment, their website doesn't have any content on the front page, but you can check out their github repository to get a feel for what they're working on.
Bret victor
Bret Victor has spread many ideas through the internet, touching on the topics of education, interface design, graphical programming languages, game design, art and more.
Whenever you're looking at future programming ideas, you'll find Bret Victor as a cited source.
Bret's site is a huge repository of very well researched ideas and experiments. Out of any people on this site, I recommend watching Bret Victor most.
Bret has published several inspiring talks, as well as a few high-quality essays. I recommend reading and watching them all.
Demos:
- Inventing on principle - This talk in particular has been a huge inspiration to myself, as well as to many others. Light table for example, was based around the ideas of this talk. A very early version of light table
- Stop drawing dead fish
- Drawing dynamic visualizations
- Media for thinking the unthinkable
Talks:
Essays:
Older related projects
It's paradoxical and ever so ironic how these old projects are a great source of inspiration for editors and interfaces right now. These projects are better implementations of software used today, only this software is at least twice as old as I am.
The mother of all demos, 1968
Anyone reading this has probably already seen the mother of all demos. The mother of all demos is a presentation of Douglas Engelbart's vision turned to reality. It showcases multiple representations for a single type of data. The mother of all demos was way ahead of its time, and still ahead of today in some areas.
MIT's Genesys, 1970.
Sketchpad
Alan Kay's commentary on sketchpad
Sketchpad was developed by Ivan Sutherland.
Programming with on-line graphics
By Bert Sutherland, Ivan's brother.
Smalltalk
Smalltalk is the programming language brought to you by Xerox Parc. I would love to include more about Smalltalk in this compilation, unfortunately, I know barely anything about it.