4 ms·
I honestly can't think of anything more "missing the entire point" of a language like Logo than "I could write in assembler faster...".
by kjs3 7y ago
I honestly can't think of anything more "missing the entire point" of a language like Logo than "I could write in assembler faster...".
- zozbot234 7y agoWhy? 8-bit assembler was simpler and easier to learn than most programming languages. It kinda had to be, given the constraints on CPU's at the time. (And drawing text or graphics was simply a matter of setting values in a memory-mapped frame buffer. Quite trivial, overall.)
- kjs3 7y agoWith all due respect, bullshit. Preface: I go back to the 70s in programming. I've done 8-bit on 8080/Z80, 68xx/68hc11, 8051, SMT8, 6502 and 2650. I've taught programming. Let's ignore the challenge of finding an assembler running on a common 8-bit home computer and getting it running and how much the early ones sucked. Let's ignore how little doco there was for those early 8-bits (no internet, remember). Let's ignore how user-hostile the debugging and error messages were. Was it easier to explain to a kid "repeat 4 [forward 50 right 50]" or a bunch of memory pokes and all the boilerplate required to get an assembly language program to do anything. 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.
- zozbot234 7y ago> Was it easier to explain to a kid "repeat 4 [forward 50 right 50]" or a bunch of memory pokes and all the boilerplate required to get an assembly language program to do anything. 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.
- kjs3 7y agoI think Logo is a useful middle ground for novice programmers. But by all means, if you want to do Forth, do Forth. Then you can have all the advantages of the Forth peanut gallery telling any kid that doesn't get Forth they're too stupid to understand computers and all the other toxic baggage that comes from that ecosystem. 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.
- mimixco 7y agoI concur. The takeaway from LOGO is the idea about what computers can do and how you, the programmer, might approach that. It's a language designed for pedagogy. Programming in LOGO isn't about the language -- or any language, really. 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.
- DonHopkins 7y agoThen you'll love PostScript! (I sure do.) It's like a cross between Lisp and Forth. And it's homoiconic like Lisp, so the PostScript code: { 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-october-1989-19e2dfa4d91e 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 ][.)
- pvg 7y agoI go back to the 70s in 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.
- DonHopkins 7y agoFORTH is the ultimate macro-assembler! 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 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://donhopkins.com/home/code/tomt-cam-forth-scr.txt https://en.wikipedia.org/wiki/Cam-6 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 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.
- DonHopkins 7y ago]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/apple-mini-assembler/ https://www.callapple.org/vintage-apple-computers/apple-ii/a...
- zozbot234 7y agoInteresting. Looks like $FDED maps to a CHAROUT routine on the Apple ][, so this should print out the character map in an endless loop?
- DonHopkins 7y agoThat's right. My "go-to" obnoxious assembly language program I could type in from memory was an infinite loop that screeched the speaker by loading my favorite io address $C030 at an ultrasonic rate. !0: LDA $C030 ! JMP $0
- lakkal 7y agoI had a similar one I'd type in hex at $300, something like: CALL -151 300:B5 00 20 ED FD E8 AD 30 C0 4C 00 03 300G (that's a recreation I just worked out, but I think what I used to use was a little different - I forget what technique I used to use to get a semi-random character in the accumulator for it to print) This filled the screen with scrolling garbage while buzzing the speaker.
- klotz 7y agoThank you Don! I was going to comment that I wrote a 6502 assembler in Logo for the Apple II and the C64 and it shipped with it and it was documented how to write in assembler. I was hoping to hear some kid learned 6502 assembler from it. That counts you out since you already knew 6502 assembler.
- dang 7y agoHey, could you please not cross into personal attack, regardless of how wrong someone is or you feel they are? As you know, we're trying hard to avoid that kind of thing here. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- ken 7y agoI was maybe 8 or 9 at the time. I guarantee I missed 'the point' of a lot of things at that age! Shoot me. Even today, though, if you told me there was a great new programming language, but I had to wait a minute every time I made a change before running my program, I don't imagine I'd be terribly excited to learn it. Right next to this on HN is a 2014 article by WalterBright that reports "compiler speed matters a lot". What's the last compiler you used that spent 60 seconds compiling a single file?
- DonHopkins 7y ago>What's the last compiler you used that spent 60 seconds compiling a single file? Unity3D C# => CIL => il2cpp => emscripten => WebAssembly. ;( Nowadays, we compile a single file with many compilers. And you change one line, then you have to recompile and repackage the whole chain.