tgetgood / falloleen

Higher level language for graphics and UIs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Falloleen

High level language for graphics programming.

Overview

Falloleen is the second iteration in my search for a way of programming visuals (including UIs) that fits into the data centric Clojure programming model.

Processing, Canvas, and most other things I’ve tried depend on what Brett Victor called the Painter’s algorithm: first you textually push all the menu buttons from your favourite paint gui, then you textually push around a pen, sometimes it leaves a trail on the page, sometimes not, that depends on if you textually moved it down to the paper or left it up in the air.

When I write it like that it kind of sounds like playing Zork. It isn’t nearly that fun.

This model of drawing works well in a gui when you’re 10 years old. I loved it too once upon a time. Unfortunately this makes high level programming impossible. And I’m talking high level programming circa 1980; something on par with C would be a huge step up.

The real problem is that the Painter’s Canvas is a global mutable object. In order to do anything you have to load state into this object and then execute instructions that use that state (implicitly). Let’s call this the Van Gogh bottleneck.

This isn’t an attempt to solve the performance issues with the Van Gogh bottleneck. I’ll eventually move this to opengl and try to address that but for now I’m compiling to HTML canvas 2D in the browser and Processing on the JVM.

The principle goal of this library is to lift graphics programming from the proceedural paradigm to functional declarative.

Yes it’s slow. Not as slow as you might think though.

Guide

Still to come.

License

Copyright © 2018 Thomas Getgood

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

About

Higher level language for graphics and UIs


Languages

Language:Clojure 99.6%Language:Shell 0.4%