Revisiting Why Johnny Can't Code: Have We "Made the Print Too Small"?
theodp writes: In What is Computer Science?, the kickoff video for Facebook's new TechPrep diversity initiative, FB product manager Adriel Frederick explains how he was hooked-on-coding after seeing the magic of a BASIC PRINT statement. His simple BASIC example is a nice contrast to the more complicated JavaScript and Ruby examples that were chosen to illustrate Mark Zuckerberg's what-is-coding video for schoolkids. In How to Teach Your Baby to Read, the authors explain, "It is safe to say that in particular very young children can read, provided that, in the beginning, you make the print very big." So, is introducing coding to schoolkids with modern programming languages instead of something like BASIC (2006) or even (gasp!) spreadsheets (2002) the coding equivalent of "making the print too small" for a child to see and understand?
Please stop shilling for Facebook. You do it endlessly. No one likes Facebook or its douchebag in chief.
The statements are too long.
Writing a working program should be as easy as:
LOL
LMFAO
ROFL
Therefore I suggest we teach beginners assembly language and exchange the mnemonics for common texting short forms.
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
-- Edsger W. Dijkstra
Johnny Can't Code because an "oppressed person" who really doesn't want to be there has taken his place.
Kids should be introduced to programming using marble runs and physical switches or conditionals. Get them interested in the toy aspect, introduce rewards for working out how to achieve goals, and gradually introduce virtual modelling of the physical layout as complexity increases - they will gradually move completely to the virtual model, and then you can introduce the next stage of exposing the code when managing click and drag objects becomes a hassle.
Baby steps. Literally.
COBOL would be a good use for something that's extremely easy to read and understand and can do powerful things.
Maybe Johnny wants to choose his own fucking interests, instead of having them imposed by a corporate oligarchy only interested in cheap labor.
SJW's don't eliminate discrimination. They just expropriate it for themselves.
I have seen a lot of programmers who are totally dependent on the IDE to develop the code. They have no idea how it works or where it runs from once it deploys.
Put them in timeout till they try harder!!!
Because all the coding classes are for women only and all the jobs are for Indians only.
Works fine in Python.
I got hooked by writing one-line VBScript message box scripts on Windows. To see my own text appear was a revelation: I can work from the "inside" of the screen and not just from the outside!
Let the kids do something creative, or pull a harmless prank, in a simple way. Hello world is idiotic and boring. Javascript is too terse and poorly designed, designed not for optimal coding but rather to make C++ programmers feel at home.
Perhaps more to the point, why do young kids need to be interested in coding? Most never will be. Most will never need to be. For those who have the aptitude, there's plenty of time. Let them discover trees and playgrounds first. Skipping childhood in order to "get ahead" is a cruel and pointless thing to impose on a child.
The need to solve a problem, being presented with a tool simple enough to understand and some help to get started seems to me to be the true trigger that can start someone off down the programming track.
Of course we have made the print too small. I recall attempting to 'grok' Fortran and Algol as a teenager and having difficulty understanding the difference between reserved words and variables and so forth.
BASIC is a brilliantly-designed language for the beginner because the concepts you need to understand are so simple. Even the much-maligned line numbers are important in the learning curve. When you start, a variable, a reserved word and a label are all concepts you have real difficulty separating. BASIC line numbers, though, you can immediately map to the idea of a sequence of control. Once you have mastered this you can then absorb the more advanced concepts gradually.
For those who take a snobbish attitude to BASIC I still feel that Kemeny and Kurtz understood absolutely how to create a language that simplified programming to its essence. As such, it really should be the starting point - it's easy to teach students better techniques once they have written some simple BASIC programs and hit issues like running out of places to insert a line, etc, because they can SEE why better techniques make their lives easier.
I think there's something to be said for learning programming on a very simple machine.
First, you need to keep in mind that kids have absolutely no idea how a computer works, at even the most basic of levels. It's a box with a keyboard and stuff happens on the screen. You need to cement the idea that you have to tell the computer to do stuff, and link the idea of coding to that stuff.
This is much easier to do when you have a computer that does pretty much nothing when you turn it on. A flashing cursor comes up and it's waiting for you to tell it what to do. 10 PRINT "HELLO" RUN and it does something. 20 GOTO 10 RUN and it does something else. You get the link between what you're telling the computer to do and what the computer is actually doing pretty quickly.
Compare that with booting up Windows/MacOSX/Linux, getting into your desktop environment, loading up a browser or IDE, creating a new project, explaining the UI of the IDE, making sure you have the right includes to do IO, directing your output to console or a UI object, etc...
My Other Computer Is A Data General Nova III.
I learned to program in 4th grade, and yes the INPUT, PRINT and IF THEN ELSE statements made up the first tutorial I went through. But as soon as I got to the section of the tutorial on PSET, LINE, etc. is when I really got interested.
I may have eventually had fun writing MUD-like text based games, I first got hooked writing games like Tic-Tac-Toe and space invaders.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
When I was a kid getting into programming, I constantly ran into a wall. The basics, like hello world, and command line input->output programs that can do an enormous variety of calculations, background work, execute even big and fun commands were always easy, instructions prevalent, how to's everywhere and easy to understand.
Then you want to actually move from moderately complicated programs that are useless to real ones that do something, and I hit a wall. How to make a GUI work, how to make graphics appear, how to do anything useful at all in any kind of app, desktop program, etc, and the tutorials jumped from 5 easy to understand lines to 50 page books on how to get a single line to appear, much less do anything else.
Excessively complicated syntax, and extremely difficult, complicated programming required for even simple programs in a useable context make it opaque, that is the small print. The resources are plentiful for the most basic coding, plentiful on algorithms and how they work, but the second you get to a moderately complex topic of actually making applications you can double click and use, I might as well be trying to learn how to do complex multivariable calculus in a non-euclidean geometry based on a few comments on a thread on a help page that was posted and died 8 years ago.
So...this is part of Facebook's "please don't class action us" effort and a product manager goes on video to say that the current batch of entry level languages and examples (which my kids mastered in middle school) are too hard for his target audience (women) so we need to step back to a simpler language with fewer moving parts? OK Facebook, do you really want to own that, "women are dumb so we'll come down to their level" (as long as you don't sue us) message?
I never hear of it. What's it? I even try go there today, but website is down. Maybe I tomorrow try again if it is good site.
Sincerely,
A Chinese
DigiComp I was my first computer!
https://en.wikipedia.org/wiki/...
But don't want to actually spend time or money training them. So the weight of this training should be offloaded onto the taxpayer and the parents. Schools shall be turned into training camps for future tech-slaves. For the same reason they're trying to attract more women and minorities to programming, it's a free pool of workforce that's largely untapped now.
Logo, and a moving turtle for the win.
Tools such as Arduinos and gShields and inexpensive stepper motors (to say nothing of Grbl which is one of the most amazing programs I've ever seen in terms of memory efficiency and compactness) make this far more affordable than it was.
Still kind of surprised no one has done a Logo to G-Code translator.
Sphinx of black quartz, judge my vow.
Here in Australia, a TV show called "Good Game SP" (which does gaming news, game reviews and other gaming related stuff aimed at kids) did a series of segments using the Scratch environment to build a game. I thought it was a great way to introduce kids to programming in a simple way (with things like if statements, loops etc) but without (as far as I can tell) teaching any of the bad habits you might get from something like BASIC.
The LEGO Mindstorms robotics kit also seems like a great way to teach the simpler programming concepts without teaching bad habits (coincidentally both LEGO Mindstorms and Scratch came out of the MIT Media Lab)
for decades. I learned it when I was 7, learned basic when I was 9 and was using proper programming languages within 2 years of that.
Give them LOGO and turtle graphics.
It was the best tool for the job in 1967. It's still the best tool for the job today.
The reason is because nobody has tried to build a better one. You don't teach 7 year olds ruby or javascript or python but FFS you don't teach them BASIC either - give them LOGO, and when they mastered that, they will be able to grasp any modern language you throw at them.
And if you want something new and shiny, then design that something FOR CHILDREN. That's why LOGO remains the best for the job - because it was designed specifically for children by a team that included a behavioral child psychologist.
Unicode killed the ASCII-art *
His simple BASIC example is a nice contrast to the more complicated JavaScript and Ruby examples
How about a BASIC-like interpreter implemented in JavaScript?
Then the student could visit the web page, enter the code in one box, click the "Run" button, and see the execution output in another box.
That way, you'd get the universality of web pages, combined with the educational friendliness of the BASIC-like style.
I've wondered about this myself. When I was a kid I was excited by putting prints in a goto loop in BASIC. Kids nowadays might not be so impressed, because the gizmos they use are very shiny. I don't know how to get young kids interested in programming. I doubt they would be impressed by being able to print to the screen. So what do the 10-15 year old kids do to get started? However I was thinking python would be a good introduction, instead of basic.
No. You're too greedy to hire real programmers. You want expendable drones indoctrinated from childhood who will be trapped in your minimal wage "coding" McJobs.
Can you fuck off with all of your "diversity initiatives" please? If Johnny wants to code, he'll fucking code. If he doesn't want to code he won't.
By looking over the configuration pages and screenshots of failbook, it looks to me like Facebook's target audience are mild narcissists who don't do anything in their life worth remembering but want people to validate (like) everything they post.
So, not that different from the most active portion of Slashdot, except here we get more people claiming to be important developers without providing evidence and significantly fewer beach photos.
Johnny can't cook a souffle, Johnny can't make a dove joint, Johnny, can't fix a car, Johnny can't set a broken arm, Johnny can't balance and income statement, etc.
But there is at least SOME people that can do it. These are all disciplines/careers that people elect to pursue. Not everyone needs to know how to code. That's stupid. Does everyone need to know how to design, cut, and sew together a pair of pants?
Does knowing how to code make it any better when Windows or Windows apps go toe up? Really? Are you going to debug Windows or Mathematica because you took a coding class?
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
As the parent of a 12 year old girl, I can assure you all, kids today are not having trouble learning to code. They have resources today that I couldn't have dreamed of when I was their age, and they are using them. There are two major problems that I see happening: there are too many languages out there and no one works in text/console mode anymore.
Computers were text based when I was learning basic 3 decades ago. As such, BASIC made a perfectly sensible starting point. Instead, today, a web or mobile app requires knowledge of HTML, JavaScript, CSS, some backend language such as C# or Java, SQL, and probably some other things AI haven't thought of.
Really, if you want to bring back a version of BASIC that was reasonably accessible but could still write something resembling a modern app, bring back Visual BASIC 6.
But like I said, kids today aren't really having much of a problem. My kid and her friends are learning JavaScript and C# and C++ and I have no idea what else. There are lots of resources out there and kids are taking advantage of them.
code.org must stop trying to shove programming down the throats of kids who DO NOT WANT to program, at the expense of those kids who do WANT TO PROGRAM.
Sexism against keen, young, nerdy boys is Sexism - STOP, or we boycott.
So facebook is just an Array of Users?
And every User has his birthday today?
But people are individuals, not everyone is going to see 'magic' there, nor should they, we are allowed to be interested and good at different things. At this point I'm convinced Zuck (also Gates and Musk) truly do have serious mental issues, and not the heartfelt Allie Brosh variety.
Answer is no.
I was learning to code by doing POKEs into graphic memory, by first drawing sprites on grid paper and translating it into binary. Not the most efficient way to be honest, but there was nobody to tell me right one and I have found a newspaper article about screen memory layout.
Problem is short attention span and instant gratification mindset, not programming language change.
Johnny (and Jane) can code. They just don't want to. Back in the 80s and 90s, computers were new and cool and if you could code, you could even make the computer do what you wanted it to do. Back then coding was freedom. It's like hot rods in the 50s. If you could soup up a car and make it run fast, others looked up to you. Now, fast cars, like computers, are common place and the "skill" isn't needed or valued like it was.
In the future, today's hot fields will be asking the same question. Once the newness and prestige wear off, the Johnny's and Jane's of the world move on to something else.
If you were as clever as the image you try to portray, then you'd realize that if everybody was an engineer, you wouldn't have it so good. So either you do realize this, and you're just chest-thumping (like, ahem, a lesser being), or you don't realize it, and thus you're not so clever after all.
As an GSI at a university, I have noticed that students in intro programming courses are struggling more here with Python than at my former institution where programming was introduced with spreadsheets.
If I remember the baby book correctly - kids focus on the Largest thing they see. Their brain processes items in a priority order - big first, small last. (hmm.... now wondering if small print in Ads is related to this and not space limitations) So big text allows them to "see" the text over any pictures on the page. Of course - this is for small kids. Old people it's because they need a new prescription for glasses.
Aside from that - conceptually the JS example is certainly "small print" or too busy. When I'm first looking at something that interests me - but maybe I haven't made up my mind whether I want to commit, I like the examples to be simple. Conceptual. Interest me in the topic.
The JS/HTML example is full of syntax and crowded with markup. Yes HTML is complicated (lots of typing). But Hello World in HTML is different from Javascript. Honestly I might have lied a bit and shown just the JS - and used a pretty printer to fit the space (and maybe black&white code - colors are busy and what do they mean?)
I became interested in computers when I used a modem to direct-connect to a friend who also had one and we typed text back and forth. After that I learned BASIC and the AT commands for the modem. My fascination was in knowing that this Computer would obey my every command - I could make lights blink, or characters flash/blink on the display.
Stupid simple things - but they were cool to me. My first exposure wasn't even code. It was dumb terminal program that shipped with IBM PC BASIC. But it was Simple and there was a Concept that spoke to me.
The reason Johnny (and Jenny) can't code is simple: coding is not easy. Most kids hate math word problems. Yet, that's what coding is. You're given a math word problem with all these variables and facts and rules, and you have to come up with a solution, that is translated into a foreign language of simple instructions for a very dumb machine that is fussy about how you talk to it. If you can't stand problems that start out, "A train leaves Chicago traveling 42 miles per hour...", then you are not ever going to like coding, and you most likely will never be very good at it.
Proverbs 21:19
My first computer was a TRS-80 color edition. https://en.wikipedia.org/wiki/TRS-80_Color_Computer
At the time I got it, I spent a large part of my time finding and making materials to build tree houses. The best part of the computer was I didn't need physical materials to build something. I could type up a set of materials and use them. This really satisfied my need to invent and build stuff.
I have just started showing my daughter, age 7, how she can build stuff on a computer using the Unreal Engine. She already does "art work" in Minecraft design mode. The idea of more realistic materials got her interest.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
If the print is too small try increasing the font size.
Johnny can't balance and income statement
One interesting thing Johnny can do, however, is differentiate between an indefinite article and a conjunction.
The first programming language I learned was BASIC.
I had to unlearn BASIC to learn FORTRAN.
I had to unlearn FORTRAN to learn C.
My brain is at its erase cycle limit.
Now I basically program in FORTRAN using C.
Our family plays Minecraft a few times a month for "family time". The kids would then talk about all the "cool" things they would like in Minecraft. I introduced the eldest daughter (11 at the time) to Youth Digital course for Mod Design 1 (basic Java). My daughter completed the course and enjoyed it (she really enjoyed using GIMP to edit / create images for the game, not so much the "typing code" aspect). Now my 2nd daughter (10 yrs old) enrolled in the same Mod Design 1 course after observing and playing big sister's mod. The younger siblings (2 boys, 5 and 7) want to mod Minecraft. My eldest daughter wanted to enroll in the YD Blender course (the animation 1 course). Tying programming (modding) as the means to create things into something they really like (Minecraft) seems to work really well. I'd enroll the boys but I have a budget to stay with. It's unfortunate in my State we have no voucher system for homeschooling to fund education.
I learned coding using the unholy duo of COBOL and FORTRAN, written out by hand on coding forms and then hand-punched on an IBM 029 card punch machine from hell. It was goddamn hard and we liked it that way! Now, get the fuck off my lawn.
Programming is an abstract concept. It's not like hammering nails into a board, it's all done in your head. You have to visualize, organize and convert all those bytes flowing around in your head into cognizable, workable code. It takes a certain type of person with a fair degree of mental discipline to do that. Debugging is an even more abstract mental exercise.
It's hard to produce complex code. If coding were easy, a 2nd grader could write a payroll system in Logo. Watch Johnny move the turtle to calculate FICA!
- Pithy comment goes here.
Bring back the dot matrix printers! You're not a real programmer until you printed your code in eight-bit block letters on green-and-white bar continuous paper and ripped it off the printer. Now get off my lawn!
BASIC (2002)?? Kemeny and Kurtz wrote BASIC in 1964 at Dartmouth.
Teach that, far more important that programming.https://en.wikipedia.org/wiki/The_Chemical_History_of_a_Candle
why do you use an overly-simplified vb code against overly-complicated js code? it's apples to oranges.
This is what the code really should look like:
for( user : users) user.sendMessage("Hi.");
...grok programming more quickly and easily.
This all comes down to what one has to know in order to attempt some programming. BASIC requires one know very little to get something useful done. They try the PRINT statement, and that's cool. GOTO, INPUT, strings, numbers, basic math follow.
From there, you can do pretty useful programs!
EXCEL works a similar way. You see what cells do, then you find things like autosum, then you put a little bit of math in a cell, and suddenly, you can make some really useful spreadsheets. I know people with about that level of knowledge modeling businesses to great success. It's not the most advanced use of EXCEL, but it works fine, they can change it, they get the benefit of some automation and can communicate advanced ideas to others with relative ease.
Way back in the day, before EXCEL, I had used BASIC to compute a whole pile of useful manufacturing related things. Saved me a ton of time, and I sold those and some CAD system programs to get a reasonable PC. All development was done on some 8088 clunker from a thrifty store. (yes, it ran the CAD system, having exactly the minimum requirements listed on the box)
The CAD system had a BASIC like language built in. Was cake to do this. I did know something about programming, but I also was able to teach others how to make useful programs on just little nubs of knowledge. Some of them advanced, getting into IT, systems, etc... while others just used the programs they made and were happy about it.
Indeed! The print is too small.
Best use case for new programmers, is to maximize utility while minimizing knowledge dependencies. They don't need much to get the spark. Once they get it, as they progress, they will want out of whatever little environment they started in. The ones who really have aptitude will get out and do just fine. For many others, they will just use the thing and be happy, or move on and not care so much.
We really should give everybody a go. Find out who is who.
Think of this like public speaking. We make everybody do it, or most everybody. Most people experience an ordinary, "I can do this" outcome. Some of us find out it's not for us, and still others find out they are great somehow. We lose out if we don't run everyone through.
Blogging because I can...
"If exposure to C++ hasn't destroyed your ability to think logically, ..."
-- Leslie Lamport
He is comparing loops to a single print statement. Print statements look nearly identical in the two languages.
The first thing I write in bash is a command I call 'd'. I use it alot. It functions like Forth's colon command, in the sense that I write:
d cmd 'line1' 'line2' 'line3'
and thus can create new commands with a single line. It is not perfect, and I am playing with the idea. Bash's array functions were never intended for Lisp style metaprogramming, but bash is standard, and I want things I can easily run on a webserver over ssh, which rules out esoteric languages. But the above is an example of a template script, which takes input (either command line parameters or stdin) and then generates a new script based upon it. My version of d is 9 lines long.
Why I should need to write ten tons of boilerplate to get anything done is beyond me. The beauty of basic and forth is that you can do useful stuff with one or two lines. Likewise bash. Object oriented programming and class structures are great teaching tools for teaching CS kids how to design a program. In the modern world, this has turned into a computational cocaine habit, with programmers routinely writing 100,000 line behemoths with more bugs than one cares to count, and no serious possibility of turning it into something reliable. The old unix philosophy was to have a good selection of simple tools, and a means for combining them together. Forth did similar. When I code in PHP or Javascript, I do similar, and keep things as simple as possible. Importantly, the cult of adapting computers to suit humans has a nasty downside, resulting in computing devices being seen as magic black boxes with flashing lights which may as well be powered by unicorns. Only by keeping things simple can we hope for programmers to have an end to understanding of what they are doing, from the foundations upward.
John_Chalisque
because we didn't have to worry (too much) about the target platform. "Hello world" was pretty much the same on a PDP-11, DOS PC or whatever. Now, people are giving examples of Javascript in a browser (so you need to know what <script> and </script> are for), Facebook, etc. What about on an Arduino?
You think this is tough for a kid? Wait until you get into the real world and have to listen to some supposed CS grad whine that they can't figure out Xlib. Or how to write an init shell script?
Have gnu, will travel.
So many of my friends didn't even get "programming" until we did LOGO at school.
I think the authors are exactly right about this... we're looking at it expecting far too much.
There's an app for just about everything, so Johnny has no reason to learn to code. The main impetus for learning to code is to scratch one's own itch. If there are a dozen backscratchers handy, why build one yourself?
I generally agree. When I went to teach one my children programming, I chose BASIC over newer alternatives. There's too many features and abstraction for newbies in say Python.
I can explain BASIC in simple English: "A GOSUB statement allows you to reuse the same lines of code from different spots in the program. It's like our little "execution guy" [already explained to kid] has a rule: when he sees GOSUB X, he writes down the line number of the next statement after that GOSUB in the "Return List". He then jumps to the given destination (line # X) and keeps executing until he sees a RETURN statement. When he sees that, he then checks the Return List we talked about to see where to go back to, crosses it out, and goes back."
It's simple "mechanical" rules of the form: if the "execution guy" sees such and such, he does this and that.
No crazy abstraction speech that goes over a kid's head, just easy step by step rules and clear-cut "parts". Statements have a clear-cut reference ID (line numbers) that can be written down per our model's "rules". You can check their work to see the line numbers.
(I don't need to get into stacks yet when starting out, but when the time comes, it's merely a clarification on how multiple items on the Return List are written and used by the Execution Guy. One can build on existing explanation idioms.)
If you think otherwise, I challenge you to present a simpler, more approachable way to explain function or sub-routine calls in say Python...
Table-ized A.I.
The Ruby equivalent to the BASIC example is
puts "Hello, world!"
The example is only more complicated because it's doing something more complicated.
say "Hello World"
should be simpler for children than "print" as dot-matrix printer usage faded away.
I taught myself how to program and I did it using QBASIC and the help menu included within QBASIC. (This was in '98, so I often programmed on a computer with no Internet access and cellphones with Internet were pretty rare, if they even existed in my country.) I think if I had tried anything else, I probably would have got bored and abandoned programming before even achieving anything. To simply make a program in Java requires writing code you won't understand for a while. And getting user input is daunting for a newbie. C/C++ is the same. And IDEs can be troublesome. Even JavaScript is still troublesome for a newbie to get user input and print to the screen, when writing from scratch. QBASIC, on the other hand, was great. The IDE was small and easy to use and the language itself made simple tasks easy to accomplish; "print" followed by a string to print to the screen, and capturing input was 1 or 2 lines of code. Starting simple and working your way up I feel is a great way to keep someone's interest (especially very young people), especially when you don't have to write a dozen lines just to get your program to run or to achieve simple tasks. QBASIC is a bit outdated, but I'm sure there are good modern choices for writing and running basic.
What about NOT teaching Johnny to code? The times when knowing how to program could lead to a lucrative job and a prosperous career are long over. We're 20 years past the end of that era. Today, coding is the digital equivalent of digging ditches. IT has held to this fake glamorous facade more out of desperation for a dumpload of desperate nerds of average intelligence who think of it as rocket science. It's not. IT used to be the Big New Thing in the late '70s to late '80s, but by the mid-'90s everyone with half a brain knew where it was going. Now there are way too many coders, wages are low and jobs can be easily exported. It's over. We're not bringing that era back, ever. If you care about your kids, don't cause them to become irrationally attached to a trade that can only lead to misery.
Teaching people to code is not done overnight, or after a few lessons. All this will do is create a bunch of people who "think" they can code, which is annoying to those of us who know how to code.
There are three kinds of falsehood: the first is a 'fib,' the second is a downright lie, and the third is statistics.
Coding is for retards
Dang kids, get off the lawn.
I was coding in Basic in 1978.
And it was a well-established language even then- about 15-20 years old at that point I think.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
The acronym BASIC was chosen for a reason, it is very basic and for the most part fairly simple to master while getting results quickly. That is why I had no real problems to pick up VB6 way back, but gave up on the various C dialects, anything .NET, and above all Java, which combines the nastinesses and complications from all programming languages into one nice packet.
BASIC was the right middle ground between easy to learn but quickly becoming useless (such as Logo or more recently Scratch) and very difficult to master but quite powerful (such as C, Java). Maybe Python fits in the middle and definitely PHP except that the hard core dev gurus point to the door when you mention you like PHP.
The problem with this is that the person will think of processors as state machines, black boxes with switches you set.
While it is absolutely essential that the person programming has the mental concept of a black box that executes instructions, does actions.
Programmers without the idea of the executing of instructions instead of a state machine have a very difficult time writting good code.
They don't use the tools (programming concepts) right.