Why Johnny Can't Code 686
GoCanes writes "Salon has an article named 'Why Johnny Can't Code,' an interesting examination of the dearth of line programming languages available today. At first I wanted to read this and say aha, here's a simple line oriented language that's available through open source, but after reading the article I couldn't find any. And being an old fart, I remember the days spent with edlin and basic."
Kids today...... :-) (Score:5, Interesting)
Re:Kids today...... :-) (Score:5, Interesting)
CS a branch of mathematics? (Score:5, Insightful)
It may gall college profs who are still trying to foist formal methods on people but setting a high mathematical barrier to entry on CS courses and having a high maths content is a bad thing.
As an example I have a first in Microelectronics from a British University (a course which had a large syllabus covering 'C' and machine language) but only just scraped the 'C' grade needed in mathematics as an entrance to this course despite having 'A's in Electronics and Computing. I doubt I have used any maths much beyond British 'O' level standard since and certainly the maths knowledge required as entry to a degree level CS course is too wide and deep. It is all geared up to people going onto research rather than the real world. You don't need to be an expert in set theory to write the level of SQL required by most applications.
Re: (Score:3, Insightful)
Re:CS a branch of mathematics? (Score:4, Insightful)
No, it's not true. 10 years ago most desktop software was written in C++ and Java - a hugely simplified form of it - was the next big thing. Fast forward 10 years and most desktop software is written in C++. Most new languages and tools are pretty similar to old ones. Radically different toolsets like pure functional languages have never taken off, and show no signs of doing so. The best programmers are still the ones with the most experience, not the ones who know the most pure maths.
The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.
The skills that everyday programmers need to do everyday jobs are more around understanding the tools they'll be working with - how a computer actually works, what version control is, how to architect software to be modular, what regular expressions are, how to work with debuggers etc. These are the skills that university graduates routinely lack, and routinely get nailed in job interviews by.
Bits of the math are useful - being able to work in base 2 and base 16 for instance, or having a basic understanding of time/space complexity. Unfortunately most courses focus on big O notation to a ridiculous extent, meaning that it's not uncommon to see "data structure abuse", where some extremely fancy and theoretically fast algorithm is used, but due to some awkward practical factor like poor locality or excessive memory usage ends up being slow.
Re: (Score:3, Insightful)
Not at all, the math is there to explain why things work the way they do, and why an O(n log n) routine is better than an O(n^2) one. It's also handy to be able to recognize an NP problem, before you agree to write the solution in two weeks! ;)
Seriously, I can't imagine developing software without at least a passing familiarity with discrete math. It's not that hard (I found it easier than trig, but
Re:CS a branch of mathematics? (Score:4, Insightful)
I agree that this applies to programmers.
I disagree that this applies to software engineers.
There is a big difference between the two.
The point of all the math is to make the subject sufficiently academic that it is acceptable to universities, who are scared by anything vocational.
Universities are not scared by anything vocational. However, it doesn't fit with their role in education. If you want a vocation, go to a community college or something else. They will teach you the "hot" programming language, environment, skills, etc. However, these things are fleeting. What are the hot areas today? Ruby on Rails? Security? LAMP? What was it 5 years ago? Java?
Now, if you get a solid grounding in theory and skills that apply to different areas, it doesn't matter what the hot area is. You can use your foundation and learn that area quickly. If you have a solid background in programming, including different languages, picking up a new language is easy. If you have a good grounding in networks and OSes, then picking up security is much easier. So, universities don't aim for the hot areas, they aim for giving you the skills and tools to be successful in the long run.
Re: (Score:3, Insightful)
I cannot emphasize enough the quote from the CAIP quarterly on mathematics, paraphrasing: "I tell my students to listen carefully when they decide to take their last mathematics class. They may be abl
Re:CS a branch of mathematics? (Score:5, Interesting)
I don't begrudge UT for wanted to offer an applied mathematics program in their CS department, but I didn't want that, and was basically told that if I wanted to have a life where I did cool stuff with computers, I had to learn Diff. EQ, calculus-based engineering physics, and a whole lot of theory and proofs of CS (emphasis on the _Science_) concepts that perhaps
Another concern I have with university-level CS programs is that not a whole lot of actual TEACHING goes on. Lower-level courses are "taught" in giant halls where ethereal profs tend to cater to students who already knew the material before they got to high school. It just goes downhill from there. I didn't realize how bad it was until I got to another department where they actually started with the basics, _taught_ the fundamentals, and developed students through to competency.
It's like CS departments got lazy on teaching because they have such a wealth of students who have been dicking around with this stuff since they were 5, just because it was fun.
Re: (Score:3, Interesting)
Working on embedded devices right now. Sometimes I'm doing web programming, sometimes I'm writing apps, sometimes I'm writing device driver stuff. We also have a PC app that I've worked on that communicates with the embedded devices -- a rich client. Because of my education, I'm able to move seamlessl
Re:Kids today...... :-) (Score:5, Interesting)
Re:Kids today...... :-) (Score:5, Insightful)
One of my most memorable classes was the C++ class when the teacher started off by teaching how compilers actually compile your code. Directly from this you could easy see what code to write and what not to write. Those classes have been replaced by Java, where you don't even worry about resource leaks. Hey, garbage collector takes care of it!
To make good programmers, one has to understand the basis of it. Compilers, C and Assembler. If all they learn today, well mostly OOP stuff, they won't learn the basis well. And they will end up writing bloated code left and right.
Re:Kids today...... :-) (Score:5, Insightful)
For example, lets take the author's wishlist - creating Pong. I'd wager that the game can be written in a lot more expressive manner in any higher-level language, compared to basic. Poking different screen locations arent a lot of fun; gorilla.bas gets old very soon. Kids like instant gratification(adults too!)- higher level languages are ideal for this.
Re:Kids today...... :-) (Score:5, Insightful)
Does this mean you need to know about peeks and pokes? In today's world, I no longer think so (and there's that huge collective sigh of relief from students everywhere). But you should definitely understand how your language handles memory, even if you're coding in a language with GC capabilities. It keeps you from churning memory and slowing down your app to a crawl.
Comment removed (Score:5, Interesting)
Re:Kids today...... :-) (Score:5, Insightful)
Re:Kids today...... :-) (Score:5, Interesting)
Architecting beautiful code? Nope.
Learning powerful, high-level abstractions? Nope.
Programming efficiently to the hardware.
With computers getting ever-faster and more advanced, coding efficiently is less and less important than it used to be. Efficient algorithms are still pretty important, but that's more about using matrix calculations and streamlining progam flow than about the intricacies of memory-management and choosing where on the hard disk you place your data for minimum retrieval time.
Witness the rise of interpreted languages like Perl/Ruby/PHP. Look at how semi-compiled bytecode languages like Java and the
Don't get me wrong - I first learned BASIC, then C, then C++ and a bit of assembler, and I wouldn't trade this knowledge for the world. Nevertheless, now when I write C# code which is compiled to MSIL/.NET bytecode, which is then interpreted by the
These days kids are learning how to use high-level tools first, and only learning the lower-level stuff as they get better and better. Sure this means an awful lot of nasty, bloated beginner-level PHP and VB.NET, but by the time they're ready to tackle compiler design they've generally already picked up the important bits as they go.
When we were learning code we'd write crappy code in BASIC/C, and it'd sit on our home PCs and never go anywhere. Now when a kid writes crappy PHP or VB.NET it's generally posted to a forum or used to run their website, so of course it's more visible.
We all wrote crappy code when we were learning, irrespective of the language. Certainly, I know I wrote some BASIC/C code that makes me cringe when I think of it now.
Re: (Score:3, Insightful)
Best Java practices (Score:3, Interesting)
Re: (Score:2)
I won't argue that math education is not what it could be, but I doubt it's what causes people not to program. Math and programming _are_ different disciplines, and you can have either without the other. Even if math skills help programming a bit, it certainly isn't the _first_ reason for people not starting to program.
Re:Kids today...... :-) (Score:5, Interesting)
There's a story about Abraham Lincoln when he was a cogressman. He received a questionnaire sent to new congressman in which they were supposed to give background information about themselves. When he came to the question which asked for a description of his education he filled in a single word: "deficient".
In fact, Lincoln felt the deficiency of his education so keenly he began an independent study of Euclid's Elements, with the intent of sharpening his thinking. Reportedly he mastered the material through book 6, which means everything relating to plane geometry, but not number theory or solid geometry. I'd argue that Lincoln's formidable intellectual accumen, whether it stemmed from his study of Euclid or from his native faculties, is often missed in the sentimental haze that surrounds the man.
The point of these anecdotes is this. There are certain areas of knowledge where thoughtful persons would have to label their education "deficient", any accomplishments they may have in them notwithstanding, because they are bottomless sources of utility. You just named two of them: mathematics and communication.
The need for remedial classes at the university level doesn't come from a degeneration of the educational system. It comes from a social and economic change which makes a bachelor's degree a minimal requirement for decent employment. Fifty years ago, there were two kinds of people who went to college. The socially elite, for whom a "Gentleman D" was perfectly acceptable. Arguably the societies they joined and contacts they made were the most important reasons to go. And the intellectually elite. The middle class, non intellecutally elite student got a job, often in a factory, which maintained him in the middle class and did not require a degree.
The growing need to have a university degree in the last half of the twentieth century led to the perennial concern of declining college board admission test scores, from which it was concluded that primary and secondary education was deteriorating. However, it's important to remmeber that average scores are average scores of a population sample, and if the population being sampled changes, you can't compare the scores. Adjusted for demographic changes, there was no decline in scores. There literally couldn't be, because of the little known fact that the tests and scoring scales are continually recalibrated by the testing agencies to ensure that students in any given segment of the academic population score the same from year to year.
However, we have been the beneficiary, first of the Sputnik scare, then the SAT scare. For most students, education is actually much more rigorous today than it was fifty years ago. I went to elementary school almost forty years ago. My school was unusual in putting a great deal more emphasis in critical thinking and reading skills. My children go to an elementary school where the reading curriculum is much more challenging, and the math curriculum requires that students be able to reason mathematically and recognize situations where various mathematical techniques need to be used -- a huge improvement over the education of my era, which graduated countless students who could regugitate the quadratic equation forumula but had no idea when it might be useful.
mathematics killed hobbyist programming. (Score:3, Insightful)
Pleeeeeaaase... that's still the mantra I was hearing when I was 13 and happily beginning to code (in 1985). Why would 'we' be prevented from the right to code if 'we', litterature oriented people, despise mathematics ? There is still SO much to do with only 4 operations ! Granted, I won't dwelve into image processing, signal analysis or those fields where a strong math backg
Python, Javascript. Less common: Logo, Squeek... (Score:3, Insightful)
For example, Python is a very good language for teaching the basics of programming, and it's really simple to learn. Javascript also works.
The old BASIC that he probably remembers (e.g., what ran on Apple IIs, etc.) was actually pretty nasty; functions didn't have parameters, loops were primitive, you couldn't create your own datatypes. You had to UNLEARN a lot of stuff. Yes, modern BASICs are better, b
What happens when complexity gets out of control (Score:4, Interesting)
Programs used to be simpler and written by *ONE PERSON* - you could read and learn from someone else's code. Nowadays, most programmers are just a cog in a wheel using an IDE to implement one function in one library, and they rarely grasp the code in it's entirety
Cars used to be simple, mechanical entities where the underlying workings hadn't changed much in decades. Nowadays, cars are so chock full of electronics and there's hardly anything improvable by a single person these days
Electronics used to be "simple" - circuit boards were single layer and traces could be easily seen with the naked eye. ICs were standard parts you could by at Radio Shack. Parts could be hand soldered, removed, and replaced. Nowadays, parts are all custom, miniaturized, with 5-layer circuit boards, and they're just too complex for any one person to fully understand.
Phones and radios were originally very basic and simple and easy to understand / fix. Nowadays, we satellite radio and cellular phones that VERY FEW people understand enough about to actually work on.
People used to know how to do everything that it took to run a farm. Managing livestock, crops, construction, markets etc. Nowadays, people just vegetate in their condo, drive to work, sit in front of a computer, and drive home. They don't need to know how to SURVIVE.
I've said this before... if there were a catastrophic event that destroyed most of society, very few people would have enough knowledge to rebuild what we currently have.
Therefore, I believe that we as a society are getting dumber because we need to know less, and because modern medicine can keep nearly anyone alive long enough to reproduce, I'd say that evolution of the human species has stopped and that as a species, we're getting weaker.
Re:What happens when complexity gets out of contro (Score:3, Insightful)
if there were a catastrophic event that destroyed most of society, very few people would have enough knowledge to rebuild what we currently have.
True and unavoidable. Unless we go back to the caves, so "rebuilding" would be easier.
Therefore, I believe that we as a society are getting dumber because we need to know les
Re: (Score:3, Insightful)
Not just kids - article writers too.
"Dearth of line programming languages" my arse. Last I looked, almost every programming language is composed of lines of source code that you can write in a plain ascii editor. What the author is complaining about (without understanding it) is CODING IDEs replacing typing in your complete file as plain source code.
c, c++, java, perl, python, php, pascal, javascript, whatever - you can write all your source the old way - line-by-line, and most of us do. Heck, even Delp
Re:Kids today...... :-) (Score:5, Insightful)
Re:Kids today...... :-) (Score:5, Insightful)
Before they did anything else they were writing programs. Simple ones that started the game. Next they were playing with loops:
And er,
That's not like any BASIC program *I* ever wrote! (Score:5, Funny)
Amateur.
Re: (Score:3, Funny)
10 FOR X=0 TO 15
20 POKE 646,X
30 PRINT "BIG TITS"
40 NEXT X
50 GOTO 10
*NOW* you have a good program.
Re: (Score:3, Funny)
Don't forget "Insightful" (Score:3, Insightful)
Parent is dead on in so many ways. Programming is all process (teh P in CPU). Our societal demand for convenience and instant gratification has many victims, but one of the saddest is the general level of intuitiveness among kids & teenagers. Accomplishing something requires steps (an algorithm, if you will). If you generally have accomplished everything by pushing a single button, your ability to analyze a problem -- viz., break it down into steps -- languishes.
Later in life (in the unlikely event you
Re:Don't forget "Insightful" (Score:5, Insightful)
What kids are after is fun. I did a ton of programming when I was a kid, and I never seriously considered doing it for a living until after I graduated from college. It was just fun.
What's missing is that programming languages used to be built into the computer. For me, BASIC was there when I booted up the computer. Documentation aimed at complete beginners like me was the norm. It would have been hard *not* to program.
These days the easiest way to start out would be with Python. It seems simple to us, but...
1 - know it exists
2 - know how to download the right version for your computer (not a mac or linux version)
3 - find the installer and know to run it (and know that it's safe)
4 - figure out how to invoke the installed program (ok, that one's easy)
5 - find documentation written for beginning programmers
6 - figure out why python won't run the programs you saved as
Can you imagine an eight-year-old Windows user with clueless parents doing all that by himself?
I didn't have to download anything or know anything about operating systems. I don't remember having to sort through tons of titles like "Advanced BASIC Beowulf Architectures in 2 Minutes for J2EE Certified Hardware Astroengineers" at the bookstore to find one that was right for me. In fact, I'm pretty sure the book I used came in the same box as the computer. Plus, all the computer magazines had program listings in the back that you could type in.
Microsoft would earn big brownie points with parents if they included an extremely simple IronPython-based (or even Logo-based) "Learn To Program" IDE with every copy of Windows. Twenty years ago, people knew how to write documentation for beginners. (Not children or computerphobes. Not people with congenital learning disabilities. Just beginners, of all kinds and ages.) I'm sure it could be done again.
Re: (Score:3, Interesting)
while(true) WScript.echo("Big Tits");
Which is technically one line of code, even though it contains five different fundamentals of the language (looping, boolean values, Object indirection, function calls, string values).
If the question is "Why are there no line languages", then the question is fallacious. They're all line languages. Some of them have non-line editors, but they're all line languages.
I like CScript for this purpose for a couple of reasons:
Perl objects (Score:3, Insightful)
Perl seems to fit the bill, since it can be as simple as you want and doesn't even have the type issues Basic has.
Object oriented perl is a wonderful was to learn objects. Wait don't scream. I said "learn". I'd been object oriented programming for years in Java and other languages. But I truly did not understand how all the pieces worked till I wrote perl objects. In perl it's like one of those "visible man" models. You learn how inheritance works. You learn how
Re: (Score:3, Insightful)
-- prof.dr.Edsger W.Dijkstra
IMHO Dijkstra is right and you are wrong. BASIC is a horrible language for learning to code and it is the wrong language to learn to code. It is not designed as a learning language. It takes the worst out of FORTRAN and mutilates it even further.
There are languages that are designed for that
Re:Kids today...... :-) (Score:5, Insightful)
I think the best candidate for a BASIC replacement was HyperCard, but alas, that too is a dead project. It was cool, and its scripting language - HyperTalk - was revolutionary in that it was geared to resemble "natural English". Sure, it was limited in many ways, but the original Myst was made with HyperCard, and those of us that fiddled with it were ready when the Web hit prime time, already armed with the concepts of event-oriented design. HyperTalk scripts were easy to read, so easy that commenting became scarcer.
I can't find a worthy successor to HyperCard, though. IMHO Apple should release it under some open source agreement, so that it can be ported
What about Squeak? (Score:3, Interesting)
Re: (Score:3, Interesting)
Maybe I'm just weird, but the point is that using BASIC as a kid doesn't necessarily destroy your brain.
Re: (Score:3, Interesting)
It is practically impossible to "TEACH" good programming to a student that teaches themselves basic.
Basic is not that bad for learning programing. It is terrible for teaching programing.
When I was in school back in the days when dirt was a new idea and the SuperPet was the best computer for computer teaching programing. Hey it had an interpreted FORTRAN, Pascal, APL, and I think COBOL. I learned Pascal first followed by Basic, I know some very good programmers
Re: (Score:3, Funny)
Re: (Score:3, Insightful)
You could have said exactly that 24 years ago when I got my first computer (a 16K ZX Spectrum). All most people did with those things was play games; the close
Re: (Score:3, Insightful)
While I'm at a loss to explain Brin's obsession with BASIC, I think that you and Brin are saying the same thing. There isn't much exposure to the inner workings of the computer by default. If you have Linux, the kid might have a chance, but what comes with Windows by default? cmd.exe? Yech. More important, even on Linux, there is no need to touch the command line in order to do all the fun, eye-popping things that
Re: (Score:3, Insightful)
IMHO Dijkstra is right and you are wrong.
Hmm, i started on a Timex Sinclair 1000. Ithought for a while i was cool, i had the best alpha geek story around me. Then I moved a couple rows over, and of th3 7 other guys around me, 3 other guys had also started with Timex Sinclair 1000s. Not only
Re:Kids today...... :-) (Score:4, Insightful)
I look at it like this: being a programmer is to computer literacy what being an expert mechanic is to the ability to drive a car. We don't need a society where everybody knows how to write software, just like we don't need a society where everybody knows how to rebuild a carburator.
Of course, I think it sucks that Windows doesn't ship with a C++ compiler (or whatever, language is not the issue). The anyone willing to do a little tinkering can have the tools they need to write some code quickly, and for free, on the internet. They just need a little encouragement and mentoring.
Johnny can't play chess. Johnny can't appreciate Fellini films. Whatever. If Johnny's not into those things, then he can pursue something else. The whole "Johnny Can't Code" thing is just nonsense. So what? As long as a kid learns to effectively use a computer, which in todays society means being able to navigate an OS, use a word processor, and run a browser and email client, they're going to be fine. For those of us who enjoy it, there are great and promising careers out there, but don't try to push it off onto everybody else.
Re: (Score:3, Informative)
Yes, I think he overstated the case against BASIC (although I believe BASIC was much worse when he wrote that than by the time Commodore came along), but he's probably one of the top ten or so computer science figures of all time, along with John Bachus, John McCarthy, Tony Hoare, John Von Neuman, Alan Turing and a few others.
Re: (Score:3, Insightful)
I know who he is. But if some guy tells me that the sky is normally a lovely shade of salmon, I don't care if he has a list of credits a mile long. When he says that, he's being
Re:Kids today...... :-) (Score:4, Insightful)
python
Python 2.4.3 (#2, Apr 27 2006, 14:43:58)
[GCC 4.0.3 (Ubuntu 4.0.3-1ubuntu5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Hello, World"
Hello, World
>>> 4 + 4
8
>>> while True:
sex
sex
sex
sex
sex
[and so on]
Then, when this gets frustrating, teach the rugrat how to save the program in a file, and run it that way.
I've been reading over the many, many letters that this article generated at Salon, and I'm blown away by the sheer number of people who claim that BASIC programs are somehow interacting with the computer on a lower level than C++, that BASIC somehow underpins the whole object-oriented system. Can someone explain what they're talking about?
Re: (Score:3, Insightful)
What do you think a procedure call is, if not a Gosub? What do you think an if statement is, if not a JNE or JEQ?
Re: (Score:3, Informative)
None of those are line-oriented programming languages. They are block-oriented and some of them are object-oriented programming languages. A l
passworded article (Score:4, Insightful)
Re:passworded article (Score:5, Funny)
Re: (Score:2, Informative)
Re:passworded article (Score:5, Informative)
Desktop Applets (Score:5, Interesting)
It is worth noting that Microsoft ships Visual Basic for Applications
with most of their software (at least they did when last I checked), and
OS X and many Linux distros ship Python.
Having said that, I agree that the world has changed and getting started
with programming isn't as natural as it used to be. Part of the reason
for that is that our expectations have changed, but languages haven't
really caught up. Nowadays, we expect programs to present us with fancy
GUI widgets. If all a program does is print some text to the terminal
and read some input from it, we don't feel we've written a real program.
However, in the majority of programming language, creating these fancy
GUI widgets is much more difficult than doing terminal I/O. Thus, either
the rewards are less, or the barrier to entry is higher.
On the other hand, there is HTML, which makes it very easy to create
user interfaces, but the user interfaces are somewhat limited and adding
in program logic can be very tedious.
Fortunately, software vendors are not sitting still. Konfabulator, Apple
Dashboard, gDesklets, Oprera Widgets, KDE's Dashboard, and Mozilla's XUL
(which is supported natively in Mozilla browsers, in Opera and MSIE
through plugins, while native support is being added to Konqueror and
Safari) are all ways to make it easy to create visually appealing
programs and add functionality to them. They are all based around the
concept of creating the user interface in XML, then using a scripting
language to implement the behavior. Indeed, this makes creating GUI
software easy enough that beginning computer users can do it.
I think these widgets are the future, especially once they will be
treated like full applications that live on the same desktop (last time
I checked, Apple Dashboard actually was a separate desktop from the one
that contains the "real" programs).
Re:Desktop Applets (Score:5, Insightful)
Back in the day we'd write BASIC, then graduate to C/C++ for the "proper" coding.
These days kids learn HTML, then Javascript to make the HTML do interesting things. Then they pick up PHP or Java (or VB if they're unlucky) and from there Perl, Ruby, Python, whatever.
The most popular "beginners" language is always the most powerful one with the lowest barrier to entry. Anything that you can pick up quickly and do cool stuff with provides the essential satisfaction feedback that keeps you progressing and getting better.
HTML provides the "oooh, pretties" before you even learn do any actual programming, and Javascript introduces you to loops/conditionals and even OOP if you want. PHP/VB then add in database integration and stricter efficiency requirements (not to mention often the added complication of stateless programming), and by the time you can program competently in them you're well on the way to becoming a full-fledged Developer.
I have a great hope for dashboard widgets - it's exactly the kind of low-barrier-to-entry, high-return-on-time-invested platform that makes it interesting to learners, and because it's Javascript it's even starting them off on the kind of language that's the most useful to learn[1].
[1] Not to knock VB, but if you learn BASIC or VB you can basically program in... BASIC or VB. Learn Javascript and you've got a leg-up on the syntax of C, C++, Java, Perl, PHP, Ruby, etc, etc, etc, etc, etc.
Absolute nonsense (Score:5, Informative)
apt-get install \
bash \
python \
gambas2 \
kturtle \
fp-compiler fp-units-base \
php5-cli
The reason children don't code (if that is even true, as it's a completely unsubstantiated assertion) is because they don't want to.
I started programming when I was ten, and I did it by hand-converting Z80 assembly language to machine code and then used BASIC poke commands to write them into memory. I had to work hard to scrape a C compiler from somewhere and that was heaven.
Today it is a million times easier to write a program if you wanted to. Blame ease-of-use culture; blame video games; blame stupid parents; but blaming the lack of access to programming languages is ridiculous to say the least.
Re: (Score:2, Interesting)
Re: (Score:2)
Exactly.
Yesteryear, it was possible to write a simple GOTO loop in QBASIC and coax some perceived functionality out of the box. Now, computer games and software in general is so advanced that kids can't correlate a simple repeating "HELLO WORLD!" loop into anything that they might enjoy.
What we need is a simple line-oriented language with some advanced graphics capabilities.
Re:Absolute nonsense (Score:5, Insightful)
Nowdays cool is Half-Life 2 type graphics. And I suppose the nearest to drawing a few boxes on the screen is coding DirectX/OpenGL shaders to do cool things on a few objects. The learning curve is still as steep, but think of all the stuff you need to know before getting something interesting done - it's a much longer way from bottom to top and you consequently need more determination to get there.
I think you'll now find many of the kids who would have previously cut code now working on mods for games. Maybe that will sprout creativity in a way that the article suggests, but it is difficult to see what.
3D Engines Game editors (Score:4, Interesting)
The editor presented the world as a 3D solid and you would cut away "rooms" and then apply textures. You could easily make an in-door or outdoor scene complete with sky, water, light sources, etc.
You could put together simple shapes to create complex objects, then script them easily to move around or even react to the player character in the game.
To really get complex reactions from the environment, or to get the lighting/shadows right required some understanding of basic math/trig, but even that is not that hard and the tutorials pointed you in the right direction.
This is about as close to the "wow factor" that I got from doing simple shapes on a TRS-80 back in the old days. Coding up your own version of Bezerk was awesome. Creating your own worlds and getting to explore them was almost as thrilling.
Re:3D Engines Game editors (Score:4, Interesting)
I just knocked off the code to import a 3d model of Downtown Berkley and display an interactive stereoscopic model with texture mapping in 267 lines of Python using only the enthought python distribution and the PyXML module. If I wanted to add joystick support that would be 10 more lines and the PyGame module. All the tools are free as in beer and speech. The only development tools I used were a text editor and the interactive command line.
A few months ago I knocked off a few hundred lines of Python code which logged gps, and processed the logs to provide KML files which came up in google earth with commented 3d paths of the GPS positions. Once again using FOSS with a command line and a text editor.
Insanely cool code is much simpler these days with high level Python bindings to just about everything.
As for physics, while there is a lot of very expensive cool stuff (CERN etc.) a lot of very cool physics is going on with dirt cheap tools. Lasers, microprocessor controls, high end optics, computers that make a Cray I look like a calculator etc. are available for next to nothing, allowing the Mac Guyver's of physics to do astounding things in their garage.
Re:Absolute nonsense (Score:4, Interesting)
The same is true of electronics. In my college days (mid-80s) it was cool to wire up a circuit to make and LED blink, or a flash bulb fire. If you were really into it you could scrounge a HeNe laser tube and build yourself something really cool. These days, all that stuff is available for cheap. Blinking LEDs are literally given away free with breakfast cereal. Laser pointers are less than $10 and come with a variety of lenses to make images on the wall. The cool stuff is no longer easy, and the easy stuff is no longer cool.
I think it's just a sign of the technology maturing. The technology for its own sake is no longer interesting. Both programming and electronics are just means to an end. Now the cool stuff is making that technology do something. Yeah, there's a higher barrier to entry, but it's not insurmountable. Back then you had to program a game from scratch; now you can take an existing game and mod it. Back then getting a motor to turn was neat; now, you can build robots without worrying about the piddly stuff. I think there's still plenty of room for exploration and creativity, but it won't be the same as when my generation were kids. My kids' generation will take the basics that we laid down and build upon them, making whole new cool things. No, it's not the same as it was. It's better.
Re: (Score:3, Insightful)
the barrier to do something cool is in the stratosphere
I was thinking that, myself, but I'm actually convinced otherwise. The barrier is quite high, if by "something cool" you mean games and graphics.
However, there's still an obscenely huge amount of useful, interesting things which can be accomplished by small amounts of little scripts... All these internet-based APIs out there (Google, Flickr, etc) provide a low barrier of entry for some degree of "cool".
I think the real problem is a lack of motiva
Re: (Score:3, Insightful)
Nowadays most languages requires downloads (java, php), installation procedures (java, php, visual basic), having to learn development tools as well as the language itself (visual basic), a compiler (C, visual basic, java) and whatnots...
Those that don't require complex set-ups require the knowledge of another language to work properly (vbscript, javascript require HTML/CSS kn
Re:Absolute nonsense (Score:4, Informative)
Re: (Score:3, Insightful)
It's even tricky to change it by doing "file-save as..." unless you know what you are doing, most likely you will end up with hello.vbs.txt
So it's not as straightforward as you make out. In fact they have made it deliberately difficult to do what you describe. They seem to want to preserve some sort of idea of the intrinsic nature of different types of files for users.
Re: (Score:3, Interesting)
o I started programming in 1969, in PDP-8 assembler, well before my voice changed.
o Then I wrote a bunch of games and utilities in high school, many of which were widely distributed (pre-Internet).
o Then I went to MIT for six years, and wrote a parallelizing C compiler for my Master's thesis.
o At that point I had already used a dozen programming languages and assembler languages, most of which I've forgotten.
o Since then, I'
Re: (Score:3, Insightful)
He did mention other languages like Python or C++, and discards them. I'm not sure why exactly, but apparently he doesn't think they are any good for beginners (I think he is mostly just nostalgic for his programming days in which he used BASIC).
I would actually say there are plenty of kids who learn programming these days. Yes, they are doing it using more modern languages that have not been rendered obsolete, but that doesn't mean they are not learning valuable skills.
And I call bullshit on his asse
Re: (Score:3, Insightful)
Why Line-Oriented? (Score:3, Insightful)
Why line-oriented?
Re: (Score:3, Informative)
this is opposed to statement oriented where all parts have to be part of the single statment, usally multiple lines but with a statement ender, or a block oriented language that has begining and ending tags for the block.
Re:Why Line-Oriented? (Score:5, Insightful)
Because Djkstra was right. With whatever apologies might be due to the author, his early exposure to BASIC has damaged his mind so beyond repair that he cannot concieve of a good learning language as being anything other than line oriented.
Python and Squeek, each in their own way, are probably the best learning languages ever devised. They are both "real" languages that can be used for "real" work after you learn them, but also serve as good stepping stones to other languages, without instilling you with a line oriented mind.
Programming students don't need to learn line numbers, they need to learn number; mathematics; and logical structure. Line numbers do nothing other than give the illusion that a program has structure, whether it actually has any or not.
KFG
Re: (Score:3, Informative)
Re: (Score:3, Insightful)
With GUI based languages it's very easy to get hung up on the look of the interface, with a line oriented language it's not there so there's less distraction from learning the fundementals of the language and, more importantly, of programming. What the article seems to be mourning is the loss of languages without all the added trimmings that distract from the underlying principles.
Consider 'Hello World'. In BASIC that would be:
In C it would be something like:
Re: (Score:3, Interesting)
Line based means that you enter your program is based on lines, as opposed to, say blocks of code. It means you get code like
10 CLS
20 I = 1
30 PRINT I
40 I = I + 1
50 IF I = 10 GOTO 30
60 END
and you could insert a piece of code by writing, e.g.
55 PRINT "DONE"
In a block based language, you would get code like
CLS
I = 1
DO
PRINT I
I = I
Easy solution... (Score:4, Insightful)
Languages (Score:3, Interesting)
here is command line basic (Score:2, Informative)
BWBasic? (Score:3, Informative)
FreeBASIC... (Score:5, Informative)
Ruby could be this language (Score:2, Insightful)
Taking Ruby to the kids [rubyinside.com]
Incentive ? (Score:2)
I started programming in Basic on old Thomson TO7 computers when I was ten, then a few yaers later I switched to Pascal on an Olivetti PC, and it was always to build my own games : I had little pocket money to buy my own games, I had no access to any network whatsoever, and software piracy was not my favorite pastime (and would have been frowned
Python?! (Score:5, Interesting)
Disregarding Python, what's wrong with Emac's elisp or a nice session with tcsh. You'd be hard pressed to find a computer that you couldn't run one of these languages on and I've just barely scratched the surface of possibilities
No I'd have to say that today's children are given an even richer programing environment to grow with than we were.
--Steve
Re:Python?! (Score:4, Insightful)
For kids, simple graphics are far more persuasive than watching text scroll down. If your answer for doing this in python is longer than 1 line or involves compiling packages, you've lost. Basic commands I remember were as simple as "gr", "hgr", "hgr2", "screen" and you were ready to go.
As the world changes... (Score:4, Interesting)
As hand made articles become assembly-line products
we wonder why the world has changed and our tools with it
Re:As the world changes... (Score:4, Insightful)
If you're suggesting that programming is no longer as difficult as it was, then this would rather imply, a) programming viable applications is easier now than it was, or b) people are far more intelligent than they were. Neither explanation seems very likely. As far as I can see, programming is still a craft that very few people are capable of doing with any competance.
However, if you are suggesting that it has lost some of its 'elite' image, then perhaps you are right.
BTW: The article is by SF writer David Brin (Score:4, Informative)
bah simple (Score:4, Insightful)
Kids are fundamentally spoiled nowadays. They got a high speed computer, high speed net, digital cable, cell phones, spending money, etc.
When I was a kid [and damn I was a kid of the 80s/90s] I sure as hell didn't have half of that. My computer was a XT up until I was 11 or so then it was a 386/25 we scraped together from spare parts. We didn't have net access only local BBS stuff so for the most part we had to INVENT our own fun. That is, code stuff up, mess around with the box, etc.
If you want your kids to have similar adventures to what you had as a kid just don't spoil them rotten. Why on earth would your kid at age 10 want to sit through and learn themselves BASIC or C or Pascal or
You can save money and your children themselves if you just learn to say "No."
That and your kids will appreciate earning money later on in life so they CAN buy themselves toys and shit. Teach them the value of work [or at least looking like working...]
Tom
David Brin (Score:2)
Get off my lawn! (Score:4, Funny)
The REAL reason Sally can't code (Score:3, Insightful)
I didn't get hooked because I wanted to hack computers. I got hooked on old games (like Colossal Caves). When I finished all the games, I decided to write one, and learned BASIC. Today, you never finish the games. They just get better and better. There's no way I would have spent all that time hacking if the games available today were around back then.
Wait... (Score:3, Informative)
There are even languages developed solely to interest kids in programming.
http://www.kidsprogramminglanguage.com/ [kidsprogra...nguage.com]
http://en.wikipedia.org/wiki/Alice_(software) [wikipedia.org]
I'm sure there's more out there, but Alice was the one I remembered, and found KPL on the way.
No, there are no more barriers to programming than any other science.
Scripts? (Score:4, Insightful)
DOS batch files are pretty limited, but there have always been DOS programs to help extend them, and now that Windows is all NT-based,
Once you're pretty advanced with such shell scripting, it's not a hard transition to interpreted programming languages like PERL, and then to compiled languages.
I have a feeling the lack of kids programming has more to do with the fact that it's "unwashed masses" time, with the advanced still programming, but being hidden by the larger numbers of point-and-click users.
Oh, please.... (Score:5, Interesting)
From TFA:
Yes.
The writer of TFA is whining that computers no longer ship with a BASIC interpreter. That's been true since Microsoft shipped Windows 95--and at the time (which, er, was 1995) a number of columnists (including me) noted the loss, and wondered what impact it would have.
Eleven years later....
The earth still continues to revolve around the sun, and kids are still learning to write code. They're not learning to write code by typing in exercises from a math book--they're learning to write code to develop macros in Excel (or OpenOffice Calc); they're learning to write JavaScript to enable custom functionality in Adobe Acrobat files; they're learning to write HTML.
Not to get all pedagogical on you, or anything...
But this may be a circumstance where the Education Establishment is doing something right. Typing code into GW-BASIC produces...what? Typically, an output value. Read these input values, produce that output value. That's a CRT-based emulation of a deck of punch cards--and while I believe I benefited enormously from learning to code on punch cards, very very few people in the programming world agree with me. Think about what the newbie programmer's early coding experiences are like:
That experience--being able to compile and run a program in something like real time, was HUGE--in 1974. Nowadays it is so outdated that I'd bet most kids would not see any correlation between that and a computer program that they are familiar with. How do you explain to a ten-year-old that the BASIC exercise from the math book is essentially identical to the internal processes of a video game, a web server, or the embedded micro-processor that drives your microwave oven?
By contrast, a web page is a terrific introduction. Open a simple web page with "View Source", modify the text, and display the new page--it has changed. Iterate several times--add paragraphs, change colors, play with fonts--and the kid gets it. Playing with a text editor (which, incidentally, still does come for free) the student can go a long, long way in HTML. Depending upon his or her interests the student can pursue graphic design, animation, AJAX programming--all sorts of stuff. Key point: the difference between a "Hello World" HTML page and EBay is only a matter of degree--and that is immediately obvious to the student. Making the mental link between an ancient BASIC program and--for instance--a Windows application developed in Visual Basic.Net is not obvious at all.
A case in point...
I have three daughters. Growing up in a house with more computers than people--and a T1 connection to the Internet--they have had more exposure to computers than most kids. The oldest two are in college, and both had summer jobs this year at the electronics company where I work. Daughter #1 worked in customer service role--spending a lot of time with Excel spreadsheets. Somebody asked if she could program--she replied that her dad was a programmer, but she didn't really know how to. As she said this, she was writing Visual Basic macro scripts to automate a lot of manual key-entry for the customer service staff. What she was doing was very similar to the old-fashioned "get input, produce output" coding that punch card decks and BASIC programs performed. But the IDE (in this case, Microsoft Visual Basic for Applications) and the paradigm (a GUI) made it extremely easy to understand and do. So easy, in fact, that she didn't really equate it with programming.
In other words,
Don't mourn for GW-BASIC. Spend time with your kids writing HTML, JavaScript, and Excel macros.
Re: (Score:3, Insightful)
>essentially identical to the internal processes of a video game, a web server, or
>the embedded micro-processor that drives your microwave oven?
the same way you would've done it back in 1982: "when you write a program, you tell the computer what to do. these are simple programs; games are complex programs. but they are both programs."
believe it or not, professional games back then were amazing and awe-inspiring to pe
Why can't Johnny design circuits? (Score:5, Insightful)
child who codes, another on the way (Score:4, Interesting)
I am a parent of a 10 year old boy and 7 year old girl. My son and I coded our first BASIC stamp robot (Parallax Boe-Bot [parallax.com]) last year. He has since taken an interest in his 300-in-1 electronics kit [hobbytron.com], and modifying the games he plays on his Knoppix for Kids [osef.org] distribution (he often runs that over the Fedora and Ubuntu distros also available in the house). A few days ago he asked me how a web site works, so I am going to teach him a little html this weekend.
My daughter plays the piano and has access to a MIDI keyboard. She and I have had a couple conversations about MIDI and was fascinated by the paper pipe organ [blogspot.com] we built. I just started designing a small, networked, pipe organ with the hope of demonstrating some programming and networking concepts to her.
We have also built rockets, a trebuchet, and even kept bees together. I plan on dusting off my homebrew equipment soon.
Children are never bored by the possibilities of technology. They need only to be exposed to something more than closed and highly polished consumer products. Even THAT is a wonderful lesson in repurposing if there is a hack around who cares to show them.
OOOH, *I'll* tell yuo why Johnny can't code (Score:5, Funny)
* Johnny is the one at your company that has been working there for 10 years
* No one fires him becuase he "knows a lot of things about the process"
* Johnny talks about his technological exploits
* Eveyone else has to debug and fix Johnny's bugs
* He never asks the other developers any question on how to do something, for fear he will look inferior (too late Johhny!)
* AND WHEN YOU NEED A FREAKING IP ADDRESS FROM HIS PC???
You: "Johnny, can you get me your IP Address?"
Johnny fumbles around his desktop, going through all the Control Panel Options
You: "'ipconfig' Johnny"
Johnny: "EYE PEE CONFIG?"
You: "Yes, you know, the command prompt?"
Johnny: "What?"
You: "Never mind... what the status on your code module?"
Johnny: "Module??"
You: *head explodes*
Kids don't WANT/NEED to code anymore (Score:3, Interesting)
But why bother? Anything you might want is available already. And better than you could do it. We used to write "simple" games like hangman or (later) space invaders, and it was cool 'cause first of all, those games were popular back then and you could actually BUY them. But hey, I could code them and give them to you FOR FREE (which was something back then, without internet and P2P).
Why bother coding today? Anything you could come up with is invariably inferior to anything you could download.