Stephen Wolfram: No Need To Teach With 'Toy Programming Languages' Like Scratch (wolfram.com) 214
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?
Breaking News, Details At 11 (Score:5, Insightful)
Re:Breaking News, Details At 11 (Score:4, Insightful)
Re: (Score:2)
More like guy with a reputation for having a huge ego misrepresents another option that is aimed at an entirely different group of people. The scratch environment is for a very specific audience, and it is not in any way in competition with Wolfram's audience.
Options to that thought:
Re: (Score:2)
Well, if you know Scratch and want to do maths, then Squeak with e-toys is perfect for you.
I don't know Wolfram's tools well enough to comment on them, however. (As in "I've never seen them used, or talked to anyone who used them.".)
Re:Breaking News, Details At 11 (Score:4, Interesting)
Guy with profit motive thinks his pricey programming environment is better than one that is free. [mit.edu]
He also doesn't understand how Scratch is used. I help teach programming to 4th graders in an after school program, using Scratch. The kids go to the site, and start programming. With Wolfram's site, they can't do that, because they hit an immediate roadblock: An email address is required. Most 9 year old kids don't have an email address, and don't know how to get one.
I was unable to create an account, because it seems to be Slashdotted, but from looking at the demos, it seems to require a lot of typing, rather than the graphical interface that Scratch uses. So my impression is that this is something that is too hard for young kids, but too silly for adults. In my school district, after the kids learn Scratch, they move up to a "real" programming language (Python) in middle school, so I am not sure if this product has a niche.
Re: (Score:3, Informative)
With Wolfram's site, they can't do that, because they hit an immediate roadblock: An email address is required.
The big red button right after the page title says "Start programming now (no sign-in required)".
I think a loggin is only required if you want to save work -- just like Scratch
Re: (Score:2)
Is Scratch on-line now? When I tested it a few years ago I installed it, and if there were any other options I ignored them.
Re: (Score:3)
It seems to me that the languages used to teach are intended to be rather simple, and though that limits their functionality, it makes it a lot easier to learn, and a lot less scare. If you just hit them with professional type stuff at square one, a
Re: (Score:3)
There's two arguments there:
- Starting at a high level language will allow a wider audience, but they'll come out not knowing the fundamentals.
- Starting at a low level language will scare off many casuals, but those who stick with it will (typically) know a lot more in the end.
In our modern era of "everyone should have a chance!" thinking, the former is definitely the way to go. Unfortunately it makes it harder for those who want to dig deeper to do so because you end up forming a lot of bad habits that a
Re:Breaking News, Details At 11 (Score:5, Insightful)
There's two arguments there: - Starting at a high level language will allow a wider audience, but they'll come out not knowing the fundamentals. - Starting at a low level language will scare off many casuals, but those who stick with it will (typically) know a lot more in the end.
I think people keep turning this into a false choice by assuming that there is only only one end goal for education in coding, which is a career in programming. There are in fact many (and in another decade will surely be many more) careers where a secondary skill in 'light' coding (aka: scripting) is a huge benefit if not a requirement. Starting at the high level is dead wrong (IMO) if you intend to be a programmer, but is just fine if you are targeting basic code-literacy and the ability to write script-y stuff against existing APIs. Since public school is about maximum exposure to a wide area of topics, I think that it makes the most sense to teach high-level as the core class and supply low-level as an elective or AP course. The people who take the core class will still benefit from it even if they never pursue programming, just like those of us with decent grammar / math skills have a general leg up in the world even if we are not writers / mathematicians.
I really don't know why people don't get it that every time Obama or whoever says that we should get kids to 'code' they are referring to code-literacy as an avenue or compliment to many careers (STEM and otherwise), not turning an entire generation of children into career programmers. The latter is so patently absurd I have to assume this is a willful misinterpretation, but I guess it is no more ridiculous than a lot of the other things some folks around here ascribe to the government (or their phobia thereof) for the purposes of strawman-ing it to death.
Honey coated health food (Score:5, Informative)
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.
Re: (Score:3)
My wife taught herself to program modifying game programs in BASIC on the TRS-80. She didn't stop studying there, but currently makes a lot of money as a developer, and is glad she went into the field.
Re: (Score:3)
In college, one of my computer science professors told the class that everything we were learning would be obsolete by the time we graduated, but the concepts we learned would serve us for our entire careers. Sure enough, he was right. I don't code in C anyone (the language I used in college -
Re: (Score:3)
So, what does it do that Squeak [wikipedia.org] didn't already do 20 years ago?
Re: (Score:2)
Re: (Score:2)
Scratch has a lot of the rough edges filed off so beginners can't hurt themselves, and integrates a lot of fun or useful things.
When I last tried e-toys the developers hadn't bothered to get all the user interface bugs out, and it was a lot more complicated to use than Scratch was. But, IIRC, Scratch was developed from e-toys, but extracted from the larger environment so you don't need to load a complete Smalltalk image to run it. (I don't think most of Squeak is included...but the transition from Scratch
Re: (Score:3)
Here in Australia there is a TV show called "Good Game" that reviews games and stuff. It has a spin-off TV show called "Good Game Spawn Point" that reviews games and stuff aimed at younger gamers (so only kid-friendly games). Good Game Spawn Point ran a segment (split up over a couple of episodes) on how to build a game with Scratch (a Space Invaders clone IIRC) and it was so popular with the viewers that they brought it back and showed how to make some sort of tank game as well.
I haven't played with Scratc
Popcorn time (Score:4, Funny)
Settling into a comfy chair & pouring myself a beer...
I can understand the point. (Score:2)
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)
Re: (Score:2, Informative)
No you don't.
C++ and Java are both great beginner's languages.
Re: (Score:3, Insightful)
I'm sorry, but in the world of instant gratification and kids already used to highly graphical and immersive games from a very young age, writing a program that 'outputs hello world' or having to learn to use some framework or library to do anything 'cool' is not going to engage 5,6,7 year old kids.
For these age groups, these kinds of graphical block programming languages are very much helpful in that they actually engage the child. I have not played with Scratch in a while, but the exercises on code.org ar
Re: (Score:2)
Ever tried to describe to someone below the age of 10 why you need to declare variables?
Re:I can understand the point. (Score:4, Interesting)
Exactly. Same goes for all the boiler plate code just to get things running. We have to start with a bunch of complicated stuff like "int main(int argc, char **argv)" and "#include ". Java makes it even worth by having to declare a class simply to write hello world. Languages like basic are much simpler for beginners because there is no boiler plate code. Hello world is a single line of code, and very easy for people to understand.
Re: (Score:3)
Yes... and I think it's important that they understand why. A beginning programming course might do well to teach the basics of what's going on in the computer itself, how code - no matter which language - is changed to machine instructions, and talk about the instruction pointer, simple memory allocation (like what happens when you declare a variable).
My son takes these crap programming courses in high school, and while it included Java (and scratch, and even python), and while he understood some of what
Re: (Score:3)
Re: (Score:3)
Re: (Score:2)
Teacher: Where do you keep things?
Kid: In my pockets.
T: OK, but where do we keep things in the classroom?
K: Boxes.
T: Exactly. Do we keep the shoes in with the cookies?
K: Yukk! No!
T: So you have a box for this, and a box for that, and you put the right thing in the right box?
K: Yes.
T: Well computers need to keep things too. Variables are like boxes, and one thing goes in one and another thing goes in another. That way it knows where everything is.
Re: (Score:3)
Ever tried to describe to someone below the age of 10 why you need to declare variables?
I was a grader in college and can attest to frustrations at having to explain this to people over 10.
Re: (Score:2)
Yes.
The issue of forward referencing is part of the nature of the universe, not specific to certain computer languages. I would probably actually use the words "Forward references are only permitted where the context enables their dereferencing." and then explain what they mean to some ten year olds, also explaining that it is the same reason that you cannot, in English class, say "He was good" without previously ha
Re:I can understand the point. (Score:4, Funny)
C++ and Java are both great beginner's languages.
I've met folks in projects, who have been programming C++ and Java for 10 years . . . and they still program like they are beginners.
Hmmm . . . maybe a Fountain of Youth . . . ?
Re: (Score:3)
No you don't.
C++ and Java are both great beginner's languages.
Yeah, that's why there is LabView.
Some people are easily intimidated by text - not just procedural thinking, but actual text - not many of those people will participate in a text based discussion board like /. but they exist, watching YouTube videos, and working in your company. One way of thinking says: so let people who can handle text handle all the programming. Another way says: give them a mouse and a drag and drop language so we don't have to have endless meetings with these people trying to get the
Re: (Score:2)
Sorry, but while crafted subsets of C++ and Java can be great beginners languages, the full languages are terrible beginners languages.
If you're in the right age group, C could be an excellent beginners language, as could some dialects of Forth or Lisp. (In the case of Lisp, NOT Common Lisp. Same problem as C++ and Java ... too much. Too many traps.)
FWIW, I started with Fortran IV and from there went on to PL/1, USCD Pascal, Forth, and Assembler. I never did master PL/1. I got to where I could mainly h
Re: (Score:2)
C++ is actually not that bad to begin with, if taught right. You can learn to program well, but you won't be prepared for real-world C++ programming, where people use obsolescent parts of the language, use more sophisticated concepts, and generally use more things than you can practically teach a beginner. I'm not sure that this is the right way to proceed, but it's better than teaching C with Classes like my son's textbook did in 2011.
Re: (Score:2)
no you don't.
if you make toy level programs all you need is to be able to call
toy.moveLeft(20);
I thought that would be the point. that toy level programming in scratch or java needs just toy level knowledge so why not use something that can be used for something else too... not an advertisement for some weird ass wolfram language i've never heard of until now and unlikely to utilize in my work anyways.
basic was good that it was included.. even with dos computers. now javascript is what's included.. heck eve
Re: (Score:2)
But C++ and Java isn't for beginners. You need to have a certain level of understanding of programming before you can use them.
You need to have a certain level of understanding of programming before you can use ANY programming language productively. Which is why it's not really about the syntax and semantics - it's about algorithms and data structures, and above all about mathematical modelling. Until you master the art of creating suitable models of real-world situations, and judging how amenable to computation your models will be, there's not much point in writing a single line of code.
Re:I can understand the point. (Score:5, Interesting)
Actually, I disagree it should be about algorithms and data structures to begin with. In fact, it's a terrible idea. Don't shoot for "productively", don't look for "creating suitable models of real-world situations". That's way too much way too fast.
You don't teach a kid to build stuff by letting them build a real functioning bridge. You give them some legos or building blocks and let them run wild with it. Let them realize things fall over, or collapse, or don't fit.
What we need is a way to accomplish small, discrete, achievable tasks ... as quickly as possible, in a way they can fiddle with permutations and see the outcomes, and with as little abstract concepts as possible. At least, not ones which seem like abstract concepts.
You're not trying to make people who are professional programmers ... you're trying to establish "if I do X, Y happens ... if I want something which is kinda like Y, I need to do something which is mostly like X but different in this way".
One of the exercises I saw done in junior high/high school to teach people the root concept was to get them to "program the robot". You have them walk someone through the steps of doing an easy task for a human ... ideally the "robot" understands you can ONLY do EXACTLY what they tell you, EXACTLY as stated, and that you CAN'T interpret for them.
"Go get the book" results in nothing. Step with your left foot, step with your right foot, extend your hand, open your hand, close your hand. I had a class mate who just couldn't wrap her head around this until a teacher and I did this after class ... once she'd done it, she suddenly kinda went "oh, so I need to break this down into a bunch of small steps it already knows how to do". She was never going to be a professional coder, but suddenly she understood the underlying fact ... computers are idiots and can't do anything on their own.
The idea you need to formulate a set of steps, plan it out and describe it correctly to do something is what you're learning when you first get introduced to the concept of "programming". And it's incredibly eye-opening how much people struggle with even that as a concept.
Start throwing around words like algorithms and data structures, and people will switch off LONG before you've taught them a damned thing.
You need to lay the foundation to help people being to grasp what it means to start filling in those blanks, and extrapolating to a more generalized solution. You can do an awful lot of that adevelopers.slashdot.org
What you describe is not suitable for teaching kids, or establishing the concept. It's for people who are going to be pursuing something much more rigorous and formalized.
Re: (Score:2)
Exactly.. I started with Sinclair Basic by myself, then got taught procedural programming with Comal at school, then dabbled a little with AMOS on my Amiga then moved on to Turbo Pascal at Uni, shortly followed by Turbo C, Borland C++ 4.5 (still the most I have ever paid for a single piece of software). More recently C# and Java are my current poison, mainly for work reasons. Had I started with Java with all its complexities, oddities, need to learn the API etc things would have been a lot harder.
You need
Re: (Score:2)
Neither, it appears, is English.
Re: (Score:2)
But C++ and Java isn't for beginners.
I started with Java and then learned C++. I can't think of a better way to start as a beginner.
Re:I can understand the point. (Score:5, Insightful)
I wish people would stop quoting that. First, it's junk and second it's incredibly out of date. The quote is from 1975.
BASIC in 1975 was not very good.
BASIC by 1982 was much much better. BBC basic (first released in 1982) had simple structured programming with named procedures and functions, local variables and etc. By 1987 BBC BASIC had acquired proper blocks, and was quickly followed by QuickBASIC in 1988. Those are the only ones I know of.
The glib quote about BASIC has been out of date for approximately 30 years.
Re: (Score:2)
The other question is what was better back in the late 1960s when I was first exposed. The most-used other languages were FORTRAN, COBOL, and some PL/I, which means either the same sucky control structures or hopeless complexity.
Re: (Score:2)
Fortran didn't have the "all variables are global" that the early BASIC's had, and THAT was what justified the above quotation. It did, however, lack the structured programming constructs that were present in PL/1. PL/1 was nearly as complex and hard to use as C++, but it had significant advantages over Fortran if you were doing anything involving dynamically allocated memory. (Look up DYSTAL for the lengths some people would go to handle dynamically allocated memory in FORTRAN IV. I don't know COBOL we
Re: (Score:3)
Only if you have made enough mistakes in a language like Basic you will realize that there's a reason to code in better languages. Otherwise you will just get bad coders in a different language and nothing would have been achieved.
The language doesn't really matter, it's how you apply it that matters.
Re: (Score:2)
yeah. I taught myself basic back a long time ago. Numbered lines and lots of gotos. There was gosub, but I didn't really get it. Then I taught myself C, and since then have learned numerous other languages.
The advantage of basic over C, at least for someone's first exposure to programming, is the immediacy of execution. I wouldn't recommend basic at this point, but there's nothing fundamentally wrong with it just that there are better languages.
Personally I'd recommend Python to a beginner because the synta
Re: (Score:2)
Yeh, its a real dampener on things when you have to load your c compiler from cassette tape every time you want to use it.
Re: (Score:2)
Au contraire: There are loads of reasons not to use perl, all of them major.
Goat sacrifices are one of the more minor ones. Programming has a long tradition of goat sacrifices. I personally worked in a software company that decided to sacrifice a goat. However, the company failed shortly afterwards, so I do not actually recommend goat sacrifice any more than perl.
Re: I can understand the point. (Score:2, Interesting)
I started in BASIC. My software made me $4 million last year, and is often cited by other developers as being exceptionally well done.
Re: (Score:2)
Re:I can understand the point. (Score:4, Insightful)
Sounds reasonable (Score:2, Insightful)
Obviously no language can be serious without a high price tag and draconian licensing restrictions.
Quite possibly ... (Score:4, Informative)
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.
Re: (Score:3)
Re: (Score:3)
Except his language allows you to all of the stuff which has come from Mathmatica and the like ... you can do full on advanced maths with it.
It isn't a toy language, it's a fairly complete language. Once you learn the basic you keep going on to the advanced stuff.
The easy stuff is easy. But it can go all the way to doing multi-variable calculus ... that's not a toy language.
Maybe you don't understand the scope of what can actually be done with it.
What he's saying is he has an easy to learn language which
That's because C++ has destroyed your brain. (Score:2)
Wolfram Language is far more powerful than any language you've ever used. Try it.
Re: (Score:2)
The Wolfram language allows you to do things that make sense to people who aren't necessarily programmers in easy and obvious ways. A good example is dealing with images. I have performed a lot of image manipulation in various languages and it involves some pretty hairy stuff. In Wolfram Alpha an image is a piece of data like a string or whatever, and you can visually see them as you work with them from the command line. You can stick images in an array and manipulate them just as you would a string or
Re: (Score:2)
To me, absolutely ... a five year old can understand sorting an array of pictures of "banana frog cat apple dog elephant" in alphabetical order, without understanding the mechanics of sorting .. it's direct, tangible feedback. It's visual, and it's approachable. And it needs to advanced conceptua
Misses the point (Score:5, Insightful)
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.
Re: (Score:2)
Re:Misses the point (Score:5, Insightful)
Math up to geometry is a practical skill.
Programming to a limited extent is a practical skill; beyond that, it's about people getting their pet ideals out to the masses.
Programming to teach logic and reasoning is bullshit. Programming doesn't teach logic and reasoning; logic and reasoning are exercised in programming. If you're not that interested or simply don't know how to plan and reason, you'll be a shit programmer; we can fix this by teaching you to plan and reason.
I taught myself basic, C, C++, awk, bash scripting, and even assembly; I am not a programmer because I never learned to plan out large software projects. I don't know how to do it. I mash together bits of logic code and create a shambling, horrible beast summoned from the darkest depths of Hell. It works, but it's a *disaster*.
I've been learning about programming convention, design patterns, architecture, problem solving, and project management lately. These things have helped me improve my programming. Each is only a tool; even architecture and programming convention only lead to horribly-designed Python modules created to interface with database backends for custom Web applications, the code for which is more readable but still *terrible*. Planning skills from Project Management improved my programming; I am now seeking planning skills related to the large architecture of programming, rather than simply having an abstract idea of planning in general and programming architecture in general.
It's my ability to turn general problems into structured problems which is now transforming my 25 years of being able to make machines do things into a new skill of *programming*. All that Basic, C, Python, and the like I've done since I was 6 years old didn't give me any ability to think, plan, or solve problems; I've used programming languages to look directly at a thing I want and violently rip it from its seat into my greedy hands, and nothing else.
Re: (Score:2)
But the question is, is this toy language more approachable?
Drawing a pie chart in Wolfram from what I've seen is bordering on trivial -- and I don't meant that in a bad way.
It seems like the kinds of things he's solved with his language have much more immediacy in terms of things kids are already learning.
If I do X, Y happens. The link between cause and effect is stronger .. and quite frankly, more understandable than understanding why you'd want to print "Hello World" in the first place.
Are you suggestin
Re: Misses the point (Score:3)
Math and PE have both been required portions of a public school curriculum for more than a century. In that time, each generation has consistently been fatter and more afraid of numbers than the last.
If we require programming as a way of "teaching logic and reasoning," we can likely expect future high school graduates to be unable to send an email without help from a government case worker.
Re: (Score:2)
No. Full stop. Programming does not teach logic and reasoning. It might use those skills but it certainly does not teach them. Nor does it teach mathematics, critical thinking, grammar, or anything else everyone seems to profess.
If you want children to learn reasoning, logic, and critical thinking they need to be taught those things specifically. People with a predilection for those things will find programming intuitive a
Re: (Score:3)
EWD was here in 1975 (Score:2)
EWD498 in PDF [utexas.edu] or HTML [virginia.edu]
I dare to disagree (Score:2)
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 t
Re: (Score:3)
You should appreciate my ideals about teaching kids about memory, and then about studying and practicing [slashdot.org]. Memory is immediately recognizable and can produce immediate benefit: every mnemonist is a sort of charlatan who performs a routine, giving his audience a bunch of shit to remember and watching them utterly fail, then telling them to use one tiny little trick--usually the mnemonic linking system or the method of loci--and providing them a new list, which they promptly remember near-perfectly (typical
You need something engaging with kids (Score:2)
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. bu
Re: (Score:2)
Wrong shade of pink (Score:5, Interesting)
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.
Re: (Score:3)
per square-furlong gross national product of 10 most polluted cities in the world
Plugged that into Wolfram Alpha, it didn't understand it directly. It instead offered up the factorization of 10. I'm disappointed. :-)
Examples of bad ideas (Score:2, Funny)
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?
Not sure any of this is that good... (Score:5, Insightful)
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.
Re: (Score:2)
Re: (Score:2)
That would be all well and good, but the rhetoric frequently invokes 'be competitive with india/china/etc'
And how's that universe pattern search going? (Score:2)
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?
Language matters less than integration/content (Score:3)
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".
Re: (Score:2)
Re: (Score:2)
Have a look at CodeWorld [code.world]. While still a work in progress, it's designed specifically for students new to programming, and renders the output of simple programs as pictures and animation right in the web browser.
Age (Score:2)
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
BASIC programming skills (Score:5, Interesting)
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.
Re: (Score:2)
Coding past an interpreter syntax does not qualify you as a programmer.
What a load of nonsense! The skills you need are identical. Further, the distinction between interpreted and compile languages has been more than a bit blurry for the last 30+ years. (Lets hope you never run across Forth, your head might explode.)
But let's take it to the "extreme". Compare that old BASIC you had on your Trash-80 to 6502 Assembly and C, so that we have high, medium, and low level languages represented. It should be immediately obvious to you that programming in BASIC and 6502 Assembly
Re: (Score:2)
You completely missed the point. I could have just as easily said "past a compiler" but since I used VB as my example I went with interpreter. Next time you may try reading the entire post rather than jumping off a single clause.
My post had nothing to do with one language/framework/tool being better than another. The point that you missed is that the skills needed to be a programmer have nothing to do with proficiency in a language. They have everything to do with math. Let's teach more math and then
This is about communicating (Score:2)
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?... [youtube.com]
N
Re: (Score:3)
Ughh!!! I totally apologize to everyone for including the wrong link for Ogden's Basic English. A thousand pardons!
Here is where I meant to direct you: https://en.wikipedia.org/wiki/... [wikipedia.org]
(And now too many people know where I let myself be distracted this morning!)
java? (Score:3)
Re: (Score:2)
Yup, stopped reading right there
Re: (Score:2)
Re: (Score:2)
Well, Java is C++ with garbage collection added and a few difficult constructs (like multiple inheritance, explicit pointers etc.) removed.
Re: (Score:2)
Re: (Score:2)
When you look from high perch of 4GL, every 3GL language looks the same to you. Java is a lot closer to C than to SQL, Wolfram or Matlab. C is a lot closer to java than to assembly. We are talking about languages here (syntax etc), not capabilities.
Re: (Score:2)
So, Java is far from being close to machine code while C is little more that machine code with macros, just in a portable way.
C++ is a little bit farther because of run-time support needed for classes (and other OO fancy stuff), yet still quite close to machine code.
Java is as close to machine code as a fish from the moon.
The "capabilities" is something that needs definition. Someone intends "exp
Assembler first (Score:3, Interesting)
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.
Re: (Score:3)
That's called Williams Tube storage. Several early computers used it. One of my Computer Engineering profs started on those, then worked on a computer that used mercury delay line memories, a big improvement in storage density. You took a long pipe, formed it into a serpentine that fit the memory cabinet, put an ultrasonic transmitter on one end, and a receiver on the other, forming an acoustic delay line. You regenerated bits, or flipped them, as they came around. Of course, you had to wait for the bi
is this an ad? (Score:2)
Is this an ad for this programming language I've never heard about?
I agree (Score:2)
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 abl
LUA (Score:2)
Totally Missed the Point... (Score:2)
Translation (Score:2)
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).
Re:They're kids (Score:4, Insightful)
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 [wordpress.com] before you answer [rit.edu].
Did you know organization [free-six-sigma.com] aids in memorization? Did your teachers tell you rhythm and rhyme [studytipaday.com] 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 [studygs.net]. Even engineers [braingle.com] know this one.
What about mathematics? Are you still counting on your fingers and carrying the two? If you memorize your multiplication tables [mathsisfun.com] (by brute force) and practice using a Japanese 4/1 abacus [idirect.com], you can immediately compute arithmetic operations in your head. Memorize a simple system of numerical storage (Dominick's, Mnemonic Major, number shape [ludism.org], PAO) and use a digital computation algorithm [wikipedia.org] 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
Re: (Score:3)
"Who ever heard of a language you had to pay to use?"
S/S-Plus, SPSS, Matlab, IDL, PV-WAVE, Mathematica, AutoLisp (AutoCAD's language) and a range of other smaller languages developed in the late 70s and 80s and targeted at very specific technical markets.
To some extent, Palantir, Tableau, Spotfire, and even Excel also all are programming environments that are close enough to languages to count here (they all have solutions close to Scratch in spirit).
I'm just scratching the surface - every industry has thes