

Programming for all, part 1: An introduction to writing for computers - sk2code
http://arstechnica.com/science/2012/12/programming-for-all-part-1-an-introduction-to-writing-for-computers/

======
danso
I have to take issue with how the binary system is explained. Not because it
is wrong, but because it is comes off as way too intimidating for what it
should be.

Binary arithmetic is not useful for the beginner. But binary logic is
_extremely_ useful...and more importantly, binary logic is something that non-
programmers typically have a blind spot for.

Someone once asked me what digital concepts non-programmers should be familiar
with...at the top of that list for me is the concept of everything being
either 0 or 1.

For example, the answer to the question: _is 2 greater than 1?_ can be
represented as a 1, for "true"

So how do computers solve complex problems? By breaking a complex problem into
many, many, _many_ yes or no questions.

How do you tell if a pixel is reddish? Its R value is greater than a certain
threshold (and of course, this comparison is a composition of multiple binary
operations). How do you tell if in a given photo if a man's eyes are closed?
Well, given a set of pixels where the eyes are located, calculate whether most
of those pixels are reddish rather than white (or brown or whatever the
person's skin is). And how do you locate the eyes in a jpeg in the first
place? Well, that's _more_ binary decisions...which leads you to talking about
functions and methods and encapsulation of complex code (another feature of
programming that non-programmers should know).

Once a novice can see how everything, whether it's comparing two numbers,
deciding a web-scraping strategy, or designing an AI, can be reduced to yes-no
questions, then I feel that programming becomes much more interesting...after
all, they need a way to process those countless yes-no questions in a
reasonable amount of time.

~~~
mitchi
I have to agree with you. It's how programming was taught to me when I was
school. First they showed me the logic, then they showed how I could calculate
and print a simple bill for a restaurant. At that point I was sold and I keep
learning to this day :)

Teaching programming is a tough field. If you want to teach programming to
regular people, you have to go the extra mile to hide the sleeping difficulty
and the mathematics. They can learn that stuff after if they wish to.

You can also teach it "MIT Style" with 1 hour lectures and cascading
blackboards. It's good too, the content is great, but people pay small
fortunes to study at MIT so whatever the teaching method is, it will work
because are investing their life into it.

------
platz
At the end of this introduction, he gives, as further reading for the
beginner, Lambda the Ultimate.

~~~
platz
Oohh look how smart he is! The following blog post is useful to see why all
the back history the ars technica post goes into is probably more distracting
that useful. <http://therealkatie.net/blog/2012/oct/24/career-day/>

