Hacker News new | ask | show | jobs
by jeb 5827 days ago
The future of programming is when both my mum and my little brother can write small code that does some particular task for them. Neither of them will ever understand functional programming. That's basically the answer to what paradigm will win.
4 comments

The problem with this is that once you get beyond really, really trivial code for whichever landscape you happen to working with (this is defined by the design of the language - whatever it's designed to be able to do easily), things get hard and you end up doing something difficult anyway, we label this task 'programming'.

No silver bullet. Getting computers to run code correctly (for whatever version of 'correct' you subscribe to) is hard, there is simply no way round this.

It's almost like saying 'the future of engineering is when both my mum and my little brother can build cars. Neither of them will ever understand mechanics.'

When you think of it that way, the idea that programming is for everyone seems a little silly.

> Neither of them will ever understand functional programming.

What makes you think so? What fundamental complexity in the paradigm is out of their reach? Do you really think that the concepts of imperative and OO programming are simpler? Why?

Do you honestly believe that? The history of programming is littered with failed attempts to do that. For example, does "Microsoft Acess" ring any bells?

The future of programming is definitely not to turn users into programmers.

It's true that none of those attempts have created a language that everyone can use, but many of them have lowered the barriers. You might not use Access, but a lot of people do. And a lot of people who can't grok the complexity of C++ can put together simple GUI apps in Visual Basic to accomplish simple tasks.

I'm not suggesting that everyone will ever be able to implement quicksort or write a parser, but there is no fundamental reason that high-level programming will always be inaccessible to the masses.

Oh yes it is. Users should be programmers. All of them. Just so they can write those little scripts. It's a question of independence.

You probably wanted to say that the future is not to dumb down programming to the level of my "mom". I agree with that.

Maybe I have a weird family, but my mom does not want to write any scripts. She just wants the damn thing to work.

For her and many other people I know, it's a bit like driving a car. If you want to drive a car, you have to know certain basic rules and that's it. The guys who do maintenance and repairs are the ones who know what happens under the hood and you take your car to them whenever necessary.

I also know lots of people who know what happens under the hood and love to tinker with their cars. I'm not one of them myself. I do that with computers, but not with cars. I don't see why computers should be a special case where everyone has to know how to tinker with the "stuff under the hood".

First, what we want an what's good for us are two different sets of things. Especially when you don't have total information.

Second, programming does not always mean tinkering stuff "under the hood". Advanced spreadsheets are front-end and programming at the same time. Even that:

  $ cat * | grep "groceries" | sort
is a program (though a rather trivial one). "Real" programs will still be professional and hobbyist stuff. But scripting can be everyone's business.

Third, computers are fundamentally different from any other device: they are general purpose. They can process any information you care to feed them, in any way you care to program them to.

Finally, when our moms want to do something the computer can't presently do, but could, they have 3 alternatives: give up, acquire a program that does the job, or program it themselves. For many many jobs, acquire a program is the only viable solution. But for small, specialized tasks, the existence of a dedicated program is less likely. So if our moms want the damn thing to "just work", they have no choice but to program it.

Knowing how to use computers (and the internet) is becoming as important as knowing how to read. Because computers are general purpose machines, knowing how to program them is an important part of knowing how to use them. It's a big investment, but so is reading.

This never works out well. Maybe you have some ideas for what will let average people finally "get it?"
Teaching them in kindergarten. No kidding. We may stop at the basics, but every child of 12 should know how to make simple toy programs in a toy language, so they can feel that computers aren't magic.
I did Logo in 3rd grade, and I can say it was a good thing for me. You might be on to something there. I have always felt that the first thing any computer eduction should entail is drilling the following into peoples' heads: computers are machines that only do exactly what they are told to.
I'm three years into a CS degree, and have studied computers at every level from the logic gates to operating systems to high-level languages. I'm still not convinced that computers aren't magic.
Well, they are magic, in a sense: you scribble weird formulas on them, and that makes them do stuff. In every other way, it is not. Computer obey understandable rules. You don't need aracne knowledge to grasp the basics. It's not dangerous to know a little of the thing without dedicating your life to it.

Way less scary than actual magic.

I agree fully. I think what's magical is that even though I understand computers at all these different levels, I'll never be able to hold all the parts in my head at once, so at any given time I'm left believing that some part of the system involves magic.

In another sense, I think there's "magic" in the sense of "wonder". Even knowing how some piece of technology works, I find myself constantly in amazement and wonder that it does work.