Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Perhaps this is just an overly futurist version of those "does programming have a future" topics, but the questions been on my mind a lot lately. Maybe you've seen this future timeline or things like it, and one of the predictions it makes is that by the year 4000, computer science will be dead as a science. That is to say, that the hardware will have reached the limits of physics and that all the problems of algorithms and software will be solved.

Is that a thing that can happen? I could see how, theoretically, physics might reach an end point where you've found all the natural laws there are. But I'd always considered computer science to in some ways be more like economics, a field about decisions and trade-offs. Or could we someday discover all the algorithms, and then it's just a matter of software engineering to select the most appropriate one to use?

share|improve this question

closed as not constructive by ChrisF Jan 30 '12 at 22:47

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

I believe the author confuses "computer science" with computers, which are two very different things. If I recall correctly, Dijkstra once said that computers are related to CompSci the same way telescopes are related to astronomy. Computers reaching it's "fullest potential", wherever this has actually meaning, has little to do with the possibilies CompSci has. –  Vitor Mar 25 '11 at 13:13
Maybe we should let the people in the year 3900 worry about this. :) –  birryree Mar 25 '11 at 13:14
Maybe we should write a program to test if computer science is finite? –  Alison Mar 25 '11 at 13:27
I'm more interested in the predicted 2012 cure for baldness. Yeah! –  Vitor Mar 25 '11 at 13:39
Would you say a similar thing about Biology? That uses parts that are as small as it gets, and yet it keeps 'evolving' and 'maturing'. We may find something more effective than the current box we flip the power on every day, but computing as a field of study will never cease to evolve. –  Spacemoses Mar 25 '11 at 13:47

8 Answers 8

The short answer, No...

The long answer:

People have been cooking since we discovered fire. Does that mean that every possible recipe has been discovered/perfected.

Programming is a lot like cooking (except we're in the cornmeal/water/campfire stage of programming). There are a lot of common ingredients but if you don't put the right ingredients together in the right order, you'll get a bad result.


Designing algorithms is like trying to design ideal ingredients (high gluten flour for chewy breads, shortening for soft flaky pie crusts). If you do it right it'll make a good recipe really good.

Note: Thought I'd add this 'cause it's a fun metaphor.

share|improve this answer
Programming isn't computer science. This is more than a pedantic point. Whereas engineering disciplines (and, for the purposes of this discussion, I believe programming falls under that) are constantly pushing boundaries -- either we're trying to come up with new ways of doing things (e.g., build a better bridge) or push the limits of our knowledge (e.g., build a bigger skyscraper), science has other concerns, namely the acquisition of knowledge itself. Is it possible we could eventually reach the limits of computational knowledge? –  mipadi Mar 25 '11 at 14:33
@mipadi You're breaking my back with semantics. If programming is considered just a sub-field of computer science (only part of what computers are capable of) and it's impossible to find every ideal permutation of every program possible (because of the sheer number of combinations) isn't it conceivable that the field is in fact not solvable. C'mon now, I even threw in a peanut about algorithm design (materials design is a pretty good comparison) to satisfy the 'Computer Scientists' in the audience. –  Evan Plaice Mar 25 '11 at 14:57
@Evan Plaice: I wasn't being pedantic; I even emphasized why my point wasn't purely one of semantics. Programming a isn't subfield of computer science; rather, it uses concepts from computer science to do work, just as civil engineering uses concepts from physics to make something useful. I think this is an important distinction: many of the answers thus far revolve around the idea of "no, because we can always make something better," but doesn't really address the central idea of "does a given field of science have limitations to its knowledge?" –  mipadi Mar 25 '11 at 15:04
::long sigh:: If programming... Which is just a higher level abstraction of machine code, is a subset language of Computer Science (the science of computing things) to describe how to make computations in a general electrical computer, and if all of the permutations of theory and practical application can't possibly be explored because of the immense complexity of such a problem. Then no, there are no such limitations on knowledge. –  Evan Plaice Mar 25 '11 at 15:31
I just think that many answers here, including this top-voted answer, are dismissing the OP's legitimate question without anything more than a cursory or superficial analysis. It seems to be a collection of knee-jerk questions that implicitly show a belief that the OP's question is dumb, or at least short-sighted, when it's actually an intriguing idea, no matter which side of the argument you lie on. If you're not interested in an actual discussion, why'd you respond in the first place? –  mipadi Mar 25 '11 at 16:51

There's a reason that the most respected and seminal books about this discipline are collectively called The Art of Computer Programming. There's a great deal of intuition, accumulated experience and simple 'knack' that goes into making a great software developer, just as those things tend to distinguish a great artist from someone where merely applies paint to a canvas.

While there is clearly a science side of hardware and software engineering, the practical application of the products of that research is something that is more open-ended. Moreover, you can take two people with the same academic background, the same understanding of data structures and algorithms, and one of them is simply going to produce better works than the other for no tangible or quantifiable reason.

So, yes, it may come to pass that someday we will have reached a point of diminishing returns in computer research, but the practical disciplines of problem analysis, systems design, human-computer interaction and general software development are unlikely to truly stagnate as long as we are still using computers.

share|improve this answer
Question is about computer science, not programming: "Or could we someday discover all the algorithms, and then it's just a matter of software engineering to select the most appropriate one to use?" –  Nils von Barth Jul 6 at 2:18

We know all the natural laws of physics that are of any practical importance; there's quantum electrodynamics and gravity. But we still can't predict the behavior of complex systems. As long as the universe is bigger than our computers, there will be work to do.

share|improve this answer
We know all of the laws of physics that are of any importance until we discover the next one that is of any importance. –  Adam Crossland Mar 25 '11 at 14:15

I guess your problem is more towards, "what if the computing capacity of hardware is exhausted?" Do not worry, no one can predict the future (I weep everytime I watch 2001: A Space Odyssey: we should have been up in space, but we are busy browsing our iPhones)

  1. Currently, the computing power is not a concern, which is why software/firmware are not fully optimized. Optimization is a separate branch, which still has scope for improvement - in automating. (my favourite example).
  2. Algorithms are not exhaustive. The current 'algorithms' do not solve many engineering problems, wherein engineers resort to heuristics. As long as there are heuristics, software improvement is possible, there is scope for algorithms. Heuristics will continue to exist, as the boundaries of engineering are pushed.
  3. Computing engineering in itself is pure mathematics. When applied to different real world engineering problems, the problem space increases. For e.g., I would not mark mechanical engineering to have reached its bounds, because the concept of integral calculus is now well explored and understood.
share|improve this answer

It wasn't all that long ago when it was taught (with certainty I might add) that there were only a handful of elements (water, air, fire, etc), and that the world is flat, among other things that have since been proven false. And some of the theories that proved those notions false have been also proven false and replaced. Yet each time science comes up with a new theory it is always taught and considered to be absolute truth (while they say that it isn't) until such time as its proven false and replaced. 2000 years is long time. Likely many discoveries will occur in that time and the world as we know it will be understood far better than it is now. That being said I don't think this field is necessarily "solvable". I think there will come a point where they attack the current problems from a different point of view. Then they'll reach a limit again eventually and they'll have to make discoveries again and readjust. But time and time again people's predictions of the future have been proven false when it comes to science and technology advancement. Yet that advancement has happened anyways. Weren't we supposed to only ever need 5 computers in the world and none of those would be for personal use? I mean who would need a personal computer?!

EDIT: Moral of the story don't put faith in future predictions that predict the end of advancement and don't trust scientists that while saying otherwise imply very strongly that the world as we know it won't be understood differently than it is now.

share|improve this answer

Or could we someday discover all the algorithms, and then it's just a matter of software engineering to select the most appropriate one to use?

Suppose that we have infinite computing power, would the choice of algorithm be a problem? Most of the problems we deal with are inherently problems that are caused by our technical limitation.

Adding a comment to @Adam Crossland answer:

IMO the statement is true until we reach the technological singularity.

How will technological singularity affect programmers?

share|improve this answer
As I understand it, part of the point of 'the technological singularity' is that predicting what life we be like after it is nearly impossible, so it's virtually tautological to say, "I agree but maybe not after the technological singularity." For my part, I am much more concerned with the world being radically changed by asteroid impact than superhuman intelligence. –  Adam Crossland Mar 25 '11 at 14:14
@Adam I agree, technological singularity may be one of many other factors. –  Amir Rezaei Mar 25 '11 at 14:26
We don't have infinite computing power, and we never will without some interesting changes to the laws of physics. We will always have technical limitations. –  David Thornley Mar 25 '11 at 14:41
@David It's an example. The computing power is arbitrary in applied context. –  Amir Rezaei Mar 25 '11 at 15:34
And then somebody changes the context. Any program that ran on my first home computer in reasonable time will go like a flash on my current one, yet it still is slow at doing some things. I figure my current one is somewhere vaguely around a million times as powerful (CPU speed up by a factor of a thousand but more powerful in other ways, memory sticks maybe a million times as capacious as floppies, main memory only about 40K times as big but better in other ways....), but it doesn't run all modern software instantly. –  David Thornley Mar 25 '11 at 16:52

all the problems of algorithms and software will be solved.

That's a post-condition of all problems of mathematics being solved.

After you've solved all problems of mathematics, you can pat yourself on the back for also have solved all problems of computer science.

share|improve this answer
If P=NP then we might one day essentially solve all of mathematics (well at least all that can be's been proven that some of it can't). –  Michael McGowan Mar 25 '11 at 15:46
@Michael McGowan: Nope; general theorem proving isn't in NP, so P=?NP doesn't tell us much about that. Heck, whether a theorem can be proved isn't even decidable. –  David Thornley Mar 25 '11 at 16:56

I look forward to Quantum Oriented Programming (QOP). Someone will build a quantum computer and everyone else will hate it and say, "Why bother, regular hardware is so cheap." We'll have Potential Bug Tracking. You won't have to worry about source control branches because code will just branch out all over the place on it's own; just pick one.

Most communications will be so thoughtless that no one will care if they get delivered or not. Did that bank wire go through? Good thing we don't need money. Facebook hits will be the new currency.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.