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?

11 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 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. Sounds reasonable by Anonymous Coward · · Score: 2, Insightful

    Obviously no language can be serious without a high price tag and draconian licensing restrictions.

  3. 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.

  4. Re:I can understand the point. by Anonymous Coward · · 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 are very engaging, very awesome and they even show you the JavaScript code that would be produced as a result. I think they even have some pure JavaScript exercises now too.

    It's easy to say that we all learned on real languages and it was good enough for us, but much as I hate to say it, we grew up in a different time with different expectations on what a computer program should/can do.

  5. 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.
  6. 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.
  7. Re:They're kids by bluefoxlucid · · Score: 3, 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 before you answer.

    Did you know organization aids in memorization? Did your teachers tell you rhythm and rhyme increase the ease with which you can learn something, or only leverage that fact, most likely thinking they were adding entertainment to keep a class full of distracted kids attentive?

    Surely someone tried to feed you acrostics. Even engineers know this one.

    What about mathematics? Are you still counting on your fingers and carrying the two? If you memorize your multiplication tables (by brute force) and practice using a Japanese 4/1 abacus, you can immediately compute arithmetic operations in your head. Memorize a simple system of numerical storage (Dominick's, Mnemonic Major, number shape, PAO) and use a digital computation algorithm and you can keep three registers straight while you compute infinite digits in any square root in your head faster than you can write or voice the numbers.

    People think too much about goals and not about foundations. They also think children too stupid to understand anything complex, instead of thinking about how people think. You would think folks would say, "Hey, we can describe memory to children in great technical detail, because a child will stare at you blankly, think for about four seconds, and immediately recognize the mechanism you've described!" Instead they say, "Associative? You want to tell children memory is visual and associative? They're not going to understand that! It's too complex!" It's ludicrous; it's like claiming you can't tell a child teeth grind up food and wet it with saliva so it can safely transport down the esophagus to the stomach. They bite a chicken nugget, chew, swallow, and feel it move, and immediately understand what you're babbling about.

    As a result, we don't teach children to learn. We force them to learn by whatever means necessary, but give them no tool to drive information into their minds. We don't teach them study methods, note-taking methods, or deliberate practice; we don't teach them any concepts of executive function or mnemonics; and we even avoid showing them highly-structured, systematic approaches to basic mathematics, under the assumption that children cannot handle structure and require a sort of free-play type of classroom learning.

    Children need to start with a basic study of the mind. First a brief overview of memory in function, including a high-level overview of the neurology involved and an introduction to mnemonic devices, but excluding mnemonic systems. Then an explanation of leveraging human memory through systems of study and note-taking, like SQ3R and the Affinity Diagram device. These provide the easy foundation to ingesting new information.

    Once you've transferred these, you can teach and apply deliberate practice and executive function. Deliberate practice is a method of technical, goal-oriented practice producing constant and immediate results: you recognize your weaknesses and focus on those, while trying to judge if you're improving. Executive function includes a broad array of loosely-related behaviors, notably in eliminating distraction, managing time, and orga

  8. Re:I can understand the point. by gfxguy · · Score: 3, Insightful

    With all due respect to Dijkstra, that's a load of crap. I'm from the generation of programmers that learned basic on their Commodores, Tis, and Ataris... The difference may be that I was motivated to learn on my own, but there's a whole generation of older, very well established and learned programmers out there from my age group that started with BASIC. And make fun of BASIC all you want, but I've seen Visual Basic, and while it's not my choice, it's a workable object oriented language that I've seen some pretty complicated and impressive programs written in.

    --
    Stupid sexy Flanders.