Skip to content

Instantly share code, notes, and snippets.

@AndreasS2501
Last active January 30, 2016 02:23
Show Gist options
  • Save AndreasS2501/30ffda6d10b1c7ac53b1 to your computer and use it in GitHub Desktop.
Save AndreasS2501/30ffda6d10b1c7ac53b1 to your computer and use it in GitHub Desktop.
Solving programming

Hi Luis,

I try to answer your great article : https://medium.com/@luisobo/why-does-programming-suck-6b253ebfc607 You have used a budget of about 7000 words I try to keep below of that.

From your article I took three questions which can help us in answering the big question (How to solve programming)

  1. What is Programming
  2. What is a Computer
  3. What is Progress in Context of Programming

onwards 1.

I think you know the answer to this one, programming is thinking, at least that is what is was intended to be. To express human thought in interaction with a computer.

onwards 2.

So if programming is thinking we can say that the computer is a tool for thinking. There are some great quotes from Dijkstra on this, like: "The question of whether Machines Can Think... is about as relevant as the question of whether Submarines Can Swim."[1]

onwards 3.

It is interesting that you bring up dijkstra. Because I think you have read him just almost not enough to find your answer for solving programming. And I totally encourage you to read a bit more in the dijkstra diaries [2]. Forty years of manusscripts show not only interesting insights in his work. But especially later on reflections on impact of society. Some entries I highly recommend: 447, 1036, 316, 361, 1284, 619, 854.

In my opinion EWD identified three major influence on "programming":

  1. Computer industry
  2. Computer science
  3. Society

It is the interrelation and feedback loops over years of interaction between those, as you said in your essay, that created the current situation. My conclusion is that there need to be consensus in society on what programming should be. For that to come society must first understand what programming should be, could be.

On what does "solving programming" mean.

Lets be blunt about this: solving programming would mean getting rid of programming as it exists today. So lets find some terms and concepts to explain this a bit more in detail.

Alan Kay has done a lot of work in that area. He calls "solving programming" : The computer revolution. Which is why he said[3] One of his projects was the STEPS Project see[4]. That project created some interesting solutions like Nile [5] But sadly the potential reduce in complexity never found its way into real world systems. If you look for terms or Problems you can find some good inspirations here. (Terms like reflective user interface)

To percieve programming/computing more as a media. quote from wikipedia [19]:

The field of computing is awaiting new revolution to happen, according to Kay, in which educational communities, parents, and children will not see in it a set of tools invented by Douglas Engelbart, but a medium in Marshall McLuhan sense. He wrote that the destiny of personal computing is not going to be:

"a 'vehicle', as in Engelbart's metaphor opposed to the IBM 'railroads', but something much more profound: a (...) medium. With a 'vehicle' one could wait until high school and give 'drivers ed', but if it was a medium, it had to extend into the world of childhood."

Chris Granger tried also some things his most recent attempt can is presented here [6]. While he claims that the solution would be that "solving it" would mean "thinking" and of course its natural for all people to "think". I don't think a Javascript webApp will do. It is certainly as you said.

Innovation on the hardware Level is also needed. Some interesting experiments regarding that, can be found here [7]

Another very interesting approach is to reduce the amount of code in total. To reduce entropy, I heard this first from Joe Armstrong of Erlang [8][9].

But it becomes exiting when more people from different communities start to acknowledging the idea.

Paul Chiusano, which I would place near the haskell community started also an effort [10]. Currently that is still just an web app but it seems that people use webApps as the easiest way to communicate with people. More efforts on programming languages can be found here [11][12].

One source of complexity is files, distribution and networking of code. A nice approach to find a meta level for potentially immense code reuse is morte from Gabriel Gonzalez.[13]

He tries to use IPFS which differs from the "web" in interesting (potentially decreasing complexity in search and semantic metadata, two-way links like envisioned from ted nelson) ways. I'm really looking forward to progress in that project [14].

This also led me back to Joe Armstrong with this post [15].

What would the implications for programming languages be? Well they wouldn't have a std. lib [16] Programming languages have certain properties, strange equilibria between compiler versions, files. Standard libraries , libraries and frameworks. In transition to solve programming many of these issues have to be resolved or removed.

What if all code would live in the net. Just as today but the interaction between local machine and user and remote code would be different. What if there would be just a global singleton? [17]

I think the programming model which is will achieve this or at least start the transition is: blockchains. Blockchains like ethereum [18]

So lets see how society reacts to these attempts and reshapes them.

[1] https://en.wikiquote.org/wiki/Edsger_W._Dijkstra#1980s

[2] http://www.cs.utexas.edu/users/EWD/welcome.html

[3] https://www.youtube.com/watch?v=oKg1hTOQXoY

[4] http://www.vpri.org/html/writings.php

[5] https://gist.github.com/AndreasS2501/6866a3f2fed04c487569

[6] https://www.youtube.com/watch?v=VZQoAKJPbh8

[7] http://www.loper-os.org/?p=284

[8] http://erlang.2086793.n4.nabble.com/Why-do-we-need-modules-at-all-td3546413.html

[9] https://www.youtube.com/watch?v=lKXe3HUG2l4

[10] http://pchiusano.blogspot.de/2013/05/the-future-of-software-end-of-apps-and.html

[11] https://awelonblue.wordpress.com/ david barbour and his awelon efforts(), he has done a lot of technical research, as spend time communicating (see his ML)

[12] from luke palmer, you will love his hand drawings : https://lukepalmer.wordpress.com/2010/07/22/programming-for-a-culture-approaching-singularity/ see his github notes

[13] http://www.haskellforall.com/2014/09/morte-intermediate-language-for-super.html http://www.haskellforall.com/2015/05/the-internet-of-code.html pandoc for prog. languages

[14] ipfs/apps#6 and ipfs.io

[15] http://joearms.github.io/2015/03/12/The_web_of_names.html

[16] https://twitter.com/natpryce/status/609093048027504642

[17] https://www.youtube.com/watch?v=U_LK0t_qaPo

[18] www.ethereum.org

[19] https://en.wikipedia.org/wiki/Alan_Kay#Early_life_and_work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment