I understand, in a sense, what you mean (since I am of an earlier generation than the one which learned programming on that particular platform), but why should that necessarily be true? Hasn’t it always been the case that the current generation skips learning about useless lower layers used by older generations? How could it be that the layers you grew up are the special ones which are still useful, when all the layers which came before, which people at the time thought essential, have turned out not to be so?
I am, below, trying to imagine what an argument could be for any specific example to be worse than the previous ones.
One could make an argument that when the level of abstractions eliminate Turing completeness, they have eliminated an essential quality. (But this does not even eliminate Swift playground, I think, so in this case it does not apply.)
Or one could make an argument about a lack of program interconnectedness, which, I am given to understand, is very much a problem in modern smartphone and tablet environments. But I could be out of date and/or misinformed. Nevertheless, it would be a reasonable argument (and I don’t know if it applies to Swift playground on an iPad or not).
Very constrained environments, like Minecraft, can also be argued against on practical grounds – it’s simply too difficult to make something useful within them. Not technically impossible, just too difficult once you get up a bit in abstraction levels. In my opinion, this argument also applies, sadly, to BASIC: The lack of functions and other methods of abstractions is, I think, a killer.
Or one could argue (which I think I personally favor doing) that software freedom for end users is an essential quality which must never be lost, for reasons which are only tangentially based on what is good for learning. It is almost special pleading, but has its own reasons for doing so, and the logic, on its own terms, is sound.
But none of these arguments are insurmountable by some theoretical device and environment which avoids any or all of these specific criticisms. Therefore, I think that any argument based solely on the age and abstraction level would not be valid.
Despite being an open language, Swift (and Playgrounds) is an effort to usher children into the Apple tent.
BASIC (essentially any 3GL) never wore such a veil. To suggest discrete logic and IC-level assembly compares to issuing commands via the LEGO Mindstorms protocol perfectly illustrates the chasm between learning and understanding.
> Despite being an open language, Swift (and Playgrounds) is an effort to usher children into the Apple tent.
Yes. That is certainly a good argument against that specific example, and it is one I agree with. But it does not apply generally.
> To suggest discrete logic and IC-level assembly compares to issuing commands via the LEGO Mindstorms protocol perfectly illustrates the chasm between learning and understanding.
But learning and understanding what? Why is it (as I imply that your argument is) important to understand assembly-level instructions when it is not important to understand the underlying electronics? Why is this level special?
In addition to all the general arguments I outlined above, there is one additional argument to be made against assembly language: In today’s processors, I am given to understand that these assembly language instruction sets are largely a high-level language, emulated by microcode – the assembly instructions you write have very little to do with what the processor is actually doing in a modern hardware architecture, and therefore teach you exactly the wrong things about how a modern processor works.
Agreed. I'm a python beast, but really struggled with Assembly language in school. I'd have been better off with a ZXSpectrum earlier in life so I could've learned hardware. IMO high level languages (as insanely useful as they are) are similar to writing spells like a wizard and using assembly or even basic when you know all the registers...etc is more like a real science. Both are valuable, but I really wish I knew more about hardware.
Having a ZX Spectrum would in no way actually help you learn hardware. The only thing it would do is to reinforce its realness, so to speak, which would help to motivate you to learn it. But it would not actually help you learn it – the design and learning curve of assembly language is what it is, and having access to running hardware (compared to having an emulator) does not change that.
It makes it easy to learn the hardware because it has a simple processor and makes it dirt simple to access. Windows on the other hand runs on modern chips and it isn't easy to run assembly without 3rd party software and graphics is also not something a child can easily handle. I suppose a good emulator would be similar, but emulation is a little bit of a lie :)