Thoughts on using the Scratch language as an intro to programming

Click For Summary

Discussion Overview

The discussion revolves around the Scratch programming language as an introductory tool for programming, particularly for children. Participants explore its strengths and weaknesses, including its design choices and potential alternatives for teaching programming concepts.

Discussion Character

  • Exploratory
  • Debate/contested
  • Technical explanation

Main Points Raised

  • Some participants express concerns about Scratch's handling of comments and the absence of return values from functions, suggesting these are significant shortcomings.
  • Others argue that the lack of return values may be a design choice intended to promote encapsulation, although this can lead to undesirable reliance on global variables.
  • A participant mentions that Scratch 3 introduces 'reporters' which could address some of the issues related to return values.
  • There is a suggestion that comments in Scratch are designed to encourage self-documenting code, but some participants disagree with this approach, advocating for a dedicated comment block for better documentation.
  • One participant raises the question of whether there are better programming environments or alternatives to Scratch for continued learning, mentioning Snap! as a potential option with advantages for teaching programming fundamentals.
  • Participants discuss the possibility of transitioning to other programming languages, such as Python or Java, and suggest tools like PyGame for game development.

Areas of Agreement / Disagreement

Participants generally agree that Scratch has both appealing features and significant limitations. However, there is no consensus on whether it is sufficient for continued learning, and multiple competing views on alternatives remain unresolved.

Contextual Notes

Some participants express uncertainty about the capabilities of Scratch 3, particularly regarding the 'reporters' feature and its implementation in different setups. There is also a lack of clarity on the advantages of Snap! compared to traditional programming languages.

Who May Find This Useful

This discussion may be of interest to educators, parents considering programming tools for children, and individuals exploring introductory programming languages.

FactChecker
Science Advisor
Homework Helper
Messages
9,454
Reaction score
4,721
I recently encountered the Scratch programming language. I wonder what people think of it considering some notable (IMHO) shortfalls. I do not like the way it handles comments, the lack of returned values from "functions", and some other aspects that I think should be basic. But it does seem to be a quick way to get a child interested in programming.
 
Science news on Phys.org
I found Scratch excellent for a first introduction to programming (with an OO bias) for my kids when they were in primary education, more than 5 years ago. This was the original Scratch, and then I think Scratch 2 for the youngest - I have no experience of Scratch 3.

The lack of return values I assume to be a design choice to encourage encapsulation but I agree this doesn't really work because you end up using global variables as a (highly undesireable) work-around. I gather Scratch 3 has 'reporters' which should improve this situation.

Similarly I assume that comments are somewhat 'tacked on' to encourage self-documenting code (descriptive names for variables and blocks).
 
  • Like
Likes   Reactions: FactChecker
pbuk said:
The lack of return values I assume to be a design choice to encourage encapsulation but I agree this doesn't really work because you end up using global variables as a (highly undesireable) work-around. I gather Scratch 3 has 'reporters' which should improve this situation.
I will have to investigate reporters. I was not aware of them.
EDIT: I was aware of their built-in ones, but not by name. They are everywhere. But I don't see a report block that I can modify for my own variables in my download Scratch Desktop Setup 3.3.0. It appears that a usable "report" is a feature of Snap!, which is an alternative to Scratch. It seems to have some advantages for teaching programming principles.
Similarly I assume that comments are somewhat 'tacked on' to encourage self-documenting code (descriptive names for variables and blocks).
If that was their intent, I completely disagree with their decision. They definitely need to at least include a comment block for documenting sections of code. Attaching comments only to lines of code is a problem if that line's block moves.
I am genuinely surprised that the MIT developers of Scratch have not paid more attention to these fundamental things.

That being said, I tend to agree that it does get children interested in programming and does introduce the basic concept of OO relatively painlessly.
 
Last edited:
There seem to be some great aspects of Scratch and some serious omissions. If I decide that the basic 3.0 Scratch language is not good enough for a child's continued learning, are there extensions or alternatives to switch to? For instance, is there a programming environment that uses Python / Basic / etc. and retains the simulation aspect of Scratch?

EDIT: Snap! looks like a Scratch-like language with some advantages for teaching programming fundamentals.
 
Last edited:
FactChecker said:
I will have to investigate reporters. I was not aware of them.
EDIT: I was aware of their built-in ones, but not by name. They are everywhere. But I don't see a report block that I can modify for my own variables in my download Scratch Desktop Setup 3.3.0.
Yes sorry, I had misinterpreted something I read.

FactChecker said:
There seem to be some great aspects of Scratch and some serious omissions. If I decide that the basic 3.0 Scratch language is not good enough for a child's continued learning, are there extensions or alternatives to switch to?
I'd suggest moving to a 'proper' language.

FactChecker said:
For instance, is there a programming environment that uses Python
Try PyGame with a user-friendly IDE - PyCharm or possibly Visual Studio Code (not so user friendly, but if you can get over the learning curve well worth it).

FactChecker said:
Basic
Please no.

FactChecker said:
etc.
Java? Or how about a bit of everything on Codecademy?

FactChecker said:
EDIT: Snap! looks like a Scratch-like language with some advantages for teaching programming fundamentals.
I have no experience with Snap, but I'm not sure I see the advantage over a 'real' language like Python.
 
  • Like
Likes   Reactions: FactChecker
I will look into PyGame. If it is Python in an environment which easily makes games, that would be ideal.
 

Similar threads

  • · Replies 6 ·
Replies
6
Views
5K
Replies
86
Views
3K
Replies
38
Views
4K
  • · Replies 397 ·
14
Replies
397
Views
22K
  • · Replies 40 ·
2
Replies
40
Views
9K
  • · Replies 22 ·
Replies
22
Views
4K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 122 ·
5
Replies
122
Views
18K
  • · Replies 9 ·
Replies
9
Views
2K