|It has been suggested that this page's contents be merged with the page Scratch. You can discuss this on the page's talk page. (Date?)|
This article analyzes Scratch as the programming language. Though Scratch is primarily a children's programming language, it has a surprising number of programming concepts built into it.
- Scratch is turing complete.
- It is primarily event-driven.
- Whether or not it is OOP is debated in the community.
- Scratch has variables and lists for data storage, and arrays can be replicated.
- Scratch is not atomic in repetition, though that can be simulated with Single Frame programming.
- Scratch 2.0 does support procedures, and recursion.
- Scratch has many simplified casting rules. Data isn't, however, first-class — you cannot have first-class lists, sprites, or procedures (lambda).
Scratch has limited hardware/OS access, and is supposed to be a very "safe" programming language. The following can be accessd by Scratch:
- Ambient volume
- Mouse position relative to the Scratch frame
- Key presses, only if Scratch is in focus
- In Scratch 2.0, your movements will be provided as sensor values, using a webcam for image input.
- The filesystem can be accessed while in development, but not while running.
Scratch Modifications offer more OS permissions.