Do Kids Still Program?
From his journal, hogghogg asks: "I keep finding myself in conversations with tertiary educators in the hard sciences (Physics, Astronomy, Chemistry, etc.) who note that even the geeks—those who voluntarily choose to major in hard sciences—enter university never having programmed a computer. When I was in grade six, the Commodore PET came out, and I jumped at the opportunity to learn how to program it. Now, evidently, most high school computer classes are about Word (tm) and Excel (tm). Is this a bad thing? Should we care?" Do you think the desire to program computers has declined in the younger generations? If so, what reasons might you cite as the cause?
Kids are too busy taking pornographic pictures of themselves and having sex with teachers.
But they're not programming computers...
... just look at sites like www.ticalc.org
they're programming calculators like the TI-83 Plus and TI-89
not only that, but they're learning C, ASM, and BASIC... wow!
Learning programming was so frequent back in the day because the primitive nature of early PCs required people to be able to do so low-level work to use them well. Heck, the Altair didn't even have a monitor, you had to flip switches to process commands. Freiburger & Swaine's Fire in the Valley shows you some of these early computers and their users. Everyone was programming back then because these simple machines attract a crowd of people willing to think analytically.
I cut my teeth on C++ when I was nine. Graduating from HS this year with a few years of C++, some cursory Java, some cursory web 'languages' below my belt.
The main issue here is that programming isn't necessary anymore for kids - whatever any kid wants to do they can rush out and buy a bit of software for, or find a utility online. All the functionality they'd want is at their fingertips already, so programming is left to the tinkerers.
And I rarely program anything for fun anymore because I'm overscheduled. Too many classes, too many bloody standardized tests, and programming itself isn't rewarded at the HS level because of a refocus on reading, 'riting, 'rithmetic. Out of the set of dedicated students, the more well off kids burn time at prep schools and cram classes, the less well off burn time studying. Few chances to program 'for fun' - I've got a really old RPG engine that I add bits and pieces to every now and then, but there's no way I can finish it anytime soon.
Let's see, what will a qualified programmer do?
Work in an environment where pay and job security is according to seniority, not competance. Work with lazy and dumb students who disrupt class, yet can not be kicked out or even (except in Texas) spanked. Get stuck doing odd jobs like minding the bus loading/unloading area and trying to stop food fights.
Work in a cubicle for $40000 to $150000 while surrounded by fairly intelligent nerds and all the Mountain Dew you can drink.
Gee, I dunno...
Comment removed based on user account deletion
...a current highschool student. I must say, programming is a dying art among my peers because it's seen as 'uncool, unhip and boring.' There's no drive for it any more. I'm in my Junior (Grade 11.) year and I'm just picking up some C++ and C. Granted, I learned how to program for LinguaMOO's and I picked up some HTML back in 5th and 6th grade, so it's a little easier for me. But the point is, it's been... convoluted? I guess that'd be the word I'm looking for. It's been washed out by things like sports, staying fit and doing drugs. Hooray.
Seriously, the complexity associated with modern development tools is way too steep a curve for your average 14 year old to wrap their heads around. We're trying to address this to a certain extent with the Visual Studio 2005 Express Editions, but it's a tough problem. It's no longer as simple as getting a bare-bones BASIC interpreter built into your computer's ROM. I think there have been some cool advances in this space, though, in the recent past. Take the Kids' Programming Language, for example. It's is expressly aimed at the younger crowd. I've seen a demo of it (the guys from Morrison Schwartz who created it came by to give a talk on it last year), and I must say that I am suitably impressed their work. Check it out if you have a younger child who you want to introduce to development.
No, but I used to work for Microsoft.
Do you think the desire to program computers has declined in the younger generations? If so, what reasons might you cite as the cause?
When I was in elementary school we had this GREAT program called 'LAMP' (logic, art, mathematics, programming) where they took the smart kids out of class every once and a while and had us do extracurriculars in the above-mentioned subjects. The 'programming' aspect consisted of nothing but logo and some linear BASIC on TRS80s, but it at least got me interested in futzing with my Commodore 64 to the point where I could make rudimentary text programs and dream of mastering the 'poke' command.
Without an easy-to-learn language like BASIC where do you begin to teach the fundamentals of programming? The syntax, class structure, includes, etc of modern object-oriented programming languages are a huge barrier to picking up the basics. Would you start a third or fourth grader out on Java? C++? I certainly wouldn't be able to handle that - I had a difficult enough time making my LOGO turtle move around. Perhaps the best solution would be some sort of drag-and-drop IDE, like visual basic for 6 year olds, where children could understand the concepts of programming without being overwhelmed by the syntax all at once. Anyone know of one? I seem to remember something similar using java beans demoed by Sun while I was in college . . .
Frankly, I think the real problem lies in the fact that the standard OS nowadays (Windows) does not come with a readily accessible programming language. Back in the good ol' days, there was GW-BASIC and (later) Q-Basic. Qbasic even came with some games (remember gorilla?), that you could look at and see how things are done. All that made for a low technical barrier to entry (but not for good programming style). Now, unless you've got an inclination for programming, there's no way you can get started easily.
There are 10 kinds of people in the world - those that know binary, and those that don't.
My nephew used to brag to me about how he was some l337 haxor with mad skills.
He was hanging out on various web sites with all of the other cool script kiddies. In his mind, getting stuff from the web without knowing what it was; or designing web pages with a WYSYWIG HTML editor; or using a level-editor to make a new map -- all of that WAS cool. He just couldn't grasp that he wasn't doing anything difficult, and certainly not worthy of his haxor belief about himself. In reality, he was running other people's programs and using interfaces to do stuff.
Kids today either don't fully understand what it is they're doing, or think something utterly trivial is l337.
They can accomplish a whole lot of 'meaningful' tasks with the software which is readily available for free. They don't *need* to try and cobble together little wee programs to achieve minor tasks. Back in the day, we were happy to achieve tasks which are, nowadays, stinkin' trivial. Because the computer didn't do much unless we made it so.
Kids nowadays don't find themselves confronted with the need to program -- they're not staring at a blinking cursor trying to figure out what to do. They go onto teh intarweb and download it. They're not trying desperately trying to figure out how to write something to make the creation/management of D&D characters (or, whatever). They're downloading free (or pirated) software which already accomplishes what they need to do.
People aren't programming out of necessity anymore, they're running software on the magic box which has always been there. They don't need to think about how software gets made in the first place. The generation before them have filled in most of the gaps for them.
Lost at C:>. Found at C.
For three years, I taught myself through online tutorials here and there. Freshman year of high school I did a lot of programming, because I wanted to show my stuff off the the computer programming teacher (the class is only offered to sophmores and higher). Last year, once I was in the class I discovered how terrible high school is. In a one semester class, the other students only had a rudimentary knowledge of functions and no idea what OOP was. Basically it was a study hall for me, though I did write a tic-tac-toe game in C using SDL to show I did something.
I'd have to say that my knowledge of C++ is pretty rough. I may know syntax, but I sure as hell don't know how to use it for anything complicated. That said, sophmore year, I competed in the National FBLA competition for C++ programming and got 6th! This absolutely surprised me. Surely there must be more people who know C++ than this?
I'm disappointed in the US, in my teachers, and the school board. I've tried as hard as I could to learn in high school, but I end up being a slacker. Even classes at the local technical college (I've taken C# so far) have been a disappointment.
In general, students aren't encouraged to do programming at all. Math books have logic cicuits, boolean logic, and tons of example BASIC programs, but teachers skip over them. Educators need to educate, not push kids through school.
I'm actually amazed at what kids are doing with computers today and at such a young age.
Kids are instant messaging and emailing their friends, creating articles on MySpace, creating nifty Flash movies, modding their favorite fps game and distributing their effort over the Internet for 1000s of others to enjoy. They are actually using computers for a purpose rather than as quirky, nerdy obsession
This is WAY more productive and creative than what my friends and I were doing with our computers in the 80s. Kids are not only creating (and hopefully learning along the way) but they are connecting with LOTS of other people in the process!
Perhaps us oldbies view the seemingly lack of interest in actually programming a computer as a problem because we come from a background where the computer was more about what it could potentially do for us rather than what it could actually do at the time. Programming was a necessity to fill that gap, often in relative seclusion and obscurity.
I'm sure our dads say the same thing about us young whipper-snappers not knowing the first thing about the cars we drive and nod knowingly to each other about what a tragedy that is.
Runesabre
Enspira Online
Perhaps you need the education to understand what "anecdotal" means in this context.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
Now, enter open source software. Guided by the right people and articles, anyone can learn to program. Guidance is the key word here. Most kids aren't going to go off and buy textbooks just to learn how to Do Cool Stuff.
A lot of programming is a mystery and there needs to be better education earlier in schools about what programming is. Programming is just like Math or Chemistry these days- it is required for many B.S. majors and can turn out to be hell if someone did not know what they were doing. In order to prepare kids for college, programming in a language like JavaScript would be a good starting tool. There is no barrier to learning JavaScript- the compiler exists in (almost) every web browser, which students should have access to.
Some of the problem is that few people how to teach at the High School level very well. VB is not a good language to learn on, and it causes awful headaches for students who later decide to learn Java and C. VB, though, seems to be what is taught, even though most students do not have access to a VB compiler at home. Learning in school is not enough- it is homework that is also important. I advocate teaching kdis HTML and JavaScript so they can make a cool web site with image rollovers, calculators, and other various algorithms.
Not only does this introduce the concept of programming, but it also gives students a great tool for publishing resumés and marketing themselves as an intelligent young people who have something going for them.
A nice web page can do a lot, even if it is just a little.
Yes, HTML is a programming language.
I know this is heresy, but bear with me for a moment. No, HTML isn't Turing-complete, and anyone who's done any kind of dynamic content work with Javascript, PHP, etc. is well aware of HTML's limitations. Nonetheless, writing a web page in plain HTML is much, much closer to "real" programming than it is to the way most people interact with computers.
Most people do something on a computer that gets an immediate response. Hit a key in a word processor, see the letter you typed appear on screen. Click a mouse button in a game, shoot the bad guy. Type a URL into a browser, get a page.
OTOH, writing a page in HTML (using a text editor, I mean) even a page that just says "Hello, world" on a colored background, requires understanding the concept of code. Instead of action-and-response, you have text that makes the computer do something that does not follow immediately from the text at the time you enter it. This may seem trivial to techies, but it's an enormous conceptual leap for most users -- and once they've made that leap, programming as a concept is no longer nearly so mysterious.
This is the way it worked for me, as an adult. I was the kind of user whom non-techies think of as "computer-literate," which meant I could use all kinds of different programs and do some low-level troubleshooting, but I simply had no understanding of what programming was, and in fact had a kind of mental block against it dating from when my Dad tried to teach me C when I was a teenager in the 80's. It wasn't that I couldn't learn it, but I had convinced myself that I couldn't learn it, and that amounted to the same thing.
In the 90's, I decided that I really wanted to at least learn how to make a decent web page, so I started doing "view source" on every page I liked, and got reasonably competent at reusing other people's HTML. Next I started writing my own. Then I realized that a lot of the stuff I wanted to do would be a lot easier if I learned this Javascript thing people were talking about, and, well, off I went. By the time I found my way back to C (and C++, and PHP, and Java, and Perl, and MATLAB, and Python, and R, in roughly that order) I realized this programming stuff wasn't so mysterious and scary after all.
During my academic CS career, I saw a lot of people go this same route. Don't sell HTML short.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
But what if you want to be this person or this person or this person? These people did very wonderful things, but those wonderful things require that they have the education to do them.
My advice to smart people; don't drop out. It is possible to do wonderful things without a degree, but a degree will open much more doors, which makes doing those wonderful things much easier than without a degree.
So if I write something in Perl it is a script ?
When I write the same functionality in Common Lisp and run it using clisp, it is a script ?
When I compile it with CMUCL or SBCL, then it suddenly becomes a program ?
I hate this bloody artificial division between 'programs' and 'scripts'. They are all a way of automating things, be it for embedded applications or data processing, and I use Perl daily for data processing, from starting up external applications, gathering data, process results, store and retrieve data from a database and generate reports.
Just so you know, computer science has almost nothing to do with programming. You'll write some code to explore compsci concepts, sure, but no respectable college will make that the focus of your degree. I mention this because there were a lot of surprised freshmen at my school, and I'd like to help you not be one of them.
I have experience in HTML, C, C++, and Java. I have not mastered any yet, but still working on it.
Apprentice: "I still have so much to learn..."
Intermediate: "I know this language inside and out!"
Expert: "I still have so much to learn..."
If you think you've mastered a language, you haven't. Don't let yourself forget that.
Dewey, what part of this looks like authorities should be involved?