Is “Scratch” a Programming Language?

I have been tutoring two teenagers in programming Python. Now their mother has recommended me to her friend who has a twelve year old who wants to learn Python. I’m a little concerned that twelve is too young to grasp the complexities of programming so I did a Google search. The answers were all over the place and in many cases came from web sites selling programming classes for kids (making their objectivity questionable).

In the process I ran across the following quote:

I hesitate to call Scratch a coding software (and certainly not a coding language) as there are too many key programming skills that cannot be learned on Scratch. Still it has some uses for the very young, perhaps.”

https://www.codetoday.co.uk/post/2017/02/02/scratch-or-python-when-should-my-child-switch

If you don’t know what Scratch is, it is an intriguing learning language invented at MIT to teach children about coding.

https://scratch.mit.edu/projects/editor/?tutorial=getStarted

It is based on a GUI web interface wherein the student links puzzle pieces representing program component together, rather than having to type precise syntax with lots of punctuation.

Here’s a Harvard class that teaches Scratch as one element of an introduction to computer science:

I am barely knowledgable about Scratch, but I find I must defend it against the quotation above, saying, for example that it is “certainly not a programming language.” I claim that a “complete” (procedural) programming language has the following components:

  • Variables
  • Expressions
  • A mechanism for doing input/output
  • conditional execution (“if statements”)
  • iteration (“loops”)
  • subroutines

What is missing, is the necessity of learning exact correct syntax. And sooner or later, everyone serious about using a programming language, either as a career, or as a tool for some other discipline, must come to grips with forming a correct program statement by typing it at the keyboard, not by dragging and dropping as in Scratch.

I will also admit that Scratch (so far as I know) is not object oriented (OO). And certainly one should learn OO concepts to use most modern languages, including Python. But the C language is not OO, no one can seriously argue that it is “not a programming language”.

There is another aspect of any modern programming language that one must come to grips with, and that is the “runtime library”, i.e. the collection of subroutines that come with the language and can be used to perform a myriad of tasks from graphics, to text processing, to… well the list is quite long. (My Python system has 332 modules and packages that came with the Python language package, each containing multiple methods, functions, and/or classes.) I said above, “come to grips with” and not “master”. I don’t believe there is anyone who has learned all of the Python runtime library, for example.

The Scratch language does not have as large a runtime library as Python, but it has plenty of functionality for its intended uses of introducing programming and designing graphic applications, such as simple games.

The article I am critiquing grudgingly admits, “still it has some uses, for the very young, perhaps.” Does he think Harvard students are “very young?” (At my age, I suppose I can consider that they are, but I don’t think that’s what the article’s author meant.)

If I had more time on my hands, I think Scratch would be a fun language to noodle around in. But, I’m too busy coding. And tutoring.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.