Slashdot Mirror


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?

12 of 214 comments (clear)

  1. Breaking News, Details At 11 by Anonymous Coward · · Score: 5, Insightful

    Guy with profit motive thinks his pricey programming environment is better than one that is free.

    1. Re:Breaking News, Details At 11 by Anonymous Coward · · Score: 4, Insightful

      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.

    2. Re:Breaking News, Details At 11 by ShanghaiBill · · Score: 4, Interesting

      Guy with profit motive thinks his pricey programming environment is better than one that is free.

      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.

    3. Re:Breaking News, Details At 11 by GodelEscherBlecch · · Score: 4, 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.

  2. Misses the point by Lord+Bitman · · 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.

    --
    -- 'The' Lord and Master Bitman On High, Master Of All
    1. Re:Misses the point by bluefoxlucid · · Score: 4, 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.

  3. Wrong shade of pink by abies · · 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.

  4. Not sure any of this is that good... by Junta · · Score: 4, 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.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  5. Re:I can understand the point. by serviscope_minor · · 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.

    --
    SJW n. One who posts facts.
  6. BASIC programming skills by DFDumont · · Score: 4, 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.

  7. Re:I can understand the point. by gstoddart · · Score: 5, Interesting

    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.

    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.

    --
    Lost at C:>. Found at C.
  8. Honey coated health food by goombah99 · · 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.

    --
    Some drink at the fountain of knowledge. Others just gargle.