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!
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.
Comment removed based on user account deletion
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.
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
I've been programming since I was 6. Had a C=128 and just HAD to figure out how to program it. Not sure why, just made it my quest. Then we got a 386, and I learned C. I didn't think it was that hard then (in fact, c made a lot more sense to me than BASIC did). After that I took a class in HS in which they taught Turbo Pascal, which I thought was kinda boring until I figured out that I could use ASM statements inline... Now I program in linux.
Now let's look at the one continuity there, they were ALL Command Line environments. Sure I had Win 3.1 but I never did that much in it. And when 95 came out and I wanted to program MFC it seemed like way too much trouble for what I was trying to do. I was eventually able to come up with a patern for setting up the window and everything, but it was kinda more a pain in the ass than it was really productive. And I come to the last part... Now I program in linux. Sure you can do X-windows programming in linux (which I think is easier than MFC and Visual WhatEver++), but I've always gravitated towards simple things like kernel programming and utilities.
Back to my point, the command line based OSes were easy to learn to program with. Minimal setup for your program (heck, include and you're pretty much done.) output is exactly what you want (it's all just text anyway), it's easy to visualize, it's easy to learn, it's easy to get results quickly. Kids have short attention spans in general, so you want something that allows them to be somewhat productive quickly, so they can do a few things and see the fruit of their labor and think "Wow! That's cool! I just made that!" instead of some random windows error. That'll Hook them and they'll want to do more and learn more... sitting down to read a book to figure out the best windowing setup or if they want a DirectX window or a menu bar is kinda a pain and isn't going to grab many kids.
-=JML=-
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.
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?