- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Ancient Greek used to be made available to students considerably younger than nowadays; I believe that in some of the more traditional preparatory schools in Britain it still is. At the school I attended, Greek was one of the options at age 14 (I took Russian), while Latin was embarked upon seriously at age 11.
The only problem with teaching a small child how to play a reed-and-pipe organ is that his/her feet will have trouble reaching the pedals, but apart from that, musical keyboard skills can be picked up before a child has learned to talk.
As for playing Hamlet, I also believe there are establishments where Shakespeare plays are studied by children still in single-figure ages. We were definitely getting him by 12, and (again at my school) a friend of mine played Lady Macbeth at age 12
The trouble with children nowadays is none of them get any education to stretch their capabilities worth a damn. Serious knowledge and learning is blocked from them by the misguided patronising attitude that they won't appreciate it. This is probably why childhood in certain nations of the Western world stretches into a person's 20's. It was less than a century ago that children were treated as adults by the time they were 14.
Admin
If you can't get the basics of programming in C, you probably can't understand them in any language. If you can't teach the basics of programming in C, you probably can't teach them in any language. Don't get me wrong, Java is also a fine language to learn in, and it has its strong points and weak points for the beginner as well, but if you want to get someone from zero to sorts/heaps/graphs, then C is as good as any language I know of, and better than some. Yes, it makes you work hard to master the indirections, but this is productive work, in that you really get an understanding of the memory problems that higher-level languages quite correctly hide from you.
Admin
And that's how you motivate kids to learn programming.
Admin
Children can pick up many things if you don't convince them first that they can't.
Admin
TRWTF was not mentioning that the Middle School Student is in fact the President's Daughter.
Admin
TRWTF is that my school didn't have anything like this :(
Admin
BTW, I think GCC warns about the line continuation from \ in comments. I've hit this exact situation a few times in somewhat similar circumstances (comments including ASCII art diagrams of finite state machines), and my memory is that the first couple times the compiler pointed me right to the problem.
Interestingly, that exact reason is why I think that C isn't a very good language for most people. Why add a bunch of distractions (a poor standard library, lots of abbreviations, memory safety) when the task is already difficult? I think staging off of another language like Python is the way to go.I'm not saying you can't start with C, or even that there aren't people for which C is the right choice -- I'm just saying that if someone comes and says "hey, I want to learn to program", C isn't what you should suggest in the absence of other information.
Admin
I don't think you can really teach a middle-scholar how to programming level you're referring to, since they mostly don't know many of the things they'll learn in a more advanced education (complex math, statistics, data structures, etc), so you're basically down to teaching them what it feels like to have a computer do what you want it to do.
For this I think it's better to provide them with the fastest route without them having to learn all the complexities of memory handling, strict syntax and build cycles. You want them to see what they can achieve without losing their attention. This is why I find Python or JavaScript better suited to learning the basics of programming. You don't need to know what a compiler is to start having fun. Specially Javascript is cool to learn with because all you need is browser.
Hell, I can see many web developers today haven't built any code in their lifetime.
Admin
At first glance, I thought the code was some variant of Befunge.
Admin
Admin
[quote user="Someone"] Whatever or not you agree with my previous post saying I don't think C is a good choice for an intro class, the choice of language should be guided by what will get the students to learn best. Picking the hardest language to can separate the students is the opposite of what teachers should be doing.
[quote]
I think you need your sarcasm detector recalibrated. ubersoldat was making exactly this point.
My position is that C is in fact a good language to teach with, not because it somehow weeds out the weak ones, but because it can teach you a lot about programming that you'll otherwise not get without making a special effort - that effort is one most programmers won't make, since they will (quite correctly) prioritize moving forward rather than backfilling the basics. The time to get the basics is at the beginning, and C will do that for you. This is a very good reason to teach people the basics in C.
Now, many programmers do just fine without really understanding memory, but if you can get that visceral understanding of the stack and the heap into a kid's head from the start, you've made them a better programmer, and that's a good thing.
Admin
There's TWWTF (worse...) : using LabView to do anything even vaguely complicated. It's a shining example of non-commentable, unreadable, undebuggable code.
Admin
I forgot to use the sarcasm tags in my "ancient Greek" comment and not everyone picked up on it. You're right, QJo. Ancient Greek and Shakespeare were taught in grammar schools 200 years ago. Greek was optional but Latin was mandatory in many schools.
Most of the people who are now world-class performers, scientists, athletes or anything else were highly proficient in high school or even before then. It's not a WTF to let them achieve all they can.
Admin
No, children WILL pick up many things if you TELL them they can't!
Tell them "just play the games, don't look at the code." They'll have the code disassembled before the week is out.
Admin
QFT. Most of the so-called "problems with adolescents" can be traced to the fact that "adolescence" is an artificial state, invented by the modern Western world, in which we begin to require its victims to behave with the responsibility and maturity of adults, while granting them none of the benefits of adulthood. No wonder teens get all rebellious!
Every geek knows that with great power comes great responsibility, but somehow we miss the obvious converse: with responsibility comes power! Separate the two (in either direction) and you end up with an unbalanced system, and things start to go wrong.
Ancient cultures understood this. For example, have you ever been to a bar mitzvah? These days it's just a fancy birthday party, but it was originally a celebration of the time when a boy formally becomes a man (at 13 years old) and begins to be treated as one, with everything that entails. And other cultures had very similar concepts. It's only in modern, "enlightened" times that we've managed to screw up young adults so badly.
Admin
I see sort of three contexts where the choice of language comes up: 1.) An individual deciding what to use to self-teach 2.) An instructor of a programming class which is largely stand-alone 3.) An instructor of a programming class which is viewed as leading into a CS/software engineering/etc. program
In all three cases, I think there's an argument against C. :-)
1.) In this case, pretty much by definition you have someone who is self-motivated to learn, and as a result this is the category with the freeist choice. I suspect that, to a large extent, the person will have equal success with any language, unless they choose one that for one reason or another is entirely unsuitable for what they want to do. (E.g. I wouldn't recommend Haskell. :-)) I'd still suggest something like Python to such a person unless they actively wanted to learn a lower-level language so they can get to cooler programs sooner, but I also don't think they'd be appreciably less successful in the long term if they went with C.
2.) What are the goals of a stand-alone CS class? I would say that the primary goal is to get people to be able to write as many useful programs in as short of a time as possible. Because of what I view as "distractions" in C (e.g. poor standard library, memory management, etc.), I think that the floor for what you have to learn to be useful is a lot higher in that language. Furthermore, people taking this class with no further CS education (see (3)) are probably not going to have programming as a significant job component (and those that decide to take it up as a hobby move toward category (1)), so getting a good understanding of what's going on behind the scenes is likely to be rather less important.
3.) I view the goals of an intro CS class that is designed for majors as being (1) start providing a foundation for future classes and (2) attract and retain students. The first, of course, is fundamentally what the class has to do, but the second goal is also quite important. The second goal aligns somewhat with the previous category, as the attraction to programming is (or at least you want it to be :-)) the "fun" of making useful and neat stuff. The first goal means that you can defer teaching C until a later course and start with something that better meats the second goal. Even curricula that aren't terribly well-designed do an OK job at this; both universities I've been to require CS majors to take a course that involves assembly programming (arguably even better than C at learning what's going on!), and I suspect would be hard to get through without taking at least a class or two that have projects in C.
That's my philosophy anyway. Like I said, I understand where "learn C" proponents are coming from (I definitely think it's important to learn at some point), but I think the circumstances where C is close to the best choice of languages are pretty narrow.
Admin
Oh God, and I still screw up the quotes. :-( Sorry.
Admin
I only read the articles so that the comments make sense. The best content on the site definitely comes from the comments, at least a small percentage of them.
Admin
"Why Nerds are Unpopular" - http://www.paulgraham.com/nerds.html
(Filler text to placate Akismet) QJo and Mason have effectively summarised a major theme of that article - even if they've never read it before!
Admin
This should be a featured comment
Admin
Learn a language??
Look, when I started to learn programming, all you could get ahold of was Fortran. In some ways, it is a pretty good language to learn starting out. It is a nice procedural language, and if you go back a few years and talk about earlier versions (Fortran-66 comes to mind), it can probably be reduced to about 10 different statements (I seem to recall a book called "10 Statement Fortran"). The problem (with most languages) is that the standards people want to cloud them up with "new". It has happened with C, and Fortran, and other languages, and the result is sillyness like '' followed by new lines being continued and some compilers doing different things.
Sticking to older implementations had a certain foundation in it, and reverts to simpler times. Most likely a lesson for us all to learn.
Maybe this is why I listen to channel 6 on XM radio.
Admin
Needs more self righteous indignation.
But seriously, whats with this modern fad of teaching programming to high-school kids. The ones that are interested in it should already know more than the teachers by this point, and the ones that don't aren't really interested and so there is a limit to what you'll be able to teach them.
Admin
I don't say it's the best. I say it's one of many, many good choices. There's no such thing as "best" in this domain, at least until we get much more specific about our goals.
Nope, can't agree with you here. It's not something you'll ever go back to. Learn it first, or let it go. I know far too many programmers who have a laundry list of things to learn, and "learn C" or "really learn C" is always on the list for the ones under, say, 40. They never do learn it, because they don't need it, so it just becomes mental overhead - a little "thing to do" that will never happen. Chuck it and move on. This is the main argument for learning C first: that's when you'll actually benefit from it. Very few programmers actually need C, what they need is the stuff C will teach them.
Admin
I'm sorry, I didn't realize I learned programming when I was 8 and learned C 3 years ago when I was 13. If I remember correctly, I was in middle school when I was 13.
Admin
Did you teach yourself? If so your point is not relevant.
Admin
Was he? I have run across the attitude of using some course to weed out people. How do you tell the difference between someone holding view A and expressing it sarcastically to sound like the opposite view B and someone expressing view B?
Sincerely,
Gene Wirchenko
Admin
Maybe teens can learn C just fine. Maybe your own inabilities are what makes you think that they couldn't.
Yeah some compilers think that \ before a line break escapes the lien break. And using a compiler that doesn't when one that does is intended (or vice versa) could cause bugs like the one described. But using an unintended compiler is not a WTF, it is just a mistake. Big deal.
Admin
Dear Sir/Madam, Your internet style is very formal.
I simultaneously hold both views A and B, and will express either sarcastically or genuinely dependent on context and as the mood takes me.
In this case, context is everything: If your aim is to educate as many kids in programming as you can, obviously you should pick a relatively tame language to ease them into it. If your aim is to employ the best possible programmers out of school, you'd probably rather their teachers subjected them to the most brutal of courses possible, so that the only ones left are certifiable geniuses (or, I guess, simply certifiable).
Yours faithfully, eVil
Admin
Maybe thats why we should be teaching theory in middle school and syntax/language in high school. You don't even need a language to learn the concepts or basics. I started with C++ in highschool then moved on to Java. years and years later, I couldn't tell you how to write a c++ program but I can look at one and tell you what it does. Sure the syntax matters but not as much as the ideas behind it.
Admin
Quite right.
This is how decent university courses do it; all my professors simply assumed you either already knew C like syntax (or would pick it up as you went), and they spent their time teaching transferable language-agnostic skills.
Admin
I started learning with C++ in elementary school. Couldn't quite get pointers and such for a few more years, so starting with C is probably perfect. Far better than scarring them for life with something like Python or VB like so many schools do...
Of course, I wouldn't try to teach it to EVERYONE in middle school, but for the few students who are interested C seems like a great choice to me...
Admin
Did the student write the code that wouldn't compile? No. Did the student write the compiler that wouldn't compile it? No.
The student was just part of the plot and had no influence into the actual WTF. Nor did the teacher. Not sure that it's a WTF, but if it is it certainly wasn't done by a student or amateur.
Admin
Don't worry, this article was just a reading comprehension test for the users of this site, and CA (and others) just failed. Alex is working on a special redirect so they get sent here instead.
Admin
No mention of QBASIC yet?
Admin
drumroll
Admin
In ancient Greece, for example...
Admin
Not so much. I was a bit horrified at first when you said I was making the same points as Paul Graham, because so much of what he says is not only wrong but harmfully wrong, the kind of stuff that can really mess you up if you listen to it. So I read the article to see what he was saying.
It looks like he was actually making the opposite point that I was. He doesn't say that adolescents are adults and need to be treated as such; he said, explicitly and repeatedly, that adolescents are still children and their problems come from being mismanaged. He follows the conventional wisdom entirely on this point.
For example, he answers the question of why nerds are persecuted by other teens thus: "Partly because teenagers are still half children, and many children are just intrinsically cruel." He even seems to think that in ancient cultures (he specifically mentions Mongols and Renaissance Europe) teens were treated as older children, like they are today. In fact, historical records suggest the exact opposite: they were treated as young adults.
Today "young adult" is a euphemism for "old child," but back then it was taken literally: you were an adult and were both expected and allowed to act like one. That's something that our society has lost, to its detriment.
Admin
Admin
You could even say it's streets ahead. Eheheheheheheheheugh.
Admin
Your world comprised of just software-developing geniuses will not, and cannot, exist.
Do you think those who were interested since the days of high school defines enough programmers to fill the jobs in the United States? I highly doubt it. Supply and demand dictates this trend, not some personal view that all developers should have been in love with it since grade school.
Admin
QFT, FFS. Not only is Paul Graham is a prick, he's a stupid prick.
Calls to mind a quote I saw once (buggered if I know where):
"When I was a child I thought I hated everybody. When I grew up I realised it was only children I hated."
Admin
And while I think about it, it was a few days ago I saw a piece where a student had been unfairly discriminated against for being a native American, and was referred to in the article as a "little girl". Bollocks to that, she was 17.
Admin
Because teaching C isn't just teaching them a programming language - it's teaching them how things actually work. And while it might be harder to learn that way, it covers some stuff that's good to know before they learn languages that are a bit more tolerant of bad habits.
Of course for similar reasons, Python is also a very good choice for a first or second programming language - it teaches good habits around having readable well-formatted code, being one of the few languages where messed-up formatting can actually be a bug.
Admin
Then I guess they aren't standards, are they?
Admin
TRWTF is why am I reading this garbage?
Admin
I guess OP plays Metro.
Admin
Our comments don't matter though. This thread terminated when someone mentioned the president's daughter.
Admin
I kind of think Andre Rieu should have waited until Akim Camara was 5 before presenting him. Some other 5 and 6 year olds on Youtube are far more impressive.
One of my middle school teachers said that the language used by computers was Cobol. I brought in manuals for a few other languages. By that time I could have learned C. I don't think C would be good as a first language though. BASIC was invented to be a first language and the original version still seems suitable for that purpose. Just spend a few weeks on it before advancing to something else.
Admin
Trolly troll is trolly. Logo is a Lisp.
You misspelled Clojure. Hope this helps.
Admin
I taught beginning programming in QBASIC as recently as 2001 with great success--after two terms of QBASIC my students breezed through C and C++ classes.
I will defend to the death imperative languages with Englishy syntax as the best way to learn programming for normal people. Precocious, autistic future Zucks can have Scheme.
(captcha: abigo. Tengo un frio en mi cabeza, mi abigo.)