Live data from Hacker News

Just give me a simple CPU and some I/O ports

jgc.org

1–10 of 56 posts

Re: Just give me a simple CPU and some I/O ports

#2
Thank you for that, that echoed my own thoughts better than I could have ever put them into words.

My frustration with the amazing amounts of bloat that you have to deal with in order to do the simple stuff knows no boundary.

A PIC chip has more power than the machines that made Apollo 11 possible, I wonder if with todays technology we'd be tempted to go for some 'high tech' solution and mess it up because of that.

In the mid 80's I worked for a dutch artist on a project called 'SonoMatrix', a room full of speakers with a bunch of computer controlled tape recorders, amplifiers and channel switches attached to it.

The whole thing ran of a beeb, the user & printer port. We designed the hardware, wrote the software (both the controller in 6502 assembler and the user interface) and built the whole thing.

If I had to do that today I wouldn't even know where to begin...

Re: Just give me a simple CPU and some I/O ports

#3
I've been having that exact thought for quite some time now.

It seems that the art of programming - or at least, the practice of it, equivalent to "proficiency" or "competency" - has shifted from fundamentals of the machine and the language's intrinsic semantics, which allowed you to actually create something anew, to spending 90-95% of the time trying to figure out someone else's API. In other words, the real skill now is reading reference material, and trying to figure out how to fashion a bunch of opaque, prebuilt Lego blocks together.

It's just no fun that way, and it relies on very different mental faculties than the ones present in fundamentals-based programming. Writing low-level backend processes in C may have taken a lot more work for boilerplate and nontrivial data primitive/data structure support, but it was real creation - using the actual power of the language to get something done. Now it's all about figuring out how the SynchronousIOGoatSoapBubbleVectorManagerFactory interacts with the SynchronousIOGoatSoapBubbleVectorReflectorParserTransformer.

Re: Just give me a simple CPU and some I/O ports

#4
One thing that I have found that helps with exactly this situation, and I have suffered it as well over the years, is to move your focus from one end of the spectrum to the other. That is, if you have to spend your daylight hours grokking another mans API, then spend a few hours in the evening, or during off-time, hacking on your own embedded project with the Arduino. I've got tons of projects around, all of them slowly making progress admittedly, with the purpose of getting me out of my funk .. I don't actually code my hobby projects for any other reason than to make my professional work (embedded systems for safety critical applications) a little more enjoyable.

It sure is fun to dive into Android, for example, and get some context, and then another week spend some time with the AVR compiler.. then the Beagleboard, etc.

Re: Just give me a simple CPU and some I/O ports

#6
I've felt exactly the same way in the last few years.

A complete understanding of the whole system in every detail is not so necessary for me. I just want to focus on the things I'm trying to accomplish without the need to constantly lookup API documentations and writing glue code.

That's why (for my own projects) I always end up making my own tools and coding almost all the stuff I need by myself.

But our culture is going in the opposite direction (http://www.wisdomandwonder.com/link/2110/why-mit-switched-fr...).

Re: Just give me a simple CPU and some I/O ports

#7

I've been having that exact thought for quite some time now. It seems that the art of programming - or at least, the practice of it, equivalent to "proficiency" or "competency" - has shifted from fundamentals of the machine and the language's intrinsic semantics, which allowed you to actually create something anew, to spending 90-95% of the time trying to figure out someone else's API. In other words, the real skill…

There is still plenty of work to be done on impeded systems for sensors and other simple devices. Some of theses systems are powered by a watch battery for years, they might have more or less processing power than an apple II but far less ram which tends to limit code bloat.

EX: A new 8 bit CPU from 2008: The triple clock enables the selection of the most suitable clock frequency from 32.768 kHz, 500 kHz, and 4 MHz according to the processing type, thus minimizing the operating current. These power-management functions help prolong battery life and reduce product size. ... RAM 2 KB (http://www.okisemi.com/en/866/869/000576.html) And yes some people are really working on an 8 bit cpu at less than 40khz due to power limitations.

Re: Just give me a simple CPU and some I/O ports

#8
post #7

I've been having that exact thought for quite some time now. It seems that the art of programming - or at least, the practice of it, equivalent to "proficiency" or "competency" - has shifted from fundamentals of the machine and the language's intrinsic semantics, which allowed you to actually create something anew, to spending 90-95% of the time trying to figure out someone else's API. In other words, the real skill…

There is still plenty of work to be done on impeded systems for sensors and other simple devices. Some of theses systems are powered by a watch battery for years, they might have more or less processing power than an apple II but far less ram which tends to limit code bloat. EX: A new 8 bit CPU from 2008: The triple clock enables the selection of the most suitable clock frequency from 32.768 kHz, 500 kHz, and 4 MHz a…

Don't confuse powerful with power-hungry

Re: Just give me a simple CPU and some I/O ports

#9

I've been having that exact thought for quite some time now. It seems that the art of programming - or at least, the practice of it, equivalent to "proficiency" or "competency" - has shifted from fundamentals of the machine and the language's intrinsic semantics, which allowed you to actually create something anew, to spending 90-95% of the time trying to figure out someone else's API. In other words, the real skill…

I know where you're coming from, but I wonder if this observation is just a classic language rant waiting to be born. In other words: I wonder if the problem is not that all higher-level APIs necessarily suck, but that the ones you have suck, and your language platform is too impoverished to profitably work around that.

API design is hard. It's like composing poetry, or trying to design the game of chess. ("I know, the queen should be able to jump like a knight if she's on a white square!") It is bound to take thousands of little trials and errors in order to get things right. And my suspicion is that certain languages and platforms make it especially difficult to tinker with existing APIs, or wrap them while minimizing the leaks, or replace one part of them and leave the others alone, or build them in a way that makes it easy to compose complex higher-order objects and behaviors out of little pieces. When working with those systems, the most efficient way to solve any given problem is to just slog through, trying to make lemonade out of slightly-spoiled lemons by hand-sorting and hand-squeezing each lemon. And that can be effective -- at least it's more efficient than trying to use genetic engineering to construct a lemon out of raw amino acids -- but it's not always fun.

There are high-level APIs that are a joy to use. I love jQuery, for example, which is a layer of Javascript atop more Javascript atop an absolutely scary C program atop Unix or Windows and yet somehow manages to feel lightweight and elegant and composeable. But for every elegant API there are dozens of clunky ones.

The lovely thing about low-level C or assembly is that the building blocks tend to be simple, understandable, and composeable -- and, if they aren't, it's not so much work to rewrite them. (Though, as jgc points out, in modern times even assembly is hardly immune to complexity. The idiosyncrasies of modern processor architectures are so baroque that it takes years for optimizing compilers to be refined to take advantage of them.)

Post reply on HN