This is just for fun. I have noticed over the last ten years or so a mildly disturbing trend towards reinvention in unexpected places.
Take RISC and computer architecture. In early texts and papers there was the monolithic memory model and the Harvard Architecture (code and data on separate busses). The term Harvard is still used. However, another distinction, single address versus dual address or two address architectures seems to have been forgotten then renamed the very awkward load/store architecture versus CISC. A distinction without a difference. I know what they MEAN, but CISC has to load then store for a move, they just are not separate instructions.
Recently I began running across human interface guidlines like "The Principle of Least Surprises" with nearly identical examples to Jef Raskin's (creator of the Mac project at Apple) published work from the 60's to his untimely recent passing. Jef's principles of Monotony and Modelessness describe the same thing but much more succinctly and include remedies.
I see the lack of background coming from places like the Ruby on Rails and other UltraHLL camps. I wonder why?
So I began wondering about the education of the modern hardware/firmware enthusiast. have they read what are now the classics? I see frequent questions on the most basic concepts. So I have few questions. I don't know how to keep it anonymous unless you want to email me and I can keep totals. I guess to avoid lopsided results readers would have to answer i the negative or positive so we don't just get responders who fit the classical stereotype.
By studies I don't just mean a college course, but fairly rigorous study of some sort.
1) Are you a self-taught programmer? 2) Are you a self-taught hardware designer? 3) Have you studied "The Art of Computer Programing" by Knuth? Which volumes 4) Have you studied "Algorithms + Data Structures = Programs" by Wirth? 5) have you studied books by Dijkstra and Hoare? Which ones? 6) have you studied uC/OS by Labrosse? 7) Have you studied numerical analysis? Numerical methods for engineering and physics? 8) Have you studied analog circuit theory? (e.g. can you write the complex description of a filter and solve the equations of the simpler ones? Are you familiar with the Ebers-Moll model of the transistor? Are you familiar with electron statistics and the limits on measurement due to quantum mechanics? 9) Can you translate truth table into logic gates? Use a simple logic descriptor like PALASM for PALs and GALs? How about VHDL or equivalent for gate arrays? 10) Do you like being responsible for a well defined subset of a project, or the whole thing from bottom to top?Of course you don't need to have this background, but it was considered only part of the basics 20 years ago (Labrosse is newer). Not having this background or equivalent means reinvention or inferior work (and the occasional brilliant new idea) and it also means great difficulty in communicating with us dinosaurs.
This isn't new of course. I was at a company in the 1980's that had a contest to see who could write the fastest text search algorithm. I was doing hardware bring-up but I gave it a shot. Guess what? I was the only one on a staff full of IV League computer science grads who had read Knuth! It was a TKO and my search algorithm shipped in the product.
Have fun. Give it some thought. Add some items of your own.
-- Charlie Springer