378 karma · joined October 24, 2011
That was a powerful hacking/debugging/programming utility. I am still proud of the HILOAD command which was capable of loading files from tape in any condition: if any error was found, this command would fill a separate buffer with the relative address of every error. Then you could use other commands to inspect the data and painstakingly recover it by guessing the correct value for damaged bits or bytes (they utility could dump memory in many ways, including some popular encodings of sprites for games). There was also a whole-block SHIFT command useful for this task because a loading error could make all following bytes to be shifted left or right some bits, because the tape data format didn't have a byte-boundary delimiter, it was just a stream of bits.
The IX/IY registers are heavyweight but one needs to remember the "best-practices" of that era and architecture. In well optimized Z80 code, the IX/IY registers are often used for critical "global variables" that you can keep all the time in registers across many subroutine calls (think "segment registers": base pointers for important tables or buffers that are not fixed addresses through the whole program). Their performance beats needing frequent indirect load/store from pointers stored in memory via other registers that often need to be preserved/restored.
You can also use some relatively low-latency instructions that involve IX/IY, in particular PUSH/POP were often used in optimized buffer-copy routines: you burn all registers to fetch up to 20 bytes of contiguous data with POPs, then you patch the SP register and issue PUSHs in inverse order to store those 20 bytes in another location; loop if needed for >20 bytes, even with loop overhead this is faster than LDIR/LDDR. Games used that trick all the time for block copies like sprite bitblt or double-buffer animation.
I'll be more convinced by realistic benchmarks, and yes the Fib2 that I quoted before is not impressive even for the standards of CPU microbenchmarks, but maybe someone would know some real-world code that had good ports to both CPUs and could give a better verdict. Unfortunately games are never good choices, the 8-bit systems had radically different architectures for essential features like video and audio so "ports" were often full rewrites even at a high level like rendering strategies... there might be exceptions, like the AI component of a chess game.
For one data point in performance, theultimatebenchmark.org has some Forth benchmarks that apparently show a 4GHz Z80 beating the 6502 by 2X (best scores for each: mc-CP/M Z80 4Mhz / FIG-Forth 1.1 / Fib2 = 1m19s, Apple II 1Mhz / Apple GraForth / Fib2 = 2m19s).
Disclaimer: biased, veteran Z80 / ZX Spectrum programmer ;)
And to be fair with Asimov, he saw some of that for example with "U.S.Robotics", a fictitious private company that invented the positronic brain and had a monopoly on that business. Also, his Encyclopedia Galactica is the creation of a large group of "encyclopedists" who are basically academic elites, something we could see as a Wikipedia-like except that it wasn't produced by millions of joe schmoes but rather by a kind of priesthood of professional intellectuals. (Foundation makes these people work in a centralized organization, but that happens in a late period of the galactic empire, it's my impression that the origins of the Encyclopedia are way more descentralized.)
And then of course, the military chain of command is exceedingly good at diluting responsibility -- generals will demand results implying but not writing down how far commanders can go; soldiers and commanders will cross many lines which no colleagues will report() and no immediate superiors will punish; the press will be strictly managed to not see anything that "national security" doesn't need us to see so our own civilian population will be morally appeased that we're being righteous, everyone is happy.
() A few will do, and then they're jailed for life as traitors.
TLDR sorry James, we have tried the elegance of extremely simple and open language/runtime architectures, and that was always an abject failure.
And I don't necessarily agree with your preference. My family used to own a large, historical house that had a huge front wall because the terrain was very elevated from street level. And I can tell you from experience, most "graffiti" is worthless crap scrabbled by drunk teenagers without ANY artistic talent or ANY worthwhile message to the world. If you give graffiti a pass because there's the one-in-a-million Banksy, you should also tolerate ads everywhere because a few of them happen to be awesome.
Notice that "adult content" here means explicit sex, not things like artistic nudity that will continue to be allowed with an interstitial.
Remember that inequality was huge way before the industrial revolution. You know how feudalism worked, right? A few dozen filthy-rich noble families + 99% of population in abject misery, was the rule for most of Europe in the best part of the previous couple millennia. Situation improved with the ascension of bourgeoisie, but even that was limited to a small fraction of population that lived in big cities, in a time where almost everyone still worked the fields. The industrial revolution replaced old methods of economic exploitation with new methods, no big change for better or worse. Competition forced the bulk of industrial efficiency to benefit consumers; suddenly a good overcoat was not a luxury for the rich, etc. which started a virtuous economic cycle - and also meant that profit margins were NOT so fantastically big for capital owners. It's sure big fortunes were made by the barons of early factories and railroads etc., but the elites were already making tons of money before any new tech.
"people started to become aware of the inequality and the leaders and states started to see the result (in Russia and other countries) of this inequality being challenged."
People were always aware of inequality and injustice. The real change in the industrial revolution is that exploited workers were concentrated in cities, and even more, in companies / factories, so they could organize easily and fight for better working conditions, which was almost impossible for peasants living in tiny groups miles away from each other.
"What I believe has yet to be achieved is a balancing of the externalisation of costs with the need to build a system that is able to sustain itself. For the current system to survive, those who have need to find ways to increase the comfort and conditions of those who have not."
Agreed here. This balance is a never-ending struggle, any economic model is only sustainable when the bulk of society have disposal income to drive demand.
Not all static-typed languages are readable because they're not all explicit. In C++ for example, even the most trivial snippet of code can be obfuscated by all sorts of abuse: operator overloading, implicit calls to copy constructors, preprocessor macros, etc. Scala suffers the same problem, perhaps even worse, doing tons of stuff automatically i.e. in a way that's not obvious by just staring at a code fragment such as an individual method. Organizations that have success writing large-scale code in such languages [I can speak for Google here], typically have careful style guides that ban the bad stuff and are strongly enforced by code review process; but in that case you're not using language X anymore, you're using some "safe subset" of X.
Of course you can't have any high-level abstraction without some tradeoff of maximum explicitness; virtual calls for example make hard to know which exact code is invoked by "just staring" at an invocation. The trick is striking a healthy balance between power and readability. Java is not perfect in this criteria (it errs a bit in the side of caution), but it's certainly much better than any dynamic-typed language.
And when you compare this to ad blocking, hopefully you realize that ad blocking is not the most ethical thing to do; you are effectively stealing content. Most ad-supported websites clearly forbid this with TOS wording like: "The copying, reproduction, ..., or other use or change by you, directly or indirectly, of any such Website Content, including but not limited to the removal or alteration of advertising, is strictly prohibited" (Ars). Not all websites are good players either, but if the advertising practices of specific sites are bad then your only ethical choice is to not visit them at all.