Hey there, i am daiko, and before You guys ask, yes I am currently making a Snap! to C# converter. Specifically designed for Avalonia, which is cross platform. Originally it was windows only but that changed more than a year ago, and the only thing i need is a community which helps me finish this tool, so people can have an easier process of switching from Scratch to a compiled language, and in my case it is C#. My github repo is here if somebody is interested: DaikoGames/sb1-sb2-sb3-xml-to-Csharp-converter: Converts Scratch (MIT) and Snap! (BYOB) Projects to C# Avalonia Projects. I would be thankful for every help i get :). Thank you for reading this.
switching from Scratch to an actual Programming language
Not the best way to make friends around here… :~/
Tell that to Griffpatch.
Fair, Scratch is sooo limiting. It felt like a breath of fresh air when I was introduced to other- first class data
both scratch and snap are actual programming languages. You know, in snap you can just write all your code in snap’s lisp text format if you want.
off topic
Yes lol, he’s taught me a lot about codes and scripts.@daikogames, you’ve never heard of JS and Lisp code?
Each block has a code value…
Aside from that, the only real way to get help for off topic (or platform) subjects, is to have something in snap for us to help with. Kind of how you would post about needing help assembling a vacuum cleaner to an electronics store. (Ik it’s not the best example but I’m sure you get the point)
A majority of Snap ! ers are familiar with in platform help. Not off platform help.
@bh, this is off topic but I’m genuinely confused…
this forum is discourse-based, might as well ask them.
also I think @cycomachead is the forums person.
I always dreamed of a block-based coding language being compiled! Here, Snap! is transpiled, but since C# is a compiled language it’s close enough.
Off topic
Here’s a little tip. If you don’t know how to capitalize words properly, just make them all lowercase!
That is the thing. My code can read the .xml file and actually interpret those values and make real code out of it. Right now it is near the first release. I have heard of html and I am genuinely not really interested into that language even though I used it multiple times. There is no really good way to make desktop apps right now with html and css. Atleast not with electron to my knowledge. I just know C# and I wanted to do something. And you know what, yes I am actually asking people to help, and the reason is that open source development with other people is better than alone. That is why. It is not that I don’t have an idea of what I am doing. It is because I want to have help for improvements but currently nobody is helping lol. I wish it was different tho XD.
They are „block programming languages“ there is a huge difference between Scratch/Snap! and A block programming language. First of all the file format. It is a json for Scratch and a xml for Snap!. A block programming language uses code to do something with a compiler. The difference is the block language uses a compiler to interpret the source file (json or xml) . A compiled programming language can actually change stuff in the system, which is not possible with Scratch or snap! I said something wrong earlier and edited this.
I don’t know if that is really bad. It can teach people to switch from Scratch to actual programming which is good for the future. People could also use this project to build their projects for windows, Linux and Mac.
Your use of the word “actual” (or “real”) is what’s offensive in what you’re saying. You could talk about “compiled” languages, for example, without upsetting anyone, and that seems to be what you really mean.
I think also you, like many people, make the mistake of lumping Scratch and Snap! together, as if they were the same language. They have very different purposes, although obviously Snap! was inspired by Scratch.
Scratch was designed for the purpose of encouraging creativity in eight-year-olds. (Their actual user community ranges from around 5 to around 90, I think, but the language has the flavor it does because they were thinking about eight year olds when they designed it.)
Snap! was designed with the goal of introducing teenagers to serious computer science. The (US) National Science Foundation challenged university computer scientists to develop an appropriate course for high school that would attract nontraditional CS students (which mainly means women and underrepresented minorities). Like several other groups, we at UC Berkeley wanted to use Scratch, because it looks unintimidating, and would already be familiar to many teenagers from elementary school, but found that Scratch, because of design choices that were entirely appropriate for their purposes, couldn’t really support the level of CS we wanted; in particular, in those days, Scratch users couldn’t define procedures, i.e., couldn’t create their own blocks. Some other groups chose to use Scratch for the first week or two of their courses and then switch to (most commonly) Python. We didn’t want to use such a bait-and-switch approach; instead we asked, “what’s the smallest change we could make to Scratch so that it would support the curriculum we want to teach?” The answer turned out to be adding first class functions and first class lists. In the beginning we were hoping that the Scratch Team would absorb our work into Scratch itself, but they chose otherwise and so we have diverged. We have since added OOP with true prototyping inheritance, another OOP system based on dictionaries, APL-style first class vectors and matrices, and much more. Snap!, at least, is arguably a more expressive programming language than most of the ones you consider “real.”
This is not to say that you shouldn’t pursue working with compiled languages. But there’s no need to insult us as you do so.
Ok, i probably stepped on a wrong foot here, i am sorry for the bad answer, i didn´t mean to insult anybody here, i will change the post. Scratch and Snap! are block languages and Csharp is a compiled language. I am sorry for the inconvenience. I just didn´t know what i said wrong, but i realized it now.
Off Topic: Is it just designed for teenagers or is it also designed for people younger than teen years?
I can’t access Github unfortunately due to it being blocked… What’s in the link? (I’m guessing the code and such)
Just as Scratch was designed for 8 year-olds but still accepts 5 year-olds, I believe that Snap was designed for teens but still accepts younger children.
off topic
It’s designed for *primarily* teenagers but accepting for those a bit younger, and adults of course.@daikogames, I would help you but I have no real idea how to help with scripts or codes unless it’s Python or JavaScript (and/or block coding) but believe me I would.
That’s to javascript, an interpreted language.
Off Topic: Is it just designed for teenagers or is it also designed for people younger than teen years?
The youngest user I’ve ever known about was 5. And of course different individuals mature at different rates. But what’s different from Scratch is that we don’t make any particular effort to make sure everything in the language is understandable by younger kids. (I should add that people can use Snap! as a host for simplified and specialized languages. All those libraries with “(EDC)” in their names are in support of a research project that provides interactive math lessons for early childhood (K-2) kids.)
But I’m not sure that even all our teenage users understand continuations! We’ve made a sort of meta-design decision that our users will have the intellectual maturity to be able to accept not knowing everything about Snap! without being scared away from using the parts they do understand. Hell, I’m not sure I understand all the stuff Jens has been doing with AI and perceptrons recently. :~)
For what it’s worth, the most amazing programmer I’ve ever known was 12 years old when we met him, and already understood all about everything in (back then) BYOB, even though (I’m pretty sure) he’d never seen a lambda expression before he found them in BYOB. And I swear that when I watched him coding his fingers were a blur.

