| Very cool! If you're not already familiar with LabVIEW, you might check it out as there are some very interesting similarities and differences between AsciiDots and LabVIEW. A couple that caught my eye: - LabVIEW creates loops by enclosing the repeated code in a graphical frame of sorts. That ends up being an elegant way to deal with iteration: An array that flows into a loop turns into individual elements inside the loop (one loop iteration per element) and elements that flow out of a loop stack up into an array. I wonder if something similar might work well in AsciiDots? Or more generally, a way to deal with multi-dimensional data by having dots pile up into an array? - The way AsciiDots deals with libraries (defining inputs and outputs spatially, i.e. top/right/bottom/left) is very similar to how sub-VIs are created in LabVIEW. The way your operations like addition, subtraction, multiplication, and division take two inputs and wait until both inputs arrive to release the result is reminiscent of LabVIEW, but they way you use horizontal and vertical to mean different things is different and very interesting. Direction is mostly meaningless in LabVIEW, so I love the way that AsciiDots ascribes a meaning to horizontal vs. vertical. Can that idea go even deeper? - Having the "dot" carry information and have a value (not just be the point of execution) is very consistent with LabVIEW and a difference from some other text-based visual languages. - LabVIEW "wires" (the connections between things) have different thicknesses and colors to tell the user what datatype they carry. It sounds clunky but ends up giving a lot of readability to LabVIEW programs. Not sure if a similar idea could help make AsciiDots programs more readable...? - LabVIEW has a "highlight execution" mode that slows the program down and highlights the flow of data; very reminiscent of your animated GIF. More than just a pretty gimmick, it helps debug LabVIEW programs and it'd be a great addition to your "try it online" Heroku app. - For when arithmetic becomes a spaghetti of symbols, LabVIEW has a "formula node" that lets you type in traditional code in C++, thereby mixing graphical and traditional languages. Maybe an interesting paradigm for AsciiDots? All in all, AsciiDots seems to have a much lower entry barrier than other text-based graphical languages like befunge. It could even be practical for some things, the same way LabVIEW has an interesting niche in the data acquisition and instrument control world. Maybe it could be used for data analysis, where arrays flow from "open file" to "manipulate data" and "plot results"? Or a very interesting way for children to learn some programming concepts, combining the visual-ness of things like Scratch and Lightbot while still having the kids use a text editor?! I'll shut up now. Fantastic work! Thank you for sharing it! |
These are really interesting ideas, and I can't wait to start figuring out implementations.
I wonder if I could make something like jQuery, but for AsciiDots...