Home
28 comments
espeedalmost 13 years ago
"Underlying our approach to this subject is our conviction that 'computer science' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called <i>procedural epistemology</i> the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of 'what is.' Computation provides a framework for dealing precisely with notions of 'how to.'"<p>-- Preface to the First Edition of <i>Structure and Interpretation of Computer Programs</i> (<a href="http://mitpress.mit.edu/sicp/front/node3.html" rel="nofollow">http://mitpress.mit.edu/sicp/front/node3.html</a>)
评论 #4355654 未加载
评论 #4356466 未加载
polshawalmost 13 years ago
As someone with an engineering degree, it does irk me to constantly hear programmers referred to around these quarters as 'engineers', it's extremely introspective, and IMO a little disrespectful. Similarly to the 'are you technical?' thing, why is there such an aversion to the term programmer or software developer?<p>I have no problem with the term 'software engineers', as i do seem <i>some</i> parallels, and it is clear what you are talking about, but please leave the straight up 'engineering' term to those dealing with the physical world.<p><i>E:</i> most replies and downvoters seem to have missed that I have no problem with the term where it is unambiguous. You wouldn't call a software architect simply 'an architect' (would you?).
评论 #4355470 未加载
评论 #4355464 未加载
评论 #4355571 未加载
评论 #4355895 未加载
评论 #4355237 未加载
评论 #4355242 未加载
评论 #4355663 未加载
评论 #4355255 未加载
评论 #4356455 未加载
评论 #4355670 未加载
评论 #4355759 未加载
评论 #4355804 未加载
评论 #4355392 未加载
评论 #4355644 未加载
评论 #4355438 未加载
padobsonalmost 13 years ago
So, building a bridge is an engineering endeavor.<p>Does this mean that drawing blueprints for the bridge is not engineering? What about working a crane? Laying brick? Sealing pavement? Sweeping the bridge?<p>Could you say that an AWS datacenter is not a feat of engineering? Certainly writing the software that powers it is as important as any other discipline, and every piece of its execution has definable metrics to measure performance.<p>I've known janitors who sell accounts and measure their foot steps to find the fastest cleaning path. If you sell janitorial services for $2000 a month and it only takes you 2 hours a night to do a job, then you'll make as much money as some engineers. Not that salary is the measure of an engineer, but using math and science to maximize favorable outcomes should be.<p>Or maybe thats just the measure of a hacker.
评论 #4355874 未加载
评论 #4355975 未加载
foldingstockalmost 13 years ago
"But we don't have this in software designs for the most part. We have the requirements, such as what the input and output looks like and the run-time constraints which dictate the maximum time a given operation is allowed to take. But there is much in-between these that is elusive to objective metrics. "<p>I pretty much stopped reading here. Elusive to objective metrics? I agree that you can't measure a program like you would a bridge, using physical laws such as physics and chemistry, but you very well can measure many aspects of it such as: efficiency, size, required resources, relative ease of use, etc. Just because it is not a physical thing doesn't mean we can't use a "scientific method" approach, we just need to be open to using metrics that exist in the digital realm.
评论 #4355206 未加载
评论 #4355954 未加载
评论 #4355397 未加载
betawolf33almost 13 years ago
The contention that Computer Science is not a science because on opening a CS textbook you get confronted with a number of mathematical concepts seems a fairly ridiculous one. The same argument could be made to say that Physics is not a science, after all.<p>The problem is that there's a conflation in most people's minds of the terms 'computer science' and 'programming'. Computer Science courses teach you how to program, so this is understandable. But the research that goes on in Computer Science departments is not all about 'how to program'. Hypotheses are generated and tested for specific end-goals.<p>Sure, CS is highly mathematical in its execution, and the introspective areas of research are thus mathematical. Some of the research in the Algorithms areas is probably best published in mathematical journals. But that's not the whole science. What about measurements of routing efficiency in Networking? What about HCI? What about Ubicomp? What about NLP, or even AI in general? Even if they are using mathematical principles in forming their systems for experimentation, they're still doing science. Hell, all sciences rely on maths somewhere.
评论 #4356107 未加载
yanatan16almost 13 years ago
Quote from <a href="http://wikipedia.org/wiki/engineer" rel="nofollow">http://wikipedia.org/wiki/engineer</a>
"An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics and ingenuity to develop solutions for technical problems. Engineers design materials, structures and systems while considering the limitations imposed by practicality, safety and cost. The word engineer is derived from the Latin roots ingeniare ("to contrive, devise") and ingenium ("cleverness")."<p>Software engineers definitely fall under this definition.
评论 #4355602 未加载
评论 #4356660 未加载
robocaptainalmost 13 years ago
I only clicked on this link because I saw the geocities.com. I was expecting more BLINK tags and animated gifs :(
评论 #4355195 未加载
评论 #4355183 未加载
评论 #4355341 未加载
Juniperalmost 13 years ago
Reminds me of the statement by I think H. Abelson though it might have been Sussman (from their SICP video lecture 1)that goes something like :<p>Computer Science is not a science and it's not about computers.
Computer science is only about computers in the same way that physics is about particle accelerators.<p>That was the gist of it anyway
评论 #4355402 未加载
currywurstalmost 13 years ago
My favourite quote from the article "... studies suggest that the paradigm or language that a given developer is most comfortable with is the one that makes them the most productive. This would mean that to get optimum productivity, hire a bunch of like-minded developers who are fanatics of a given language or tool."
t_larkalmost 13 years ago
The cross discipline Engineering workflow is:
1. define metric of success
2. fiddle with system till metric is high enough.
3. <optional> research alternative 1.s and cheaper 2.s<p>Real software engineering, e.g. profiling optimization, is <i>definitely</i> a branch of engineering. Research into software architectures, is not.<p>Science is about disseminating the unknown. You do not do science in most software jobs. You are doing science if you publish your results in scientific journals. An example of real computer science is understanding how discrete systems (such as DNA or CPUs) can turn into complex systems (such as life or A life).<p>The author of this article has very little understanding of engineering or science.<p>From a Engineer/Scientist
OlivierLialmost 13 years ago
In Québec Software Engineering is covered by the "Ordre des ingénieurs du Québec".<p>Software engineers have to come from accredited engineering schools and take the same exams as engineers from other fields.<p>They are also required to follow the same code of conduct.
评论 #4355506 未加载
valdiornalmost 13 years ago
As a trained electrical engineer, working as a software "engineer", it is my opinion that those quotation marks I just used are necessary.<p>I may be an engineer, but I'm not employed as one, even if it says so on my business card.
评论 #4355626 未加载
fiatpandasalmost 13 years ago
And, software architecture is not architecture.<p>;)
dromidasalmost 13 years ago
This article truly deserves 'TL;DR'.<p>BUT, having lightly skimmed it, I get the general idea because "real" engineers have been whining about the Software Engineer title since nearly the first day I was at college like 11 years ago.<p>Oddly, perhaps, I haven't ever heard scientists complain that computer scientists aren't scientists.<p>I can't speak so much about software engineers as that is not really what I do, but as a computer scientist I can say without reservation that it is indeed a science. Research and experimentation is a core part of a lot of what computer scientists do. Solving problems that had no solutions until you came along and invented them.
acheronalmost 13 years ago
I don't know anyone who especially disagrees with this, but etymology is not a consistent process. The term "software engineering" evolved for various reasons; whether the discipline is actually covered under "engineering" is as relevant as whether or not you're actually killing 1/10th of a population when you "decimate".<p>Also, reminds me that my favorite description of my school (<a href="http://www.wpi.edu" rel="nofollow">http://www.wpi.edu</a>) was that it specialized in "science, engineering, and computer science", since of course CS is neither science nor engineering.
m0skit0almost 13 years ago
I almost do not agree with anything you say in this article, and I'm not entering the details since most of them has already been commented here, but just a point I feel like missing: software IS bound to laws of physics and chemistry, because it runs on hardware, which is bound to such laws. Most of the time, when engineering software (which is NOT the same as coding/programming) you must take into account the hardware limitations, and on last instance, test that software on some hardware and do optimizations where needed.
stephengilliealmost 13 years ago
"Computer" science is more like "computational" science - reducing everything to numbers, using logic to make safe assumptions and find paradoxes, etc. Humans can't compute as well as transistors so we use them for all of the heavy thinking.<p>It's engineering in the same way that constructing a stainless steel table is mechanical engineering (buy a sheet, cut it, put 8 bends in it, weld corners, grind corners, polish corners with acid, weld legs on, grind leg welds, polish leg welds)
philhippusalmost 13 years ago
The software "engineering" argument is debatable, but computer science certainly implies some classical scientific principles. Areas such as quantum mechanics, relativity theory and thermodynamics are relevant in computer studies. The subject of "Computer Science" is vast, at least equalling the scope of more accepted scientific disciplines and probably stretching beyond.
nlz1almost 13 years ago
geocities.com sites are still there???
评论 #4355257 未加载
评论 #4355751 未加载
评论 #4355372 未加载
SeanLukealmost 13 years ago
> Some suggest that instead it is "engineering", not "science". But engineering is nothing more than applied science.<p>This seems to be an entirely self-serving and arbitrary definition on which to base his argument.
webcowboyalmost 13 years ago
Also, Political Science.
Xyzodiacalmost 13 years ago
Try telling that to my university, the majority of my non CS classes that are required are suffixed with "for engineers".
amykharalmost 13 years ago
I never understand how such old content suddenly becomes popular around here. This article is from 2005.
brandontrebalmost 13 years ago
I can't trust anything this guys says since he's running on geocities.
mahmudalmost 13 years ago
Ahhh yes, tablizer. He is still around I see.
vampirechickenalmost 13 years ago
A chickpea is neither a chick nor a pea.
ten_fingersalmost 13 years ago
For computing being 'engineering', that is an old sore point with me. I believe that computing should be engineering but so far really misses some key points.<p>Here, close to the article, is an example of some of what is missing:<p>In engineering for, say, a bridge, the design engineer can get quite comprehensive data on the 'engineering properties' of the materials, components, and processes he is intending to use. E.g., he knows the stiffness of steel beams, the tensile strength of steel cables. and how much weight a reinforced concrete column can carry.<p>Now in computing, for an algorithm, what do I know about the resources it requires? E.g., I just wrote a Web site session state store using TCP/IP for communications, my own code to convert the TCP/IP streams to the 'messages' I needed, and Microsoft's .NET collection class SortedDictionary to store the pairs of session keys and session values. So, how do I know fast my code will be and how much storage it will need? That is, could I get data on TCP/IP and SortedDictionary so that I could tell before writing and running the code?<p>That is, do I have solid engineering information about the components I used that will let me know, before writing and running the code, the final performance of my software?<p>NO!!!<p>Instead, about all I can do is run the code and measure the execution time. For the storage needed, I don't have a good solution even given the running code.<p>So, by analogy, if bridge building was like software writing, then a bridge engineer would not know how strong his bridge was until he built it and tested it with loads.<p>So, net, the bridge designer can 'engineer' his bridge just on paper before any construction has started, but I can't do the same for my session state store.<p>Again, a big difference is that the bridge engineer has detailed engineering information on his components and I do not.
评论 #4357229 未加载
eswangrenalmost 13 years ago
I am first and foremost a software guy, but I work in a systems group. I write hardware device interfaces. I solve problems in the physical world. Motion control, digital imaging, electronics. Many of the problems I solve on a daily basis are problems of physics, yet I solve them (mostly) in software. I think the term "software engineer" applies here. Let's not forget that there are many, many engineers just like me who do not write CRUD and web apps every day.