[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)