←back to thread

166 points levlaz | 4 comments | | HN request time: 0.002s | source
Show context
ykonstant ◴[] No.41877090[source]
This is a great article and I especially liked the notion:

>Theoretical physics is highly mathematical, but it aims to explain and predict the real world. Theories that fail at this “explain/predict” task would ultimately be discarded. Analogously, I’d argue that the role of TCS is to explain/predict real-life computing.

as well as the emphasis on the difference between TCS in Europe and the US. I remember from the University of Crete that the professors all spent serious time in the labs coding and testing. Topics like Human-Computer Interaction, Operating Systems Research and lots of Hardware (VLSI etc) were core parts of the theoretical Computer Science research areas. This is why no UoC graduate could graduate without knowledge both in Algorithms and PL theory, for instance, AND circuit design (my experience is from 2002-2007).

I strongly believe that this breadth of concepts is essential to Computer Science, and the narrower emphasis of many US departments (not all) harms both the intellectual foundations and practical employment prospects of the graduate. [I will not debate this point online; I'll be happy to engage in hours long discussion in person]

replies(4): >>41877362 #>>41877761 #>>41878005 #>>41887503 #
ninetyninenine ◴[] No.41877761[source]
> Theoretical physics is highly mathematical, but it aims to explain and predict the real world. Theories that fail at this “explain/predict” task would ultimately be discarded. Analogously, I’d argue that the role of TCS is to explain/predict real-life computing.

No this guy doesn’t get it. He doesn’t understand what science is.

In science nothing can be proven. If I say all swans are white as my hypothesis this statement can never be proven because I can never actually verify that I observed all swans. There may be some swan hidden on earth or in the universe that I haven’t seen. Since the universe is infinite in size I can never confirm ever that I’ve observed all swans.

However if I observe one black swan it means I falsified the entire hypothesis. Thus in science and in reality as we know it nothing can be proven… things can only be falsified.

Math on the other hand is different. Math is all about a made up universe where axioms are known absolutely. It has nothing to do with observation or evidence in the same way science does. Math is an imaginary game we play and in this game it is possible to prove things.

This proof is the domain of mathematics… not science. Physics is a science because it involves gathering evidence and attempting to falsify the hypothesis.

Einstein said it best: “No amount of experimentation can ever prove me right; a single experiment can prove me wrong”

Basically newtons laws of motion are a perfect example of falsification via experimentation with relativity later being confirmed as the more accurate theory that matches more with observation.

So what’s the deal with computer science?

First of all the term already hits the first nomenclature issue. Computer science is ironically not a science. It lives in the same axiomatic based world as mathematics and therefore things can be proven in computer science but not in science itself.

So this nomenclature issue is what’s confusing everyone. The op failed to identify that computer science isn’t actually a freaking science. Physics is a science but computer science isn’t.

So what is computer science? Sorry to say but it’s a math. I mean it’s all axioms and theorems. It’s technically math.

CS is a math in the same way algebra and geometry is math. Physics is a science and it is not a math. It’s a totally orthogonal comparison.

Your job as programmers is more like applied math. It’s completely orthogonal to the whole topic but People often get this mixed up. They start thinking that because programming is applied computer science then computer science itself is not a math.

Applied math ironically isn’t really math in the same way writing isn’t a pencil. Yes you use a pencil to write but they are not the same. Same thing with computer science and programming.

replies(9): >>41877794 #>>41878097 #>>41879333 #>>41879798 #>>41880294 #>>41880480 #>>41882001 #>>41882307 #>>41883224 #
1. jltsiren ◴[] No.41883224[source]
If you define science in terms of the scientific method, you make it a fundamentally useless hobby that can never produce anything of value. If falsifying hypotheses is all you can do, you can never create the kind of knowledge others can build on. The part of science that creates value is building models and explanations that can make reliable predictions. And that can be used as building blocks of more elaborate models and explanations for more complex phenomena.

In theoretical computer science, design and analysis of algorithms is the study of algorithms as mathematical objects. The unfortunately named algorithm engineering is the science of algorithms. It deals with algorithms that are written in code and run on real computers. Among other things, it seeks to build models that can predict the performance of an algorithm without implementing and running it.

Then there is algorithmic economics (or whatever it's called today), which was a huge success for theoretical computer science. At least in some amoral sense. The microeconomic models it created enabled turning the internet into the ad-centric data-driven dystopia it currently is.

replies(1): >>41883377 #
2. ninetyninenine ◴[] No.41883377[source]
>If you define science in terms of the scientific method, you make it a fundamentally useless hobby that can never produce anything of value. If falsifying hypotheses is all you can do, you can never create the kind of knowledge others can build on. The part of science that creates value is building models and explanations that can make reliable predictions. And that can be used as building blocks of more elaborate models and explanations for more complex phenomena.

You don't define it this way in common parlance or even in articles. But you do need to heavily define it this way when categorizing things. If you don't do this you have a categorical mishmash where nothing is ever truly defined properly and filled with fuzzy meanings. See the word "entropy" there are at least 3 definitions for that word and these definitions confuse people and lead most people to not completely understand the concept of what entropy is EVEN at just an intuitive and fuzzy level.

I realize it appears that I'm being overly pedantic and inflexible but this is NOT the case.

To be flexible means you need to understand why language SHOULD NOT have rigid definitions in certain contexts but also WHY it should be extremely rigid and concrete in other contexts. You need BOTH. When it comes to categorization on what is "theoretical computer science" and other very technical topics we Need to have well defined categories and definitions.

The fuzziness of literature and poetry which remains open to interpretation has significantly lower utility in technical fields.

replies(1): >>41883628 #
3. jltsiren ◴[] No.41883628[source]
Now you are assuming that rigidly defined science is a useful category. I'm less sure about that. It's certainly not a universal category, as the concept does not even exist in many European languages. Instead of "science", they have something like "Wissenschaft". It has retained the original wider meaning, while English "science" has narrowed in scope. There can be subdivisions such as "naturvetenskap", but they are typically defined by the topic of study rather than the methods used.
replies(1): >>41883772 #
4. ninetyninenine ◴[] No.41883772{3}[source]
>Now you are assuming that rigidly defined science is a useful category. I'm less sure about that.

It's useful for categorization (which is the overall topic). For formalization of concepts. Formalization is always useful for technical concepts. Programming is one of those things that requires formal definitions.

It's probably less useful for common communication. But that's not what I'm referring to. Sure in communication we don't require technical definitions. I'm not arguing for whether MY definition has utility in a variety of contexts.

I'm simply saying for the rigorous categorization being performed by the OP on what "theoretical computer science" is.... he should ALSO use the rigorous definitions of the Categories themselves.