Conal Elliot's Tangible Functional Programming work seems like an interesting way to shrink the divide between using and programming.
On Fri, Mar 12, 2010 at 7:59 PM, Julian Leviston <[email protected]> wrote: > Okay. > Mostly it relates to the simplicity and difficulty level. Using a computer > is generally seen as MUCH MUCH easier than programming one. Typing a letter > is easier than expressing a Fourier transform in pascal, for example. > Here, largely, programming a computer relates to expressing an algorithm (or > expressing the specifics of accomplishing a goal in a real way) in a > computer programming language which involves a specific and precise syntax. > Using computers doesn't involve this. When using a computer, one can do > anything one likes and *should* not generally cause the computer to complain > about misuse (such as syntax errors, or segfaults, etc.) > For example, using Automator on the Macintosh is not quite what I'd consider > programming, although it has all the elements of programming. Neither, is > moving 200 emails into a mail box in my email program, though that is an > operation that could also be considered programming. > Specifically, it involves how much work (in terms of procedural steps) and > therefore often how much effort it takes one before one gets to the point > where the computer knows what it is that we'd like it to do. "Speaking" a > language other than one's own is NEVER as easy as speaking one's own > language, hence the bar for achieving fluency is much higher than USING a > computer, which doesn't usually involve learning a new language to express > to the computer what one is trying to achieve. > Granted, using a computer involves User Interface "language" learning, and > this could be considered a kind of programming language, but moving an input > device and pressing a single button is something so simple and direct that > it falls on the side of using a computer. > So, programming is complicated computer use, essentially. > Now, my opinion is that neither programming nor using a computer is a > relatively simple task these days. It *must* be possible to unify a system > according to the truth of the underlying and most basic goals of a computer > system in a generic sense. > Our user interfaces are absolutely crap, to put it lightly. It could be that > things like the iPad will change this, but I still think that they're > fundamentally coming at things with an approach that is quite fundamentally > flawed. It still seems to be coming at things from an application-centric > point of view rather than a goal-oriented point of view. > The reason seems to be that a goal-oriented point of view is just WAY TOO > MUCH WORK for most people to get their heads around. > I don't think it has to be... but it seems like it might be a pink thought > amidst a blue field... ;-) Ie no-one is interested in this stuff - we're all > too busy reinventing the next car that has four wheels. > The computer system must be designed in such a way as to realise that it is > indeed a smaller part of a much larger system that is under constant change, > and therefore can adapt to this change (for instance, I have three > computers, and they should work in concert to achieve my goals with me... > sometimes I would like to lend my computers to other people temporarily to > allow them to use them, and this is part of my goals, etc. etc. as the > contexts shift, so does my computer usage, yet all the while the computers > are obeying their prime directive, which is to help ME to achieve my goals - > inclusive of all these other goals such as helping other people etc...). > Generally it's been "too big" for most people to take on this kind of > stuff... but there *has* to be a simple approach that can tackle this... > it's absolutely needed so we can get on with the bigger picture of achieving > our goals rather than using computers. (ie computer use is a means to an > end, not an end in itself). > Julian. > > I propose: "using" a computer means inputting some data for it to interpret. > One kind of data are "incomplete instructions" meant to be mixed with > further input at a later point: those are programs. As we move forward, > we'll keep finding better ways of structuring these "incomplete" > instructions in a way that makes them both "easy" to complete (the way > things are "easy" to use), and also are general in their purpose (what we > intuit now as "programming"). > To reiterate - I'm not saying there's no difference between "programming" > and "using", I'm saying the difference is a temporary artifact unique to our > present state of affairs. > > _______________________________________________ > fonc mailing list > [email protected] > http://vpri.org/mailman/listinfo/fonc > > > _______________________________________________ > fonc mailing list > [email protected] > http://vpri.org/mailman/listinfo/fonc > > -- --- james mccartney _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
