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?
draw cat
cat.say "frosty piss"
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?
You're really going to criticize teachers for teaching children in kindergarten, first, second and third grade programming logic using the equivalent of building blocks?
But if the kids learn C++ and Java, then they'll be competition and they'll take our jobs!
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 basic structures, conditions, loops, and routine definitions and calls is pretty much the same for all languages (except maybe lisp because of its alien syntax).
Beyond that certain formalities exist in error/exception handling with try/catch and methods to exit loops or functions and the various methods to associate methods with data structures. Subsequently higher level abstractions of datasets and manipulation of those sets etc.
Personally, I also think it can be disorienting to need to switch to a new development environment when, during the course of study, we advance enough to need more than a single programming language has to offer. The question can also easily be whether learning to deal with that disorienting aspect of environment switches is a quality desirable to have in professionals. I would say it is easily just as important as any other fundamental.
If they can't do 3000 levels calculus in Wolfram assembly, they're just not being challenged.
This is Sparta!
But, what about women and minorities? How will they compete in the new world of Wolfram? I presume that he will ultimately produce a very basic participation trophy language for them. Oh, wait, that's Scratch, or Turtle.
I was hoping for an innovative language. Mathmatica is fine but nothing new.
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.
If you're going to have a "kid's" / beginner language that's also "real", you might as well go with Alan Kay's Squeak, which is a variant of Smalltalk:
* https://en.wikipedia.org/wiki/Squeak
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.
First it was Microsoft and Google, now Wolfram. When are these guys going to comprehend that 1) most people are not dying to become a programmer; 2) most do not want to become low-pay highly-trained monkeys for big corporations; 3) people can have fulfilling lives without learning anything about computer programming; 4) programming per se takes back seat to mathematics when it comes to developing logical thinking; 5) programming is not computer science; 6) Mickey Mouse languages are not computer science; 7) professional languages are not computer science; 8) kids are, in general, not mature enough to learn the basics of computer science; 9) most people are sick and tired of corporations and their shenanigans, whose obvious goal is to lock-in people for life, but whose ostensible goal is to improve education?
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)
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.
I agree with the basic idea here. One bullshit thing I've heard advanced for the last few decades, is that toy languages are "easier." A beginner can get their shit running sooner.
Ok. If true, then ok. There are very many situations where maxing get-done-quickly, over all other concerns, is the right thing to do.
And yet, toy languages rarely seem any easier once you get past "hello world." Like, the thing you're working on a week after "hello world" isn't any easier whether you're using PHP or Java. And the thing you're working on a month after "hello world" is harder in PHP and takes you longer. And a few years later, it takes a very special kind of .. discipline? apathy? depressed fatalistic resignation? .. to stay with the PHP job, because you know your productivity is going to be below industry average. You're spending longer writing code than everyone else, you're spending more time finding and fixing bugs that a compiler should have caught, etc etc etc.
I always considered Java a toy language... you never stop learning new things in the interstate.
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!
I though Turtle and BASIC were languages for beginners.
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
But so very close! Almost! Except the syntax.
"[...] they can be programs that immediately connect to the real world [...]"
"Wolfram Programming Lab gives people a broad way to [...]"
"[...] an incredibly valuable career-building practical skill [...]"
"[...] the kind of computational thinking that's increasingly central to today's world [...]"
"all for $1.99/month!"
Ok, I made the last one up.
I just don't like Stephen Wolfram. I'm not even sure why, but I'm sure that nothing simple and elegant ever comes from his offerings.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Because that is just sooo much more intuitive than:
print "Hello World"
and then one needs to install the correct java interpreter, and the java binary, and the java development environment [Eclipse], hope you have 8Gb memory and disk space.
Because I can do all that on a raspberry pi for $30, which includes everything I need to get up and running, and even works on old crappy TVs.
They also include sandboxed environments, just like java, that prevent damage to real hardware/memory. Java is great for junior developers who need a sandboxed environment because they are not ready to do the "hard stuff" like proper memory management, cleanup, etc.
Then again, it's more rewarding when "hello world" boots in a few seconds, not a few minutes, or spews out a huge stack of stack traces.
JAVA is a toy, as proof, it runs most toddler entertainment devices like android phone apps, etc. Toddler apps can withstand a bit of lag, business apps can't.
This is the point he's missing - scratch is meant to test aptitude for programming, not programming itself. If they like it, the resources are there to take it further. If they don't, they haven't wasted too much time discovering that fact.
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...
This sounds like click bait, to be honest, rather than a real discussion.
Here's the simple fact of the matter with so-called modern programming languages and their variants: As long as you're thinking in the box, your concepts of incremental improvement will reach a plateau and invariably flatline. I took the bait and checked out Wolfram - and here we have YET another language expressing ideas on how to mirror text, how to determine shortest routes, and to draw polygons.
How many times has this been done before? Perhaps a thousand times? Perhaps more, much more?
Scratch is decent for exemplifying logical sequences in a visual manner much like game programming engines do, but calling it a toy language is both silly and stupid. It's a visual way of relating logic to the user experience, plain and simple.
It's like when people called Visual Basic a toy language... Not only was VB responsible for teaching an entire generation of coders how to code, but it also introduced the beauty of visualizing the user and customer experience first BEFORE filling in the details behind the scenes. Visual Basic, alone is arguably what made Windows as successful as it is and influencing 'real' languages for better UI design and organization concepts.
The funny thing is. Modern 'experiences' are stripping away those advances, complicating them, and making them difficult to work with. Again.
In my opinion. The world needs a new REAL toy language that can build optimized applications on the client side without requiring a web connection, and without requiring a virtual machine to run. That and with VR on the horizon, we absolutely need a new framework for designing new 'in virtual reality' interfaces to manipulate our environments.
Personally. Brain dead endeavors such as Wolfram's are nothing but a 'me too' and please give me a few bucks plea. When the REAL innovation which need to occur and will occur is going to be with application development inside the virtual reality environments.
Can you imagine pair programming with one person inside the environment and another outside?
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).
We teach math without calculators. We can teach logic and computer science without computers. Like any other language, programming languages apply mnemonics to otherwise abstract concepts. Why not focus on the concepts independent of an arbitrary representation, just as we do in other core subjects?
My 11yo has been telling me he would like to "program" for over a year, but the idea of teaching Python or Java has felt bad... This week they had a lesson with scratch at school and he came home so happy and excited.
Today he started playing around with it at home, and in a moment he had a drawn a simple labyrinth, put a ball on the mouse cursor and asked how he could detect when the ball hits the wall... To me it looked intuitive and easy to use. Very little typing, rather he has an idea, and needs to figure out the logic to implement. It seemed like he is solving similar problems on a small scale as in real programming without having to type, think about libraries, dependencies etc.
At some point I guess we'll go through how this stuff works "in a real language", but I would imagine this will make that step a lot less painful.
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?
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.
Stop teaching people toy languages. Because before you know it people will be using them in production in a role they were never intended. If you want to see what damage that can cause look to BASIC and VB, and Pascal. As they were the only languages people knew, especially managers, they were forced into a role they were never intended to fill. Hence they had to be kludged to actually be useful.
So pick a scripting language such as Python, Perl, Ruby, JavaScript, etc. instead.
putting the 'B' in LGBTQ+
Another subscription money pit! I think not!
It may be a great language but with that business model I for one will not even try it!
The problem with Wolfram Alpha's programming language is that you can't really use it to accomplish anything. It exists in a bubble that isn't very useful. Really it is just interesting for a few minutes to play with. Are you going to write a smartphone app, word processor, website or some revolutionary new software program? Nope. Also, it is so unlike actual programming languages used to make those kinds of useful programs that it isn't important to learn. The same goes for Scratch. Maybe they're useful for getting kids interested, I don't know. I mean if you're not already interested in programming of your own volition then you're probably not going to be. If a real programming language is too hard for you or you don't want to learn to type, then you are probably doomed to just playing with tablets or game consoles and being generally useless to society except as a consumer.
You gave me a chuckle, and - since it was at your expense - I feel it would be proper and polite to thank you for it.
... 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.
Approach this from Plato's view point. The amorphous blob. Stereotypes. What is a thing... Etc. Use kunta kinte as a name placeholder for what/who is a baby?
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
a lot of meh
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.