
Coding - the new Latin - soitgoes
http://www.bbc.co.uk/news/technology-15916677
======
wingo
It is important, but I prefer Eben Moglen's analogy:

"Software is what the 21st century is made of. What steel was to the economy
of the 20th century, what steel was to the power of the 20th century, what
steel was to the politics of the 20th century, software is now. It is the
crucial building block, the component out of which everything else is made,
and, when I speak of everything else, I mean of course freedom, as well as
tyranny, as well as business as usual, as well as spying on everybody for free
all the time."

[http://www.softwarefreedom.org/events/2011/fosdem/moglen-
fos...](http://www.softwarefreedom.org/events/2011/fosdem/moglen-fosdem-
keynote.html)

~~~
berntb
Check the total number of steel workers as percentage of the work force in the
year 1900 to a hundred years later. Very much less.

My personal lesson from this, is that computer software jobs in general might
soon have the hourly pay of PHP coders on elance. (Then the cycle of few
people studying computer science will repeat... like ten years ago.)

~~~
guard-of-terra
What makes you think "soon"?

It's obvious that in some distant point of future programming will cease to be
The hot thing to do, but what makes you think it might be soon enough for us
to see it?

~~~
adestefan
I'm not sure that steelworkers were ever "the hot thing to do." The downfall
of the steel industry in the US is multifaceted, but mainly boils down to the
fact that importing steel from outside US is cheaper than producing it in the
US and technological improvements in building with steel has greatly reduced
the number of people needed to construct things with steel.

Take from that what you will about the software industry, but just remember
that everyone either gets replaced by someone cheaper or technology takes
their job away.

------
tezza
Who here studied Latin?

Well I did Latin for 6 years in High School (Sydney Boys fyi). I find this
title "Coding - the new Latin" as a bizarre way of inducing people to learn to
code.

Latin is dead. Very dead. Back in my day Latin was billed as "The Fastest
Growing Language", but that never transpired.

Now if you want to read Caesar, Virgil, Catulus et al, then fine learn Latin.
But Latin is no longer the ticket to an elite private members club that it
once was.

Latin - is also a language that you exclusively read. There is so little
creative element to it. One furthers oneself in Latin by re/interpreting
existing works.

Coding - is a creative craft where you take instructions and make something
that never existed before.

It would be better to strap coding onto something intensely creative:

    
    
      Technical Drawing
      Metal Work
      Fine Art, Sculpture

~~~
cletus
I believe you're missing the point. Here are some historical uses of Latin:

\- Obviously it was the language of the Roman Empire;

\- It is the basis for many European languages;

\- It was the language of Christianity, the Papacy for thousands of years
(tying in somewhat historically with the conversion of Constantine). This went
so far as Roman Catholic services being held in Latin until IIRC the 1960s;

\- Prior to the printing press, books were the province of monks and the like
so being educated (in Western Europe) involved speaking Latin;

\- In England, Latin was the language of court and the law for centuries.
There are many Latin terms--even in American law--for a reason;

\- Latin was the language of science. Element names in chemistry, species
names in biology and so on have Latin roots;

\- For centuries, Latin was the _lingua franca_ of the ruling class of Europe.

The short of it is that being able to speak, read and write Latin in medieval
and Renaissance Europe was _power_. More to the point, if you didn't know
Latin, you were essentially excluded from many things (as many people were).
Knowing Latin had as much power and influence as literacy in general.

So what the author is saying is the ability "speak" the language of computers,
the ability to communicate with them and make them do things, is the 21st
century version of the thrall once held by Latin.

Many have spoken about how expensive it was to launch a dot-com company in the
90s and how that cost has essentially decreased by _two_ orders of magnitude
in a decade. One might have thought this would make engineers less valuable as
our skills would've been commoditized to some degree.

The converse has happened. While other costs have largely vanished, more
businesses became possible that never were before. There seems to be an
insatiable demand for engineering talent, at least for the short to medium
term.

Last century the dream was the 21st century would be about space exploration
and an otherwise "Star Trek" like future. Instead I believe the story about
the 21st century will be what incredible things we do with computers. Genetic
engineering, curing diseases, artificial intelligence, you name it.

This may go so far as to essentially stratify society. It's hard to overstate
just how importance computers will be in the next century (IMHO).

~~~
tezza
It is a little harsh on me to say that I "missed the point". I was not short
of understanding of the historical significance of Latin. I led with the fact
that I studied Latin for 6 years. During this time all your reasons were
expounded _ad nauseam_.

I want to avoid getting into any flamewar with someone whose StackOverflow
karma is measured in exponents. (I made no point on the importance of training
people to program computers, the second theme of your comment.)

What I was saying is that I believe Latin for one hundred years has involved
nearly ZERO _speaking_.

There are some very scholarly latin speakers with an English/Vatican
pronunciation divide. But they are the exceptions.

Yes there is Vatican City, but I think we can both agree that it would be best
if there are more people who can program computers than the population of the
Vatican (832).

~~~
learc83
I don't think the OP is comparing programming to Latin today, but to Latin
during the Renaissance.

Yes Latin isn't spoken, and nothing is created in it today, but that wasn't
true hundreds of years ago.

Programming is like Latin 400 years ago.

------
tpatke
When I think about all of the problems with the education system I am not sure
that "teaching coding" would top that list. The bottom line is that coding is
a profession which is not suited to everyone. I remember being a TA at
university in the late 90s when IT was booming. Everyone wanted to learn to
program. Once they learned enough to realize it meant sitting in front of a
computer alone all day - most moved on to something else. Few people have the
concentration / (lack of :-) social aptitude. I believe most people have the
intelligence.

Basic computer skills need to be taught. Coding? It should possibly be a
required semester in university for all majors. ...beyond that? Does everyone
really need to know about recursion?

~~~
randomdata
> Does everyone really need to know about recursion?

Recursion is taught in gym class through the game of dodgeball. Consider the
following C-like pseudocode:

    
    
        void throw(int *ball, int hits)
        {
            if (hits < NUMBER_OF_PLAYERS)
                throw(ball + angle(), hits + *ball);
            else
                return;
        }
    

The question then becomes, do people need to learn specific computer
languages, or is teaching the underlying concepts in abstract ways enough?

~~~
wcarss
Edit: I began writing this before a different post appeared with the same
point. Alas!

I'm sorry to be a jerk, but I found your code pretty tough to decipher. Here's
my thought process:

    
    
      NUMBER_OF_PLAYERS could be, say, 6.
      the caller calls: throw(ball, 0);
      0 < 6, so throw(ball+angle(), 0+dereference(ball));
    

So, what is ball? It's either an integer and you're just passing its address
around for no particular reason, or it's an integer array and you're using
angle() to move around inside the array somehow? Then what exactly is stored
in that array, the positions of people? Let's imagine it's 1s and 0s to denote
a person or not.

After making that leap of logic, your code starts to make sense. You're adding
"some amount" to the address, and then whatever is at that address (1 for hit,
0 for nothing) to hits, and passing them into the next invocation, as long as
it's less than the necessary number of hits. Could easily be a while loop, but
I'll get to that in a minute. I have some other points:

    
    
      - Ball isn't a great name for the list of the positions of the players.
      - It isn't clear that ball is an array.
      - There's a pointless 'else return'.
      - You never address the "I don't have a ball" situation!
    

This code requires explanations of arrays, pointers, and addresses before you
can talk about recursion. I'd express how to play dodgeball to a new
programmer as follows:

    
    
      throw(angle, enemy_positions):
        # This function takes an angle and a list of
        # the spots where other people are, removing 
        # them from their spot if it registers a hit.
        # Returns true if it's a hit, false if a miss.
    
      find_ball():
        # Tries to find a ball; returns the number
        # which you found -- 0, 1, or 2.
    
      load_enemy_team():
        # Returns a list of the spots where other players are
    
      enemy_positions = load_enemy_team()
      players_on_other_team = enemy_positions.length()
      ball_count = 0 # all balls start in the middle!
    
      while players_on_other_team > 0:
        if ball_count > 0:
          angle = get_throw_angle() # user inputs this
          hit = throw(angle, team_positions)
    
          if hit:
            shout("Yahoo!")
            players_on_other_team -= 1 # they're down a guy!
        else:
          ball_count += find_ball() # reload
    

That should cover it - though I'm sure there's problems with my code too. :)

The biggest point I want to make is that this example is trivially easy to
represent without recursion. While recursion can be used in place of any loop,
a non-programmer's mind will likely arrive at iteration first for tail-
recursive examples. And once someone understands how to solve a problem one
way, teaching them a totally different way can be tough.

I personally think people do pretty well at understanding how recursion
applies with respect to exploring a maze, which is almost as universal an
experience as dodgeball.

~~~
randomdata
> Ball is a terrible name for the list of the positions of the players.

From a code maintainability point of view, yes. I would never write code like
this for a real application. However, for analogizing the game in code, I have
to strongly disagree.

Ball is _not_ a list of players. It is, just as in the game, a pointer to a
location in space. Players may or may not occupy that space. If the player
does, a hit occurs. The hit test is based on the intersection of the location
in space and the occupation of that space.

I chose to represent my code in a C-like manner because it makes that spacial
representation easy to write. People are not thinking about the game in terms
of lists and objects, that I am sure.

------
Jach
I think that's a horrible phrase. The first thing that comes to mind is:
"Coding isn't dead!", then: "But coding has direct benefits, not hand-waving
indirect benefits like 'you will get better at English!'" I get that it's
meant to convey that if you can't code even a little, you're an uneducated
person, much like in older times people who didn't know Latin (and Greek) were
uneducated. That's a fine sentiment to have, I agree coding is more or less a
fundamental skill these days that many are ignoring, but using Latin as the
metaphor isn't the way to go. It needs to be as important as learning to
write.

~~~
m0nty
Apparently Latin is a very popular subject in schools. IF that popularity is
genuine, it refutes the idea that children are always looking out for the
easiest option, which bodes well for CS in schools because (if it's done
correctly) it will be challenging. Personally I have my misgivings about the
phrase "The New Latin" but I have strong objections to the "Hey kids!
Everything is fun, fun, fun!" approach which is so often the alternative.

~~~
Jach
I actually think Latin's popularity is, at least in part, due to its easiness,
and at least in my former high school. I'm inferring to other schools since
the AP test doesn't require speaking it. I mentioned in a cousin-comment that
I took Latin for three years, I also took French for five. French was a lot
harder. Merely speaking it and understanding when it's spoken back with
different accents and different speeds is _a lot_ harder than just reading or
writing it, which is all I had to do for Latin. (We learned the simple
pronunciation rules and read some things aloud but that's it.) Yet for the
universities around the area requiring two foreign language credits from high
school, Latin was good enough.

Latin was funner for me in some ways though since it has a pattern-matching or
puzzle-solving feel to it at times with all the word endings and no reliance
on word order. I don't think it's as neat as Arabic but it's a somewhat
similar feeling. I agree that overselling things as fun is a great way to kill
any fun that might have existed.

------
tikhonj
I think it's a great analogy--there is little like programming for opening
your mind up in certain ways. Big ideas from computer science--more than those
from any other single subject--have changed they way I see the world.

Of course, I am highly involved in computer science, so its effect on me is
disproportionate. However, I think that _everyone_ would benefit from at least
a cursory understanding of the big ideas behind CS, particularly abstraction.
If I had to choose one, single concept that has affected me more than any
other it would be abstraction. Apart from this, the highly logical programming
mindset is also healthy. Some of the discipline that comes from writing your
ideas in a form even a computer can understand is invaluable.

Additionally, programming is a creative endeavor with a very low barrier to
entry: this is imperative for certain types of people. In my arrogance, I view
myself as a relatively creative individual; however, I am also fairly lazy. I
do not think I would have pursued engineering or art nearly to the extent I
did programming (I was exposed to all three at relatively early ages) simply
because they required so much more. To build something, I would need
materials, tools and space; the same is naturally true of drawing a picture.
To program all I needed was a computer, and since they were common by the time
I was in elementary school, this was not an issue. This allowed me to make
cool stuff without going out of my way.

Computer science really is something that opens the mind. I fervently believe
it should stand with subjects like math and literature, not just for practical
reasons but because it is immensely valuable for personal development.

~~~
itmag
This. I often get stuck in communication with people because I tend toward
abstraction and they toward being more concrete-bound. I often get annoyed
with people when they get hung up on stuff which is just irrelevant detail to
me. "No, disregard that, it's not important to the general principle here, you
see..."

But lately, I _am_ gaining some appreciation for the detail-focused mindset.
It's just two ways to look at things.

------
itmag
Why is it that coding is such a rare (relatively speaking) skill?

Sure, there are some hard concepts in coding, but for loops and conditional
statements are hardly more difficult to understand than a lot of the math
which gets taught in junior high.

Speaking of that, why is it essential for young people to learn algebra but
not to learn for and if?

~~~
lclarkmichalek
The simplest way would be to shove computing under the maths curriculum. Teach
if with guard statements, and skip for, teach recursion. by the time the kids
get to sixth form, have a mathmatical computation course where you teach them
to apply their knowledge to a language like haskell that mirrors mathmatical
notation quite well.

~~~
itmag
I would probably create a whole new class called "thinking 101" or something.
It should teach:

-numeracy: how much is 1 million/1 billion/1 trillion, etc.

-common cognitive biases.

-logical fallacies.

-basic science.

-basic coding.

-De Bono's 6 thinking hats.

-how the brain works.

-meditation (ie _not_ thinking).

-how to learn stuff faster and better.

-how to remember stuff: memory palace and the like.

-etc

I could think up a HUGE list of stuff in this genre that would be very
helpful.

~~~
d4nt
During sixth form college (ages 16-18, in the UK) one of the philosophy
lecturers started a course with the same sort of goals. It covered critical
thinking, written communication, logic, a bit of psychology etc.

The 12 or so hours I spent in those lectures were among the most valuable
hours I invested in anything, ever.

~~~
itmag
Yeah, it's an obvious patch to society with tremendous potential for trickle
down benefit. Why isn't it being done?

~~~
derleth
Honestly? It would likely be too much fun.

There is still, to this day, a large number of people who think education
needs to be repetitive rote drill in order to be... real, or legitimate, or
even 'useful' by some warped definition of that concept.

It's tied into the notion of hazing, or "If I had to waste my years in school
tied to a desk memorizing stuff I don't use, so should you! Builds character!"

And, finally, the idea that if the next generation does it, too, maybe your
time doing it wasn't simply wasted.

------
pseudonimble
My experience with IT education in the UK is genuinely atrocious. During
secondary school we made a spreadsheet in Excel and a couple of Word
documents. The closest thing to programming was a picture of traffic lights we
had to "programmatically" operate. For a single hour lesson. And that is it.
We were lucky if our computers even turned on.

~~~
wazoox
The problem is that teachers are often completely computer-illiterate. This is
a chicken-and-egg problem; you won't teach proper, interesting computing
activities without competent teachers.

~~~
_delirium
Although true in general, some subset of students will figure out interesting
things, and then show them to others, if you at least put them in an
environment where that's possible. My middle-school computing class was not
particularly well taught, but the curriculum included a few simple things in
Hypercard, and Hypercard was the kind of environment where students who
finished the official assignments early could find all sorts of other cool
things to do in it.

That does also require having free time. There's a trend lately towards
assuming that any free time students have is wasted time in which they could
be learning instead of goofing off, which I'm not sure is the right way to
look at it.

------
siddMahen
I've spoken to both of my principals and my ICT teacher about introducing a
solid computer science course and scraping "ICT". As a student and a avid
programmer, I find it horrible that we don't get a chance to truly leverage
the power of computers.

The reason I don't think CS is being widely adopted is because many students
have been conditioned to accept ICT as a good computer course and have no clue
as to what you can achieve with proper training and a computer. My classmates
aren't interested in CS because they think it's way to difficult and has no
tangible effect on society. On top of that, both of my previous ICT teachers
had no clue how to program: those days were spent editing movies and making
animations in Flash.

Glad to see the powers that be finally take some initiative to solve this
problem...

------
jamesrcole
_And it looks like they've found what could be a great slogan for their
campaign. "Coding is the new Latin," says Alex Hope..._

To echo number of the other comments here (and try and respond to some of the
criticisms of those comments):

I think that's a _terrible_ slogan.

The point of a slogan is to be immediate - something appealing that gets the
point across in a catchy and unambiguous fashion.

I think that the _associations_ (and slogans are about associations) Latin has
for most people is a language that is presently irrelevant and of no practical
purpose.

It may have once been really significant, and it may have played an important
role in the world becoming what it is today, but such details are not the
things that the term "Latin" immediately invokes for most people, and what it
immediately invokes is what matters for a slogan.

Being a great analogy does not make it a great slogan.

------
cafard
Ewnay atinlay? ixnay!

