News for hackers. Stuff that matters.
Re:Teaching Someone To Code Is Partly A Hardware Problem by gamegoblin on Monday August 19, 2013 @12:56AM (#6235688)
When I was young I did all of my programming on a TI calculator (BASIC, and z80 assembly with an on-calc assembler).

One of the biggest hurdles for me in moving to a language on a computer was setting up a compiler, IDE, etc is tough for a 12 year old who doesn't know the vocabulary. From my experience at university, it is tough for college students who don't know the vocabulary and haven't done anything like it before.

I eventually started coding in Python since it is easy to install and use IDLE to run code.

A lot of people have the aptitude to learn to program, but this would be much easier if you could just "Download C++" and download the compiler, a simple IDE with a compile+run button, and have the installer do all of the PATH wiring, etc. I have seen many people give up trying to get started just because this process can be so finicky.

Re:Teaching Someone To Code Is Partly A Hardware Problem by ANTSANTS on Monday August 19, 2013 @05:11AM (#6236273)
>When I was young I did all of my programming on a TI calculator (BASIC, and z80 assembly with an on-calc assembler).

Those existed?! I remember reading articles on Z80 assembly language at ticalc.org as a teenager and desperately wishing I had some kind of calculator-native text editor and assembler that I could use to program in math class -- at least, that's how I would phrase it now. I assumed that none existed, and setting up a cross-assembler was beyond either my capabilities or comprehension at the time (not to mention, at the time programming was most fun in school when I was supposed to be working, not at home on a PC with a million other distractions). I didn't get that assembly language programming experience until years later. Instead, in between games of GALAXIAN and FALLDOWN, I messed around with horribly slow, illegible TI-BASIC, a language so crude that even Pong is an exercise in futility to write in it.

I just searched the ticalc.org archives, and yep, here's at least one such assembler, loaded up with the familiar MirageOS:

http://www.ticalc.org/archives/files/fileinfo/403/40304.html

I'm not going to lie, I'm kinda sad right now, wondering what might have been, if only I had known the correct keywords to search for at the time...

Anyway, I totally agree with the premise of your post. There's almost always too much to configure for novices to get a handle on, and novices don't know what the hell they're supposed to be looking for in the first place. If setup involves one step too many, or the novice is expected to figure too much out on their own before they can start, they think "I'm stupid, why can't I do anything" or "these programs are stupid, I wanted to implement that thing I read about but I wasted X hours setting up this completely unrelated thing and copying magic commands," and you'll likely lose them for good.

Which is, incidentally, why I think anyone that prefaces their programming tutorials with "you should learn to use a real text editor like vim or emacs" deserves a swift kick in the ass.

Re:Teaching Someone To Code Is Partly A Hardware Problem by gamegoblin on Monday August 19, 2013 @01:12PM (#6238315)
As an aside:

I was (sorta still am) a pretty active member of the TI community over at http://cemetech.net/ (probably the biggest community since unitedti shut down). That on calc assembler you linked to was what I used, and it was made by my friend Brendan Fletcher (calc84maniac is his TI community handle) when he was 13 or 14. He went on to make various gameboy emulators for TI calcs. He's a year or two younger than I am, and I remember when he joined the community about a year after I did. He was slightly below my level at TIBASIC (neither of us did ASM yet) but very quickly soared past me in skill and made his on calc assembler (I started ASM with that). I just remember being blown away by how bright he was. Probably one of the more gifted programmers I've personally known. I think he's a sophomore in Uni now.

Not terribly related, but a TI anecdote nonetheless.

Re:Teaching Someone To Code Is Partly A Hardware Problem by cathustler on Monday August 19, 2013 @03:40AM (#6236071)
This is insanely spot-on. It's almost like up until the moment you start diving into programming you've lived your life without this whole lexicon that you've got to learn–well, not almost, actually. There's just the unknown. Oh, debugging is what you call "fixing a problem that the console yells about"? There's a difference between an instance and a static method? I don't have to wear pants while I do this? I'm sure we all can admit we learn new things, new concepts, every day too–once the box is open it's like it never shuts. At least if you've got the drive to learn, then you'll never have to worry about stopping.
Re:Teaching Someone To Code Is Partly A Hardware Problem by 616c on Monday August 19, 2013 @03:21AM (#6236031)
I was a ling-lang major, and I fondly remember us all having the usual Windows and Mac fare. The professor told us for our Intro to Programming Course (all in C++ mind, you terrible first choice) that we needed to SSH into a Solaris box and compile with GCC (or g++ rather). Failure to compile with that, regardless of compiling with MSVC, Borland, or anything else was a 0.

I am so glad he forced me/us. He spent a day explaining Makefiles and their power, mentioning some people make their living fixing those up and paying attention could potentially help you out. That summer, I finally started using Linux, for personal interest, and I was so glad that class allowed to compile my own device drivers (back when wifi cards were still a novel PITA) and understand the basics of what was happening.

Good times.

Re:Teaching Someone To Code Is Partly A Hardware Problem by DanielN on Monday August 19, 2013 @01:04AM (#6235710)
This. I often tutor beginners wanting to learn to code and environment setup is by far the biggest hurdle. Frankly, think about the last time you started learning a new language, it's usually the biggest hurdle for experienced programmers as well.

The next biggest hurdle for beginners is usually grasping basic design patterns or the request response pattern of client server interaction. This is usually difficult because a lot of the nomenclature isn't there yet. But that is nothing in comparison to the struggle it is to walk someone through basic environment setup for RoR even node.

Re:Teaching Someone To Code Is Partly A Hardware Problem by pjungwir on Monday August 19, 2013 @02:45AM (#6235960)
I think this is a great insight. Just think of how many professional Java programmers are befuddled by classpath issues. Or Ruby programmers who can't figure out rvm. When I was first starting to learn C, it took me a while to figure out compiling vs linking, Makefiles, and why I had to -lm. BASIC was so much simpler with just load and run.

A lot of people are looking for a good teaching language, but really I suspect almost all languages are fine, and syntax is less important than an environment where you can jump right in without a lot of fuss.

Re:Teaching Someone To Code Is Partly A Hardware Problem by tehwalrus on Monday August 19, 2013 @04:34AM (#6236186)
for C/C++ on Windows, I recommend DevC++[1] (it also runs on linux too, but apt-get install [ide of choice] would also work there.)

It's bundled with the Mingw compiler, and basically works as you mention out of the box. I was delighted when I found it, a few years ago when my main systems were windows.

[1] http://www.bloodshed.net/devcpp.html

Re:Teaching Someone To Code Is Partly A Hardware Problem by EliRivers on Monday August 19, 2013 @04:36PM (#6239635)
Re:Teaching Someone To Code Is Partly A Hardware Problem by tehwalrus on Tuesday August 20, 2013 @10:47AM (#6244005)
Thank you, as I mentioned I haven't used it for a few years, and it seems it was old and broken even then! Apologies.
Re:Teaching Someone To Code Is Partly A Hardware Problem by EliRivers on Tuesday August 20, 2013 @03:05PM (#6245855)
The Orwell fork n' continuation has a much better press.
Re:Teaching Someone To Code Is Partly A Hardware Problem by ANTSANTS on Monday August 19, 2013 @05:14AM (#6236284)
Code::Blocks is probably a better choice for that. DevC++ is very outdated: the bundled version of GCC is 3.4.2, released in 2006.
Re:Teaching Someone To Code Is Partly A Hardware Problem by gamegoblin on Monday August 19, 2013 @01:02PM (#6238258)
Code::Blocks is precisely what I get all newbies to download for exactly this reason. It's just download and run. It is as close to what I refer to as "just download C++". And it's a decent minimal IDE to boot.