Show HN: jsdares – learning programming visually
jsdares.com
jsdares.com
Anyway, he was thrilled by jsdares because of the gaming approach. He was excited to do the first 3 robots tutorials, and then he got tired but asked me to send him the link to the site. Those were the first programming lines he wrote.
So, the overall experience of jsdares is awesome. As a suggestion to Jan Paul and team, please make it translatable so kids from around the world can benefit of it. There's already a few good introductions to programming in JavaScript in English, but very few ones in Portuguese using this new approach.
Unfortunately there are not many dares implemented yet, so he will not be able to follow a nice path from playing with robots to writing games. But anyone can create their own dares.
If you would like you could try to recreate the existing dares in Portugese. Better integration of different languages would be great at some point though!
That's the first reason I clicked the link--I thought the "visually" part in the title would perhaps be about something doing away with written language entirely, but alas :)
Anyway, if children are important in your audience, please consider (a support framework for) localization. In the technology world, you can usually expect people to be able to read and communicate English, it's the lingua franca. Most software gets diminishing returns for each language you add, many people even prefer English interfaces over their mother language (because so many industry-words are English--looking at you, Photoshop/GIMP). But with children, for every new language you add, it's like opening up an entirely new can of audience that simply wasn't able to work with your software before.
I Think the initial page has too many paths that I can start on. I think it needs a single clear starting point (higher up the page) that lets one get used to the UI... for instance it took me a while to work out how to 'start', then a while before I noticed that there was a tab for the 'robot' I was controlling.
I did want to have the game on the frontpage however, both as a showcase of what's possible with the platform and because making games might appeal to people. But maybe on the frontpage there should be a number of different examples to explore, including some with robots. What do you think?
Consider placing the main/default path at the top of the page (start your first lesson, a la Codecademy) and below that (but still above the fold) 3 or 4 examples inside small squares of the kind of programs you can write (possibly starting points for more advanced students).
However, the title makes me think more of actual visual programming "languages" or interfaces. Much like minecraft as is being pointed out here, or the National Instruments project, LabView (http://en.wikipedia.org/wiki/LabVIEW) which uses a language "G" ... a graphical representation of inputs, outputs, logical operators and translators that all get connected via "wires" in a flowchart. I was playing with this at 10 or 12 and I think engaging my visual-spacial skills early in something entirely logical and non-visual dominated greatly helped me. I have to think that kids playing minecraft now will be great programmers were they to go that direction.
My biggest problem with these "visual programming languages" is that they don't scale well to "real-world programming". There's also a pedagogical discussion on whether they are effective for learning, but I don't want to get involved in that. ;-) In practice I've seen though that most children/students don't have a problem writing actual code.
1. Add some of the really nice error parsing and automated suggestion heuristics from Khan Academy's JS editor https://www.khanacademy.org/cs (sadly doesn't seem to be on their Github yet)
2. Integrate some of the typechecking features of ternjs to again provide more helpful error messages and suggestions http://ternjs.net/
Great to see a lot of suggestions coming by here, I'll add them later to the existing TODO list: https://github.com/janpaul123/jsdares/issues
Very cool to see this stuff moving in the direction of being responsive inside the browser, and actually working. Understanding variables is one of the most common problems for beginners, and being able to change the variables and see the immediate effects in existing code is compelling.
IF you follow that analogy, WRT the "Understanding variables" common problem as you state etc, a pretty obvious addition from the front panel area was ways to look at internal state. And breakpoints...
Anyway, great work. I showed it to my girlfriend who wants to learn programming; she finds it way more fun than Codecademy.
With Modelian, I went the route of developing a Domain Specific Language designed to be simple to learn (which has an interpreter built all in JS). It has things like case-insensitivity that I think make learning simpler.
From Jan Paul's thesis: > The syntax tree can be used to generate back the original code, be it in normalised form, but also to generate the safe runtime. For every Javascript operation a wrapper function is provided, which sanitizes the input and output, and restricts the operation if necessary.
Like I said, awesome!!
(The other main area students struggle is how to fit HTML and JS together into a real project...)
Darrell (http://www.thinkful.com/)
would be great if you integrated syntax coloring, like Codemirror.