Visual Programming Language

(I think I've already posted a similar post/topic a few years ago, but this has some changes.)

I want to create my own visual programming language with my own mechanics. This new language would be hosted on a website. I'm pretty sure I'd need to learn JavaScript (alongside HTML and CSS, which I know), but I'm not certain about software and additional resources. What programming languages, software, and knowledge will I need?

Just out of curiosity: what's the big idea behind the language you'd want to create? Is it going to be a hobby project or a serious attempt at creating a solution for a wider audience?
Either way, in order for you not making it too difficult for yourself you may want to start building a prototype within Snap!
I guess Snap! is powerful enough to support a very large range of potential primitives of your future programming language. With Snap! as an extra layer, execution of programs in your new language is probably not going to be very fast - but for a prototype that shouldn't be much of an issue.

It's sort of a mix. It will be a hobby project that might become something serious. Thanks for the advice! Do you have any other suggestions?

Perhaps share some ideas and ask others to hone them. Some forum contributors contrived languages of their own; they, and others, may be interested to reflect and think along with you.
Do you have, like, a programming paradigm in mind, and / or an application area? A niche other visual languages don’t (seriously) support?

Not exactly. I want to add blocks (like those in Scratch, Snap!, and Blockly), but I would like to introduce a mechanic that allows you to edit the data of the blocks instead of creating your own or adding extremely complex alternatives. I think it would be fun because the basic commands and functions exist, but you can learn ways to alter them.

Also, how would I create a prototype in Snap!? I'm not that experienced with this specific language.

I think what they mean is, create a fork of snap, and modify that, adding your own primitive blocks, and maybe other gui functions.

Oh! That makes a bit more sense...

Besides a fork of Snap!, what else could I use?

You could use blockly, which is what scratch 3 uses (either the scratch code, or with the base blockly library).

Here's the code for scratch-blocks GitHub - LLK/scratch-blocks: Scratch Blocks is a library for building creative computing interfaces. (scratch-blocks is a fork of blockly, but it's also scratchblocks, so I'd say it's much better).

You can find I here: Blockly  |  Google Developers

I mean...what software and editors could I use to build my own language?

If you want to create it from scratch (not, you could do it in javascript with the html canvas. I would just use blockly or morphic.js (what snap uses), because jens spent a long time creating morphic.js before he was ready to create snap using it.

Thanks. Also, Scratch uses Blockly? If not, what does it use as a basis?

Scratch does use blockly for a basis, they just have a fork of it that modifies blockly to look more like, well, scratch blocks.

But didn't Scratch invent the concept of a block-based programming language? Also, what is Squeak?

Yes, scratch did, create the idea. The first version of scratch was made in squeak, which, I'm pretty sure, is a gui system that is very old and outdated. I don't know the specifics. When they made scratch 2, they made it work in the browser by using flash. When they made scratch 3, I think they collaborated with google to make blockly, which they then used to create scratch 3. Don't quote me on thi, I'm just saying what I think I've heard, I'm not fact checking anything.

Ok. Thanks. You've been a big help!


Why? Just...why?

i didnt know scratch didnt code the whole editor themselves, yknow that sounds kinda stoopid im just gonna delete my post

A general idea is that its an object oriented programming type of language where instead of having different sprites there just 1 coding area that controls everything