Skip to content

Comment on "But It Doesn't Mean Anything" – A demonstration of the value of computer code

Comments

Paxman's point about code being 'meaningless' was to emphasise that the end goal of this initiative is stupid. It's not "learn to think analytically", it's not "learn to express your ideas precisely", it's not "learn to instruct a computer", it's not even "learn to use a computer", it's "learn to code".

Computers are clearly important, and Paxman would not deny it, but that doesn't make school IT classes any less pointless. They are terrible because they teach what buttons to click to make Microsoft Word 97 display text in bold, rather than the ability to think about problems; arguably they teach against thinking about problems (like "how do I make text bold?"), in favour of rote learning and hand-holding. Likewise, teaching kids which punctuation marks to press in Notepad to make a HTML element turn green is also a terrible idea, because it's focusing on the code. This is also the most common complaint I've heard about undergraduate computer science courses (teaching one particular language's syntax rather than how to solve problems).

I saw this summed up best on /. http://developers.slashdot.org/comments.pl?sid=4771525&cid=4...

"The problem here is that "code" is being used as a synonym for "computer magic"."

This captures the essence of this interview exactly. Paxman made a provocative remark, and did Dexter argue against it? No, she agreed with him and said some nonsense about code being for computers:

"It doesn't mean anything to you, or to me yet, but it's the set of instructions that you type into a computer to get an output."

In other words "computer magic". What Dexter doesn't realise, probably because she's not spent a significant amount of time programming, is that code is for people to understand and only incidentally for machines to execute. If programming was only about satisfying the computer, our keyboards would only have two big buttons: 0 and 1.

Now, this was essentially true in the early days of computing (punching cards) but we've progressed beyond this. The reason we use code is to allow people to discover, understand and build on ideas.

"The reason we use code is to allow people to discover, understand and build on ideas"

The reason we use WORDS is to do the same thing...

But somehow nobody will ever insist that:

"Likewise, teaching kids which letters to press in Notepad to make a sentence is also a terrible idea, because it's focusing on the characters."

or that teaching spelling, punctuation and grammar are "meaningless".

The analogy's not quite the same though; it's good to teach spelling, punctuation and grammar, but they're not the end goal. Indeed my Google-fu can't find any reference to a "Year of Spelling", a "Year of Punctuation", a "Year of Grammar" or, indeed, a "Year of Text".

I can, however, easily find links for "Year of Reading", "Year of Writing" and "Year of Literature".

spell eng

Punch You! Hey Sean

and granma

ain't meaningless but take a backseat to phonetics and typography, and contemporary pedagogical practice in language arts emphasizes the act of writing rather than compliance with standards from the Victorian age.

Sometimes we keep standards for a very long time because they're really effective. Written English is one such example.

Poiesis does not require standards. Shakespeare is from the age before standardized English and "Poiesis" fails my browser's spell check. It's not just e e cummings and Ginsberg's howlings.

The obsession over standardized spelling in particular is an accident of the English language. There aren't spelling bees in German or French because phonetics is the important point of reference in ordinary human language.

The standards of English language are useful but for matters of taste and social differentiation not communication, e.g. the tenses of "read" which is about as important as a word can get in the context of written communication.

"The standards of English language are useful but for matters of taste and social differentiation not communication"

There are people living in the same country as me, speaking the same language, less than 200 miles away, whom I struggle to understand in conversation. We spell and write the same way, so we can communicate through the written word. If we relied on phonetics to be able to communicate, we wouldn't be able to. Having standards means we can communicate; I suppose what I'm saying is that I just plain think the statement above is wrong, based on my own personal experience.

There aren't spelling bees in France, but there are dictation competitions, graded on spelling, punctuation, and accents [grave, acute, etc]. And the French (at least the Academy) are notoriously sticklers for the purity of the language.

What do you think is the absolute minimum requirement to use a computer to its full potential?

A computer is basically a universal machine. It can do anything.

To use it, you need to specify your need with no ambiguity whatsoever. Code is just that: a non-ambiguous, Turing complete formal specification. C, Haskell, boxes you drag and drop, it doesn't matter. If you don't learn to construct and manipulate such code, you will never realize your computer's full potential, and will be at the mercy of those who do.

I'm not against division of labour, but this is different. Computers are the first machines that can have all our mental powers. The only reason they don't is because we don't know how most of our powers work. The day we do, however… http://intelligenceexplosion.com/

"Computer magic" you say? That's more true than you think: programming its awfully close to hermetic magic as found in fantasy settings: scribbling bizarre abstract signs on a surface does wonders beyond the understanding of most mortals, learning to make such scribblings often takes years of dedicated practice, and a single mistake in those scribblings, however small, can result in catastrophes, up to and including fatalities.

Coding is an Arcane Power from the Ancients. We should treat it with the same respect. Heck, everyone wants to be a Wizard. Why don't everyone want to know some actual magic?

In practice, however, our contemporary computers are far more complex than `send input/get output; master computers`.

Not because the basic mechanics have changed, but because our software ecosystem is vastly complex. The days of having a relatively simple and grokkable system are long over. Our computers are powered by extremely complicated, intricate and numerous interacting subsystems, where learning everything is akin to being a polymath, and people naturally need to specialize.

With this in mind, not all code is created equal. You're still under far more mercy with a visual programming language than a textual one.

Yes, programming is essential to realizing the full potential of your computer. Yet there is still so much more. The code is the main arbiter, but there is still a lot beneath, dealing with computation, discrete mathematics, information theory and so forth.

You're still at mercy when you can just blindly type instructions guided by your interpreter and it spits back programs with horrible performance, because you have no idea how data structures work, can't optimize for shit and don't really know what your interpreter does behind the scenes anyway.

I appreciate the nice fantasy gobbledygook about ancient arts and black magic, but I think you're getting full of yourself here.

Ultimately, in order to strive with complexity, first one must learn to operate a higher level above coding itself (system administration).

This is one of the aspects where the "learn to code" movement is shortsighted. When you operate on very high level abstractions, you get false ideas. Of course, abstractions aren't bad and ultimately every new language we use strives to wrap more away and give us a simpler interface. Yet being ignorant of the low-level details is still a curse, a disability, if you will.

That and IMO, it's just fucking stupid to have kids who can write console apps in C#, but can't use the shell to debug an OS issue. What use is programming when you don't even know your environment?

Yet being ignorant of the low-level details is still a curse, a disability, if you will.

That very much depends on how leaky the abstractions are.

The things you consider "low-level" are themselves quite high level and abstract. A "register" and a "cpu instruction" are abstractions too. Yet you can take them for granted without worrying about the microcode inside the CPU, or the clock propagation, or quantum leakage in the logic gates. Etc.

We need good abstractions, and when they're actually good we shouldn't worry ourselves about what's going on inside the box, unless for the pure fun of hacking.

In practical terms, I agree with you that most people who are trying to write software today would benefit from knowing more of the layers below them. But this is only necessary because of the shortcomings of our abstractions.

If we achieve a glorious future where all people can wield the full power of general purpose computers, it won't be because everybody learned all the arcane layers. It will be because we put together really powerful abstractions.

That's fine. I still think one should know how to do sysadmin work before coding.

Our computers are powered by extremely complicated, intricate and numerous interacting subsystems

Which is one of the big mistakes of the last decades. I understand market forces and Worse is Better, but the result is still way worse than what we could have gotten if we lived in Ponyland.

Complexity is overrated. Current home desktop systems (OS + browser + office suite + mail + drawing app) are over 200 millions lines of code. Now guess how much it really takes to build an equivalent.

About 20,000 lines, including the self-implementing compiler collection.

http://vpri.org/html/work/ifnct.htm

http://www.vpri.org/pdf/tr2011004_steps11.pdf

I too dislike the obsession with learning to code because, unless you're doing it volutarily and letting your own passion guide you to backfill missing bits of knowledge, it becomes a rote learning exercise devoid of understanding. As you state, the focus isn't on how to solve problems which is the raison d'etre of programming so the effort is wasted.

The problem I see is that we treat computer science as something you eventually get round to learning once you've already taken some preliminary steps with coding, and even then it's something to be looked at late into high school or at university. Code is the awesome tool that motivates learning, but I wonder if the process is taught the wrong way round. Could it be done a little compsci first, then code?

I started a series of blog posts trying to introduce the non-technical reader to the fundamentals of computer science in plain english: http://lifebeyondfife.com/tag/compsci-in-plain-english/. Still a work in progress, I'm trying to keep it interesting and explain why computer science is important at the same time.

Learning to problem solve would be a much more important lesson than learning to code.

Problem solving transfers across disciplines and is a useful lifeskill.

It could be combined with how to assess the quality of information or how to find decent sources of information.

There isn't really such a skill as "problem solving", problem solving is just applying intelligence and experience to something that you have been taught to do.

This is for children, so it's very basic. Read the question. Reword the question if that helps. Gather the information you have. List the information you need, and how to find that information. Sit and think about it a bit.

There are plenty of people who just throw their hands up in the air and give up if you ask them something they don't know.

code is for people to understand and only incidentally for machines to execute

This was a clever quote that has been taken way too far and simply isn't true. Even Hal Abelson backed off of that quote in SICP when pressed about it: http://www.gigamonkeys.com/code-reading/. Code just is not primarily for people to read – it is primarily to make computers do things. Just think for a second about what you're saying:

The reason we use code is to allow people to discover, understand and build on ideas.

Really? The reason most people write code is to express an idea with that code? I don't think so. People code to make computers do things. The things the computers do may facilitate communicating ideas (e.g. wikipedia), but the code itself is not primarily about ideas. Honestly, the only exception I can think of is when I'm writing example code to convey ideas about programming.

"What Dexter doesn't realise, probably because she's not spent a significant amount of time programming, is that code is for people to understand and only incidentally for machines to execute."

Lottie Dexter doesn't know how to code. She said it in the interview.

She did not say this:

"It doesn't mean anything to you, or to me yet, but it's the set of instructions that you type into a computer to get an output."

She said:

"It doesn't mean anything to you, or to me yet, ^^^because I do not know how to code.^^^ But it's the set of instructions that you type into a computer to get an output."

Is exparrot.com affiliated with paxson or this initiative?

Precisely this.

The "learn to code" hysteria is just the authorities trying to sweep over their incompetence in compulsory schooling by seemingly appearing to be in the times.

I can only expect progra-sorry, coding, will be awfully taught.

You say that now - and the inevitable procurement carve-up bonanza hasn't even started yet! I for one can't wait to see what overpriced proprietary toy language my hypothetical children will be pre-emptively de-skilled in.

What basis are you using to know what Paxman was thinking? I agree there's room for potential mis-understanding (although I still think that sequence was horribly executed), but do you know that? Or is it just conjecture on what his meaning was? You could be projecting your thoughts on him.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.