[HN Gopher] Scratch is a big deal
___________________________________________________________________
Scratch is a big deal
Author : bryanbraun
Score : 433 points
Date : 2022-07-16 18:09 UTC (4 hours ago)
(HTM) web link (www.bryanbraun.com)
(TXT) w3m dump (www.bryanbraun.com)
| jms429 wrote:
| As a former computing teacher, I loved Scratch. I remember
| reading about it on a Thursday evening on Slashdot, maybe spring
| of '08, or 09.
|
| I had a free lesson first thing the next day, so I installed it
| on the network then had a class of 10 year olds give it a whirl.
| Had a full scheme of work written by the Monday, and was demoing
| it to other schools by the summer.
|
| Loved it, loved the scratch board addon hardware, loved the
| complimentary "makey makey" project, and the cards, and the books
| and on and on.
|
| incredible project.
| urthor wrote:
| If I may ask:
|
| Why former?
| _benj wrote:
| Not op but maybe compensation and everything else outside of
| teaching?
|
| I used to teach computers/math to 8th graders and while
| teaching is beautiful school politics, terrible benefits,
| dealing with patents, among others things made the job of
| teaching incredibly difficult and draining
| geerlingguy wrote:
| I didn't see anyone else mention it, but I think one contributing
| factor is the inclusion of Scratch on the Raspberry Pi, which
| until the past year or so has been one of the most affordable
| ways to get kids set up with a little computer for learning.
|
| Many educational programs have a setup where each kid gets a Pi
| (well until recently since the past year they've been hard to
| get), and Scratch was the perfect companion since it didn't
| require a ton of RAM or a fast CPU to run well.
|
| At this point though I see it come with a lot of other
| educational programs on Chromebooks, too. Since the sharing is
| over that MIT site, it's perfect for those "lite" computers that
| don't store anything local.
|
| One interesting side effect of its popularity is that I've seen a
| number of kids who "know scratch" but don't really "program"
| anything with it. They just load up other people's programs and
| game with it, basically a Steam for Kids.
| gmiller123456 wrote:
| Interesting that this popped up now. I had heard of Scratch but
| never really looked into it, but decided to give it a go last
| month. I decided to write a planetarium using the actual
| Hipparcos catalog, and solving Kepler's equation for the planet
| positions. I had hoped I could use it as an example to show that
| it's not really that hard to do. Unfortunately, I found it pretty
| tough to organize the code in any meaningful way. E.g. blocks
| can't have local variables, nor return values. You can't call a
| bock in another sprite, there's a workaround using "broadcast and
| wait", but it triggers a screen refresh. Just moving blocks
| around to order them in a meaningful way was quite a chore. Some
| mistakes, like making a variable global rather than sprite level,
| can't be corrected. Adding comments seems to be a bit buggy, and
| they don't move as you move the blocks around.
|
| Since I've been programming for many a decades now, it's hard for
| me to see what it'd be like for a beginner to approach the
| language. But I was left wondering if this really is any easier
| for beginners. And if it is easier, is it really better they
| learn this way since it seems to actively force some poor
| programming choices.
|
| In the end my code ended up looking way more complicated than it
| really is, and I'm not sure anyone but me could make heads or
| tails of it. (For anyone that wants to have a look:
| https://scratch.mit.edu/projects/708233643/ ).
| Wowfunhappy wrote:
| > Since I've been programming for many a decades now, it's hard
| for me to see what it'd be like for a beginner to approach the
| language. But I was left wondering if this really is any easier
| for beginners.
|
| I teach programming classes to children using both Scratch and
| Javascript. I can _promise_ that virtually all of them find
| Scratch much easier.
|
| You're absolutely correct that past a certain point of
| complexity, Scratch becomes kind of stupid. Most kids, however,
| are not trying to solve Kepler's equation.
|
| If you ever have the urge again, try using Scratch to make a
| simple game--maybe "catch the falling objects" or "avoid the
| moving obstacles". I think you'll find it's a lot smoother.
| modernerd wrote:
| Is there a reason that visual programming languages haven't taken
| off for professional programming?
|
| I know of several for specific fields (Dark for backends,
| TouchDesigner for live graphics/multimedia), but none that are
| more generalised, open, or in wide use.
|
| It feels like an underdeveloped area that's ripe for exploration
| and experimentation.
| solardev wrote:
| In game dev, Unity for example uses a visual shader programmer:
| https://unity.com/features/shader-graph
|
| For serverless functions/API pipelines, check out (formerly
| Integromat): https://www.make.com/en
| LelouBil wrote:
| A lot or 3D renderers use node-based programming for shaders.
|
| Some even use it for procedural modeling ! (Houdini, Blender)
| OkayPhysicist wrote:
| As someone currently employed to port an absolutely gargantuan
| (~10,000 vi) LabVIEW project to C#, there are very good reasons
| to not use visual programming languages.
|
| 1. Writing it is a pain. This is a minor gripe, comparably, but
| if you already know what you want it is very, very hard to beat
| just typing out a word. Dragging and dropping through menus
| makes every little action take too long for comfort. You also
| miss out on the syntactic sugar that makes coding so much more
| bearable: little, everyday things, like indexing into an array,
| or incrementing a value, end up taking just as long as putting
| in any other function.
|
| 2. The information density is atrociously low. Intuitively, it
| seems like the opposite should be true, after all, in a real
| programming language you're missing out on pictures and icons
| and a whole dimension of space. But it turns out that the whole
| "function reads top-to-bottom" thing packs a lot of flow
| information.
|
| 3. Flow-based value passing robs you of variable naming. In a
| language like LabVIEW, you very rarely use typed out variable
| names. Most are replaced by unnamed wires. This subtle feature
| strips the program of a lot of contextual information, making
| it hard to read.
|
| 4. Linting. If you thought making consistent, presentable code
| is hard in 1D space, in 2D it's basically intractable. The
| amount of time I spend futzing with wire pathing is
| infuriating.
|
| If there is any chance that a project will require software
| developers some day (if you're starting a business, or
| inventing something novel, it will) just bite the bullet and
| use a real programming language. Visual programming just
| attempts to make the easiest part of programming easier, and
| makes everything else more painful in the process.
| porcc wrote:
| Probably it's just a hard problem. Max for Live is a bit more
| general purpose than TD but still has its limitations I'd
| imagine. Enso lang is the best attempt I've seen for this:
| https://enso.org/
| Wowfunhappy wrote:
| I teach Scratch to kids professionally. I _love_ it as a
| learning tool, but when I need to actually write Scratch code
| myself for whatever reason, I find the experience pretty
| aggravating. Finding the block I need from the big list and
| dragging it into place takes a _lot_ more time than just typing
| the command.
|
| Scratch programs also become messy quickly as the complexity
| increases. Normal code is more compact and easier to actually
| follow.
| philsnow wrote:
| Normal code that's compact and easy to follow is usually that
| way because it was written by somebody with a lot of
| experience. I've seen plenty of shit-piles called "code".
| Wowfunhappy wrote:
| There are better and worse programs in every language,
| including Scratch. However, Scratch blocks physically take
| up more pixels on screen, so you can't see as much
| information at once.
| icedata wrote:
| We tried it the other way. I worked for a decade at Logo
| Computer Systems, where the principal designer of Scratch
| used to work. Eventually schools tired of teaching kids text-
| based coding.
| shadowgovt wrote:
| Speed and scalability. Both problems are solvable, and I
| haven't seen anybody putting the investment to solve it in a
| grand scale on a popular, open source visual programming
| language.
|
| For speed: it's really hard to beat the speed of data entry via
| keyboard. A well-designed set of keyboard accelerators would
| cover a lot of ground on making visual programming languages
| comparable to keyboard programming speed, but I haven't seen
| anybody pull it off yet.
|
| For scalability, and in the sense I mean scalability of project
| complexity from a toy desktop project to a distributed system
| deployment or a low level embedded system: the vast bulk of
| tools that are available for supporting large projects are
| built around text and the fact that it's relatively easy to
| translate a tool working in one text-based language to another
| text-based language. Git doesn't care what language you're
| using; it's all text. Diffing tools don't care what language
| you're using; they diff lines of text. As tools like Copilot
| grow, they will start by disproportionately giving a power
| boost to text-based languages because they are built to work
| with text-based languages.
|
| Anything that's going to work with a visual programming
| language in a way that is as robust as these tools do needs to
| treat the language as an abstract syntax tree, not a collection
| of lines separated by line breaks. And the tools to do that are
| going to have to be written almost from scratch; it's simply an
| underdeveloped ecosystem because there's so much fungibility
| between different text-based languages in terms of allowing
| tools that work on one to work on another.
| zozbot234 wrote:
| > Is there a reason that visual programming languages haven't
| taken off for professional programming?
|
| Programming languages in common use are way too general to
| really benefit from a structural editing workflow as seen in
| Scratch. Meanwhile, other VPL's cannot naturally express the
| kinds of abstractions that turn out to be critical when
| programming "in the large", as often happens in professional
| settings.
| bj-rn wrote:
| > none that are more generalised
|
| Do you know vvvv gamma? It's a visual programming environment
| for .Net. Its language (called VL) combines dataflow
| programming with features known from object-oriented and
| functional programming.
|
| https://visualprogramming.net https://thegraybook.vvvv.org
| jeremyjh wrote:
| It has seen a lot usage embedded in different tools but just
| isn't a good fit for a general purpose language. It actually
| becomes much more difficult to manage as programs get larger.
| I've tried many of these tools over the past two decades and
| some are fine for what they are but none left me with hope or
| interest in seeing it replace the dominant paradigm in general.
| messe wrote:
| I sometimes wonder if they could be useful for an OS shell,
| striking a balance between the extensibility of a text-based
| shell and the discoverability of GUIs. I mean, combined with
| search/autocompletion, they're really just a slightly more
| rigid and structured version of text snippets.
| CyberDildonics wrote:
| It's a great question. TouchDesigner and similar programs have
| a limited number of data types even though touch designer does
| a great job at being a little more general than other programs.
| Also TouchDesigner and Houdini both have shader languages that
| allow someone to make nodes that do general purpose array
| transformations which ups their utility a lot.
|
| One big aspect is handling state. Connecting nodes without side
| effects is great when each frame is a cycle and all you have to
| do is transform data into a final result. When actual state is
| involved it becomes hacky or impossible to do in with only
| transformations. Other similar hurdles are branching and IO.
|
| The other is having general purpose programming underneath.
| Shader languages enable a lot, but using a real programming
| language like C++ somewhere not only opens the door to whatever
| you need, but allows you to integrate all the libraries already
| made as well as call out to OS IO APIs etc.
|
| It is amazing though how nice it is to work with an integrated
| and fluid environment where iterations are updated in real time
| and errors are narrowed down for you, not to mention profiling
| broken down by node.
| analog31 wrote:
| Oddly enough, similar story for Python: It's the community.
| jawns wrote:
| One of my earliest memories of writing code was playing Gorillas,
| a QBASIC game, on my school's PC in the early 90s. My friends and
| I would tweak the source code to make the gravity stronger or
| weaker, or make other interesting mods to the projectiles.
|
| For me, it was a perfect introduction, because there was an
| already written, already playable program, and I could dive into
| the code little by little and explore.
|
| Scratch is very similar. My kids love to play games on Scratch,
| but they also enjoy taking a look under the hood to see if
| there's something simple they can modify.
| mod wrote:
| GORILLA.BAS was my intro to programming, too!
|
| In my 8th grade algebra class in a "portable."
| jonplackett wrote:
| QBASIC was also my intro to programming.
|
| I think in a way it's a shame that kids now first see visuals
| rather than code.
|
| There's something much more thrilling about seeing a bunch of
| written instructions become a game, than some sprites that
| already look a lot like the game start moving about.
|
| Another awesome QBASIC feature - the help section taught you
| everything you ever needed to know to learn every feature.
| zozbot234 wrote:
| I assume that Scratch is more accessible to _very_ young
| kids, who may have trouble with the ergonomics of correctly
| inputing text. Also, the whole "drag and drop" workflow can
| potentially be better suited to modern touch-based devices.
| sdenton4 wrote:
| Have you tried scratch? The blocks are written programming
| instructions, with some puzzle piece connectors which help
| avoid basic syntax errors. These instructions drive the
| sprites.
| jonplackett wrote:
| I've tried it on the iPad. Does it work the same there?
|
| I still think it's more awesome to see just a written
| sentence that I typed out become something. Once you
| introduce any form of barrier between that and output, it's
| hard for anyone to know what's really happening behind the
| scenes to help you.
|
| There's a beautiful purity to just simple text becoming
| something awesome.
| ryukafalz wrote:
| This is something that I think is extremely under-appreciated:
| the ability of a user to dive into the code of what they're
| using and try things out. Like the type-in games of the 8-bit
| micro era, or like Scratch, or like Emacs; each of these allows
| the user to tinker with little overhead.
|
| Modern software, by contrast, is usually too opaque - even free
| software! The barrier to entry is way too high.
| [deleted]
| whimsicalism wrote:
| Much of my coding was started with modifying the Minecraft &
| Wii internals and I would call that "modern software."
| bckr wrote:
| You're an outlier for sure. Wii internals sounds very hard.
| ryukafalz wrote:
| Minecraft is also slightly an outlier, I would say; its
| modding community has put a lot of work into making it
| easier for people to get started. It's still a far cry
| from having a "view/edit source" button, though.
| messe wrote:
| If I remember correctly the early days were painful as
| well, with it being necessary to manually unpack the jar
| file, and work with deobfuscated decompiled code. I'm not
| sure what the state of it is nowadays, but I hope its
| more pleasant.
|
| My favourite game from a modding perspective is Kerbal
| Space Program. Just drop a Mono/.NET DLL into its
| GameData folder and you're good to go, and code
| completion works automatically during development as long
| as you have Squad's own DLLs in the right paths.
| _int3_ wrote:
| That's what I did also. I made explosions in Gorillas as I
| wanted them . I didn't know coding or language but somehow
| figured out if I change values here and there the explosion
| would be bigger.
|
| Soon after that wrote program for deleting other programs.
| actually useful because we didn't know yet how to delete from
| DOS.
|
| we were kids left with PC with no instructions at all. Parents
| were busy.
|
| Now in hindsight I see my first steps were somewhat
| destructive.
| bredren wrote:
| I too edited gorillas as one of my first programming
| endeavors.
|
| As for the other thing, there was some DOS command I learned
| that forced an immediate reboot. I realized this could be
| added to the end of an autoexec.bat and create an endless
| reboot loop.
|
| Well, I thought this was a funny prank so I edited the file
| on a display PC at Costco. Came back by it later in the trip
| and it's still booting and rebooting.
|
| I look back on that and realize it probably had to be
| replaced and sent to some other state where some tech either
| had to troubleshoot it or create a new image all together.
|
| Not the best use of value but it was amusing to exert power
| over computers at such an early age.
| Dunedan wrote:
| That brings back some very fond memories. Another game included
| in MS-DOS was Nibbles. I still remember wrapping my head around
| how Nibbles worked, as the source code didn't seem to fit the
| actual logic being run. It just looked way too short and
| simple. That's before I discovered how to view the source code
| of functions in QBasic. Then it clicked.
|
| The Internet Archive has these games available to play by the
| way:
|
| https://archive.org/details/NibblesQbasic
|
| https://archive.org/details/GorillasQbasic
| HorizonXP wrote:
| Can you share some here? I'm about to get my 3 year old into
| Scratch, since it's already on his RPi.
|
| I remember doing the exact same thing in grade school with
| Gorillas and QBASIC. I actually want to download it now and
| play it again.
| qbasic_forever wrote:
| You can play it in your browser right now:
| https://archive.org/details/GorillasQbasic
| koverda wrote:
| Can he read yet?
| tartoran wrote:
| I have a 4 year old and I find that he's not ready to be
| exposed to computers let alone programming languages yet.
| There are so many things to learn at that age that sitting in
| front of a screen for too long may be a disadvantage. Im
| thinking a starting age is more like 6-8, of course depending
| on other factors as well. I find that 3-4 may be a good time
| to start reading though
| mattkevan wrote:
| Our (then) 4 year old got the hang of Scratch Jr on the
| iPad really quickly. It's great and gets kids used to
| sequencing, basic logic, loops, control flow and more
| without needing to be a confident reader.
|
| She loved, and still does love, drawing her own sprites and
| recording sound effects to create interactive stories.
| solardev wrote:
| Warcraft 3's map editor scratched that itch for me! I'm so glad
| there are more accessible, and free, tools now.
| Ozzie_osman wrote:
| I also started learning Qbasic from Gorillas.
|
| This path of playing a game, wanting to learn more, then
| getting into computers and coding is actually really common in
| parts of the world where computers and computer-based
| educations aren't as wide spread.
|
| I hire a bunch in Latin America, Middle East, etc, and every
| interview my first question is always "why did you get into
| software?" and I'd say more than half of people I interview got
| into coding in one of two ways, either gaming, or building
| websites. I'm interviewing people who learned to code more than
| ten years ago, when websites were HTML with some PHP and gamed
| were much more accessible. I'm not sure what the corresponding
| path would be these days.
| conradev wrote:
| > Most importantly, browsing projects shows you what's possible.
| A kid begins by playing games, starts to get curious, and next
| thing you know, they're changing the code to give themselves
| extra lives.
|
| This is actually the driver for a lot of kids to learn
| programming. Neopets and Myspace allowed you to customize your
| profile with HTML, Minecraft allows you to make mods in Java,
| Roblox has an entire game studio that leverages Lua. Kids see
| something they want to be able to do, and they do it!
|
| The steepness of the learning curve does matter, but searching
| "how to make a roblox game" into YouTube goes quite a long ways
| these days
| amelius wrote:
| Someone should probably reinvent spreadsheets using this
| language.
| ynniv wrote:
| Name another language where you can be productive on a mobile
| device.
| easrng wrote:
| JavaScript? I have written things on my phone before though
| it's kinda a pain. (https://jsconsole.com/ is your friend.) The
| Scratch editor doesn't work on phones really at all though it's
| fine on tablets.
| bolangi wrote:
| So, impossible to make a syntax error.
| zzixp wrote:
| College student here. Scratch was my first real introduction to
| programming. It's an amazing tool, and a great way to get anybody
| started with programming
| chkas wrote:
| For beginners up to about 12 years old, Scratch is optimal. For
| older ones I think a text-based language is better. In the past,
| that was BASIC. Today it can be Python, with which beginners have
| some problems in my experience. And now comes the shameless self-
| promotion: I have developed something that can fill this gap. By
| the way, it is open source.
|
| https://easylang.online/ide/
| ksaj wrote:
| I like how under the (more) menu, you can step through the
| code. It not only teaches kids how their code works, it also
| indirectly teaches them how a debugger works.
|
| Where the trace shows, it would be even better if the variables
| could be edited, which brings it even closer to debugging, and
| also expands on how the program logic works.
| Wowfunhappy wrote:
| I've seen Scratch described as "learning how to talk before
| learning how to spell".
|
| For beginning programmers, memorizing syntax is a major source
| of cognitive load. As a result, it's harder for them to
| practice the computational thinking skills that coding is
| really about. Scratch removes this barrier.
|
| I actually think Scratch is a good tool for beginners of any
| age, including adults.
| Retr0id wrote:
| A fun statistic is that Scratch now has over 100 million projects
| published by users on their website[1].
|
| GitHub only reached 100m repos in 2018[2] - I can't find any more
| up-to-date numbers, but it's probably around 150m today.
|
| It's crazy to think that Scratch and GitHub operate on similar
| orders of magnitude.
|
| [1] https://scratch.mit.edu/statistics/
|
| [2] https://github.blog/2018-11-08-100m-repos/
| fillskills wrote:
| Maybe one of the reasons for sudden increase in the projects
| are companies such as Whitehat Jr. Whitehat incorporates and
| leverages Scratch in their lesson plans. For each lesson kids
| may be creating 1-3 Scratch programs. You can read more about
| Whitehat Jr, their approach to sales etc by doing a little
| googling. And am sure there are other companies who follow the
| same practice of leveraging Scratch in tutorials. (edit) Not
| condoning this, just adding more information.
| nitwit005 wrote:
| That's also where many github repos come from. I've seen the
| instructions to fork the teacher's repo when doing searches.
| sebastiansm wrote:
| The first week of Harvard's CS50 involves the creation of a
| little program in Scratch too.
| kelseyfrog wrote:
| The annual variation shown in the graph immediately says tells me
| that a large portion of use is driven by academic forces. That
| can be a problem, but can also be an opportunity.
|
| If the institutions driving Scratch adoption decide to switch
| away from Scratch, the community will be on much more unstable
| foundations. The opportunity here is finding non-education modes
| of engagement. Social engagements, viral engagements, or non-
| academic partnerships are all ways Scratch could strengthen its
| community.
|
| Wishing them luck - it looks like this brings joy to a lot of
| kids.
| itronitron wrote:
| There is an integrated Minecraft 'Scratch' code editor now
| (https://minecraft.makecode.com/#editor) although that is
| probably targeting middle-schoolers. In my experience most
| teenagers coding for MC (not driven by academic forces) are
| just using Java directly.
| spankalee wrote:
| I like Scratch - my kid uses it and I worked briefly with the guy
| who made Blockly, the underlying visual programming toolkit - but
| the programming environment makes many things far too complicated
| with its singular focus on sprites.
|
| It's very, very difficult to do things as simple as display a
| number on screen. My 7yo was making a number guessing game, and
| to display a two-digit number we had to make two sprites that had
| 10 "costumes" (0-9) then do modular math to select the costume
| for each digit. Sprites also have their own code, and if you
| duplicate one and edit the code the edits don't apply to the
| duplicate - so there's no user library or abstraction power at
| all.
|
| This made dealing with Scratch far more complex and time-
| consuming than the logic of the game my kid was making, which is
| the exact opposite of what you want in a learning environment. I
| don't really want to focus on the idiosyncrasies of Scratch when
| teaching programming.
|
| Some simple text and drawing commands, user-defined functions,
| and a library would go a huge way towards making Scratch simpler.
| There are some other Blockly-based environments that may have
| this... but they're not as popular.
| kazinator wrote:
| > _My 7yo was making a number guessing game, and to display a
| two-digit number we had to make two sprites that had 10
| "costumes" (0-9) then do modular math to select the costume for
| each digit_
|
| So if your kid is cool with this kind of clever workaround for
| the limitations of some piece of crap, you have a future
| software engineer.
| _benj wrote:
| This made me laugh! and then made me sad :')
| seldomI wrote:
| Shameless plug: we're running a Scratch-like site, but for
| terminal programs (among other runtimes). A number guessing
| game is one of our example programs. It's about 20 statement
| blocks: https://app.code-it-studio.de/project/303
| nicoburns wrote:
| If you're willing to pay then give gamemaker studio a go. It
| has a similar logic block based model (you can also progress
| into a full ECMAscript based language once you get more
| advanced), but is a lot more flexible about what you can
| display.
|
| Not 100% sure it's still beginner friendly as I used it over a
| decade ago, but I'm pretty sure there's a free trial, so you
| could find out.
| Sirened wrote:
| >7yo was making a number guessing game, and to display a two-
| digit number we had to make two sprites that had 10 "costumes"
| (0-9) then do modular math to select the costume for each digit
|
| This, imo, is what makes Scratch a _great_ education platform.
| It has a couple of very easy to use primitives (such as
| displaying and moving sprites) and leaves you to build whatever
| else you need by abstracting things on top of it. This teaches
| you one of the most foundational programming skills: how to do
| something complicated with only weird, rudimentary tools.
| Wowfunhappy wrote:
| This is also a good point. Scratch isn't designed to make
| coding _easy_ so much as _conceptually understandable_.
| falcor84 wrote:
| > It's very, very difficult to do things as simple as display a
| number on screen.
|
| I suppose I might be missing something, but if you just care
| about displaying the number, rather than any particular
| styling, you can just show the variable, right?
| ryankrage77 wrote:
| Just have a sprite 'say' the variable
| yCombLinks wrote:
| Show the variable how? There's not a console, there's not a
| way to simply display a string or character. Scratch revolves
| around programming sprites to do things
| djsrv wrote:
| Tick the checkbox next to the variable in the block
| palette. That creates a variable watcher on the stage. You
| can also right-click the watcher to change it to a large
| readout, displaying the variable contents within a minimal
| frame.
| easrng wrote:
| Also if you get Scratch Addons
| (https://scratchaddons.com/) and enable the Debugger
| addon it adds a console and blocks to log to it.
| AzzieElbab wrote:
| Something as simple as this should not require add-ons.
| This isnt js and `leftPad` you know
| Snild wrote:
| Every variable has a checkbox they makes it show on screen:
| https://en.scratch-
| wiki.info/wiki/File:Checkbox_to_show_or_h...
|
| There is also a command block to show or hide it
| dynamically.
| easrng wrote:
| For the editing and duplicating stuff, keep in mind you can
| drag blocks into other sprites.
| avgcorrection wrote:
| Displaying a number sounds like some hello world popup exercise
| that you would do in Rust or Go. I don't see why one not just
| jump right to the game-making, which Scratch is good at.
|
| > This made dealing with Scratch far more complex and time-
| consuming than the logic of the game my kid was making, which
| is the exact opposite of what you want in a learning
| environment. I don't really want to focus on the idiosyncrasies
| of Scratch when teaching programming.
|
| Printing "Hello World" and displaying a number is easy in
| languages like Java. Making a top-down shooter is not. So why
| does one usually do the print stuff rather than the top-down
| shooter stuff? Ain't that also because of the idiosyncracies of
| your run of the mill general purpose programming languages?
| enragedcacti wrote:
| Probably because his kid wanted to make a number guessing
| game? I feel like the last thing you would want from a
| children's programming language is "why would you want to do
| that? Go learn Java if that's the type of thing you want to
| make"
| avgcorrection wrote:
| They just said that the kid was making it. Not whose idea
| it was.
| hooande wrote:
| It seems like Scratch is made specifically for game
| development, since everything revolves around the concept
| of manipulating sprites. "Guess the number" is a game, but
| not the kind of game that this tool was made to create.
| Wowfunhappy wrote:
| Did you try using the "Say" blocks? I know they don't look
| quite as nice, but this is what I use when I'm building
| something "text based".
| spankalee wrote:
| We ended up redesigning the app to be better for "say" and
| "prompts", but our original design just had a couple of big
| number displays on the screen and a button - something he
| literally drew out first on paper. We had to basically fail
| at that before making it more text based.
| aceon48 wrote:
| What age do you think I could start a gifted child with Scratch?
| ozim wrote:
| Unfortunately I think making "games, animations, stories" is not
| that big of a deal.
|
| Even though it is nice to get kids into programming - it is not
| what business development will be.
| sva_ wrote:
| I have to say that I used this back in school many years ago, and
| I absolutely hated it. But I realize that other people might feel
| different about it.
|
| I much preferred just being able to write text characters, I felt
| like it gave me a lot more freedom in what I can achieve, but
| also how I achieve those things.
|
| I might be an outlier in that though.
| misterdata wrote:
| At work we built a BI tool around Scratch (Blockly) back in 2013.
| It's still seeing daily use: https://www.dialogic.nl/wp-
| content/uploads/2018/02/demo1.gif
| alonmln wrote:
| Awesome!
| anyfactor wrote:
| This is the coolest thing I have seen this week! Is the program
| open sourced?
|
| I firmly believe Scratch should be taught at university level
| for business students. We studied C, C++, VB and MS Access. We
| didn't understand crap, nor the instructors had any interest in
| teaching that crap.
|
| Scratch is a wonderful tool for any people to dip their toes in
| programming. And stuff like this makes me double down on this
| idea. Scratch should be the first thing to be taught to teach
| programming regardless of education level. BI tool and database
| interaction is the perfect and practical application of
| Scratch.
| cphoover wrote:
| Very cool
| solardev wrote:
| Cool! It's like a homebrewed alternative to Google Data Studio.
| system16 wrote:
| Having already known how to code, I gave Scratch a shot after
| hearing about it. I know I'm not the target audience, but despite
| "looking" friendly I found it very complex and not very intuitive
| at all. If the goal is to ultimately learn programming with
| industry standard tools, I think the time would be better spent
| learning those tools and fundamentals rather than becoming
| comfortable with Scratch and trying to transition to them.
| Snild wrote:
| It is definitely a hard switch to make when you're used to
| being able to just _write_ what you want, rather than having to
| go look for the block and drag it into place. :)
|
| > If the goal is to ultimately learn programming with industry
| standard tools
|
| It has variables, if, else, different kinds of loops, event
| handlers... Of course it still isn't "real" programming, but it
| does teach some basic concepts of it, while still being
| relatively easy for a child to use.
| tokamak-teapot wrote:
| I found the same. Then I watched kids using it by following
| instruction sheets, picking up the concepts, tweaking, making
| their own projects, and moving on to Python.
|
| I got to understand Scratch by learning how kids use it. It's
| just a mindset and expectation shift that is similar to that I
| experience when learning anything new. When I first learned a
| proper functional language after years of imperative. When I
| used a game dev environment that does lots for you.
| bredren wrote:
| Has anyone had experience teaching using this and Swift
| Playgrounds? Is there any comparison?
| ManuelKiessling wrote:
| I never find the time to dive into it, but for years I carry the
| thought that somewhere in the general direction of "take the
| visual programming module of Scratch and make it talk to a
| cleanly designed high-level API of our business application" lies
| the key for tremendous feature development productivity, at least
| for some kinds of features -- where from then on, our Product
| Managers simply go like "oh I know, let's just put this block
| into that IF block and thus add another step to the user
| registration", without the need to use precious dev resources.
| skaul wrote:
| I thought this was what MuleSoft was designed to be, though I
| haven't kept track of what it looks like now
| zozbot234 wrote:
| The visual block design of Scratch could be directly applied to
| any programming language AST. And the programming model
| involving independent "characters" each running its own logic
| could translate directly to a model of distributed systems.
| easrng wrote:
| You can use Blockly (Scratch uses a fork of it for the block
| editor) to do that.
| pipeline_peak wrote:
| I have yet to see a visual programming language that looks any
| easier than something like JS or Python, Scratch is no exception.
|
| I still think Scratch's interactive environment is impressive.
| shadowgovt wrote:
| One thing I really appreciate about visual programming
| languages, especially as I watch the sorts of challenges
| students encounters wrapping their heads around the concepts in
| programming, is that the development environment and the nature
| of the visual language make it very hard to build syntactically
| incorrect programs. In contrast, text-based languages sample
| from the sea of all possible strings of characters, and except
| a vastly tiny subset of that sea as valid input; the rest are
| just rejected programs.
|
| I think there's a lot of meat on the bones of creating tools
| that make it structurally impossible to write statically
| invalid programs. Consider how much time the average developer
| consumes in a simple iterative process of writing a program,
| discovering they have made a simple syntax error, and
| correcting it. IDEs have come a long way in shortening that
| loop by providing interactive feedback that the current program
| is invalid, but if the static analysis rules of the language
| move all the way into the development tooling, you're compiler
| doesn't even need a static analysis step!
| wl wrote:
| LabVIEW and Simulink are pretty easy if your problem makes
| sense as data flow.
| 42jd wrote:
| Scratch was how I got started in programming back in elementary
| school. It was taught in our computer classes. Everything this
| article says is spot on, the social aspect is amazing. I made a
| few programs and got comments on it and stars which hooked me.
| Side note hearing griffpatch is still around amazes me, I
| remember playing his scratch programs and wishing I could
| eventually do that (10 years ago wow). What's amazing is it's all
| still around and runs![1]
|
| 1. https://scratch.mit.edu/users/miniman520/
| andrewstuart wrote:
| Scratch has succeeded in the way that counts most - building
| community.
|
| However I tried to help my son to write some stuff with it and
| found it very hard and unintuitive to get stuff done.
|
| There are other, similar systems that are MUCH better for
| programming, such as Construct3 and Snap
| https://snap.berkeley.edu/
|
| In a way it's very disappointing that such a difficult to program
| system has become the default tool for teaching kids to program.
|
| Also a shout out to CodeCombat - that's also a great way to teach
| kids very advanced underlying programming concepts whilst
| completely hiding all the complexity.
|
| Also try https://www.microstudio.dev
| Wowfunhappy wrote:
| What do you find superior about Snap? At a quick glance, it
| looks almost exactly like Scratch 2.0 (an older version).
| Retr0id wrote:
| The "killer feature" of Snap is the ability to define
| functions that return a value. In Scratch, you can't do that.
|
| Functions ("custom blocks") are just procedures that may-or-
| may-not mutate global state - This makes it hard to build up
| abstractions, etc.
|
| Scratch effectively mandates that you write spaghetti code.
| Wowfunhappy wrote:
| > The "killer feature" of Snap is the ability to define
| functions that return a value. In Scratch, you can't do
| that.
|
| Ah, I see now.
|
| Yeah, Scratch really should let you make custom "oval
| blocks" that return values...
| andrewstuart wrote:
| Snap is the closest conceptually to Scratch.
|
| I can't recall why I thought it was much better but that was
| the conclusion I came to when I reviewed them both a few
| years back.
| zabzonk wrote:
| I use it for creating interactive Xmas cards!
| elteto wrote:
| This such a neat idea to do with kids. Thanks!
| hirundo wrote:
| From a quick look it doesn't seem that the graphical elements are
| inherent to the language. It could be expressed in a text syntax,
| and with more or less difficultly other languages could get a
| similar graphical overlay.
|
| If the graphics are useful training wheels to new programmers of
| scratch, the same is probably true for the text languages. And
| from time to time even a super cyclist can find a use for
| training wheels.
|
| For one thing, a language expressed in a common graphical form
| could help communicate with non-coder domain experts, quality
| assurance teams, customers, etc. This is kind of an argument to
| publish the latin bible in the vulgar argot, less exclusive to
| the priesthood.
| lidavidm wrote:
| In undergrad I worked with this group for a while:
| http://www.cs.cornell.edu/andru/papers/reduct-chi17/
|
| They took the basic idea of Scratch, then made it into more of
| a game with levels, each level being a puzzle to (implicitly)
| teach or test programming concepts. As you progressed it'd
| introduce new syntax, while slowly "fading" more familiar
| syntax towards actual JavaScript code (though retaining the
| block/GUI-based interface).
|
| We did some more work on further iterations but I'm not sure
| what became of it all.
| sgt101 wrote:
| Resnick and co were very structured and evidence lead with the
| graphical design; nothing in the visual language is accidental.
| The structure of the language is also very carefully designed
| in conjunction with the graphical mechanisms.
| jameshart wrote:
| There's a common fallacy that the technically minded are
| prone to, of assuming that since two different things are
| 'essentially' the same, the differences between them are
| superficial and unimportant.
|
| So, for. example, since Scratch. and a text-based language
| with similar structures (Python, say), are 'essentially' the
| same, the graphical elements. of Scratch are just sugar, or
| fluff, and should be ignored.
|
| It's the same mindset that says since anybody can get an FTP
| account, mount it locally with curlftpfs, and then use SVN or
| CVS on the mounted filesystem to version control it, there's
| no need for such a thing as DropBox.
|
| Advice for the terminally reductionist-minded: _Maybe_ the
| things that make Scratch different from Python are actually
| the _most_ interesting thing about Scratch.
| sgt101 wrote:
| Totally agree - the details are critical. There are a
| thousand details that can derail a child from understanding
| programming, if you deal with 999 there's still one that
| will get them.
|
| Kudos to the scratch team.
| kelseyfrog wrote:
| The same mixed media programming existing in the Lego
| Mindstorms platform when I was a kid.
|
| A bunch of my peers where using the visual editor, but I took
| the plunge and learned NQC to do my programming. Having
| multiple paths available to users helped the platform and
| broadened its accessibility.
|
| I'll never forget the instructor teaching me to always make
| sure my curly-braces matched up. :)
| dunham wrote:
| > It could be expressed in a text syntax, and with more or less
| difficultly, other languages could get a similar graphical
| overlay.
|
| Yeah, Makecode Arcade has a similar UI with mappings to and
| from both Python and Javascript.
|
| https://arcade.makecode.com/
| easrng wrote:
| There's http://tosh.blob.codes/ but it hasn't been updated in a
| while. (It generates Scratch 2 projects but they can still be
| imported into Scratch 3)
| BrandoElFollito wrote:
| My children did not like scratch (it is taught at school in
| France). They had much less problems to understand Python which
| seems more natural in the interactions (displaying things,
| especially).
|
| They are unfortunately not interested in programming but when
| they have to do something at school they catch up with Python
| quickly. With scratch not that much.
| tartoran wrote:
| Python is a bit more advanced in the sense that it's a more
| general purpose and you have to know how to type on the
| keyboard well enough. I started with basic and logo back in the
| 80s but if scratch were a thing back then I'd have probably
| benefitted from it quite a bit. I see scratch as a first ramp
| into programming for tots and am glad it exists but also hope
| it won't become a thing to handicap adoption of other
| programming languages
| BrandoElFollito wrote:
| I did not mention that my children were early teenagers when
| they had scratch at school.
|
| I also started with BASIC in the 80's and scratch would
| probably have helped with some general concepts, especially
| loops and variables. But in my experience (of two data points
| :)) it is quickly left on the side for more effective
| languages (more effective because they can be typed and
| easily moved around, copied etc.). Vscode hints also help a
| lot.
| elangoc wrote:
| The simplicity of the visual language that Scratch provides
| inherits from the simplicity of Lisp, via Logo. The Logo language
| (& the Mindstorms pedagogical philosophy), which is what Scratch
| builds off of in a visual way, was implemented as a dialect of
| Lisp.
|
| From anecdotal experience, I do believe that the choice of a Lisp
| for Logo was an important criterion in the simplicity of the
| language, and thus the high impact of the learning impact.
|
| I do think that if we find Scratch useful and powerful, then we
| should really re-/consider Clojure as an important language for
| _real_ general purpose programming work, for many reasons:
| https://www.youtube.com/watch?v=Y3-53JoGPE4
| herf wrote:
| I love what they've done and how my kids have taken to it. The
| combination of design tools and code reminds me of the "golden
| age" of Flash in some ways. Vector graphics editor, sound editor,
| code, it all works together - this is pretty special to see in
| one tool that kids can use.
|
| The games are actually getting quite _good_ on the platform, and
| that means it 's hard for a lot of parents to understand how much
| time is gaming vs. coding.
| ModernMech wrote:
| Scratch is great, but the problem is: where do kids go after
| scratch? Often they are transitioned directly to professional-
| grade languages and developer tools, which has the effect of
| turning what was once fun to something scary and frustrating.
| Many kids stop their PL development right then and there, writing
| it off as something "not for me".
|
| I find this sad, as it means a lot of people who might otherwise
| benefit from programming in their daily lives never pick it up
| again. Just as not everyone who can cook needs to be a chef with
| professional grade equipment to benefit from the activity, not
| everyone who programs needs to be a software developer with all
| the incidental complexity that entails.
|
| We start teaching Java to kids as early as 8th/9th grade when the
| vast majority aren't ready for it. Even my sophomore students in
| college regularly struggle with the language.
|
| There's a huge gap between scratch and Java that is begging to be
| filled by innovative language design. Or better yet, a language
| that can a student can stick with from early age all the way
| through adulthood. Imagine if students who started at 11 actually
| stuck with it through 18 and beyond, instead of giving up at
| 13/14. Scratch has a perception problem as being something
| exclusively for kids; I don't know how it can shed that
| reputation.
|
| We need to stop treating early childhood programming education as
| the first stage of the funnel into corporate tech jobs. Not
| everyone wants to end up there, and we shouldn't design their
| education with that goal in mind. Programming literacy is too
| important in the 21st century to reserve the skill for would-be
| devs.
| ebresafegaga wrote:
| Something like https://www.pyret.org/index.html with
| https://dcic-world.org/ maybe
| omnibrain wrote:
| PICO-8 could be a next step.
| https://en.wikipedia.org/wiki/PICO-8 A "real" programming
| language, but still focused on game making, all wrapped into a
| neat package.
| HanClinto wrote:
| I've been asking myself the same thing recently, and recently
| ran across LeopardJS -- it's meant to bridge the gap between
| Scratch and JavaScript, and I think it does a really excellent
| job of it: https://leopardjs.com/
|
| You can paste a link to a Scratch URL into the page and it
| automatically translates it to equivalent JavaScript that can
| then be edited in the browser or downloaded and edited locally.
| It's got an impressive and intuitive library behind it and I
| think it's fantastic.
| gnramires wrote:
| > Scratch is great, but the problem is: where do kids go after
| scratch?
|
| Good question, I personally think p5.js is a great option. JS
| is very flexible, and the live environment (at editor.p5js.org)
| is I suppose very similar to scratch. Drawing elements like
| squares and circles is as simple as square(), circle(), etc.
| (with parameters). It's very easy to share an publish (could be
| on github[1], or just link directly from the editor!). Highly
| recommended for beginners and any quick interactive work
| really.
|
| It would be great to have a community page like Scratch though.
|
| [1] See a little procedural tree: https://gustavo-
| nramires.github.io/ :)
| timbit42 wrote:
| Perhaps SNAP!
|
| https://snap.berkeley.edu/
| vincent-manis wrote:
| I was planning on providing a pointer to Snap!, so I'm glad
| timbit did it. Snap! behaves similarly to Scratch, but its
| underlying language is more powerful (it's essentially a
| visual Scheme). Were I still teaching university CS, I would
| be advocating for the use of Snap! in the introductory
| course.
|
| And yes, I find the exclamation point annoying.
| capncleaver wrote:
| My lad has been learning Python in Replit. It looks like they
| are trying to introduce community feedback loops.
|
| For making games, Roblox is perhaps a good choice. You can post
| a modded example game and get your friends playing it very
| quickly, then iterate rapidly.
| bckr wrote:
| A few ideas:
|
| * Processing
|
| * Love2D
|
| * Unity / Godot
|
| * Pygame
|
| In the past, Flash filled this niche, I think (although I never
| programmed in it). Looking at my own list above, and others'
| responses, I don't think this niche has truly been filled,
| alas.
|
| Maybe a startup idea?
| yrandom wrote:
| I agree and it's one of the reasons I built https://akedo.app
|
| It's a text based programming platform centred around creating
| games and can be used from a young age and into adulthood.
| Wowfunhappy wrote:
| > Scratch is great, but the problem is: where do kids go after
| scratch? Often they are transitioned directly to professional-
| grade languages and developer tools, which has the effect of
| turning what was once fun to something scary and frustrating.
| Many kids stop their PL development right then and there,
| writing it off as something "not for me".
|
| I work at a company that runs coding classes for children.
|
| We created https://woofjs.com/ explicitly for the purpose of
| transitioning students from Scratch to a text based language.
| It's not perfect, but worth a look!
| bryanbraun wrote:
| I wonder if there's a way to smooth out the transition into
| modding "real" games that teenagers are already playing with
| their friends. I'll bet it would be pretty motivating to have
| that kind of power in these online spaces where a bunch of your
| friends hang out.
|
| Minecraft and Roblox support mods written in Java and Lua
| respectively but it's a pretty big leap from Scratch to
| Minecraft mods.
|
| I was recently discovered a dedicated editor for Minecraft
| modding (https://bridge-core.app) and that seems pretty cool. A
| lot more could be done in this space though.
| monkeydust wrote:
| Curious as to the application of Scratch into enterprise
| software, specifically to develop low-code applications.
| loganc2342 wrote:
| > It was the community aspects that really drew in my kids. They
| would get really excited whenever somebody followed them or
| "loved" one of their projects. It gave them the motivation to
| build more ambitious things.
|
| This is really what sparked my love of coding and, more broadly,
| creating things when I made projects in Scratch as a kid in the
| early 2010s. Seeing all of the positive feedback on stuff I
| posted as well as seeing the awesome stuff other people posted
| motivated me to keep one-upping myself with cooler and cooler
| projects. Those who downplay the positive effect Scratch can have
| on kids tend to overlook this part of the equation.
| [deleted]
| ssivark wrote:
| This is extremely heartening. I can't wait for the day we get
| popular Smalltalk apps that users can easily inspect and modify!
| Seems like it's actually a great platform on which to bootstrap a
| free software ecosystem more effective (for remixing) than
| GitHub.
| leotaku wrote:
| I remember introducing a middle schooler to programming using
| Scratch at my highschool's open day. I had spent a few hours
| making a simple two player shooting game and a maze generator for
| the IT class display. Most kids just wanted to play the games,
| but seeing just one of them be genuinely excited about the
| possibility of creating his own interactive experiences, asking
| questions about how certain mechanics were implemented, what I
| did to get to this point, if I thought he would be able to create
| similar things, was really encouraging. Probably didn't make a
| difference in the long run, but still a treasured memory for me.
| ptudan wrote:
| Scratch was my introduction to programming. I was already a
| computer nerd, but had never programmed before. This was in the
| mid 2000s.
|
| Now I'm in the industry and so are 15% of my classmates from that
| time.
| tengbretson wrote:
| One of the coolest things about scratch that I've seen from using
| it and being an instructor is that it teaches the user how to
| work in event based systems. I've seen children with better
| intuitions for event based architectures than some veteran
| developers.
| throwaway14356 wrote:
| When launched the community made me laugh. Every lang has its own
| community, this one is hilarious. They can code but dont bother a
| 12 year old with your doctrine of copyright. I MADE THIS!
| NonNefarious wrote:
| Guys, when posting, why not say WHAT IT IS in the title? Being
| obscure isn't cool, as fashionable as it seems to be on here.
|
| For many people, Scratch is a well-known color-correction tool:
| https://www.assimilateinc.com/products/
|
| When posting, please shun obscurity and say WHAT IT IS.
| NylaTheWolf wrote:
| I used Scratch ALL THE TIME as a kid. I'd always play other
| people's projects and I made several of my own. I think in the
| long run it did help me; it was definitely fostered my interest
| in coding and game dev. And it probably did help me understand
| concepts in coding like variables.
|
| I remember browsing Github several months ago and seeing that
| there was a repo for a Scratch plugin. That really surprised me,
| I didn't even know it allowed plugins. I'm surprised that there
| were people willing to make them too! That's awesome!
| bakpakin wrote:
| I learned to program on scratch in the 6th grade when it was very
| new, circa 2008. In many ways, it is more real than other
| learning languages.
|
| In retrospect, the smalltalk influence of scratch I think left
| such an impression on me that I continue to love dynamic, always
| live environments to this day. The broadcast system is
| surprisingly powerful and forward thinking. I do recall it being
| a bit difficult to build up your own abstractions, but such
| guardrails I think are useful for learning and I usedd Scratch
| before custom blocks were available.
| jmugan wrote:
| One problem I've seen with Scratch is that schools rely on it for
| too long. Kids get into high school and the school is still
| teaching with Scratch.
| ksaj wrote:
| We definitely moved on faster than that back in the 80's. We
| started with LOGO (which some people know as Turtle Graphics)
| and BASIC, but pretty much immediately went into other
| historical languages (prolog, pascal, cobol) and then to C,
| within a single semester. And through all that, we were always
| presented with the binary code (in Hex) so we were fully aware
| of how registers and boolean math worked.
| tmaly wrote:
| FYI There is a free online Scratch Conference July 21, 2022
|
| https://www.scratchfoundation.org/scratch-conference
| bryanbraun wrote:
| Oh wow, great find! Gonna put this on the calendar.
|
| That "Hacking apps with Makey Makey & Scratch" session looks
| particularly interesting.
___________________________________________________________________
(page generated 2022-07-16 23:00 UTC)