> You will never find a non-CS > person, or anyone else, solving an problem deemed impossible by CS > theory, because such problems are not computable.
Hoisting theories to fact. These are the problems I am talking about. CS proofs are one thing, but theories are another entirely. History has many examples in all fields where great advances because theories were ignored (but more cases exist where failures were made because good theories were ignored). > If it looks like > they did, then they only thought they solved the problem. They either > solved something else, or the solutions are wrong. Quite likely. But the person didn't spend a lot of time caring about the theory. They just did their job and solved the problem - and they may run into scalability problems soon, but in the meantime they are raising venture capital on their product that is already to market. > Your argument seems to me equivalent to saying that lack of training > in physics gives you a better shot at designing physically impossible > devices. My fault in using too much hyperbole with words such as impossible. My argument is closer to saying that lack of training sometimes allows one to focus on the problem rather than become mired in details (you may not cover every edge case, but that's ok some of the time). > Despite your words, no one is going to successfully build a > perpetual motion machine, because such things are impossible. And there is a proof to back it up (well in this case a law), not a theory. > There are plenty of problems in computing that are varying degrees of > hard, though, and a particularly bright, but untrained, guy might find > a solution to a problem hard enough that trained CS guys don't want to > spend time on. In general, this is vanishingly unlikely. I'm not talking about untrained people setting out to solve specialized problems. This is extremely unlikely and most of the time it is absurd. I am talking about programming. I am not talking about CS theories. An untrained programmer like myself has a near 0 possibility of solving an unsolved CS problem. But I have tackled plenty of programming problems. > I think your paragraph above is self-rationalization that your choice > of study was superior, I stopped talking about Engineering in my first post. Though I used Engineering as a good path to follow, my other ramblings were more about non-CS people than they were about engineering people. My first post said that the choice of field of study was tied to what somebody wanted to do with their life. If someone wants to be a programmer and has no knack for programming, then CS would be superior because learning about the tools can help you learn better how to use them. If they want to be a programmer and already have an aptitude for programming already, then I'd say any degree that encourages plenty of math would be adequate. I generally try to stay out of discussions such as my editor is better than yours, or my programming language is better than yours, or my degree is better than yours. I simply don't care. I have a job to do. And the tools I have chosen let me do it to a degree that satisfies me. I know that you understand more about software and are most likely a better programmer than I am. I think that that says more about you and your abilities than it does about a CS degree. I don't feel inferior just because I don't know as much about CS. > and that CS really wasn't worth your time. Maybe it wasn't worth your time to learn, but it's a very important field. Actually, I've always wished I'd double majored or at least minored in CS. I guess an ounce of hindsight... > I think it's more akin to requiring the surgeon to learn all sorts of > things like biology, biochemistry, etc. when they could really perform > surgery just as well if a competent surgeon just showed them how to do > it... That wasn't my example. My example wasn't about the procedure the surgeon was going to use. It was about his tool the scalpel. He doesn't need to know how the tool was made (manufacturing). He doesn't need to know about how the ore for the tool was chosen, mined and purified (metallurgy). Those are the things the tool maker needed to know. The surgery procedures, the anatomy, the chemistry, the biology are all the surgeon's craft. He better know those. > There is a great deal of work to be done still in the theory of > computer science. It informs the creation of new and better tools > that will lead to more reliable, more powerful hardware and software. Hooray! (that is a real hooray - no sarcasm here - everybody loves better tools) > Without computer science, we'd still be programming in assembly > language or primitive Fortran. Sure, people with no training would > still be able to solve problems, but they wouldn't be anywhere near as > impressive as they are now. Ding ding ding. Yes. My points exactly. We have tools (higher level languages) that have abstracted the science away that let us solve complex problems. Ah, we are finally on the same page. > It is, as Hans said, an essential foundation to computing. There are > certainly jobs in the computing world that don't require learning it, > but someone had to learn it to enable those jobs. Let me quote my last post: > > (though those > > who accomplish great things should acknowledge the existing > > tools/foundations they built upon). I'm grateful for the tools. I always want better and better tools. Yes. We need better tools. I am grateful for computer science that helps give us more tools. I'd rather make cabinetry than make wood working tools. I'm grateful that somebody created tools to help me more easily make a cabinet. Sometimes I wish I had the resources to make a wood working tool because I think it is interesting. I know there are people who still hand craft (hand powered tools only) cabinetry, but I'm glad that I don't have to. I can use the higher order tools to get my job done quickly. Would you rather create a saw or cabinetry? I'm glad that there are people who do both. In programming sometimes I find a tool lacking and I start looking for a solution. In these cases I've wished a had more CS experience so I could better create my own tool. But for the most part I use my database without working about database engine design, I use my webserver without worrying about tcp or protocol or network, I use my language of choice without worrying about compilers or assembly, I use my objects without worrying about object theory, and so on and so on. Sometimes I have to worry about these things, but I'm glad that in my job as a programmer, most of the time I don't have to worry about my tools, I just have to know how to use them. It is the MacGyverism thing all over again. Generally, CS is the creation of tools that the creation of tools from existing tools. Programming is the using of tools. Paul /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
