summaryrefslogtreecommitdiff
path: root/staging/software=hardware/software=hardware.org
diff options
context:
space:
mode:
authorDuncan Wilkie <antigravityd@gmail.com>2024-02-01 19:49:59 -0600
committerDuncan Wilkie <antigravityd@gmail.com>2024-02-01 19:49:59 -0600
commit69a39773c604284752a07d172cf8583a43199064 (patch)
treed72020fd35199fb9393262f2fbe0a48ddaaddb07 /staging/software=hardware/software=hardware.org
parent17b526a39faecf6497ef268bad0cf3b90313d730 (diff)
Patterson BTFO post
Diffstat (limited to 'staging/software=hardware/software=hardware.org')
-rw-r--r--staging/software=hardware/software=hardware.org58
1 files changed, 58 insertions, 0 deletions
diff --git a/staging/software=hardware/software=hardware.org b/staging/software=hardware/software=hardware.org
new file mode 100644
index 0000000..ef75cfa
--- /dev/null
+++ b/staging/software=hardware/software=hardware.org
@@ -0,0 +1,58 @@
+
+#+TITLE: Software Equals Hardware
+#+DATE: <2023-11-19 Sun 06:36>
+#+TAGS: Software, Computer Architecture, Electronics, Philosophy, Engineering
+
+80% of the debate about software engineering best-practice concerns the means to ensure so-called "modular" code. The other 20% is about a supposed dichotomy between developer comfort and program performance.
+
+I think the reason that we disagree about these concepts is that
+1. there is a division between computer architects and computer programmers, and
+2. those divided have decided they work on fundamentally different problems.
+
+* The Hard Problem of Reprogrammability
+
+Why do we need software at all?
+
+In the evenly-rotating economy, every algorithm would run on its own application-specific computer (not necessarily electrical; not necessarily digital). We, by contrast, have uncertainty about what algorithms we want to run. Ergo, we need reasonably generic computers that we can reconfigure to run whatever algorithms we decide to use. This is a Hard Problem™.
+
+Historically, computer architects have
+
+We have historically decided that all data and programs we want to run can be encoded as natural numbers, and noticed that natural number operations can be implemented by register machines, and noticed that register machines can be implemented by Boolean functions, and that Boolean functions can be implemented by electrical semiconductor circuits, to great success.
+
+The original motivation for this is Gödel proof numbering.
+
+This is why characters are encoded; this is why one-dimensional syntaxes are far more convenient.
+
+* The Asymptotic Illuminati
+That there isn't a canonical way to implement a given algorithm poses problems for the theoretical analysis of procedures. The conventional solution is wanting for many practical purposes (it at least needs to be complemented by discussion of constants).
+** Their Propaganda
+Algorithmics in books.
+** What They Don't Want You To Know
+Algorithmics in practice.
+** The Red-Pill Approach
+Analyzing algorithms by dependently typing over the machines they execute on, comparing machines by algorithmic performance, etc
+
+* Hardware Mythologies
+Computer architects have decided that programmers should be kept out of their turf.
+** Behind the ABI Veil
+Modern (RISC) computer architecture, especially the von Neumann bottleneck.
+** Our Capricious Gods
+*** The L Trinity
+Cache locality, especially practical problems.
+*** Ghosts of Dead Programs
+Branch prediction
+** Dead Cults
+High-level language architectures and reconfigurable computing.
+Noticing what von Neumann machines do well: extreme transistor density, and highly branching code.
+** The Neo-Pagans
+Modern accelerators
+*** Seizing the Means of Pipelining
+CISC cache-manipulation instructions
+*** Holors Above All
+Modern GPU acceleration
+
+** Dialectic Synthesis
+Reconfigurable register machines (a von Neumann/Harvard processor and an FPGA, where the programmer can create new machine instructions that are implemented in the FPGA).
+
+* Software Mythologies
+** The Messiah: GHC Optimization Directives