This is an interesting interview with Dave Patterson. He covers a lot of history including the basics of microprocessors, the CISC vs RISC debate, and why RISC has largely won.
There is also a very interesting section on simplicity:
The temptation in engineering – it’s kind of easy to make things more complicated – it’s harder/more difficult to come up with a simple, elegant solution …
Dave also discusses the end of Moore’s law and how the industry will need to shift into Machine learning and other areas to continue to make progress.
There are many crucial technical concepts such as instruction set architecture
and endianess that Computer Scientists and Engineers must understand. The
general principles that guide processor design, however, are perhaps the
most compelling in their application to our daily design process. In the spirit
of the design principle “Simplicity favors regularity” should programmers make
their schemas as rigid as possible, preferring to define fewer types of data
structures and generalizing them to many tasks in a system, even though it
might require more lines of code?
This is an interesting question – one I have been pondering lately in the design of data structures for Simple IoT. So far, this approach seems to be working out well. Sometimes you do need to write a few more lines of code to translate between a generic datatype and something specific, but the bulk of the application can remain untouched, which is a huge benefit.
The advice to keep Go interfaces small also follows this line of thinking.