Localized (Visual) Programming Language For Kids?
First time accepted submitter jimshatt writes "I want my kids to play around with programming languages. To teach them basic concepts like loops and subroutines and the likes. My 8-year-old daughter in particular. I've tried Scratch and some other visual languages, but I think she might be turned off by the English language. Having to learn English as well as a programming language at the same time might be just a little too much.
I'd really like to have a programming language that is easy to learn, and localized or localizable. Preferably cross-platform, or browser-based, so she can show her work at school (Windows) as well as work on in at home (Debian Linux).
By the way, she speaks Dutch and Danish, so preferably one of those languages (but if it's localizable I can translate it myself).
Any suggestions?"
Scratch is localizable, it's actually running in Hungarian on my Debian desktop. Looking at /usr/share/scratch/locale, it's already translated to over 40 languages.
Real life is overrated.
Kay worked at just that, at Xerox PARC. It was not visual, but let's be honest here; Xerox fscking PARC.
You should check this out:
http://squeak.org/About/
No... It is better.
Here be signatures
This is encouraging, not forcing. So I'm all for it. If a friend of my father hadn't introduced me to programming at age of 7, I would have missed something that soon turned into a passion and is now my day job. That was the most important event in my life, second only to my birth. You have to give kids the chance to try something to see whether they like it, like chemistry or electronic kits. If they like it, great! If not, so what.
As far as I know most dialects of Logo are localized or localizable, both keywords and variables. But I don't know its domain (a drawing turtle) is interesting to your daughter.
Either translate it yourself from the source code, it's not a huge language, or just accept the fact that she will have to learn English along the way. She will be learning a new language anyway, so what does it matter what language she uses to label new concepts. Loop, string etc...can't be a huge problem for her as she is bilingual anyway.
In a cybernetic fit of rage she pissed off to another age...
I don't know if it's localized, but Lego Mindstorm should do the trick. Rather expensive solution though.
I learned programming long before knowing english. It doesn't make any difference, keywords are just symbols you have to understand what they do. The fact that 'for' stands for an english word doesn't mean a non-programmer can look at the source code and see what 'for' does or the implications it has.
Give that kid a break, she already speaks two languages and you want her to force to learn a third already? How many do you speak?
Why not use the time to learn English first. It will be more useful to her than programming.
Learning a whole language first isn't much fun. Also, lots of people I know (me included) learned programming first, then (through programming) english. I started with GW-BASIC at age of 7 and almost everything was in english: the programs I had, even the manuals. I picked up basic english from this (after some trial and error you understand what certain words or phrases mean; I was pretty surprised when I learned at school that these words are pronounced totally differently than I imagined ;-)
I even knew a pretty good programmer who still does not speak english. He couldn't ask for directions if he'd get lost. Yet he manages to do hold up as a professional. Couldn't believe it at first, but it shows that knowing english does help when developing but it's not strictly necessary. The good thing about programming is that the syntax rules are so much more strict and easier to understand than natural language.
Khan Academy's programming tutorials use some kind of visual programming platform. I think its worth checking out. It starts of with programming the movement of the ball. The language is English. But as it is intended to teach programming with fun, this might be the one. I had tried it with my 12 year old bother and it worked. Here is the link : https://www.khanacademy.org/cs/paddle-ball/830543654
GvR is a great platform to learn programming. It teaches loops and conditionals and problem solving. It is written in Python so will work cross platform. The only negative is that I think it is not localised.
http://gvr.sourceforge.net/index.php
It's very easy to switch the locale in Scratch even while running scratch. Click on the left-most icon (a wire-frame globe icon) at the top-left, and that will allow you to select the language to use.
:>)
Danish a.k.a. Dansk, is already a supported language in Scratch, as are 49 other languages as shown at http://info.scratch.mit.edu/Languages
Lego Mindstorm might be a nice approach. It's available both in Dutch and Danish, and uses a graphical language with a great graphical interface dedicated to kids. I use it to teach (Dutch) programing and robotics to kids and it's amazing easy for them to make and modify the software.
The main drawbacks is that, although the software is free, you need to get a 200€ lego robot to make it useful. It also has only a Windows (and probably Mac) version. IMHO, the robot has the advantage to bring additional interest to the kids. It makes programming much less abstract.
To try the software before buying, look for the lego mindstorm nxt 2 iso on the lego website (it's a bit hidden).
Prob is, Dutch and Danish are cute "local" languages. She's gonna have to learn English, so better do it now while she's a kid and can handle it.
:>)
The ability of Perl to mystify, astound, and obfuscate is so reknowned that there is even a contest dedicated to the ability of Perl to render unintelligible code: the Obfuscated Perl Contest
Used properly, Perl can become a "write-only" programming language, such that no one else can decipher what you are attempting to do.
;>)
Just kidding. I am actually a fan of Perl, Python, C, C++, BASIC, Lisp, and Scheme. I hear good things about Logo and the turtle languages all allow keywords to be in any language. Just because the token for printing in BASIC is usually the english word "PRINT", there is no reason for it to be constrained to that. In the TRS-80, "PRINT" is retokenized as the question-mark symbol "?" which can also be used as a short-cut for the "PRINT" statement. My first programming language was BASIC (Level 1 basic) on the TRS-80 with 4K (4 kilobytes!!!) of memory. I am sorry that your daughter is turned off by the english language. Get your hands on a BASIC interpreter and change the interpreter for the keywords which you'd prefer. Or stick with Scratch as recommended above.
.
Also, Lisp and Scheme are fairly cryptic and language agnostic, though parenthesis heavy: car, cdr, eval, print (damn, that last word is obviously english.) Good luck!
I've been teaching my nephews coding and robotics with Minibloq http://blog.minibloq.org/. They love being able to see their code happen in the real world, with lights, buzzers and motors to control.
The hard part is getting them to stop!
There are French, Bahasa and Spanish versions available, and it should be simple to add Dutch and/or Danish.
"I've got more toys than Teruhisa Kitahara."
Hi,
I may be dismissed as an imperialistic pig for saying that, but I've written on why it is important to avoid localised programming languages because it is becoming more and more important to learn English as soon as possible. Just for the record, English is not my mother language (I am Israeli and my mother language is Hebrew), and yet I think that learning English is an increasingly important skill, and also communicate primarily in English in my Internet interactions, and most of home-site and blogs are written in English. Whether you like it or not, I believe English has been becoming what Aramaic was in the Near East from the time of the Neo-Babylonian Empire up to Arab times.
I suggest you invest the time in teaching your daughter English first, which is of far greater utility than programming, and is also absolutely necessary for learning to program (or for most other fields of science, technology and endeavour).
We have two eyes and ten fingers so we will type five times as much as we read. http://www.shlomifish.org/
If your kids are strongly visual, and want to work with graphics manipulation, then Scratch is ok. If they like robotics and want to work in the real world, then Lego mindstorms is alright (for simple projects) both choices the kids will be involved in as much non-programming as coding - as design (2d or 3d) will absorb their time.
Logo is a pure programming language, which is going to encourage good application design, but it's really important to find a good guide for them - it's also nice (but not necessary by any means) if you can find a turtle. At education college we were encouraged to teach logo, and it was a position that I agree on. The only potential issue is that it is not 'C'-like but that's a syntax issue.
There are also programming games which help develop Logo skills - not computer games - family games - such as you being a robot, and asking the kids to give you orders to do something - you can give them a starting lexicon of very few commands, and ask them to take you to the kitchen. Note that angles are often best addressed with quarter-turns: left, right, turn-around, etc. Then later on introduce something like 'bit-left' or 'little-left'. So a lexicon of forward,back,left,right,stop is often a good start. Then parameterising forward: eg forward 50..
The primary advantages are that they get time to have fun with their Dad, (and you with them) and you can design the language fluidly according to their ability. Later on you can easily add function definitions using eg "to": eg. "Dad, to square, repeat 4 times forward 5 right"
AFAIK none of them have very good debugging tools, and IMO debugging is where most early coders find out if they have enough stamina to want to code, so games like above help you to give suggestions. Likewise, with logo (turtle graphics) - at first anyway- you can act out the programme which can help.
Logo isn't just graphics - it's a simplified form of lisp.
This comment was written with the intention to opt out of advertising.
I have been have witnessed a positive reaction to Kudo, not only for my own 8 year old, but also at his school (where I gave the lunchtime computer club some games tutorials after the Raspberry Pi baffled them), the programming is visual, and more importantly delivers fun, rewarding visual results instantly, all in 3D which the kids can relate too. Within a few hours they were programming the AI for soccer teams and pitting them against each other in a tournament. I write this on a linux box, but credit where credits due MS did a good job with making Kudo assessable and rewarding.
Perhaps, and after all, these boys have other failings as well.
Their musical skills are below par, they're absolutely useless at bricklaying and carpentry, and they suck at brewing and winemaking. I've suggested to my sister-in-law that she sell them off to vivisectionists and start again, but she's hesitant.
Do you have any arguments that might convince her?
"I've got more toys than Teruhisa Kitahara."
"The only thing you can do is draw pretty pictures" That is just not true.
Although it's initial purpose was to create a math land where kids could play with words and sentences, Logo was most often taught via turtle graphics - which provided a set of visual cues to understand the nature of the underlying structures of languages such as the stack and program counters and also helped to develop debugging skills. Likewise the fact that recursion is Logo's preferred processing paradigm is, IMO, quite remarkable.
Logo's initial weaknesses were to do with an absence of concurrency and limited IO. Modern variants such as StarLogo and NetLogo address many of those issues and are used to examine emergent systems and AI.
Scratch runs on Squeak, a variant of Smalltalk, which was inspired by Logo, which itself is a dialect of Lisp.
This comment was written with the intention to opt out of advertising.
Even if they don't make a carrier somewhere in IT, coding skills come in handy in many other carrier choices and is highly valued. Even more important, being exposed to programming teaches other valuable skills, and improves logical thinking and organization.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
Jumping straight into C isn't such a good idea. Specially for an 8 year old kid. Pointers? When you have only been doing basic math for a couple of years?
Let them understand the logic, and then you can switch them to something more advanced. Just make sure they don't stay on a broken training-wheels language like basic past the age of 12.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
I taught myself programming when I was about 10 years old and I'm not a native English speaker and my language is written in non-latin characters. I can tell you how I did it but many of you are not going to like it:
I started with BASIC in the pre-structured era. I wrote stuff like this:
10 PRINT "HELLO"
20 SOUND 512 5
(forgive if syntax is wrong)
I spent a lot of time drawing pictures and making music without knowing anything about conditionals or loops. Then I graduated to GOTO, which in retrospect was a lot easier to understand for a 10 year old than a structured conditional block or a loop.
When I finally started with structured programming languages, making the transition took only a little time. If I had started with it at age 10, it might have overwhelmed me. The explicit representation of sequence (the line labels), conditions and iteration (the GOTO) was easier for me to understand as a kid. Especially since my English was very limited back then.
Plus I never bothered with math (I hadn't learned to love it yet). As I said, I drew pictures and made music with the PC speaker (so I was using only a few functions built into the language). Maybe that's an approach to think about, for starters.
I am not sure why but this is actually in my favorites.
http://en.wikipedia.org/wiki/List_of_educational_programming_languages
Some research there may help too. I don't have anything of value (beyond said link) to add to this conversation really.
"So long and thanks for all the fish."
I'd rather learn a new language at 8 than at 48... just saying, its probably a very good thing to teach her English right now than have her struggle to learn it later (apparently kids are much more adaptable to language, starting off with nothing and having to learn 1 it kind of makes sense somehow)
All my Danish friends say that they all speak English anyway, 5 million Danes on the planet and no-one else speaks Danish makes it almost mandatory for them to speak something else, and Danish is a close common ancestor of English anyway (ie I really don't speak Danish, but I can understand the meaning of danish text) having its roots in the settlement era of the dark ages when you guys came over in the longships.
Kids who started with other programming languages doesn't seem to get that problem.
That's because they only used languages without pointers. If they used Pascal (that does have pointers but they are not nearly as useful there as in C) they would be more confused than with C.
It's just a memory address.
No.
Pointer value is an address that is assumed to be a location of a variable of a type that the pointer type refers to. This is important for pointer arithmetics, relationship between arrays and pointers, type safety, and allowing/disallowing/tracking data modifications (with const, restrict and volatile qualifiers that are also a part of the type).
Contrary to the popular belief, there indeed is no God.
The problem with doing things right the first time is that nobody appreciates just how damn difficult it was.
Logo is a horrible language to start with because it doesn't trust you with responsibility. You are stuck in a la-la-land where the only thing you can do is draw pretty pictures. Beginning programmers, and even children, want to be trusted with responsibility, and feel like they are in control of their environment. So I suggest avoiding pedagogical languages and instead opt for practical languages.
When I took a graduate-level multi-agent systems course at my university, the language we used to implement algorithms we were finding in current research paper on the topic was netlogo. You can do a lot more than draw pretty pictures, and the language is used fairly heavily in certain research fields.
Warning: Opinions known to be heavily biased.
When a kid wants to know how to solve a particular problem, they're going to learn the maths necessary.
Indeed. That was my experience with my younger brother, around 10 at the time. I showed him a simple reversi (aka Othello) game I had coded in python, with just a simple text representation of the board, fully expecting him, accustomed to 3D games with colorful graphics and all that, to dismiss it inmediately. Not the case. He was so amazed that you could do that, and intrigued by the how, he didn't care for the trivial UI or the English keywords (which he barely understands) in the non-graphical code.
So my advice to the OP would be to focus less on the tools, but more on the content: What would motivate your daughter or other kids to try and understand what makes a computer tick?