Why Learning to Code Is So Hard – and Why It Gets Easier(codeconquest.com) |
Why Learning to Code Is So Hard – and Why It Gets Easier(codeconquest.com) |
Yes, except for Haskell. I did a fair amount of CL back in the day and I'm relatively comfortable with Clojure now...but Haskell is pain incarnate.
BSDM, pain, discipline, whips, and chains programming language of the century. That crown was stolen from Ada and covered in thorns and lambdas.
GHC: BWAHAHAHA! Infinite Types? YOU FOOL! THAT IS VERBOTEN!
On a more serious note, Haskell is fantastic until the moment you exceed its sweet spot. Once you leave that realm you have entered the world of pain, functional reactive programming, monad transformers, and true horror. The slope for "affordances" compares poorly with Lisp's knack for letting you spin a DSL or solution to a problem that reduces pain and improves expression. The laziness and space leaks are an unnecessary horror too. I'd rather something like a more powerful OCaml, given the choice.
Haskell is a great language, but I understand hesitancy on taking it into production.
Clojure and Scala are a joy to work with. Scala's problem is Java-culture hangover but the language itself is excellent (and may be what you're looking for in "a more powerful OCaml", although I'm not sure I'd describe it quite that way).
Scala is neat, but the time I couldn't get sbt to run because it kept running out of memory, after having had no trouble with it for months, I decided it was time to rm -rf my scala install.
I have a lot more background with Clojure (Lisps, really) anyway. I'd enjoy something with a more informative/helpful type system but Scala and Haskell are too broken, irritating, and unproductive for me.
For people like KirinDave who've crested that mountain with Haskell, more power to them.
I have to ship product ASAP and don't have time to wrangle with parser combinators just to read some XML though.
i am an old fogey. i wrote my first program on a piece of paper after watching my fiend use his zx spectrum. i didn't do exercises - i knew i could make this awesome spinning prism (dude! a spinning prism!) and so i just bugged the hell out of my friend until i found out what commands did what.
isn't it obvious that you should start by building something fun? what's so wrong with people that they think they need to do exercises first?
what is wrong with culture when programming is a "task" that requires "exercises" rather than something awesome you're going to make happen?
are these people that are being made to program (when they don't want to)? do they have no imagination? are they scared? why are they spending their lives doing exercises rather than things they want to do? don't they know they will die?
That works great when you have a friend to bug. And nowadays, you can Google for solutions, so this kind of "I'll learn it when I need it" strategy works reasonably well.
But what doesn't work is when you have no friend to bug, and you don't have enough knowledge even to know what Google keywords you should be using. That's the point at which you really want to spend time acquiring fundamental concepts without regard for how useful they'll be in the near term.
Let's say someone was trying to learn physics, and they didn't yet know algebra. Which strategy do you think would work better: making a dedicated effort to learn algebra first, or diving in to physics and only learning algebra as they needed it?
Also, he says you need to write songs with your code. I disagree, you need to write graphics with your code! Those give the best possible immediate reward.
I've been teaching at Stanford for the last 3 years for the intro classes, which are the most popular, most well liked classes at the school, so I've learned how to make coding really interesting for beginners.
We start off by teaching Karel the Dog, which lets you focus on problem solving by teaching a dog some tricks using code. Then, we quickly get to graphics, animation, and games... all in the browser.
We know learning to code can be hard, so we focus on providing help from real people along the way, so you know that while you're learning online, you're not alone.
The part I dislike about software is reading bad code, dealing with inadequate documentation, and learning junk complexity that has no general-purpose value. Learning "to code" itself was a lot of fun.