Fair Warning. RAMBLING MADWOMAN AHEAD.
That's very much been my goal from the beginning.
The problem I have with programming languages and abstraction, is I'd MUCH rather see the mechanical nature instead of trusting someone telling me "oh this works"
I love snap! but the world of CompSci is sadly powered by c or javascript or "insert brand name here"
The reason I keep trying to use snap! is because Snap! is very much almost there, by showing rather than telling you can demonstrate what's going on, which is why the frame by frame stepping is my favourite feature in snap!
That however is my beef. Sure if I take these scheme reporter out and make them use script variables, I can see the machine a little better, but what I'm actually seeing is still symbolism.
I don't know if the Snap! fork Edgy is still being maintained, but when someone showed me it I was overjoyed, because I was going to have so much fun... except, due to the "just trust us dude" nature of programming and abstraction.
What I got was not what I wanted and I ignored it. Maybe it got better, maybe it didn't... but SHOW, not Tell.
My primary thesis, and one I'm trying to wrap my head around old programming languages so I can use snap! to prove or disprove, is that Programming Languages and Abstraction are actually no longer relevant and if we keep using them, we're creating a whole game of telephone and eroding the power of comp-sci, because the whole NATURE of programming, as it stands, is the assumption, that someone, somewhere else knows what's going on and that all you need to do is find them and ask.
There's a fantastic example of this in SICP.
Chapter 1.2 is about using "simple" functions to build "advanced" things, ie, by breaking things down into pieces you can take a whole slew of smaller pieces to build larger more complicated things, like as Brian said elsewhere on this forum "The fact that Snap! looks like Lego isn't accidental"
What happens is one of the bigger programs in that section suddenly without rhyme or reason introduces "even?" into the logic. Now, having used an actual scheme interpreter when I first read the book, I know what Even? does, and I know it's a predicate.
But there's no explanation, it's just THERE.
And then, six pages later we get THIS
Of course we could get along without ever defining this procedure, by always writing
expressions such as
(* 3 3 3)
(* x x x)
(* y y y)
and never mentioning cube explicitly.
This would place us at a serious disadvantage, forcing us to work always at the level of the particular operations that happen to be primitives in the language (multiplication, in this case) rather than in terms of higher-level operations. Our programs would be able to compute cubes, but our language would lack the ability to express the concept of cubing.
Which is exactly what they just DID with the "Even?" primitive...
And it's not just SICP. Almost every programming textbook that I've read makes this mistake multiple times.
I know someone with a Doctorate in this, he's very smart, and I'm one of the reasons he got that in the first place! He's an expert in this stuff, and I whined to him about that and he said "Those are reference manuals, you're not meant to read them, you're meant to REFERENCE them"
The frustrating thing to me is he, completely without realising it, is demonstrating exactly the Telephone effect without understanding he's doing it.
To not be guilty of what I'm complaining about, Telephone is the game we teach pre-school children about how if you have a string of people passing messages, there is a very high chance the message gets garbled, and even if you remove the kids doing it deliberately, the garbling still happens by accident.
Computational Technology as a whole, think's it's not making the telephone mistake, while very much MAKING it, and insisting it's not doing any such thing.
And it annoys me to no end because as someone who loves technology, but for a whole host of reasons over the years ended up on the outside of the technology industry looking in and watching this slow motion train wreck unfold and no way to prove it.
Until I found Snap!
Except Snap! is still considered a novelty and the person I mentioned earlier still considers it "training
wheels" for "production languages" a logical fallacy that gets bandied around in these forums too!
Block Languages are not training wheels, they're the biggest ducking paradigm shift in the whole computational industry and the whole ducking industry is desperately trying to pretend it's not coming like a freight train to ruin everyone's day.
END RAMBLING MADWOMAN. (If you see this post it's because I didn't freak out and delete it half an hour later LOL)