Hacker News new | ask | show | jobs
by billyjobob 4589 days ago
Programming is easy, after all: all you need to understand is conditions and repetition.

If you believe that you have never tried to teach a class of non-programmers.

Instead, programming keeps getting harder on new computers all the time, especially ones made by Apple

Apple have made a lot of efforts to bring programming to the common user: Hypercard, Applescript, Automator. They are abandoned because no-one was interested in using them.

4 comments

I wish I had more than one upvote to give, you hit it on the head. Apple of all companies has tried repeatedly (and failed repeatedly) to bring programming to the masses. It doesn't seem to matter if you format the task so that it looks like making a slideshow, pressing a record button / writing English prose, or moving + connecting blocks. Programming still requires that the programmer be able to break an abstract task into concrete chunks, and even though there was a plausible argument that Hypercard/Applescript/Automator might have made the task easier or more discoverable, it didn't turn out to be the case. I learned to code in AppleScript Studio, so I know what I'm talking about here: moving to C/ObjC felt like a breath of fresh air, not a hurdle. Syntax, pointers, and memory management were much easier to learn than the nuances of the strange restricted subset of English that was AppleScript. Before you learn to break things down, no analogy (or even record button) is going to help you write code. After you learn how to break things down, an expressive language + good documentation is simply the best tool for the job.

Also, with XCode/Instruments downloadable for free, easier to use, and more powerful than ever, I think it's a bit silly to slam Apple for this one. There might be an argument for slamming Microsoft, but VS Express isn't that bad IMO. There is definitely an argument for slamming nix, but decentralized authority is inherently incompatible with the kind of reform that would make the nix desktop programming experience more palatable to newcomers and open source libraries are a boon for function discovery, so it's still a bit of a wash. Web development as a desktop platform has inarguably improved by leaps and bounds over the past few years. StackOverflow has dramatically smoothed the learning process for all of these.

I'm pretty sure the long term trend is exactly the opposite of what OP said: getting started with programming has never been easier, and the people who make programming environments have been working tirelessly and trying everything in their power (even moonshots) to make the process easier and more newcomer-friendly. None of the moonshots worked but the more traditional efforts have paid off in spades.

And no one is using them because simplification of any complex subject has limits. And when you pass those limits your tool, theory or conjuncture becomes either incomplete or obsolete. So the professionals avoid your tool spending their time on a worthy one (objective-c) and amateurs are too confused on how to use properly it anyway.
“If you believe that you have never tried to teach a class of non-programmers.”

No, you’re trying to teach them with the same kind of tool that I call ‘clumsy and unsophisticated’ in the article.

“Apple have made a lot of efforts to bring programming to the common user: Hypercard, Applescript, Automator. They are abandoned because no-one was interested in using them.”

In many ways HyperCard was still too difficult, but it was a great tool. Many people did use it to make simple programs, and some became programmers from it. I’m not arguing that everyone should learn to program to the level of being able to create and sell apps; HyperCard is a good example in that sense.

AppleScript is a failure because it’s a terribly difficult language even for most working programmers. Its designers completely failed in that respect.

Automator is not programming.

Yes, but you took Apple to task, singling them out as the worst offender, when this clearly isn't the case - Apple really have tried to make programming accessible to the masses. OK, so Automator failed, but at least they tried. When was the last time you installed a linux distribution that came with graphically-assisted scripting out of the box that was more polished than Automator? Oh, that's right, never.

Also, your whole premise is just wrong. There's been a ton of research showing that the hard thing about programming is not syntax, or tooling, but thinking in abstract terms (I'd link, but I don't have access to most academic publications these days :( ). You're not the first person to think "Hey, if only we could make this whole programming thing more accessible to everyone, everyone would do it!" And yet nobody has succeeded, or even gone close. The best we've managed is to make it easier for an interested amateur to learn to program normally. We've got good documentation available on the Web. Every PC can easily install a wide range of language development environments, for free. Large numbers of frameworks are available to allow you to avoid having to do the heavy lifting for areas where you don't have the time / brainpower to become a subject matter expert. These are all positive developments, but the fact is that 99% of the population still can't even explain in plain English (or Spanish, or Chinese or whatever it is they speak) to a developer what it is they want a system to do.

When was the last time you saw a spec written by a non-programmer trying to explain a business process? Did they even try to explain what happens in error cases? If they did you were a lucky sort, because I've seen dozens of these types of documents, and none contained information on how to handle error conditions. They'll tell you to pull an employee out of the database based on the name, without stopping to think that several employees might have the same name, so you need to have some unique identifier. They'll tell you that an action needs to be done on the first of the month, but they'll forget to tell you what to do when the first of the month is actually a public holiday. These are the problems that we, as programmers, are trained to deal with, and which most people just don't seem capable of doing. And "easy" tools aren't going to help them, because the problem isn't the tools, it's the abstract thinking.

> No, you’re trying to teach them with the same kind of tool that I call ‘clumsy and unsophisticated’ in the article.

Despite the vitriol you've received, I think I understand what you're trying to say here. I think you want a higher level programming language. And not merely a successor to the latest zeitgeist, but essentially what C was to punch tape. That is, binary might be fundamental to computation, but it isn't fundamental to the ergonomics of programming. So the question is, is it possible to somehow abstract programming to an higher level?

pg wrote that all other language have evolved towards lisp. I think the trend is a special case of a trend towards functional programming. So imho, whatever comes next (given there is a next) will have to (for lack of a better word, ) supersede lambda calculus.

You seem to be the only person in this thread who has grasped this idea; though instinctively to me it feels another formalism like LC is the wrong way to go.
I'm new to programming, so I don't have much street cred. But I've heard others call LC "the assembly language of math"[1]. And I think functionals are really neat. So imho, I suspect LC's more than a formalism. But it drives me up the wall that it doesn't have an elegant subtraction analog. This leads me to believe there must be something better.

The answer sure can't be the Apple thing you mentioned. I imagine it's a just a gui, a kludge. But if not LC, then what do you think?

[1] http://matt.might.net/articles/compiling-up-to-lambda-calcul...

> Automator is not programming.

Automator is not coding.

I have tried to explain how computers work to people who were determined not to understand it. Once I had ditched any mention of numbers or maths and described "the toilet paper game" where you get a marker pen and make marks on a roll of toilet paper, then I found they had no problems.

Personally I reckon that you can teach programming to anyone who can learn a card game.