The “Just Do It” Paradox
An absolute beginner can be told:
“Write digitalWrite(13, HIGH). You don't need to know what is inside it yet. It turns on the LED.”
But the beginner is still expected to write the surrounding C++ structure:
void setup() {
digitalWrite(13, HIGH);
}
void loop() {
}
So, before the beginner even reaches the instruction that turns on the LED, they have already encountered:
void, setup(), loop(), parentheses, braces, semicolons, capitalization, and the distinction between functions and blocks.
All of that is simply accepted as part of learning Arduino.
Now consider giving the same absolute beginner this complete Assembly program:
.org 0
jmp init
.org 0x60
init:
sbi 5, 5
loop:
rjmp loop
and saying:
“Copy it, click Upload, and watch the LED. You don't need to understand everything yet.”
Why is that suddenly considered bad pedagogy because it is Assembly?
The beginner can initially treat .org, jmp, sbi, and rjmp exactly as they treat digitalWrite(): as things they are using before they fully understand them.
And visually, the Assembly version is arguably more direct. Every line is an instruction or a very simple directive/label. There is no additional C++ scaffolding around the operation.
That is the paradox:
C++ is allowed to say “you don't need to know what digitalWrite() does yet,” while still requiring the beginner to learn the syntax surrounding it.
But when Assembly is presented with a few instructions that the beginner can simply copy and run, suddenly people say:
“No, you must understand Assembly first.”
Why?
The beginner can start with:
Copy → Upload → LED ON.
Then, once the LED works, we open the box:
.org → jmp → sbi → rjmp → registers → bits → hardware.
The point is not that Assembly is magically easier than C++.
The point is that the beginner does not need to understand everything before being allowed to make something work.
And that rule should apply equally to both.