15 ms·
Isla: a programming language for young children
- kylec 13y agoI'm not a fan of languages designed "for children". They tend to be toy languages with limited expressibility, and libraries tend to be limited or nonexistent, severely limiting what the user can actually do with the language. When I was in middle school, I first learned to program using BASIC. While BASIC was designed to be easier to use, it was still a full language designed for people to be productive in. There are a whole host of languages that can be taught to (or independently learned by) children that have a clean, simple syntax. Why do we need to create another one with all the drawbacks a small, obscure language brings to the table when Ruby, Python, Scheme, etc exist and are just as easy to get started in, but much more powerful when you dig into them?
- krainboltgreene 13y agoThis comment assumes that Ruby, Python, and Scheme are easy enough for children to get started with, and I disagree with that assumption. This is clearly, in my mind, better than the languages out there and I've only seen 3 lines.
- 6d0debc071 13y agoWhy do you disagree with it? Children have started on and understood them easily enough before.
- vidarh 13y agoAge 5-7 I spent figuring out to get sprites and music to work on a Commodore 64 that had no commands for it - it was all "POKE"'s to various memory locations. I was by no means unique for my generation, or even my class. There's a huge number of us that are evidence that non-custom languages that were massive pains to program are easy enough for children to get started with. Does Ruby, Python and Scheme have dark corners that are harder to understand than BASIC? Sure. Just like my C64 had all kinds of secrets I couldn't figure out by myself by POKE'ing randomly around at that age. But I'd hazard a guess that most children will be mature enough at some point between 5 and 10 to be able to pick up the basics of pretty much any reasonably "normal" language if they have the motivation to try (for me it was seeing my dad program a simple game and wanting to be able to do the same thing). I'd hate to dumb it down unnecessarily.
- James_Duval 13y ago> Scheme Out of interest, what are the dark corners of Scheme? I've been using Racket for a while now and I've not come across any unexpected behaviour. I suppose using non-idiomatic language elements such as mutations is a little odd but so far I've found nothing in the language which has surprised me.
- vidarh 13y agoI meant as in "stuff that is difficult for most 5-10 year olds (or so) to pick up easily on their own".
- GregBuchholz 13y agoOleg Kiselyov has done some exploration into the darker corners of Scheme. See things like: How to Write Seemingly Unhygienic and Referentially Opaque Macros with Syntax-rules http://okmij.org/ftp/Scheme/macros.html#dirty-macros http://okmij.org/ftp/Scheme/macros.html#dirty-macros
- lettergram 13y agoI agree this language is easier than say Ruby or Python, but I do remember in 4th and 5th grade (8 to 10 uears old) learning a bit of BASIC from a couple books my father gave me. By the end of 5th grade I had written a calculator, a stopwatch and a couple other items in BASIC(programming exercises from the book). Then in high school I decided to learn some Ruby and had a good time tinkering with that and the things I learned from BASiC made it relatively easy. The point is, a kid can pick up on that stuff if they want to learn it and BASIC is defiantly simple enough to "start with" and I would guess so is Python and Ruby which don't have too much semantic complexity.
- ronilan 13y agoI think your'e right. The rule of thumb when it comes to "designed for children" goes something like this - if it does not offer progression toward the "adult" version then it is a toy.
- loumf 13y agoI think making toys for children is a good idea. There are lots of examples in the physical world that don't progress towards the adult version that are fun and educational. My problem with this is I'm not sure kids would find it fun. Something like HacketyHack that has integrated music and graphics feels like the kind of thing that would make the programs kids want to make. I'd also try Processing.
- voidlogic 13y ago>I'm not a fan of languages designed "for children". This, I think if I was helping I child get into programming I would get them started with QB64 [1], [2]. Then once they mastered that move on to HTML/CSS/JS and C or Go. Personally I started with GWBASIC (at age 7 or 8), then moved to QBASIC, then learned VB, and then C/C++. Then in college I learned Java and via work learned C#. Nowdays I program full time in Go. (I of course have learned many other languages and platforms along the way , but those were always what I wrote in when left to my own devices). 1: https://en.wikipedia.org/wiki/QB64 https://en.wikipedia.org/wiki/QB64 2: http://www.qb64.net/ http://www.qb64.net/
- tootie 13y agoThere is a fundamential principle of programming that I think most failed programmers can't wrap their head around at that is GIGO. When you start typing words, most people will have trouble with the rigorous and literal interpretation of words that are normally far more expressive and nebuluous when shared with people instead of computers. And, if I may step way out on a limb, this is especially difficult for women and seems to be a major tripping point for women who are otherwise more than bright enough to be good programmers. I think that Isla seems to be usable for any minimally literate kids (like 6 years old) and can impart GIGO while being really simple and fun. It's not a replacement for BASIC, but it can be seen as a stepping stone to it.
- nawitus 13y agoSuggestion: An IDE for children which only allows valid sentences to be inserted. E.g. they could click "create variable" or "create function call" button which would be a form/wizard/dialog to create it. This could be combined with "switch to advanced mode" button which would allow normal typing.
- bitwize 13y agoI actually wrote one of these when I was about 11. It was a menu-driven program written in BASIC that constructed (more or less) syntactically correct BASIC programs. It had a user interface similar to Multiplan, or the Microsoft Word of the day. I eventually abandoned it because even as a kid, for me it was faster to type stuff in than to mess around with a program like this; and typing gave me access to the whole language rather than just what I had implemented in the menus so far.
- swarthy_io 13y agoI agree, this is what I tell non-programmers who are interested in learning more. I phrase it as: "Most people are too smart to program." The way we talk to each other involves a lot of abstraction and context. It is very hard to speak __simply__ to a computer, unlike normal conversation.
- maryrosecook 13y agoI feel that Ruby, Python and BASIC are too complicated for five year olds. My aim with Isla was to make a language that avoids as much programming jargon as possible, and assumes no prior familiarity with programming. This is why I made it natural-language-like and omitted punctuation from the syntax as far as possible.
- nawitus 13y agoI think 5 year olds should begin with graphical 'programming' environments like Klik or The Games Factory (those are old now, but I'm sure there are modern replacements). They offer simple event based programming and the children don't need to bother with syntax errors etc. They also have a built-in graphical edition so it's a bit more fun than just playing with a terminal. After a few years it's easy to continue with basic-like languages.
- kevinpet 13y agoIf you're in middle school, you aren't the target market for languages designed for children.
- krainboltgreene 13y agoThere are two things that I immediately think while looking at this language: 1. If languages were syntactically easier to read, then we wouldn't need one that's made just for young children. 2. This confirms my suspicion that "=" and "==" are damn harmful stupid syntax for assignment and equality.
- lmm 13y agoWhen I get around to writing a language = won't be a word (or maybe it will be just for initial assignment). Assignment (or at least mutation) will be := and equality comparison will be ==.
- nfoz 13y agoSpecifically what problem(s) are you trying to solve? I'm writing a language that uses = for assignment and == for equality comparison. However, expressions and statement are syntactically separate, so that using the wrong symbol is always a syntax error.
- lmm 13y agoThe if(x=1) problem, and the problem that declaration/assignment and mutation look the same when they're actually very different. I don't think an expression/statement distinction is the right solution to this problem, based on my experience in e.g. python (where not being able to include statements in expressions makes a lot of code more cumbersome).
- Scaevolus 13y agoExpression/statement distinction can make some things more cumbersome, but it can also decrease complexity and cognitive load, easing maintenance burden. It's very easy to be too clever with nested statements. Even without distinction, making it a compiler warning is very easy.
- drharris 13y agoYes, please make me hit three keys instead of one just to make an assignment.
- tshadwell 13y agoIs it really such a great idea to make languages that look more like English? From my experience, newcomers to programming pick up a lot of misconceptions about general programming from English-like syntax.
- edtechdev 13y agoWell, there's actual research on it. Most of our intuitions about teaching and learning are wrong. Google computer science education or check out SIGCSE
- nsxwolf 13y agoIsla... Isla Nublar... Jurassic Park... "This is a UNIX system, I know this!" It all makes perfect sense now...
- brudgers 13y agoFirst, I want to be clear that I attribute noble motives to the designer of the language, and second that I recognize the hard work and effort that goes into a project like this. My unanswered questions: () What are the pedagogical principles upon which Isla is founded? () How is the language tied to models of developmental psychology and to what models? () For what age is the language appropriate? () What does it do better than other similarly targeted languages, e.g. LOGO or Alice? Isla looks as if it could be a game changer. I want to know more.
- maryrosecook 13y agoSure thing. 1. No principles at all. I know little about education. Since the time I started Isla, and since the time I joined Hacker School as a facilitator, I have been learning as much as I can. 2. It is not tied to any models. 3. I am aiming the language at children who are just learning to read and write. So, children between 5 and 8. 4. I don't know enough, yet, to know if Isla is better than LOGO or Alice.
- lettergram 13y agoAs far as I can tell Isla is simpler and probably better for younger children than LOGO. In my opinion LOGO is actually harder to learn than Python or Ruby for children (at least in my experience from the couple of children I was trying to teach)
- marpstar 13y agoReally? I remember picking up LOGO in Kindergarten. Can't even imagine working with a real language back then. How old were these children and how did you go about teaching them?
- lettergram 13y agoThey were 6 and 10, python seemed easier for them to pick up because they had more control AKA I think the turtle and what not confused them. It was much easier for them to name everything themselves and do what they wanted.
- thetwiceler 13y agoThe first "programming language" that I learned to use was LEGO Mindstorms, when I was around 8 years old. I think that was an absolutely AWESOME way to teach the principles of computer programs to children. (And transferring the programs to the robot was WIRELESS! Serial -> Infrared, that is) Each "instruction" was represented on a computer as a "LEGO block". For example, there was a conditional block. You'd place it under a block that would return an output (like a "sense" command), and then you'd place two blocks below it for the True/False conditions. So basically you ended up building a tree of the logical structure of the program. I think this style is the BEST way for children to learn programming. In fact, I think a block-like/tree-like structure is often a great way to think about program structure (even for advanced programs; Simulink is really great!). Now, once you get comfortable with the constructs, actually dragging-and-dropping blocks often gets too slow. But for children, and for building simple programs, I think it's great. I'm afraid that text-based languages are just unnecessarily difficult for children - only a small fraction of what you can type actually represents a valid program. The blocks allow programming without having to deal with these syntactic barriers. After all, when I program in a language like Haskell, 90% of my programming errors cause the program to fail to compile. These sorts of errors (syntax errors or type errors) can be prevented as the program is built with the block interface. And while I'm extolling Mindstorms, another great thing about creating these programs was that you weren't just flipping bits on a computer; it was pretty satisfying to see a robot "in the real word" follow your commands.
- iknight 13y agoHa! I still have my Mindstorms set and I plan to knock the dust off of it in a few years when my son is old enough.
- codyb 13y agoAnd not only that, but if you're already interested in playing with legos (as I was as a child, although mindstorms was windows only back then much to my chagrin!), what a great way to learn basic programming concepts without even realizing you're learning! You're not even interested in programming, you're adding extra functionality to something you already enjoy in a fun way. It's like asking some one to learn how to do the rainbow kick move over the head with a soccer ball when they don't play soccer at all compared to when they do if that is an okay analogy.
- maryrosecook 13y agoHi, Mary here. I wrote Isla. Just FYI, the Clojure version of the language is deprecated. For the last year, I have just been working on the JavaScript version: https://github.com/maryrosecook/isla https://github.com/maryrosecook/isla My latest work has been on a programming environment and programming demos: http://islalanguage.org/ http://islalanguage.org/
- cpeterso 13y agoVery interesting language! Why are numbers quoted? It seems that many of the quotes could be optional (except when needed for parser disambiguation). From your examples: age is 1 name is Mary friend is isla You could also use '.' as an optional command delimiter (in addition to newline) for more prose like, such as: age is 1. name is Mary. friend is isla.
- maryrosecook 13y agoI like the period idea. I will try it. Quotes are required around number literals to maintain consistency with string literals.
- Nzen 13y agoI'm partial to the advice to designate strings by the vertical bar instead of quotes. eg, write |Hello | input_name |. Nice to meet you|. This avoids the complication of escape formats until much later.
- jwarren 13y agoI love this and I think it's beautiful. Removing a lot of the symbols will make it far less scary and "techy". I'd really like to see it develop.
- chrismealy 13y agoThis is great! Keep it up! Grown ups have tons of languages to choose from, so should kids.
- jmilloy 13y ago> Write [cherry is a circle] below I don't know pedagogy, but I like that objects have names and properties, which is concrete and comes from the physical world (and our language). However, I find some things about the language, environment, and also tutorials rather confusing. In the shapes tutorial, for example, we name an object that doesn't exist yet. We also name the object "cherry", which is also a word for an object in English. We write [melon color is 'yellow'] when the object named "melon" is actually red. I also wonder why there is no visual indication of which object is which (why not label the objects with their name?). More fundamentally, in Isla each text block is a command. Why are there no actions words (at least in these initial commands)? Just like objects, names, and properties are first class syntactic citizens, so should actions. I think this would clear up some of the weirdness above. # make circle named bob # set bob color RED # print bob color ... RED # print bob ... circle # move bob RIGHT # make square named alice # trash bob # copy alice named chris # make circle named alice ... oops, alice already exists! # print dan ... oops, dan doesn't exist!
- maryrosecook 13y agoI like your idea for making the set and creation commands more aware of time. I will think about this. Thanks a lot.
- DavidWanjiru 13y agoWe don't have mathematics for children. Or English for children. Sure, the stuff taught to children is simple, but it isn't simple coz it's being taught to kids, it's simple because the basic building blocks of any body of knowledge are typically simple. If you wanted to teach English to an adult Chinese man who only knows the Chinese alphabet,you'd have to start of with the same things you'd teach a child. When someone sets out to create a programming language "for children", my fear is that you might try to "dumb down" the art and/or science of programming. I could be wrong, off course. And I haven't looked at this particular language, so I wouldn't know if this is the case here. I'm just not very comfortable with the premise of a programming language aimed at children. What is it about it that makes it for kids? That which makes it for kids vis a vis other languages is what worries me in the context of what the kids will learn vis a vis what they should eventually learn, which is the "adult" stuff. Try and imagine a painting course for kids or adults. Same concepts, technique's, brushes, etc. In the same way you don't have canvases or brushes for kids, I don't think you should have a programming language for kids. But like I said, I could be wrong.
- rdouble 13y agoYou must have had a very atypical childhood and never interact with kids because there are tons of art supplies, picture books and "count the apples" type arithmetic books that are only for kids.
- snowwrestler 13y ago"Dumbed down" programming is still programming, just like dumbed down mathematics (2+2=4) is still mathematics, or dumbed down painting (finger painting) is still painting. In each case, children are simply being presented with a limited subset of the entire subject, to accomodate the real physical differences between children and adults (less complex mental models, less fine motor skills, etc). We can argue about which specific subset we should start with, but the fact that it's a subset is not inherently wrong.
- ansimionescu 13y ago1. Kudos for the very interesting initiative! 2. I was looking for a "natural syntax programming language" on Google and this is what showed up as the first result http://bglang.org/ http://bglang.org/ 3. If I might add something, I think what something like this would need is flexibility i.e. a more "freestyle" way of writing expressions. It would not only be much easier to use by children, it would also be a nice technical challenge for the language designer. Some examples: * sum of all numbers from 1 to 10 * x is 3; y is 15; print their greatest common divisor * if folder has file 'file.txt' then put x in file * print 5th fibonacci number * c is circle, diameter 10; C is square, side 9; print maximum area c, C * show bigger number 2/3, 1/2
- maryrosecook 13y agoThe danger with a natural language-like programming language is that it gives the impression . This is impossible. I want the advantages of a natural language-like syntax (easy to read, not scary) without the disadvantages (the impression that the computer will understand whatever you type). To do this, I intentionally made the syntax only support one grammatical form of each type of statement.
- scoates 13y agoIs "Isla" pronounced "ila" (as in the "s" is silent)? I ask because I'm sure my otherwise-literate 8-year-old would have trouble spelling the name without some coaching… (edit: typo)
- greenlakejake 13y agoIsla needs a read function for inuut.
- kbeaty 13y agoA year or two ago I created a very similar language [1] in collaboration with my kids, then aged 8 and 10. They had a lot of fun writing their own stories and "telling computers what to do". The oldest has since moved on to writing her own HTML and CSS. Hoping to keep the fire alive. A few more ideas that I never got around to, feel free to take or leave them: * A simple tool to draw characters. My kids liked Google drawings more than Paint. They didn't mind (at first) that the drawings weren't animated. * Sharing stories with family and friends * Drawing backgrounds, moving between scenes, animation editor. * They liked the idea of writing a story, but very quickly wanted to build a game. An animation editor could introduce looping. Collisions could introduce conditional actions, etc. Good luck. It's a lot of fun. [1]: http://kevinbeaty.net/projects/storyturtle/ http://kevinbeaty.net/projects/storyturtle/
- zoozy 13y agoI teach 5th grade science, and we do a solar system unit that is sometimes remedial for kids already testing/learning at grade level. I'm going to try giving the Isla planets page to students who finish early, and see if they can figure out Isla and create a replica of our solar system (without instruction/help), as a quick brain teaser for them. Thanks :)
- mkoryak 13y agoGreat stuff, when I have a little person ill look for something like this. One suggestion: better errors. If I was a kid and I saw this: #hi Expected [ \t\r] or [a-zA-Z0-9_] but "\n" found. I'd think that I broke something.