Do Kids Still Program? 1104
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?
Define Program (Score:3, Insightful)
Who could teach it? (Score:5, Insightful)
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 (Score:5, Insightful)
I Blame George W. Bush (Score:1, Insightful)
Ah, I await my +5 Insightful mods.
No more GWBASIC (Score:5, Insightful)
I'll take a stab at this ... (Score:5, Insightful)
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.
As a kid... (Score:5, Insightful)
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.
Advice to smart people (Score:2, Insightful)
You don't [usfirst.org] need [woz.org] a [microsoft.com] degree [wikipedia.org] to do incredible [wikipedia.org] things.
Excessive schooling and socialization could be holding you back, at worst permanently infecting [reciprocality.org] you with an inability to create and lead. A mind is a terrible thing to lose!
Re:yes, they do! (Score:5, Insightful)
The school they are in now is much different. It's a mix of Macs, Windows, and Linux with no lockdown at all. No real net connection, but the research machines in the library have them. Ironically, even though the Windows machines are fully loaded with MS Software and games all the kids are clamoring to use the aging Mac G3s and the one old G4. I find it amusing, my self.
-WS
Precisely (Score:3, Insightful)
Re:yes, they do! (Score:5, Insightful)
Yes there won't be any formal instruction. Is that a problem? Would any self respecting slashdotter posting at midnight on a friday admit that they needed to be taught programming by a teacher? How much formal teaching did you need to learn the Apple II's built in language?
Re:Advice to smart people (Score:3, Insightful)
Kids have moved beyond the computer as a tool. (Score:5, Insightful)
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.
Re:yes, they do! (Score:2, Insightful)
Computer classes in high school are a joke. My school FORCED me take comp lit, which was totally ridiculous. I learned to type (again), even though I have been typing 70wpm since 5th grade. I learned to use Word, even though I'd been using it since like 3rd grade. I learned to use Microsoft Access... because I'm really going to use that ever again (seriously, wtf? why not Powerpoint at least?). I learned how to open IE and browse the web. Stupid school can't even use Firefox.
We have "CS" classes, even a class called "Oracle Academy," but I still know more about programming than the people who have taken all of those... and I don't know all that much.
I tried to learn BASIC my freshman year and failed horribly, despite having mentorship from some seriosuly fabulous programmers. At that point, I hadn't yet learned about functions in math, and variables only existed in equations like 2x + 5 = 9.
2 years later, though, I managed to learn rudimentary C with a fair amount of ease. I'm not sure whether it was the TI-83 (very possible) that made the difference or the other classes I took during those two years: Algebra 2, precalc (trig and functions), chemistry, biology, and physics. The concepts taught in these classes-- catalysts, positive/negative body feedback loops, functions (obviously), electricity-- if you understand these, it certainly makes learning how to program easier.
Re:It's Too Hard!!! (Score:5, Insightful)
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.
Re:Who could teach it? (Score:5, Insightful)
Re:Advice to smart people (Score:2, Insightful)
Yes, the number is few, sadly.
anecdotal examples
Anecdotal? Hardly. Some of those are among the world's most influential men. We've all heard of Bill Gates, but consider Kamen, for example. He saved countless lives with his development of the heart stent and the insulin pump, but most only know him (if they know of him at all) for that funny scooter. The fact that you'd dismiss these people as anecdotal really speaks for itself.
For some people the socialization aspect of school is far more important than the academic aspect. In my career -- and it's a reasonably technical field-- I've seen time and time again the ability to socially interact well with a wide variety of people is at least as important as technical skills and raw intelligence.
Sure, for some people, probably most people.
However, I submit that there are some smart people whose true talents will never see the light of day because their crazy/creative/entrepreneurial spirit has been beaten out of them by societal pressure.
Re:Degrade of Education (Score:2, Insightful)
Anyway I went to school in a rich district. They could afford it and it made them feel special to have nerds win prizes for the school. Taxpayers don't get a great ROI on the football team either, by the way...
Re:yes, they do! (Score:5, Insightful)
Well it's not so much that gifted kids need a teacher to tell them how to program. They need a teacher to encourage them, and that is what's missing. When I was in school teachers didn't mind me spending my time in the computer lab during lunch. And they thought it was really neat what I was doing. Now days I think they just care to put all the kids in a neat rows of seats and bore them to death with lectures.
Re:Who could teach it? (Score:2, Insightful)
Can't even be spanked? OMG, the horrors! I don't know what I'd do if I weren't allowed to hit people at work!
Re:Advice to smart people (Score:5, Insightful)
Re:Define Program (Score:5, Insightful)
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.
Re:Degrade of Education (Score:2, Insightful)
>... Gifted students are being dragged down to the level of everyone else
>... normal classes are slowed down to accomodate for slower learners
Oh, stop it, now I'm getting all nostalgic! Yep, sounds like everything's EXACTLY THE SAME.
*sniff* *sniff*
Re:It's Too Hard!!! (Score:3, Insightful)
Every minute a student spends with Visual Studio 2005 Express Edition is one less minute spent learning how to program, and one more minute spent learning how to use Visual Studio 2005 Express Edition. Microsoft IDEs are enormously complex tools. They're quite useful in the hands of professionals who know how to use them, but they're an impediment to actually learning how to program. Students need to learn how the nuts and bolts of programming work before they start using a Microsoft IDE, which attempts to write code for them.
The Kids Programming Language might be nice, but I can't see how it would be better than Python. Python is free and available for Mac, Linux, and Windows. There are great beginner books available for it, like Python Programming for the Absolute Beginner [amazon.com]. Best of all, Python eliminates layer upon layer of abstraction that's in any IDE so that the student learns the logic that is programming.
Kids should learn how to program. Understandably though MS would rather have kids learn how to use Microsoft interfaces, the same way kids learn MS Word. Microsoft Visual Studio 2005 Express Edition is not about teaching kids to program; it's about giving them crippleware to hook them on the MS way.
Re:Programming (Score:3, Insightful)
"Scripting" is making funky text documents that need another program to do something. PHP, HTML, and Perl are technically scripting.
But a JIT compiler is "another program." For that matter, so is an operating system.
The distinction between "programming languages" and "scripting languages" is becoming sillier every day, as erstwhile scripting languages become increasingly powerful tools for developing big, powerful apps. Unless you're writing rather specialized drivers that only talk to the bare metal, you're not really doing anything that's more "real programming" in Java, or even C, than you are in Perl or PHP.
Why kids are no longer code monkeys... (Score:2, Insightful)
I started early... (Score:2, Insightful)
Re:It's Too Hard!!! (Score:5, Insightful)
Programming still important for many (Score:2, Insightful)
Some codes I've had to write/design are specialized CFD simulations, finite element solutions, burn rate simulations, data retrieval, storage, and control onboard a rocket, etc...(all in FORTRAN). Working on these, most of my peers are lost with regard to proper programming, because its not taught. It seems to me that most technical fields, no matter how removed from normal CS areas, still require this kind of programming.
Granted, its not OO or scripting or dealing with crazy data structures and compiling your kernel from source, but basic structural programming still seems vital to many fields, where specific problems required specialized solutions for which there would never be any GUI-ified programs.
Re:It's Too Hard!!! (Score:3, Insightful)
If you haven't tried it lately, writing a trivial program in Windows is practically impossible. Just try to write a program that draws on the screen or plays music (two things that you learned immediately on the C64).
Re:yes, they do! (Score:5, Insightful)
There is a certain rightness about Lisp same as with *nix. No other language I'm aware of even comes close in the ability to expand programmers minds. It's like comparing budwieser to scotch or absynthe.
Smalltalk is another 'right' language. Pick up the original manuals for Smalltalk/80 and the sense of rigour and completeness is abundant, no silly syntax add ons.
Likewise C. I defy any programmer to pick up Kernighan & Ritchie and not be impressed by the sheer brevity of the language.
Now pickup Stroustrup, or a Java book or Perl or Python. What hits you is the cacaphony of discord, the single pure note lost amongst the poor orchestration.
When C++/Java/Perl/Python have long since been consigned to the garbage colletor in the sky Lisp/Smalltalk/C will still be used to solve problems. I rather think the current period of programming will be seen as the dark ages before the re-birth.
Re:Yep, they are. (Score:1, Insightful)
Seriously, good for you, going all the way with your Math and nice job with the advanced Math classes in High School.
Honestly, I am not really sure how 7 standard HS classes take up 7 hours of each day; I can see the Math classes (given certain professors) taking a few hours on every other day, but 7 hours a day seems to me like you're over expending yourself for HS, especially since you're already accepted into College. I've heard of busy work, but whatever you are doing must be going well beyond that.
Anyway, only you know how serious you are with programming and I have no idea what kind of time school is taking from you (or why), but I still think your post comes off as odd, to say the least. Hopefully you are not doubling up on those math courses in the same semester.
Good luck in Ivy League.
Man, I used a lot of -ly endings.
Re:yes, they do! (Score:5, Insightful)
Are you dumm??? :) You don't talk to girls about encoding!! Seriously ... watch some more TV and a bit less PC's :)
Jokes aside, I don't think that the whole world needs to know how PC's are working. I don't think that the majority of people need to know that. As long as you know how to operate a word processor and a spreadsheat program, maybe some software to create presentations (notice how I am using generic terms).... I think you can be considered computer literate. To be able to program in C++ in notepad and compile it using a command line interface, I THINK goes beyond the purpose of computer literacy. I don't think that locked down computers are a bad thing. In fact from what you've been saying (software loading off pen drives, accessing external proxies...) I don't think you computers at school are actually locked down enough. Keep in mind that computers at school are not you computers at home. It's there for public use and has to cater for mostly kids. I don't think that schools should make it a priority on their schedule to allow 12-13 year olds change their desktop picture, color of the taskbar and access porn!
Re:yes, they do! (Score:4, Insightful)
Smart Kids & Misguided Educators (Score:2, Insightful)
Gifted students are dragged down to lower levels for two major (and horrific) reasons.
1) The general view in the eyes of "educators*" is that group work is A Good Thing. By putting smart kids with not so smart kids, educators think that this helps out the slower kids academically, while lets the smarter kids benefit from the "social interaction with those not as quick". They might also throw in some jargon about how letting smarter students work with slower students, they get to re-enforce what they've learned by teaching it to someone else.
What happens in practice is much more shady. Educators use groups to help divy out the workload of the class. By enlisting the (un)voluntary aid of these students, they can focus more of their attention on someone else or rather, less on everyone.
2) In a similar vein, educators seem to have a wretched philosophy of "the smart kids will get it anyway" along with "we should focus our attention on the slowest students, not the fastest" which equals bright students trudging along, waiting for everyone else. What this means is that bright students are almost never challenged and quite usually left to "get it" on their own.
How many slashdotters spent time sitting in a class, where the teacher knew you were more capable than the rest of the class, having seen you master a concept quickly, then just made you wait, doing nothing, while she brought the rest of the class up to speed? I think this is probably the primary reason we see so many very bright students (and adults) who are incredibly listless, unfocused, and fail to achieve later in life.
The other thing I'd like to mention is that NCLB is not the exact cause of this problem. NCLB deals with accountability through standardized testing. That means that if schools can't get a certain percentage of their students to pass fairly basic skills tests, they are in danger of losing federal funding. Educators object to this because of other laws that have passed for mandatory inclusion. This is where special needs students are required to have time in regular classrooms. Because of this inclusion, test scores will drop slightly. (The real reason scores are so low however, is because there is very little challenging content being taught.)
Sadly, although inclusion sounds very humanitarian and swell, for a vast majority of these students, it's a very bad situation. Many special needs students operate best in very small, focused environments and with practically no benefit to being around normal children. Horror stories abound with educators being forced to run a class of 25 students plus "one" that is completely unable to participate. This inclusion disrupts the class, halts academics and really is not mostly beneficial for everyone involved.
As for programming in the schools, I think there is another reason it has changed to Word and PowerPoint. Educators seem to be the least technologically competent people I have met, but inversely, also seem to be the loudest proponents for "including technology in the classroom because it is a skill required in the 21st century".
I know this because my mother has been in education for over 30 years and believes there is a major problem with her computer when AIM starts up accidentally. She's not an unintelligent person. She just knows nothing vaguely important about technology. She has little concept of very basic functions, like being able to copy and paste information from one program to another. She can use one or two programs with some efficiency, but beyond that, it's a mystery. When she talks about having technology in the classroom, she's not talking about programming... even remotely. She's talking about Word and PowerPoint and maybe even a web page the students had to find.
On the other hand, I'm about to s
Re:It's Too Hard!!! (Score:1, Insightful)
Better advice for smart people (Score:5, Insightful)
But what if you want to be this person [wikipedia.org] or this person [wikipedia.org] or this person [wikipedia.org]? 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.
Re:yes, they do! (Score:0, Insightful)
Re:yes, they do! (Score:2, Insightful)
You're wrong on Python. It fits, it's right. It's cleaner than C, it's more effective than lisp. It is truly wonderful.
Re:yes, they do! (Score:1, Insightful)
Dismissing higher level languages like Java or Perl because they look "impure" is like dismissing mass production because it lacks artisantry. Its a fair statement, but it ignores the real advantages of the technologies in question.
Re:Programming (Score:5, Insightful)
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.
Re:yes, they do! (Score:5, Insightful)
For the most part, I was lucky, though. It is the one way I can think of that having out of date equipment was a boon. Most of my schools had machines running windows 3.1, and therefore a full copy of dos including the qbasic.exe binary. That always excited me, being able to add functionality to a machine with something I created. Then again, I'm most of the way through a computer science bachelor's degree now...
Re:yes, they do! (Score:3, Insightful)
Now I've been using Linux for 9 years or so, and getting paid well to do it.
Kids can and will learn on their own if they want to.
Re:No there's MySpace (Score:5, Insightful)
Re:yes, they do! (Score:3, Insightful)
Re:yes, they do! (Score:2, Insightful)
The focus on harder science is declining. The AOL(tm) generation have difficulties with some of the most basic tasks. They have too many distractions. High School students try to do their homework while watching TV, listening to their iPod(tm), surfing the web and playing games; while being interrupted by their cellphones ringing every 30 seconds.
Science is not the only thing in decline. Communication skills are also in a sharp and steady decline. Children are learning how to communicate through MySpace(tm) and IM(tm) where grammar, semantics, capitalization and punctuation are never used properly.
Formal instruction teches the fundamentals of programming. If students don't learn cognitive programming skills at a young age, they will be significantly disadvantaged to those that did.
Re:yes, they do! (Score:4, Insightful)
Also 'back in the days', computers were cool but couldn't do anything so to say. You had to develop software you wanted yourself. What you did with computers was program them (and play a few games). Nowadays an abundance of cool applications is already available in many flavours. Why program?
Re:yes, they do! (Score:3, Insightful)
The tools - overly complex, buried or don't exist (Score:3, Insightful)
As far as I know, Windows does not provide a free and easily accessible programming environemnt. Apple does (xcode) as well as a number of open source tools like Perl, PHP, Python, etc.
I have a Mac, so let's see what it would take for my son to start tinkering around as I did when I was his age. Let's say he wanted to start in on Python. He has to first know that he has to go find a shell, which is found in Applications->Utilities->Terminal and then type "python" to bring up the interpreter. This assumes he already knows that python is a language and is one he wants to tinker around in. This is not intuitive.
What about XCode? He has to have a basic understanding of the Unix filesystem and go back to the root directory to find a directory called "Developer". Within the developer directory are the subdirectories ADC Reference Library, Applications, Documentation, Examples, Extras, Headers, Java, Makefiles, Palettes, Private, Tools. He's bright - he chooses Applications. He is then faced with Audio, Graphics Tools, Java Tools, Performance Tools, Utilities, Interface Builder.app and xcode.app. Again, he's smart (or lucky) and doesn't go deeper and follow the subdirectories and chooses xcode.app. He's now faced with a series of screens. First being building with the options "Put build projects in project directory", "Separate location for build projects", "Put intermediate build files with build projects", "Separate location for intermediate build files". At this point, he gives up and moves on never reaching the screen asking him if he wanted to build on of 53(!) types of programs. God knows what other screens are after that.
Anyway, you get the point. A free IDE does not inspire a kid to jump in and make 10 print "my name is Colin" 20 goto 10. Python, Perl and PHP require knowledge that they exist, what they do and how to invoke them before you can even begin to write your first line of code.
It doesn't surprise me that kid don't take up programming as readily these days.
Re:Learning curve of linear vs OO? (Score:3, Insightful)
Understanding how dynamic linking works; understanding what syscalls are, which ones there are and how they operate; understanding how virtual memory is implemented at a hardware level; understanding the processor as something other than a black box -- all of these are necessary if you're going to be the dude who comes in when the high-level-only programmers have a problem they can't solve because their tools have a subtle bug or a conflict with some aspect of their environment. If you're going to be making architectural-level decisions, it also helps to know how various high-level things work -- which mechanisms different revision control systems use for representing and manipulating history; how video codecs handle seeking; and so forth. This kind of knowledge is useful so that ideas which are used in one area (say, video codecs) can be reapplied to another (say, maintaining support for fast seeking in large, mutable text buffers).
Having the versatility implicit in knowing how the low-level stuff works as well as the high-level bits makes for more variety, prestige and job security than one would otherwise have.
Lack of compilers (Score:2, Insightful)
When I was 13-14 (around 1999), I used to like to program in BASIC, I had a Macintosh Performa 6200, but no, I wasn't programming on it, although I used to spend much time on it, no, I was using my little sister's V-Tech Genius 2000.
Why? Well, the Macintosh Performa 6200 didn't come bundled with a compiler, not a damn compiler, as the V-Tech had a big BASIC button that would take me to a simple programming environnement where I just had to type 10 ? "HELLO" 20 GOTO 10 RUN to get started with programming.
Most kids don't program because they don't have a compiler on their computer, and even if they do, they don't know where it is/how to use it, and if they don't, they don't know what to get/where to get it.
Kids won't play dodgeball if they don't have a ball in the first place, and they won't buy a ball to play it not knowing what kind of ball to get and if it's even worth it. Same here.
Re:I'll take a stab at this ... (Score:3, Insightful)
I wrote another post [slashdot.org] on the topic, so I won't repeat myself.
Programming is not as accessible as it was. (Score:3, Insightful)
Kids 20 years ago switched on their machine, and after a few seconds they typed:
and the program run.
Today's kids switch on their machines, wait for Windows or Linux to boot, log in, open their IDE and write:
then hit the compile & run key.
In other words, programming was then much more fun (even in its primitive form) and much less 'serious' than it is today. Getting a few sprites to run on the screen was a few lines of code (mostly sprite data) and a few instructions to generate those sprites on the screen, whereas todays it involves a huge effort of device contexts, video card drivers, DirectX, C++/Java, pointer handling, class hierarchies, interface design etc.
Re:yes, they do! (Score:3, Insightful)
Python is one of the cleanest and easy to program in languages ever designed. It's extremely descriptive, enforces readability, and as an added bonus contains functional programming tools that let it do pretty much anything you can do with LISP. In my opinion, Python is what students should first be taught. It lets you get straight to the high level concepts without have to first go through much of the bookkeeping nonsense that lower level languages force on you.
Plus, your alternatives are terrible. You pick Smalltalk, a language that comes with the baggage of a terribly outdated set of libraries. You pick LISP, a language whose syntax makes it utterly impossible to generate easily readable code. (No, seriously. If you have a formatting scheme that makes LISP easily readable, I'd love to hear it.) You pick C, which is good for low-level programming but requires way too much bookkeeping about memory to be safe for general purpose applications.
Incidentally, unlike you apparently, I've programmed in every single language you've mentioned. I'm well aware of their strengths and weaknesses. However, anyone who thinks Python is unclean and disorganized is shooting their mouth off on a subject they've obviously never studied.
Re:There's a really good reason for that. (Score:1, Insightful)
Ahem? And I suppose they're the ones that keep saying "Hey! Enough of that there science and questioning stuff. You know it's all answered right here in this here Bible. Now stop challenging my faith."
No Programming Tools (Score:3, Insightful)
Furthermore, there were interesting things to program on early computers. It was fun to learn how to write programs to display sprites, move said sprites around the screen, and maybe play some bad music on the SID chip. There is no easy way to do this on Windows. Hell, I have no idea where to even start! It's not documented well enough for a kid to get to want to take a stab at such a thing.
HTML is bad, bad, bad for a kid to learn to program with. It's waaaay too forgiving. You can write crappy code and it will still render in browsers. That teaches kids to be sloppy.
Re:yes, they do! (Score:3, Insightful)
-WS
If you haven't mastered the language... (Score:3, Insightful)
C can be mastered.
Re:yes, they do! (Score:5, Insightful)
> intelligent people have this irrational phobia about parentheses?
> What is it about them that causes people's minds to lock up? I can
> understand complaining about other aspects of Lisp, but this?
It's quite simple, really. Each parenthesis has a slightly different function in the context of the larger program, yet you cannot tell this quickly from looking at them. I mean, look at the above joke sequence, and tell me if there are 7 or 8 parentheses at the opening left side of the sentence (by glancing, without counting). And yes, you can use a program that does parenthesis matching to avoid having mismatches, but it is about more than having the numbers balance, because an infinite number of different configurations of parentheses can have balanced numbers but different behaviors.
Control structures more like the C style have been significantly more popular because there are visual markers indicating function. { and ( are used in different contexts, as are ", ',
So it's not that people are afraid of the parentheses, it's that the parentheses are cumbersome to visually parse into meaning whenever complexity rises. In C style code, a single routine which is becoming more complex tends to simply get longer sequentially. In LISP, a single routine which is becoming more complex tends to get more depth of parentheses, and you start getting structures that look like: ))) (( in the middle. Let's take a piece of example code:
(cond
((< x 400)
(cond
((< x 100)
(prin1 'XC) (decf x 90) )
(T
(prin1 'C) (decf x 100) ) ) )
(T
(prin1 'CD) (decf x 400) ) ) )
I now take a working piece of code, change only a few parentheses, and the behavior has changed. In this case, it should crash, but there are less trivial cases where code will actually run but do something different. Either one is of course bad, since in an ideal situation, a human programmer should be able to discern the function and behavior of a program easily by visual inspection.
(cond
(< x 400)
(cond
(< x 100)
((prin1 'XC) (decf x 90) )
(T
((prin1 'C) (decf x 100) ) ) )
(T
((prin1 'CD) (decf x 400) ) ) ) )
And I'm sure any reasonably competent LISP program can look at the simple code example above and figure out what is wrong with it, but this isn't the point. The point is, the language hinders this process with its symmetry, rather than helps it. For most tasks, languages shouldn't be chosen for their reductionist beauty, but instead, for their ease of use for forming complex structures with human psychology in mind.
I hope that clears it up.
Re:yes, they do! (Score:2, Insightful)
Anyways, then I got her a domain named after her, she learned the wsywig webpage creators, then she got bored with that, and now she has been poring over html books in the computer section.
Granted, girls and guys are different. But that doesn't exclude girls liking computers. Guys might get off on some programming languages, open source stuff, keyboard short cuts for emacs, etc, but girls can be seriously aroused by pretty, well-designed webpages and small, pink laptops.
Obviously, don't force computer stuff on girls, but also don't dumb down your passions...that's the best way to repel girls.
Re:As a kid... (Score:3, Insightful)
Why are you disappointed in them if you admit to being a slacker? There is a certain level of competency that is taught in school to make you a functioning citizen so that you can file your own taxes, hold a regular job and balance a checkbook. Programs that go beyond that few and far between. Why do you expect public high schools or technical colleges to teach game programming? How many of your peers do your really think are going to code for a living? Even on a very basic level? Frankly, it surprises me that schools still teach coding at all.
Blaming the government and assorted entities because you didn't leave high school with the ability to crank out Doom 4 is very arrogant. There's a lot of countries where graduation from their public institutions (if they have them) leaves you with little options except being a farmer or bricklayer unless your family has serious cash.
And not to dig into you because I'm actually happy to see you take some control over your own destiny but if you've coded c++ on a fairly regular basis over the past, what 4-6 years(?) and feel that you only have a rough understanding maybe programming isn't for you. Otherwise if you feel that you've accomplished all you can on your limited knowledge and want to check out some of the larger projects on SourceForge. You've said you've done nothing large yourself, why is that?
Educators need to educate, not push kids through school.
Students need to learn and to be responsible. Public school is not meant to kick out astrophysicists and biochemists. It's about teaching you some basics you may use in your life. It's amazing that kids expect to be handed an education. If producing the next Einstein, Seymour Cray or Sid Meier was as easy as going to public school and doing what was handed to you we'd live in a much better society but these are expectations that we really can't hold the normal person up to.
WTF? Ponies? OMG! (Score:3, Insightful)
Please attempt to increase your vocabulary and knowledge of literary references. In that way, you can avoid using vulgar, overused expletives to express your emotion. Cuss words certainly do have an impact, and are quite "edgy," but they are used as a substitute for learning a variety of strong vocabulary. I think in the coming years, you'll probably begin to notice more and more how ignorant it often makes the speaker sound, especially coming from your so-called peers.
Anyway, I urge you to learn other ways to express your emotion, not because the "seven words" are vulgar or inappropriate, but because they indicate so many feelings at once that should really be expounded upon in prose rather than blasted in sharp unspecific staccato.
Re:Computer Classes (Score:3, Insightful)
Our school prides itself on being one of the best public schools in the state, and we have no notable programming/computer science classes. I believe our school had one when I entered in the 7th grade, as I seem to remember being excited about it, but it's since been dropped. We offer a class called "IMS", but, despite it being in the course description, I don't believe they've done any real programming.
And people still aren't any better off - I've fooled people into thinking I've hacked into the FBI with a really cheesy any-real-computer-nerd-would-die-laughing web page. On a laptop with no internet connection. You have people ask you, "You mean you want to sit in front of a computer the rest of your life?", or they'll ask you how to do something with a computer that's way out their (or my) ability - people don't understand that programming isn't just about typing code, that it's a certain way of thinking, a way of wrapping your mind around a problem and being able to describe it to a machine in such detail that it can solve it. As I exquisitely tried to put it one very late night: "People simply misunderstand the type of person a programmer isn't."
It is a shame. I browse and answer questions on programming forums during my spare time, and people post their homework questions in hopes of an answer. What I would give to be able to have homework in programming - they have no idea how lucky they are.
Everything I know, however, I taught myself. (Sort of a neat thing to say, really.) I have little in the way of peers, and no teachers or guidance - any holes in my abilities will surface later. I pronounced "integer" with a hard g until I heard someone say it. I spelled out GUI, whereas most other's I've heard pronouce it ("gooy"), and I pronounce AVI, where I've always heard people spell it out.
Though one unintended consequence of bad schooling: TI-83+s. Our school requires them, and their native ability to use TI-BASIC seems to flush out some programmers. (Though some people who have no desire to program still use it.) Those who do generally start trying to make games, or things to solve various equations. (As opposed to those who merely type them in.)
Teachers tend to trust a student(s) more than the IT department. Some years the IT department was a student. (Ah, the golden years.)
Perhaps this lack of education will cause a shortage of programmers, a spike in demand, and raised salaries for those of us who know what we're doing. Then again, perhaps all our work will be outsourced.
But today the answer is still the same. I will not fix your computer. (I mean, I'm a programmer. I break things. ^_^)
Forget programming, what about electronics? (Score:2, Insightful)
Nowdays, there are so few places in Silicon Valley to buy new components it's criminal. Nobody seems to be interested in electronics anymore. There used to be a place that was the size of a Circut City or Best Buy, but it's been out of business for at least 20 years.
It makes me wonder where the next breakthroughs are going to come from on the hardware side.
Re:yes, they do! (Score:2, Insightful)
In the computer industry I can make more money. A degree often isn't required at all because most companies use technical interview questions to weed out candidates who don't know their stuff.
The U.S. needs more teachers, period. But to compete with other industries, schools need to *lower* the master's degree education bar, compensate by making job interviews more difficult, and adjust salaries based on performance reviews. Just like the software industry.
That won't cure all the problems (like funding) but it's a start.