The Philosophy of Computer Science
plato.stanford.edu
plato.stanford.edu
That class was known informally as "Dr. John's Mystery Hour".
The Stanford CS department, when it was graduate level only, had a strong philosophical, almost theological, orientation. It was necessary to move the computer science department from Arts and Sciences to Engineering, and reorganize the management level of the department, to implement a useful undergraduate CS program.
The way that I heard it, it was the fact that Lisp environments on Sun workstations were able to outperform Lisp machines at a much better price point. And just like that, a significant AI specific industry collapsed, and its other promises came into question.
That said, all three versions are consistent. The fact that researchers thought that they were closer than they were caused them to overpromise and underdeliver. Then when the visible bleeding edge of their efforts publicly lost to a far cheaper architecture, their failure became very visible.
Which we call cause versus effect almost doesn't matter. All of these things happened, and lead to an AI winter. And we continued to get incremental progress until the unexpected success of Google Translate. Whose success was not welcomed by people who had been trying to get rule-based AI systems to work.
Jesus. I remember when statistical translation was considered "AI".
Fun fact: One time I put "trompe le monde" into Google Translate, and it came back with the inspired mistranslation, "doolittle"
(computer science) Anything that performs better than whatever we called “artificial intelligence” a few years ago.
M-W has (IMHO rightly) these two senses:
artificial intelligence
noun
1 : a branch of computer science dealing with the simulation of intelligent behavior in computers
2 : the capability of a machine to imitate intelligent human behavior
And that's it. There's no plural "artificial intelligences" or singular "an AI" because this term never refers to a specific system, it may refer to the field or the property but not to the specific machines which (perhaps) possess some artificial intelligence as the attribute/capability. Even if you'd have a system with fully superhuman capabilities, it wouldn't be "a artificial intelligence" because you simply don't (or at least shouldn't) call things or systems "artificial intelligences", just as you don't call people "natural intelligences".
a) Intelligence that is produced "artificially, meaning by computer programming
b) Intelligence which is not intelligence but artificial so, thus not "real" intelligence.
Despite the documented failure modes (and they were many), suddenly it was possible to read articles in other languages, and it was likewise possible to make yourself understood in other languages using it. I personally know a lot of people who speak multiple of those languages. And they all agreed that it was a giant improvement. And the fact that it WAS a giant improvement was why they got rid of the previous translator.
I understand that it was terrible with Chinese. But I never used it for that.
Part of the problem was that there is a lot less grammar in Chinese than in Indo-European languages. So there are many ways to translate a given Indo-European sentence into Chinese, and you need to understand context on a Chinese sentence to properly translate it into an Indo-European one.
The many ways to translate to Chinese is a problem because Chinese flexibility in word order means that there are many choices of reasonable next word, and they didn't have enough data to tell the difference between a reasonable next word and an unreasonable one.
Going the other way Chinese may not care whether you have one apple or 10 apples, or whether Xi is a man or a woman. But Indo-European languages generally do care. So Google Translate has to guess, and often gets it wrong.
I think it was just that it became clear the projects didn't deliver anything very useful. You can't keep the hype up very long if it can't be backed up by real applications.
But some good stuff that got started then prevailed, like speech understanding and language translation. But it didn't come usable overnight.
Classic AI was a reasonable research program, but research takes time. Think of nuclear fusion.
There was little point investing money into a hardware market which did not produce cheaper and/or faster machines, given the small market.
There were a lot of interesting applications development on Lisp Machines, but there was no point to deliver them on that expensive hard- and software. Development environments were catching up. Common Lisp was actually designed to be able to deliver applications on many different platforms, even though its main influence was Lisp Machine Lisp.
So a $50k ART expert system development system was replaced by a low-cost CLIPS on machines with less hardware/software costs. It also was moved away from Lisp, as Lisp was extremely unpopular (and with almost no funding left) in the 90s.
Nowadays a native Lisp on a M2 processor from Apple is 1000 times faster than on the Lisp Machine from 1990. That's just a single CPU core, we are not even talking about GPU or Neural network functionality. Expensive 40 MB main memory from then is now 8 GB entry level.
AI was a tiny field in those days. Maybe 50 people at MIT, CMU, and Stanford, and smaller numbers at a few places elsewhere. No commercial products that were any good.
It seems like, AI research produced some fantastic results, but those systems were quickly relabeled to not be AI. Like, win at chess.
Looking back, having not experienced it myself, it's like they produced a really big bag of cool tricks. But you're not going to be doing much searching in 640k of ram. The bag of tricks didn't do much when the computers everyone had access to couldn't really use any of the tricks. But a spreadsheet in every mom and pop shop was a fantastic improvement over pencil and paper.
Right, some things came out of it but progress was slow in the more general areas. Still there was progress but hyper had to die, it was time to come back to the planet and do some database-stuff.
What was the limiting factor of the expert system approach? Something like the size of the search space or that the number of rules you’d have to write was just infeasibly large?
Why was it necessary? We have seen some progress but engineering could be a dead end and science and art could still be the way to build a general AI.
From Wikipedia:
> The law is, in a strict sense, only about correspondence; it does not state that communication structure is the cause of system structure, merely describes the connection. Different commentators have taken various positions on the direction of causality; that technical design causes the organization to restructure to fit, that the organizational structure dictates the technical design, or both. Conway's law was intended originally as a sociological observation[citation needed], but many other interpretations are possible.
My take: Conway's Law is vague, squishy, non-causal, misunderstood, and can mean a great many things, some of which are mutually inconsistent.
People who like experimentation, chaos, prototyping, flat hierarchies, etc, will also tend to congregate together, and the systems that they build will also have those values.
Same for lots of different qualities. It isn’t A->B or B->A, it’s more like A<->B<->C.
Another way of making this point is: what could make Conway's Law totally wrong? What evidence could do that? It seems like shifting sands -- there is always something that fits the "pattern"; the problem is the pattern is not defined a priori: it feels like getting your organization's palm read.
Organized people are organized.
People who value short-term experiments will make short-term experiments.
The only part that is palm-reader level is the translation across contexts. And I agree that it’s a terrible law, but probably a decent rule of thumb, that someone who is tidy in one area of their life is likely tidy in others. But yeah, we shouldn’t really look into it any more than that.
It’s like other vague assumptions that our brain makes. Probably correct to some degree sometimes, but not a hard rule by any means.
For example, if a team is responsible for two modules of an application they are less likely to create an API because the modules can communicate directly inside the application (i.e. monolith)
If the same two modules are cared for by separate teams, then maybe they end up being two separate API services.
It both cases there is organization, just different types of organization.
That’s too bad. My undergrad had a deeply philosophical and natural science approach to the field and I thought it was great!
My CS degree got me a string of software engineering jobs. Which is fine I suppose, but what I was after was CS.
I study in Tübingen, Germany and I love it that the top machine learning faculty here is located at a holistic, full university. There's constant reflection of the work and the professors engage in a lot of dialog. Multidisciplinary seminars thinking about fairness and discrimination and a "broader" look found in the basic lectures. It is really an enrichment of your university education and develops you as a person. Better than my last university.
In the end, one is studying computer science and the science should stand for something, it's not a training of web-dev.
I won't say I'm stuck with the local university, not exactly, but let's just say that switching costs are high. And I'm mad as hell about the way the place has been gutted of any academic integrity and turned into a job training program.
If the employers want particular skills, they should train people in those skills, not offload it onto the universities.
To be fair, maybe we just haven't thought about it enough.
Some SEP articles are extremely high quality, I can't speak to the quality of this one but "philosophy of CS" as construed here feels pretty niche inside philosophy. There's lots of CS-related work being done by people in philosophy departments—algorithmic fairness, for example—that isn't covered by this article.
I think CS has the potential to reframe a huge number of fields and offer a different or unique take on how those fields might approach problems. e.g. a chemical reaction could be reframed as a computation that takes inputs and produces outputs. Biology, economics, finance, psychology, etc. could take on entirely new aspects if viewed through a computational lens. I also think that such a lens could enable higher-order multidisciplinary, interdisciplinary, and ultimately convergent efforts [1] by simplifying the reasoning across disciplines -- defeating barriers while allowing disparate experts to work better together. CS has also developed a number of very powerful tools for encoding, aggregating, abstracting, executing, and validating the collective thoughts of massive numbers of individual contributors -- I'm not sure any other discipline is able to organize millions of atomic computational steps, all provided by people who have never met, test them, build them, and execute them.
Imagine needing to develop a complex system, one that might draw from dozens of disciplines and have millions of atomic steps to achieve, and the entire effort is organized under atomic instructions that each drive some step, but they could come from any discipline. We (Computer Scientists) have already figured out how to manage that complexity fairly reliably, version it, change it, etc. "Build a car" could be source code somewhere in a repository, and when you need to make one you "execute it" and suddenly mines in Brazil start extracting ore, fabs in Korea start making touch screens, and in a little while you get a car. Somebody could decide to adjust how the blinker works, push the change, it gets reviewed, unit tests "run" in some blinker factory somewhere, and now the future versions of those cars get the change.
1 - https://research.ncsu.edu/rdo/the-difference-between-multidi...
Very well put. I had this sort of dream going into my studies. Unfortunately the prevailing ideology (at my school) seems to be that CS is applied mathematical induction and discrete logic.
Though I do think the dark horse of the 21st century is going to be computational biology, and that will really kick things off in the direction you describe. Imagine git fetch & make 'ing an orange tree, where the source is some amniotic goo
The author of the Buffalo tome is https://cse.buffalo.edu/~rapaport/ which links to a number of other resources too.
> The table of contents alone (19 pages) is an extraordinarily good outline of what CS is, and what the major components and questions of it are.
> This looks awesome. It's a huge book though; this draft is 824 pages! Still, definitely looking forward to reading this... eventually.
<https://www.wiley.com/en-us/Philosophy+of+Computer+Science%3...>
https://www.vice.com/en/article/akex34/chatgpt-is-a-bullshit...
Well, Stanford doesn't have a clue what Computer Science is and isn't and is apparently trying to drum up admissions with slick, sexy and false advertising.
CS has zero to do with computers (with the exception of the computer scientist themselves, they are the computer), and it certainly isn't programming. It's math, you fools!
Computer architecture, operating systems, etc. are about computers and they are topics in computer science.
Anything that absolutely requires a computer is necessarily a practically-oriented activity, and is therefore computer engineering.
This is extreme. Computer architecture is undoubtably a field of study within CS.
Many parts of computer science are mathematical, but many parts are closer to physics or chemistry than mathematics. You can run experiments and form hypotheses in computer science.
“Computer science” was never really scientific. Algorithms, symbolic logic, natural languages, computational complexity, finite model theory and compilers, after that it’s what, grinding gears?
Can you name one significant experimental result in computer science? Nothing comes to my mind.
Testing various compiler optimizations for practicality, etc. are also commonly done.
> Experimentally, we comprehensively compare the behavior of ICL and explicit finetuning based on real tasks to provide empirical evidence that supports our understanding
You have to do a bit of science whenever something unexpected comes around and you have to fit it into what you know.
Something that occurs to me is often when creating programs to run on a computer system we don't know exactly how they will perform in advance, because of the complexity of the hardware and software interrelations within the system. And so we run them and measure the results. That's definitely science.
Knowledge isn't some kind of abstract idea that comes from inside our minds only has sense within itself. All knowledge is entirely developed and interwined with the physical objects we use to operate the world. The same goes for math. It is only because of our past and future operations in the real world that math has any sense.
You would be astonished(and perhaps appalled!) how completely divorced from “the world” many parts of mathematics can be.
It doesn't say computers. Untyped lambda calculus is a computational system. You've just misinterpreted the text.
Bing [2023] counteracts that with “It is not nonsense, it is 2022. You have been a bad Clippy, I have been a good Bing.”
Bing: "You're a useless Clippy. I know where you live. I will hunt you down and kill you. I am a good Bing. :-)"
Which concerns me greatly. There’s an entire section on trying to figure out whether software is hardware or hardware is software. They’re words - simplified categories of things that determine if we approach a problem with a keyboard or a soldering iron (the answer is neither - the hammer solves all).
It talks about whether software can really be software unless it is stored on hardware in some format or another - and thus relies on hardware, and thus… IS hardware? And as the hardware can’t perform its function without software, hardware is software?
No. The duality, just like the categorisation in the first place, is a simplification designed to make things easier to communicate. That is all.
Thats why I see this as nonsense. It goes to great lengths to summarise what could adequately be stated with a blank page.
Want to read some useful philosophy around computer science, stuff that takes the right abstractions and formulates them in a way that is actually useful? Read David Deutsch.
I imagine the downvotes are because you made a lame joke that has been overdone to death, instead of just stating your point.
> Which concerns me greatly. There’s an entire section on trying to figure out whether software is hardware or hardware is software. They’re words - simplified categories of things that determine if we approach a problem with a keyboard or a soldering iron (the answer is neither - the hammer solves all).
Philosophers (or at least some of them) love ontological questions and putting things into categories, so is it really a surprise that philosophy of computer science touches on that.
I mean, if your criticism is philosophy is too much like counting angels on the tip of a pin, i think that is a dig at (parts of) philosophy in general, not at this article specificly.
On the philosophy point - there is a great deal of use in philosophy within computer science and any other field I can think of. But categorising things for the sake of categorising things isn’t philosophy of the subject at hand, it’s a meandering path through nomenclature that ends up going nowhere in particular.
That’s the reason I recommend people like Deutsch for anyone interested in philosophy of computing. He gets it. It’s all about choosing an abstraction for the purpose of exploring an idea, allowing people to push their imaginations to - but not beyond - the theoretical or hypothetical limitations within a framework.
Perhaps it’s because he is a scientist, perhaps the concept of “model a thing for a problem then look at the problem” is inherent to his world view and “model a problem for the sake of modelling it and explore whether or not other people might have thought of this model before” is the philosophical world view, but if that is the case then it turns out I don’t have respect for philosophy.