Slashdot Mirror


Learn How to Program Using Any Web Browser

honestpuck writes "Harold Davis has started with a marvelous idea, teaching programming using a language available on all platforms, JavaScript, and an interface familiar to everyone, the web browser. Learn How to Program Using Any Web Browser is written for absolute beginners to learn the basic principles of programming -- or at least that's what the cover would have you believe." Read on for honestpuck's evaluation of that claim. Learn How to Program Using Any Web Browser author Harold Davis pages 396 publisher Apress rating 5 reviewer Tony Williams ISBN 1590591135 summary Not much programming, but well written

The language is suitably light and simple, the book well-structured and broken down into easily digested chunks. The order in which concepts are introduced is fairly traditional for a language tutorial: first we get types, variables and statements, before moving on to conditionals, loops, and functions, followed by arrays and objects before finishing with event-driven programming. Davis' decision to leave string handling till last seems a little perverse and personally I would have introduced functions earlier.

My real complaints about this book centre on the abstract nature of the discussion. There are very few real world examples that could be useful to anyone. The best you get is a version of "Rock, Paper, Scissors" in Chapter 3, and an 'auction' application. The book would have been improved dramatically if the end result of your study was a few things you could actually point to.

I also have a complaint about the target audience for this book. The web page for the book at the publishers states that "The target reader is likely a twelve- or thirteen-year-old, who is just starting to get curious about what makes a computer work -- or an office worker who has been using computer applications for years, and would like to spend some time delving deeper into what makes them tick." Most adults and even teenagers don't want to 'learn how to program' as much as they want to learn how to use a tool to perform a task. If your tool is JavaScript, then it's almost certain your task is related to building web pages, but this gets little real attention from Davis. For even younger students, this book totally lacks anything to hold their attention -- the lack of real-world examples hurts here.

I also take issue with the title: this book doesn't really teach 'programming' much at all. It certainly teaches you to write JavaScript, but where are the sections about the real lessons of programming, such as top-down vs. bottom-up design, or breaking a task up into chunks? Even debugging has little coverage -- a single thirty-page chapter, half of which is specific to JavaScript or the throwing and handling of exceptions. Since the work of Papert and others at MIT twenty-five years ago, we've learned a great deal about how to teach programming concepts in a simple manner, but Davis appears to have ignored all this and given us a language tutorial. The publisher's web page for the book says "very emphatically, this is not a book about programming JavaScript." If that's so then I'd argue that it isn't a book about learning the principles of programming either.

It is obvious from this book that Davis is an excellent writer; if he had tried to write a book to teach JavaScript and had focused on the tasks for which it is often used this, volume may have been superb. As it is, he has shot for a higher goal and fallen far too short.

If you would like to check it out for yourself, you can go to the web page for the book where there is sample chapter, the Table of Contents (though they call it a "Detailed TOC" as distinct from the 'Table of Contents,' which is just a list of 11 chapter titles) and index, all in PDF format.

I went looking for a book that I could give to my 11-year-old daughter now that she has become interested in "what Daddy does." I'm still looking, I'm certain that this one isn't it.

You can purchase Learn How to Program Using Any Web Browser from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

110 of 456 comments (clear)

  1. Java? by Anonymous Coward · · Score: 2, Insightful

    Why this:

    Harold Davis has started with a marvelous idea, teaching programming using a language available on all platforms, JavaScript

    Why not this:

    Harold Davis has started with a marvelous idea, teaching programming using a language available on all platforms, Java

    Maybe because that book has already been written?

    1. Re:Java? by Dutch_Cap · · Score: 5, Insightful

      Java may be available on every platform, but most computers don't have a java compiler installed. A computer without a browser that can handle javascript is unthinkable, though.

    2. Re:Java? by McAddress · · Score: 2, Flamebait

      Personally, I think people should be taught to program in APL or assembly language (see the /. story. i cant find the link) this way all those kids who have no business programming won't learn how to do it.

    3. Re:Java? by Frymaster · · Score: 5, Insightful
      Harold Davis has started with a marvelous idea, teaching programming using a language available on all platforms, Java

      er... ansi c is available for all platforms too.

      i think h.d.'s angle was write an intro to programming book that uses an interpreter that comes default with every os install... hence the javascript.

      of course it's an incredibly lame angle since it breaks frymaster 14th rule of programming:

      "if you can't install the interpreter/compiler you probably can't code in the language"

    4. Re:Java? by LuxFX · · Score: 2, Insightful

      teaching programming using a language available on all platforms, Java

      Maybe you read the stress on "language available on all platforms" -- I read the stress on "written for absolute beginners to learn the basic principles of programming."

      The idea of the book is to teach the basics of programming to a complete newbie. It would not make sense to introduce the complications of complilation, classes/OOP, strict data types, etc. if all a newbie wants to learn about is using variables, conditionals, loops, and basic functions. That is simply introducing too much at once to somebody that might only know the concept of 'variable' from a middle school pre-algebra class.

      I agree with the author, Javascript is the perfect language to teach programming fundamentals. I had already decided on Javascript myself as the language for teaching my kids one day. After all, what a beginner programmer wants most is the ability to see their program do something. Could it get any easier than:

      alert("Hello World");

      ??

      --
      Punctanym: alternate spelling of words using punctuation or numerals in place of some or all of its letters; see 'leet'
    5. Re:Java? by wwest4 · · Score: 5, Insightful

      How does the desire or willingness to learn assembly translate into entitlement to program?

    6. Re:Java? by Moderator · · Score: 3, Funny

      Programming is a dangerous skill and should only be used by people mature enough to use it responsibly. The best way to make sure they are mature enough is to make learning hard enough that all of those script kiddies will run off to download pr0n instead of learning to program.

      Driving a car is a dangerous skill and should only be used by people mature enough to use it responsibly. The best way to make sure they are mature enough is to make learning hard enough that all of those people who drive automatics and can't perform a basic engine swap will turn to public transportation instead of learning how to use a car.

      --
      The World is Yours.
    7. Re:Java? by G.+W.+Bush+Junior · · Score: 3, Interesting

      desire is not the issue. If you know how easy it is to run people over, you would realize that by teaching driving to anyone even vaguely interested in it, we are harming our own community. Driving is a dangerous skill and should only be used by people mature enough to use it responsibly. The best way to make sure they are mature enough is to make learning hard enough that all of those irresponsible drivers will run off to download pr0n instead of learning to drive.

      I could go on... but I think my point is clear :)

      --
      "I don't know that Atheists should be considered as citizens, nor should they be considered patriots." -George H.W. Bush
    8. Re:Java? by Tassach · · Score: 4, Insightful
      I call bullshit. Who's fault is it that it's easy to write viruses:
      1. People who teach kids to program
      2. Programmers who write insecure software that's prone to viral infection
      3. Megacorporations that sell software that is inherently insecure because of intentional design choices
      4. Parents who don't teach their children to respect the rights of other people
      Blaming viruses on people who teach programming is like blaming grafitti on people who teach art.
      Blaming viruses on the people who write the tools is like blaming grafitti on the people who make spray paint.
      Blaming viruses on the people who make & sell insecure software is like blaming grafitti on the people who make & sell buildings that aren't grafitti-proof.

      Learning how to program and releasing a virus are very different things, just as learning marksmanship and shooting people at random are very different things. Put the blame where it belongs: on people and not the technology.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    9. Re:Java? by Negatyfus · · Score: 3, Interesting

      They already do this with driving, or at least they try to. It doesn't work, apparantly, if you take a look at traffic.

      Grandparent has it wrong, of course. Even if the clueless teenagers don't know how to program, there will always be competent programmers developing tools to create malicious software for them, as there has been from the beginning. And these script kiddies will gobble it up like a badly written VisualBasic virus.

    10. Re:Java? by G.+W.+Bush+Junior · · Score: 2, Insightful

      Exactly...
      besides making programming extremely difficult to learn would do more harm than good.

      Programming is a skill used outside CS circles; keeping bioinformatics, systems biology, engineers, chemists, physicists, etc., etc. from using easy to learn scripting languages would bomb them back 30 years.

      --
      "I don't know that Atheists should be considered as citizens, nor should they be considered patriots." -George H.W. Bush
    11. Re:Java? by wwest4 · · Score: 2, Interesting

      I don't need the NYT to tell me how easy it is to write a virus.

      There are philosophical reasons why I think your logic is flawed, but I'll stick to the practical considerations.

      1) assuming obfuscation of the trade reduces viruses, what other effects could it have?

      2) what does the reduction in high-profile exploits do to the state of security, both disclosure and patching? will it make big software companies more or less proactive? will more furtive exploits become easier and more common?

      3) is MYDOOM really the work of a script kiddie? (i honestly don't know - it seems to me to be a work beyond the grasp of those whom i would label a script kiddie - those with no particular genius and/or no formal software engineering training).

    12. Re:Java? by RedWizzard · · Score: 2, Insightful
      ansi c is available for all platforms too.
      ANSI C does not provide any sort of gui library and is therefore completely uniteresting to novices and most hobby programmers in general.
    13. Re:Java? by adamjaskie · · Score: 2, Interesting

      Or at the VERY least, the ability to CHECK THE OIL REGULARLY, check the TIRE PRESSURE now and then, change their own oil, jump-start a car, and change a flat tire. Those are basic skills that should be required to know to get a liscence.

      --
      /usr/games/fortune
    14. Re:Java? by dasmegabyte · · Score: 2, Insightful

      You think all programming should start with assembly (a language that 90% of all modern programmers never use)? Fine. But I disagree with you, so I will continue to teach classes on programming in Java at my local library. You are welcome to contact the library board and start teaching a competing class in APL.

      It would be interesting to see how many students you enroll compared to me in an "all's fair" environment like a free night class. I am willing to bet you will get few to none. For one reason, because assembly is a pretty useless skill. For another, you seem to be an elitist dick. "Kids who have no business programming"...what the hell do you mean? Anybody who has the desire to write a program has BUSINESS programming. It has no basis on whether or not they can spit out really efficient machine code or immediately grasp complicated cpncepts -- there are dozens of important skills a programmer needs to master, of which no one makes or breaks a coder. I've met fantastic GUI programmers who never got the hang of database programming. And I've met a lot of algorithmic geniuses who couldn't make a usable GUI if their life depended on it.

      Kids want to learn because they're young and eager and life hasn't yet crushed their expectations. We should teach them before they lose their wonder...not berate them with archaic syntax. I grew up on BASIC. A lot of people never get past it, but the more the merrier.

      --
      Hey freaks: now you're ju
    15. Re:Java? by JamesOfTheDesert · · Score: 2, Funny
      Why not this:

      Harold Davis has started with a marvelous idea, teaching programming using a language available on all platforms, Java

      Maybe because, with Java, before you can even write Hello, World!, you need to have a class, plus public static void main, plus System.out. And then compile it.

      With ECMAScript and a browser, it's
      println( "Hello, World!");

      --

      Java is the blue pill
      Choose the red pill
  2. Best way to learn by pi+eater · · Score: 4, Insightful

    The best way to learn how to program is to sit down in front of a computer with a reference handy and dive in!

    geeky shirts.. funny shirts

    1. Re:Best way to learn by Anonymous Coward · · Score: 3, Informative

      That's not what the universities would have you believe! Their way is to cram your ass full of math. Give dozens of math courses, with no real integration of ideas between them. Teach no practical applications, and then watch as employers start demanding university degrees for every job, and look at how much enrolling (or even more cult-like: recruiting) the univesities do!
      No, it's not about the money. No, they want to teach you... err.. something.

    2. Re:Best way to learn by tuffy · · Score: 5, Insightful
      The best way to learn how to program is to sit down in front of a computer with a reference handy and dive in!

      IME, it's best to have a problem to solve, too. Back in my carefree days, that usually involved trying to program a neat game I didn't have. Nowdays, it seems most of my toy programs involve organizing all the data I've accumulated on my hard drives.

      --

      Ita erat quando hic adveni.

    3. Re:Best way to learn by strider3700 · · Score: 3, Insightful

      I entirely agree with this. Pick a language you want to learn, then spend the $50 and buy one of those learn to program language X in 21 days books.

      Start working through the examples, by the time you hit day 15 you'll usually know the language well enough to do as you please and just use the last few chapters as reference. After a few languages you'll find that days 1 - 5 are almost always the same with just minor syntax differences.

      I've found this the quickest way to learn to languages. Getting good enough to add them to your resume takes actually using them for a few months/projects.

      Actaully learning the proper way to program is far more difficult to get from a book. This is one of the major things I learned while getting my degree. This is also the major reason that I rarely hire someone without a degree.

      Anyone can write code, but not everyone can program.

    4. Re:Best way to learn by RetroGeek · · Score: 5, Insightful

      The best way to learn how to program is to sit down in front of a computer with a reference handy and dive in!

      Yup.

      And after many years of doing things which make your applications buggy, hard to maintain, full of "cute" tricks, no security, no comments, you finally start doing things properly.

      Yup, dive right in.

      The thing about courses is that you learn the importance of doing things in a particular fashion. So you end up with applications which CAN be maintained, ARE secure, and so on.

      And this comes from experience. I have been doing application development for more years than I care to remember using over 10 different languages, three of which I am actively using right now. I did just dive in. And when I look at what I wrote many years ago, well, I am glad I am the only one that can see that code.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    5. Re:Best way to learn by Quay42 · · Score: 5, Interesting

      As a sort of corrolary to this...you need to have something that you're trying to *do*. You really can't open up a reference book and just start to code, you really need a reason to do it. It's sort of like asking someone you know who can speak another language to "say something in German" or whatnot: they're left floundering. If, on the other hand, you ask them to "count to 10 in German" then it's a different story.

      Any new language or software engineering concept I've learned that has been from a book has only been because I had to learn the language for the task at hand or it's been brought to my attention that a particular design pattern (or what have you) may be appropriate. I personally can't just pick up a book on programming with a cup of coffee if I don't have a real reason to.

      Just some thoughts.

      --
      "Has anything you've done made your life better?" - American History X
    6. Re:Best way to learn by armando_wall · · Score: 3, Insightful

      Actaully learning the proper way to program is far more difficult to get from a book. This is one of the major things I learned while getting my degree. This is also the major reason that I rarely hire someone without a degree.

      Anyone can write code, but not everyone can program.

      That applies to everybody, including the ones with a degree.

      See the talent, not the degree.

    7. Re:Best way to learn by CuteAlien · · Score: 2, Insightful

      Agreed. I learned programming that way, but i have to admit that university did teach me a lot about algorithms wich helped a lot to understand what i was doing and even more - what i did in stupid ways.

      And each time i had to learn a new programming language, first thing i did was sit down and write a small game. Just a fun way to get familar with new languages, even if those games usually did suck :)

    8. Re:Best way to learn by KrispyKringle · · Score: 4, Insightful
      Perhaps a degree isn't the best way to spend your money. I'll give you that.

      Past that, though, I'd be very interested to see your arguments that a degree doesn't teach you anything. Sure, you could go learn it from books, on your own, perhaps. If you were a genius. But without someone to guide you, to show you what to learn (because you just don't know what you don't know), you've got a far more difficult task ahead of you to learn the same things. And only a very small number of people I've met can learn everything they need completely on their own (coding, systems administration, and so forth are pretty easy--but they aren't what I'm talking about).

      University degrees vary, admittedly. Some really are just how to code. And those don't get you anything you couldn't learn on your own. But some teach you computer science (which has about as much to do with coding as civil engineering has to do with construction work). Calculus is useless, perhaps, but math is not. Algorithm design allows you to learn about what problems can and cannot be solved. Why encryption works and which technologies can be broken. How to design programs and algorithms which will always give you the right answer. How to implement a system which you can prove to be correct, and which you can prove will always execute in a certain amount of time. How a compiler works, and how we know it can deal with any legal input (and detect any illegal input).

      Any joker can learn to whip shit up in PHP. Anybody, given a little time, can learn to do application programming. Not to deride those, either; they're fun and valuable. But if you haven't learned these things (and from the sound of your post, I'd guess you didn't), you don't know how valuable they are. Or perhaps you learned things you didn't need for your job. Fair enough. But there's more to being satisfied than raking in the big bucks. And academics, as much as you may not appreciate them, are in fact valuable.

      A lot of universities have serious flaws in their programs. But that doesn't mean they are worthless. Like I said, learning on your own is great. But you don't know what you don't know.

    9. Re:Best way to learn by jd142 · · Score: 2, Insightful

      No, that's a good way to learn how to do a task.

      I've seen a number of people come and go that learned how to program that way. They could accomplish things; their programs ran. But they didn't have the concepts of programming down, the very basics like types of sorting techniques, objects, reasons for breaking things out into functions, etc.

      What a more formal education gives you, or should give, is a well rounded approach that teaches things you don't need to know immediately but that will come in useful in the future.

    10. Re:Best way to learn by FictionPimp · · Score: 2, Interesting

      This is exactly the problem I have. I spend a lot of time reading books on programming. I have a good background in a lot of languages, but the problem i'm having is I lack projects to work on. Sure i get little webpage script requests from friends, or a regex for some text file parsing, or maybe even a small app to do something mildly amusing. But I lack real world projects to perfect my skills on. My last job had a lot of projects, i worked on our software, on our reports, and on our support center tracking software (which i had to write by hand), but now that i'm diving into assembly and trying to get better at c and c++ i'm finding myself at a loss of what to do. What I would like to see is a book that tests you with challeges for the learning programer, then a chapter going over how the author would of solved this problem and why, with a CD containing all the source material to approch the problem, and possibly the solution program. Anyone know of something like this out there?

    11. Re:Best way to learn by M.C.+Hampster · · Score: 4, Insightful

      From the grandparent:

      The best way to learn how to program is to sit down in front of a computer with a reference handy and dive in!

      Most universities don't teach "programming". They are teaching "computer science". You might do well to learn the difference.

      If you just want to be a programmer, you might want to look at something like CIS.

      --
      Forget the whales - save the babies.
    12. Re:Best way to learn by Daniel+Dvorkin · · Score: 2, Insightful

      Funny, what really pisses me off is people who write bloated, inefficient, buggy code while they're bitching and whining about all those smarty-pants egghead ivory-tower perfesser types who don't know how things work in the Real World(tm).

      Here's a newsflash for you: most CS professors worth their salt have many, many more years of practical programming under their belts than you do, and the theoretical stuff is in any decent CS curriculum for a reason. Anyone can learn to hack together a program that kinda sorta does what it's supposed to do, eventually, most of the time. But until you learn the math that underlies all programming, you will be a lousy programmer. End of story.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    13. Re:Best way to learn by Stween · · Score: 3, Insightful

      Thankyou. I can't stand these folks who think a Computing Science degree is meant to teach people how to program, they're obviously missing the whole point.

      Ideally, a Computing Science degree is meant to teach people who want to learn something about Computing Science (and there's a hell of a lot of it out there, so even a degree is only the tip of the iceberg). If those same people are career motivated too, then well done them.

    14. Re:Best way to learn by DrPascal · · Score: 3, Insightful

      Every time I hear someone whining about not getting a job because they don't have a degree, I have to laugh.

      I don't have my degree yet either, and I don't blame companies for not hiring without a degree. It's a baseline ... a common ground. Whether or not someone is talented is far more important (I agree with you), but you learn more things at college than how to program. You learn how to manage time, follow coding guidelines, and stick with a goal and see it through for N years.

      I've seen many an idiot graduate college, but I've also seen many programmers that think they're great until they have to work in a group with others and follow a coding style or come to some sort of agreement on design/angle. It's more than sitting at home alone writing up the next DB handler.

      I realized that the degree is my foot in the door to a lot of companies, so I'm taking night school classes while I work so I can get that foot in. Get a job without a degree? You are lucky. Don't get one? Go back to college or switch careers. The goal of a good hirer for a company is not to hire neither the idiot with the degree nor the genius without one, but the genius WITH one. Remember that.

      --
      DrPascal: Not the language, the mathematician.
    15. Re:Best way to learn by Otto · · Score: 2, Insightful

      My suggestion: Start taking stuff apart. I mean, you're a computer guy. You've likely got stuff that your computer talks to. Learn to program those devices. It doesn't have to be complex hardware driver type crap, just start reverse engineering something and brainstorm what kind of cool stuff you can program it to do. Hell, go get a set of Lego Mindstorms and ignore their control software. Write your own. Think big, and then break it down into small sections. If that doesn't give you a project to do, then nothing will.

      You *don't* need a specific goal to reach to program something for fun. You just need a *reason* to do it, and that reason can be as simple as "I got this cool new toy and I want to figure out how the hell it works".

      --
      - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
    16. Re:Best way to learn by KrispyKringle · · Score: 4, Insightful
      You may disagree on every point, but I think you pretty much make my case for me. You say that you knew more about ``computers, programming, getting systems to work, and generally getting around the business than most of the lecturers...CS does not teach you what you need to know about what you will need in business [sic]''.

      This I agree with entierly. Now, this depends a lot on where you go, for sure (for example, where I am a student, we have many group projects, precisely to teach more applicable programming skills), but many computer science programs (and indeed, what makes it computer science instead of IT or coding) teach theory. They leave it to you to learn the (relatively easy) application. For example, I've learned languages that I will never use in work. Ever. But I can learn a new language of most sorts in a few hours.

      There are many facets to computer science, and it seems you've only seen a few. For example, I have a professor who does very well-funded secure systems work for the DOD (he's been mentioned on Slashdot in the past). If that isn't practical application, I don't know what is. At the same time, I have another who's primary interest is quantum computing theory, something not likely to be remotely practical for many years or decades (I believe the highest number factored so far was 15).

      You remind me a lot of a business student who was taking a computer science class I was in. He made a jerkoff statement about how business computing classes (in which he was learning Microsoft .NET) didn't bother to teach how hash tables actually work, but just how to use the implementation. He argued that learning how they work is a waste of time, since in the real world, you'll only have to implement the .NET libraries, not actually code a hash table from scratch.

      His failure of thinking is pretty obvious. Anyone can learn to use the .NET libraries in a few hours (even him). But in a few years, when .NET is out and something else is in, he's gotta learn that all over again. And anyway, all that aside, somebody's gotta actually write the libraries, even the ones at Microsoft.

      You sound like you do a lot of applied computer science--systems engineering, administration, perhaps coding--but this isn't what computer science is all about. If your eyes glaze over at the thought of algorithm design or proofs of correctness, you might still be a perfectly decent coder, but computer science probably isn't for you. Don't get me wrong, either. I'm a student, but I also work as a systems programmer. And a lot of the skills I knew from classes really weren't applicable. I could code, but I needed a lot of work on my organizational and project-management skills. And to be honest, pretty much everything I know about systems administration, Linux, BSD, and networking I learned on my own. What I learned in school, you are right, was not specifically what I needed to do my job. It was more.

      And I think you are backwards about Universities trying to make sure they handed out ``so many'' degrees. If they hand out to many, they become devalued. It's all about keeping themselves exclusive that makes anyone willing to pay tuition.

  3. HUH? by Anonymous Coward · · Score: 4, Funny

    Why Java? Everyone knows VB is the language of certified professionals.

    1. Re:HUH? by rsborg · · Score: 2, Funny
      Everyone knows VB is the language of certified professionals

      Don't you mean Certifiable professionals?

      --
      Make sure everyone's vote counts: Verified Voting
    2. Re:HUH? by Tassach · · Score: 3, Insightful

      VB is actually a non-sucky choice as a teaching language. It's pretty beginner-friendly, has practical applicability, and (in the form of VBA) is already available on most computers. Most importantly, you can use the same language to teach both procedural and object-oriented concepts, something that you can't do in Java. VB/VBA is far from perfect but there are far worse languages to chose as a teaching tool.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    3. Re:HUH? by spray_john · · Score: 3, Insightful

      Although it's a very valuable motivator to have a learner able to create GUIs just like they use everyday with a few clicks, I fear for the long term education of the individual.

      Someone who cut their teeth on VB is likely to look at the first steps into C and think "What? I don't want to write command-line programs!". They're not even going to learn what compilation is. I'd say that VB misrepresents computer programming in general to a beginner.

      VB is okay for what it's designed for: quick 'n' dirty win32 RAD, but I would question the wisdom of its use as a stepping stone to any other programming. Better to start with real basics and build from there.

    4. Re:HUH? by DrEldarion · · Score: 2, Interesting

      The problem with VB is that it makes everything too easy! You want to make a web browsing window in your application? Just drag the window, add a couple buttons, do one line of code for each button to make them do forward, back, reload, etc. Want to interface with a database? Just select which one you want to use and VB does the rest.

      Once people get used to VB doing everything for them, they don't want to switch over to a more complicated language.

    5. Re:HUH? by Tassach · · Score: 2, Insightful
      There's a big difference between teaching someone how to write VB programs, and using VB as a tool to teach someone general programming concepts.

      If you're using VB as an instructional tool, you don't have to teach the student drag-and-drop programming; you teach them the features you want them to learn. VB programs do not have to have to use forms, you know.

      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
    6. Re:HUH? by frission · · Score: 2, Insightful

      i'd have to disagree and say that VB is probably one of the worst languages to start off with. Yes, it's easy...the problem is that from then on, if you get really good at VB, then you'll ALWAYS be struggling to learn a new language. Most languages i've come across that are any good have more of a C++ syntax. Once you learn C++ decently (I don't think anyone ever masters it...but hey...i'm probably wrong), then everything is a step down in difficulty. With VB, everything is stepping up... 1st choice, i'd chose c++, even if you never use it, 2nd probably java, that way you don't really have to teach pointer arithmetic (PITA) or memory management.

    7. Re:HUH? by Kphrak · · Score: 4, Informative

      Yes, VBA is available on most computers, IF the computer is running Microsoft Windows with Microsoft Office.

      Yes, VB teaches beginners. It teaches them that the only system worth coding on is a PC running Windows, because otherwise they won't be able to click and drop their components. The first thing a beginner learns is that they can write programs that look just like the Windows programs (i.e. Internet Explorer, Access, Excel), without first hearing that the reason that they can is that they are, in fact, starting the Windows programs, and that little Access app they wrote using New Application.thisMethod and New Application.thatMethod just called two separate copies of an Office application. And guess what? If you forget to "garbage-collect" (well, really Application.Close), which 99% of beginners do, you won't get a warning of any kind. Rather, the applications will just stay in your system memory, waiting for a close command that will never appear. I've seen programs that could use 200K of memory (large in itself, but livable considering the VB interpreter environment) using almost 128 megs.

      That's just Visual Basic, which is pretty awful unless you're making a demo for your local suit. VBA is much worse; in fact, I think it's the spawn of Satan himself. At least you know when the application appears, because you have to open it to start your program, but since VBA is just macros within the main window, you cannot create menus, and the first thing you get to choose is the color of your window. This has spawned horrors of beginning GUI design such as magenta-colored windows, script fonts, and labels that respond to clicks to bring up more windows, just because programming is a last resort for VB and VBA; the star of the show is the decision of whether to make your font Script or Wingdings.

      This rant should be taken in view of my recent experiences; I have rewritten several programs built by budding VB6.0 programmers in the past few months, each one more horrendous than the last. VB should only be shown to programmers after they have used a programming language, not a set of GUI design macros. Make no mistake, VB is like the cardboard televisions at the local furniture store: for display purposes only.

      --

      There's no sig like this sig anywhere near this sig, so this must be the sig.
    8. Re:HUH? by pierpa · · Score: 2, Interesting

      vb is not a language, as delphi is not a language, as asm8086 is not a language. even java can hardly be called a language. they are "working environments". their only purpose to live is within their environment. it is difficult to say where the environment begins and where the languange ends. they work on the basis that there is a certain environment around them. a language exists and "works" also on paper, without a computer elaborating it. yes, fortran and c require "files", and sql requires "tables". java can require a "bitmapped i/o" and a "sound i/o". for java u can have many compilers (actually, many virtual machines, more or less optimized) for many platforms, so it can be said that it is a language that can be implemented on many digital machines. but vb is a programming environment that only works within a perfect copy of the machine crafted to make it work. it requires certain events, certain windows, certain operating system structures. if vb is a language, then also a wordprocessor file is a language. maybe it is more portable too! anyway, vb is dead now and we should be talking about .net

  4. I sure don't want to see code written by Anonymous Coward · · Score: 5, Funny

    by someone who learned to code from JS :(

    1. Re:I sure don't want to see code written by Tassach · · Score: 3, Insightful
      A lot of the code you'll maintain was written by people who first learned to code in old-school BASIC (GW-BASIC, Apple BASIC, etc). EG:
      10 PRINT "Enter your name: "
      20 INPUT N$
      30 PRINT "Hello, ", N$
      40 PRINT ""
      50 PRINT "QUIT (Y/N)"
      60 INPUT Q$
      70 IF Q$ = "Y" 90
      80 GOTO 10
      90 PRINT "Goodbye, ",N$
      100 END
      There are few languages worse than old-school BASIC for teaching programming. For example, in many primitive dialects your only control structures were GOTO, GOSUB, IF (with no ELSE!) and FOR / NEXT. It taught a lot of bad habits which had to be unlearned, and left you clueless about constructs like CASE statements, WHILE loops and user-defined functions. However, most programmers who got started in the late 70's and early 80's learned BASIC as their first language. Most of them who went on to program professionally were able to overcome this early handicap :-)
      --
      Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
  5. This is wrong on so many levels by Anonymous Coward · · Score: 5, Funny

    Having a programmer's first effort be a JavaScript pop-up with: "Hello YOUR COMPUTER IS BROADCASTING YOUR IP ADDRESS TO THE WORLD!" is just wrong

    1. Re:This is wrong on so many levels by nicodaemos · · Score: 2, Funny

      True, but they may be quickly employable by a number of irritating pop-up advertising companies.

  6. My thoughts on it by ShecoDu · · Score: 3, Funny

    I bet this article is going to rise a lot of flames... come on.. javascript... slashdot? yeah sure...

    document.write("First Post");

  7. Why teach programmers, period by Anonymous Coward · · Score: 4, Interesting

    The last thing the world needs right now is more programmers. Teach them some other trade which won't be killed by cheap global labor.

    1. Re:Why teach programmers, period by kfg · · Score: 4, Informative

      I know how to program. It is not my trade. It never has been, and, God and the economy willing, it never will be (although I'm not averse to churning out some code for recompense now and again as part of a diversified professional portfolio and just for the change of pace).

      I do, however, find it a useful skill that allows me to use my computer to conduct business, perform scientific and engineering tasks and yes, on occasion, save a lot of money on programs and programers. Saved me from all that Quicken/Quick Books lockout nonsense too.

      KFG

  8. Strongly disagree by Anonymous Coward · · Score: 5, Interesting

    I think the reviewer's premise that 12-13 year old wants to learn programming for a specific task is bull. I think what the book is trying to speak to is how I learned to program: BASIC. I wasn't trying to DO anything specific it was just a good way to start playing around because it came free w/ the computer and you could make it beep or say hi or whatever. I think that posing javascript as a replacement (now that basic does not come packaged with the OS) is a GREAT idea. It's free, there is a developing environment built right in (well with mozilla at least) and it's actually fairly powerful while still beaing easy to learn.

    1. Re:Strongly disagree by HiThere · · Score: 4, Insightful

      But Python is free and available on nearly all OSs. And a decent language. And it comes with a development environment (not a great one, but it works!). And it has a sensible structure (similar to many other languages). And it comes with complete documentation. And....

      Now many of the same things could be said for Java, but I think that Python makes a better first language. In fact, the only competition that I see is Ruby and Lisp. But if you speak English, you'll probably find more help for Python. (And Ruby diagnostics need work!)

      Java is a popular first language in an academic setting, and in that setting it makes sense. But for learning on your own I feel that Python is a better choice.

      C ... well, it's available everywhere, and you can find help. But you need to deal with pointers and casts, and the warnings when you mishandle them are obscure. And then there's the gruesome things that you can get used to doing with the preprocessor...that make your code unreadable.

      C++....that's an unmentionable monstrosity. Sorry, but I'd sooner start a beginner with Ada. OTOH, most of the advantages of C++ can be captured in a more reasonable way with D (from Digital Mars). It's also available for free, but it's not available at all for the Mac. Even so, I thing even D is too complex for a first language (besides, it's still beta, or possibly alpha [it's gotten up to around version 0.8 over the last couple of years]).

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    2. Re:Strongly disagree by haystor · · Score: 5, Informative

      Getting help learning Lisp is difficult for someone learning on their own. With no Lisp knowledge, it's hard to pick the right platform.

      For just learning Lisp, the path I took was:
      1. customizing a .emacs file
      2. customizing emacs packages
      3. writing my own emacs packages

      Most of my learning involved looking at someone else's code and trying to figure out how they did something. It's one thing to learn how a java feature like try/catch works by example, but trying to learn Lisp's defmacro by example is a path to madness. For that, Paul Graham's books are essential.

      The one major benefit to learning Lisp is that it can be bent to your will. This may require a change in mindset from C/Java where your spend the majority of your time conforming your will to fit the language.

      Only in learning Lisp have I again relived the "aha!" that came with the learning of a first programming language.

      --
      t
    3. Re:Strongly disagree by Major_Small · · Score: 2, Interesting
      what's so bad about learning C++ as a first language?

      if you start with C++, you can stay casual and do console input/output/math, or you can go a little more into it and get into functions/pointers/casts... and if you wanted to keep going, C++ could take you as in depth as you could possibly want to go...

      I learned a little bit of VB first, and then went to C++... one thing that annoyed me about learning VB was that the instructor didn't tell us what all the code was actually doing... we just wrote what we wanted where the IDE told us to... and we had to deal with casting and pointers... I don't see how you could introduce programming without the two...

      The way I see it, C++ gives you a much better background in comp sci than some of the other languages, and IMO, a good understanding of computer science is more important than the language your writing using it with...

  9. Badly titled. by fred87 · · Score: 4, Insightful

    The web browser is *not* an IDE. You do the programming in vim/gedit/notepad. (emacs is a bit much for javascript IMO)

    1. Re:Badly titled. by drinkypoo · · Score: 2, Informative

      Mozilla or Netscape Communicator is, in fact, an IDE, as it has an HTML editor included.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  10. Javascript != Java by nitehawk214 · · Score: 4, Insightful

    I know this was meant as funny, but Java is a normal accepted language. Because it is more structured then Perl or other languages, I highly reccomend Java to beginners.

    Javascript, or ECMA script, is a terrible non-standardized (despite being created by a standards board) peice of junk.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
    1. Re:Javascript != Java by BiggerIsBetter · · Score: 3, Insightful

      Fair enough. In that situation, I'd look at something like Python. You can start them off with proceedural "Hello World" stuff, and then move into classes as they get their heads around it.

      --
      Forget thrust, drag, lift and weight. Airplanes fly because of money.
  11. rating by Anonymous Coward · · Score: 3, Insightful

    5/5? 5/10?

    useless

    1. Re:rating by 31415926535897 · · Score: 2, Insightful

      5/5? 5/10?

      I believe the standard rating model used here is out of 10 (in this case it would be 5 out of 10 'slashes').

      I think that's safe to infer based on the text of the review.

  12. Re:javascript is horrible by AKAImBatman · · Score: 4, Informative

    I *wish* JavaScript had Java like syntax. I can't count how many times I've typed this:


    for(int i=0; i<length; i++);

    when I meant to type this:

    for(var i=0; i<length; i++);

    or even worse:

    function func1()
    {
    for(i=0; i<length; i++) func2(i);
    }

    function func2(item)
    {
    for(i=0; i<length2; i++) //do something with item
    }

    when I meant to type:

    function func1()
    {
    for(var i=0; i<length; i++) func2(i);
    }

    function func2(item)
    {
    for(var i=0; i<length2; i++) //do something with item
    }

    (For those of you who don't know JavaScript, "i" will be global without that "var" definition.)

  13. Random issues I have with Javascript by dmuth · · Score: 4, Interesting

    I've done a fair bit of Javascript programming, I think it's an okay language. It certainly could be worse. But here are some random issues that I think may make it difficult for beginners to pick up:

    1) No print() or echo() function. If you want to write something to the equivilent of stdout, you need to use document.write(). And if you use alert() as you're debugging something, you'll quickly get tired of boxes that pop up, I know I have.

    2) Weird OOP syntax. If you want to create class foo, you first create function foo, then to create a method you go and create function foo.prototype.bar(). I think that's needlessly complicated. It also leaves the beginner open for a shock when they start studing OOP syntax of other languages, where a class is defined and its functions are actually defined INSIDE the class.

    3) No file/database support. Good luck trying to interact with a file or database from Javascript. As the user learns more about programming, they're going to want to use these sorts of things. Javascript just wasn't designed for that.

    Those are the biggest things off the top of my head on why I believe Javascript is not an ideal choice for beginners. (I don't claim to be a JS god, so if I'm wrong about any of the above, someone please correct me...)

    1. Re:Random issues I have with Javascript by dmuth · · Score: 3, Interesting

      >Use IE -- this stuff is very simple with included COM controls.

      I'm sure it does, but I'd like to point out that the title of this article is "Learn How to Program Using Any Web Browser" (emphasis mine). If you start using Microsoft-specific stuff that's in IE, any Javascript code you write cannot be ported over to other web browsers.

      The cynic in me says that this is exactly what Microsoft wants, of course. That would ensure that MSIE has the biggest market share.

    2. Re:Random issues I have with Javascript by mystik · · Score: 2, Insightful

      FYI, neither C or c++ have a built-in output function. printf() comes from #include'ing stdio, and even then it's optional.

      Prototype OOP is weird at first, but amazingly powerful.

      Also, javascript support's eval's and even closures: ( pardon slashdot's indenting, or lack therof )

      //Map takes a list, applies a function to that list,
      //and returns a list of the return values
      //from application of that function.
      function map(code,list) {
      var result = new Array();
      for (var f in list) {
      result.push(code(f))
      }
      return result;
      }

      var = foo {a: 1; b: 2; c: 3};

      map function(a){ do_stuff_on(a) }, foo;
      --
      Why aren't you encrypting your e-mail?
    3. Re:Random issues I have with Javascript by xutopia · · Score: 4, Insightful

      1) You have three options as you said but there are others as well. document.title = 'str' or window.status = 'str'. I think it is a wonderful way to start. First time I saw printf() I was really lost.

      2) the prototype is only there if you want to add a function after you instantiated an object. There are much better ways to add a method to an object since javascript 1.0.

      If you were to build a function with a method you can do it very easily without using the prototype construct (ie inside the class definition) :

      function MyClass(str)
      {
      this.name = str || null;
      this.changeDocTitle = function()
      {
      document.title = this.name;
      }
      }

      var myObj = new MyClass('Beer');
      myObj.changeDocTitle() // your document title will change to "Beer"

      Now the Array object is a great example of when you should use the prototype construct. Say you wanted to add a method to all array objects to check if it contains an item. Here is how you would do it :

      Array.prototype.contains = function (obj)
      {
      for (var i = 0; i < this.length; i++)
      {
      if (this[i] == obj) return true;
      }
      return false;
      } // You could then check to see if an array contains something with a simple method :

      var myArray = [1,2,3,4,5,6,7,8] // shorthand array definition

      if (myArray.contains(3))
      {
      alert("My array contains 3") // of course this one is alerted.
      }
      else
      {
      alert("My array doesn't contain 3")
      }

      The prototype construct is actually really handy here for objects which have already been defined. Using it in any other circumstances is still possible but it isn't a good way to program IMHO.

      3) nope JS wasn't designed for that but for people to learn for, switch, do and while loops it is very handy. You cannot expect someone just wanting to learn a bit about programming to directly dive into a Java/Swing/SQL environment, there needs to be stepping stones to get there. ECMAScript (Javascript) does that quite well.

    4. Re:Random issues I have with Javascript by multipartmixed · · Score: 2, Insightful

      1) No print() or echo() function.

      function print()
      {
      var i;

      for (i=0; i 2) Weird OOP syntax [... in normal languages ...] functions are actually defined INSIDE the class

      function point(x,y)
      {
      this.x = x;
      this.y = y;

      function mPoint_toString()
      {
      return '(' + this.x + ',' + this.y + ')';
      }
      this.toString = mPoint_toString;
      }

      alert(new point(3,4)); ...if that's what you like, use it. You can also put the methods outside of the constructor if you want to. Or, you can use function() and create lambda functions if that tickles your fancy.

      The only wierd thing with JavaScript OOP is the lack of meaningful automatic inheritance. You have to pretty much do that yourself.

      > 3) No file/database support.

      C doesn't include file support natively. Neither does C++. I don't know about Java (I'm a C guy), but I suspect it's imported from a class. This goes doubly for database support! BASIC, Pascal, and any other real language I can think of require add-ons for Database support!

      The author of the book *could have* written a class to support file *reading* easily enough, in a *completely* DOM-portable format (by retrieving "files" which are stored on a webserver instead of a local disc.. or they could even be in file://). Writing files is non-portable, but if you chose a specific JavaScript implementation, it's very possible. Two specific ones I'm thinking of are NJS JavaScript (hell, I write shell scripts in it sometimes, it's quite handy) and Microsoft's Windows Scripting Host... as long as you're not running JScript inside the web-browser sandbox, it can do full File IO.

      Somebody else pointed out using ADO for Database access. That's pretty reasonable, you have to do the same thing in C++. You could also [read-only] use the Tabular Data Control (which has shipped as an OCX with every version of IE since 4.0) to read CSV files and interact with them pretty much the same way you can interact with an RDF.

      The list goes on.

      The problem you are having is that you cannot see JavaScript as a real programming language for two reasons:

      1) It has been horribly, horribly abused in the past
      2) There is not a great deal of aftermarket libraries available for the non-Microsoft version of the language. (Whose fault is that? Yours!)

      It is entirely possible to write Good Code in JavaScript, although (like any language) it might not meet your needs. The criticisms you make of JavaScript could be made of LISP as well, and I think emacs has proven the point that you can use LISP to write real, non-AI-field programs.. That do I/O an' ever-thing! [albeit in an incredibly bloated manner].

      In fact, I would argue that with proper "setup" [include files], JavaScript in the Microsoft environment would be a *far better* tool for teaching programming than, say, GW-Basic. Or possibly even VB (although that tenous at best). Certainly as good as Object-Oriented Turing and other educators' pets.

      Getting it to work as well (file io, db access) in the non-MS environment merely requires somebody who cares about these things to write appropriate class libraries for the NJS interpreter. Or the right plug-ins for Mozilla. Etc.

      --

      Do daemons dream of electric sleep()?
  14. Sure it is! by Anonymous Coward · · Score: 2, Funny

    Don't you get it, Emacs is the browser and the IDE all in one! It does your laundry too!

  15. Re:javascript is horrible by Anonymous Coward · · Score: 5, Funny
    not only does it's syntax suck

    Ironic.

  16. Web Browser JavaScript for Beginners? by xxxJonBoyxxx · · Score: 3, Informative

    This is a crappy environment for beginners. The first thing they will bump into is crap-loads of IE vs. Mozilla vs. Netscape JavaScript inconsistencies. The second thing they will bump into is "how do I save information per user, not per browser". The answer is server code, probably in a different languages than JavaScript, so now newbies have to keep two things straight.

  17. Re:javascript is horrible by SamiousHaze · · Score: 3, Insightful

    I'd have to disagree with you. The syntax is very similar to C/C++/Java - (don't flame me because its not *EXACTLY* the same - and it is more limited) - and secondly, "but it's full of exploits" - Maybe the interpretter on some platforms gives it power outside the boundries of the language but that is *NOT* the language's fault. Javascript is a tool and has its place and usefulness just like any other tool.

  18. Re:javascript is horrible by Tablizer · · Score: 2, Informative

    One of the oddities of JavaScript is string concatenation. It uses plus (+) for both concatentation and adding, and this creates confusion and kludges. For example, sometimes you have to say "foo + 0" to force it to "see" foo as a number. Other scripting languages have seperate operators for each. Plus JavaScript has a lousy set of string-handling functions, or at least the earlier versions did. Further, I don't like it's object-oriented tilt feeling that it was just chasing the OO fad stoked by Java, but I suppose this is a personal preference best left to some paradigm war in another place. At least it has user-defined functions.

  19. Alternative reading? by mj_bell · · Score: 2

    Any suggestions for better introductory programming instruction?

    1. Re:Alternative reading? by Daemongar · · Score: 2, Interesting

      I'll second this - any better references out there for learning programming for non-programmers? I leared basic, cobol, and rpg inside and out 12 (it was required when I went to school! oy!) years ago but everytime I sit down to learn C++ or something I get flustered very quickly.

      The title sounded promising, but now it gets slammed. There must be something better.

  20. Just what we need by Silon · · Score: 2, Funny

    What this world really needs is more web pages by 12-year-olds with funny little interactive images and little rainbow sparkly things that follow your mouse around. Thanks, Harold.

    1. Re:just what we need by Rysc · · Score: 2, Insightful

      Where are these stupid HR people you refer to? If some JS weenie can get a job due to their stupidity, surely I can.

      --
      I want my Cowboyneal
  21. JavaScript for Children? What about Flash? by daddywonka · · Score: 4, Insightful

    If the book's actual target audience is 12ish, I don't really see JS keeping the attention of children.

    I also don't think most 12-14 year olds really want an in-depth discussion of programming principals, like the review suggest. I think they'd rather it be fun. That could just be me...

    Though it's not free and only works on a couple of platforms, I think Flash and ActionScript are a great way to introduce people, especially young people, to programming. A few simple lines of code can replace the timeline based motion tweening and is a great, visual way to see how your code works. From there kids can add a few lines of code to make sound and images work interactively.

    True, it might not turn them into kernel hackers, but most kids would probably more interested in learning to program if it kept their attention. Action script can be very easy with many neat things taking only a few lines of codes but it can grow as your young programmer learns more and seeks more challenging projects.

    1. Re:JavaScript for Children? What about Flash? by TrollBridge · · Score: 2, Funny
      "I also don't think most 12-14 year olds really want an in-depth discussion of programming principals, like the review suggest."

      Nonsense! When I was a lad, I found discussions about developing clean algorithms and object-oriented programming concepts fascinating!

      Course, I did get robbed and beat up a lot in school... do you think the two are related in some way?

      --
      There's a Mercedes gap too. I want one and can't afford one, but it's not government's job to do anything about it.
  22. Can I get a Hindi version? by BigChigger · · Score: 4, Funny

    Otherwise, no need to be training any new programmers.

    BC

  23. Challenge of finding a first language by Tassach · · Score: 5, Insightful
    Chosing the first language to teach a fledgling programmer is pretty difficult. The ideal language has lots of different qualities:
    1. It has to be easy to learn and use. In order to build the novice's confidence, it should encourage early successes. It should be easy to debug.
    2. The tools have to be accessable to the student. Ideally, you want to use a language which is already installed on their computer, or at worse be a free download which will run on all major platforms.
    3. It has to be practical. If the student can't use it to do something which is useful TO THEM fairly early on in the learning process, they probably won't stick with it.
    4. It has to provide a good foundation for future learning. This means that it should support all the standard code constructs and have a syntax similar to other more advanced languages. It also means that it shouldn't teach them any bad habits they'll have to unlearn later.
    I'm sure there are other qualities, but this is a pretty good starting list. On the basis of this simple list we can eliminate a lot of potential candidates as first language.
    --
    Why is it that the proponents of "one nation under God" are so eager to get rid of "liberty and justice for all"?
  24. An excellent idea by Tryfen · · Score: 2, Informative

    As many other posters have commented - JS comes "free" with Windows. Just like Basic did way back in my youth with a BBC Micro.

    The greatest problem I have with programming today is that it's so damn hard to install the compiler! Java is probably just about the easiest, but you still need to add PATH statments.
    XAMPP makes installing PHP as simple as it could be.

    The last time I tried to install ANT or GCC or anything even vaugly complicated I had to wade through a hundred different URLs to find the right package, download, install, edit INI files and PATH statement, fiddle with the registry and GAAAAAAAAAAHHHHH!!!!!

    We can all agree the JS isn't the best language on the block. But unless it comes in a ready to go package - most people just won't bother.

    It's the same thing as Linux ('scuse me while I rant) you spend ages and ages installing and configuring the damn thing when all you wnat to do is work!

    Right. Rant over. To conclude - JS bad, installing IDEs and compiles: worse!

    --
    If a square is really a rhombus, why aren't all triangles purple?
  25. the joy of js by Anonymous Coward · · Score: 4, Funny

    most program headers start off with something like

    if netscape
    if netscape3
    else
    else if opera
    if opera5
    else
    elsif explorer
    elseif mac
    elseif explorer 5
    elseif explorer 5.5
    elseif explorer 6.0
    else

    nothing like a consistant clean language.... and this is nothing like one.
    but then java has some of the same problems in some areas

  26. It's a TOOL by mabu · · Score: 5, Insightful

    The reviewer makes an excellent point. Programming is a *means to an end*. People don't learn how to program just so they can say they program. To not put the art of learning programming into the context of real-world applications is counterproductive.

    Then again, pardon me for being cynical, but this seems reflective of the new type of motivation we have these days behind people choosing vocations. People go to law school, not because they have any interest in law, but because they're under the impression they can make money if they're a lawyer. The bottom line is that if you get into any vocation without having any passion or interest, you'll never be any good at it.

    This reminds me of the arguments over which programming language is best. It's moot. The application and environment should dictate which tools be used. Likewise, if you want to learn to program, and don't know for what platform or application you're interested, you're on the wrong track... figure that out before you buy any books.

  27. "Program"? by oneiros27 · · Score: 4, Informative

    Most people haven't even figured out how to make a page look good in more than one browser.

    See the Any Browser Campaign.

    [And I don't mean 'detect what browser they're using, and serve them a page that's specially tailored to their browser', I mean making a single page that is written to the standards, and doesn't look like crap when some new unknown browser renders it]

    We know JavaScript isn't good for 'Any Browser', as there are browsers that don't support it -- and it's even frowned upon by the WAI

    --
    Build it, and they will come^Hplain.
  28. Rated a 5?!? by I8TheWorm · · Score: 2, Interesting

    My real complaints about this book centre on the abstract nature of the discussion

    I also have a complaint about the target audience for this book

    I also take issue with the title: this book doesn't really teach 'programming' much at all


    Yet the book review rates a 5? What gives? I would think a book with more than one "I have issue with" would rate a bit lower than "the best possible rating it could get."

    --
    Saying Android is a family of phones is akin to saying Linux is a family of PCs.
  29. just what we need by CAIMLAS · · Score: 5, Insightful

    Yes, that's just what we need - every Joe, Shmoe, and Harry that surfs the web to start thinking he's hot shit on Sunday because he's a "programmer", and now he can go out and grab one of those elite tech jobs!

    Of course, knowing the stupidity of HR, they'll likely get hired.

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
  30. First language by Mr_Silver · · Score: 4, Interesting
    Why not teach them VB?

    No seriously.

    It's easy, it's pretty, you get a grasp of functions and objects and you can do moderatly complex things pretty quickly which means that they'll get instant gratification.

    If you want to introduce them to programming, given them something that can make them go "wow!" pretty quickly. Thats what made those Spectrum BASIC books so good - within 10 minutes you had lots of pretty squares up on the screen.

    I'm sure a lot of people would shudder at the though and want their kids to start with C++ or Perl - but I think that it might do more damage than good. No one wants to be scared off by pointers or regular expressions.

    --
    Avantslash - View Slashdot cleanly on your mobile phone.
    1. Re:First language by TheTranceFan · · Score: 2, Interesting
      I see your point about pointers and regex's. But VB is not pretty. Further, it isn't typesafe (nor is JS) and the way you do GUI in VB encourages you to sort of put your code into your UI, "Hypercard" style, which is a bad idea on many levels.

      It's definitely a tough problem - C's got char*s everywhere to freak people out, Perl's just $funky =~ /ashell/, and JS and VB encourage all sorts of slapdash programming technique.

      Probably a more mature language like Java or C# might be better, even with fact that you force yourself to teach OOP and basic programming at the same time, and have to deal with the ponderously large class library. At least you don't have to reinvent strings.

      Hmmm...maybe I'll make $funky =~ /ashell/ my new sig...

    2. Re:First language by Starji · · Score: 2, Insightful
      Nooo, don't teach them VB. It's horrible, in fact there are a few reasons why noone should teach (or use for that matter) VB.
      1. It's...
      2. Expensive : Sorry but if you're just learning you don't usually want to spend (on yourself or your kid) a few hundred dollars on something that they might drop in a few days, unless of course you don't have a problem swiping a copy from M$, at which point it's pretty cheap.
      3. Non-portable : Not so much of a concern for most people, but a few of us (like me) actually care about stuff like that.
      4. Encouraging bad practices : In particular the whole "all public variables" idea that they instill from day one. Just a pet peeve I suppose, but that is very discouraged basically everywhere but in VB
      5. Shoddy syntax : I should say confusing syntax cause that's what you'll be when you pick up a new (better) language. I don't think there is a single other (mainstream) language that has syntax as strange as VB's.
      6. Micro$oft : It's just... Micro$oft (yes I'm trying to get fL4m3dz0r3d).

      Now some of those points are very subjective and bullshit, but cost and portability are very real concerns when learning a language. It shouldn't cost really anything to learn basic programing techniques I think.

      Now as far as what I'd suggest for a learning language I'd suggest what everyone else is throwing out (python, ruby, etc). One that I haven't seen anyone else mention yet is HTML. Ok, ok, it isn't a programming language, but writing webpages actually tends to be a good place to start when you want to start making things happen on the computer.
  31. Teaching 12 or 13 year olds to program by miu · · Score: 4, Interesting

    I keep seeing those "Fighter Maker" and "RPG Maker" PS2 games on the shelves. Seems like that would be the thing to give a 12 or 13 year old to get them interested in programming and maybe learn some of it's basics.

    --

    [Set Cain on fire and steal his lute.]
  32. We've actually designed and implemented this... by taliver · · Score: 4, Insightful

    Here is a course I helped design to teach Javascript programming to CS170 students-- pre-business majors.

    Javascript was our idea of a language replacement for what we were using True Basic. The idea was to have a language where the students wouldn't constantly question why they were learning it, and to pretend like we were doing some level of web enabled e-commerce site programming.

    The problems we have found come from the lack of structure of the language, and combined with the browser's desire to fix as much as it can. While this is a nice feature for a real developer, it sucks when you have to tell a student "I know it works on the browser, but it's still wrong."

    The other issue is trying to keep to a small set of structures for programming, and making sure the TAs for the course don't get too ambitious with teaching dozens of alternative ways to accomplish the same thing. For students at this level, they just get confused.

    But it does work well, and it is nice not having to ask students to buy another piece of software to program with at home. (Unlike True Basic.)

    --

    I demand a million helicopters and a DOLLAR!

  33. It works by lukewarmfusion · · Score: 4, Insightful

    I began teaching my brother programming with Javascript. I also recommended to my department head that they use Java as a beginning programming introduction.

    You need to learn the fundamentals of programming - not necessarily Assembly-level, but something that, upon completion of a beginning course, will be useful and applicable to other languages.

    We spent three weeks learning conditionals, loops and case - in my Java course (specifically did not use the word "class" there, for anti-pun reasons...). The prerequisite courses were "intro programming" and another, such as VB. But all but three of students came into the class unable to understand an if-else. My time was wasted, my prof was furious and most students gave up.

    You know what they learn in the intro programming class? QBASIC. You know how many people had a clue coming into Java or VB or C++? Two of us. We'd both been programming for ten years (and we were 20) and could teach the class. It was a req. for the major, so we had to take it.

    Programming is best learned in front of a computer, with a task to do and a good reference to rely on. If that reference is a book, another programmer or freakin' Google, you can still learn the basics from there. I liked the idea of teaching my brother using Javascript because I could 1 - look at his code, 2 - point him at countless resources, examples, etc. and 3 - demonstrate that even if your code follows the rules, works on your machine and is well commented/indented, it won't work on everyone else's machine.

    It won't teach you the inner workings of a machine (previous Slashdot post on Assembly as an intro language) but it will help prepare you for a real internship or at least for a class that will teach you more.

  34. "I'm certain that this one isn't it." by kfg · · Score: 3, Informative
  35. Well, that's XXI century's BASIC by apeine · · Score: 3, Informative

    Sure Javascript can be used to teach programming, but if what you do is not at least a bit useful, it won't catch teenagers attention for long. And javascript is quite powerful, even though it lacks some functions that would make it perfect (external file reading, that could be made from the same url as .js file, for security reasons).
    Or we con go back to basic, which could be handled on a disk (or CD), so learning to program would be quite easy!!!

    --
    Want to learn Manga P2P way? try www.mangaschool.com.
  36. Mozilla by sl0wp0is0n · · Score: 3, Informative

    Newer versions of Mozilla have a complete debugging subsystem for javascript. You can step through the code and examine variables. All the fancy stuff that a debugger provides - that too wrapped in a nice GUI.

    --
    My other dog is a Wienerschnitzel.
  37. Machine Code by axis-techno-geek · · Score: 4, Funny
    Available on ALL platforms, runs at top speed.

    Helps weed out the slackers ;)

    --
    This is not the sig line you are looking for... -- Old Jedi Sig Line Trick
  38. Re:How about instead... by Abcd1234 · · Score: 3, Informative

    Squeak Smalltalk is quite excellent for this purpose, IMHO.

  39. Try Python by Anonymous Coward · · Score: 4, Interesting

    I highly recommend "How to Think Like a Computer Scientist: Learning with Python." It's a great introduction to programming using a language that doesn't get in the way. Python is also a great language for starting procedurally and "graduating" to OO. Besides being a great book, it's available for free in LaTeX, PDF, PostScript, and HTML. Needless to say, both the language and the book are available "using any web browser." As for JavaScript, I have tried to keep it at arm's length for as long as possible.

  40. Inevitable bad joke... by ivanmarsh · · Score: 2, Funny

    Where can I download the "Any" browser?

  41. First language by DarkSarin · · Score: 2, Interesting

    Although it has many of the limitations that something like JS or JavaScript has, I personally think that PHP is a great first language. It does require an installation of the language (unlike JS), but I think that it has better syntax.

    I am also far from being a pro, and much of my code really stinks in terms of readability (I am working on it), but speaking from the perspective of someone who had a really rough time with my one programming (we used C) class, I think PHP is better than Javascript for a first language.

    --
    "We don't know what we are doing, but we are doing it very carefully,..." Wherry, R.J. Personnel Psychology (1995)
  42. Logo by Hollins · · Score: 4, Informative

    I still think the best language to learn to program for kids (starting around 7) is Logo. Instant gratification, cool animation, you can make impressive patterns quickly and it teaches the basic control structures.

    Then, they can graduate to StarLogo, an object-oriented version of logo which is easy to learn, but very powerful. A number of labs are using it for research simulation. Go with the turtle.

  43. The big advantage of Javascript is... by mykepredko · · Score: 3, Interesting

    that it is free and the license built into the browser allows for development work. There aren't an awful lot of other programming languages/development that can boast this.

    Having Javascript already available in the browsers is an advantage because a very great majority of computer tech teachers that I have met have troubles with even understanding the concept of directories and paths, let alone have a snowball's chance in hell of installing something like gcc under Cygwin.

    Going off on a personal rant, I would like to see teachers be a lot more scrupulous with respect to licensing software. How seriously is a kid going to take the classroom instruction on not sharing other people's IP when the teacher tells them to download VB, QBASIC or some other clearly copywritten tool into their PCs?

    As an added bonus, Javascript is not terrible to program in and you can come up with some good simple client side games. How about Pong, Tic-Tac-Toe, Minefield, Battleship, etc.?

    I think that using Javascript for teaching programming is a step in the right direction, but it sounds like this book could have done a better job in making it compelling for kids.

    myke

  44. PHP is a great choice by Richard_J_N · · Score: 3, Informative

    Why not choose PHP. It's a very nice language with clear syntax, no need for a compiler, can even be run on Windows, is perfect for the web, and also for scripting. It also has enough in common with C/perl to make it easier to learn these languages (whereas say VBscript is completely foreign). It also has an easy learning curve - it's looseley typed, and gives helpful error messages.

    I can recommend the book: SAMS "Teach yourself PHP in 24 hours"

    Richard

  45. Re:Once you know one . . . by RetroGeek · · Score: 2, Insightful

    Hmmm, I assumed that this would be a person who had not done ANY programming.

    I too just jump right into a new language. It is mostly just a different syntax. Actually I try to find out what you cannot do in a new language.

    Mind you, I had to take a course to learn OO. And I found out that I had been doing OO anyway, just not in a formal sense. Now I find it hard to do non-OO stuff.

    --

    - - - - - - - - - - -
    I am a programmer. I am paid to produce syntax not grammar. Deal with it.
  46. The best way to learn is not in school by Bruce+Perens · · Score: 3, Insightful
    Programming is not a skill that can be taught.

    The most you can do is help a student develop their skill. Skill is something that comes from the way your brain is wired. If you don't have it, no amount of learning will give it to you.

    There are a lot of people with advanced degrees and little skill.

    Bruce

  47. You've got to be joking..... or stupid by zibix · · Score: 3, Insightful

    Anyone who actually suggests that learning programming should be made more difficult to prevent irresponsible use has got to take the cake for elitest bullshit.

  48. A Great Language to learn on by 5+Second+Rule · · Score: 2, Interesting

    I think the Processing tool/language/environment developed by Casey Reas and Ben Fry at MIT is a great place for young people to learn. Its based on Java syntax, but has a very fast and powerful graphics API that lends itself to quickly creating visual sketches in code. Its completely free, has its own environment and compiler that is simple and easy to get started with. The website has plenty of clearly commented examples teaching concepts step by step, a nice reference page with many illustrations of the core functions and control structures of Processing, and a very helpful message board community. Most people creating in Processing share their source code, so if you see something cool you wanna try out yourself (and there is a lot of really cool work featured on the site), its just a matter of reading through the code.

    So if you are a more visually inclined novice programmer like myself, in my experience, playing around in Processing can be immensely insightful and rewarding. And a lot of fun.

  49. Missing the point... by YuppieScum · · Score: 2, Insightful

    Yes, Python and a host of other languages can be downloaded for no cost, BUT none of them are provided ready-installed along with the OS on 99.8% of all new desktop/laptop computers today, and with 90%+ of desktop/laptop computers sold over the last 5 years.

    With this book and a computer running Win98 or later (can't remember if IE on 95 has JS), or OS X (dunno about earlier versions), the user has all they need to start writing code of their own. No downloads required - hell, they don;t even have to be on-line!

    Never mind the 12-13 age group - I'll be giving this to a few 7-8 year olds for birthday and/or christmas prezzies...

    --
    This sig left unintentionally blank.
  50. Deitel and Deitel's C++ "How To Program" by JeffTL · · Score: 2, Insightful

    Pretty good book. Covers the C++ language, though it talks an awful lot about UML flowcharts and the like -- okay if that's your style, but for my purposes, farting about with pseudocode and flowcharts is more difficult than writing the damn code in a real language -- at least Applescript, and usually C++.

  51. C++ as first language... by xenoxion · · Score: 3, Informative

    I just turned 14 and I'm learning C++ as my first language. I don't think it's overly hard, though pointers did take me a few weeks to get the hang of :/. My only gripe is that it's hard to make something that I'll actually use (and thus I sometimes lose interest), because I still don't know how to import/export/create files, and because I wanted to make a few simple games but after seeing some basic OpenGL code I know I'm not going to be doing that for a while (using the tutorials at NeHe I see that I need to write a few hundred lines of code just for a blank screen...).

  52. Re:You mean like lynx? by hatrisc · · Score: 2, Insightful

    that takes nothing away from the fact that javascript is a very good language to learn programming on. i learned how to use loops and functions in javascript way before i knew what a compiler was. i say 'YAY!' to the author for an interesting and effective thought.

    --
    I write code.
  53. Re:That was my first goal by Leeji · · Score: 2, Informative

    You're right-on there. I wrote an introduction to programming (w/ Javascript as the language) and thought about the IDE / language problem as well. I ended up writing a "Javascript Testbed" for people to use as their "IDE." Although I would have loved to use Java as the starting language, my main prerequisite was a _zero_ barrier to entry.

    --
    It all goes downhill from first post ...