Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Better Tools For Programming Literacy

Soulskill posted about 2 years ago | from the baby's-first-for-loop dept.

Programming 317

waderoush writes "Adam Wiggins, co-founder of Heroku, agrees with anthropologist Bonnie Nardi that programming isn't just for geeks. The problem, he says, is that today's tools for teaching programming are woefully inadequate. In a commentary, Wiggins argues that there are two major gaps preventing programming tools from being accessible to beginners: 1) they're too fussy, requiring extensive setup, and 2) they're focused on the technology rather than everyday tasks. A good tool for learning programming, Wiggins argues, would emulate an Excel or Google Docs spreadsheet – beginners would be able to fire it up instantly, and would be able to get useful things done right away. (He's dismissive, though, of visual programming tools that 'attempt to hide logic behind a point-and-click interface.') 'Broad programming literacy is crucial in a world increasingly made of computers,' Wiggins says. 'Despite common stereotypes, programming is not out of reach for the average person,' as long as the tools are easy to set up and specialized on the programmer's task."

Sorry! There are no comments related to the filter you selected.

STOIC Platform (-1)

Anonymous Coward | about 2 years ago | (#42530007)

http://sutoiku.com/

Re:STOIC Platform (2)

wonkey_monkey (2592601) | about 2 years ago | (#42530181)

Turn spreadsheets into mobile apps

Not exactly a practical environment for most programming needs. Beside which, you should never trust anyone who scales their website [stoic.com] images. Ew!

So what they're really asking for... (0)

Anonymous Coward | about 2 years ago | (#42530033)

...is a WYSIWYG editor for writing programs in Basic?

Re:So what they're really asking for... (1)

commlinx (1068272) | about 2 years ago | (#42530067)

Not sure really, understanding an article written by an anthropologist on programming seems harder than kernel development to me. But you're probably on the right track though. Other requirements from what I gather are a one-click install and a Microsoft Bob equivalent to ask what you want to achieve.

Re:So what they're really asking for... (4, Informative)

TapeCutter (624760) | about 2 years ago | (#42530217)

Like an old boss of mine used to say, "They want a fucking big red arrow that points to the answer"

Re:So what they're really asking for... (4, Funny)

telchine (719345) | about 2 years ago | (#42530503)

Other requirements from what I gather are a one-click install and a Microsoft Bob equivalent to ask what you want to achieve.

Maybe they could reintroduce Clippy... "I see you're writing a kernel!"

Re:So what they're really asking for... (4, Interesting)

slim (1652) | about 2 years ago | (#42530333)

I'm not sure he knows what he's asking for, but I think I know what might address his concerns, and it's basically more embedded languages in apps that people use.

Lots of people learned simple procedural programming with Word/Excel macros. Record a macro, look at the code generated, amend it. Now some people do it with VBA, but I'd say that VBA is more hidden than the old macro language was.

He says people respond "OK, that's cool but what could I use it for?" - and the answer is anything repetitive or mundane that you find yourself doing at a computer. If you find yourself repeatedly going through the same sequence of clicks, a coder thinks "I want to automate this loop". A non-coder just accepts the drudgery.

The Raspberry Pi version of Minecraft can be automated with Python. Anyone who's laboriously built something brick-by-brick, click-by-click in Minecraft out to be impressed by a few lines of Python doing the same job in the blink of an eye. We need more apps that work like that. We need to get to the point where people demand it.

Yes, it is out of reach (5, Informative)

Anonymous Coward | about 2 years ago | (#42530041)

People can't program the VCR clock. (For the young ones: Back in the old days we called the Tivo "VCR". Just like everything must have a camera today, back then everything had to had a clock, and it had to be set manually.) You can barely teach (most) people algorithms that aren't completely linear. If you think you can teach them to develop algorithms, you need to get back in the trenches and deal with normal people. Developing programs means to understand problems in depth and to correctly answer a lot of "what-if" questions about complex systems. Normal people actively try to avoid doing that kind of thinking.

Monkeys and typewriters (-1, Troll)

Kergan (780543) | about 2 years ago | (#42530045)

programming is not out of reach of the average person

Given enough time, a monkey banging at random on a keyboard will produce the complete works of Shakespeare. Does that mean that writing is not out of reach of the average monkey?

Monkey-Keyboard Problem is NP-hard (0)

Anonymous Coward | about 2 years ago | (#42530577)

WRONG. The monkey-keyboard problem is NP-hard (it is equivalent the halting problem)

Re:Monkeys and typewriters (2)

fizzer06 (1500649) | about 2 years ago | (#42530655)

Given enough time, a monkey banging at random on a keyboard will produce the complete works of Shakespeare.

What about our deadline?

I agree that programming is not for geeks (5, Insightful)

gweihir (88907) | about 2 years ago | (#42530053)

It is a far more demanding task that "geek" would qualify you. It requires talent, education and experience. Those that gripe about the tools do not get it or have never gotten beyond toy examples. Sure, a better tool helps. But when you create software (as opposed to slapping together some disaster waiting happen), the direct level of skill needed to use the tools is actually a minor concern. In fact, the language used is a minor concern, the problem is what matters. Insofar I even agree with the article. But refusing tools that are a bit complicated is the hallmark of somebody that does not get it.

Case in point: Pen and paper are exceedingly difficult to use for writing. Yet we spend years on every person to qualify them to use it. Yet compare the complexity of pen&paper on one side, and a computer on the other side. Anybody expecting the computer to be easier to use just has no clue at all.

All that "simple" to use tools for software creation do is cause even more really bad programs to be written, as suddenly everybody and their grandmother thinks they can do it. Like giving calligraphy pens to amateurs. Sure, they can produce some smears, but they cannot produce anything worthwhile.

Re:I agree that programming is not for geeks (5, Insightful)

Anonymous Coward | about 2 years ago | (#42530289)

Bullshit. Programming still is *piss-easy* compared to our actual mental abilities. Everyone of us does all the stuff you need for it in daily life anyway:

Everyone of us uses the concept of identifiers (think variables), when we say “he" instead of "Jim", or even "Jim" instead of shoving that person in front of your eyes.
Everyone of us uses the concept of sequences of commands, when making a to-do list.
Everyone of us uses has no problem with including tasks into that to-do list, that themselves are a set of steps one could write down somewhere else.
Everyone of us is able to say "Do this 10 times.", "Do this for all people in the room.", or "Until you have at least $1000, keep on saving.".
Everyone of us is able to make lists, use property lists (dating site profiles, etc), handle tree structures (company hierarchies, file systems), and even more complex ones.
Everyone of us uses grouping (think modules) all the time in daily life. It's part of how our brain works, to group things into classes.
Everyone of us can use and understand the concept of expressions, when we read and write recipes. (Which essentially are programs: dinner = [(simmerFor (10 min) (add [cream,whiteWine,(dried chickenBroth),nutmeg,(piecesOf broccoli),salt,pepper,garlic] (fried (chopped chickenBreast)))) + ((cookedIn saltWater (8 min)) tagiatelle), readyMadeGarlicyFriseeSalad ].)
You do the next one.

There is absolutely nobody with a normal working brain who can't program. With the right interface and presentation, your grandma can program medium-sized software packages, no problem.

And most importantly: There's nothing wrong with small shitty scripts grown from one-off one-liners.a

Re:I agree that programming is not for geeks (0)

Anonymous Coward | about 2 years ago | (#42530385)

My Grandma does cryptic crosswords - I cannot. She cannot, however, program medium-sized software packages. I don't know of any program that could do cryptic crosswords. Nor do I expect anything capable of doing so in the near future. And this argument about mental abilities makes more sense than yours.

Re:I agree that programming is not for geeks (4, Insightful)

slim (1652) | about 2 years ago | (#42530485)

You could learn to do cryptic crosswords. Most clues are modelled around a handful of patterns; general knowledge is a barrier, but you can allow yourself Wikipedia.

Your grandma could learn to program; it might not be worth it, depending on her age and ambitions.

All of these skills are learnt, learning takes time, and it's an opportunity cost. If I'd spent less time learning to code, I might have spent it learning to draw, or practising guitar, and I'd be better at those things. That's not about mental ability; it's about choice of specialisation.

Re:I agree that programming is not for geeks (4, Insightful)

gweihir (88907) | about 2 years ago | (#42530663)

As I said, there is a mechanical component, namely interfacing the tools. It is a minor part of the whole. You can learn to play the guitar all you like, you will never be a good jazz-guitarist or guitar composer unless you have quite a bit of talent. Sure, you can plunk the strings and may even be able to play sheet-music with some degree of accuracy. But that is not worth a lot.

The architecture and design of software is not something you can learn this way. Algorithmic is not. And the real-world problem analysis skills required to have your software actually solve a problem are not either.

Re:I agree that programming is not for geeks (4, Insightful)

slim (1652) | about 2 years ago | (#42530789)

But TFA isn't about everyone becoming Donald Knuth.

Millions of people derive great satisfaction from mediocre guitar skills (I know people who get a lot of pleasure from their guitars, who can hardly keep rhythm). There's a class of people who could get value from *very* basic programming skills.

Difficult problems are difficult to solve, and require talent, experience and insight.
Easy problems are easy to solve, and don't require as much talent, experience or insight.

Example: an artist using Photoshop decides he needs 20 layers in progression of shades. Creating each layer takes 8 mouse clicks, including a fiddly colour dialogue. Or, he could write a for() loop in some scripting language or other, and create the layers in a few seconds -- and add the tiny script to their arsenal for reuse.

Re:I agree that programming is not for geeks (3, Insightful)

Anonymous Coward | about 2 years ago | (#42530539)

But you must understand the concept of "identifiers". Before you are 9-10, the name of your mother is useually just "Mom"... but so is everyones mother is named "Mom"... So now it is "joeys mom"... which is not "my mom"... and neither is a correct identity.

Concept of a sequence of commands - not until you are told "No" long enough. The problem is not the concept of a sequence, but one of generating a sequence. And doing it properly is hard. It takes over twenty years for people to write a sequence of words correctly... even then they will do it wrong. As for a "to do" list - how many times are things left out. BTW, a "do do" list isn't ordered - it is a random list of things to do with no specific ordering implied.

But saying "Do this 10 times" is frequently an exaggeration... and therefore not really done. Especially when 5 is enough. Or it really needs to be done 20 times... or even forever. And "keep on saving" always has an exception you don't expect.

Nearly everyone handles lists.. If they can read. And comprehend what they read. Not everyone comprehends organization into trees. That is why you still fine people with thousands of files in one directory (which is also promoted by the worst operating system ever foisted off on the world).

The same problem applies to grouping. Modules are not general. And they are not understood by people that do not understand tree structures either. Programming modules are founded in mathematics... and most people do not understand mathematics either.

expressions... Right... Like, you know, really. As if... But people DON'T understand logic, for the most part. And how many times are recipes are "for disaster". It takes a decent cook to understand recipes in the first place. A recipe does not include directions on how to use utensils, or even the names of the utensils. And you expect the unknowing to be able to write a recipe? And your recipe is not understandable - what are [( for? and what is chopped chiekenBreast - 1 inch size, 1/2 inch, or is that 1/4... And your recipe would not be understood by a chef.. Did you write it in LISP?

As for programming - it takes discipline, logic, understanding limitations, understanding the language...

And there is a problem with crappy scripts grown from one-off liners - when someone else has to fix them. Or you forgot what it was for and have to fix it yourself.

Re:I agree that programming is not for geeks (4, Insightful)

gweihir (88907) | about 2 years ago | (#42530639)

You fail to see the problem. What you describe is the "primitives" of a simple programming language. Understanding them does not help you write software of any meaningful complexity. Your argument akin to saying somebody that can carry around a brick and put it somewhere is able to build a house that is comfortable and durable. Not so, rather obviously.

Re:I agree that programming is not for geeks (2)

txibi (1691198) | about 2 years ago | (#42530783)

Everyone of us is able to say "Do this 10 times.", "Do this for all people in the room.", or "Until you have at least $1000, keep on saving.".

Well you think that every one is able to understand that, but I know at least a person with a PhD in Law that is unable to understand the concept of "FOR" or a "WHILE", and we were 2 computer engineers and PhD in computer science trying to explain it...

Re:I agree that programming is not for geeks (4, Interesting)

JaredOfEuropa (526365) | about 2 years ago | (#42530363)

Don't confuse programming with software engineering. The latter does require a good deal of talent, education and experience. But programming? I agree with the author that many people can learn, given the opportunity and the right tools.

Case in point: my high school taught a (somewhat unusual) computer class; this was in the mid-80s in what you might call a good high school (the Dutch high school system is divided in levels, the highest being "pre-university education" which was the level of my high school). The class consisted of some basic computer science (what is a computer, CPU, I/O bus, etc) as well as hands on programming in BASIC. This was a mandatory class which meant that we had a mix of geeks and non-geeks sitting in, but pretty much everyone was able to grasp the basic concepts of computing, logic, and programming, to the point were students were able to translate simple problems into working programs. Does this produce useful programmers? No, but it helps getting more people interested in the field, and in my current line of work I can see a clear difference between people who have had such a basic education in computing, and those who haven't. For people in IT who aren't actual software engineers, it's still useful to know a little bit about computers and programming.

To achieve this, having the right tools is important. Complex tools may be necessary when writing complex software, and a software engineer refusing to master complex tools because they are complex is silly, but for a beginner, complexity distracts them from what they are actually learning: writing a program. That's why BASIC is still a good tool for teaching laymen about computers; it might not be a very elegant language with stuff like GOTO, but beginners can have a working program up and running in minutes, doing simple input and output. Contrast that with something like C, which requires you to set up and master a compiler first, which is no easy task for someone just starting to program.

Your example of writing is a good one. Like programming, this too is something worthwhile to teach to the masses, and many are able to gain a basic proficiency in it. But you woudln't give a calligraphy pen (or a complex programming tool) to an amateur, you give them a BIC pen (or something like BASIC) so they can master the basics of the art without having to learn advanced tools as well.

Re:I agree that programming is not for geeks (3, Insightful)

martin-boundary (547041) | about 2 years ago | (#42530439)

No. Writing is an excellent example here.

Think about ALL the people in the world. There are billions of people who've learned to write, but how many of those can _really_ write a letter if they have to? I'll accept even people who write with bad grammar and spelling mistakes. All I want is people who can write an actual letter that is sufficiently intelligible to serve a simple purpose.

Well? I expect less than half of those who have learned to write are actually able to do so. And if they can't even write a letter after having been taught the alphabet, neither can they write a program if they would be taught BASIC..

Re:I agree that programming is not for geeks (2)

JaredOfEuropa (526365) | about 2 years ago | (#42530631)

I'm thinking of the other half, the billions who have learned to write and are now able to write something useful. And how many of those billions got inspired to write something great? Likewise, I think it is worthwhile to expose more people to computer science and programming. It gets more people interested in the subject, and a sizable portion of students should be able to learn something useful from a beginners course, even if they never actually do any serious programming later. Programming teaches logic, expression of thought, and troubleshooting: all useful skills in many other fields. Just like I took biology in high school; I never did anything with it later in life (certainly not professionaly), but the knowledge still comes in handy every now and then. That's what a well rounded education is about. Vocational training is something else entirely.

With that said, I agree that not everyone is going to be able to learn. But it doesn't require any exceptional skills or traits either.

Re:I agree that programming is not for geeks (2, Insightful)

martin-boundary (547041) | about 2 years ago | (#42530775)

While I agree that it is worthwhile to _expose_ as many people as possible to programming, I think you are being overenthusiastic about the expected success rate.

Programming teaches logic, expression of thought, and troubleshooting: all useful skills in many other fields.

Yes, except... writing teaches logic and expression of thought too, in a much more freeform and forgiving way. It doesn't even need a computer, just a pen and paper. The fact is that as a civilisation, we aren't doing that well on the simpler problem of writing, why should we do better with the more complex task of programming?

With that said, I agree that not everyone is going to be able to learn. But it doesn't require any exceptional skills or traits either.

Statistically, I've got to disagree with that statement.

Re:I agree that programming is not for geeks (0, Troll)

narcc (412956) | about 2 years ago | (#42530643)

Skills take practice. Writing, being a skill, also takes practice. Writing computer programs is no different.

The parent is right, any idiot can learn to program just as any idiot can learn to read and write. The the fact that it takes practice to do both well does not mean that those skills are forever beyond the potential of the average nobody.

It seems like the only people who claim that writing computer programs takes a "special mind" or some other nonsense are insecure developers who have no other skills or interests. They have a lot of their identity and self-worth wrapped up in their tiny little skill-set. I suspect that many of them realize that computer programming is not beyond the reach of the unwashed masses, and that's a thought that absolutely terrifies them.

Re:I agree that programming is not for geeks (1)

gweihir (88907) | about 2 years ago | (#42530727)

Thank you, just my point. And if the letter suddenly needs to communicate a complex situation and how exactly to deal with it, and also includes reactions to uncertainties, then we are beginning to approach what software is. The arguments of all those here is alike to saying "Those that can write cannot only write any letter for any purpose, the can also program, as programs are written in text."

Re:I agree that programming is not for geeks (0)

Anonymous Coward | about 2 years ago | (#42530449)

If you just want simple input output programs, then you have your programming tool right in front of you: A web browser with Javascript. How much easier does it have to be for the everybody can do anything people to realize that no matter how easy you make the tools, most people still lack the analytical skills for anything but writing sequences?

Re:I agree that programming is not for geeks (1)

gweihir (88907) | about 2 years ago | (#42530743)

Indeed. Very good example. And (oh the horror!) JavaScript may even be the next Cobol and replacing Java, the way things are progressing.

Re:I agree that programming is not for geeks (2, Insightful)

gweihir (88907) | about 2 years ago | (#42530697)

I am not confusing them. A reasonable programmer needs at least some software engineering skills. Otherwise you get people that write unreadable code, use the wrong algorithms that break systems because they just do not understand what goes in and the characteristics are, etc. Sure, once you have a detailed flow-diagram, putting that into code is just a mechanical exercise. But who do you think fills in the details here? A software engineer? Unlikely, far too expensive and then they could fire the programmer and have a secretary do the final step.

Also case in point: If the programmers cannot handle the tools and you say everything that actually requires understanding of the machine, the problem, the solution architecture and design and some a bit harder to use tools, what competencies are left for a programmer? Is a programmer in your view just a hired moron doing the job of a per-processor?

As to BASIC: That just leads to people that think they can program, but cannot. Even worse.

Problem-solving... (0)

Anonymous Coward | about 2 years ago | (#42530077)

If you lack the problem solving ability needed to set up your devkit, maybe programming isn't for you.

Re:Problem-solving... (3, Insightful)

mwvdlee (775178) | about 2 years ago | (#42530253)

Considering that a basic devkit like Eclipse (sufficient to write a lot of Java code) can be set up by downloading, unzipping and double clicking on the file with the colorful picture, I can only concur.

Re:Problem-solving... (5, Insightful)

feedayeen (1322473) | about 2 years ago | (#42530493)

Considering that a basic devkit like Eclipse (sufficient to write a lot of Java code) can be set up by downloading, unzipping and double clicking on the file with the colorful picture, I can only concur.

You are missing a few steps, like installing the JDK and possibly installing the JRE, figuring out what the heck this workspace thing is. The Hello, World example you copied from the Internet also doesn't work because the package doesn't match. Congratulations, Hello, World compiles in Eclipse, but you want to see it as a standalone program. You click on your .java or .class file, 'Windows can't open this file'. After googling the problem, you find out that you need to run it from the command prompt by typing "java hello.class" so you become comfortable with cd.. until you get to your workspace and find the 'bin' folder. You try it, 'java can not be found or recognized'. Now you have to add the jdk to the path.

fristd 4sot (-1)

Anonymous Coward | about 2 years ago | (#42530083)

Pure Data (4, Informative)

pedestrian crossing (802349) | about 2 years ago | (#42530087)

I just started experimenting Pure Data [puredata.info] , and it is an example of an environment that does this quite well. Although it can be very complex when you dig down into it, it's very easy to get started with and create useful objects without the "fuss" that TFA talks about.

Re:Pure Data (1)

mwvdlee (775178) | about 2 years ago | (#42530263)

Although it can be very complex when you dig down into it.

This is the problem with trying to simplify ("abstract") anything; you make the simple things easier and the slightly-less-than-simple things nearly impossible.

Re:Pure Data (0)

Anonymous Coward | about 2 years ago | (#42530303)

Although it can be very complex when you dig down into it.

This is the problem with trying to simplify ("abstract") anything; you make the simple things easier and the slightly-less-than-simple things nearly impossible.

Which is exactly what you want to do for people who just want to do some simple things.

"average" person? (0)

LodCrappo (705968) | about 2 years ago | (#42530101)

"Despite common stereotypes, programming is not out of reach for the average person"

I think this just shows how little Wiggins knows about the average person.

Re:"average" person? (0)

Anonymous Coward | about 2 years ago | (#42530243)

He should spend more time looking at the crowd shots on TV wrestling. *There's* some average people.

This guy has it backwards (1)

Anonymous Coward | about 2 years ago | (#42530127)

He clearly doesn't knows even what he's proposing.

This gentleman is asking for more programmable tools. I imagine that he's thinking of programming all them in a single, domain specific language that covers all domains of tools a user may want to program. But this is an oxymoron. A language can be domain specific or general purpose, but not both.

Missed a third problem... (0)

Anonymous Coward | about 2 years ago | (#42530131)

#3: "Why am I doing this?"

Unless the "average person" has a hobby-like interest in computers, wanting to understand why they work or what one can or can't do with them, WTF do they care about programming them. They're merely interested in what the software and hardware does, not how it does it. What does it cost, does it scratch an itch, is it too annoying to use... These are the pertinent questions.

Not "wonder how the lookup works so fast..."

Well, there's Maya. (1)

Anonymous Coward | about 2 years ago | (#42530135)

The best fusion of programmable GUI and CLI shell ever invented. (That is /programmable (GU|CL)I shell/.)

If only the rest of 3D modeling wasn't so hard to learn. If it would do video/audio/text/3D processing, via files/network/etc, that would be enough.

I mean whatever you do in the GUI, it results in script code in the CLI, and vice versa. You can even select that script code, drag it to the shelf (icon bar), and voila, your new wizard is ready. Adding dialogs and such is just as easy. And it’s all either Python code or a variant of TCL (bash-like in style). Extremely easy to learn and get into. Without limiting you in any aspect, since there is even a C/C++ API if you want to go big.
Someone *really* thought, when making Maya.

How about a graphical shell like that. No compromises. Full power, still easy to use. Efficient, emergent, elegant. My company motto.

GUI (0)

Anonymous Coward | about 2 years ago | (#42530145)

beginners would be able to fire it up instantly, and would be able to get useful things done right away.

What is it with this idea nowadays (5, Insightful)

Shinmera (2514940) | about 2 years ago | (#42530161)

It seems to me that a great deal of people have this idea in their heads that any and everyone is able to do any and everything. This is bollocks.
Furthermore, blaming the inability to get interested in something or to cross a certain difficulty barrier on the tools is just laughable.

If one can't take the first step in programming and get acquainted to the tools, he won't be able to make the later steps either. It takes commitment and interest. Reducing the first barrier won't bring a lot better programmers, it will bring in a lot more bad programmers that get stuck half way through and don't really help anyone.

Re:What is it with this idea nowadays (3, Informative)

HungryHobo (1314109) | about 2 years ago | (#42530299)

bullshit. some don't admit it but there's a hurdle to start programming, knowing where to start.

it can be as simple as sitting down with someone for 30 minutes, showing them how to write a bash script, save it, make it executable and run it. 10 more minutes for the idea of looping and a few more giving them a list of good sites to read when they're trying to figure something out.

6 months later I get an email from the guy asking esoteric questions about specific frameworks and has become his offices translator for when the needed to ask for software.

You are everything that's shitty about the industry. I'm glad I don't have to work with anyone as toxic as you.

Re:What is it with this idea nowadays (2)

Shinmera (2514940) | about 2 years ago | (#42530345)

It doesn't really take knowing where to start. I didn't know either when I began, I just picked a book that I found interesting and started reading it, following the examples in the book, etc.

Sadly I've made the opposite experience. I've tried to get a couple of people into programming, but it just didn't work out, even giving them a very simple start wasn't helping their interest. Sure, there's definitely people around there that are just waiting to be shown something until they can flourish, but I'm quite convinced that they'd make the start themselves sooner or later anyway. The fact that the tools aren't easy enough has nothing to do with this.

And you did prove my point quite nicely. This guy did have the commitment and interest to get acquainted with the tools and even pick up everything else himself to get further into programming. That's awesome! But just the same, this won't happen to everyone else and having easier tools doesn't make more people suddenly fall in love with programming.

Re:What is it with this idea nowadays (1)

HungryHobo (1314109) | about 2 years ago | (#42530755)

of course giving people easier to use tools gets more people in.

How many top notch graphics designers and UI designers work in C or assembly?

in theory they could but they'd waste thousands of hours by using tools which are pointlessly hard to use for their task.

how many of them would have bothered even getting into the field if they had to spend a decade learning from the command line up?

take one look at stats programming tools like R.

the language is terrible and the tool unstable but it's insanely easy to get started and as such statisticians who are experts at stats, not programming can quickly and easily use the tool with no barrier to entry.

there's massive value in that. easy to use programming tools which just work when you run them without having to arse around.

it's very nice that you were able to man it out and push through but honestly people shouldn't have to have an abiding love of programming to use it as a tool.

if you wanted to paint your house you don't get professional painters insisting that anyone who really loved painting would have learned to make their own paints, brushes and pigments independently because that's how they learned and anyone who can't should just leave it to them.

You don't care about painting, you're just trying to get a job done and it's your problem if it isn't as well done as a professional painter would have done it.

Re:What is it with this idea nowadays (2)

jbolden (176878) | about 2 years ago | (#42530511)

It will create people with basic computer literacy. A good deal of education is about creating people with exposure to a topic but far short of professional knowledge.

Re:What is it with this idea nowadays (1)

Shinmera (2514940) | about 2 years ago | (#42530581)

Hmm, yeah, I admit that that's certainly true.

I'm not sure if creating special tools for that purpose is a good idea though, as it might just as well give a wrong idea about what people in the programming business do. But hey, I'm looking forward to be proven wrong.

Re:What is it with this idea nowadays (1)

jbolden (176878) | about 2 years ago | (#42530725)

Most people understand the difference between learning fire safety for a day and being a fireman. They understand that learning CPR doesn't make them emergency room doctor. A few basic tools isn't supposed to teach them what professional programmers do except in a vague sense.

Re:What is it with this idea nowadays (2)

Hentes (2461350) | about 2 years ago | (#42530617)

I don't think he means more professional programmers, but more people who understand programming. Just like it's great that every person nowadays learns to read. They don't all become linguists, but having that skill is an advantage regardless. I just don't think that people have a chance to understand programming without understanding the mindset of math first, so in my opinion if you want to teach people to code you should first teach them logical thinking.
But while all people could benefit from learning it, not all of them are committed enough to jump through all the barriers at the beginning. I know many who were, but even for them simple friendly advice where to start could have saved months of torture. And I know many who weren't interested until someone showed them Javascript or a Python interpreter. Having to learn how to use a complicated IDE and toolchain just to write "hello world!" is an overkill. In fact, I've met people who learned programming at university, and were totally lost without their IDE. Seems to me like knowing how to write code with just a text editor and compiler is a skill in itself, and too much reliance on the tools can just as well make you a bad programmer.

Re:What is it with this idea nowadays (1)

Sigg3.net (886486) | about 2 years ago | (#42530669)

Not only is it not realistic, it isn't even desirable.

Should IT professionals also learn to cut hair? Police men grow potatoes?

I wrote a few hundred lines in VisualCE (I didn't choose the language) an Excel-macro like language with a lot of clicking property boxes. It was painful. Why not choose a real language and hire a programmer?

You mean like excel VBA, cmd prompt? (0)

Anonymous Coward | about 2 years ago | (#42530177)

All education is woefully inadequate and only suited to those who'll help themselves. How badly are language and math skills taught? I'd bet the vast majority of adults are baffled by what the heck calculus actually is or what it is used for. Heck I bet most don't even see practical applications for trig.

Voice interface (1)

MichaelSmith (789609) | about 2 years ago | (#42530179)

Along the lines of Siri but self contained. It would understand stuff like controlling the TV and the home security system. My mother could really use something like that and it doesn't have to be dumb either. You should be able to give it complex instructions in English and yeah it would be helpful if it could read lips.

Pointless article (4, Insightful)

gigaherz (2653757) | about 2 years ago | (#42530193)

He's saying programming is not as simple as Excel because programming doesn't have an equivalent of the SUM() function that does almost all the work for you when you are new to it.

Yet, excel never tells you that you have to use the SUM function, or that A:A means the whole A column, or that $1$3 means it shouldn't change the row/column when spreading the formulas. But he wants the development environment to somhow not require knowledge of how a loop works, or what an array is?

The problem isn't that programming is harder than Excel, at least not if you use a full-featured IDE with a decent language, like Visual Studio with C# 4.0. You can learn to drag a few controls to a new window, double-click on a button, and write something like "MesageBox.Show(textBox1.Text);" in seconds. No knowledge of arrays or functions necessary.

Programming is NOT harder than excel, and there ARE tools that make it as easy as possible. Anything else requires "visual programming" which he states he doesn't want, either. But of course, excel doesn't "hide the logic" from you, right?

The fact is, you need some basic knowledge to do any job. Excel requires knowing the syntax and function names, so does general-purpose programming, just like you need to know the parts of a car, and their use, if you ever want to build one from scratch.

Re:Pointless article (0)

Anonymous Coward | about 2 years ago | (#42530741)

Visual programming doesn't hide logic anyway, it shows it differently (if you think it's a toy, look into DRAKON), nor does it need to be point and click. Just because none of the few experiments have added a keyboard interface doesn't mean it's somehow impossible, the graphical = mouse meme is an artefact of shitty UI design, no more no less.

It's not programming that's out of reach (1)

Anonymous Coward | about 2 years ago | (#42530221)

It's algorithmic thinking. Lots of people can't do it.

Re:It's not programming that's out of reach (1)

narcc (412956) | about 2 years ago | (#42530771)

Nonsense. People do it all the time. At the office, it's more than just the development staff, everyone with a job that requires more than answering a phone, from the executives to the maintenance staff, employ "algorithmic thinking" to identify and correct problems as diverse as developing policies and procedures to why the furnace kicks out.

The backyard mechanic, the hobbyist baker, and the new homeowner tackling their first DIY projects all employ the same set of thinking skills that the computer program uses.

See, lots of people CAN do it, and do it every day.

Today vs. Yesterday (1)

CFBMoo1 (157453) | about 2 years ago | (#42530229)

Today

Setting up Java..
1. Download the JDK, not JRE.
2. Run the JDK installer.
3. Setup the class path.
4. Install an IDE and make sure it see's the JDK.
5. Install ANT. (optional)
6. Learn how to setup ANT build.xml files. (optional)
and/or...
5 or 7. Figure out how to compile with the command line.
6 or 8. Start coding.

Back in the day...
1. Start up the computer.
2. Type Basica at the command prompt.
3. Start coding.

Which is less scarier for a new person to get started in?

Re:Today vs. Yesterday (1)

Anonymous Coward | about 2 years ago | (#42530307)

Today

Setting up Java..
1. Download the JDK, not JRE.
2. Run the JDK installer.
3. Setup the class path.
4. Install an IDE and make sure it see's the JDK.
5. Install ANT. (optional)
6. Learn how to setup ANT build.xml files. (optional)
and/or...
5 or 7. Figure out how to compile with the command line.
6 or 8. Start coding.

Back in the day...
1. Start up the computer.
2. Type Basica at the command prompt.
3. Start coding.

Which is less scarier for a new person to get started in?

Today (assuming a sane OS):
1. Start up Terminal
2. Type python
3. Start coding

Re:Today vs. Yesterday (1)

Anonymous Coward | about 2 years ago | (#42530337)

Java is not today's BASIC. Shell scripts (batch files if you're on Windows) are what you program at first, if you can't be arsed to fire up a text editor and write Javascript code to be run in the ubiquitously preinstalled web browser. Don't get me started on what you had to do to program anything but BASIC back in the day...

The one thing that was better was that the computer came with a programming manual, but nowadays there's much more information readily available on the web.

Turbo C / turbo Pascal (1)

Anonymous Coward | about 2 years ago | (#42530231)

Turbo C was perfect.
It ran off a single floppy disk.
It didn't need to be installed.
It had built-in help files.

Creating useful programs was possible.

Clearly, this worked well before Microsoft introduced MS-Windows and huge amounts of bloat to programming.

Re:Turbo C / turbo Pascal (0)

Anonymous Coward | about 2 years ago | (#42530517)

So, are you claiming that it is no longer possible to boot to Turbo C using a floppy disk? Or that Windows existing prevents others from making or using a bootable live programming environment? Or that compilers can no longer possibly be built to occupy under 1.4 MB or 800 MB or 5.7 GB of space? What does Microsoft or Windows have to do with this at all

Won't work (0)

Anonymous Coward | about 2 years ago | (#42530233)

In former Soviet they tried to make everybodys programmers. That didn't turn out very productive.

Re:Won't work (2)

hugetoon (766694) | about 2 years ago | (#42530259)

Worked for me :D

Out of reach (-1)

Anonymous Coward | about 2 years ago | (#42530281)

[quote]Despite common stereotypes, programming is not out of reach for the average person,' as long as the tools are easy to set up and specialized on the programmer's task.[/quote]

As long as even basic language skills - i.e. writing more or less (!) grammar - and basic logic are out of reach for the average person, don't even think about programming.

Re:Out of reach (0)

Anonymous Coward | about 2 years ago | (#42530287)

reply to self: of course I've strictly followed Skitt's law in my post...

First get rid of flashing zeros. (0)

Anonymous Coward | about 2 years ago | (#42530309)

As long as we have no interfaces enabling an average human to set the time on the DVD recorder, let alone let it record material at a given time, talking about making programming easier is pretty pointless.

"Programming" is teaching a system something new, cast into the system's concepts. Most people have significant problems thinking in terms of any concept. Conceptualizing does not come to them easily, and that is not a fault of the computer but of the person.

Almost invariably when I discovered laypersons using a programmable system (like Emacs or Scheme or whatever) to good and progressed advantage, these laypersons were geeks in other areas: ancient or foreign (typically non-Indogermanic) linguistics, avantgarde composers, stuff like that.

Now that were observations in the area of rather complex programming systems. You can dumb down programming to make is accessible to non-Ubergeeks. But you won't get by without thinking, planning and conceptualizing in an abstract manner.

simple tools (1)

FaytLeingod (964131) | about 2 years ago | (#42530317)

simple tool : A Young Lady's Illustrated Primer

But how about the problem (1)

waitamin (2811853) | about 2 years ago | (#42530325)

It is not really about implementing a solution. The first step is recognizing that you have a problem that can be made easier by using a computer program. Anyone with a basic knowledge of computers (how they work; what they are good at; what they are not so good at) could make that first step. The next step however is not trivial (for a non-trivial problem): formally defining your problem. Once you have a proper formal definition of a problem, "programming" the solution can be straight-forward, given the correct tools. Many people just don't have the patience to think slowly and carefully enough so that they are able to translate a fuzzy understanding of a problem (which anyone with common sense sort of has) into a formal definition. This doesn't really have anything to do with the tool, although a solid knowledge of a variety of tools can help with thinking within a certain framework. And yes, hiding complexity... good for trivial problems, but always a hindrance if the problem you are trying to solve does not translate perfectly into a ready-made recipe.

Programming/developing, or coding? (1)

Stolpskott (2422670) | about 2 years ago | (#42530335)

My personal definition of the terms are that programming/developing are akin to seeing a problem and writing an application to solve that problem. Coding is taking a problem description and solution specification developed by someone else, and translating that specification into a computer program.
The "coding" option only requires familiarity with the language and the coding tool being used, and seems to be closer to the process I think Adam and Bonnie are aiming for.
However, the "programming/developing" option requires much more mental effort on the part of the programmer, which is completely unrelated to the tool or language used. It involves an understanding of the problem space and the ability to identify areas where the assumptions you make about how things should work will not always hold true (the "what if..." scenarios that several other comments refer to.

As for the "fire it up instantly... get useful things done right away" approach, I am almost certain that a silent installer and a couple of select chapters of a "Dummies guide to " for just about any development tool will get you to the point where you can do something as "useful" as someone would be able to do when opening Excel for the first time - a basic arithmetic calculator.

What were the old guys first languages. (1)

jellomizer (103300) | about 2 years ago | (#42530347)

For any of you professionals out there who has to deal with legacy code, you find that back in the 80's and 90's there were a lot of non-programmers who became programmers and most of them cut their teeth on Database Centered Languages. Like Fox Pro, Delphi, Access...
For many of these non-developers the software they wrote got rather advanced, and often the business reason to replace these legacy systems isn't as much from a limitation of their coding (while looking at the code could make you cringe) but more to the limitation of the language architectural. Often relying on their home build file based Database that often has a problem scaling past a few dozen users, and having a problem couple times a year of a table messing up its indexing or just got deleted because the data had to be accessible via a network file share.

By the late 90's early 2000's affordable and good Data,bases came out. MySql, PostGreSQL, Microsoft SQL... However most languages never really give us an easy interface to these systems.
For example in Fox Pro you do something like this (It may be slightly off, I haven't done Fox Pro in a few years, but you should get the point)

var x as string
select lastname from person where id = "123" into x

No crazy connection strings, no casting you query as a string and then executing it. The Database Calls were integrated into the language.
Most new languages don't do this now. Thus we are going to a point where it is more difficult to learn how to program because people don't program to learn to program, they program to get something done. For most applications it is to have a spot to input data, store that data, and run calculations on that stored data and give an output. These early languages were great for non-programmers because they covered these criteria rather easily. Form Builders, Language integration into the Database, and decent reporting tools.

No as these people continue on, they will often get their feet wet with having to do more, oh, now we need to export the data into a different format, and automatically FTP it to an off site location, Other people need restricted access.... There come a point where these tools become more of a hindrance and you need some heaver duty programming done. However to start out you should have a language that allows for sloppy coding
When you teach someone to paint, Kids often start out with finger painting, often messy, and you get blobs of brown spots, as a picture, But later on you can teach them how to use the brush and clean it brush, then you can get to different styles....
But you don't give a 3 year old a nice canvas and oil paints and expect them to start making something good from day one.

Stored Procedures & bind variables (1)

Anonymous Coward | about 2 years ago | (#42530471)

ARE available in Access, Delphi, VB (C++ too) & have been since the late 1990's!

* See - I'm actually "one of those 'old guys'" who started on tools like that, professionally, & have been @ it since 1995 as a pro...

However - because I had GOOD co-workers? I was taught correctly & FAR better than I was while earning CSC degrees (MIS/CIS minor on a B.S. Business Admin, & later AAS CSC (to learn more & 'step up' my skills), respectively) on the job... by FAR!

It's MOST important to do what I noted below when an app has "inbound/outbound" remote connectivity (not so much for departmental level apps used internally in companies in 'intranets' though, but... still important, just not as much, for security purposes).

Personally?

I always LOVED it when I saw folks *trying* (& yes, succeeding) in mastering their SQL (most universal business language tool that there is since it 'snaps-in' or rather, is part of, MANY languages for database access!) and actually getting the job done.

They're often, from what I have found, BETTER & MORE PRODUCTIVE WORKERS that produce results... vs. those that don't (bullshitter marketing types).

You've got to give them credit for it @ least. They get the job done, albeit, NOT as safely/securely or fast as possible in terms of overall performance.

It's how ANYTHING starts, & then it's practice!

IF I had to offer anything on this article's premise? It would be that: PRACTICE, & try new things, to learn. Any coder's done it anyhow & will tell you the same.

IF you're a coder? You KNOW this anyhow - so, don't mean to "preach to the choir" or sound condescending, but it is, how it is. I try *not* to assume the person I am speaking to is 'expert' & go into details is all.

APK

P.S.=> Directly executed ExecSQL type calls are frowned upon, & were even then (for security purposes mostly, as well as performance - since it's making the local PC do the work, vs. a usually far, Far FAR faster & more powerful db server)!

E.G. -> I've been using them since, oh, iirc 1997-1999 typically on information systems programming jobs (sometimes tinier departmental apps, but many times mostly LARGE "mission-critical"/"enterprise class" sized ones that span MILLIONS of lines of code, with more stored procs work DB side tossed in also). Before that, when I was 1st starting & learning on smaller departmental apps for reporting mostly, professionally? I was doing what you said for my 1st year. Nobody taught me different in academia is why... had to learn it "on the job" (best school in the WORLD).

Point-Blank: It's better BY FAR, to send a bind/bound variable with the query string to a stored procedure for security purposes as well as performance too - double bonus. IF you don't do it that way? It's part of what opens the door for SQLInjection attacks & such!

The most common & effective defense vs. that? Bind variables for query strings & send them off to a properly secured DB engine, in a properly secured DB server.

(Compiled queries too on better databases like Oracle, or SQLServer, for performance)

For security - that keeps it out of the "front-end" and secures you on the webbound front as well!

Which was & probably still IS a big problem that gets companies broken into by hacker/cracker types because the webguys aren't doing that like they ought to - When I've done ASP.NET (hate it, but it's money & when you're told to do it a certain way, you do), even it has options for what I just said!

(Which is what "boggles my mind" that people still build queries off URL strings & such in the page itself, rather than form variables concatenated + sent via a bind variable to a stored procedure on a PROPERLY secured server & database engine)...

... apk

Hard thing... (0)

Anonymous Coward | about 2 years ago | (#42530349)

is hard. Is there a thing that will, like, make it easy? I don't really want to spend a lot of time on this, but how do I make a game that looks like Crysis for the iPhone? I want to make it work with Google maps as well. I'm pretty good with Blender already - should I bother learning Java?

Magic (0)

Anonymous Coward | about 2 years ago | (#42530397)

We've had this for decades: programming by filling out database tables with the Magic 4GL (www.magicsoftware.com).

Programming (4, Interesting)

ledow (319597) | about 2 years ago | (#42530417)

I have to agree. I've always said that 50% of modern programming is having the right tools, and the right tools configured correctly.

Introduce someone to C. Now explain that even though C is standardised, there's no "standard" way to compile a C program, to port a Makefile, to have a program compile the same everywhere without manual work ensuring so, or even to start debugging. And then show then a Visual C++ project file and tell them they have to manage it and make sure it works even if their primary platform isn't Visual C++.

It can get horrendous. Sure, most Linux installs come with gcc set up and you can compile a basic C file and get a basic executable (called a.out with NO OUTPUT to tell you that, for stupid historical reasons, which still blows my mind), but anything beyond that and you're learning the tools more than the language.

I personally have a deep-set hatred of Makefiles. I honestly can't stand them as a programmer and avoid them like the plague. I get the C preprocessor inside-out and can fancy macro tricks that amaze even me, but I can't be bothered with Makefiles and their separate, unrelated, horrendous syntax. But as a user, they are great when I just want to make a simple change and then recompile without fussing about where my compiler path is, etc. All their alternatives? I have the same problem, but at least plain Makefiles work the same everywhere if they are well-written.

Even IDE's only mask those same details and thus cause more problems. Standard debugging of a problem for a beginner is to google the error messages from the compiler / linker because it really is that atrocious to try to understand what they actually mean.

I have a large C project on the go at the moment. It's several dozen code and header files and the same again in associated resources, etc. It took me an hour to work out how to stop it uploading the resource files to the SVN repository and even now I can break it when I add a new resource file without meaning to. It's a nightmare that only compiles because the IDE generates a hidden makefile, runs it through MinGW's make tools and then runs MinGW's gcc to get it to compile / link. I gave up about the five-object-file mark of trying to compile it myself but in other projects with other people's code, I've literally deleted the Makefile and wrote a bash script to do the job instead, they were that horrendous to understand.

Debugging is also a major bugbear. I know how to load a file into gdb, set a breakpoint, execute it and inspect variable values. Manually. And that's it. I don't even know what half the commands on the menus are supposed to be used for or the correct syntax to make them work and it's not like I haven't tried. Debugging is best done through an IDE that does it for you (still using gdb) and even then the tool doesn't get everything right (I often get out-of-sync line numbers when single-stepping through a program in Eclipse).

I have taught beginners programming since I was a teenager, and it's only got harder. If I was to write a book on, say, C now, I would feel obliged to supply a disk and include a chapter on how to find the compiler setup program, how to install it, etc. so that I could be consistent throughout the book knowing they were using the same tools and the same versions so I could show them how to debug, etc. Just saying "compile this hello world" can be a book in itself, depending on their background, experience, and computer setup.

I frequent a C programming board and most of the problems I see are people using obsolete tools (e.g. Turbo C presumably because it's "free" and their instructors were trained on it), or no tools at all (i.e. no capability to debug, manually typing in compile-lines, etc.).

The next most common set of problems is not understanding how to use those tools or interpret their errors ("_main is undefined", etc.). The next set is not understanding how to write something that doesn't give a compile warning/error (usually because they've started to ignore all compile warnings and errors by that point so long as the program appears to run) and the problems that stem from that.

And the smallest category of things we deal with from beginners is actually "have code, have debugged the problem, can anyone see why this happens?", which is an actual programming problem.

Do it now. Go download a C compiler and IDE. Get it to compile a hello-world example. Now find out how to compile a multi-file project. Now find out how to link to an external supplied library and do so. Now make it run on another C compiler on another platform that's not from the same compiler / IDE family. It will take you longer to do, as a beginner, than it would take to learn whole chunks of the C language off-by-heart.

Modern programming tools get in the way. This is why some of us still have a love for BASIC and those older languages. They "just worked" and it was nothing to do with the language itself. The interpreters were self-contained, you could switch between edit and run quickly and seamlessly, errors highlighted the exact line of the error and gave you a clue as to the cause of the problem, step-by-step debugging was inherent in the interpreted nature of the code, you didn't have to "compile", "link", etc. unless you were distributing and - when you did - everything was automated and self-contained. Hell, some machines went straight into BASIC rather than an OS for YEARS (everything from the ZX Spectrum to IBM PC's).

Honestly, I'm scared to look into the Makefiles and internal settings that make up some of my projects now. I set-and-forget and copy them to new projects because they are the result of years of tinkering with the IDE and compiler to get the result I want.

I've even given up trying to link in object files for DLL's and just load using a template DLL loader code and the GetProcAddress / dlsym method, because I once spent an entire day trying to resolve a gcc linker command line that could link libraries in the correct order to shut up the linker (involving lots of --start-group and --end-group) and ended up with someone more atrocious than a single C file and a couple of cleverly-written macros.

The greatest barrier, to me, of teaching someone programming is the setup and teaching them to use the tools. The easiest way for me to start is to give them something pre-configured and tell them not to play with it. Once you get into the language itself, they don't have any more problems on C, BASIC or even assembler. But the tools available make a HUGE difference, and the interface to those tools is still atrocious.

That's what put me off DJGPP many years ago and it was only through sheer determination that I bothered to learn enough MinGW installation routines and gcc syntax to create a self-contained MinGW install that can compile things I threw at it on any computer I install it (in a way that I can also compile on Linux fairly simply).

In university, they tried to make me learn some Sun Java IDE that I forget the name of. It was an horrendous step-backwards, especially because it was written in Java and sucked performance-wise on my home machines. I was already programming in Java by then, and instead compiled everything on the command line and did the coursework that way. It was QUICKER and EASIER to do that, and that had nothing to do with Java or the machine itself. About once every year or so, I download the latest language and install the IDE. I don't think the last ten or so have survived past the hello-world example I knock up.

We need new interfaces. Pretty IDE's are fabulous, once you know how to use them, but even the best of them today are still horrendous for beginners. What made me *WANT* to learn programming was BASIC and, later, Visual Basic 3.0. They literally made programming so easy that you could pick it up in an hour. Hell, my teacher changed all his programming courses to Visual Basic when he saw my demo copy for just an hour and he realised that it could save him a lot of teaching time.

I have yet to see, in any other language, an IDE or compiler that makes it easier for me to code, compile, run and debug than those tools did back then.

Don't even get me started on things like packaging executables for distribution (MSI's and the like, bundling the right DLL versions, running prerequisite setup programs, etc.).

Re:Programming (1)

waitamin (2811853) | about 2 years ago | (#42530651)

Slow down a bit. C is a language that was designed to make system programming easier. As in programming the Unix operating system. You don't introduce to C anyone who is not deeply interested in how computers work on a level _below_ the operating system. It is also a bit unnecessary to use a compiled language, or care about installing a program (makefiles etc), unless you are writing tools that are then going to be used by others to do their work. On the other hand, Java's strengths are in server-side programming of big projects with many developers. Just as an example, take Python. Standard on Linux, *very* easy to setup on MacOS or Windows. Code runs everywhere. Can interact with the operating system quite nicely. Better that Basic in every sense. Waaay better. And ask yourself, if you are taught programming with Visual Basic, what will you know by the time you are done with the course?

Re:Programming (0)

Anonymous Coward | about 2 years ago | (#42530661)

Why would you use C to introduce someone to programming?

Much simpler to point them at http://eloquentjavascript.net/ for example, no installation required - everything runs in the browser, including the debugging part. Once you're familiar with the concepts of programming then sure, learn makefiles, compiled languages, and all that.

Re:Programming (0)

Anonymous Coward | about 2 years ago | (#42530683)

I really think that you should take a long hard look at CMake. I have found that it can solve many of the problems you describe with makefiles (since they can be very hard to understand) and can dramatically simplify the packaging process, even in a cross platform way.

Stop whining (2)

Mister Liberty (769145) | about 2 years ago | (#42530429)

I taught myself programming. Nerds will be.
The rest just enjoy yourselves with twitter.

It's not the tools (3, Insightful)

Anonymous Coward | about 2 years ago | (#42530437)

This has been tried so many times before. The simple fact is that most people can't program.

Simpler tools, or better tools, can ease the incidental burden of having to work with a program.

What they can't ease is the cognitive load of having to remember patterns, and abstract objects, and nested function calls. Most people can't deal with this.

Mr Wiggins has probably forgotten, as I have, the difficulties one faced and overcame when one first learned to program, and so he's forgiven for thinking that if we just made the environment simpler anyone could do it.

I'd argue that python at the shell is pretty simple, but most people can't or aren't motivated to do even that.

This thinking is like saying "a full piano is too difficult, so if we give people a little toy piano they'll be able to learn to play".

Please take a look (-1)

Anonymous Coward | about 2 years ago | (#42530455)

Please take a look at my side project - the Pooh programming language [github.com]

It is supposed to be a simple but modern language designed for teaching;

Some of the features:

  1. Does not force to introduce OO concepts from the start; non strict OO viewpoint.
  2. Makes flow visible by tracing of the program flow; the -x command line option instructs the interpreter to trace each statement and evaluation results + intermediate values.
  3. A focus on readability and clarity in syntax and semantics
    • no statement delimiters - no semicolons
    • all function parameters are passed as named parameters;
    • all variables declared in function are local;
  4. Variable must be defined before use, similar to strict mode in Perl; variable is defined if value is assigned to a name.
  5. The language has closures and can do objects by prototyping; has higher order functions like map/fold/filter .
  6. If a non local variable is referenced, then it must have the prefix outer . ; references to global variables from a function must have prefix global . ; object member references must have prefix this .
  7. the Pooh language has green threads / co-routines / generators like Lua; so there are nice for loops like in Python. The local variety of this idea is called Pooh routine.

Thank you for your attention.

BASIC (1)

flyingfsck (986395) | about 2 years ago | (#42530457)

Well, BASIC still exists. There is nothing preventing anyone from using it.

How about just getting to the subject matter... (1)

3seas (184403) | about 2 years ago | (#42530461)

... of which is what programing and language is all about?

http://abstractionphysics.net/pmwiki/index.php [abstractionphysics.net]

This is gtoing to happen, it only a question of when and that includes the if an when you get to do so in your lifetime.

It tooj 300 years for the Hindu-Arabic Decimal system to overcome the Roman Numeral system of mathematics...why? Politics o0f thoise who didn't want to lose their position inj society. But Abstraction Physics isn't about some subset of abstract, such as mathematics, but all abstraction, the tools of abstraction.

focused on the technology (1)

Errol backfiring (1280012) | about 2 years ago | (#42530469)

2) they're focused on the technology rather than everyday tasks.

Well, duh. Everyday tasks have already been programmed. The only way to teach people to solve new problems is to present the technology with some (over-simplified for clarity) examples.

I still remember one of my first book about Lisp. One of the very first examples was how to analytically differentiate an expression. Now that is a good example. It shows that, even with very basic Lisp, you can do things that are unheard of in other programming languages. Only such examples teach you the mindset of a language.

Better crutches (0)

Anonymous Coward | about 2 years ago | (#42530491)

Bah. I've met enough students that claimed they new binary yet stated it was impossible to represent fractions as a series of digits similar to "decimal representation." If they lack the insight on how to extend a logical method across the radix point, there's little hope for much ability to create new algorithms.

It's like giving an elephant a paintbrush. Perhaps it's art, but it's not fine.

Please take a look (0)

MoserMichael (2811895) | about 2 years ago | (#42530529)

Please take a look at my side project - the Pooh programming language [github.com]

It is supposed to be a simple but modern language designed for teaching . Here is a list of the main features:

  • Does not force to introduce OO concepts from the start; variables like strings/lists/hashes are not objects; this is the non strict OO viewpoint.
  • Makes flow visible by tracing of the program flow; the -x command line option instructs the interpreter to trace each statement and evaluation results + intermediate values.
  • A focus on readability and clarity in syntax and semantics
    • no statement delimiters - no semicolons
    • all function parameters are passed as named parameters;
    • all variables declared in function are local;
  • Variable must be defined before use, similar to strict mode in Perl; variable is defined if value is assigned to a name.
  • The language has closures and can do objects by prototyping; has higher order functions like map/fold/filter .
  • If a non local variable is referenced, then it must have the prefix outer . ; references to global variables from a function must have prefix global . ; object member references must have prefix this .
  • the Pooh language has green threads / co-routines / generators like Lua; so there are nice for loops like in Python. The local variety of this idea is called Pooh routine.

Thank you for your attention.

sed and awk (1)

antifoidulus (807088) | about 2 years ago | (#42530551)

I never understood the obsession with introducing people to programming using a programming language. You basically cannot do anything "out of the box" without first covering a wide amount of topics(including storage, ie variables, types etc). This is enough to turn a large # of people off, so why not start with tools that allow you to write "programs" without having to worry about types, variables etc. we already have such tools, they are called sed and awk(and others) most of what your average Joe is going to want to "program" is some simple text parsing/ manipulation programs anyway, so why does he need to know what an "array" is or what an interpreter/compiler is. You can do some pretty amazing things with a couple of bash commands, why not start with them? Your average Joe can accomplish a lot more in 5 minutes of learning sed than he could by studying PERL, or worse, Python(shudder)

Re:sed and awk (1)

waitamin (2811853) | about 2 years ago | (#42530821)

I totally agree with you on how many useful things one can achieve by just using sed and awk. But there are problems: first, those are very Unix/Linux-centric programs, and not at all a default on the majority of personal computers (sadly). Second, from TFA it is clear that this guy's understanding of programming doesn't go much further than writing a formula for Excel or *using* AutoCad.... I even have a feeling he wouldn't know how to write a regular expression, or would have the patience to read through the awk manual (and yes, you need to know what an array is to use it properly). And no, average Joe doesn't really want to accomplish anything that could be accomplished with sed. Average Joe will do his work using Excel and Word, browse Facebook until it's time to go home, and if he then uses a "computer" at home, the chances are it's an Xbox.

Educational programming languages (1)

jbolden (176878) | about 2 years ago | (#42530573)

Quite a few languages for education exist that do have easy setup and IDEs. http://en.wikipedia.org/wiki/List_of_educational_programming_languages [wikipedia.org]

Computer literacy is decreasing though because as a society we aren't focusing on it. Computer literacy courses in school should teach basic programming. Having at least coded in Logo would make a huge difference in people's ability to understand computers.

Automator and AppleScript (1)

BonzaiThePenguin (2528980) | about 2 years ago | (#42530635)

No setup and handles everyday tasks? Sounds like Automator and AppleScript.

Writing is taught exactly the same way as coding (1)

golrien (528571) | about 2 years ago | (#42530637)

This post contains a fairly fundamental contradiction. We do teach reading and writing for the sake of reading and writing, initially -- children don't hold off learning to use a pen until they have a specific sentence in mind. It's taught from the basic principles (this is an "A") and taken for granted that in later life it'll be useful. Programming could probably be taught in the same way and at the same sort of stage of development in the mid future. It cannot be learned on the hoof the first time someone tries to make a computer do something that hasn't been done before, though, which seems to be what the article is suggesting.

What nonsense is this? (0)

Anonymous Coward | about 2 years ago | (#42530681)

They act like there is no intelligence involved in programming, which is obviously untrue.

And let's face it, most people in the world are just not that intelligent.

Posting anonymously, since I don't want to be accused of blowing smoke up my own arse.

Visual Basic 6 (1)

mumblestheclown (569987) | about 2 years ago | (#42530685)

Still a wonderful language.

- readable syntax
- very approachable
- compiles to actual .exe, unlike .net
- superb UI

there's a reason why MANY MANY places are still using it despite it being over a decade old and despite the fact that snobs throughout geekspace look down on it.

it's just a pity there hasn't been a vb7 with commonsense upgrades like more modern controls, png support, and the like. even if all legacy ocx support were dropped, i guarantee you it would continue to be IMMENSELY popular.

Shell (0)

Anonymous Coward | about 2 years ago | (#42530717)

>' as long as the tools are easy to set up and specialized on the programmer's task

Launch the shell, Luke !

Mind reading would indeed be handy... (1)

Unknown1337 (2697703) | about 2 years ago | (#42530719)

Learn HTML. Zero setup, zero installs (on any current OS) and less than 10 basic lines accomplishes the "beginners would be able to fire it up instantly, and would be able to get useful things done right away" aspect. Then move on to JavaScript which supports functions, objects and all sort of more intricate programming concepts and again requiring zero setup. At least after learning these 2, you should have an idea whether you like programming or not and want to try something more involved. On a side note, it's never taken me more than an hour to setup a language targeted development environment (aside from a new web server install), how much more simple is this supposed to be? If it were possible to make software by answering a bunch of simple questions, writing out basic fundamentals and having the development environment fill in the gaps, most of us would be out of a job. ( Honestly I don't see how this is better than visual programming. ) But since mind reading software doesn't exist just yet, we will be safe for a while longer. Wanting to simplify the install of IDE/languages is desirable, but if you can't spend the time to understand how to install the software how are you /ever/ hoping to use it effectively?

HyperCard (1)

methano (519830) | about 2 years ago | (#42530753)

HyperCard, from Apple back in the day, was a pretty good environment for knocking out simple little programs that almost looked professional. And it was free. It really was what you're describing, though the language was pretty limited. VB stole a lot of ideas from Hypercard and made it a bit more complex and platform limited and you had to pay for it. JavaScript could step in if the DOM wasn't so confusing. It's probably not ever gonna happen. Programming environments that aren't hard to use always get pissed on by the /. crowd.

Better knifes won't make everyone surgeons. (0)

Anonymous Coward | about 2 years ago | (#42530767)

What most people lack is not memorization of terms or syntax but rather the ability to think logically.

Praying your program to work won't fix it.

Lucky rabbit's feet and star signs won't help you.

The computer won't give you a gold star for participating.

The computer won't agree with you to avoid hurting your feelings.

That's the real culture shock of computers.

literacy is good (1)

znrt (2424692) | about 2 years ago | (#42530787)

as for #1 (fuzzy setup), if you fire up any text editor and a browser you have already a fully functional programming environment.

as for #2 (task focused), this is interesting and a good point, and there's already examples of scripting enabled applications. users could benefit greatly from a common basic scripting syntax available across apps. yes, that would be the vision bill gates had with VBA or macro recording, but done right. VBA would actually have been a very good idea if they hadn't wanted to mess with "professional" programming too, the result was too complicated for the average user, a plain atrocity to any serious developer and ended up being a monster that filled the world with amateur crap. however, sticking to very elementary "standard" control structures and simple interfaces to operate on app specific elements to allow the user to program simple tasks would be neat, and if done right it should be easy to enable most apps to benefit from.

as for #2 (not tech focused), that's a fantasy, probably because of having too much "technolgy" gurus around who simply can't stop writing nonsense and tossing the last buzzwords. ffs it's a market in itself. most developers don't really care that much about tech, they simply use it.

of course, literacy is always good. the catch is there is no other way to become literate than learning: teach programming fundamentals in school. bingo!

Again? (0)

Anonymous Coward | about 2 years ago | (#42530803)

"Broad programming literacy is crucial" is just like the old demand that everyone needs to learn a foreign language. Once learned, it is then never needed or used and subsequently lost. I am a programmer and love the stuff. But if I had gone into wildlife management like I originally wanted to, I would have absolutely no need or care for programming. A word processor and possibly spread sheet would have sufficed.

Gifted students discouraged by bad tools (1)

Antique Geekmeister (740220) | about 2 years ago | (#42530813)

I'm forced to agree with an underlying point: poor tools discourage students from striving further. Modern carpenters don't have to cut their own boards from trees in order to get planks, nor do they have to mine their own ore and make their own nails to learn carpentry. But in modern technology, too often we have to do just that sort of assembly of a complex toolchain to get our tols working. The result is a lengthy and often burdensome apprenticeship learning mechanical skills. Masterpieces are much easier to create when you don't hve to engage in so much drudgery and spend your most inspired, intellectually active youth learning rote mechanical skills that can be replaced by good tools.

In fact, this is why Perl has done so well. Its tools are not perfect, but it is legible and tolerant and powerful enough to let you get some work done quickly and move on to the next project. And often, someone else has already built a similar version of the tool over at CPAN that you can find and work from.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?