You're special, of course...I get it...superior in your own mind. But based on my own experience, for the vast majority of lesser humans by your measure, Logo is a lot easier than asm as an intro to programming.
You're special, of course...I get it...superior in your own mind. But based on my own experience, for the vast majority of lesser humans by your measure, Logo is a lot easier than asm as an intro to programming.
Like the poster at the start of the subthread, I was a kid with an 8-bitter and my impression of Logo at the time was similar. It was neat, I read some Logo books but it was too slow. For a lot of things, BASIC was too slow as well and so like many self-respecting nerdkids, I learned assembly and used it a lot. This was typical and there were so many of us, we still regularly cross paths in HN threads like this, mumbling 6502 opcodes at each other.
The assembler is just written in and integrated with FORTH, so you have the full power of the FORTH language to write macros and procedural code generators!
And it makes it really easy to call back and forth ;) between FORTH and machine code, with convenient word definitions for accessing the FORTH interpreter state.
Here's part of my SUPDUP terminal emulator for the Apple ][ with some 6502 code for saving and restoring lines of text in a bank-switched memory expansion card:
https://donhopkins.com/home/archive/forth/supdup.f
Here is a great example of FORTH and 8086 assembly code for hardware control (written by Toffoli and Margolus for controlling their CAM-6 cellular automata machine hardware), starting with "CAM driver routines" and also "creates fast code words for picking out bits of variable X":
https://donhopkins.com/home/code/tomt-cam-forth-scr.txt
https://en.wikipedia.org/wiki/Cam-6
Rudy Rucker wrote about learning FORTH just to play with that hardware:
https://www.fourmilab.ch/cellab/manual/chap5.html
>Starting to write programs for the CAM-6 took a little bit of time because the language it uses is Forth. This is an offbeat computer language that uses reverse Polish notation. Once you get used to it, Forth is very clean and nice, but it makes you worry about things you shouldn't really have to worry about. But, hey, if I needed to know Forth to see cellular automata, then by God I'd know Forth. I picked it up fast and spent the next four or five months hacking the CAM-6.
>The big turning point came in October, when I was invited to Hackers 3.0, the 1987 edition of the great annual Hackers' conference held at a camp near Saratoga, CA. I got invited thanks to James Blinn, a graphics wizard who also happens to be a fan of my science fiction books. As a relative novice to computing, I felt a little diffident showing up at Hackers, but everyone there was really nice. It was like, “Come on in! The more the merrier! We're having fun, yeeeeee-haw!”
>I brought my AT along with the CAM-6 in it, and did demos all night long. People were blown away by the images, though not too many of them sounded like they were ready to a) cough up $1500, b) beg Systems Concepts for delivery, and c) learn Forth in order to use a CAM-6 themselves. A bunch of the hackers made me take the board out of my computer and let them look at it. Not knowing too much about hardware, I'd imagined all along that the CAM-6 had some special processors on it. But the hackers informed me that all it really had was a few latches and a lot of fast RAM memory chips.
One would think that there's a useful middle ground. My favorite approach would be a FORTHy, postfix-based language where you'd write something like [|50 fd 90 rt] 4 repeat. Something like that would be comparatively easy to implement using a threaded-code approach on a 8-bit machine, which would provide an easy segue into lower-level, assembly programming.
Or you can teach a language that caters to programming novices and let them decide if they want to go down towards bare metal or up to more abstract languages or stick to apps like Excel because they really aren't cut out to be programmers.
I prefer the non-screw-you approach.
Having done exactly as you say, go down to bare metal programming at IBM and up to full stack web stuff with multiple layers of "high level" languages, its really one's conception of computing that is the biggest determinant in the kinds of software one can write. It's not the tools themselves.
{ 4 {50 fd 90 rt} repeat }
is actually an executable array, a polymorphic data structure, the moral equivalent of JSON.
https://medium.com/@donhopkins/the-shape-of-psiber-space-oct...
PostScript also has a very nice standard graphics library. It's not turtle graphics like Logo, but it's easy to implement a turtle graphics library in PostScript in a page or so of code.
(Not that PostScript graphics would run very fast on an Apple ][.)
]INT
>CALL -151
*F666G
!0: INX
0000- E8 INX
! TXA
0001- ·8A TXA
! JSR $FDED
0002- 20 ED FD JSR $FDED
! JMP $0
0005- 4C 00 00 JMP $0000
! BRK
0008- 00 BRK
https://www.callapple.org/vintage-apple-computers/apple-ii/a... !0: LDA $C030
! JMP $0This filled the screen with scrolling garbage while buzzing the speaker.
As you know, we're trying hard to avoid that kind of thing here.