
Six works of Computer Science-Fiction (2015) - edjroot
http://blog.fogus.me/2015/04/27/six-works-of-computer-science-fiction/
======
a-saleh
Art of the propagator

It is like a discovering a new programming paradigm. Something new and
different, not a Lisp, not a Datalog, weirdly distributed, with interesting
properties, but powerful. There are adjacent things, BLOOM project and Eve
language seems to have discovered something simmilar, and Edward Kmett working
on his new language is using propagators quite heavily.

[https://pdfs.semanticscholar.org/755c/48fd10aa303497ef849977...](https://pdfs.semanticscholar.org/755c/48fd10aa303497ef849977c36529c0bb09ff.pdf)

Sci-fy to go with it: probably Ted Chiangs Stories of your Life (or its movie
adaptation Arrival)

Out of the tarpit

I thing this is a paper that might have lead to Clojure, React, Elm, e.t.c ...
but not really, a weird parallel reality where we really like reactive
relational databases.

[http://curtclifton.net/papers/MoseleyMarks06a.pdf](http://curtclifton.net/papers/MoseleyMarks06a.pdf)

~~~
LargeWu
Ted Chiang's work was the first thing that came to mind for me. "Understand"
is a breathtaking piece of work, about a man whose brain rapidly gains
unimaginable computing power following a series of treatments.

~~~
7thaccount
"Understand" was phenomenal!

------
mherdeg
Knuth's "Literate Programming" was kind of otherworldly for me. I liked the
idea that software could be written in a form indistinguishable from
literature. I could not quite believe that it was reality -- and I'm still not
sure it holds up in the real world -- but it's such a cool idea to have
wrapped my head around at least once.

~~~
TeMPOraL
I think a cousin of Literate Programming that does work well is computational
notebooks, like Jupyter. Interleaving code and textual description fits the
exploratory workflows and scientific communication well. My favourite is
Observable ([https://observablehq.com/](https://observablehq.com/)), where
code has reactive structure (resolving a DAG like a literate program would at
tangle-time), you can choose to keep some code hidden by default (to reduce
clutter, make the document end-to-end readable), and use code to make the
notebook fully interactive.

In terms of Knuth-style literate programming, Org Mode in Emacs, with its Org
Babel feature, is a very good tool for this. It's an outliner with rich
markup, and where you'd ordinarily insert a code block, in Org Mode, you can
also execute it (works with any language you've configured Emacs to connect
to) and feed the results to further code blocks. So it works like a
computational notebook. You can also tangle the blocks to produce a separate
source file, the Knuth way. One common application I've seen is making
literate Emacs configuration - people prepare the minimum necessary to set up
Org Babel, and then tangle the proper (often large) config from an .org file,
where it's written in literate style.

As for my own experience, I occasionally try literate programming on small
things, and so far - outside using org mode as a Jupyter alternative - I
didn't feel more productive with it. I often flesh out the idea of a solution
while writing it (I alternate between coding/recoding and design phases), and
literate programming adds extra work - refactoring code means also refactoring
the surrounding prose. On top of that, the narrative structure seems to
interfere a bit with program's own architecture. I know it shouldn't (thanks
to the way tangling works), but it somehow does in my head.

~~~
bordercases
It's a shame that these notebooks are extremely unperformant. It ruins the
fast-feeback you are meant to get from the REPL-ness.

~~~
TeMPOraL
Org Mode and Observable are both performant enough. Unfortunately, they have
their own limitation. In Emacs+Org Mode, you're working with a rich text
display as a canvas, so while you can output images easily, forget about
interactive GUI (charts, control sliders, what not) - at least without some
dark hacking magic.

Observable - that's a true joy if you want fast feedback and interactivity.
It's as fast as your browser, since your notebook is entirely client-side
executed JavaScript. It's an order of magnitude better option than regular
notebooks if you want to do some exploratory or scientific visualization. It's
main drawback: JavaScript. That's what you're limited to. So forget about your
favorite Python or R libraries (at least without dark hacking magic).

~~~
bordercases
Observable did not handle my rendering requirements involving several hundreds
of data points for my parallel coordinate plot. That said I'm not sure how it
would fare outside of the notebook setting.

~~~
TeMPOraL
It should be as fast as equivalent visualization done in the frontend of a web
page; after all, what you do in Observable gets directly executed by your
browser. I wonder what your particular requirements are. On my end, I had
acceptable performance on interactive prototypes involving updating multiple
histograms, where inputs had tens of thousands of points.

------
ken
The Art of the Metaobject Protocol. Let’s build a system ... in this system we
haven’t built yet! We’ll start with some DEFCLASS calls to define some classes
for its internal data structures. In a couple hundred pages, we’ll have enough
written that we can _define_ DEFCLASS to close the loop.

------
sramsay
What a fun list! And it has some great lines:

"SICP is an exploration of programming free-love. Indeed, the tone, examples,
references, and hearken to a programming life that if true, would be an
absolute blast to live in."

It's a bit difficult to define this genre (but how can we not?). I found the
K&R personally mind-blowing when I read it (and someone in the comments
suggests it), but I'm not sure it qualifies. Many classic works strike me as
"computer science-fiction," but not all classics of computer science are.

There's something fanciful and idealistic about these particular works --
something about their tone that seems vaguely utopian or futuristic.

Michael Fogus is a fine writer, though his own books seem strikingly down-to-
earth. Really, I think he should expand this into a full-blown essay.

------
AceJohnny2
Previous discussion at the time (84 comments):

[https://news.ycombinator.com/item?id=9447097](https://news.ycombinator.com/item?id=9447097)

------
simonh
It’s interesting to read these, and important that they are not forgotten, but
I don’t see these as viable alternate realities for mainstream modern
programming. They were relegated to, and remain in the margins for actual
reasons, not just by accident. In some cases such as SICP and arguably a few
of the others those ‘margins’ are still actually important niches from which
they still influence and benefit the community.

I think there are some ‘accidents’ of technological choices that have had
unfortunate consequences for the modern industry. We could have done with
something better than JavaScript for example, but these aren’t ‘paradigm’
issue (I tried avoiding that word, but there it is). By and large the
direction the industry has gone has been chosen for sound practical reasons.

In the end, none of the alternate history directions the industry could have
taken are off the table forever. If Oberon or Smalltalk had been a superior
way to build software, there’s nothing stopping someone taking their evergreen
fundamentals and building them into a modern system. If that doesn’t happen,
again there are probably reasons for that.

~~~
coldtea
> _It’s interesting to read these, and important that they are not forgotten,
> but I don’t see these as viable alternate realities for mainstream modern
> programming. They were relegated to, and remain in the margins for actual
> reasons, not just by accident._

The "actual reasons" could just be laziness, a bad industry, valid then but
not relevant anymore, and several other things other than "eternally valid".

So just because those ideas and implementations where "relegated to" the
margins, doesn't mean they should remain there.

Except if we're all too happy with the current state of the computing industry
and developer practices. Are we?

> _By and large the direction the industry has gone has been chosen for sound
> practical reasons._

Yeah, no. Some things caught on for practical reasons (e.g. C was portable,
free, fast enough in a constrained era. But even C could have easily been
bettered with a language more or less the same just with bounds checking,
without pointer arithmetic, without nulls, with a string type, etc, and we'd
be 200% better).

Others just caught because big companies pushed them with tons of marketing
money (e.g. Java - at the moment Smalltalk was big in the same space, support
and IDEs from IBM, etc). Others by BS CEO decision (e.g. Javascript not being
a light-scheme as originally intended, because management wanted to latch onto
the Java bandwagon). Others because of slow progress (slow uptake of
innovation, even if it can run perfectly well in the hardware of the time),
others without any real reason (it's mostly what's taught at schools, what
catches on as fad, etc).

It took 60 years (in fact, it's still ongoing) for programming tools and
concepts we had even as back as Lisp to make with first class support into
mainstream programming languages (closures, immutability, map/fold, and so
on). CSP took until Golang to catch on in the mainstream... Those things were
"in the margin" all this time...

------
anreekoh
Disclaimer: I’ve started reading the Lean guide for the past month or two.

For me the most magical texts I have ever read were TAPL by Pierce, or the
Lean Theorem Prover (tutorial/guide?) [1].

Just from a software standpoint, Lean seems like one of the most magical
things ever built. For something that is built by mathematically-oriented
programmers for pure mathematicians, it is /extremely/ well designed. So much
thought has seemed to go into the user experience; it’s rest a joy to use.

Every chapter in that guide, has blown my mind more than the previous. It is
super accessible as well to anyone with the math background found in any
undergrad CS program.

[1]:
[https://leanprover.github.io/theorem_proving_in_lean/introdu...](https://leanprover.github.io/theorem_proving_in_lean/introduction.html)

~~~
swah
> TAPL by Pierce Can you expand on why you enjoyed this? Its sitting on my
> shelves for a few years..

------
pjmlp
Worse is for those of us that actually played with some of those technologies,
only to deal with stones and sticks afterwards.

~~~
protomyth
Yep, the first two books were my reality at different points in my career. It
still amazes me how much tougher a lot of tools are compared to how programs
were built in those environments. It was amazing building in the small to
build up to the large (Forth) or just sheer joy of Smalltalk.

------
qznc
Something from the APL/J/K world would fit in. Is there a proper book?

~~~
tmcb
Not a very original suggestion, but the original book (“A Programming
Language”, by Ken Iverson) would probably fit in.

------
qubex
Of the works listed, I’ve read only _The Architecture of Symbolic Computers_
and _Structure and Interpretation of Computer Programs_. The latter is widely
known as it undergirds many a computer science course, but the former is far
more impressive by a wide margin. As a invertebrate mathematician, breaching
the threshold between numerical and symbolic computation (though ultimately)
gives me an undeniable _frisson_ of profundity.

------
dmos62
I love thinking about these books as science fiction. I experience
disappointment and frustration with some of the turns our technological
evolution took, and my own inability to hack out my own path, so I took to
writing science fiction in order to switch from an implementor's perspective
to a user's perspective. My goal and process is to suspend the inner architect
and programmer and skip to a conceivable end-result: alternative technological
history type of thing. I find that picturing an end result of a hypothetical
scientific effort relaxes me.

------
_bxg1
The only book I've read that I would call "Computer Science-Fiction" is The
Footprints of God:
[https://www.goodreads.com/book/show/1515812.The_Footprints_o...](https://www.goodreads.com/book/show/1515812.The_Footprints_of_God)

It's pretty good. Centers on AI (but isn't a cliche Terminator-like scenario)
and gets into very philosophical territory by the end, and has the pacing/tone
of an espionage thriller.

------
jonjacky
If these books are science fiction, then some of the projects we see here on
HN might be considered fan fiction.

------
Symmetry
Going further back, I think that Multics could probably be on this list.
Single-level storage might make a comeback with NVRAM.

------
mcnichol
I see you visit HPB...one of my favorites.

Like a treasure hunt every time I enter.

------
AceJohnny2
Did no-one read the article? [1] It's explicitly not about fictional sci-fi
that happens to feature computers/programming, but about real textbooks that
hint at what programming _could have been_ had the industry adopted those
technologies/principles more fully.

[1] At this time 4 of the 7 top-level comments and all the active discussions
are about sci-fi, not what the article describes

~~~
okareaman
There needs to a word for making a comment based solely on misreading the
title. It happens all time. Or how about another word for making a comment
without reading the other comments and realizing that many people, sometimes
hundreds, have made the exact same comment you want to make.

~~~
hectorlorenzo
Karma-eager people, or karmeagers.

~~~
TeMPOraL
Karmongers?

------
Qasaur
Isaac Asimovs's "The Last Question" is an excellent short story and I consider
it among one of the greatest works of science-fiction. It describes a
fictional future where humanity creates a computer that acheives the
singularity (written in 1956!), with an interesting twist at the end.

[https://www.multivax.com/last_question.html](https://www.multivax.com/last_question.html)

~~~
zackmorris
Don't forget The Last Answer! These are possibly my two favorite sci fi short
stories:

[https://highexistence.com/the-last-answer-short-
story/](https://highexistence.com/the-last-answer-short-story/)

There is another story I like about a planet of high-IQ beings noticing
patterns in stars blinking (like binary) and going into suspended animation to
observe the data over extended periods of years, but I can't remember the name
of it or the author.

------
iudqnolq
UNSONG. Magical fantasy set in a Silicon Valley where Microprosopus
(Microsoft), Gogmagog (Google), Amalek (Amazon), and Countenance (Facebook)
have figured out how to brute force discovering Divine Names of God through
the magic of independent contractors.

Every chapter begins with a quote from a Markov chain trained on the King
James Bible, SICP, and ESR. For example:

> It is good practice to have your program poke around at runtime and see if
> it can be used to give a light unto the Gentiles.

The first chapter begins

> The apocalypse began in a cubicle.

> ... Upon the floor was a chair and upon the chair was me. My name is Aaron
> Smith-Teller and I am twenty-two years old. I was fiddling with a rubber
> band and counting the minutes until my next break and seeking the hidden
> transcendent Names of God.

> “AR-ASH-KON-CHEL-NA-VAN-TSIR,” I chanted.

> That wasn’t a hidden transcendent Name of God. That wasn’t surprising.
> During my six months at Countenance I must have spoken five hundred thousand
> of these words. Each had taken about five seconds, earned me about two
> cents, and cost a small portion of my dignity. None of them had been hidden
> transcendent Names of God.

[http://unsongbook.com/](http://unsongbook.com/)

~~~
cryptoz
This reminds me of the Nine Billion Names of God (Clarke)

[https://urbigenous.net/library/nine_billion_names_of_god.htm...](https://urbigenous.net/library/nine_billion_names_of_god.html)

~~~
keiferski
Borges’ _The Library of Babel_ works with similar ideas:

[https://en.wikipedia.org/wiki/The_Library_of_Babel](https://en.wikipedia.org/wiki/The_Library_of_Babel)

~~~
iudqnolq
Sort of, although I think it doesn't allude to the exploitation of workers for
something allegedly holy like the other two?

~~~
keiferski
I guess. I found the Borges story infinitely richer and intellectually
interesting. Kind of lends credence to the idea that Kubrick was the real
genius behind 2001 (Clarke co-wrote the screenplay).

------
mattkrause
Francis Spufford's _Red Plenty_ might fit here. It's historical fiction, set
in the 1950s and 1960s USSR, and describes an attempt to build an efficient
planned economy with linear programming. It's a bit like _Little House on the
Prairie_ , in that some of the people and events are fictional, but the big
ideas were mostly true (there's a massive set of end-notes if you care).

I found both the math and the vignettes about life in the USSR to be
fascinating.

~~~
qubex
Big shoutout for _Red Plenty_. If you (understandably) thought operation
research, linear programming, and price discovery are too arcane to serve as
the basis that undergirds a gripping novel, be prepared to be proven wrong.

------
xiaodai
Daemon. Best thriller ever. Not really, but was interesring to read
[https://www.amazon.com/Daemon/dp/B001QCZTWA/ref=mp_s_a_1_1?k...](https://www.amazon.com/Daemon/dp/B001QCZTWA/ref=mp_s_a_1_1?keywords=Daemon&qid=1577933339&sr=8-1)

~~~
hug
Unsolicited book review time!

I read this after hearing many good things about it, especially about how well
thought out the science in it was.

While the science was solid as far as speculative fiction action-thriller
science goes, I felt like the action scenes were being choreographed by a six
year old who had read too many comics, in that every single event felt like it
was a _deus ex machina_ , only to be matched by a bigger and more catastrophic
_deus ex machina_. Y'know, like "the car shot lasers! until it was blown up!
but it blew up into two motorcyles! that shot ninja stars!". The aid to my
suspension of disbelief I got from the "good science" being plausible fell
apart at how implausible the actual chain of events were.

It was a page-turner, but ultimately I left the book feeling a little
exhausted by it all. Would highly recommend to anyone who wants to have the
equivalent literary experience of drinking a red bull.

~~~
emmelaich
Exactly the same with me! I was enthusiastic till about 3/4 through.

My memory now is that reads like a script for an action movie.

