Programming languages

From apm
Jump to: navigation, search

In a future world with gem-gum technology where all the manipulation of matter in the large scale industry (like building of housings streets and means of transport) is done by software. The quality of programming languages is of paramount importance.

Programming languages must become so easy to learn and use that they are learned by accident.
Obviously there are many problems with high inherent complexity where great knowledge is needed to solve them. But current mainstream programming languages (state 2016) make problems with very little inherent complexity so hard that they become practically impossible for the majority of (by now computer using) humanity.

The gap between users and developers is not a fundamental law. It is there because of the weakness of our current programming systems. This is hard to believe for todays users since there are no mainstream systems yet that show otherwise. This is even harder to believe for todays programmers who where always walking just one step back to look at some other mainstream programming languages and came to the conclusion that misery is conserved by some hidden law. What we all fight is side effects. We want predictability but what we increasingly often get is some seemingly random behavior. Few programmers get the luxury to walk out of the forest of mainstream programming languages (metaphorically speaking) to check out the wide planes of purely functional languages (like e.g. Haskell). Those languages build upon some very different elegant and powerful stuff in their very cores. Those programmers who look carefully from there on out through all the weaknesses in this still very young world should see tremendous potential.

Bridging the gap between users and developers would make everyone a "deveuser". In lack of an existing world I'll continue to use this freshly invented neologism here. With better tools everyone gets much more power to bring their inner ideas to reality for others to see.

Someone named Bret Victor is trying to get that message out with impressive demonstrations:
See: http://worrydream.com/


Promising innovative new programming languages

There are several things future modern programming languages must have.

  • They must feature guaranteed isolation against side effects.
  • They must be representation agnostic. That means that the program code data can be displayed in multiple ways. E.g. what best fits the problem at hand. Or what best suits the "deveusers" taste.

unison

A representation agnostic language. It's focus is on tearing down historically grown barriers in computer systems by extending the principle of immutability beyond the core of the programming language. Very similar to the principle the Nix package mangerger uses The language tackles the problem of "code plumbing" (serialisation and deserialisation).

The language is function name agnostic that is it uses hashes of the actual implementations for function identification.

enso (formerly luna)

A representation agnostic language. The developers call it:

  • a category oriented programming language -- a pure programing language -- it features immutable objects
    (TODO: find out in what relation they stand to typeclasses)
  • a hybrid visual textual programming language
  • https://github.com/enso-org/enso

Links to old sites:
Associated are the tools "Nodelab" a general graphical editor for luna and "Flowbox FX" a specialized editor for media processing. While the core language is open sourced both of the editors are unfortunately not planned to be made open source.

Interesting programming language experiments

lamdu

A representation agnostic language. It uses named arguments making it argument order agnostic. It features row and column polymorphism.

eve

A novel relational language (near logic programming) on top of a functional core language (as it seems) (wiki-TODO: read up some details).
The language is going for a Wiki like interface (for the moment).
The language is a result of the culmination of many experiments involving a lot of bootstrapping.

subtext

Semantic tables. This language factors out branching, pattern matching operations and automates boolean refactoring


Especially interesting videos:

other

Related




External links


Programming language experiments / research prototypes (also see: Projectional editors):

Missing in above's list:

  • PANE - a live, functional programming environment built around data-visibility. (site) (video)

Bridging the gap between programming languages and graphics modeling (2D&3D):