All of the above are highly recommended, by the way.
Similar themes in Roger William's "The Metamorphosis of Prime Intellect"[3] (an AI accidentally takes over the universe).
1: http://gregegan.customer.netspace.net.au/DIASPORA/DIASPORA.h...
2: http://gregegan.customer.netspace.net.au/PERMUTATION/Permuta...
I wish more stories would start off with one magic point, cast one universe-altering spell, suspend my disbelief once, and then just deal with the consequences.
Yeah I hear people call this "hard sci-fi", but that's not really fitting. It can apply to any fiction. There's fantasy like Harry Potter where the world is just unbelievably inconsistent (as HPMOR loved to point out). Compared to, say, Mistborn (I don't read a lot of fantasy), which introduces its restricted magic system and more-or-less deals with it from there.
And the one big change can be huge, unrealistic, too! Like the Culture books - posit that we've got hyperintelligent friendly AI that can warp many dimensions at will - the rest fits in more-or-less from there; but no one would call Culture hard sci-fi.
> BLIT (which stands for Berryman Logical Image Technique) is a short science-fiction story written by author David Langford. It features a setting where highly dangerous types of images called "basilisks" have been discovered; these images contain patterns within them that exploit flaws in the structure of the human mind to produce a lethal reaction, effectively "crashing" the mind the way a computer program crashes when given data that it fails to process.
1: http://www.infinityplus.co.uk/stories/blit.htm
2: http://www.lightspeedmagazine.com/fiction/different-kinds-of...
Does Stross actually manage to use real theoretical CS in that series?
[0] http://www.antipope.org/charlie/blog-static/fiction/toast/to...
You can read a bit early on in the first book of the series where he talks a bit about this stuff, on Google books, page 17: https://books.google.ca/books?id=GfSGzhDcU2UC&lpg=PP1&dq=atr...
I think this subthread fills that desire nicely. :)
(Despite the domain name, it is a science fiction piece. Nature publishes short science fiction under their 'Futures' column.)
I think we'd all welcome a new, more accurate term, but no one has really come up with a good one. Maybe Applied Computational Philosophy?
The fatal error in computer science was that it modeled complex systems without truly understanding them. Computers simulated complexity. You might know more or less what was likely to happen. But the causes remained unclear. - Bruce Sterling, The Zenith Angle
I disagree.
Firstly "computer" used to mean the people that did computations, so, that untethers computation from the material doing those computations. And secondly, if you buy into the philosophy of it, computation is all around us, binds us in a way like the force in Star Wars.
And yet, mechanical, civil, chemical, and electrical engineers have made great strides without such understanding, in fields where it is truly impossible to fully understand or model the forces at work, the materials in play, the structures in shape, or the physics in motion.
They manage to get by on approximations, so that's not it.
Mechanics?
I agree that the term is used too broadly. I don't regard myself as a "Computer Scientist". I'd argue that "Software Engineer" is another term that is too loosely applied, although it does have a definition.
Its a nice quote, but science is all about modeling complex systems as a way of understanding them...arguably, human "understanding" of systems is just modeling of them.
Computer science is about as useful a term as polymorphism (borrowed from biology). It serves to put lipstick on a pig.
What if the science of physics started with the Grand Unified Theory, knowing what the fundamental properties & rules of the universe were? would it still be science as we then worked from both ends of knowledge (basics up and complexity down)? how then would it be different from "computer science", where we start both with the basics (0, 1, NOR) and from the complexity of the behavior we see & desire, working both toward the middle for it all to come together and function?
I'd say yes, and this article is representative of my thinking on the subject (easier than trying to write an essay in a HN comment).
You can argue that they're both not sciences, but not in the same sense.
If you have any doubts please browse a few back issues of 'Communications of the ACM'.
The 432 had incredible hype: "The vacuum tube, the transistor, the microprocessor - at least once in a generation an electronic device arises to shock and strain designers' understanding. The latest such device is the iAPX 432 micromainframe processor, a processor as different from the current crop of microprocessors (and indeed, mainframes) as those devices are from the early electromechanical analog computers of the 1940's." [2]
This 32-bit machine had some very unusual features. It implemented support for objects at the hardware level, with access protection for on a per-object basis. Even the kernel doesn't have access to everything. The world would be much more secure with no more buffer-overflow exploits.
This chip was started before the 8086 and included a virtual address space of 2^48 bytes. It was designed to be programmed entirely in high-level languages.The processor also included garbage collection in hardware. It also supported floating point and multi-processor operation, well before x86 did. Part of the operating system was built into the chip; the policies were defined in software, but the implementation was on the chip.
It's interesting to think what computers and programming would be like if the Intel 432 had succeeded instead of x86. We'd probably have super-secure computers and be programming in Ada.
[1] http://bitsavers.org/pdf/intel/iAPX_432/171821-001_Introduct...
[2] https://archive.org/stream/Intel-AR-166UnderstandTheNewestPr...
[1] http://us-east.manta.joyent.com/bcantrill/public/colwell-432...
[2] http://dtrace.org/blogs/bmc/2008/07/18/revisiting-the-intel-...
The failures you describe in the post were technical manifestations of an operational failure in bringing an engineering project to completion. The scope was too large, with too many unknowns. Had they scheduled their project relative to Moore's Law, they could have kept the team smaller until they had the transistor budget to ship the chip they designed. You should read about how the Aztek was made [1]
[1] http://www.roadandtrack.com/car-culture/a6357/bob-lutz-tells...
From my point of view I guess it actually seems like a terrible reason in the long run, given that even something as widely derided as the x86 architecture has, over time, been made to perform.
But certainly processors can do more than they do. For example, doesn't x86 offer a memcpy or memmove instruction and just decode it as the right "fast" way, versus making people update their stdlib with complicated code?
I don't really know what I'm talking about, but it seems I often run across long discussions where people are trying all sorts of instruction sequences and they're model-specific and it just seems like there should be a few more higher-level instructions exposed. (Well perhaps that's the point of all the SSE and AVX instructions.)
He even wrote an (unpublished) book about programming with as third basic principle "Do It Yourself!" (Aka "Invent The Wheel!"; http://www.colorforth.com/POL.htm). That alone moves it into its own universe. If you don't think so, read on to "Make variables as GLOBAL as possible. Why not? You can save some space and clarify your requirements"
> It implemented support for objects at the hardware level,
> with access protection for on a per-object basis.
Periodic reminder that Henry Levy's Capability-Based Computer Systems is available in PDF form for free¹.The 432 was slow, but the i960² was a clean RISC that could have had a future.
Another weird attempt of the early 80s. Similar fate. Very surprising company though.
For example, throw out the notion that memory is volatile - or slightly more practically, what if the price we pay for automatic memory management in our programming languages also bought us abstraction over the volatility of memory? How different would our systems look? For one thing, switching things off and back on again wouldn't be the "cure-all" that it mostly is today.
The fact that we can build systems like Smalltalk tells us that much of our current notions of computing are merely convention, not axiomatic at all.
Smalltalk and Forth are definitely "different convention" things, while SICP and CTM are more like detailed examinations of things that might really be axiomatic, giving us the means of combination, and hopefully the means to imagine building things beyond what our mindset of present conventions would allow.
[1] http://en.wikipedia.org/wiki/Magnetic-core_memory [2] http://en.wikipedia.org/wiki/Ferroelectric_RAM
I feel that part of why these books seem so alien is that most people are taught programming as if it were two different disciplines: "low level" algorithms, with fixed data types, and big-O complexity theory; and "high level" systems design, with type abstraction and object patterns. While a truly skilled programmer must understand both worlds, this sort of model has them separated in the same manner physicists seem to separate general relativity and quantum chromodynamics (or oil and water).
Books on Smalltalk and Forth, like those listed in the article, frequently reveal a mode of programming which is neither purely "high" or "low" level. Yet despite their non-conformity, neither language is haphazard or capricious in design. Instead, the both seem to embody the unofficial motto of the US Army Engineers: "The difficult we do immediately. The impossible takes a little longer."
The current (older) me just had their mind blown by 'Self'- but there is no book.
http://www.edx.org/course/paradigms-computer-programming-lou...
http://www.edx.org/course/paradigms-computer-programming-lou...
Anyone have an idea about what would pair well with Neil Gaiman?