In 1948 zei Von Neumann:
Over een paar jaar is de rek er uit en zullen we computers niet veel sneller meer kunnen maken: De natuurkunde staat gewoon niet toe dat we de boel nog sneller maken. Maarja, zo'n statement kan enorm lullig klinken zeg vijf jaar vanaf nu.
Zo'n 17 jaar later is Moore met een regeltje gekomen wat met kleine aanpassingen gewoon prima toepasbaar is op de periode 1948 - 2018.
En gedurende de hele zeg 1970-heden periode heb je af en toe mensen die Von Neumann napraten, maar dan zonder dat laatse zinnetje. Die moet je negeren, want ze hebben geen gelijk. Daar is al ruim vijftig jaar bewijs van.
Dus dat harddisks zo'n 1000x groter worden is een kwestie van 20 jaar. Een factor miljoen kost 40 jaar een factor 1.6 miljoen ongeveer 42 jaar. De "constante van moore" zoals ik hem maar even noem, zou best iets kunnen afwijken van de praktische, afgeronde waarde van 1000 per 20 jaar. En dan is die 1.6 miljoen niet in 42 jaar tot stand gekomen maar in 37-47 jaar. Maar het zal niet veel schelen.
En dan moet je inzien dat het coderen van de flashgrootte als floating point getal (met in mijn voorstel 7 bits exponent en 1 bit mantissa) ruwweg 240 jaar mee zal gaan. Voor harddisks is die 1 bit mantissa net niet genoeg. Maar met twee bits mantissa zit je met 8 bits totaal nog steeds aan 120 jaar levensduur van zo'n size identifier. Echt vijf minuten nadenken en je kan zoiets toekomstbestendig maken.
Waar vroegere programmeer-acties een 12V nodig hadden die je extern moest aanbieden, wordt die tegenwoordig gewoon door de chip onboard gemaakt. Dit maakt "in circuit programming" en "self programming" makkelijker. Het gevolg is dat het programmeer-probleem degradeert tot: hoe krijg ik de data in de chip en communiceer ik over timing en succes.
Goed. Een gui wil misschien de namen van bitjes in "eflags" registers kunnen aangeven. Dan moet je je gui upgraden als je daar gebruikersvriendelijk mee om wilt gaan. Maar "kan nieuwe chip niet programmeeren" zou al 20 jaar verboden moeten zijn.
Atmel had eerst een "flags" register. Toen er meer dan 8 bits nodig waren een lflags, en hflags. Toen 16 onvoldoende was, kreeg je "eflags" er bij. Hoeveel ze er nu weer bij geprutst hebben weet ik niet. Maar de technische implementatie is dat er een adresspace is, gewoon met adressen. 0-1-2 is lflags, hflags, eflags. Hoe moeilijk is het om dit een flags-ruimte te noemen, zeg 1024 bits te definieren en te zeggen: "Diverse chips houden op met het implementeren van deze bits op varierende adressen. 2-3 zijn typische getallen heden-ten-dage." Met een simplele extra regel: "je kan de chip niet bricken met bit 7 van een onbekend adres" betekent dat een algemene programmer kan testen hoeveel er geimplementeerd zijn.
vijf minuten nadenken en je hebt iets wat toekomst bestendig is.