Live data from Hacker News

Coding - the new Latin

bbc.co.uk

41–50 of 74 posts

Re: Coding - the new Latin

#41
post #27

Earlier quoted context omitted.

Algebra is simple. It conforms to a small set of rules that are easily understood, often intuitive, and have few special cases. Problems are small, self-contained, and have clearly-defined parameters. They don't suddenly change on you halfway through the test, they don't have to account for unexpected input, and they don't have to interact with other problems. Real-world computer programs exist in a large set of arbi…

Algebra is as simple as the syntax of a programming language. Applying programming to solve real world problems is as hard as applying algebra to solve real world problems - and there is also only a very small group of people able to do the latter effectively.

The syntax of a programming language is actually simpler than algebra. Algebra is not particularly intuitive.

And, indeed, that's part of the problem. You really can't claim to be teaching anything of value if all you teach is programming-language syntax. One has to teach people to write some kind of actual program. And that's like teaching prose writing, except that schools and teachers have spent literally thousands of years learning to teach prose writing whereas programming was invented in living memory.

Re: Coding - the new Latin

#42
post #10

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, a…

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.)

Re: Coding - the new Latin

#43
post #39

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 a…

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).

Re: Coding - the new Latin

#44
post #19

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 t…

> 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 The question then becomes, do people need to learn specific computer languages, or is teaching the underlying concepts in abstract ways enough?

I would argue that dodgeball is better expressed as an iterative algorithm. Consider the following pseudocode:

  def dodgeball(players, balls)
    until players.all? { |p| p.is_hit? }
      throw(nearest_ball(balls), nearest_player(players))
    end
  end
Most people think like this. Dodgeball teaches while loops, not recursion.

Re: Coding - the new Latin

#45
post #19

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 t…

That kind of attitude (i can/could program but it's boring sitting alone) will change soon enough when you can't feed yourself unless you program all day. The only debate is in how soon that occurs.

Re: Coding - the new Latin

#46
post #43
post #39

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 a…

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 p…

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).

Re: Coding - the new Latin

#47
post #43
post #39

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 a…

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 p…

"I believe you're missing the point."

"Coding - the new Latin" is a marketing slogan. And if it breeds misunderstanding, or has to be explained, then it's not a good marketing slogan. I design software and write code. My initial reaction to the phrase was "so you're telling people it's hard and they should give up before they get started?" After that, I decided I had to read the article to get the meaning.

Perhaps it's a dead ringer of a slogan in the UK. But it won't get kids a-codin' in my corner of the globe.

Re: Coding - the new Latin

#48
post #40
post #39

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 a…

> Coding - is a creative craft where you take instructions and make something that never existed before. Mathematics - is a creative craft where you take a formal system (a structure purely of the mind) and create something (a new theorem, an addition to the structure) that never existed before. That is what mathematics is. That is why there are math majors. If it were all rote nonsense, computers would be doing all…

Making advances in math indeed requires creativity. But actually creating something new and expanding mathematics is a Very Hard Problem. It doesn't lend itself to "instant creation" like programming does. Sure, you can apply formulas in many areas of business and life, and you can create simple formulas for these things-- doesn't take a math major.

As to your last sentence, I completely agree.

Re: Coding - the new Latin

#49
post #19

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 t…

> 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 The question then becomes, do people need to learn specific computer languages, or is teaching the underlying concepts in abstract ways enough?

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 
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.

Re: Coding - the new Latin

#50
post #19

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 t…

Does everyone really need to know about recursion? Does everyone really need to know the basics of calculus? Or how about genetics? Does everyone really need to know French? I had classes for the above in my high-school. In fact I can't think of any class I took in high-school that isn't useless to a large portion of high-school graduates. And I can't think of many examples that are more useful than grasping the conc…

I think everyone needs to be at least introduced to those fields so they have some shot of figuring out what they might like while learning something that might serve them. Also, if you replace "calculus" with "statistics" and "French" with "English," I would say yes.
Post reply on HN