Hello World! 199
Hello World! Computer Programming for Kids and Other Beginners | |
author | Warren and Carter Sande |
pages | 430 |
publisher | Manning |
rating | 9/10 |
reviewer | JR Peck |
ISBN | 978-1933988498 |
summary | Computer programming for kids and other beginners. |
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.
Thank you! (Score:5, Interesting)
Re:Thank you! (Score:4, Interesting)
Re: (Score:2)
At the risk of being modded a troll...
I'm lost. Why would you think you'd be modded a troll for reading a book review on Slashdot, then saying "hey, I think I'm going to buy this book!".
Or is this reverse-psychology karma whoring taken to a new, pointless level?
Re: (Score:3, Interesting)
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 wh
Re: (Score:3, Funny)
>> 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.
Re: (Score:3, Funny)
Right. I had to get up in the morning at ten o'clock at night, half an hour before I went to bed, eat a lump of cold poison, work twenty-nine hours a day down mill, and pay mill owner for permission to come to work, and when we got home, our Dad would kill us, and dance about on our graves singing "Hallelujah."
But you try and tell the young people today that... and they won't believe ya'.
Re: (Score:2, Informative)
My kids love Scratch from MIT
http://scratch.mit.edu/ [mit.edu]
Re: (Score:2)
sounds like a great book! (Score:5, Funny)
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!"
You missed the point of your own story (Score:5, Interesting)
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 (Score:5, Funny)
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: (Score:2)
I'm sorry but what do guns and hookers have to do with each other?
Comment removed (Score:5, Funny)
Re:You missed the point of your own story (Score:4, Funny)
I'm sorry but what do guns and hookers have to do with each other?
Pimps.
Re: (Score:2)
In IT shops the pimps have pointy hair.
Re: (Score:2)
I'm sorry but what do guns and hookers have to do with each other?
Pimps.
Gotta start at a young age. Pimpin ain't easy.
Re:You missed the point of your own story (Score:5, Interesting)
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 (Score:5, Insightful)
Re: (Score:3, Interesting)
You need to get them hungry to create first. Once they hit those limitations, t
Re: (Score:2)
Re: (Score:3, Interesting)
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: (Score:3, Insightful)
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
Get em a RepRap? (Score:2)
No, make them design and build their own.
Re: (Score:3, Informative)
Re: (Score:2)
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 thi
Re: (Score:2)
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
Re: (Score:2)
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: (Score:2, Funny)
If you don't influence your kids, fucking Toys'R'Us will.
I'm a Toys 'R Us kid you insensitive clod!
Re: (Score:2)
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: (Score:3, Insightful)
" 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?"
This is where I disagree somewhat, there are certain subjects that you would love to have been forced to take at a young age but you were not long lived enough and too new to the world to realize their importance.
My relative forced her kids all to go to music school and many ended up becoming musicians out of their own fr
Re: (Score:2)
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?
yeah, why don't you bring home a real python
Free alternative (Score:4, Informative)
Start them on a tricycle? Or a GSXR? (Score:3, Interesting)
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: (Score:3, Interesting)
Re: (Score:2)
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,
Re: (Score:2)
Well, if they can't pedal they're not going to innovate better bicycles and tricycles, that's for sure. But back to your analogy with algorithms...
The question becomes, do you want your kid to grow up a mathematician, scientist, or engineer? Though it may not be immediately apparent, different programming mindsets are used for each of these disciplines, mainly d
Not Python! (Score:3, Insightful)
Re: (Score:2, Informative)
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! (Score:4, Insightful)
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: (Score:2)
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)
Re: (Score:2)
Re: (Score:2)
if (a == b and c == d):
doSomething(foo=a, bar=b)
doSomething(foo=c, bar=d)
doSomethingElse()
I think the point the GP was trying to make was that if you have a really long line of code it is acceptable to break it up into multiple lines indented how you like, ie in the following where the only syntactically significant indentation occurs on rows 2,10 & 12 and the only si
Re: (Score:2)
(I'm sure there are situations where the insane indent is useful and/or necessary, but I can't imagine there ar
Re: (Score:3, Insightful)
Re: (Score:2)
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 doe
Re: (Score:2)
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: (Score:2)
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).
I know of no such "rule as used by Unix". I commonly use a tab setting of 3 or 4 (depends on the day and the complexity of the code) when I edit files on Unix.
Cross-platform compatibility note: because of the nature of text editors on non-UNIX platforms,
It's n
Re: (Score:2)
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: (Score:2)
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.
Says you. Google, who employ Python's creator, feel differently. Guess who matters more?
Re: (Score:2, Insightful)
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.
And that's a perfectly valid argument, but it is still just a concept imposed solely because of previous standards. Technically speaking, whitespace is just another character, so there is no reason to conceptually differentiate it from a brace. A compiler sees whitespace just as it sees braces, but we have traditionally not parsed that whitespace. Python simply uses that whitespace rather than discarding it. On a site note, I work with Java for a living and I often find myself wishing my co-workers would e
Re: (Score:2)
Re:Not Python! (Score:5, Funny)
So you don't have to argue about brace styles :-)
Re: (Score:2)
The justification at http://www.secnetix.de/olli/Python/block_indentation.hawk [secnetix.de] is pretty telling ("Python does not allow to obfuscate the structure of a program by using bogus indentations"). I think it's consistent with their stated principles for the design of the language: what they call 'the zen of python' (copied below).
Personally I've come to find it quite useful, with the only downside being a disgusted voice in the back of my head saying "urgh, you're not supposed to do it this way". Certainly I've
Re: (Score:2)
My blocks would be perfectly recognizable from indentation if you took all the braces out.
Re: (Score:2)
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: (Score:2)
I think the point is that it IS still readable by humans and functional to the computer, where the python code will not be functional or readable. In fact, if you do this to C code, you can run it through "indent" and it will come out clearly indented for you. It sounds like such a program is impossible for python beca
Re: (Score:2)
In fact, if you do this to C code, you can run it through "indent" and it will come out clearly indented for you. It sounds like such a program is impossible for python because it depends so much on how things are indented to start with.
Yes, it's impossible in Python. And also unneccessary. The "indent" program solves a problem that doesn't exist in Python.
Re: (Score:2, Insightful)
In fact, if you do this to C code, you can run it through "indent" and it will come out clearly indented for you. It sounds like such a program is impossible for python because it depends so much on how things are indented to start with.
Yes, it's impossible in Python. And also unneccessary.
Let's see how smart you are when you get someone's code that isn't so clean in the whitespace department, and won't run anymore once you've opened it and saved it...
The whitespace requirement of Python sucks. I don't like programs whose behaviors are dictated by characters that I can't see and that aren't standard across editors.
If you're so into white space, be a man and use Whitespace [wikipedia.org].
I'm a fan of perl, Ruby, and bash when it comes to scripting.
Re: (Score:2)
Let's see how smart you are when you get someone's code that isn't so clean in the whitespace department, and won't run anymore once you've opened it and saved it...
Can you give me a scenario in which this might actually happen? People pass Python code around all the time, and whitespace simply doesn't cause the problems you imagine.
The whitespace requirement of Python sucks. I don't like programs whose behaviors are dictated by characters that I can't see and that aren't standard across editors.
Except you can see them because oh, look, those lines are all indented and they wouldn't be without whitespace. So you don't like it? Fine. Don't use it. But don't try to pretend it has all sorts of problems that it doesn't, in order to rationalise your dislike.
If you're so into white space, be a man and use Whitespace [wikipedia.org].
I like honey, but I don't want to live on a diet of nothing else.
I'm a fan of perl, Ruby, and bash when it comes to scripting.
Liking Perl and
Re: (Score:2)
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 re
Re: (Score:2)
Wait, what language is this that already uses red/blue italic flashing FORs?
Re: (Score:2)
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 th
Re: (Score:2)
This seems rather backward to me. Who cares if it looks different on my computer vs. another persons computer? I'm happy, the other person's happy. I've never worked at any place that would out-right ban tabs.
It sounds like someone simply has a holy-war going on there. I mean, seriously, why should it matter what another person is comfortable with? As long as each developer has the code in a format they are comfortable with (by setting tab wi
Re: (Score:2)
The beauty of this book (Score:5, Funny)
FOSS isn't a reason... (Score:2)
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..
Expectations of today's 11 year old different (Score:2, Interesting)
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
Re:Expectations of today's 11 year old different (Score:4, Insightful)
Re: (Score:3, Interesting)
Question for the OP (Score:2)
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 b
Re: (Score:3, Insightful)
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: (Score:2)
Re: (Score:2)
Computer programming offers the ability for a child to explore at least the theoretical foundations of every discipline known to man. She can program musical ensembles with tones, harmonics, and rhythms, she can create graphic art and learn about color, light, motion, and composition, she can write games and calculate sports plays, and honest
Re: (Score:2)
I am not a big fan of pushing kids too hard. At the same time I don't believe in a laissez-faire type approach to parenting either. I believe it is my responsibility to guide and help them grow. We let them try all kinds of stuff and tell them that if they are willing to work hard enough they can do almost anything.
I am not a perfect parent, but I do my best.
What I find to be a very interesting phenomenon is how many people not only have very strong opinions about parenting but feel that those strong opi
Very different from days of Compute! and Byte... (Score:3, Insightful)
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: (Score:2, Interesting)
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 (Score:3, Insightful)
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. (
HTML/CSS/JavaScript (Score:3, Interesting)
Re: (Score:2)
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: (Score:3, Insightful)
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 t
Re: (Score:2)
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
NOT Javascript! (Score:2)
I write JS for a living and I wouldn't let that crap loose on anyone. It's an awful language to learn - the runtime environments give little feedback about errors (and often incorrect feedback at that) it runs differently depending on which browser you use and the free tools for programming JS are crap.
I'd go for Java instead: all the FOSS advantages claimed for Python apply to Java as well, AND it performs very well ( typically 80% the speed of C), it has a ton of game specific libraries written for it bu
I didn't read to book, but... (Score:2, Interesting)
Tabs or spaces, but not both (Score:2, Troll)
Teaching a parent BASIC... (Score:2, Funny)
When I had my CBM64 I really wanted my dad to join in the fun of me learning to program - he seemed quite interested but this is how the conversation went...
ME: So, dad, we're going to print the phrase "Hello Dad" on the screen then print loads of them - it'll be fun
DAD: OK
ME: To print something we use the PRINT command so to print this phrase we type 10 PRINT "HELLO DAD" - 10 is the line number - like a number in an instruction book.
DAD: OK - But why PRINT?
ME: Errr, because that's the command...
DAD: Hmmmm,
Educational Programming languages (Score:4, Interesting)
If any parents are reading this, just wanted to mention I've (+other's help) written an article on wikipedia covering the educational programming language domain:
http://en.wikipedia.org/wiki/Educational_programming_language [wikipedia.org]
Re:C is the only starting language (Score:5, Funny)
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 :-)
MOD PARENT UP (Score:2, Informative)
Re: (Score:2, Insightful)
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.
Re: (Score:2)
To whoever modded the parent down as "Troll": I really think you're off the mark.
Re: (Score:2)
I love C with a passion, but I agree - I wouldn't let a kid loose with it :o) Maybe a Uni student, but not a 9-12 yr old you're wanting to not hate programming =)
Re: (Score:2)
The advantage of Python has nothing to do with OSS. C and C++ is at least as open source as Python, and both have a definitions superior to Python. In fact, many would use the same OSS IDE, Eclipse, for any of these, on any platform. No, the advantage of Python, as with the advantage of other higher level languages, is that, as the poster indicates, protects the user
Re: (Score:2)
There were a bunch of programming students at a course I was attending who kept seeing the Borland copyright message.
char c;
printf("%s", c);
Re: (Score:3, Informative)
Re: (Score:3, Insightful)
The first language I did any programming in was Applesoft Basic, because the household computer happened
Re: (Score:2)
I agree. I think the only thing you want is something that doesn't break for obscure reasons so that you can figure out why it's not working when (inevitably) you get some code that doesn't work any more - that's really off-putting to kids.
For me, I think it was BASIC (several variants) and Logo as my first programming languages. After that, I got into C, Pascal, LISP and started really understanding coding. BASIC really taught me some bad habits though!
Re: (Score:3, Insightful)
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: (Score:2)
Why not just chase him around the yard with a baseball bat?
Admittedly I was at the old age of 14 when I first read K&R cover-to-cover but I found it inspirational, clear, and concise.. and that was the 1st edition. Learning C blew my mind and made other languages at the time (Basic, Pascal) seem like toy languages. It also gave me a thirst for understanding assembler.
The clearest alternative programming language I've encountered must have been Microchip PIC RISC assembler - the datasheets for the 16F84 (and 16C84) very clearly explain the small instruction se
Re: (Score:2)
When were you a kid? There were books like this around in the 80s: the main difference was that they used BASIC rather than Python. (To save everyone else from pointing it out: well, duh! Python hadn't been created).
I found them rather too simple by the time I got round to reading them, though, because I'd learnt from the manual which came with my family's Amstrad CPC.
Re: (Score:2)
Now now Steve, put down that chair !