
The Philosophy of Computer Science (2017) - olalonde
https://plato.stanford.edu/entries/computer-science/
======
carapace
"Computer science could be called the post-Turing decline in the study of
formal systems." (One of my favorite jokes. Dijkstra's I think.)

FWIW, the foundation of it all is the act of making a _distinction._

"In the beginning was the void, and the void was without form."

Operationally, if the thing in your brain that makes distinctions is
suppressed (by e.g. a stroke) you literally lose the ability to distinguish
between your body and the world and enter into an "oceanic bliss".

> "My Stroke of Insight: A Brain Scientistʼs Personal Journey", (2008) is a
> New York Times bestselling and award-winning book written by Dr. Jill Bolte
> Taylor, a Harvard-trained and published neuroanatomist. In it, she tells of
> her experience in 1996 of having a stroke in her left hemisphere and how the
> human brain creates our perception of reality and includes tips about how
> Dr. Taylor rebuilt her own brain from the inside out.

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

(There's also a TED talk.)

Semantically, distinction is the sole act required to produce logic (and
therefore computers and teh science thereof.) See "Laws of Form".

> "Laws of Form" is a book by G. Spencer-Brown, published in 1969, that
> straddles the boundary between mathematics and philosophy.

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

~~~
gen220
Coincidence, but this is also the first lesson in the Tao Te Ching! :)

The lesson is our desired things (beauty, wisdom, wealth) are defined by their
contradictions, and are therefore not self-standing. The only thing which is
self-standing is contradiction itself.

When you step back, it argues, you see that contradiction (distinction) is
that from which all things stem. The operative distinction that motivates most
peoples’ actions is “desire”. Hence, the distinction between desirable and
undesirable determines the meaning of more material adjectives like beauty,
wise, wealth.

It goes on to say that if you remove “desire” from your perspective (to be
more like nature/Tao), you can see things for what they are: mystery. Removing
desire from your actions, however, is not very desirable in practice!

The recommendation (i.e. the behavior of the sage) is to _practice_ doing
nothing, and not-talking. The implication (IMO) is that, without their
contradictions, action and speech have no meaning.

What is new is old :)

~~~
avindroth
Yeah naming things makes it easy to talk about them but also draws arbitrary
lines that influence the people dealing with said named objects

Science is one thing, but science also obfuscates what you are trying to talk
about by applying a specific kind of 'grid' or 'form' which reveals certain
patterns in the content but also hides certain patterns (re: Foucault)

------
dang
2018:
[https://news.ycombinator.com/item?id=16451072](https://news.ycombinator.com/item?id=16451072)

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

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

(Links are for the curious. Reposts are fine after about a year:
[https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html))

------
gregfjohnson
A framework I have recently found useful for thinking about my work as a
computer programmer is a classic set of philosophical concerns:

Truth, goodness, and beauty.

That is to say, software development has an intellectual dimension, a moral
dimension, and an aesthetic dimension.

For me, the intellectual questions primarily concern program correctness. Is
this code bug-free? Is it robust and stable? I tend toward the "computer
science as mathematics" epistemology of Dijkstra and Hoare. Invariants;
inductive reasoning; temporal logic. At least at the level of individual
functions, I find that it is feasible to express with rigor and clarity what
the function is intended to do, and to reason with precision through to a
conclusion that the implementation fulfills the intent. And, there is a test
for every line of code. A favorite quote from Knuth: "Don't trust the
following code. I have only proven it correct, I have not tested it!"

The moral questions concern the uses for which the code is designed, and the
uses to which it will be put. I work on medical device embedded software these
days, and the moral dimension of this work is a very meaningful and concrete
benefit of this choice. I used to work on software development tools to
support avionics development for the B-2 bomber. While I don't dismiss the
latter as unambiguously immoral, it certainly was more problematic for me, an
ongoing source of angst and struggle.

The aesthetic issues seem to me to be two-fold: how beautiful is the software
from the standpoint of the user? And, how beautiful is the source code? I have
seen (and written) much code that is frankly an ugly mess. I have also upon
occasion had an inspiration about how to re-write a piece of code. Tons of
code gets deleted, and the new code is simple, clean, elegant, and inevitable.
I would go so far as to claim that at times I have been graced to write code
that turned out to be beautiful and aesthetically pleasing. It seems to me
that the "Clean Code" movement encourages creation of code that is elegant and
beautiful.

I find that this triad of concerns inter-relate. Beautiful code is more likely
to be correct, and conversely. Mindfully written code that is done with
clarity and integrity tends to be both more beautiful and correct.

~~~
User23
These relate directly to the three normative sciences:

1) Logic, the normative science of what is true.

2) Ethics, the normative science of what is good.

3) Aesthetics, the normative science of what is beautiful.

I believe the above formulation is due to Dijkstra, but I can't recall
precisely which work I saw it in. He certainly held all three in high esteem
and that philosophy was at the root of many of his insights. For example, he
explicitly made a distinction between correctness and pleasantness. The former
is a matter of logic and the latter is a matter of aesthetics. It follows that
they are separate and independent concerns. The vast majority of software is
not logically correct, but is nonetheless more or less pleasing to its users.

As for ethics, it's not just for things like the defense industry and
medicine. For example the change to the C standard from having a set of
permissible responses to undefined behavior to the actively hostile anything
goes situation we now have is a matter of ethics. That behavior is both
correct in that it satisfies the specification and pleasant in that it allows
for aggressive optimization, but it's not very good for the users who get
their NULL checks optimized away. Arguments that the bad behavior is correct
or allows optimization don't address the ethical concern at all or deny its
existence altogether and thus can never refute it.

The normative sciences are remarkable in their broad applicability across
domains, which makes them worthy of study by all educated persons, but they
are especially important for software developers since we can potentially
affect so many people's lives. They even apply here on HN. We should all try
to make our contributions true, good (nourishing for intellectual curiosity),
and elegant.

~~~
galaxyLogic
What makes me always uneasy about theories like this is it makes me ask "If 3,
why not 4?". What reason do we have to assume that these three dimensions
1,2,3 are the only ones there are? Why exactly 3 and why just these 3?

~~~
User23
That's a great question. Your cousin comment notes that Peirce has influenced
my thought. He had something of a fascination with three because of structural
properties. In essence he saw the mathematical relation as a triad and so he
considered three in some way essential to logic and what he called
semiotic[1]. Some of that has probably rubbed off on me.

I don't think it's a magic number, just a common one. I happen to know of
three normative sciences. I would gladly learn about a 4th, 5th, or more if
they exist, especially if they share the same broad intellectual utility. It
can also be a case of lumping versus splitting[2]. Postulating that logic,
ethics, and aesthetics together are somehow exhaustive, one could still
conceivably divide any of them into further subdivisions and spawn new
normative sciences that way. I don't believe that would help me make my
thoughts clear to myself or others, but, pleasantly, if someone else discovers
that it does help then they will have an easier time convincing me too!
Conversely, I can't imagine how lumping any of the three I listed together
would be an aid to understanding.

[1] Not really what postmodernists mean. See
[https://plato.stanford.edu/entries/peirce-
semiotics/](https://plato.stanford.edu/entries/peirce-semiotics/)

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

~~~
galaxyLogic
Makes sense I think. It's good to realize that while 3 dimensions of space
would seem to be everything there is and ever can be, newer physical theories
have pointed out the possibility of more dimensions. There is no Holy Trinity,
unless of course you are a true believer in such things

------
dredmorbius
See also William J. Rapaport, emeritus professor of computer science at SUNY
Buffalo, _Philosophy of Computer Science_ :

[http://www.cse.buffalo.edu/~rapaport/Papers/phics.pdf](http://www.cse.buffalo.edu/~rapaport/Papers/phics.pdf)

Discussed:

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

[https://news.ycombinator.com/item?id=20912718](https://news.ycombinator.com/item?id=20912718)
(6 mos ago)

Rapaport is cited numerous times in the Plato article.

------
ganzuul
This is a bit surprising since it doesn't treat information as a totally human
concept. It discusses 'semantic interpretation' but for some reason concerns
itself with implementation, which I think should be irrelevant.

I discovered this independently and soon after found it echoed in an important
textbook (Datalogi, Hans Lunell) around these parts, around 20 years ago.

In short; only data exists in the machine. The patterns we coax out of the
machine are only meaningful to us, as humans, after we have interpreted the
data and turned it into information. A computer never processes information;
only data.

If one deeply desires a deeper structure to data one can look at processes of
convergence, which naturally leads one to study artificial neural networks for
their working examples. Implementation however must be irrelevant to
information because they are not in a bijective relationship.

~~~
yters
Information is objectively described by notions such as entropy, algorithmic
information, randomness deficiency, etc.

Information is mind independent and has empirically describable
characteristics.

~~~
omeze
Someone hands me a thumb drive and it consists of one byte, 0000 0001.

On Monday, the owner of the thumb drive tells me the contents are a counter of
how many apples they had in their kitchen on new year.

On Tuesday, the owner tells me the contents are a boolean for whether they
took a vacation in 2014.

What is the entropy of the data?

~~~
mattkrause
8 bits, by definition.

The crux of information theory is that you can analyze a message without know
what it means.

Mutual information would help you quantify how much this changes your mental
model of the owner's life. Maybe you already knew about the vacation (you went
too?). It would let you quantify how much this change in definitions affected
you.

~~~
goatlover
What makes those bits zeros and ones? What makes the thumb drive an
information storage device? Why do we need to know the mental model of the
owner's life to infer the information stored?

For information to be objective, it needs to be understood as mind-independent
feature of the world. If you have to reference human minds to make it
meaningful, then it's not objective. It's a cultural construct.

~~~
mattkrause
I took the byte and thumb drive bit literally, but if it were some exotic
ternary system, it can hold about ~12.7 bits. If they're decimal digits
instead, that sequence has a capacity of 10 bans or 26.6 bits.

The name "information theory" seems to throw people; imagine it were called
coding theory instead and it might seem clearer that we can talk about the
"capacity" of different codes and how different representations interact
without worrying too much about what they _mean_. It's similar to algebra, in
that we can make statement about `x + y = y + x` or `n + 0 = n` without
worrying about whether x is measured in apples, lightyears, or anything at
all.

~~~
goatlover
Right, but if a future alien archaeologist were to dig up a thumb drive
(preserved in a vault) after humans went extinct, what would indicate that it
held bits?

~~~
mattkrause
A 'bit' in information theory is just a unit of measurement, corresponding to
the information conveyed by one yes-or-no question (where both answers were
previously equally likely).

Since it's a fairly natural unit, your alien archaeologist might even use it.
However, if they had a weird taboo against binary, they could define a similar
concept in other ways. In fact, we humans have too. Bletchley Park used "bans"
or hartleys, which is the information carried by a single base-10 digit
(without any a priori information). Nats use a base-e representation instead,
which ties into statistical physics nicely. There's nothing stopping you from
inventing a weird informational unit where 1 corresponds to "the answer to a
seven way question were two of the answers are each twice as likely as the
rest."

So, suppose your alien digs up my thumbdrive. It examines it carefully and
notices that each MOSFET is always in one of two states. That suffice to
describe its information-carrying capacity in whatever system they use: bits,
hartleys, nats, zorblaxen. A similar analysis of their own media would let
them say "This thing is so sophisticated, it can hold the work of 10,000
scribes" or "This junk can barely contain a moment of our 16D videos." If your
drive were packed with different types of media, they might even discover that
some parts of the disk (e.g., ascii text) DON'T use all of the available
capacity.

None of this, of course, tells them what the data _means_. For that, you'd
need to relate these data to some external source.

------
HeavenBanned
I have a Bachelor's in Philosophy and now I'm studying Computer Science
formally.

I must say having the Philosophical background helps immensely when thinking
up of novel, ethical and utilitarian projects to build. Computer Science and
Philosophy truly do go hand in hand.

~~~
yters
Comp sci is a good upper bound on materialism, and provides a rigorous basis
for distinguishing material and immaterial substances. E.g. if we detect a
halting oracle we can conclude it is immaterial, insofar as materialism is
bounded by that which is computable.

In that sense it is a way to scientifically address the philosophical concept
of substance dualism, without getting lost in a bunch of speculative
arguments. Also is a good avenue for making substance dualism a
technologically useful theory.

------
tabtab
"Computer science" is NOT science. Good science is rarely done outside of
machine performance issues. How to organize information to be best "digested"
by human programmers and users is largely in the realm of psychology and
physiology, which are "soft" sciences because we don't really know how the
human brain works yet.

I've been in long debates about this and stand by it. Somebody once challenged
a "pro science" claimer to "prove" that go-to's are objectively worse than
nested blocks. The science claimers failed to produce objective evidence.
(Background:
[https://en.wikipedia.org/wiki/Considered_harmful](https://en.wikipedia.org/wiki/Considered_harmful),
see the part about Edsger Dijkstra's paper.)

(I'm not saying goto's are good, only that my preference for blocks is
subjective. For one, nested blocks can be indented which makes their structure
more visual. Goto's don't have a visual counterpart, at least not without a
fancy IDE.)

~~~
anta40
So what's CS, then? Probably a mix of applied math+engineering?

~~~
tabtab
Physical engineering is more objective. For example, in designing a bridge an
engineer is sandwiched between the architect's illustration and the laws of
physics. Bridges can't fall. There are various "gut instinct" design choices
to select among, but it's a smaller pool of choices than that of a software
architect.

------
unixhero
Hmm it seems to miss a central point: The philosophy of data*

I love plato.stanford.edu, and it is one of the best and meticulously curated
public internet resource out there.

~~~
bohadi
FWIW there is an entry on philosophy of information,
[https://plato.stanford.edu/entries/information/](https://plato.stanford.edu/entries/information/)
seems more in the Shannon sense.

A PoData* for today could definitely have much written on ethics, and also
epistemology and even metaphysics.

I wholeheartedly agree with your sentiment, SEP is an astrounding resource.

------
jeromebaek
Philosophy of Computation at Berkeley: [http://po.cab](http://po.cab)

------
DSingularity
Yeah I wish we would explore the ethics of computer science in a deep and
provocative way.

~~~
kragen
We _have_ explored the ethics of computer science and a deep and provocative
way: [https://www.gnu.org/philosophy/](https://www.gnu.org/philosophy/)

Unfortunately, many people don't like what we found, so they frequently shoot
the messenger.

~~~
jagraff
Personally, I've read a lot of GNU/FSF doctrine, and to me it feels very one-
sided and dogmatic. I know that the FSF has been one of the loudest voices in
the fight for free software, but maybe it wasn't the best one. Especially
given the founder.

~~~
redis_mlc
> Personally, I've read a lot of GNU/FSF doctrine, and to me it feels very
> one-sided and dogmatic.

Of course it's dogmatic, you either have freedom or you don't.

Try to decline a click-wrap agreement and see how one-sided that is.

Apparently your reading did not lead to understanding.

> I know that the FSF has been one of the loudest voices in the fight for free
> software, but maybe it wasn't the best one.

It's the only one that I know of.

> Especially given the founder.

His results speak for themselves.

Having said that, expecting somebody who is mainstream to promote radical
ideas doesn't make any sense, since that's contradictory.

~~~
NateEag
> His results speak for themselves.

Do you mean creating the technical underpinnings for world-scale software-as-
a-service systems that devour our society whole?

Or do you mean slaving hopelessly for decades trying to convince people of his
rightness and attempting to force a rigid, legalistic approach to humane
software development on the world, only to lose what good reputation he had
developed due to an utter refusal to account for human frailty, emotions, and
impatience when discussing difficult topics in the public eye?

To be clear, I think the media treated Stallman terribly in the debacle around
Epstein's Media Lab ties.

I also think his failings as a software theorist are the same ones that led to
him creating a situation that could be so easily and dangerously
misunderstood.

My overall point is just that his results are not flawless, unmitigated good.
They suggest to me that his software philosophy was not sufficient to
guarantee good results.

------
dnprock
There's an emerging field of Computer Science as Economics Discipline. That's
the field of cryptocurrency. It is currently plagued with (pseudo) economists
and scammers. Or people don't really understand system design (but they don't
know it). It deals with money so there is a lot of misinformation and greed.

People in crypto don't understand the design tradeoff between centralization
and decentralization. So they end up selling fake dreams like decentralization
can fix everything. Bitcoin is decentralized at layer 1. But in layer 2,
people still want to have the same level of decentralization when they design
the Lightning Network. Then, some will buy into the idea that LN will fix
everything and still be decentralized.

~~~
brachi
> People in crypto don't understand the design tradeoff between centralization
> and decentralization.

Care to elaborate about that trade-off? And could you be a little more
specific on who is 'crypto people? (e.g. everyone from users of a crypto
systems, core developers, etc.).

~~~
dnprock
In system design, there are tradeoffs. You can't automagically get everything
you want. For example, regarding the block size, you can increase the block
size to scale transactions or you can do L2 off-chain. Each comes with its own
pros and cons. Big blocks are easier to implement and simpler to set up, but
they'll require future hard forks. Off-chain scaling is more flexible but they
are a lot more complicated. Big block retains decentralization feature. Off-
chain scaling will require some centralization in layer 2 to bring the cost
down. Both are fine scaling strategies. But the discussion becomes highly
political. One side needs to win.

And there's DeFi, decentralized finance. It's more like centralized finance
dressed up in tech jargon. When you add more layers on top of the main chains,
the complexity of the systems increase. To bring down the costs, you'll have
to create centralized layer 2 systems.

------
solidist
For those that enjoy these explorations, I'm currently reading the humanistic
side of CS: [https://mitpress.mit.edu/books/software-
arts](https://mitpress.mit.edu/books/software-arts)

There is navel gazing and equivocation in some of initial reading, but
probably worth the read. I'm on the first chapter and intrigued to read more.

------
kaanmutlu
good

