Difference between revisions of "Programming languages"
(→External links: added link to Projectional editors and PANE experiment) |
|||
(13 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
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. | 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'''". | + | 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. | 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. | With better tools everyone gets much more power to bring their inner ideas to reality for others to see. | ||
Line 35: | Line 35: | ||
* http://unisonweb.org/ | * http://unisonweb.org/ | ||
− | == | + | == enso (formerly luna) == |
A representation agnostic language. | A representation agnostic language. | ||
Line 46: | Line 46: | ||
Associated are the tools "Nodelab" a general graphical editor for luna and "Flowbox FX" a specialized editor for media processing. | 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. | While the core language is open sourced both of the editors are unfortunately not planned to be made open source. | ||
− | * http://www.luna-lang.org/ | + | * https://enso.org/ (formerly http://www.luna-lang.org/) |
− | + | * http://flowbox.io/ - Video: [https://air.mozilla.org/flowbox-io-luna/ Demonstration of Flowbox FX] - Broken :( | |
− | * http://flowbox.io/ | + | * (http://nodelab.io/ - [https://web.archive.org/web/20170523145843/http://nodelab.io/ archive]) |
− | + | ||
= Interesting programming language experiments = | = Interesting programming language experiments = | ||
Line 71: | Line 70: | ||
Semantic tables. This language factors out branching, pattern matching operations and automates boolean refactoring | Semantic tables. This language factors out branching, pattern matching operations and automates boolean refactoring | ||
* http://www.subtext-lang.org/ | * http://www.subtext-lang.org/ | ||
− | + | ---- | |
+ | Especially interesting videos: | ||
+ | * 2016 "No ifs, ands, or buts" — https://vimeo.com/140738254 | ||
+ | * 2017 "Reifying Programming (LIVE’17 submission)" — https://vimeo.com/228372549 | ||
+ | * 2018 "Direct Programming" — https://vimeo.com/274771188 | ||
== other == | == other == | ||
Line 85: | Line 88: | ||
* [[Software]] | * [[Software]] | ||
---- | ---- | ||
− | * [[Structural editors]] | + | * '''[[Structural editors]]''' |
+ | * '''[[Projectional editors]]''' | ||
+ | * '''[[Typed holes]]''' | ||
+ | * [[Diffing]] | ||
+ | ---- | ||
+ | * [[Problems with classical graphical programming]] | ||
+ | * [[Problems with classical spreadsheets]] | ||
+ | ---- | ||
+ | * '''[[User interfaces for gem-gum on-chip nanofactories]]''' | ||
== External links == | == External links == | ||
Line 91: | Line 102: | ||
* [https://www.youtube.com/playlist?list=PLG7lwFsqKHb8kVuLDRP8SynHC85Q_ExLz Collected list of relevant videos] | * [https://www.youtube.com/playlist?list=PLG7lwFsqKHb8kVuLDRP8SynHC85Q_ExLz Collected list of relevant videos] | ||
---- | ---- | ||
− | Programming language experiments / research prototypes | + | '''Programming language experiments / research prototypes (also see: [[Projectional editors]]):''' |
− | (also see: [[Projectional editors]]): | + | * List of "Projectional programming" experiments (on reddit) https://www.reddit.com/r/nosyntax/wiki/projects |
− | * List of "Projectional programming" experiments (on reddit) | + | Missing in above's list: |
* PANE - a live, functional programming environment built around data-visibility. [http://joshuahhh.com/projects/pane/ (site)] [https://youtu.be/fIEcXAHy6bU (video)] | * PANE - a live, functional programming environment built around data-visibility. [http://joshuahhh.com/projects/pane/ (site)] [https://youtu.be/fIEcXAHy6bU (video)] | ||
---- | ---- | ||
− | Bridging the gap | + | '''Bridging the gap between programming languages and graphics modeling (2D&3D):''' |
* 2D: Sketch-n-Sketch [https://ravichugh.github.io/sketch-n-sketch/ web-page] & associated [https://www.youtube.com/user/Ravichugh/videos youtube-channel] | * 2D: Sketch-n-Sketch [https://ravichugh.github.io/sketch-n-sketch/ web-page] & associated [https://www.youtube.com/user/Ravichugh/videos youtube-channel] | ||
+ | * 2D: Apparatus http://aprt.us/ – a reimplementation of what Bret Victor presented in his Talk: "Drawing dynamic visualizations" [https://www.youtube.com/watch?v=ef2jpjTEB5U (youtube)] [https://vimeo.com/66085662 (vimeo)] | ||
* ... | * ... | ||
[[Category:Information]] | [[Category:Information]] | ||
+ | [[Category:Programming]] | ||
+ | [[Category:Software]] |
Latest revision as of 09:28, 5 May 2024
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/
Contents
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.
- https://enso.org/ (formerly http://www.luna-lang.org/)
- http://flowbox.io/ - Video: Demonstration of Flowbox FX - Broken :(
- (http://nodelab.io/ - archive)
Interesting programming language experiments
lamdu
A representation agnostic language. It uses named arguments making it argument order agnostic. It features row and column polymorphism.
- http://www.lamdu.org/
- Demo video: source 1 source 2
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:
- 2016 "No ifs, ands, or buts" — https://vimeo.com/140738254
- 2017 "Reifying Programming (LIVE’17 submission)" — https://vimeo.com/228372549
- 2018 "Direct Programming" — https://vimeo.com/274771188
other
- isomorf: https://isomorf.io/
Related
- General software issues
- Visually augmented purely functional programming
- Problems with classical graphical programming
- Annotated lambda diagrams – Annotated lambda diagram mockups – Lambda diagrams
- Software
External links
Programming language experiments / research prototypes (also see: Projectional editors):
- List of "Projectional programming" experiments (on reddit) https://www.reddit.com/r/nosyntax/wiki/projects
Missing in above's list:
Bridging the gap between programming languages and graphics modeling (2D&3D):
- 2D: Sketch-n-Sketch web-page & associated youtube-channel
- 2D: Apparatus http://aprt.us/ – a reimplementation of what Bret Victor presented in his Talk: "Drawing dynamic visualizations" (youtube) (vimeo)
- ...