Slashdot Mirror


Why Johnny Can't Code

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."

14 of 686 comments (clear)

  1. passworded article by muftak · · Score: 4, Insightful

    Please provide a URL that does not require signing up to crap.

  2. Re:Kids today...... :-) by dc29A · · Score: 4, Insightful

    When I was in college, we started off learning different assemblers (PC and Mainframe), then we moved to C and C++. The same college, now starts teaching kids some RAD languages, Java, C# and whatnot. IMO, new students no longer learn the basis of the computer, how the CPU works, how compilers work and how interpreted code works.

    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.

  3. Re:Absolute nonsense by cruachan · · Score: 5, Insightful

    I don't think it's because the barrier to entry is too high, rather the barrier to do something cool is in the stratosphere. Think about it - back in the 80's when you first started playing around with code creating your own version of pong was pretty dam cool. Actually even getting the machine to draw a few boxes on the screen in different colours was cool. True there was a learning curve and it was quite steep if you'd never coded before, but it wasn't that far from bottom to top.

    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.

  4. Re:Why Line-Oriented? by kfg · · Score: 5, Insightful

    Why line-oriented?

    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

  5. Re:Kids today...... :-) by popeyethesailor · · Score: 5, Insightful

    Devil's advocate time: Remember Computer science isnt about the plumbing; its about abstraction, algorithms and problem solving ability. Modern platforms allow modeling and thinking at a much higher level - instead of focussing on low-level arcana.

    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.

  6. Re:Kids today...... :-) by PseudononymousCoward · · Score: 5, Insightful

    I totally and completely disagree. The issue is one of pedagogy--which language can kids learn at an early age? I was coding 1000 line programs in BASIC at age 8, and I wasn't alone in that. BASIC is an easy language to learn. Is it limited? Definitely. Would I prefer today to code in BASIC instead of the Perl, Matlab, and Fortran that I now use? No. But the author's point is about _learning_ to code. Perl isn't terribly easy to 'learn' nor are c or c++ or java, at least not to an 8yo.

  7. CS a branch of mathematics? by David+Off · · Score: 4, Insightful

    I wonder if this CS is a branch of mathematics approach also puts people off. Personally I think there is much less mathematics going on at the programming level than college lecturers like to think. It is like the old saw that a dog that catches a ball is solving a 2nd order differential equation in real time. No its not, it is catching a ball. Similarly a program is more a logical story than some mathematical adventure.

    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.

  8. Why can't Johnny design circuits? by LaughingCoder · · Score: 5, Insightful

    This is just a natural evolution. The same situation exists in hardware design. Very few young people can whip up a useful circuit with resistors, capacitors, and transistors. At my company we have 1 or 2 "dinosaurs" who invariably get called upon to solve problems in the hardware when it gets down to this level. Everyone is amazed when they throw together a quick little circuit with a breadboard and a few hand-soldered components. The simple fact is, more people don't learn to do this low-level type of work because there is not as much need for it anymore. But, and here is the rub, there will always be someneed. We'll always have to have a few folks around who understand the fundamentals. One could imagine as things continue to evolve, that these "low level specialists" could become quite expensive.

    --
    The more you regulate a company, the worse its products become.
  9. Re:Kids today...... :-) by Gr8Apes · · Score: 5, Insightful

    Unfortunately, without understanding the basics, all your higher level abstractions get you is unmaintainable abstractions. Understanding the base concepts is necessary to know when to abstract at higher levels, because then you'll understand what that higher level abstraction does for you.

    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.

    --
    The cesspool just got a check and balance.
  10. Re:Kids today...... :-) by Sir+Runcible+Spoon · · Score: 5, Insightful
    That's right, and the other point made was that BASIC was always there. Your average kid knows how to turn on the machine and insert a game disk to start a game. In the past there was an intermediate step and it looked like this:

    Ready>

    Before they did anything else they were writing programs. Simple ones that started the game. Next they were playing with loops:

    10 PRINT "Big Tits"
    20 GOTO 10

    And er, ... well, ... the rest just followed.
  11. Re:Kids today...... :-) by CastrTroy · · Score: 5, Insightful

    Do kids today that are interested in soccer not think it's fun because they can't bend it like Beckham the first time they kick the ball? Do people who like woodworking stop because they can't build a perfectly constructed table and chairs, and instead can only build a crappy bird house? I don't think that's really the problem here. Sure there's going to be some kids who are discouraged because they can't program Doom 3 the first time they sit down and code. But those probably aren't the kids who would end up having a career in computers anyway.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  12. Re:Desktop Applets by Shaper_pmp · · Score: 4, Insightful

    Don't forget Javascript. Javascript is the new BASIC.

    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.

    --
    Everything in moderation, including moderation itself
  13. Re:Kids today...... :-) by Saint+Fnordius · · Score: 5, Insightful

    You managed to get David Brin's point terribly, horribly wrong. It's not that BASIC provided a good basis for future programming, but that BASIC awoke a desire to learn more programming. It was good for non-programers to grasp the concepts behind programming.

    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

  14. Re:Don't forget "Insightful" by try_anything · · Score: 5, Insightful

    Funny that kids today are pretty good at video games that are longer and more complicated than the ones we played, eh?

    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 .doc files

    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.