The future of computing
dgsiegel.net
dgsiegel.net
I didn't bother reading through what you had to say simply because I'm a little tired and you deliberately made it more difficult for me.
I'm sure a Javascript programmer would come up with some better solution instead?...
local $/;
$_= <>;
s/<(.*?)>/$id++; $t{$id}=$1; "<$id>"/sge;
s/([.?!][^\w].*?)([a-zA-Z])/$1.uc($2)/sge;
s/<(.*?)>/"<$t{$1}>"/sge;
s/(<[pP]\b[^>]*>\s*)([a-z])/$1.uc($2)/sge;
print;
Edit: changed \. to [.?!] in line 4.But that's exactly what we are doing. What do you think iPhones and iPads are? Those startups that are making it easier to book holidays? The very thing they are doing is making technology available to everyone. We've been doing all of this the whole time with the very goal of making technology available to people by creating ready made interfaces and tools that others can use.
There seems to be the idea that it's possible to leapfrog all of this hard, technical stuff and let everyone do it. Obviously that's not going to happen because those little technical bits are the difficult parts that need actual intelligence to overcome. You can't sandpaper them away.
so, yes, they make technology available to everyone. but in my opinion the problem is something else: we still think in representations invented for the medium of paper. we still code in text files, we still read pdfs/ebooks page by page, and your mom still can't send you that thing over the internet. with all these beautiful devices we have, it kinda makes me sad to see what potential we are missing out.
you may have heard of this beautiful research project "sketchpad" by ivan sutherland (http://en.wikipedia.org/wiki/Sketchpad), which plays with direct manipulation of data. they even managed to plan a bridge with it. not that i am saying everyone should be able to build bridges, but you see where this is going.
i very much recommend to watch both talks by bret victor: the future of programming - http://worrydream.com/dbx/ media for thinking the unthinkable - http://worrydream.com/MediaForThinkingTheUnthinkable/
> There seems to be the idea that it's possible to leapfrog all of this hard, technical stuff and let everyone do it
no, of course not. we always build on the shoulder of giants. but i hope you agree that we can do better than what we are currently doing. ryan, thanks for your comment.
The problem however is that there is a translation problem between me and my computer. It doesn't understand what is in my head and I don't understand how to make it do what is in my head. So we have come up with lots of different ways to do that, with tradeoffs between rigor and usability.
The problem of translation of ideas really crosses all boundaries, machine/human, human/human, human/animal etc... so if you could figure out a way to do that translation (specifically human/machine) that has basically no learning curve the world would beat a path.
A pipe dream, yeah, but one I continue to tinker with :)
I agree with this. Software frameworks have improved but are still unnecessarily complex.
As we build out a solid body of knowledge in software engineering, we will end up with frameworks that are much easier to use than what we have today.
In my opinion, such frameworks would support the composition of software, hooking up behavior, as opposed to the "coding" of software (calling procedures).
Most likely this composition would take place in some kind of visual development environment though it could still be "coded".
In the end this can't lead to something much different than saying "Sort this list" -- isn't that simply calling a sorting procedure?
In my opinion, the procedure/sub-routine/method/function, and specifically these things with parameters, as an abstract concept is the reason why software engineering isn't maturing.
Procedures are difficult to use. You have to prepare to call them by obtaining all the information they require to be used (what you push into them via parameters), do something with the results and deal with any un-intended outcomes of using the procedure.
Procedures lead to specialization. In the world today, there are probably millions of procedures with unique signatures. Each time we create a new signature, we complicate the process by which our software framework(s) communicate. Specialization, in this case, is not good. It's makes using the frameworks more difficult.
Also, the procedural signature of any given behavior will be different based on the programmer who writes it and, even more so, the framework for which it is written. There is no way to easily assure, across the industry or even within a small group, that the signature of any given behavior will be the same.
I think the future of computing is the same as the past, hopefully without as many mind-numbingly deep abstractions. I'd settle for that.
Also, flow based programming is just Self without an image environment like some Smalltalk dialects. Or am I missing something?