TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Is computer science really a science?

12 点作者 stevejobs超过 14 年前
How did it come to be that the field of computing became synonymous with science to form the term computer science? As I understand it science is about figuring out and interpreting the natural world as it is and has evolved over time (biology/physics/chemistry). Laws and theories have been formed to understand and clarify how objects are created and interact with each other.<p>Computer science OTOH is more akin to math and engineering than science. While some parts of computer science deal with the natural world like the work on artificial intelligence (which is more about psychology/philosophy than science) most of it deals with programming and electronics than the study of nature.<p>That is not to say that computing does not have value. It certainly does. I just think it is questionable if it deserves the science moniker.

15 条评论

Xurinos超过 14 年前
It is not a science. It is also not about computers. :)<p>SICP lecture 1 -- <a href="http://www.youtube.com/watch?v=zQLUPjefuWA" rel="nofollow">http://www.youtube.com/watch?v=zQLUPjefuWA</a><p>But maybe it is a science: there are certainly a number of things in CS that yield facts about things like algorithms (Big O, etc).<p>I read other comments here that compare computer science to math, and it is not an unfair comparison. However, even amongst mathematicians, you will see something of an avoidance to associate math with science. Math is a framework of a sort, a way to think. When we are talking about how to think, we are talking about philosophy. Science has its own roots in philosophy, so it is not surprising that we see some grey areas here.<p>So let me rephrase it a little... When you learn Computer Science, you learn how to think.<p>People compare CS with engineering disciplines, but we find that there are a lot of methodology salesmen but few magic bullets. The problem with comparing computer programming (the practical side of CS) to engineering is that programming is very difficult to measure. We graduated from the idea of measuring lines of code. We have not figured out how to accurately measure a technique like TDD. We have an idea that code quality can rise when people pay attention to it, when people <i>think</i> about the problem; we can encourage this with code reviews, but we can do the same by encouraging developers to have a good night's sleep. We have conjured approximations for our measurements, but none of this has quite the feel of engineering. We are not building bridges, complete with a starting plan based on knowns and an execution.<p>Algorithms are not building blocks. They are possible solutions to specific problems. There is more than one solution, and the algorithms our professors taught us come with trade-offs. Recently on HN, there was an excellent article and discussion on the trade-off made by grep to improve string searches.<p>So you cannot just pick from your handy dandy book of algorithms, fit them together in a programming jigsaw, and expect results. The world of software is soft; requirements change, and systems change. It is extremely flexible in a way that other, more physical entities, such as bridges, are not.<p>In addition to thinking of CS as a philosophy, I favor thinking of CS as an art. I am communicating something to the computer, certainly, but in order to ensure that my code can be picked up by others or myself a year down the line, I must also dive into aesthetics. The code must be readable. It must make sense, must describe the problem, be expressed in such a way that humans can derive meaning from it. Thus is CS as much about beautiful design as it is about getting results.
frossie超过 14 年前
The problem is that only a few decades ago, computer science was a fairly pure branch of mathematics - now you can argue whether mathematics is a science or not in general, but applied mathematics is nearly indistinguishable from physics in many areas, and computer science certainly flirted with applied mathematics.<p>What gets taught as computer science has evolved rapidly in the last couple of decades and it is my impression that quite a bit of it comes under software engineering now.<p>This is why I get annoyed when you see jobs in the software sector or software management that require a Comp Sci degree. It's actually a subtly ageist requirement - twenty years ago, computer science was not what you did if you were interested in computers - you did physics so they would let you play with their VAX cluster.
btilly超过 14 年前
If it has to put science in the name, it isn't science.<p>Examples, Christian Science, Library Science, Computer Science.<p>That said, it is worth bearing in mind that <i>computer science is no more about computers than astronomy is about telescopes.</i>
评论 #1760662 未加载
评论 #1760182 未加载
评论 #1758581 未加载
gmlk超过 14 年前
In most of Europe it's called "informatics" or "informatica" which at least to me makes a lot more sense: It's the study of information: data, languages, semantics, knowledge, knowledge representation, and intelligence. It has as much to do with computers as that astronomy has to do with telescopes, optics and radios. So it can/could be a science, it could also be mathematics or a philosophy of understanding.
bendmorris超过 14 年前
Yes. But the word "science" is very broad.<p>Sciences are generally classified by "hardness" or (perceived) quantitative rigor. In that respect, from "hardest" to "softest," the sciences are usually ranked roughly like this: Math (yes, math is as much a science as anything else), Physics, Chemistry, Biology, Psychology, and the Social Sciences.<p>Computer Science is, as most things are nowadays, interdisciplinary. As such, it really depends about what aspect of Computer Science you're referring to. Some areas of computer science are more rigorous, and have a lot in common with math and physics. Others, such as "software engineering" etc. fall on the softer end of the spectrum.<p>With that said, I don't think that all programmers are necessarily "computer scientists." They're practitioners of an art. Just like not all doctors are medical scientists - some are, but most are just practitioners.
js2超过 14 年前
The wikipedia entry seems to do a pretty good job fleshing this out:<p><a href="http://en.wikipedia.org/wiki/Computer_science" rel="nofollow">http://en.wikipedia.org/wiki/Computer_science</a><p><i>the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems</i><p>and<p><i>The relationship between computer science and software engineering is a contentious issue, which is further muddied by disputes over what the term "software engineering" means, and how computer science is defined. David Parnas, taking a cue from the relationship between other engineering and science disciplines, has claimed that the principal focus of computer science is studying the properties of computation in general, while the principal focus of software engineering is the design of specific computations to achieve practical goals, making the two separate but complementary disciplines</i>
thingie超过 14 年前
That's just a name. It is of course not a natural science, but a formal one, as mathematics (it could even be a branch of maths). There are even other kind of sciences, social ones, like psychology (which many people wouldn't call a science, though for different reasons, after all it does study natural things, doesn't it?). And of course, there should be a distinction from engineering (electrical e., software e.), though boundaries aren't clear and never will be. If you had a better name for those different kind of sciences, call them in that manner. Also remember, that by saying that something is not a science, it might seem that you are implying that the branch is somehow inferior to the "actual science". (This is not the case, but it is going to be perceived as that.)
CyberFonic超过 14 年前
A computer is a man made device so there is nothing to be discovered in the sense that biology, physics, chemistry required discovery to understand how things work. A computer is engineered and that in turn requires application of chemistry, physics, thermodynamics, electronics and boolean algebra (which is a part of mathematics body of knowledge).<p>Perhaps we should be talking about "computer engineering" which is how we build computers and "software engineering" which is how we build programs to run on those computers. Both of these require considerable learning, experience and planning. Which probably explains why people want to avoid the "engineer" tag, because it sounds like less fun than <i>HACKING</i>.
Zev超过 14 年前
How do you think the parts of the computer work and are developed? Especially processors. There's a lot of chemical and material sciences behind the scenes.<p>I suppose this is also why "Computer Engineering" as a discipline is somewhat growing in popularity.
HardyLeung超过 14 年前
It's just a name.<p>I got an undergrad degree in "Computer Science &#38; Engineering". If you have to nitpick, what I studied was not strictly about "Computer", "Science", or "Engineering". It has bits of computer as in how to build a computer, bits of science as in the mathematics and theories of computation behind it, and bits of engineering as in how to build a large-scale program.<p>Personally I like "Computer Science" just fine. It would be silly for others to mandate CS to be called "Informatics", "Computer Studies", "Mathematics: Computer", "Computational Art", etc.
idoh超过 14 年前
It depends on how you define science. Personally I define science as a process, whereby one has theories and then tries to systematically falsify them. By this measure CS isn't really much of a science, it is more like Math or Engineering.<p>But it is not exactly a black or white issue. It is more of a science than, say, Political Science, in terms of rigor and logic.
hristov超过 14 年前
Computer science is definitely a science. Mathematics is a science and computer science is part of mathematics. Thus computer science is a study of computation or the automatic solution of problems or processing of data, etc.<p>The problem is that in most universities the computer science label is used for things that aren't computer science. Most computer science departments are mostly concerned not with studying or extending the science part of computer science, but with applying computer science to solve real world problems. This really should be called computer engineering or software engineering, just as applying certain aspects of physics to create electrical devices is called electrical engineering.
评论 #1757470 未加载
hottoh超过 14 年前
Computer science is the study of algorithms, the study of algorithms fits the scientific method. Programming and electronics is not computer science. QED.
评论 #1757272 未加载
waterlesscloud超过 14 年前
If you program the way I do, it's certainly an experimental science!
olalonde超过 14 年前
Comes down to if you classify mathematics as a science.