Live data from Hacker News

Learning to program is getting harder

allendowney.blogspot.com

191–200 of 422 posts

Re: Learning to program is getting harder

#191
I've been programming for about forty years -- starting as a teenager on a KIM-1 with 1K of RAM. I was playing with digital electronics for years before that which is also a good foundation for understanding the basic logic of some programming operations like AND, OR, and NOT. What I feel is also often missing in the programming community today -- as well as computing education -- is people who have the experience of computers from the wires up.

Nand2Tetris is a course that provides some help in that direction -- but it is still not the same as having been there: http://nand2tetris.org/

Back then, programming was one of the most interesting things you could do with a computer. One of the biggest challenge for programmers starting out now is that, frankly, much of what you can do with computers is so darn interesting (e.g. Kerbal Space Program, Minecraft, or just browsing the Web). So, those distractions are often more interesting-seeming than the computer basics of logic circuits, machine language, and fumbling around in confusion (maybe for years in some areas) until things click.

I see that challenge with my own kid learning programming.

Still, there is Redstone in Minecraft -- and even a Forth computer mod for Minecraft. There are lots of programming game-like things like the Smalltalk-derived Scratch now. And great software libraries. And there are places like GitHub and GitLab for sharing code. And even board games like RoboRally.

And Arduinos and Raspberry Pis are very cheap. And you can so so much even on just a cheap Chromebook. I'm writing this on a cheap Acer Chrombook 15 running GalliumOS Linux when I now do most of my personal coding and writing -- both to save money and also to keep thinking about what is possible with the current low-end of personal computing.

JavaScript is still no Smalltalk -- which was a much easier language to learn and use when it is installed and supported, especially since it was designed for kids and went through many years of refinements to make it easier to learn, use, and debug. But JavaScript these days (especially ES6/ES7) is not that bad -- and it is almost everywhere and almost anybody can start programming in it in their web browser. Here is a browser-based playground I wrote recently for JavaScript using Mithril and Tachyons: http://rawgit.com/pdfernhout/Twirlip7/master/src/ui/twirlip7...

So programming has never been cheaper or more accessible. And the original article goes into that some, like with the suggestion of starting with a Cloud-based IDE (e.g. https://c9.io ) or simulators (e.g. http://www.visual6502.org/JSSim/ ).

Re: Learning to program is getting harder

#192

I disagree. Creating a program that meets todays' users expectations is what's harder. But learning programming by itself, is way easier. We have Python, Ruby, Javascript... We have the Web as a platform and as documentation. We have communities and cheap, fast computers. The hello world has never been easier to do. What's hard is to make a real time offline first SPA with a beautiful responsive design that uses the…

>We have Python, Ruby, Javascript... We have the Web as a platform Can you explain how any of those things makes learning programming easier?

They are easier to get started with for several reasons.

1. Automatic GC means new programmers don't have to understand memory management or concepts like pointers up front.

2. Dynamic typing does not demand type declarations or throw type errors so it lets new programmers get up and moving quickly without having to appreciate the purpose and benefits of a type system.

3. No compiling means faster builds so newbies become less frustrated with errors and debugging. Users will also avoid dealing with cryptic compiler errors.

4. The dependency management and module systems for these languages are easy to use and don't require an understanding of header files or object linking in order to get your program to build or run in other environments

5. Package managers with tons of free open source code that are easy to discover, install and use immediately.

Re: Learning to program is getting harder

#193
I would pay $99 for an Apple TV app that recreates the experience of programming a computer connected to a TV, in BASIC. Something like the Amstrad CPC series computers with lots of built-in commands for drawing graphics, making sounds, etc. I’m trying to get my 8-year-old interested in programming, but there’s just too much shit on the computer that gets in the way and too many unrelated parts (text editor, terminal, compiler/interpreter, etc.) for him to think about. I can’t use parental controls to stop him from switching to YouTube the moment I walk away, because just about every piece of software has a long list of websites it needs to connect to.

He’s used to playing games on the iPad and none of those would be simple enough to inspire him to think that maybe he could make games too.

Re: Learning to program is getting harder

#195

Earlier quoted context omitted.

I agree completely --- being one of the "older programmers" --- and think it could be phrased thus: a new generation of "coders" is being forced to learn how to write instructions for the machine, when they are barely computer-literate. Having taught some introductory CS courses a few years ago, the amount of struggling with basic things like file naming, directory hierarchies, and even simple hardware use was a cons…

There aren't really any clues as to how a computer works on an iphone. There isn't even a visible filesystem. It's no wonder students today have no idea how a computer works.

This! I'm very concerned that we are growing a population that is more and more monitored by their devices and has less and less understanding of how they work and how they or even if they are being monitored.

Re: Learning to program is getting harder

#196
post #152

Earlier quoted context omitted.

Funny... I didn't even know that book existed until I was a few years into learning how to program my C64. I honestly thought you were supposed to figure things out by randomly PEEKing and POKEing addresses to see what they did. I had complete tech illiterate parents and no mentors existed to point me in the right direction. I remember visiting some other kid who had a C64, and his dad had given him the Programmer's…

I thought the guide that came with the C64 mentioned the Programmer's Reference Manual. I remember asking my dad to get a copy and he told me that I had to finish the first book before we could get it. > I cracked that book open and my mind was blown! I really wish I had had the opportunity to read through one when I was younger.

It did. The last page of the User's Guide[0] that came packaged with every C64 says:

> Commodore hopes you've enjoyed the COMMODORE 64 USER'S GUIDE. Although this manual contains some programming information and tips, it is NOT intended to be a Programmer's Reference Manual. For those of you who are advanced programmers and computer hobbyists Commodore suggests that you consider purchasing the COMMODORE 64 PROGRAMMER'S REFERENCE GUIDE available through your local Commodore dealer.

Honestly, until I checked the PDF just now, I thought the User's Guide came with a card to order it through the mail.

[0] http://www.commodore.ca/manuals/c64_users_guide/c64-users_gu...

Re: Learning to program is getting harder

#197
Honestly, if I were teaching someone to program now, I’d just tell them to buy a raspberry pi. For $50 for the nice kit, plus a surplus monitor + keyboard + mouse, you get a fully working toy dev environment preinstalled. You also get piles of programming tutorials written for that exact environment.

Re: Learning to program is getting harder

#198

Anecdotally, what I've seen is that older programmers, in addition to being programmers, also have the skills of a computer helpdesk technician. They can debug Windows problems, hardware problems, know how to mess with the BIOS, and have no problem installing or configuring any piece of software. This helps immensely when setting up your IDE or debugging weird problems with compiling. Younger programmers seem to comm…

I've had the opposite experience, with older programmers balking at new libraries, techniques, and setting up any environment they're not used to. If it doesn't work right away they go back to what they know. I know one guy who absolutely refuses to learn c++ because it doesn't compile for him and he only "trusts" c. Another who writes only in good ol' python2.7 (scipy dropping support; subprocess bugs; cough cough). Younger people tend to be aware of and use newer tools. But we're all bias I suppose.

Re: Learning to program is getting harder

#199

Earlier quoted context omitted.

I agree with your observation, but I don't agree with your diagnosis of the cause. I think it's mostly down to the increasing abstraction and ease of using software. When I was a kid, I wouldn't have described "computing" as a hobby, but just getting certain games to install and run on my parent's cheap Gateway PC would require a lot of fiddling around. My younger siblings have no more or less interest in computing t…

Programming is not harder than it used to be. For example, I was programming Macs in the pre-Internet era which meant lots of thick books. If you got stuck there was nobody who was going to help out and you just had to puzzle it out vs the example in one of the few how-to books like the famous Mac Programming Primer. Also, there was little open source, so you couldn't read the library source to figure out how things…

Maybe programming isn't, but perhaps finishing something is? Because while the hands-on-the-keyboard, moment-to-moment writing of code is almost certainly easier than ever, actually making a thing out of that is nowhere near as simple as it used to be. Building a nontrivial thing in QBasic was really, really easy. Building a nontrivial web app--whether it's strict server-side PHP or strict client-side JavaScript or whatever--is really, really hard, requiring the consideration of a lot more stuff, and the failure cases are much bigger and much nastier.

Re: Learning to program is getting harder

#200

I love Ruby the language, but I absolutely hate Ruby the platform. I've never run across a more hostile landmine-ridden terrain for new developers. Every time I have to ramp up a new dev, I just resign myself to the fact that it's going to take anywhere from an hour to three or four to get everything installed. God forbid they've actually tried to use Ruby before on their machines. I've dipped on job prospects which…

Before the tire fire that is rvm became "standard", it was normal to just download the version you needed and build it from source. There's nothing forcing us to use crappy, obscure tools like rvm and rbenv. And I agree with you on all points.

It's a total shitshow. But since ruby manages everything with environment variables, you need some kind of tooling to manage multiple versions. Horrendous.

Ruby should just standardize on a way to point projects to rubies. Instead of a zillion environment variables, just a shebang. It's how everything else works.

Post reply on HN