6 ms·
Maybe I am a bit sentimental here but I found the low-level tinkering I did with computers during school much more interesting than the high-level things I lear
by _Microft 7y ago
Maybe I am a bit sentimental here but I found the low-level tinkering I did with computers during school much more interesting than the high-level things I learned to do later. Things like toggling the keyboards LEDs for the very first time felt just great. That reminds me how easy (QBasic!) it was to get started with it. I think it was the lack of abstraction and the verbosity and 'speaking' names of some statements (select case, goto) that made it so accessible for someone with no teacher and without any prior experience with programming. Even gotos themselves might have helped on that journey as they made the control flow much more comprehensible. Stuff happens in your program and IF you want it to happen again THEN GOTO the beginning. That it worked out of the box and didn't require any setup might have contributed as well.
- gdubs 7y agoSteve Woz talks about this in his autobiography. That basically, today’s generation is mostly missing an experience he was lucky to have: a complete understanding of a machine and all of its parts.
- dragontamer 7y agoI respectfully disagree. Arduino can be fully understood from the ground up: from voltage-levels, to the clock, to the simple assembly language (and compiler). The AtMega328p is an incredibly simple design... rugged enough to withstand a variety of voltages (1.8V to 5V inputs), and even able to be used on a breadboard. Even ignoring Arduino, the "toy computers" that people make today are Minecraft Redstone, Factorio circuits, and Dwarf Fortress river-contraptions. Complete computer architectures built up from the fundamentals for the video-game computer scientists of the future. People play games and use toys because its possible to understand everything. EDIT: Oh, and the TI-83 calculator. Overpriced obsolete garbage of a calculator, but since its the "standard" calculator of High School, plenty of children will get the opportunity to really learn that machine if they so choose. There's something to be said about the TI-83 community keeping that Z80 chip so well documented and alive...
- Sileni 7y agoExcept you have no reason to use those things, unless you specifically go out of your way. In Woz's day, you HAD to work on that level to work with budget systems. The same opportunity may exist, but the same motivation does not.
- dragontamer 7y ago> Except you have no reason to use those things, unless you specifically go out of your way. In Woz's day, you HAD to work on that level to work with budget systems. In Woz's day, most people were playing outside yelling "NERD" at the people who were working on computers. No one had to stay inside to practice coding or working with the machine back then. I think people forget how antisocial it was considered to actually work on computers back then. I got the tail end of it as a 90s kid, but it was probably much worse in the 70s and 80s. -------- In any case, I'd say its cheaper and easier to know about things today than it was back then. Sure, select communities would be photocopying the Unix source code (ex: Lions Commentary on Unix), but you still had to hope such tomes existed in your local library. It wasn't like today where you can just download obscure documentation on chips for free and instantly. Do you want to know how AMD GPUs work? Just read the docs. https://gpuopen.com/wp-content/uploads/2019/08/RDNA_Shader_ISA_5August2019.pdf https://gpuopen.com/wp-content/uploads/2019/08/RDNA_Shader_I... You used to have to pay money to get printouts of such docs. I'm pretty sure my local library wasn't holding holding the processor manuals or schematics for the Amiga back then. Realistically speaking, if its the 80s, you were getting by on the Commodore 64 User's guide alone. https://www.lemon64.com/manual/ https://www.lemon64.com/manual/ Frankly: There's far more information available today for Rasp. Pi or Arduinos than the 192-page Commodore 64 book (as influential as the Commodore 64 book was... it was still one beginner-level book).
- basementcat 7y agoThe C64 Programmer's Reference Guide was available at many bookstores; is the GPU of the Raspberry Pi documented?
- 7y ago
- EvanAnderson 7y agoI got a chance to ask Woz a question at a speaking engagement. I asked him what he thought about the fact that I don't own my IOS device like I owned my Apple II computers-- that I can't tinker with the software and hardware and do what I please with it. His reply, which I don't recall verbatim, was to the effect of: "We have to have locked-down devices today so we can have security." It made me very, very sad.
- Enginerrrd 7y agoMan that's a lame response. I really have to wonder if we didn't just get incredibly lucky that the initial culture of hackers that built the open source community and internet infrastructure was one that was very non-commercialized. I really have to wonder if all the companies that are thriving now on locked down hardware and proprietary systems, the same ones pushing everything to their proprietary cloud platforms would even be here and able to do half of what they do thanks to that culture of selflessness. If it didn't already exist and have such momentum, I'm really skeptical that anyone would reproduce the concept of free and open source software in today's day and age.
- dharmab 7y agoI mean, your Apple II wasn't constantly connected to a network full of hostile actors and executing code downloaded over the network without explicit confirmation.
- CalRobert 7y agoSeriously! I really miss setting IRQs with jumpers (or, on the fancy stuff, DIP switches). It was fascinating having an excuse to learn how interrupts worked.
- tenebrisalietum 7y agoWell, it's cool that these days you can learn Javascript and have your code do something on anything with a browser, which includes almost all computers and phones. Abstraction isn't all bad.
- Sohcahtoa82 7y agoI miss having low-level access to video memory. I've kinda wanted to experiment with graphics in a way that would require me to calculate individual pixels, but AFAIK, unless you use pixel shaders, it is ungodly slow. Used to be that you could color a pixel blue with a single MOV instruction. Now, you either use a graphics API that has a SetPixel function (Which is incredibly slow for drawing full-screen graphics), or create a byte-array of some sort that gets translated, which while faster, still isn't fast enough.
- vardump 7y ago> or create a byte-array of some sort that gets translated, which while faster, still isn't fast enough. Except, of course, about 2-3 orders of magnitude faster than the best SVGA era cards were. I mean, you got many GB/s bandwidth now. Yes, that Tseng Labs ET4000 was amazing, with 7 MB/s over ISA, beating most (all?) other cards I bothered to try back then. Or some basic (but fast) later PCI card like S3 Trio 64+ 50 MB/s (IIRC). PCIe 3.0 can do up to 16 GB/s over 16 lanes. Even if it were 7 GB/s in practice, we're still talking about 1000x improvement compared to the best ISA SVGA card. You have also bus mastering and ability to map buffers that way that GPU itself has access to the data. Setting one pixel might be slow. But who cares when you can just have your "framebuffer" in system RAM and "MOV" away!
- ranger207 7y agoYou could try old systems. The GameBoy Advance is reasonably well-documented[0] (enough for me to write a simple game for it over the summer as my first real C program), and a hacked 3DS[1] can run the game on real GameBoy hardware through Virtual Console injection. [0] http://coranac.com/tonc/text/ http://coranac.com/tonc/text/ [1] reddit.com/r/3dshacks
- mntmoss 7y agoYou have ample room to define the hardware you want to see, though. [0] Setting bytes in a buffer isn't some ultimate graphics abstraction: it's just one way to express it at a low level, and only capable of drawing anything of interest in the sense that a Turing Machine can compute anything that can be expressed digitally. You're gonna crave higher level concepts really quickly. And going higher level does come with its own limits, but that's always been the case. Every sufficiently complex production graphics renderer will eventually develop some kind of hybrid approach to the data representation while achieving the necessary flexibility: Simply define line segment drawing, and boom, suddenly you have a vector-to-raster pipeline. Or, maybe you have a sprite all laid out perfectly for fast memory copies. But then you have to clip it against the screen bounds, add a mask so that it can overdraw, and so on...and so you end up carrying geometry and color data around too. And if you desire to do something fancy like scale and rotate it, you will probably define it not in terms of bytes but in terms of linear algebra, so now you have a requirement for some matrix math. And the only way in which we're more limited is when we start talking about distributing the work, creating products. Then we start saying, "well, that API doesn't let me dip into the hardware to create the abstraction I need." But that's because we moved the goalposts from "it can run on a computer" to "it can run on many people's computers, in many different contexts." And back in the day that really was never a guaranteed thing. There were stark differences between platforms, and many ports amounted to remakes. So, then, does it matter? Does "minimalism" in programming even functionally exist, given our unsatiable appetite for dependencies? [0] https://prog21.dadgum.com/66.html https://prog21.dadgum.com/66.html
- fortran77 7y agoI was always playing with electronics in school. A student project, or my friends' project, or some project that came up at a computer lab class. My mom used to make me play with calculators and other electronic devices. I'd sit down, turn off the lights and turn on a few lights, and play with a little bit of circuitry on a breadboard until it became my hobby. I was always fascinated by them and always wanted to learn how to program computers. But I wanted to do something more complex than just play with my calculator. I wanted to learn how to program. I started using the computer in the fourth grade, and my friends and teachers were very supportive. But I wanted to do something more complex than just play with my calculator. I wanted to learn how to program. My first year of high school was an amazing experience. In college, I worked as a web designer for about two years. Then I switched to an education department and did research on computers, and also spent some time working on my own, building a web application, which I called "Math Tutor". After a few years of designing and developing web apps, I decided to go into education full time. As a teacher, I've seen the power of computer programs and how they can be used to enhance learning.