Live data from Hacker News

Java in College: "You might as well be teaching Chinese to a monkey."

pshaw.wordpress.com

121–130 of 145 posts

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#121
post #44

Earlier quoted context omitted.

I think the problem with those languages is they're too different for a starting course. Scheme is obviously very powerful, but its syntax is wildly different than most popular programming languages used today. As for Ruby, don't even get me started. There's practically no syntax at all; merely reading it agitates me. I think, in the beginning, people are most likely to understand concepts like Objects (Circle, Squar…

Forth, Factor, and Io are languages that come to mind that have "no syntax". Ruby is certainly at the "more syntax" end of the spectrum. puts(("foo #{bar} %s %s" % [bat, baz]) * 2.+(0b0010)) There are a huge number of syntax rules in that line.

I count 23 in a PEG language without repetition. Here's an expanded version of your fragment that runs successfully:

    # from http://news.ycombinator.com/item?id=404609
    bar = 3
    bat = 4
    baz = 5
    puts(("foo #{bar} %s %s" % [bat, baz]) * 2.+(0b0010))
And here's a grammar for the subset of Ruby it uses:

    this 
I have tested it (in http://github.com/kragen/peg-bootstrap/tree/master/peg.md) and it seems to work for that fragment, although I haven't examined the parse tree to see if it's right. (Obviously the definition of namechar is wrong, and there's no $end token separating statements, and you can't call methods on things that aren't constants or self, etc.)

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#122

Earlier quoted context omitted.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

I can see how "X = X + 1" could be confusing to someone who has never been exposed to programming before. All your life you're taught in math classes that "=" means the things on both sides are "equal" at all times. Maybe replacing the "=" with an array while teaching would be helpful. Then once he understands the concept, try to introduce the "=" syntax.

I think that this is one of those areas that would be greatly improved by starting students with assembly. It's fairly easy to grasp what each statement does in a small instruction set like MIPS since there aren't these sorts of preconceived ideas. Then once students have learned assembly, teachers can explain statements such as "X=X+1" unambiguously with the assembly instructions the students are familiar with.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#123
post #20

I've noticed this with higher-level concepts too. There are people who simply can't grasp the concept of a mind that doesn't work like a human mind. There are people who simply can't grasp various levels of meta-thinking - like the distinction between metaethics and object-level moral decisions. You can keep trying to point in the direction of the meta-level but they just can't look in that direction, like they're in…

I agree. There are definitely many styles of thinking, and they seem to be developed or discovered independently of the skills which they are associated with, i.e. you can learn Java without learning how to think like a programmer. We can call it "talent" and say it's innate, but I think that's a cop out from the hard problem of trying to find better ways to develop it.

In a sense, it's not unlike personality disorders, in that that those who "have it" generally don't know where they got it, and frequently don't recognize it as an "it" that not everyone has it, at least until they're confronted with evidence.

I happen to have recently transcribed something from Seymour Papert's Mindstorms, about LOGO, that seems relevant:

"By deliberately learning to imitate mechanical thinking, the learner becomes able to articulate what mechanical thinking is and what it is not. The exercise can lead to greater confidence about the ability to choose a cognitive style that suits the problem. Analysis of "mechanical thinking" and how it is different from other kinds and practice with problem analysis can result in a new degree of intellectual sophistication. By providing a very concrete, down to earth model of a particular style of thinking, work with the computer can make it easier to understand that there is such a thing as a "style of thinking." And giving children the opportunity to choose one style or another provides an opportunity to develop the skill necessary to choose between styles. Thus instead of inducing mechanical thinking, contact with computers could turn out to be the best conceivable antidote to it. And for me what is most important in this is that through these experiences these children would be serving their apprenticeships as epistemologists, that is to say learning to think articulately about thinking."

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#124

This really has nothing to do with Java, except it happens to be the language he's teaching. A more accurate title would be 'Programming in College: "You might as well be teaching Chinese to a monkey."' as it would be equally applicable to any programming language.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

"Seriously. He couldn't comprehend: X = X + 1"

Isn't that really all there is to comprehend, when you get right down to it?

For all the people who don't "get" programming, I think that's exactly what they don't get.

Unless you're teaching functional programming. Then it would be f(x).

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#125

This really has nothing to do with Java, except it happens to be the language he's teaching. A more accurate title would be 'Programming in College: "You might as well be teaching Chinese to a monkey."' as it would be equally applicable to any programming language.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

Perhaps he could be a functional programmer if X = X + 1 doesn't make sense ;)

I could understand why if a mathematician found it odd - of course in practice they would understand it, but they would probably in their head make the left most X to be X' or somesuch so they could understand what was going on.

When you do a mutation of a variable - there are all sorts of subtle things to understand about the machine underneath that you wouldn't have to if everything was immutable. I guess its easy to forget that in the day to day.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#126

Earlier quoted context omitted.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

I can see how "X = X + 1" could be confusing to someone who has never been exposed to programming before. All your life you're taught in math classes that "=" means the things on both sides are "equal" at all times. Maybe replacing the "=" with an array while teaching would be helpful. Then once he understands the concept, try to introduce the "=" syntax.

Oops, I meant "arrow" not "array", and didn't notice in time to edit.

Can you tell I'm a programmer, not an archer? (actually, I have practiced archery in the past)

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#127
post #120

Earlier quoted context omitted.

I knew someone would say this ;) It is true some adults can learn language almost as easily as children, but that's the exception. The main point is that as you get older (for the vast majority of people), learning a new language becomes more difficult. A similar effect may be happening with programming.

I don't think that needing thirty thousand hours of practice to learn something qualifies as learning it "easily", and that's how long children normally take to learn their first language. Adults can often learn new languages to an expert or native level of competency in only ten or twenty thousand hours of practice. What's exceptional is the adult who takes that amount of time to learn a language, challenging themse…

Hmm, to avoid this being a back-and-forth between us, I attempted to find a reference for my point (which I was taught from multiple professors in college, and backed up by personal experience)... and I couldn't find any.

I could find reference to "the myth that children learn languages easier than adults". I'm shocked that my child psychology and cognitive psychology professors (who both taught a section on language development) would get that wrong, but it's entirely possible.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#128

Earlier quoted context omitted.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

I can see how "X = X + 1" could be confusing to someone who has never been exposed to programming before. All your life you're taught in math classes that "=" means the things on both sides are "equal" at all times. Maybe replacing the "=" with an array while teaching would be helpful. Then once he understands the concept, try to introduce the "=" syntax.

This is why a certain language used := as the assignment operator and = as the boolean equality operator. It really doesn't make sense as written when compared to all of the maths people have learned up to the point they are introduced to programming. It's where learning about addressable memory and pointers compared to the values stored at those addresses actually made more sense to me than the optimized syntax (at least when I was 12 or so). It also operates backwards in most languages, where the stuff on the right of the equals happens before the stuff on the left. It really should be something that reads as "take the value in box with address x, add one to it, and store the value back in the box with address x" (basically show the student what the assembly language looks like).

I really don't have a problem with people not getting x=x+1, I think it shows someone is actually trying to deeply understand what is going on.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#129

This really has nothing to do with Java, except it happens to be the language he's teaching. A more accurate title would be 'Programming in College: "You might as well be teaching Chinese to a monkey."' as it would be equally applicable to any programming language.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

"To them, the C compiler was just magic."

Any sufficiently advanced technology is indistinguishable from magic. - Arthur C. Clarke

it must have been too advanced for them? :)

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#130

This really has nothing to do with Java, except it happens to be the language he's teaching. A more accurate title would be 'Programming in College: "You might as well be teaching Chinese to a monkey."' as it would be equally applicable to any programming language.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

I once tried to teach programming to someone who called all of his variables x. He genuinely couldn't understand why the machine couldn't just figure out which x he meant. This particular someone was due to replace us (a consulting firm) at the client. Heh, I wonder if they're still in business.
Post reply on HN