×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Hello World!

samzenpus posted more than 4 years ago | from the read-all-about-it dept.

Programming 199

stoolpigeon writes "Hitting middle age has been an interesting time. I catch myself thinking about how well kids have it today and sounding a lot like my father. One difference is while my dad was happy to teach me about sports or cars, we never spent any time knocking out code together. I think he did realize that home computers were important and I will always be grateful for the Commodore Vic-20 he brought home one day. It was a substantial purchase for our household. I spent many days copying lines of basic from magazines and saving the results to cassette tapes. In my home today we have a considerably better situation, computing wise. There are usually a couple laptops running as well as the desktop machine upstairs. My kids take for granted what I found to be amazing and new. Still, that's all pretty normal and I'd like to give them an opportunity to go deeper if they are so inclined, just like we give them opportunities to explore other skills and pursuits. With that in mind I brought a copy of Hello World! home a few weeks ago, and the response from my oldest has been surprisingly enthusiastic." Keep reading for the rest of JR's review.Warren Sande wanted to teach his son Carter about programming but had difficulty finding what he thought was a suitable book to guide the process. At the encouragement of Warren's wife, he and Carter decided to write their own while Carter learned to code. Warren chose Python as the language they would work in and then the two together outlined the book and created the sample applications. As the book moves into more complex territory the sample applications are the kind kids like best. They are games. As soon as my daughter saw that she would get to make her own computer games she immediately asked me if we could start working through the book together. When it has been a while since we've had a chance to crack it open, she reminds me by asking when we will get back to it. I would say that on her end it has been a complete success. It has been a great time for us as father and daughter and educational for us both.

Language choice can be quite a hot topic amongst us geeks. In the preface Warren defends his choice of Python with a bullet list I'll summarize here.

  • Python was created from the start to be easy to learn.
  • Python is free.
  • Python is open source software.
  • Python is not just a 'toy' language.
  • Python is multi-platform.
  • Warren likes Python and thinks others will like it too.

I think the list is pretty solid. The only one I think may not be directly applicable to the case it hand is the FOSS angle. Warren explains that being open means that more can be done with the software and that there is a large set of corresponding code out there freely available. A case could be made that this is also true of more closed languages. The one thing I think that could make this important is if the teacher of the material is interested in not just teaching the technical side of programming but is also interested in communicating the philosophical values of freedom. In light of the amount of closed source software and ignorance in regards to FOSS options I've seen in the public school system where I live, I think this may be more important than some think.

The rest of the reasons though I think make Python an incredibly solid choice, and above all else is the simplicity. My daughter has been able to have fun typing code into IDLE without having to get hung up with a complicated environment. The syntax is clean and simple, there is no compiling, it's very easy to just jump in and start making things happen. I think this is important, the younger the student. I was concerned that nine might be just a touch too young for this undertaking. The book itself does not make any recommendations concerning age. The more I've thought about it, the more I agree with that choice. Children vary so greatly and any number chosen would be rather arbitrary. My nine your old has done well so far, but she is already quite a book worm and leans towards more academic pursuits. An older child may struggle and there may be some that are even younger that would be fine with the material in Hello World! So rather than focus on age I think a parent needs to come at this from a perspective of ability, proclivity and experience.

In the ability area, a child is going to know how to read, work with a mouse, and type things via the keyboard. Of course the mouse is optional strictly speaking but most will probably want to use it. Some math skill would be good as well as the ability to understand the use of variables. The book tackles the necessary material in a kid friendly way but it is not dumbed down. In fact the learning potential here is huge, as one may imagine. The book is formatted with lots of visuals and fly-outs that give information on how computers operate and how programming languages deal with information processing. My daughter and I have already had interesting discussions on subjects like integers and floats. An example that draws a sine wave lead to a great teachable moment about amplitude and wave length. Then there is the constant need for approaching problem solving in a structured manner using logic. I think that taking on programming brings a wide number of benefits.

One of the features, is a little caricature of Carter that is placed throughout the book with observations that the real Carter made as he learned with his dad. These are things that a real kid noticed, and so they are likely to stand out to a child working through this book. For instance in the chapter on "Print Formatting and Strings" Carter says, "I thought the % sign was used for the modulus operator!" The book explains that Python uses context to choose how the % sign is used. There are other little cartoon characters that appear throughout the book drawing attention to important points that need to be remembered. Learning is reinforced through quizzes at the end of the chapters. The chapters are not too long but I've found that my daughter and I have to break them into sections because of her typing speed. I've been tempted at times to move things along by typing for her but I know that she will not get the same benefit from the exercise if we do it that way. I will also let errors slide by at times to allow her the opportunity to look at error messages and find the problems.

As I mentioned the book is billed as being for kids and "other beginners." I'm going to say that the primary focus is rightly on kids, and probably kids who are in grade school or maybe junior high. This is not to say that the examples and information wouldn't be great for anyone brand new to programming. There are even some nuggets for someone who has written some code but is new to Python. I am going to guess though that the average high school student will not be as taken with the cartoons and puns. I'd have loved to have written my own lunar lander game at that age though, so maybe I'm selling this short, or maybe it would be something a teen would be happy to work on away from the eyes of others, so as not to appear childish. (I may take heat for this but even as a teenage geek I was immensely worried about the perceptions of my peer group.) I think an adult that was serious about learning to program, even if they had no prior experience, would do better with heavier material. All that said, I think for children they've really hit the sweet spot and as much as marketers would like it to be so, no book can be everything to everyone.

Things start simple with print statements and loops that took me back to good old days of watching messages scroll endlessly by on display computers at Sears when I was a kid. The move towards games starts even then with text and quickly moves on to leveraging Pygame for games that utilize graphics. I think this is important as it keeps things entertaining while teaching important concepts at the same time. I have to say it is quite a bit fun to sit with my child discussing nested loops and decision trees. By the end of the book examples will have included a simple virtual pet, a downhill skiing game and a lunar lander simulation.

I've discussed a child's ability a bit but I think the last two things I mentioned must be taken into account as well. They are proclivity and experience. I've let my daughter drive the time we spend working on this. Just like the parents who project their sports dreams on their kids, I think there is a possibility to do the same with my love for all things digital. It may even be easier to do so as I view the ability to do some amount of programming to be an important life skill. The thing is I don't want to push her too hard and have her back away from it completely. This fits in with the experience part. We take it as it goes, and if things stop being fun, we will back off. I don't do this with her core disciplines from school like reading and math, but for something that is extra right now I'm not going to push. It would transition from being a joy to being work. That brings up a last and unexpected benefit from Hello World! I'm rediscovering a lot of the fun and excitement that drew me into this industry in the first place.

You can purchase Hello World! from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

199 comments

Google this! (-1, Offtopic)

Anonymous Coward | more than 4 years ago | (#28680137)

I just downloaded Google Chrome 3.0.192.0 for Mac and it crashed before I could even open a page. There is no excuse for this; my Mac [apple.com] is perfect in every way with eight 2.93 GHz cores, 32 GB RAM, and a fresh install of Mac OS X [apple.com] Leopard v10.5.7.

And they want my personal data to help make their browser better? They should ask me that when it doesn't crash on launch.

Why is it that Apple [apple.com] and Mozilla [mozilla.com] can do this but Google [google.com] can't? I ran Internet Explorer 8 [microsoft.com] for months before its final release, Firefox 3.5 [trollaxor.com] since its 3.1 days, and found Safari 4 Developer Preview more stable than Safari 3. In fact, WebKit [webkit.org] nightlies run circles around most websites with nary a freeze or crash. So what's with Google's Chrome?

What really baffles me, however, isn't the instability I've come to expect from Google, but that Google has the audacity to ask for personal user info to improve its browser. Is the search engine maker datamonger really so desperate for my private information that it's stooped to the level of Trojan horses to get it?

Everything Google does is just another way to sieve personal data away for targeting ads. This kind of Big Brother crap is more repulsive than the fat programmers that make it possible. Google, with its deep pockets and doctoral students, thinks that by holding user data hostage it can maneuver around Apple and Microsoft [micrsoft.com]. While this may be true, I'm not willing to be a part of it.

In using Google search, Ads, Gmail [google.com], Chrome or whatever else the faceless robot of a company invents, the user is surrendering their personal information to a giant hivemind. No longer are their personal preferences some choice they make; they're a string of data processed by a Google algorithm: Google dehumanizes its users!

So while Google is arrogant enough to paint pretty Trojans to try to mine our browsing habits, the least they could do is make sure it doesn't crash. If Apple, Microsoft, and Mozilla can get their preview releases right, why can't Google? And they're going to come out with their own operating system?

Get real, Google! I'll use your crashing, sneaking, spyware when my Mac has gone dead and cold and I'm looking for handouts. Until then, quit the crashing and quit syphoning off my personal data!

Thank you! (5, Interesting)

scubamage (727538) | more than 4 years ago | (#28680141)

Thanks for the review, you just gave me an idea for what I'm going to be getting my nephews for their respective birthdays. Awesome! :)

Re:Thank you! (-1, Troll)

Anonymous Coward | more than 4 years ago | (#28680575)

Troll?!?

The only Troll I see here and below is the moderator. Of course it won't matter because the metamoderation doesn't stop this sort of bullshit.

Re:Thank you! (0)

Anonymous Coward | more than 4 years ago | (#28680635)

He got you too? :(

Re:Thank you! (3, Interesting)

symes (835608) | more than 4 years ago | (#28680693)

At the risk of being modded a troll... I completely agree. I've been looking for something like this for my daughter for some time. She's nine, just got her first laptop (and old one, but decent enough) and is really taking an interest. I know that writing a simple game would give her a real buzz. Next stop Amazon.

Re:Thank you! (2, Interesting)

mcgrew (92797) | more than 4 years ago | (#28680729)

I catch myself thinking about how well kids have it today

It's like that with every generation. My dad rode a mule to school, I had a school bus. Today's kids (some of them anyway) have air conditioning in the classrooms.

But in a lot of ways the kids have it harder. For instance, there was no such thing as crack when I was a kid, and meth was only manufactured in drug company factories. If I needed a ride I could find a pay phione, today if you lose your cell you can't make a call.

My kids take for granted what I found to be amazing and new

I took running water for granted; well, mostly, because when I was small my grandparents still didn't have running water.

However, I'm not looking forward to being as old as my parents are now. My dad says "I lived 78 years without a computer and cell phone and I don't need it now", while my maternal grandfather said the same thing about indoor plumbing. Even afetr my uncle put a bathroom in his house, he still used the outhouse! I visited my Mom Saturday, and she was saying the same thing about cell phones. She has one, but she never uses it (it's maddening, these days you expect to actually be able to communicate with people).

When I was a kid, only rich, giant corporations had computers [kuro5hin.org] and about the the only interaction a normal person had with one was that your electric bill came on a Hollerith card.

BTW and OT, but who gave mod points to a troll? The parent comment should have been left neutral, or at worst, modded "overrated". The book would indeed make a good gift.

Re:Thank you! (2, Funny)

dzfoo (772245) | more than 4 years ago | (#28681223)

>> It's like that with every generation. My dad rode a mule to school, I had a school bus. Today's kids (some of them anyway) have air conditioning in the classrooms.

You had a school bus?! I had to wait for the district's bus to pick me up. Man, I wish I had my own school bus then. That would have been fun.

        -dZ.

sounds like a great book! (4, Funny)

jollyreaper (513215) | more than 4 years ago | (#28680241)

Going to be very disappointed if I get stuck. "This is so simple, even a child can do it! Someone get me a child, I can't make heads nor tails of it!"

C is the only starting language (-1, Flamebait)

Anonymous Coward | more than 4 years ago | (#28680353)

Stat with anything else and super bad habits and lack of understanding will result

Re:C is the only starting language (5, Funny)

Saint Stephen (19450) | more than 4 years ago | (#28680405)

Oh, I remember my first days of trying to get anything to work in C. (This was in the days of DOS, before Windows). Hopeless! I'd be trying to program Hello World or a very small addition to hello world like type in a character, and have to reboot the PC because I overwrote system memory :-)

Re:C is the only starting language (0)

Anonymous Coward | more than 4 years ago | (#28680633)

What..? Are you sure you weren't coding assembly? I didn't realize printf/puts had that much power!

MOD PARENT UP (1, Informative)

starglider29a (719559) | more than 4 years ago | (#28680727)

This isn't a Troll, it's Truth! Teaching a beginner to program in a sloppy language is like teaching them to drive a car with GPS, traction control, anti lock brakes, collision detection and rear-view camera. That's all fine until they have to know what they are doing. (Picture driving an MGB)

Re:MOD PARENT UP (0)

Anonymous Coward | more than 4 years ago | (#28680759)

There's some asshole with mod points modding folks as a Troll.

Re:MOD PARENT UP (0)

Anonymous Coward | more than 4 years ago | (#28681147)

mod parent troll!

Re:MOD PARENT UP (2, Insightful)

Anonymous Coward | more than 4 years ago | (#28681631)

Actually, I would say it is more akin to teaching kids how to drive in an old beater with a sloppy transmission and bad alignment. Sure, once they figure out all of the little tricks that are needed to nurse it along, they will be better drivers, but it forces them to deal with a lot of extraneous issues while they are still trying to figure out how to handle traffic laws and keep the car on the road.

You missed the point of your own story (5, Interesting)

cephus (1471105) | more than 4 years ago | (#28680361)

You went out of your way to praise your Dad for having the foresight to move beyond his comfort zone by bringing home a computer. Isn't computing simply your version of "sports and cars"? Shouldn't you be trying to emulate your father by moving beyond your comfort zone and bringing home something that will inspire your kids to pursue their own interests rather than yours?

Re:You missed the point of your own story (4, Funny)

SomeoneGotMyNick (200685) | more than 4 years ago | (#28680437)

Shouldn't you be trying to emulate your father by moving beyond your comfort zone and bringing home something that will inspire your kids to pursue their own interests rather than yours?

You mean like bringing home hookers, guns, or anything similar that might lead them to a fruitful career?

Re:You missed the point of your own story (1)

Grimbleton (1034446) | more than 4 years ago | (#28680813)

I'm sorry but what do guns and hookers have to do with each other?

Re:You missed the point of your own story (5, Funny)

Jafafa Hots (580169) | more than 4 years ago | (#28681157)

one is something that can blow your brains out, the other is a weapon.

OK, I know that's really stupid, but I'm tired.

Re:You missed the point of your own story (0)

Anonymous Coward | more than 4 years ago | (#28682365)

His nigglet kids are learning how to play gangstas and hoes. Its the modern day nigger version of cowboys and indians

Re:You missed the point of your own story (0)

Anonymous Coward | more than 4 years ago | (#28681401)

This was modded insightful? You can't smell the sarcasm?

Re:You missed the point of your own story (-1, Troll)

Anonymous Coward | more than 4 years ago | (#28680439)

Shouldn't you shut up? The last thing the world needs are more kids who are only good at playing sports.

Re:You missed the point of your own story (5, Interesting)

ShieldW0lf (601553) | more than 4 years ago | (#28680641)

Get em a RepRap. Teach em to do 3D modeling, back off and let em make their own toys. That's what I'm doing... my kid has already developed a bunch of toys and the circuit boards for our RepRap are in the mail.

As for teaching kids programming, I'd suggest starting with Scratch from MIT. My daughter loves it.

Re:You missed the point of your own story (4, Insightful)

Darkness404 (1287218) | more than 4 years ago | (#28680731)

Scratch is great in that it teaches how to "think" like a programmer. However, ends up not really doing you a lot of good in the long run. Python is an easy to use language but it also is very "real" in that knowing Python can get you somewhere. That said, Scratch is very easy to use and you can make decent applications in there, but in the end you have effectively a "toy" language which won't really help you in the long run.

Re:You missed the point of your own story (2, Interesting)

ShieldW0lf (601553) | more than 4 years ago | (#28680869)

Scratch is great in that it teaches how to "think" like a programmer. However, ends up not really doing you a lot of good in the long run. Python is an easy to use language but it also is very "real" in that knowing Python can get you somewhere. That said, Scratch is very easy to use and you can make decent applications in there, but in the end you have effectively a "toy" language which won't really help you in the long run.

You need to get them hungry to create first. Once they hit those limitations, that's when you raise the bar. You can do pretty sophisticated event driven programming in Scratch, and you can reverse engineer other kid's creations from within the IDE. I know there are a lot of kids who moved on to ActionScript from Scratch.

Re:You missed the point of your own story (1)

Darkness404 (1287218) | more than 4 years ago | (#28681391)

The hardest part about coding really isn't the ideas, especially for children ideas flow naturally. Its the coding part that is difficult. How many of us when we were on our C64s had a great idea for a game but couldn't code it? If the person learned Scratch rather than a more "traditional" programming language, their skills other than their ideas end up going nowhere. On the other hand, if you give them Python they can more logically transition into C, C++, etc. And really, ActionScript isn't that much better than Scratch. Sure, you can more easily port it, to other systems (most systems run Flash) but it still won't port to any other language.

Re:You missed the point of your own story (2, Interesting)

ShieldW0lf (601553) | more than 4 years ago | (#28681619)

That's why you give them something that makes the coding easy as in not monotonous but not easy as in done for you. Then they have fun creating and learn to enjoy creating. When they have an idea that they can't implement, THAT is when you introduce the syntax.

Not talking out of my ass here... I tried a bunch of different things, including LOGO and Squeak. Scratch was the best received. Eventually, Scratch will naturally lead to Smalltalk.

Re:You missed the point of your own story (2, Insightful)

Dragonslicer (991472) | more than 4 years ago | (#28682505)

Scratch is great in that it teaches how to "think" like a programmer. However, ends up not really doing you a lot of good in the long run. Python is an easy to use language but it also is very "real" in that knowing Python can get you somewhere. That said, Scratch is very easy to use and you can make decent applications in there, but in the end you have effectively a "toy" language which won't really help you in the long run.

How old is the child that you're giving this to? I'm not a huge fan of Python, but I've seen quite a few languages that are a lot worse (or just plain harder for kids to play with, such as assembly), so I'd say my opinion on it is pretty neutral. Having said that, what are the odds that Python will still be a "hot" language in 15-20 years, when the kid will at all care about "getting somewhere" or "the long run"? 20 years ago, how many people would have said that Java would be popular today (yes, I am aware of when Java was first created; that's kinda the point)? My first programming language was Commodore Basic when I was about 5, followed closely by GWBasic. Neither of those are particularly useful these days, but they still served the purpose of getting me interested in programming and ultimately to a computer science degree.

Re:You missed the point of your own story (0)

Anonymous Coward | more than 4 years ago | (#28682215)

what software do you use to design a part for RepRap? I've always been disappointed at FOSS options for solid modeling and part design. BRL-CAD is very well developed, but it wasn't made to be an intuitive part modeler like a SolidWorks or ProEngineer.

Also, I seem to recall the Fab@Home [fabathome.org] project having a parts/materials price tag of about $2500 (or that's what someone will sell you a kit for, not surel . That seems on par with what my parents probably spent on our first computer or two. (too young to know what the C-128 went for, but our first PC was about $2k).

Ok, finally found where RepRap claims a target of ~$400 for parts. not bad.

Re:You missed the point of your own story (2, Informative)

CastrTroy (595695) | more than 4 years ago | (#28680647)

Good point. Also, how do you really get somebody interested in programming in this day and age? I think it would be very hard to impress a kid with a "Hello World" console program with the current state of technology. I mean, when QBasic Gorillas was right up there with the most advanced games, and you could learn how to modify it yourself in a week, then you got interested really fast, because you realized that programming wasn't some kind of magic. But compare that to now, where it would take years of learning to get anything close to a current program, and it could be a difficult thing to get someone interested in the first place.

Re:You missed the point of your own story (1)

lysdexia (897) | more than 4 years ago | (#28680809)

I dunno. My daughter is four, and has a pretty good grasp of the alphabet and can recognise and type her name.

She thought

print "Darby" * 5

was pretty neat.

I'm sure it would bore an older kid ... unless it didn't. Kids are bizzarre, which is nice.

Re:You missed the point of your own story (1)

dkleinsc (563838) | more than 4 years ago | (#28681095)

Having taught kids programming, I've seen kids get really fascinated by the very simple game of "computer picks a random number between 1 and 100, user gets 10 guesses and is told higher, lower, or just right".

What's particularly nifty about that game, besides being easy to develop, is that it's a remarkably short conceptual hop from playing that game to understanding binary searches and base-2 logarithms. I've explained that stuff to 10-year-olds, and while I don't expect them to nail it on a test I do think that when they start having to deal with exponents and logs in 7th grade or so they'll have a big leg up on their classmates.

Re:You missed the point of your own story (1)

badboy_tw2002 (524611) | more than 4 years ago | (#28681959)

I started when I was 7 or so in BASIC - at that time there was no way I was going to make anything as advanced as asteroids or frogger, but being able to write a "choose your own adventure" game with if loops and PRINT statements was pretty awesome to me. The first time I managed to make the speaker beep was an achievement.

Think about it this way - there are great works of art out there yet a child will spend hours and hours coloring and making stick figures. They don't seem to be discouraged by it at all. The process of doing and learning is its own reward.

Re:You missed the point of your own story (1)

migla (1099771) | more than 4 years ago | (#28681983)

Bah... Of course one who likes computers should introduce them to their kids. If the kids don't want to program, so be it. If they do, they'll have a knowledgeable mentor.

Sure, one should try to find and encourage all sorts of things, not just what one knows, but I thinks this mentality of not telling kids what you think or like is worrisome. If you don't influence your kids, fucking Toys'R'Us will.

Let the kids know what you think and what you like. Just don't be a dick about it.

Re:You missed the point of your own story (2, Funny)

Anonymous Coward | more than 4 years ago | (#28682269)

If you don't influence your kids, fucking Toys'R'Us will.

I'm a Toys 'R Us kid you insensitive clod!

Re:You missed the point of your own story (1)

Shawn Parr (712602) | more than 4 years ago | (#28682357)

bringing home something that will inspire your kids to pursue their own interests rather than yours?

Maybe he is just very subtle, and this is a stab against python....

Re:You missed the point of your own story (1)

sagematt (1251956) | more than 4 years ago | (#28682533)

You went out of your way to praise your Dad for having the foresight to move beyond his comfort zone by bringing home a computer. Isn't computing simply your version of "sports and cars"? Shouldn't you be trying to emulate your father by moving beyond your comfort zone and bringing home something that will inspire your kids to pursue their own interests rather than yours?

And this is bad because...?

If they don't like it, you can move on and try something else. But if they are already showing interest in computers... why not?

Sounds cool but (0, Insightful)

Anonymous Coward | more than 4 years ago | (#28680433)

I see your reasons and they aren't too bad but I wouldn't have picked Python myself. Maybe grab something from the top 3 most popular languages Java, (C, C++, C#) or PHP. As far as popularity goes though you could definitely do worse than Python.

Re:Sounds cool but (2, Insightful)

eln (21727) | more than 4 years ago | (#28681019)

I'm not sure I agree with Python either, but popularity of the language shouldn't really enter into the equation at this stage. What you want is a language that will be easy enough for them to pick up without being overly frustrated but powerful enough to allow them to create programs that actually do something useful. The purpose is to try and spur interest in programming, not train them for a job.

The first language I did any programming in was Applesoft Basic, because the household computer happened to be an Apple IIgs, and it was included. After that, I was taught Pascal in high school. After that, I learned Fortran 77. Now, I do a fair amount of development work, but don't use any of those languages. And yet, learning them was not a waste of time, and in fact taught me a lot of concepts that made me a better programmer down the road with other languages.

Of course, my experience with Fortran also gave me a deep abiding hatred for languages that enforce indentation, which may be one of the reasons I never picked up Python.

Free alternative (3, Informative)

johnjaydk (584895) | more than 4 years ago | (#28680445)

There is a really nice, free alternative available in "How to think like a computer scientist". Despite the title, it's aimed regular school kids and is being used to teach a class on python programming. It's just come out in a second edition. http://openbookproject.net//thinkCSpy/ [openbookproject.net]

Re:Free alternative (0)

Anonymous Coward | more than 4 years ago | (#28680705)

lol

Re:Free alternative (0)

Anonymous Coward | more than 4 years ago | (#28680845)

Another free alternative is Livewires

Re:Free alternative (1)

maxume (22995) | more than 4 years ago | (#28681269)

It sounds to me like the reviewed book is aimed at 4th-5th-6th graders, and looking at the link, it looks like that book is mostly aimed at 9th-10th-11th graders.

(The younger kids will find the older book incredibly dry, and the older kids will find the younger book childish)

Re:Free alternative (0)

Anonymous Coward | more than 4 years ago | (#28681815)

Despite the title, it's aimed regular school kids and is being used to teach a class on python programming. It's just come out in a second edition. http://openbookproject.net//thinkCSpy/

At least, they'll get familiar with everyone's favorite text editor when "Configuring Ubuntu for Python Development"...

Start them on a tricycle? Or a GSXR? (2, Interesting)

starglider29a (719559) | more than 4 years ago | (#28680523)

Here's a question: If we teach our kids to program, do we start them on:

10 N=N+1
20 PRINT N
GOTO 10

or OnClick="doHelloWorld"

After learning to program on a TRS-80 and later GWBASIC but now doing ASP.NET, I find myself looking at code (ExecuteSacalar()) as if every step takes 1/100th of a second, thus slowing performance. When in actuality, it takes a microsecond. Are we better off teaching them how to write an algorithm (How much is 1 + 2 + 3 + ... + N?) or to start with finding what they need in a library? I've seen advantages and disadvantages to both my career.

Much of what I do now is finding the best canned operation (GridView) and toying with styles, rather than rolling my own Repeater. Seldom, but not never, does knowing how to step through a string get used. Although rolling my own DDL's is faster than letting .NET do it.

Should we teach our kids how to ride a motorcycle where pedaling isn't needed? Or do they need to learn to pedal before they ride a motorcycle?

Re:Start them on a tricycle? Or a GSXR? (2, Interesting)

Darkness404 (1287218) | more than 4 years ago | (#28680825)

It depends, to finish up your analogy, should we give the kids a tricycle when they already have a motorized Segway, or give them a motorcycle. Showing a kid "Hello World" doesn't provoke the same interest it did back in the '80s. Really, back then we had (for the time) state of the art games that you could fully modify with a week or two of learning. Even "advanced" games like Super Mario Bros. for the NES is looked at as something a beginner should be able to do. So unless the kid can make a game equivalent to SMB, they aren't going to be too interested.

Re:Start them on a tricycle? Or a GSXR? (1)

muridae (966931) | more than 4 years ago | (#28681145)

At that age, do they really need to know how to solve a sigma equation? I remember learning to code on an Apple IIe, writing lines of Apple basic on note pads before typing them in to make sure that I left enough line numbers free to add little patches back in later. No one ever told me that each line of code cost time, nor that each individual step on a line added to that time. In 4th grade, it didn't matter even on those slow computers. We were not dealing with concepts that would be useful in later life, and even a college freshman course in C++ broke all of those old bad habits.

As for teaching them to use libraries, you'll get a resounding "Yes!" from me. I've met CS graduates who, because the uni does not allow outside libraries for some projects, never learned how to search google for a function or known solution to a problem. They try to reinvent the wheel every single time. It makes sense in school, where the using a library prevents you from learning the underlying concept they are teaching, but it makes not a wit of sense in the real world. Same for writing a dynamic or shared library, depending on the OS. 10 years of college, and I can't remember a single class that covered anything other than static libraries linked in at build time.

None of that matters if the child doesn't want to learn how computers work, though. Some kids just want to play and build, stuff like Scratch, Processing, Squeek or Croquet. Others want to learn how to use it for more complex stuff, so languages like Haskell might be up their alley. And some kids are so curious that teaching them C and assembly on a small platform would be a good way to pique their interests (personal recommendation of the DS homebrew scene, but any console will do). There won't be 'one way' to teach kids to program, just like there isn't just one type of kid or one type of programmer. But leave the math topics till later, when the kid wants to learn how to do things faster or wants to learn the math.

Re:Start them on a tricycle? Or a GSXR? (0)

Anonymous Coward | more than 4 years ago | (#28681311)

You have to get the interest level up for kids first. Cooking is the same way. You may think boiling water is a rudimentary skill, but getting the kids to just follow directions completely by making Jello gets them on the road to understanding how to parse a recipe. Plus it holds their interest in the form of desert in an hour.

I think that is the same issue here.

On the other hand, being in the embedded world, I have had to work with to many people that were really accomplished CE grads that could code around me in a heartbeat at the level you describe, but would trip over scoping issues in embedded programming over and over and over again. They were great at riding wheelies on the motorcycle but kept falling off the tricycle.

Not Python! (3, Insightful)

Un pobre guey (593801) | more than 4 years ago | (#28680547)

Why, Lord, Oh why are blocks defined by indentation!

Re:Not Python! (1, Insightful)

Anonymous Coward | more than 4 years ago | (#28680685)

Agreed. Whitespace defining control flow makes Python a no-go language for me.

Never heard of anything so stupid in my life... Well, except for COBOL, of course.

Re:Not Python! (0)

Anonymous Coward | more than 4 years ago | (#28680911)

God help anybody that ever needs to read your code!

Re:Not Python! (0)

Anonymous Coward | more than 4 years ago | (#28682113)

You're making the mistake that all Python fanboys make: that not enforcing indentation means that no one will ever indent their code. Utter shite of course, but you all keep saying it.

Re:Not Python! (2, Informative)

lysdexia (897) | more than 4 years ago | (#28680719)

There are several reasons usually cited for using whitespace to define code blocks. Here's a decent intro.

http://www.diveintopython.org/getting_to_know_python/indenting_code.html

It's one of those things: I find it completely easy and intuitive. I don't have any trouble switching between python, perl and ksh (which are what I use to get most of my work done). A decent editor (I like vim) will usually take care of auto-indenting.

Or were you just kvetching?

Re:Not Python! (3, Insightful)

Un pobre guey (593801) | more than 4 years ago | (#28680945)

Not just kvetching, though that is certainly part of it. I like to format code for 1) readability and 2) printability on 100 character lines. This means I do a lot of indentation that Python does not like, but has no syntactical meaning or importance.

It is, of course, purely a matter of taste and habit. Python is certainly as good a language as any. The indentation thing is a showstopper for me, but evidently not for many other people. Also, choosing a programming language for kids is no simple matter, Python or not.

Re:Not Python! (1)

dkleinsc (563838) | more than 4 years ago | (#28681369)

If you're talking about indenting due to a long line, then most of the time Python makes it quite possible to indent as you please. For instance, this is perfectly ok:
      if (a == b and
              c == d):
            doSomething(foo=a,
                                bar=b)
            doSomething(foo=c, bar=d)
            doSomethingElse()

This won't work in Python:
    if (a == b and c == d):
        doSomething(foo=a, bar=b)
                      doSomething(foo=c, bar=d)
                doSomethingElse()

Between the two I'll take the first version every time. The only real restriction is that the beginning of a statement must match the correct indent level, but that's a part of every coding standard I've come across.

Re:Not Python! (3, Insightful)

rhoderickj (1419627) | more than 4 years ago | (#28681025)

Using whitespace to define code blocks is awkward at first. I revolted at the idea for a good year or two before finally giving it a go. Ultimately, I barely noticed. Looking back, one could just as easily say, "Why, Lord Oh why are blocks defined by braces!" Honestly, most of us are just used to braces, so anything different is bound to give rise to the knee-jerk reactions of fear and disgust. Ultimately, it is much like how people refuse to use Firefox or Opera over IE: "You mean I don't click the little E to get Internet? That's absurd!" In the end, I found that I disliked Python for other reasons, but the use of whitespace is not one of them. Even so, it's a great language and deserves a look.

Re:Not Python! (1)

Obfuscant (592200) | more than 4 years ago | (#28682025)

...so anything different is bound to give rise to the knee-jerk reactions of fear and disgust.

I don't fear python, nor am I disgusted with it. I simply think that whitespace is whitespace for a reason, and that whitespace should not be part of the syntax for a language.

Any language that depends on whitespace to delimit blocks of code (e.g., the code belonging to an IF or FOR loop) is poorly defined. Whitespace exists for visual depictions of code, not internal.

I don't program python, so someone that does will have to answer this question. Does python treat 'tab''sp''sp' at the start of a line as 10 spaces of indent, or two, or 6? Or does it prohibit tabs? The standard 'typewriter' expansion is 8 spaces. When I program, I tell vi to make it four. It's one "character". Which way does python see it? (And the fact that I can ASK this question makes the point that whitespace shouldn't be syntactically important.)

Re:Not Python! (1)

digitig (1056110) | more than 4 years ago | (#28682571)

I don't program python, so someone that does will have to answer this question. Does python treat 'tab''sp''sp' at the start of a line as 10 spaces of indent, or two, or 6? Or does it prohibit tabs? The standard 'typewriter' expansion is 8 spaces. When I program, I tell vi to make it four. It's one "character". Which way does python see it? (And the fact that I can ASK this question makes the point that whitespace shouldn't be syntactically important.)

From the documentation:

Leading whitespace (spaces and tabs) at the beginning of a logical line is used to compute the indentation level of the line, which in turn is used to determine the grouping of statements.

First, tabs are replaced (from left to right) by one to eight spaces such that the total number of characters up to and including the replacement is a multiple of eight (this is intended to be the same rule as used by Unix). The total number of spaces preceding the first non-blank character then determines the lineâ(TM)s indentation. Indentation cannot be split over multiple physical lines using backslashes; the whitespace up to the first backslash determines the indentation.

Cross-platform compatibility note: because of the nature of text editors on non-UNIX platforms, it is unwise to use a mixture of spaces and tabs for the indentation in a single source file. It should also be noted that different platforms may explicitly limit the maximum indentation level.

Re:Not Python! (1)

Deltaspectre (796409) | more than 4 years ago | (#28682703)

It will work out well as long as you're consistent with your code. A quick test with showed that one space, five tabs and two spaces, and two tabs all worked. As long as you use one and stick to it.

I also use vim smart tabs (or whatever they are called, where it does 4 spaces instead) and python just sees them as they are in the file. 4 spaces.

I think the recommendation is to stick to 4 spaces however, and not mix tabs up in there, but that goes along with staying consistent in your code.

Re:Not Python! (0)

Anonymous Coward | more than 4 years ago | (#28681091)

I believe it is an effort to force the writer to write human readable code.

I started coding in C and moved to Python. Personally, I have been bitten more times by forgetting to put in an end bracket than I ever have been for setting the tabbing wrong.

Anyway, in C you are supposed to use tabbing to do this anyway just for the human readability, the only thing is in C you need to add brackets as an additional measure. Wasted characters IMO.

Re:Blocks by indentation (1)

wexsessa (908890) | more than 4 years ago | (#28681149)

because it makes sense. Back in the 1960s & 70s I was working for IBM, when PL/I appeared. It uses Do... End to delineate blocks, and I was OK with that but then found it wasn't enough. So I developed an indentation scheme, jogging right at a Do and jogging back left at an End (white space is ignored in PL/I). This made it much easier to grasp the logical flow at a glance. Unfortunately I didn't keep any examples when I quit programming, but I think it would look remarkably similar to Python (except for the Do & End keywords).

Re:Blocks by indentation (0)

Anonymous Coward | more than 4 years ago | (#28681441)

because it makes sense.

No, it doesn't.

Whitespace (by definition) is blank - it has no visual representation. You're trying to tell me that something you can't see should control how a language works?

Brackets, Braces, DO .. END, etc. all perform the same function in computer languages that punctuation does in human languages. It makes as much sense as punctuating human languages with whitespace. (Which we don't do, for obvious reasons.)

Re:Blocks by indentation (1)

Beardydog (716221) | more than 4 years ago | (#28681943)

Spoken language is (more or less) punctuated by whitespace. Tone certainly plays a role, but I can (lamentably) understand Ben Stein well, whether he's selling me eye drops, or calling me a latent Nazi.

I understand the philosophical rejection of whitespace as a control, and the argument appeals to a part of myself I have respect deeply, but at the same time, you -can- see it. Space and Tab have ASCII codes, and they are represented in whatever interface you're using by a region of white pixels, the same way an "A" is represented by a region of white pixels interspersed with a specific pattern of black.

If the language occasionally required a couple of spaces in a row before a line of code, and other times required a single tab, the result would certainly be horrific, but as it is, the requirement is both functional, and visually informative.

Sane people use tabs to separate blocks for the purposes of readability, anyway. At that point, curly braces become redundant information.

Re:Blocks by indentation (1)

Obfuscant (592200) | more than 4 years ago | (#28682473)

... but as it is, the requirement is both functional, and visually informative.

Since compilers and interpreters don't have to SEE your code, the "visually informative" requirement exists ONLY for humans. It should not be a requirement for proper execution of the code.

Nor is whitespace a functional requirement -- unless you've defined your computer language to require it, and then you're arguing in a circle. "It's a requirement because I decided to require it" isn't enough to claim it is a functional requirement. Many languages do NOT require it, because they were not defined to require it. The vast majority of languages need whitespace only to separate tokens.

Space and Tab have ASCII codes, and they are represented in whatever interface you're using by a region of white pixels, ...

No, they aren't. They are usually represented by SPACE -- a gap -- which usually appears as a section of terminal screen in whatever color the background happens to be. (Black, white, grey, yellow, pink, blue, orange, whatever...) In SOME editors, and on some systems by default, tabs are represented by a specific character, similar to the way an 'A' is represented. Some systems even have a mode where spaces are represented by a special character on the screen (like an underscore with serifs on the end.)

They aren't represented on all systems by the same amount of space, either. Some systems expand tabs to every 8 columns. I set vi to 3 or 4, usually, so that my columns don't run off the edge of the screen as I indent them.

And the same number of characters (space and tab) can result in vastly different "whitespace" representations, even assuming the same interpretation for a tab. "sp/sp/sp/sp/sp/sp/tab" will look VERY different than "tab/sp/sp/sp/sp/sp/sp", even though they are both the same number of characters.

Sane people use tabs to separate blocks for the purposes of readability, anyway. At that point, curly braces become redundant information.

Wow. Programmers who don't use tabs are insane?

No, GOOD programmers use whitespace to make their code readable by humans; they use the syntax of the language to make it readable by the compiler/interpreter. Using the VISUAL representation of the code as input to the compiler leads to nonsense like a language that says "a red flashing italic FOR compiles this way, but a blue flashing bold FOR compiles this other way...". That's just plain stupid, and anyone who defines a language like that would be laughed at.

Re:Blocks by indentation (1)

Un pobre guey (593801) | more than 4 years ago | (#28682675)

Sane people use tabs to separate blocks for the purposes of readability, anyway.

Not anyplace I've worked at. People constantly differ as to the number of spaces per tab, and it is common to prohibit tab characters in code altogether. This is not because the compiler/interpreter cares, it doesn't. It is for human readability. Even in languages with curly braces, erratic indentation is difficult to read and gets in the way of code analysis and programming. This promotes bugs and errors.

The suggestion that the programmer make the visual distinction between tabs and spaces while coding is foolhardy, even if the spaces and tabs are visualized with different characters. For code to be of high quality, the programmer must remove whatever noise or clutter is keeping her from correctly grasping what is going on. To add gratuitous indentation constraints works against this. Python would be just as great a language if it had curly braces. Nothing would be lost, and clarity would be gained. This indentation gimmick makes it a rebel without a cause.

Re:Blocks by indentation (1)

digitig (1056110) | more than 4 years ago | (#28682605)

No, it doesn't.

Whitespace (by definition) is blank - it has no visual representation.

Wrong. Oh so wrong. Try removing all redundant whitespace from a well-formatted program in a language of your choice (other than Python!) and see how readable it is compared to the original. Then try to tell us that the whitespace has no visual representation.

Re:Not Python! (1)

SlashV (1069110) | more than 4 years ago | (#28681643)

Why, Lord, Oh why are blocks defined by indentation!

Better question: Why not ?
I suppose you indent your code anyway. In that case, the braces, begin..ends and whatnots are only syntax clutter.

The beauty of this book (5, Funny)

InsertWittyNameHere (1438813) | more than 4 years ago | (#28680565)

is that not only does it teach programming but as a side effect you're kids are guaranteed to be safe from pregnancy, STDs, or any form of social life.

Mod Parent Insightful Pls (0)

Anonymous Coward | more than 4 years ago | (#28680723)

Some jackass moderator's having a laugh and modding everything down. Please fix this mod to insightful to make up for his karma being screwed (funny is neutral karma).

Re:The beauty of this book (1)

Lurchicus (1280666) | more than 4 years ago | (#28681723)

Actually... Hello World of Warcraft would have the side effect that you're kids are guaranteed to be safe from pregnancy, STDs, or any form of social life.

FOSS isn't a reason... (1)

Obfuscant (592200) | more than 4 years ago | (#28680621)

FOSS isn't a reason to use a language to teach programming.

FOSS doesn't mean there is a lot of freely available code to look at, FOSS means there is source code for the INTERPRETER that you can modify. I suspect it is written in C or C++, so you don't get any advantages in having the source for the python itself. Now, FOSS is a good argument for using gcc, since you get lots of example code ...

Even "closed source" languages have freely available code to look at. MATLAB, e.g..

Re:FOSS isn't a reason... (1)

maxume (22995) | more than 4 years ago | (#28681021)

The most used python interpreter is indeed written in C (though there are projects in C#, Java and Python; That's Jython, IronPython and PyPy, respectively). On the other hand, the default install ships with a couple of megabytes of python source files (many of the standard libraries are pure python code).

Sounds familiar... (1, Funny)

Anonymous Coward | more than 4 years ago | (#28680773)

"Hitting middle age has been an interesting time. I catch myself thinking about how well kids have it today and sounding a lot like my father. One difference is while my dad was happy to teach me about horses or goats, we never spent any time hooking up pipes together. I think he did realize that indoor plumbing was important and I will always be grateful for the commode he brought home one day. It was a substantial purchase for our household. I spent many days excreting feces and flushing the results down the toilet. In my home today we have a considerably better situation, plumbing wise. There are usually a couple showers running as well as the jacuzzi upstairs. My kids take for granted what I found to be amazing and new. Still, that's all pretty normal and I'd like to give them an opportunity to go deeper if they are so inclined, just like we give them opportunities to explore other skills and pursuits. With that in mind I brought a copy of Hello Plumbing! home a few weeks ago, and the response from my oldest has been surprisingly enthusiastic."

Expectations of today's 11 year old different (2, Interesting)

fprintf (82740) | more than 4 years ago | (#28680775)

The expectations of today's 9 - 14 year old is very different than for those of us learning BASIC on a Commodore or Atari in the early 80s. I tried Scratch and Kidsprogramminglanguage with my now-13 year old. As soon as he saw the creations we could make he said "at what point do I get to make a game like on Xbox or my computer?" He just wasn't satisfied making lines on the screen or adding numbers or helping to solve his math homework (when it would be easier to solve it in his head). So, yes it would be cool to make lunar lander and I would have also been soooo happy to have such a game in 1983.

Then again, his favorite games now are often on Kongregate - sometimes the simpler the better, like launching a stick figure out of a cannon and solving various puzzles of angle, thrust, bounce etc. So maybe it is possible, but it needs to be graphic, challenging and most of all fun.

Re:Expectations of today's 11 year old different (3, Insightful)

Maximum Prophet (716608) | more than 4 years ago | (#28680979)

I know people who wrote, acted and filmed their own movies on Super 8, back when "Star Wars" was first in theaters. It wasn't possible for an amateur at the time to produce anything close to what a professional could produce, but they did it anyway. I don't know how you would go about instilling the desire to build your own, they just had that desire to begin with.

Re:Expectations of today's 11 year old different (2, Interesting)

AdamWeeden (678591) | more than 4 years ago | (#28681307)

If that is the case, I would HIGHLY recommend you get him started on Kongregate Labs' Shootorial [kongregate.com]. It is essentially a tutorial on how to make a side scrolling shooter in Flash from the ground up. It starts out basic but introduces concepts like logic and hit boundaries and other things that actually require code. Hope he enjoys it!

Here's how you can tell (1)

tekproxy2 (1386447) | more than 4 years ago | (#28680925)

Hand your kid a copy of The C Programming Language. If they can't handle that, they are not ready.

Re:Here's how you can tell (2, Insightful)

aquatone282 (905179) | more than 4 years ago | (#28681421)

Hand your kid a copy of The C Programming Language. If they can't handle that, they are not ready.

Why not just chase him around the yard with a baseball bat?

A lot more humane than your proposal.

Re:Here's how you can tell (0)

Anonymous Coward | more than 4 years ago | (#28681995)

Why not just chase him around the yard with a baseball bat?

Because he'd have to peel his sweaty lard ass off the couch amongst the cheetos crumbs and rat droppings.

Question for the OP (1)

immakiku (777365) | more than 4 years ago | (#28681061)

You drew an analogy to parents projecting sports dreams onto their children. Do you see this as a positive phenomenon? Sure, if you value programming as the absolute best thing a child can be familiar with, this makes sense. But what if your child would naturally have favored or have talent in some other area - say physics? The activity you are pursuing with her could lead to relative underdevelopment in physics when naturally she might have become a great physicist.

An article featured on Slashdot a while back, titled "A Mathematician's Lament", described how, instead of prescribing a course for children to follow in Mathematics, a more effective way to teach math would be for each child to organically discover math on their own. I see that you are attempting to do similarly with your child and programming (instead of math). But that article also brought me to wonder, why favor one subject over another? Why not also let the child organically and naturally discover her talents and interests? Best results might come from doing this with "Hello World", as well as doing similar activities with art, music, physics, language, and sports, in equal proportions.

Re:Question for the OP (2, Insightful)

Azghoul (25786) | more than 4 years ago | (#28681525)

I love the Lament, it's incredible.

I'd guess (hope?) that you don't bring this book out until / unless your child shows an interest.

But at some point you have to show them SOMETHING though, right? If you don't show them, how will they know what there is to be interested in?

Re:Question for the OP (1)

immakiku (777365) | more than 4 years ago | (#28681599)

Well yes. This is, after all, a book review. I was rather questioning the OP's active push towards one direction. I'm curious if the OP had thought about the possibility of his child being better at other things as well as well as what the rationalization for pushing programming was.

Re:Question for the OP (1, Insightful)

Anonymous Coward | more than 4 years ago | (#28681853)

You drew an analogy to parents projecting sports dreams onto their children. Do you see this as a positive phenomenon? Sure, if you value programming as the absolute best thing a child can be familiar with, this makes sense. But what if your child would naturally have favored or have talent in some other area - say physics? The activity you are pursuing with her could lead to relative underdevelopment in physics when naturally she might have become a great physicist.

Actually, I come from a different perspective. I view programming to be a liberal art (in the classic sense) - a core building block on the path towards being a well educated, well-rounded person. Very few people just program - they write applications and libraries that do things. I don't think you are going to hamper a budding physicist by teaching her how to program at the age of 9. Instead, getting kids excited about programming is probably one of the best ways to give them the tools (mental and physical) to explore whatever it is that interests them.

Very different from days of Compute! and Byte... (2, Insightful)

digitalhermit (113459) | more than 4 years ago | (#28681081)

Back then, if you wanted to play a game you often had to copy programs from source code listings. So you had things like line validators (checksum as you entered each line) and whole sections devoted to programming. The projects, I think, were also very different. I remember building a WeFax device to decode satellite weather facsimile images. There was also the Ciarcia articles that talked about everything from building a micro-computer to assembly programming.

Sure, there are still programming magazines, but we don't have to solve the same things we did then. Now it's just a matter of running CPAN, downloading a Flash or Java snippet, or just a #include.

That's why I'm super grateful for the availability of Linux, free software, and the suite of compilers. I remember saving up for weeks to purchase Megamax C and later GFA BASIC. I remember borrowing a Z80 card so that I could run Borland Turbo Pascal. Now it's a quick download and every language I want is available within moments.

The downside is that it's a lot more complex now. If I wanted to make a graphics program back then, for example on TI BASIC, it was a relatively simple matter to redefine a character set with a bunch of POKEs. Now we have to worry about initializing a window, internationalization, acceleration, etc.. Sometimes it's a bit daunting for non-professionals. Sure, there things like SDL and TCL/TK and a raft of IDEs, but still I don't think it is as easy as it was back then. (Of course, today's software does a lot more).

Re:Very different from days of Compute! and Byte.. (2, Interesting)

FreakyGreenLeaky (1536953) | more than 4 years ago | (#28681229)

So you had things like line validators (checksum as you entered each line)

Wow, now that brings back memories. I remember typing many, many lines of numbers (with the checksum at the end) and then finally having a stick-figure or something dodge falling balls...

Of course, the real fun began when I finally learned what those numbers meant :)

Easy start environment: Processing (2, Insightful)

j-stroy (640921) | more than 4 years ago | (#28681637)

I got into computers because I could hack the BASIC games on an Apple ][+

Accessibility is king! But finding which thread to grab amidst the jumble of a modern GUI OS is tricky!!

I have just started playing with "Processing" [processing.org] and it seems to have a nice mix of understandable code and super powerful libraries to take advantage of: cross platform, modern hardware and complex meta-behaviours that we might expect.

As well, I am "sandboxing" with "Parallels" [parallels.com] on top of OSX and I have found it to be very stable. (It allows virtualization of Windows flavours, OS X & varieties of linuxen concurrently) The images can be booted Read Only or not. Creating a bulletproof, clean starting environment is what kids(and productions) need, and virtualization images might be part of this.

I'm new to virtualization, but it feels like the future to me. Since I have taught in hands-on Lab settings I think this is a better solution for a shared use lab than straight up disk imaging... It would allow week by week, class by class customization of the Boot Image, and changes could always be rolled back.

HTML/CSS/JavaScript (2, Interesting)

XxtraLarGe (551297) | more than 4 years ago | (#28681241)

It seems to me if I had a child and wanted to teach them programming, I'd do it using these three techs in this order. You don't need any special software to write any of them, they are easy to learn, and there are millions of free examples available to you. The best thing is, no compiling, no need for a server. You can write a bit of code, open it with your browser and get instant gratification.

Re:HTML/CSS/JavaScript (1)

Freetardo Jones (1574733) | more than 4 years ago | (#28682079)

and there are millions of free examples available to you.

Too bad many of those millions are shitty examples that teach bad coding techniques and style. God help any kid who learns how to program from viewing slashcode!

Re:HTML/CSS/JavaScript (2, Insightful)

RegularFry (137639) | more than 4 years ago | (#28682529)

The problem is, they're all broken. It's far harder than it should be to get anything meaningful done reliably and well in CSS and HTML, even if the specs were implemented properly. Javascript is hamstrung by crappy implementations with crappily pointless differences between them, and a crappy standard library. Don't get me started on the DOM API, that just makes me cry.

Really, the only advantage that HTML/CSS/Javascript has over Python is that every PC has an interpreter present out of the box, but given that if you're doing JS there's few tools better than Firebug, you've got installation to do anyway and you might as well just suck it up.

Re:HTML/CSS/JavaScript (1)

Obfuscant (592200) | more than 4 years ago | (#28682683)

Of the three you list, only the last is a programming language.

If you want create a web page designer, teach them HTML and CSS.

If you want to create a programmer, teach them how to tear a complex problem apart into small bits that a computer can understand and then how to express those small bits to the computer -- in any language that doesn't have 500% overhead or arbitrary interpretations based on things like how many spaces are in the line. The former rules out COBOL, the latter python.

FORTH. Yes, you have to learn to think backwards, but it is SO easy to start with a small piece and add and combine them. Thinking backwards enforces decomposition of the process into small bits. In fact, LOGO, IIRC, was a very FORTH-like language that was intended for kids. "Move the turtle so many pixels up, turn so many degrees right..."

I didn't read to book, but... (2, Interesting)

ratboot (721595) | more than 4 years ago | (#28682011)

Python was created from the start to be easy to learn But I think BASIC on VIC-20 was even easier to learn then Python : no need to use colons or indenting! And what about the dreaded ==, impossible to understant for a kid! Mod me troll.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...