Stephen Wolfram: No Need To Teach With 'Toy Programming Languages' Like Scratch (wolfram.com)
theodp writes: From Stephen Wolfram's blog post announcing the Wolfram Programming Lab: "It's a very important — and in fact transformative — moment for programming education. In the past one could use a 'toy programming language' like Scratch, or one could use a professional low-level programming language like C++ or Java. Scratch is easy to use, but is very limited. C++ or Java can ultimately do much more (though they don't have built-in knowledge), but you need to put in significant time—and get deep into the engineering details—to make programs that get beyond a toy level of functionality. With the Wolfram Language, though, it's a completely different story. Because now even beginners can write programs that do really interesting things. And the programs don't have to just be 'computer science exercises': they can be programs that immediately connect to the real world, and to what students study across the whole curriculum. Wolfram Programming Lab gives people a broad way to learn modern programming — and to acquire an incredibly valuable career-building practical skill. But it also helps develop the kind of computational thinking that's increasingly central to today's world." So, when it comes to programming education, are schools hitchIng their cart to the wrong horse?
Guy with profit motive thinks his pricey programming environment is better than one that is free.
Settling into a comfy chair & pouring myself a beer...
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
But C++ and Java isn't for beginners. You need to have a certain level of understanding of programming before you can use them.
In the 80's we started with Basic (not a good language really, but it was a good way to get kids started)
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
Obviously no language can be serious without a high price tag and draconian licensing restrictions.
Not so long ago, a story came up on Slashdot about learning the Wolfram language (left as an exercise to the reader to locate).
As I recall, very quickly there were concrete things as a result of relatively easy things ... graphing or plotting or somesuch. And it went quick from there in terms of being able to do things people could relate to, because it's the same kinds of things they kids would learn in school.
So, I guess contrast this to the old fashioned languages we used to learn on like Logo ... ok, I can draw a line. I have always wanted to draw a line. How awesome, a line. (Don't get me wrong, Logo was my first programming, and it was cool.)
Wolfram seems like he's got a much more "results oriented" language for doing fairly practical things, and that it will be easier to see the immediacy of the pieces as it relates to something you grasp.
I wouldn't discount him out of hand when he says this. His stuff is far less abstract, and far more concrete in terms of the kinds of things you do.
Lost at C:>. Found at C.
Teaching "how to program" to the general population isn't about teaching a practical skill.
Just like Math, the point is to get students to understand Logic and Reasoning skills.
Similar to how P.E. class isn't meant to teach children how to play dodgeball, it's about making sure they understand the importance of being active, and know various ways they might be able to enjoy that.
If a "toy language" is more approachable, go for it.
-- 'The' Lord and Master Bitman On High, Master Of All
EWD498 in PDF or HTML
See that "Preview" button?
Especially if you want to teach kids, you need something that gives immediate rewards. C doesn't do that. It takes an incredible amount of learning (either that or a lot of rote programming as in "do all this without thinking why") before you even get any kind of output out of the program. Let alone anything that would evoke more than a "meh" from a kid.
You need some environment where the child gets the impression that his or her ideas are reflected by the machine. I want - I do - I get has to be a simple three step program. At the very least at the beginning.
Expecting children to invest a lot of time for the promise of some reward in some future they can't imagine is pointless. They won't do it.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
The problem with introducing software development is that environments like Scratch are the easiest way these days to get a kid to write something and get immediate feedback. How many old timers remember:
10 PRINT "I am Cool"
20 GOTO 10
as their first BASIC program on one of the old home computer platforms of the 80s?
Scratch is like that. You stitch together simple statements and make something actually happen on the screen. You could argue that you could teach them a little JavaScript or something similar. but you still need enough syntax and backstory to get them to do something interesting. This is especially true now that most kids are being raised with "consume only" mobile devices and tablet OSes as their main computing platforms. The Wolfram language is similar -- very easy to pick up, -but- for a beginner the syntax is a barrier. Now that programming is so abstract from the actual hardware, it takes a little effort to introduce the concepts slowly and walk back all that abstraction.
My daughter (7 years old) spend 10 minutes choosing proper shade of pink for a cat in her first Scratch game. I don't think that Wolfram can even start to compete in same category of fun. She was a lot more interested in possibilities of making things meow or bark rather than trivially connecting her results to per square-furlong gross national product of 10 most polluted cities in the world.
If you are targeting 12-15 year olds, sure, pick whatever. They are forced to learn French, they can be forced to learn any other strange programming language. But for 5-8 year olds, let us play with Scratch. And having to explain that father does bit different things at work than picking between pink colors for cats... he picks between different shades of blue for odd lines in table css... yes, it is kind of a cat for grownups, just square and painted in blue stripes.
Asking your carpenter to fit you for braces.
Asking a wood chipper for a blowjob.
Asking a physicist to write you a programming language.
Asking a squirrel to guard your strategic nut reserve.
Guess which one applies to this story?
I think there's a flawed premise, that there must be outreach to those not particularly inclined to do programming of their own volition.
I think that certain popular offshoring destinations demonstrate the result of such a strategy. There are good developers in those geographies, but the signal to noise ratio makes it tricky for a business person to tell the difference up front. I know in my experience, the 'cheap' flavor of offshore developers have been 5% immediately proficient (those will be gone in a month to get a better paying job, whether they move or not, people who underestimated themselves or had to take a filler job between good jobs), 15% will get to that point over half a year or so (and then get a better paying job, effectively those fresh out of not-much-better-than-high-school education and this is their first real world job). The other 80% of the cheap labor that US companies love so much either just aren't wired for the work or just don't care enough. They approach their job with all of the enthusiasm of a retail store stocker or grocery bagger.
XML is like violence. If it doesn't solve the problem, use more.
Yeah, and how's that universe pattern search going? Did he find the meaning of life yet?
Is this the kind of advice we should take?
Kriston
If I was designing a setup to teach kids programming, it'd be an IDE centered around creating - for example - a 2d game. Have easy, integrated ways to edit art assets and associate them with scripts and inputs. Have easily accessible commands to make sounds, move stuff around, and navigate between "levels". Kids like doing this; when I was a Cub Scout leader, the boys really enjoyed drawing pictures and bringing them to life and figuring out what would happen - but there's no way they would have been able to chain things together (in Haxe, since at the time a Flash game was the most accessible target for the kids to be able to play the final game at home) without me helping.
There's lots of languages that would be suitable for this, and I don't think that's necessarily the important part. The problem with just picking up, say, Java and writing a game is that there's a lot of ducks you have to have lined up before you can get an interesting result. There's a lot of unintuitive steps. When I learned Commodore 64 basic as a kid, I pushed through those challenges because that was the only way I could play a new game. Most kids now won't have that problem of "there's nothing to do on the computer".
Let's not stir that bag of worms...
8 year olds can learn Scratch precisely because it's limited. In beginning classes, there is are only so many way to connect blocks. One can stumble on a solution with random twiddling and over time start to notice patterns. This is not going to happen with any free form language where you can type whatever you want, but most of the thing you type will not compile.
Past this stage, there is actually nothing wrong with BASIC. Try PLAY "abcd", tweak till results sounds like a tune, then add gosub for a refrain.
"Stephen Wolfram" is the new "3D printing" of hype! Have you Stephen Wolframed yet? I got a Stephen Wolfram, it's the future. If you don't Stephen Wolfram, you are a Luddite.
I taught myself how to program using the BASIC books located in the Radio Shack stores and typed them into the (new) TRS-80's they had out. (Yes I am THAT old) I then moved on to using Assembly (Z80). At the moment I can code in 23 languages, and I think in C so there can be a progression.
Although I completely agree that one needs an introductory language to bridge the gap between language arts and programming, the last time I checked Dice there were no openings for Wolfram programmers. I do however remember all the hype around the various instances of BASIC and I can attest to a large number of VB apps that were written (very poorly) by non-programmers. Coding past an interpreter syntax does not qualify you as a programmer.
I see this entire discussion, including the various calls for CS education in the public schools as yet another instance of what killed my profession: the incorporation of unskilled labor. I am CCIE #12981 and there was a time when having that certification meant I could pull down a well paying job nearly anywhere. Now it almost doesn't matter because so few organizations need highly qualified networking resources. They have farmed out networking to a 3rd party, or they have a few slightly skilled resources that keep the lights on. I see the same thing happening to software development, and we as a culture will continue to suffer under the risks of running poorly written applications, because corporations don't see the need to hire highly skilled developers. Shoving all students into the pot via mandatory CS education, or promoting BASIC languages like Wolfram will only make that worse.
If you want a programmer you don't start with a language. You start with math and specifically with logic. The language used is a mere vehicle for the expression of concepts and as such learning its syntax is secondary. Rather teach principles, such as "Always check your inputs, and your return values" which is true in any language.
I am constantly reminded that people seldom communicate well with each other; Why would they be expected to communicate well with machines?
The Wolfram Language seems to me to be a good way to learn to communicate (at least mathematically) with machines, and it looks to me like it could help improve communicating mathematically with people, too.
Charles Key Ogden developed a system he called "Basic English," based on the theory that anything can be communicated in 850 words. https://www.youtube.com/watch?...
Notice how many English words are mathematical. They describe numbers, relations, space, etc., etc.. Yet people with huge vocabularies seem to lack precision; almost everything in their language is an abstraction rather than an operable fact.
I hold no hope for the Human Race, but after only two hours trying out the Wolfram Language, I can see how this will help new thinkers master communication with their tools, and the tools they have to communicate with every day.
"The mind works quicker than you think!"
Since when Java can be considered a low-level programming language? Even C++ can be questioned as such!
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
except as a toy language. Who ever heard of a language you had to pay to use? And it's not trivial amounts either. The recommended level is $15 a month billed anually, so $180 to use their language. I'll stick with C++ or scratch.
I learned to program in college before computers were found in the home, starting with Fortran. And, I could do it, but it didn't really come together for me till I learned assembly language. In class, the teacher started with a very simple model of a computer that had only an accumulator and a small instruction set. We didn't learn about index registers until we had had to write self-modifying code to go through a list. We learned about indirection and pointers and so on.
And it wasn't hard! OK, I already had experience, but really, a kid could have learned it easily enough. One could probably turn it into a kind of game without much trouble. And, after that, you just know.
In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
Programming is not a building block.
Were you ever told to study or take notes in school? Do you know how to do either of those? Think before you answer.
Did you know organization aids in memorization? Did your teachers tell you rhythm and rhyme increase the ease with which you can learn something, or only leverage that fact, most likely thinking they were adding entertainment to keep a class full of distracted kids attentive?
Surely someone tried to feed you acrostics. Even engineers know this one.
What about mathematics? Are you still counting on your fingers and carrying the two? If you memorize your multiplication tables (by brute force) and practice using a Japanese 4/1 abacus, you can immediately compute arithmetic operations in your head. Memorize a simple system of numerical storage (Dominick's, Mnemonic Major, number shape, PAO) and use a digital computation algorithm and you can keep three registers straight while you compute infinite digits in any square root in your head faster than you can write or voice the numbers.
People think too much about goals and not about foundations. They also think children too stupid to understand anything complex, instead of thinking about how people think. You would think folks would say, "Hey, we can describe memory to children in great technical detail, because a child will stare at you blankly, think for about four seconds, and immediately recognize the mechanism you've described!" Instead they say, "Associative? You want to tell children memory is visual and associative? They're not going to understand that! It's too complex!" It's ludicrous; it's like claiming you can't tell a child teeth grind up food and wet it with saliva so it can safely transport down the esophagus to the stomach. They bite a chicken nugget, chew, swallow, and feel it move, and immediately understand what you're babbling about.
As a result, we don't teach children to learn. We force them to learn by whatever means necessary, but give them no tool to drive information into their minds. We don't teach them study methods, note-taking methods, or deliberate practice; we don't teach them any concepts of executive function or mnemonics; and we even avoid showing them highly-structured, systematic approaches to basic mathematics, under the assumption that children cannot handle structure and require a sort of free-play type of classroom learning.
Children need to start with a basic study of the mind. First a brief overview of memory in function, including a high-level overview of the neurology involved and an introduction to mnemonic devices, but excluding mnemonic systems. Then an explanation of leveraging human memory through systems of study and note-taking, like SQ3R and the Affinity Diagram device. These provide the easy foundation to ingesting new information.
Once you've transferred these, you can teach and apply deliberate practice and executive function. Deliberate practice is a method of technical, goal-oriented practice producing constant and immediate results: you recognize your weaknesses and focus on those, while trying to judge if you're improving. Executive function includes a broad array of loosely-related behaviors, notably in eliminating distraction, managing time, and orga
Support my political activism on Patreon.
I looked at teaching my kids scratch. I bought this book called super adventures in scratch. Sort of a comic book that knitted together diverse simple programs into a made up adventure story. No teaching of concepts just moving icons. I did not think much of it but I gave it to my kids.
Man was I wrong. that book was absolutely perfect for a 7 to 9 year old. they gobbled it up, and competed to finish chapters. played the games, and them tried to modify them. all on their own.
I could not have imagined a better introduction. And it reminded me a lot of my own self propelled learning by copying BASIC programs out of KILOBAUD magazine (dating myself).
The challenge then was that computers were slow so you had to figure out how to make programs go fast. The problem today is rather one of managing complexity. And this is where scratch beats wolfram as a language. Scratch has the ingredients we now consider essential most notably event dispatch, listeners and everything that makes objects work. The objects scratch mainly uses are literally iconified (usually a cat or something).
So yes, no one is writing a word processopr or computing sattelite trjaectories in scratch. but it cuts past the crap of languages (remebering syntax) but teaches you the abstract concepts just as a matter of course. There really isn't any good linear program in scratch and even calling subroutines is rare. You many dispatch messages to objects.
Wolfram is right if you already know about programming and are fixated on doing some calculations. but in regards to learning scratch is sugar coated health food that kids love.
Some drink at the fountain of knowledge. Others just gargle.
That's news to me...
“He’s not deformed, he’s just drunk!”
Wolfram Language is far more powerful than any language you've ever used. Try it.
Back in 1998 or so there was a contest to program a re-built 50-year-old computer for a museum.
I think it was the Manchester Baby Mark 1.
There were only like 5 or 6 instructions and very limited memory.
The "wow factor" for kids was the memory:
It was a 32x32 "dot matrix" on a CRT.
There was a java simulator for it.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Is this an ad for this programming language I've never heard about?
--
Stay tuned for some shock and awe coming right up after this messages!
http://www.davidsharp.com/baby...
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
My brother-in-law was excited to show me his project from his high school computer science elective course, and I was surprised by what I saw. From what I could tell it was an IDE specifically designed to help kids build and run video games with in the IDE. I'm sure that' helpful for teaching students some very abstract concepts, but it's not empowering. I'd much rather learn how to build a program that will run on an actual computer, than piecing together objects to create a video game that only I'd be able to play.
After a year of computer science class he still couldn't write a program that could independently of the IDE, or a program that was not a Mario clone. The greatest thing about programming is the empowering ability to get a computer to do what you ask it to do.
Actually I think learning LUA would be great for kids, especially since many video games use it for modding. What's cooler for a kid than seeing mods s/he modifies/creates in one of their favorite games!
Horror & SciFi Erotic Nudes
Scratch is good for very young kids that aren't even proficient enough at TYPING. That would be the first major barrier the Scratch could overcome. When you work in scratch - there is no "syntax" to learn - because it's all tactile. Imagine a second-grader who drops a semicolon and starts trying to interpret an error message given at compile time on the FOLLOWING line due to it...
Scratch is just and application running on a Smalltalk image. There is an easter egg which will drop you into the full IDE when you are ready to spread your wings and start doing "Real Programming (TM)"
Another advantage of Scratch and similar Free Software projects: they are usually translated, and require minimal language skills. For 8-10 year old kids, it's a great option.
I bought a Tiddlybot/PiBot for my kid, which runs Blockly (https://github.com/google/blockly), and was able to switch the interface language easily (less intimidating).
Please note that those "toy" languages are based on English.
Most kids in the world DO NOT SPEAK ENGLISH at the age of 7-8-9 years.
Half of the world does not even use Latin alphabet - see the map at https://en.wikipedia.org/wiki/....
Adult programmers are expected to read & comprehend basic English no matter what their native language is. You can speak in Hindi or Amharic with your colleagues, but your if/else statements will still be in English. With kids this assumption will not hold.
Thus, some other coding languages or paradigms must be used.
Maybe I am wrong and English will dominate the future world so heavily that all 5 year olds WILL comprehend it enough to use it for basic coding?
Lisp is different, but not that different. If you want something that different, look at Erlang. And even Erlang has a transformation of those basic blocks. Perhaps Haskell or CaML, I don't know either of those.
I think we've pushed this "anyone can grow up to be president" thing too far.
Scratch is Squeak with safety bars and training wheels. Use Scratch before they're ready for Squeak. When they're done with Scratch, Squeak is only one of their options.
I think we've pushed this "anyone can grow up to be president" thing too far.
The problem with scratch is that the kids have conquered my ipad, extorted me into buying a copy of Minecraft PC to modify and then to get the Mindstorms robot thing for them. Cost me over a thousand dollars, they're still to young to hold a job, and they dont' do much housework.
... but maybe you can tell me that I got it all wrong from looking at their web page for 10 seconds.
In order to teach someone English would you require them to learn Pidgin-English?
Answer: No.
Very simple.
https://xkcd.com/927/
If you gave me a choice between a printer and a giraffe with explosive diarrhoea, i'll get my ladder and my raincoat
I have a 9-year-old that knows how to program JavaScript thanks to khan academy's excellent interactive tutorial series. He quickly hit a brick wall with scratch.
A markdown syntax which can write math formulas, chemical, musical, ...... is more important and fundamental than anything else for education.