Looking for a different way to program?

Programming is hard. But does it have to be soooo hard?

Can a programming paradigm work more like a spreadsheet?

Do programming tools have to be as complicated as a jet airliner cockpit? 

Announcing Hilltop.

(or How I’d Like (Love!) to Program)

With Hilltop, the various elements of an application are like spreadsheet cells, which the programmer can define in any order, and which can have both values and instructions that determine those values. And as with spreadsheet cells, where a cell’s value automatically changes when a related cell value does, Hilltop lets the programmer defines “reactive” relationships between application elements.

Here’s how it works:

  1. The Hilltop programming language emphasizes code organization. It has a markdown vibe, no keywords, and just a handful of statements.
  2. Hilltop’s application editor has almost no interface features. Programming is done by tapping the screen, which brings up a context-sensitive menu that provides simple programming choices based on what the programmer taps. Keyboard input is only needed when naming an object or entering a literal value.
  3. The programmer starts by defining the objects that play a role within the application. All objects are defined based on predefined object types, like numbers, text, buttons, sounds, etc. All object types have predefined attributes, like value, height, etc. Some objects are predefined, like the computer’s display or internal clock.
  4. The programmer defines values for various object attributes in much the same way that values are defined for spreadsheet cells. Where the value of an attribute depends on the value of another attribute, the attribute’s value is, by default, automatically updated when the value of the referred-to attribute changes (i.e., they’re “reactive,” just like in a spreadsheet). Some attributes get their values automatically.
  5. Events manifest as changes to attribute values. All attributes have built-in event handlers called “watchers.” The programmer chooses which watchers to employ by populating them with instructions that are executed when the associated attribute value changes in any way.

An application is thus:

  • a collection of objects
  • defined by the programmer based on predefined object types with predefined attributes
  • where the programmer defines attribute values and
  • event handlers for attributes whose values the programmer wishes to monitor.

Click on the image below to see what the obligatory “Hello World!” application looks like with Hilltop:

Check out the key points behind Hilltop and additional docs to learn more about this programming approach.

Comments and suggestions are welcome.