3 ms·
A note to those commenters who complain that visual programming doesn't help you learn software engineering: Right, you aren't our target audience. We're afte
by brian_harvey 20d ago
A note to those commenters who complain that visual programming doesn't help you learn software engineering:
Right, you aren't our target audience. We're after the people who aren't going to major in computer science in college, but who're curious what all the fuss is about. They've taken high school algebra, so they know what a variable is and what a function is. (They don't have to know about functions as data, but we hope to teach them that.) These days, they probably used Scratch in elementary school, so we don't have to teach them the syntax of blocks, or what a sprite is, etc.
Nobody's going to come straight out of our class into a software engineering job. They'll have plenty of opportunity to learn that later, supposing that (as happens gratifyingly often) they change their minds about what to study in college because of our course.
They're not (or at least not yet) hackers, in the sense of people whose instinct on meeting a machine is to take it apart.
Oh, P.S., there is one sense in which block languages are better for software engineering: you can have arbitrarily long names of things (including spaces between words), because you only ever need to type the name once, so you can give your procedures self-documenting names such as "convert upper case to lower case letters" instead of ugly "convUcLc".
- rmunn 20d agoThere's a limit to how long the name can be, even in Snap! — not an enforced limit as far as I know, but a practical one. You don't want the block you're dragging around to be thousands of pixels wide, it's very inconvenient. So people are naturally going to rename "convert all the upper case letters in the input text ___ into lower case letters" (where ___ represents the input slot) into "convert ___ to lower case" at some point, because they get tired of that one block being so much wider than every other block around it. (Edit to add: especially if they're snapping it into the input of a `map` block, which itself is the list input of "keep items (predicate) from (list)" block. That would get unwieldly really fast). But you know some wag is going to paste the Pevear and Volokhonsky translation of War and Peace into a block name, just to see if he can. :-) So perhaps there does need to be an artificial limit, at 4096 characters or so, on block names.
- dr_kiszonka 20d agoThank you for your work on Snap! and for finding the time to respond to our comments.
- vanderZwan 19d agoWasn't one other neat thing about Snap! and Scratch that you can translate the entire code (except for the user-named parts) to any other language on the fly without worrying about it breaking? Because in a sense the language is just part of the "presentation layer" of the blocks?