Slashdot Mirror


Forget Math to Become a Great Computer Scientist?

Coryoth writes "A new book is trying to claim that computer science is better off without maths. The author claims that early computing pioneers such as Von Neumann and Alan Turing imposed their pure mathematics background on the field, and that this has hobbled computer science ever since. He rejects the idea of algorithms as a good way to think about software. Can you really do computer science well without mathematics? And would you want to?"

942 comments

  1. Re:I am able by Anonymous Coward · · Score: 3, Funny

    Correction, make that minus one.

  2. Damn straight! by Anonymous Coward · · Score: 4, Insightful

    Who needs math? Bogosort is a good a sort algorithm as any. Hey, without math, how would you be able to tell?

    1. Re:Damn straight! by eclectro · · Score: 4, Funny

      No maths means more girls. Hey, I'm all for it.

      --
      Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
    2. Re:Damn straight! by Anonymous Coward · · Score: 0

      as a CS major, i sucked at all the math subjects that were supposed to be a given for a CS major, HARD, but i still consistently was at or near the top of my class in anything involving actual programming, wrote cleaner, more efficient code, and was able to troubleshoot code much better than virtually all my peers. in point of fact, math is not important at all, there just tends to be a correlation between strong programmers and strong mathematicians. but correlation is not causation, it is true that math and computer science can be thought of along the same logical lines, but there are other ways to think, and i just happen to be one of those other people. yet another stereotype that has gone on for far too long.

    3. Re:Damn straight! by Anonymous Coward · · Score: 0

      It's a misconception that CS is all about programming, if you ask me. How the fuck are you going to understand a concept like computer vision, or compression algorithms, or encryption, from a purely programmatic perspective? It's not as if the code itself behind any of these ideas is particularly complicated, after all.

    4. Re:Damn straight! by Anonymous Coward · · Score: 0

      How would I be able to tell? Simple. I measure bogosort performance against shellsort, quicksort and my own rumplsort. What I need is just some datasets and a timer. As I don't bother with worst case analysis but use perfectly natural data to get real world results I don't need any math.

      Well, while even that reasoning is flawed (can spot the flaw?), the real question is: How would I tell you, or anybody else for that matter. And how to I tell you how I constructed my rumpsort, and why I feel it is so great. Although there is a a point with the notion that math often fails to deliver on its 'promises' regarding IT topics (anybody remember the by now mostly forgotten hype around formally proving corretness of software products) and it is a shame how little we can actually really prove in that area. But, lets take NP completness as an example, this is besides the point. Of course it would be great to have a solid proof for
      P!=NP (or P=NP), but without math we wouldn't know how to talk aboutt the problem, even if you'd concede that some of the more ingenious could 'intuitively feel' that the problem existed in the first place. I'd recommend to the books author to think of how he'd facilitate efficient communication regarding (complex) problems (i.e. strip set theory from relational database management systems and try to convinbce somebody that it would be a good idea to use these although you can come up with a faster solution that needs less space quite easily.

      Math in computer sciences is as much means of efficient communicfation (its lingua franca, if you want) as just a vehicle to pile up meaningless proof on top of other meaningless proof. It enables us to speak with one another and occassionally even understand. I'd not throw that over board that easily.

    5. Re:Damn straight! by McGiraf · · Score: 1

      "Who needs math? Bogosort is a good a sort algorithm as any. Hey, without math, how would you be able to tell?"

      comparative tests? Logic? plain common sense?

    6. Re:Damn straight! by Firethorn · · Score: 3, Insightful

      From my experience, it might mean less girls.

      My last honors math class had 3 boys in it, out of twenty.

      --
      I don't read AC A human right
    7. Re:Damn straight! by Fordiman · · Score: 2, Insightful

      Does boolean arithmetic count as math? I would say so.

      I dunno. The guy's argument from the article seems kinda flawed.

      "A logic circuit is not a sequence of operations."

      No, it's a subset of a sequence of operations. It's a component that fits into a deterministic set thereof, and *should* be calculated via boolean or classical arithmetic.

      "An operating system is not supposed to terminate, nor does it yield a singular solution."

      Then what's "Shut Down" do? And while it doesn't yield a singular solution, it yields a given solution for a given set of inputs.

      "An operating system cannot be deterministic because it must relate to uncoordinated inputs from the outside world."

      Non-sequitur. Inputs and processes being parallelized does not preclude the individual logical paths from being deterministic, even if the logical paths use each others' states as inputs.

      "Any program utilising random input to carry out its process, such...is not an algorithm."

      An input does not determine the qualities as an algorithm; even if the random is a preferred or generated input, it's counted as external to the program.

      Not to mention that internally generated randoms are algorithmic in nature.

      No, seriously. It seems that his entire argument is directed towards changing semantics to take the emphasis off of the mathematical underpinnings of computer science. Rar.

      --
      110100 1101000 1101000 1100110 0 1101111 1101000 1100011 1
    8. Re:Damn straight! by sanman2 · · Score: 5, Funny

      Bah -- "more", "less" -- these concepts are so mathematically antiquated.

    9. Re:Damn straight! by WGR · · Score: 4, Insightful

      Figuring out which sort to use is very seldom what a computer software creator does.

      mathematics as a base for CS was great in the 50's and 60's, but the real problems in computer software are people problems, not algorithmic ones. Once you program a calculation correctly, it generally stays that way.

      But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs. Understanding what parts of a program are going to be changed because of changing user needs is more important in program design than deciding whether you need a heap sort or insertion sort. Yes, you should know the difference, but you seldom need to program it, just choose the correct one from the system library.

      CS graduates tend to design programs for machine efficiency, not human efficiency. But it is humans that are expensive, not machines.

    10. Re:Damn straight! by Anonymous Coward · · Score: 5, Insightful

      as a CS major, i sucked at all the math subjects that were supposed to be a given for a CS major, HARD, but i still consistently was at or near the top of my class in anything involving actual programming, wrote cleaner, more efficient code, and was able to troubleshoot code much better than virtually all my peers. That's like a mechanic who is better at replacing a tie rod than the engineer that designed it.

      You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms. It is too bad they didn't teach you the difference between compsci and programming during day one of your CS program.

    11. Re:Damn straight! by Orestesx · · Score: 1

      High school math, right? Girls stop taking math after high school.

    12. Re:Damn straight! by VENONA · · Score: 1

      See the AC post #19789171 above. He has a great point about the math being an invaluable communications tool, if nothing else. A discussion couched in terms of, "My comparative tests showed good results," means describing the tests. The various asymptotic notations provide a powerful shorthand, allowing you to say, "The way I have this thing coded now, it runs in polynomial time, and shouldn't. My algorithm sucks."

      Logic will only take you so far, and common sense isn't common. Math isn't needed everywhere, but it's definitely a nice tool to have in the box.

      --
      What you do with a computer does not constitute the whole of computing.
    13. Re:Damn straight! by gordo3000 · · Score: 1

      I thought they stopped by middle school to become more attractive to the popular guys?

    14. Re:Damn straight! by Orestesx · · Score: 1

      I agree that's probably why they stop...at my high school though everyone had to take two years of math. In my college math classes, there were very few girls. It's not a lack of ability, as that Harvard president notoriously stated.

    15. Re:Damn straight! by jZnat · · Score: 1

      comparative tests? That's math.

      Logic? Ditto.
      --
      'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
    16. Re:Damn straight! by tyresyas · · Score: 1

      But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs. Understanding what parts of a program are going to be changed because of changing user needs is more important in program design than deciding whether you need a heap sort or insertion sort. Yes, you should know the difference, but you seldom need to program it, just choose the correct one from the system library.

      Yeah, and it's not what Computer Science is. It's people like you that seem to say, "Oh you majored in Computer Science, so you can like, fix them and program and stuff?" I did not go and get a four year education with tuition costing six digits to design optimal form layouts. Furthermore, I am not spending 4 more years of my life on a DPhil so I can write cool software, or manage an IT department, or whatever else you people seem to think a university education is good for.

    17. Re:Damn straight! by Yoooder · · Score: 1
      Precisely! I didn't get the big picture until I had my first interview.

      I was asked if I knew the difference between an engineer and a scientist... which I couldn't clearly define.

      The answer? A scientist creates the tools for an engineer, and engineer uses existing inventions to create a usable product.

    18. Re:Damn straight! by NickFortune · · Score: 4, Informative

      No, seriously. It seems that his entire argument is directed towards changing semantics to take the emphasis off of the mathematical underpinnings of computer science. Rar.

      I think he's astroturfing for the pro-patents lobby.

      One of the reasons you can't patent software in the EU (and probably many other places) is that algorithms are essentially mathematical constructs, and maths is generally regarded as unpatentable.

      So maybe one of the big software houses has decided that the next time they go to court over patents, it might be useful to have a scholarly book saying how algorithms are not in fact math based, and should therefore be patentable.

      It would also explain the odd references to circuit boards - which are another arguing point in the patent debate. If it has a physical expression, the argument goes, then it can't be maths.

      --
      Don't let THEM immanentize the Eschaton!
    19. Re:Damn straight! by Actually,+I+do+RTFA · · Score: 1

      He actually was listing all possible causes: social, economic, innate, etc. and saying that all of them have to be examined. He also was talking about the people at the very top of the math/science academic later, which are predominatly male.

      And, there has been research that shows men have more variation in intelligence (but lower average intelligence), meaning that at any given point, the ends of the bell curve should be prodominately male. I think that was the research he wanted to continue, to see if more than one study found that.

      --
      Your ad here. Ask me how!
    20. Re:Damn straight! by quintesse · · Score: 2, Insightful

      Well, we would be talking about a mechanic who could probably build cars all by his own in new and imaginative configurations sometimes never thought off by the people who designed it. He might not be very good at calculating beforehand how to make the motor run 15% more efficiently though.

      I think with CS we're still in the "tinkerer stage" where wonderfull new things come just as often from the guy working behind his computer in the attic as the computer science major working in some dev center for IBM.

    21. Re:Damn straight! by flyingfsck · · Score: 1

      Not exactly, unless you mean a 'Software Engineer'. In real engineering, engineers have pretty much supplanted the scientists. In all universities, the science departments have withered away and the engineering departments have grown enormously, while the 'out of work' science professors now teach at the engineering faculties.

      --
      Excuse me, but please get off my Pennisetum Clandestinum, eh!
    22. Re:Damn straight! by FredThompson · · Score: 1

      Yup. The key to design is pattern recognition. The mathematical idea of sets is somewhat similar but people who are too strong in math tend to think in only one dimension, for lack of a better term. Classic forms of literature and music also have patterns but the thought process is different than numbers for the sake of numbers. Those people also tend to be good designers.

      I love your analogy. It's the same thing I've used for the past few years when dealing with overly self-important computer programmers. They're technicians, not designers. To put things in perspective, they're the auto mechanics of the information age.

      For the record, I've worked on both sides of this issue. I've been a programmer working on mission critical encryption devices for "national assets." and also designed complete systems.

    23. Re:Damn straight! by Anonymous Coward · · Score: 0

      This agrees with my experience. The engineering departments tend to do more fundamental research than the application focused science departments these days, too, and that's just wonky.

      The fundamental physical problems these days tend to be a bit more cross-disciplinary than they were 50 years ago, which leads to a greater accessibility to those with engineering backgrounds.

    24. Re:Damn straight! by poopdeville · · Score: 1

      Yup. The key to design is pattern recognition. The mathematical idea of sets is somewhat similar but people who are too strong in math tend to think in only one dimension, for lack of a better term.

      Of sets? WTF are you talking about.

      --
      After all, I am strangely colored.
    25. Re:Damn straight! by poopdeville · · Score: 1

      How would I be able to tell? Simple. I measure bogosort performance against shellsort, quicksort and my own rumplsort. What I need is just some datasets and a timer. As I don't bother with worst case analysis but use perfectly natural data to get real world results I don't need any math.

      Or you could just count the number of steps each of those sorts take quicker than you could write and test them. That's how Landau analysis is done on algorithms. Simple counting. Your fear of mathematics is keeping you from counting when it's appropriate.

      --
      After all, I am strangely colored.
    26. Re:Damn straight! by Anonymous Coward · · Score: 0

      You're quite wrong there. Logic doesn't simply equate to math. Sure, you can express certain (limited) kind of logic in mathematical terms; but you can also express logic in a plethora of other ways -- in plain English, for instance -- and also such kinds of logic that don't readily lend themselves into math formulas.

      They way you put it, everything becomes math, and the term ("math") loses the distinctive significance it has. Now express the preceding sentence in math terms ;-)

    27. Re:Damn straight! by WGR · · Score: 2, Insightful

      I have a B.Math in CS and statistics, a CISSP and have taught CS at several colleges and university, so I do know the math.

      But I also have 30 years experience as a developer and consultant in IT security. CS people with your attitude are the cause of most problems with security because you assume that there always is a technical solution to problems. Real problems always involve people and people are what computers are for.

      Remember Hamming's forward to his book on Numerical Analysis.
      "The purpose of all computing is insight, not numbers"

      Without insight into human behaviour and use of computer systems, you risk creating useless shelfware or avionics software that kills people. Read the RISKS digest for the number of cases where software was written without human considerations and thereby caused harm or failed.

    28. Re:Damn straight! by msuarezalvarez · · Score: 1

      I think with CS we're still in the "tinkerer stage" where wonderfull new things come just as often from the guy working behind his computer in the attic as the computer science major working in some dev center for IBM.

      That impression is most probably based on your not following what's being done in actual computer science these days.

    29. Re:Damn straight! by Actually,+I+do+RTFA · · Score: 1

      My degree is math, and I am employeed as a computer programmer. I don't design the interfaces, I don't want to, and I'm not skilled at it. I talk to the users (or get my boss to), have the artists draw screenshots of the user interface, and then implement the UI and all the rest of the program (okay, typically, I'm working on the back-end while they work on the front-end). Changing button text from "Ok" to "Cancel" or rearranging forms is something I do when I'm tired after lunch or stuck on a technical question.

      Now, most web developers are really designers, if that's what you're going for. (Yes, many web developers are programmers. I've worked as one with other developers who are more into layout. If you're one I'm not talking about you.)

      --
      Your ad here. Ask me how!
    30. Re:Damn straight! by Anonymous Coward · · Score: 0

      Or you could just count the number of steps each of those sorts take quicker than you could write and test them.

      He focused on the real world though. You will never get real world results if you don't measure the constants. Also, some of the constants aren't, because of limited resources in computers (registers, L1 cache, L2 cache, RAM, disk etc), so you actually have to test on loads of datasets.

    31. Re:Damn straight! by gordo3000 · · Score: 2, Informative

      just wondering, but have you actually read what the harvard president said? I find most people haven't. what he did say was much milder than anything like girls are stupider than boys and unfortunately, this backlash really kills an interesting line of study.

      It was well known that men tend in much greater numbers towards genius and retardation. Part of his reasoning was that there may just be a smaller pool to draw from for the very top coupled with fundamental differences in brain development between the sexes. for example, it's now known women have far more white matter and far less gray matter than men do and some people beleive this man be a reason why men tend to excel in teh mathematics realm(due to the differences in how these areas of the brain approach problems). quick link: http://today.uci.edu/news/release_detail.asp?key=1 261

      I say more research is needed, but people shouldn't be surprised if they find later on that they basically crushed a good man's reputation because of some idea of political correct bullshit. it's said common sense is just a set of biases we develop by the time we are 18; maybe we'll find one day that men and women are just built to process (and therefore excel) differently.

    32. Re:Damn straight! by levork · · Score: 1

      I wouldn't hire you to design rendering algorithms.

      That's funny. I get to paid to work on a renderer. I'd say 95% of my job involves "actual programming" and less math. (Case in point: I didn't do that well in linear algebra in university.) Most of the work in a renderer involves sorting, designing data structures, managing file I/O, efficient caching - in other words, your typical CS stuff. I'm not saying that there isn't occasionally some heavy math lifting involved, but it's less than you might expect.

    33. Re:Damn straight! by RincewindTVD · · Score: 1

      remember, Less is More!

    34. Re:Damn straight! by quintesse · · Score: 1

      Well no, I think it might have to do more with the fact that I meant for the CS in the sentence to be IT in general. So IT is in the tinkerer stage where lots of interesting stuff is being done by the engineering types. If you can't agree with that well I think then you're not following what happens in IT these days ;-)

    35. Re:Damn straight! by tyresyas · · Score: 1

      Insight into human behaviour and rigourous proofs of software code are not mutually exclusive. The poster to whom I was replying specifically used examples of software creation, and specifically cited an example of choosing "optimal form layout." That is not Computer Science. Security of systems, btw, can also (often) be prove mathematically using modelling and structure d programming (and it is). I agree that in a holistic approach to looking at security that "the human factor" becomes huge, and that is a consideration in Computer Science, Software Engineering, etc. But I never said that it wasn't.

    36. Re:Damn straight! by Anonymous Coward · · Score: 0

      He said "I wouldn't hire you to design rendering algorithms."

    37. Re:Damn straight! by kartan · · Score: 2, Insightful

      That's exactly the GP's point. You work on a renderer. You're "replacing a tie rod."

    38. Re:Damn straight! by eonlabs · · Score: 1

      "You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms. It is too bad they didn't teach you the difference between compsci and programming during day one of your CS program."

      THANK YOU!!!!!

      If you are interested in writing code rapidly, you don't necessarily need a math background. If you're interested in writing code well (small file size, small memory size, fast execution) then you had better understand what the mathematics
      behind the program are. ESPECIALLY if you want to be able to prove that your algorithm is smaller, cleaner, and faster.

      It's the difference between advancing the state of the art, and just getting something to work.

      Script Kiddies have more ego than they've earned.

      --
      I wouldn't consider the mad hatter mad. Just reality impaired. He sure can make a mean cup of tea.
    39. Re:Damn straight! by Tablizer · · Score: 1

      That's like a mechanic who is better at replacing a tie rod than the engineer that designed it. You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms. It is too bad they didn't teach you the difference between compsci and programming during day one of your CS program.

      I think this is off-base. They are merely different specialties. The rendering algorithm builder needs a different education and skill set than the business app developer. CS programs simply tend to mix "physical math" into the mix out of tradition, making them better prepared. However, a programmer for a chemical application would not necessarily better benefit from a CS degree because CS degrees do not require any chemistry beyond intro courses. It is just a matter of bundling in education. And, good biz programmers can be hard to come by also. It may be fairly easy to get started as a biz programmer, but that is not the same as being the best. Experience matters. The render expert may initially be a crappy biz programmer because he focuses his energies on the wrong things and does not understand the kinds of changes that are likely to come down the road.

    40. Re:Damn straight! by FredThompson · · Score: 1

      Sorry. I should have typed "set theory", not just "sets".

      You're familiar with the term "normalization" as it relates to databases, right?

      OK, the idea I'm trying to communicate is this concept applies to far more than just text/numerical data. It also applies to people processes. Designing a tool has a large component of recognizing repetitive actions and optimizing them. My point is that people who don't have a habit of looking at situations from multiple viewpoints and methods of symbolism tend NOT to see the "big picture" of a process. Designing a truly useful tool usually means looking at the needs from multiple viewpoints.

      It's the difference between UI design and coding an algorithm. Covey has a classic example of a lumbering operation where the people are all excited about how efficient they are but they're cutting in the wrong forest. Designing is different than coding.

    41. Re:Damn straight! by ClosedSource · · Score: 1

      It's a misconception that the programming field is all about writing lines of code.

    42. Re:Damn straight! by nwbvt · · Score: 2, Insightful

      "mathematics as a base for CS was great in the 50's and 60's, but the real problems in computer software are people problems, not algorithmic ones. Once you program a calculation correctly, it generally stays that way."

      You, like the author of this article, are missing the point of an education in mathematics. It isn't to simply teach you algorithms, its a way of thinking through abstraction which is crucial to computer science.

      "But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs."

      That work should be done by a web designer, not a CS grad. Yes, many projects fail to adequately separate out the view from the rest of the app or force the same developers who wrote the backend to also write the user interface. But complaining that the problem is that those developers are learning math instead of human/computer interaction is like making your lawyer do your taxes and then complaining that their education was too focused on constitutional law and not the tax code. If you make someone do the wrong job, they often won't have the right education to do it.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    43. Re:Damn straight! by Cosmic+AC · · Score: 1

      Lower average intelligence? I've not seen those studies. I would agree about the distribution.

    44. Re:Damn straight! by Anonymous Coward · · Score: 0

      In the real world, most clients are interesting in getting a working product. Now. They don't want you still working in early development stages 2-3 months into a project, because *you* have an ego that seems to think you can spend spend as much time as you want "doing it right". To me at least, it seems that these are the type of people who waste clients' time and money simply so they can tinker. Good for you, you saved 10% memory usage, or wrote it in 10% less code than you would have if you had worked faster. Now give back the thousands of dollars you have just stolen from your client because you felt you had something to prove (whether to yourself and/or others) by trying to attain perfection.

    45. Re:Damn straight! by Money+for+Nothin' · · Score: 1

      Was this a university for women? Were the boys in the class included for "diversity" purposes?

      I've been in multiple public universities' math courses, and they are invariably majority-populated -- though not *nearly* as strikingly as in the CS courses (where I had multiple courses with *zero* girls in them) -- by males...

    46. Re:Damn straight! by poopdeville · · Score: 1

      Well, I figured you meant Set Theory, since sets as sets[1] themselves have very little structure. I do try to be a charitable reader. Hell, sets are isomorphic as sets if they have the same cardinality. And I am familiar with "normalization" as it occurs in Database Analysis. On the other hand, I still have no idea how set theory relates to pattern recognition in the sense you're describing.

      Were you just trying to use normalization as an example of a proper design pattern? If so, there is already vast literature on design patterns, all the way from architectural patterns to very details implementation patterns.

      [1] Not a typo.

      --
      After all, I am strangely colored.
    47. Re:Damn straight! by quadelirus · · Score: 2, Insightful

      I agree. I am a CS student and that type of complaint seems to be running rampant through the field. There is a huge difference between computer SCIENCE and software engineering. If you don't want to be doing the math/research side of computers, computer science is not your field.

      Also, anecdotally, I code monkey (by that I mean: do grunt coding work) for a computer vision research group, and it seems, from my admittedly limited experience, that the best work being done in computer vision is being done by people that have a great command of "pure" math. Without math, computer vision is reduced to trying to code things that kind of work (the hack-it approach), whereas with math the computer vision field is building mathematical models of things like shape and is able to push the limits much farther than I think would otherwise be possible. IMHO.

    48. Re:Damn straight! by WGR · · Score: 1

      hat work should be done by a web designer, not a CS grad. Are you really implying that your CS is useless. Because if you don't understand the proper way to design input then you are not a good computer scientist. More bugs are generated by improper question sequences, bad documentation, poor user interfaces etc. than using a bubble sort instead of a quicksort. Very few systems never interact with humans

      I am the original author and I do have a math degree from U of Waterloo and do know math very well. But math is NOT the best basis for CS, even though that is the way I learnt compute systems. I do appreciate my mathematics education and I think math should be part of a CS education, but only a relatively small part. The algorithmic problems of computer science are minuscule compared to the human interface design problems and a CS education that spends more time on algorithmic complexity than psychology produces graduates who make poor CS researchers, let alone practitioners.

      The math side of CS (or engineering) is the easy part. It is the human side that provides the problems.
    49. Re:Damn straight! by fractoid · · Score: 1

      And, there has been research that shows men have more variation in intelligence (but lower average intelligence), meaning that at any given point, the ends of the bell curve should be prodominately male. Interesting. Just from personal observation it's the opposite, at least in technical fields - there are many more 'pretty good' guys than 'pretty good' girls involved in tech, but on the other hand the few girls we do get are way above average aptitude. I'd guess it's because girls in general don't seem so attracted to technical careers, meaning only the ones with high natural ability (who thus find it easy) are interested.
      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    50. Re:Damn straight! by WGR · · Score: 1

      Optimal form layout is not a trivial "design" effort of making things look pretty. It is as much a deep study as circuit board layout or algorithmic complexity. It requires one to know what are the most likely paths though the form, what parts need to be emphasized, what should be put on separate forms, etc. Getting it right is the key to a usable system and one that actually works as intended.
            Similarly, the art of questioning users for their needs and properly designing systems requires much more about human skills than math skills. If you exclude that from Computer Science, then you exclude anything useful about computer science.

      Oh. I have also written code verifiers and mathematical software. That kind of stuff is easy exactly because the specifications are concrete and don't easily change. Having done both mathematical programming and system analysis, I found that working with people to define usable systems is much harder than designing complex algorithms.

      What Fant is saying is that the emphasis on mathematics on CS is making CS miss fundamental parts of the science, not that mathematics should not be taught at all.

    51. Re:Damn straight! by UberMongoose · · Score: 1

      "You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms." I'm fairly certain John Carmack would be pissed about your attitude... :)

    52. Re:Damn straight! by nwbvt · · Score: 2, Interesting

      "Are you really implying that your CS is useless. "

      Are you really implying that the lawyer who doesn't know accounting is useless? Or if you refuse to accept that analogy, what about a lawyer who primarily knows constitutional law when you are looking for a divorce attorney. Are they useless because their education focused on subject different from the one you are currently looking for?

      Yes, the user interface is an important part of most software systems. But software systems have many parts, and the user interface is usually a very small one, despite its importance. You ask about my particular work, no, I do not develop our product's UI. That is done by other developers who I work closely with and (hopefully) have more training in the subject. However at my previous position they had me developing the web tier (it should be noted that the actual designs were developed by dedicated usability experts, we merely implemented them), and that was the main reason I started looking for something different.

      You are also right in that software applications often have problems in the UI. But that is not because CS students are learning mathematics. Its because employers fail to recognize that developing a UI is different from developing back end software and put the wrong person on the job (as which happened in my previous job). Its a problem with management, not education.

      Do you know why frameworks like Struts became popular in the first place? Its because they separated the view out of the model and the control of the application (hence the term MVC). The reason for this is not some pure academic pursuit of software purity, the goal is to have a different person, someone who specializes in human computer interaction, develop the application's view.

      "I am the original author and I do have a math degree from U of Waterloo and do know math very well."

      I'm sorry but if you think memorizing formulas is what mathematics is about, I don't care what degree you have you don't know mathematics.

      "The algorithmic problems of computer science are minuscule compared to the human interface design problems and a CS education that spends more time on algorithmic complexity than psychology produces graduates who make poor CS researchers, let alone practitioners."

      Have you spent even an hour on an university campus in the past decade? There are dedicated programs all over the world dedicated to human computer interaction. In fact they are often very popular with students, who enjoy working with something that at least appears to be physical. The fact that you (and many employers) are ignorant of such programs does not mean there is a problem in our education system, it means there is a problem with you and those employers.

      But again, the UI is not the extent of software. I am aware that many people who have a poor understanding of software do not understand that since the UI is all that they see, but if you have half the qualifications you claim you should know that is not the case.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    53. Re:Damn straight! by jon287 · · Score: 1

      Yeppers. I'm sure you can generate a fine TPS report without math but don't go near robotics, genetics, cryptography... you get the idea.

      To a programmer without math a 3 link kinematic chain may as well be "what is the meaning of life?" Even a simple dyad will make you weep like a little girl.

      --
      To boldly use to and too two times and get it right too! They're not gonna believe their eyes when they see it there!
    54. Re:Damn straight! by some+guy+I+know · · Score: 1

      They don't want you still working in early development stages 2-3 months into a project, because *you* have an ego that seems to think you can spend spend as much time as you want "doing it right". To me at least, it seems that these are the type of people who waste clients' time and money simply so they can tinker. Good for you, you saved 10% memory usage, or wrote it in 10% less code than you would have if you had worked faster. Now give back the thousands of dollars you have just stolen from your client because you felt you had something to prove (whether to yourself and/or others) by trying to attain perfection.
      I see this type of attitude more frequently than I'd like.
      Just remember that 90% (or more) of the total cost of software is spent in maintenance.
      If you can get it right in the first place, then you won't have to spend as much time and money later fixing bugs.
      Sometimes you don't have that luxury, but if you can afford to spend a little extra time now to make sure that things work correctly, then you may save yourself a lot of money (and grief) down the road.
      Also, that 10% less code may be 10% easier to maintain, which could also save money in the long run.

      Now, I realize that a viewpoint such as this may not be popular in today's "just throw more hardware at it" world of so-called software engineering, but with Moore's Law finally hitting fundamental limits of physics (at least until fully optical processors or some other breakthrough comes along), I think that understanding how and why things work will become more and more important.

      Finally, many computer programmers will not need higher-level math skills to do their jobs, but as has been pointed out in other comments (both here and in TFA), these are computer programmers, not computer scientists.
      And even these may need some knowledge of some branch of mathematics.
      (For example, someone working on an accounting package should have at least some accounting skills.)
      --
      Those who sacrifice security to condemn liberty deserve to repeat history or something. - Benjamin Santayana
    55. Re:Damn straight! by Anonymous Coward · · Score: 0

      You need to have the right datasets. Even quicksort can behave pathologically on certain data sets.

    56. Re:Damn straight! by Anonymous Coward · · Score: 0

      If you're interested in writing code well (small file size, small memory size, fast execution) then you had better understand what the mathematics behind the program are.
      I'm not sure this is an accurate statement. You can reason about the things you've mentioned without using very complicated math; maybe the kind of stuff that a first year CS undergrad would be exposed to.

      ESPECIALLY if you want to be able to prove that your algorithm is smaller, cleaner, and faster.
      But a proof is not needed to come up with a solution that has any of the qualities you've described.

      In reality, I've met a lot more CS academics who write crappy and disorganized code. They may come up with some good new ideas, but they don't necessarily know the most graceful ways to implement them.

      I do think math is probably the most important part of CS. But your arguments don't make a lot of sense to me. You seem to be saying that math will make you a better programmer in terms of organization and code size. It won't. Having a CS degree will help you to use more appropriate algorithms, but it probably won't help much if your code looks like spaghetti.
    57. Re:Damn straight! by ajs · · Score: 1

      You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms. It is too bad they didn't teach you the difference between compsci and programming during day one of your CS program. An interesting response, but neither of you is talking about TFA.... If you read what the article has to say, you'll find that it's about the difference between a purely algorithmic approach to CS and a less deterministic, more process-related approach. Personally, I think the guy has a point, but might be going too far in the other direction. He makes an excellent point with respect to an operating system not being a deterministic algorithm with a "result," but a process which expresses a set of processes. It's also true that, at a finer granularity, algorithmic tools are key to any operating system. Both disciplines are essential, but he's right: the parts of CS that aren't pure math tend to get the short end of the stick.

      I'd like to point out that this article doesn't try to assert that algorithms are useless or that CS doesn't need math. It only asserts that the focus of CS has been hijacked by pure math.
    58. Re:Damn straight! by yada21 · · Score: 1

      My understanding was that men are by average slightly more intelligent than women - it's only a few IQ points - but that the variability is much more. Hence there are more male geniuses, but also more male imbeciles.

      I don't know if the studies exclude people with actual congenital disorders. These would tend to affect males more, since they only have one copy of certain genes. I'm thinking the same mechanism as hemophilia (sp?) that was passed through females like Queen Victoria but affected only males. Something to do with X and Y?

      --
      I will have a sig when the market demands it.
    59. Re:Damn straight! by tarpy · · Score: 2, Insightful

      But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs. Understanding what parts of a program are going to be changed because of changing user needs is more important in program design than deciding whether you need a heap sort or insertion sort. Yes, you should know the difference, but you seldom need to program it, just choose the correct one from the system library. CS graduates tend to design programs for machine efficiency, not human efficiency. But it is humans that are expensive, not machines. I think you're confusing HCI with CS. As a person who specialized in HCI in my undergrad, I can tell you my coursework was radically different from my friends who were pure MathCS. While we did a number of courses in common, it was not out of the ordinary for me to be over in the College of Fine Arts taking an industrial design course, or over at the social sciences department taking a course in decision science (which is actually what my degree is in).

      While HCI and CS are two separate, yet intertwined disciplines, they are fundamentally different art forms, with different manners of thought, problem solving, techniques, and problem spaces. It would be a mistake to confuse one for the other. That being said, it's been quite useful for me, as I stumble through my career to have had a good grounding in CS fundamentals. While I'll never need to determine if a particular interface is Big O or not, that I have a better than the average bear's idea of what goes on below those pretty interfaces I design allows me to meet both the users needs and make the wire frames I deliver to whatever poor engineer is going to have to build this thing not want to find the nearest firearm and start taking shots at me.

      To your greater point, I think there is some merit, as we move closer and closer to ubiquitous computing, the greatest challenge presenting system designers won't be how to eek out more horsepower from the processor, it will be shoehorning in the interactivity seamlessly to the user and the environment. One area where you do see a merging of pure MathCS/HCI is, ironically, in the field of aerospace. One of the posters mentioned trying to fly the (sexy) new 787 without a grounding in math...and while I grant that pilots need to know a whole lot of hard science, one of HCI's (er, rather Human Factors) most obvious areas of impact is in the cockpit, and instrument design. Boeing/Airbus/Fokker/whoever spend a lot of time, money, and research into figuring out the most intelligent, intuitive, and natural way of informing the pilot of everything he or she needs to know to make split-second decisions that have literal life-or-death consequences.

      In a graduate course I took on dependable system design, the very first class, the professor had us read portions of the cockpit voice recorder transcript for American Airlines flight 965. This was the flight which crashed in the mountains near Cali, Colombia back in 1995. One of the underlying reasons for this crash was the interface for the autopilot was overly complicated while entering waypoints into the system, and when the pilot-in-command chose a wrong waypoint with a similar name to the one he needed (without the system sanity checking and throwing some query back to the cockpit crew) and literally turned his 757 into a mountain.

      In this case, all the math and science couldn't save the airplane, but perhaps a system that was designed to check user inputs against some sense of "hey, is this the right data point" might have allowed the pilots to get out of the situations before anything worse than needing to do a five minute loop around the mountains back onto their flight path.
    60. Re:Damn straight! by Firethorn · · Score: 1

      Nope, fifty-fifty as far as I could tell. Before I transfered into the honors program, the 'normal' math class had mostly men.

      I was bored out of my mind. I'm a bit out of practice, but back then I could solve quadratic formulas in my head. Of course, there's not much call for it outside of school...

      --
      I don't read AC A human right
    61. Re:Damn straight! by Anonymous Coward · · Score: 0

      Sadly, this has been my experience too. Women generally do not pursue majors that favor a heavy math education as much as men, and yet high school girls tend to place in more honors classes than men.

      It's really depressing to see that potential not followed up on.

    62. Re:Damn straight! by Zencyde · · Score: 1

      I joined Slashdot merely to post a comment on that particular article. First off, why are you referencing something from (I think) roughly two years ago? Secondly, why are you referencing it without checking it to make sure your facts are straight?

      --
      What day is it? Could you please tell me?
    63. Re:Damn straight! by Orestesx · · Score: 1

      Well, first, joining slashdot to "merely" get your two cents in about a particular article is nothing to be proud of.

      http://www.washingtonpost.com/wp-dyn/articles/A191 81-2005Jan18.html

      "...he has provoked a new storm of controversy by suggesting that the shortage of elite female scientists may stem in part from 'innate' differences between men and women."

      Yes this particular quote is about elite scientists but in general he was discussing reasons for why men excel more than women at math and science. Yes it was off-topic but I was merely saying that I disagree with the assessment that a difference in innate ability explains the gender gap and enjoying a little joke at the expense of women who stop enrolling in math in order to become more attractive to men. Lighten up.

    64. Re:Damn straight! by Orestesx · · Score: 1

      Well you have to take the college math classes to get to the top, do you not? I paraphrased and perhaps over simplified his comments. Maybe I should have left that part out and said "I don't believe that it's due to an innate difference in ability" and perhaps avoided this shit storm.

    65. Re:Damn straight! by Orestesx · · Score: 1

      Sometimes studies get killed for political reasons. Sometimes this is a good thing. Try to find some research as to why black athletes excel more at certain sports than white athletes. Sometimes this type of study, although it has the ability to satisfy our curiosity, is not worth pursuing in our particular culture because of the divisive effect it can have.

    66. Re:Damn straight! by msuarezalvarez · · Score: 1

      I don't have an opinion about that, really. I was responding to what you wrote, not what you meant (my training as a mind reader is quite poor). And the two are quite different things.

    67. Re:Damn straight! by DarenN · · Score: 1

      Well said, mod parent up.

      A lot of this discussion has wandered waaaay off track. HCI is simply a different discipline to CS these days. There's more cognitive and perceptual psychology in it than CS and this cannot be described mathematically because of it's nature. Take the area that I work in - information visualisation. Looking for a definition will get you something like "representing (abstract) data in a visual form" or the more detailed wikipedia definition. The definition of the field and it's goals are different though - the goal is generally described as "to improve understanding of the data" or "to improve insight". That is not measurable without human input, and the measures used are largely arbitrary (or rather based on intuition, which is also not measurable or provable :) ).

      Computer Science, on the other hand, tends to deal with measurables, and a lot of work goes on to improve algorithmic performance or to design new algorithms. The performance of an algorithm CAN be measured and the types of measurement have been agreed. The proof is in the maths. Modelling systems requires a modelling language which is inevitably maths based (because it needs to be precise). Heck, even requirements engineering is subjected to mathematical processes to ensure the validity of requirements these days.

      One of the best examples of the difference is HTML - it was clearly designed by scientists and engineers. If it hadn't been, there would have been curves. But it wasn't, and there isn't (and, in my own opinion, there should be).

      It's time to separate interface design - which a lot of previous comments are talking about - from the internals of the system and acknowledge that these are two very, very different fields. The first is HCI which is closer to an art than a science (i.e. it's not exact, no offense to the HCI crowd!) where as CS is very exact. This change in perception is underway at the moment, and I'm sure the tools are being developed that better suit interface design (not my area, so I don't know for sure). For performance, provability and plain ol' algorithmic programming, there's still [insert favourite programming language here].

      --
      Rational thought is the only true freedom
    68. Re:Damn straight! by pedramnavid · · Score: 0

      Greater variation within the male population might simply be due to the ease of propagating genes as a male compared to females.

    69. Re:Damn straight! by gordo3000 · · Score: 1

      and in all cases, unfortunately for science, the knowledge suffers twice. not only does it not expand, but the prorogation of bad information becomes deleterious. I think the pursuit of learning how people learn things differently is a huge field that needs to be explored. There is research that the current classroom environment(highly ordered, less energetic, less physical movement) is extremely beneficial to girls and harmful to boys. They have been trying different styles of teaching in NY and found marked improvements in boys.

      It may be politically incorrect, but without knowing if there are fundamental differences in how the sexes can learn, we basically resign ourselves to hindering the learning of some over others.

    70. Re:Damn straight! by Bustergates · · Score: 1

      What's white matter?

    71. Re:Damn straight! by gordo3000 · · Score: 1

      IIRC, it's the part of the brain that allows for connections, alot of it allows for very high speed connections (possibly multi-tasking, artistic conections, but not sure) compared to gray matter, which is centered on very specific computations.

      as I've heard, the ratio doesn't reflect your abilities on general IQ tests, but can have a marked difference in the speciality in which you excel. you should probably research it though. I'm no neuroscientist/surgeon

    72. Re:Damn straight! by DragonWriter · · Score: 1

      mathematics as a base for CS was great in the 50's and 60's, but the real problems in computer software are people problems, not algorithmic ones.


      That may be true, but CS isn't short for "computer software", its short for "computer science". Lots of products are more bound by human factors and interface than limitations of knowledge of the fundamental science or engineering underlying the core functionality of the product.

      Now, that may mean that fewer (proportionally) computer scientists need to be involved directly in the development of most software products, certainly, as most software products aren't blazing new ground in basic functionality or algorithms, but rather seek either to provide better interfaces to existing functionality or to provide new combinations of existing functionality, or some combination of the two.

      But that doesn't mean that actual computer science needs less math.

      But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs. Understanding what parts of a program are going to be changed because of changing user needs is more important in program design than deciding whether you need a heap sort or insertion sort.


      All this may be true, in the development of most software products, but has little to do with computer science.

      Yes, you should know the difference, but you seldom need to program it, just choose the correct one from the system library.


      System libraries and the like don't spring into existence magically, they are programmed by actual people, who need the skills not only to understand the difference between things that already exist, but to discover, develop, and implement new approaches to solving classes of problems for which there either are not existing solutions or the existing solutions are suboptimal.

      And that's what computer science is about. And, yeah, it takes math.

    73. Re:Damn straight! by Anonymous Coward · · Score: 0

      no, see, you're mistaking CS with IT.
      some people write code that spends a second interacting with a human and months doing calculations. and then there's coders whose jobs suck. have fun coding .net

    74. Re:Damn straight! by FredThompson · · Score: 1

      I see this at a different level than patterns and antipatterns (btw: Skip McCormick is a very good friend of mine. We wrote software together before he helped write the antipattern books.)

      I see it as the skill of being able to look at anything and find the repetitive behavior or redundant characteristics. The best example I can give is the way humans stereotype as a way of reducing mental clutter. A chair might have any of a bazillion different forms but we reduce it to the stereotype "chair" and use that as our conceptual construct.

      I've also noticed, over time, how different a single situation can appear depending on the van tage point. The photos from the Led Zeppelin album "In Through the Out Door" are a good example. So are many optical illusions. R. C. Sproul has a wonderful examination of Israelites and Romans classing in which he explains how thier different world views helped shape the conflicts. During a Myers-Briggs session I saw two groups describe the same room. One was an architect's drawing, the other described the color and character of the room. Both were correct but from different vantagve points.

      Patterns in formal math are just as valid as the patterns in music or classical art forms but appear to happen in different parts of the brain or with different codifications of thought. The limitations I think most people who are too "math geeky" have is the lack of internalization that all human valuations are subjective. It's harder for them to view a situation from multiple concurrent vantage points which limits their ability to be good designers.

    75. Re:Damn straight! by poopdeville · · Score: 1

      I see it as the skill of being able to look at anything and find the repetitive behavior or redundant characteristics. The best example I can give is the way humans stereotype as a way of reducing mental clutter. A chair might have any of a bazillion different forms but we reduce it to the stereotype "chair" and use that as our conceptual construct.

      Uh huh. This is called "abstraction." Not a new idea. Plato wrote about it a lot.

      --
      After all, I am strangely colored.
    76. Re:Damn straight! by dodobh · · Score: 1

      a) Humans learn.
      b) Form design should be the job of usability experts.

      --
      I can throw myself at the ground, and miss.
    77. Re:Damn straight! by FredThompson · · Score: 1

      Good example. How many math-only types would know anything about Plato? The cave analogy is appropriate.

    78. Re:Damn straight! by Anonymous Coward · · Score: 0

      Good luck at McDonald's, as you will not likely fit your ego into any team environment.

    79. Re:Damn straight! by tylersoze · · Score: 1

      I always thought so, too, but then I checked:

      ricks-dual-g5:~ rickb$ man less
      LESS(1)
      NAME
                    less - opposite of more

    80. Re:Damn straight! by WGR · · Score: 1

      A lawyer who does not understand accounting will soon not be one as she either goes broke quickly or becomes disbarred. She need not be an accountant, but she needs to thoroughly understand that most law is based on contracts and contracts require a method of accounting for the obligations between the parties.

      Have you spent even an hour on an university campus in the past decade? There are dedicated programs all over the world dedicated to human computer interaction. In fact they are often very popular with students, who enjoy working with something that at least appears to be physical. The fact that you (and many employers) are ignorant of such programs does not mean there is a problem in our education system, it means there is a problem with you and those employers.

      I taught a course in Information Security last year at a local college, so yes, I have been on campus and I do know about human computer interaction course. But I think they are too often taught as auxiliary to the mathematical guts that are considered the essentials. I don't know how much experience you have with developing software, but 40 years of experience has told me that the mathematical problems, although important, are the straightforward ones. The hard ones are the problem of finding out what the human needs of the system are. That involves being able to understand your clients.
          I came across an example of a software system that was mathematically correct but bad software yesterday. My Credit Union unveiled a new online account reporting package. When I tried to look at my account for the last three months, it balked. It had been written for a maximum 90 day period, which is nice arithmetically, but is 2 days less than the longest three month period in a year. They had not seen the human need, but only an mathematical need.

          You need to speak the language of your clients and mathematics is seldom that language. Software was once dominated by problems that had a mathematical formulation, but in this century the majority of software is used in ways that are not heavily mathematics oriented. The parts that are mathematical are generally using packages to do the heavy mathematical lifting. Proper analysis of the problem to be solved needs skills that are not often taught in CS courses because the mathematical requirements get too much emphasis.

            I see a need for mathematical analysis in CS. But that should be a theoretical math degree, not a C.S. degree.

    81. Re:Damn straight! by WGR · · Score: 1

      Yes HCI and CS are NOW different disciplines, but that is part of the problem. We really need to have a better integration of both. You need the basic underpinning of what is now taught in CS, but you also need to be taught a lot more about HCI. You seem to have got that mix, which makes ou much more valuable that either a pure HCI or a pure CS graduate.

      Too many people go through a CS program without spending enough study of human computer factors (I was one). Computer Science implies using the scientific method to observe and understand how to use and extend the power of computers. Science is based on experiments and observations as well as mathematics. Overwhelming the CS curriculum with too much theory and not enough observation causes graduates to make assumptions of their and others abilities that create interfaces such as on the 757.

    82. Re:Damn straight! by nwbvt · · Score: 1

      "A lawyer who does not understand accounting will soon not be one as she either goes broke quickly or becomes disbarred. She need not be an accountant, but she needs to thoroughly understand that most law is based on contracts and contracts require a method of accounting for the obligations between the parties."

      Accounting is much more than just understanding basic contract law. But I see you have missed the point of the analogy. In our society we make use of specialists. Some people are trained as lawyers, others are trained as accountants. If you are in need of a an accountant, hire a freaking accountant, don't hire a lawyer and then complain they didn't spend enough time in law school learning the tax code. Thats pretty much what you are doing here. You are hiring a computer scientist when you need a HCI/usability expert, and then complaining they didn't spend enough time learning HCI.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    83. Re:Damn straight! by WGR · · Score: 1
      If CS is such a narrow speciality that it should not include anything but math, what is its use? If it is a science, then what does it research? A good article on what CS should cover is in this months CACM.

      See The ACM and IEEE-CS Guidelines for Undergraduate CS Education .

      Notice that the emphasis is now much more on "liberal arts" versus mathematics, showing the growing awareness of what CS is really about.

    84. Re:Damn straight! by nwbvt · · Score: 1

      "If CS is such a narrow speciality that it should not include anything but math, what is its use?"

      First, I didn't say that. Second, as for its use, considering its employment rate I'd say its pretty useful. Despite your claims otherwise, developers of efficient and stable software is in demand, as that software can be hard to come by.

      Yes, the study of CS (like virtually every other subject out there) can benefit from a multi-disciplinary approach, whether its by giving the student a new perspective or by giving the student in depth knowledge of the industry or area in which their software is used. Many CS students extend their education by pursuing second majors or minors. For instance I received minors in Biology and Philosophy. And many students in other disciplines extend their educations by studying CS. However, those do not replace a foundation of mathematics, which is core to the subject. In fact, from the first paragraph of the ACM article you cite (BTW you might want to check your mailbox, that issue was from two months ago, not this month), it states "Two persistent issues have been the role of mathematics and the importance of programming in the introductory courses".

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    85. Re:Damn straight! by Anonymous Coward · · Score: 0

      Without math to manage the data collection and process the data, how are you going to make informed decisions about the "user needs" for anything other than a trivial user base?

      Statistics is math too.

  3. Computer Science != Software Engineering by Anonymous Coward · · Score: 5, Insightful

    Maths IS needed for computer science. Just be sure not to confuse Computer Science with Software Engineering. Software engineering is only a part of the computer science sphere.

    1. Re:Computer Science != Software Engineering by timeOday · · Score: 4, Interesting

      Maths IS needed for computer science. Just be sure not to confuse Computer Science with Software Engineering.
      I don't think that's what we're talking about. A more interesting question, I think, is whether "true AI," should it come to pass, will be derived from basic principles (i.e. math) or based on heuristics (i.e. not math). After laying the groundwork in the first few years of digital computers, the theory of computing has not progressed very much! There is no proof that encryption is secure. Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms. There is still not even a proof that P != NP, even though it seems obvious. I think what has been proven is that most problem classes of interest are non-decidable and intractible. But so what? You can still get along quite well in the world without a provably optimal solution most choices. So now theory is concerned with deriving probabilistic bounds on accuracy and runtime for heuristic methods. I would call that nice to have, but is it necessary?
    2. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      *cough* formal methods in advanced Soft.Eng *cough* analysis and selection of algorithms for implementation *cough* BAN logic in Security Engineering *cough*

    3. Re:Computer Science != Software Engineering by allthingscode · · Score: 5, Insightful

      What most people do in computer programming is like carpentry, and for that all you need to do is memorize how to write a few loops and and which methods to call. But then, every once in a while, you need something truly earthshaking, like solving string subsequence matching (comparing DNA sequences) in O(n**2) rather than O(2**n), and then you have to run to the people who can do the math. Another example is when people thought the best way to do AI was to mimic the neuron, but then, by applying some rigorous math, you end up with Support Vector Machines.

    4. Re:Computer Science != Software Engineering by IWannaBeAnAC · · Score: 1

      Right, an important aspect of computer science is the relationship between different processes (I'd say 'algorithms', but that seems to be a politically incorrect word on this thread). This has a real influence on software engineering, via generic programming, OO, etc. And it's all mathematics. What people seem to be forgetting here is that mathematics encompasses a heck of a lot more than just calculus. There was even a comment earlier from some guy that said he sucked at math but was great at logic! Heh, I don't think so ;-)

    5. Re:Computer Science != Software Engineering by rjpotts · · Score: 2, Insightful

      I think that there is a little more to it than that. Computer Science is an old term that you to cover the computer industry as a whole. Just like Medical Science covers the medical field as a whole. Today you need to look at with a little more granularity.

      If you are gong to go into "Computer Engineering" designing chips, hardware, developing new low level languages, creating the next user interface layer, writing new operating systems, etc.... then you need mathematics. There is no way you can do your job without it. Maybe even a dual degree in Computer Engineering and (Mechanical or Electrical Engineering).

      If you are going to develop scientific and engineering based applications you need a strong understanding of mathematics.

      If you are going to design business applications, do systems integration, web applications, etc... then you do not need a strong background in mathematics, but you would stand to benefit from a management, accounting, finance, English, and psychology background; because you more than anyone else are going to be working with the end user. If you cannot win over the end user with your design, functionality, user interface then they will not want to use your product.

    6. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      Let's refine that a tad. Software Engineering is basically a fiction - there's no real engineering there, just a collection of best practices and hunches. The practical side of Computer Science (at least where software is concerned) would be more honestly called just programming, sysadmin, or data processing, or MIS, or the like. That's what most people mean when they talk about real-world situations, and it's true that students training to get real-world jobs don't need much math - they just need to know how to make the machines go. But that isn't computer science, as you point out.

      Cf. the difference between studying Economics (a science, or tries to be) and Business Administration. Or Sociology and Social Work. Physics and, say, Auto Mechanics. Maybe the name of the major should be switched from CompSci to Programming Administration.

    7. Re:Computer Science != Software Engineering by DeadCatX2 · · Score: 1

      Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms.

      I hate to burst your bubble (sort), but quicksort is O(nLog(n)).

      --
      :(){ :|:& };:
    8. Re:Computer Science != Software Engineering by Strilanc · · Score: 3, Insightful

      Quicksort is randomized, has fantastic cache performance, and its worst case behavior is very unlikely. There are plenty of other randomized algorithms with bad worst-cases but which work better the majority of the time. That's what makes randomized algorithms so sexy.

    9. Re:Computer Science != Software Engineering by tshak · · Score: 1

      What most people do in computer programming is like carpentry...

      Consider that a carpenter performs the same task over and over (e.g. building the frame of a house). In software development you ideally should *never* be performing the exact same task twice. I'll be the first to admit that software developers generally suck at resuse. However, this doesn't mean that we sit there repeating the same of very similar things from day to day. Good software design is all about not repeating yourself. Sure, the language constructs are the same (loops, method calls, etc.), but this is the nature of expressing something in a finite language. Shakespere may use the same "methods" (i.e. words) but his works are not compared to that of a scribe.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    10. Re:Computer Science != Software Engineering by a.d.trick · · Score: 1

      A more interesting question, I think, is whether "true AI," should it come to pass, will be derived from basic principles (i.e. math) or based on heuristics (i.e. not math)

      Actually, many heuristic solutions involve at least as much mathematics as the so-called "basic principles". Part of speech tagging is one of the areas where heuristic solutions using things like the Hidden Markov Model are quite effective.

    11. Re:Computer Science != Software Engineering by dave1g · · Score: 1

      thats only the avg case, its still worst case O(n^2). ( the worst case being when each pivot you pick ends up being the minimum or maximum in that set )

      you can use methods like the median of 3 to make this less likely, but you could still pick the 3 largest or smallest value as the pivot and have the same problem.

      I believe the O(nlog(n)) is also only relevant in randomized sets, it performs much differently in semi sorted sets, i forgot if it was better or worse.

      in an almost completely sorted list, insertion sort tends to linear performance.

    12. Re:Computer Science != Software Engineering by WilliamSChips · · Score: 1

      Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms. No, Quicksort is only O(n^2) in special cases. In most cases it actually is N log(N).
      --
      Please, for the good of Humanity, vote Obama.
    13. Re:Computer Science != Software Engineering by Verity_Crux · · Score: 4, Interesting

      ...like solving string subsequence matching (comparing DNA sequences)...

      Last year I worked on just that. The (Smith-Waterman) algorithm is well studied, so I didn't have to derive all the math for it. What I did have to derive is the speedup gained by using our hardware. That required some algebra. I also did Gaussian smoothing on the data. That required some image processing math. Once upon a time I coded PHP/MySQL stuff for various web companies. I had to do two different kinds of math with that: accounting and statistical work including Chi squared, etc. Graphing and displaying all that data was real simple algebra stuff. It wasn't satisfying for me so I looked into more serious science work.

      I found the more serious work. My minor in math is, for the most part insufficient for my current work. In the past year I
      1. Worked out an edge detection algorithm using wavelets. Wavelets use tensor math -- math not covered until the third and fourth year for math majors. I never could get a full grip on the math. Fortunately, I found and ended up using a book that had all the algorithms for it already coded.
      2. Worked on path planning for robots using clothoids and Bezier curves. The algorithms to interpolate my existing data for those are too math-heavy for me. Have you ever tried to find the intersection point of two clothoids or Bezier curves? Find the nearest point on a clothoid to a given point? Or mix the two? It's tough stuff. It's loaded with numeric methods. My BS in computer science and minor in math didn't prepare me for that.
      3. Worked on converting 3D data between various map projections.
      4. Worked on CAD software that allows manipulation of 3D shapes in a 3D environment. It's loaded with trig and linear algebra.

      I could go on with various little details. Suffice it to say that it's darn frustrating when you're supposed to code a fancy wavelet demo and you can't read any book on the topic because it's over your head.

      I had a class in college on algorithms. The teacher was fantastic. He had an excellent skill at pointing out "now that's computer science becomes science." I remember his passion for back-propagation and all the little tricks to it he knew from study and experiment. That was fun.

    14. Re:Computer Science != Software Engineering by WhiplashII · · Score: 1

      But then, every once in a while, you need something truly earthshaking...

      While that is true, it is irrelevant to software engineering. When I write software to simlulate rocket engine fluid dynamics, I do not assume that I should understand fluid dynamics. I get an expert to help with that. That does not make the expert a software engineer - he is a physics expert.

      And more to the point, all the really good programmers I know do not work out their heavily optimized code based on math - they look at what they have available, and put it together. Mathmatical abstractions are helpful sometimes, but if you are trying to get something to run faster you seldom turn to them - instead you pull out your CPU's manual, and see what works the fastest.

      So, yes, software engineers should pay attention to what goes on in algorithm development. But algorithm development is not software engineering - and forcing people to learn algorithm development in order to become software engineers is a little strange.

      (But I'm self-taught, so I don't really care. My code runs several hundred million $, so something must be working right...)

      --
      while (sig==sig) sig=!sig;
    15. Re:Computer Science != Software Engineering by pdovy · · Score: 1

      After laying the groundwork in the first few years of digital computers, the theory of computing has not progressed very much! You make it sound like research in computer science is at a standstill or something, which it is most definitely not. True, some of the fundamental problems in computability theory are relatively stagnant, but this is not the only branch of computer science research with a focus on mathematics. Formal methods, programming language development, database and information discovery research, all of these things at their basest level REQUIRE mathematics.

      As for TFA, I feel like it is too short to draw any real conclusions from. On the surface though, his fundamental issue seems to be that many of the things in computing today aren't easily expressible in the mathematics we've been using. I think this warrants new mathematics, though the author apparently has something else in mind, and I'll be interested to see exactly what he is proposing.
    16. Re:Computer Science != Software Engineering by king-manic · · Score: 1

      I don't think that's what we're talking about. A more interesting question, I think, is whether "true AI," should it come to pass, will be derived from basic principles (i.e. math) or based on heuristics (i.e. not math). After laying the groundwork in the first few years of digital computers, the theory of computing has not progressed very much! There is no proof that encryption is secure. Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms. There is still not even a proof that P != NP, even though it seems obvious. I think what has been proven is that most problem classes of interest are non-decidable and intractible. But so what? You can still get along quite well in the world without a provably optimal solution most choices. So now theory is concerned with deriving probabilistic bounds on accuracy and runtime for heuristic methods. I would call that nice to have, but is it necessary?

      Newsflash : thats still math. You've moved from linear algebra and trig to statics and sloppy programming.

      --
      "There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy."
    17. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 3, Informative

      Sorry, it is possible to wrote a worst-case O(n lg n) Quicksort. That's worst-case, not expected-worst-case or average-case. The trick is to use an O(n) selection algorithm to find the median of each subset and partition about that. Partitioning around the median guarantees that the rest of the algorithm stays in O(n lg n) as long as the finding the median can be done in no more than O(n). The reason no one ever implements it that way is that the overhead involved in the O(n) Select makes the average-case performance worse. In contrast, if you use perform a randomized partition, you get an expected-worst-case time of O(n lg n). This means that, while you can still get O(n^2) worst-case time, you can't force it to happen by running it on the same data. In order to get the worst-case to happen, you'd not only have to get unlucky with your input data, you'd also have to get unlucky with the sequence of numbers coming from your random number generator. (In other words, some malicious person can't slow down your algorithm by handing you a worst-case data set.)

      The only description of the worst-case O(n lg n) Quicksort I could quickly find for free online is slide 16 of these lecture notes (PPT), but there aren't many details there. More can be found in the chapter on Order Statistics in "Introduction to Algorithms", 2nd. ed., by Cormen, Leiserson, Rivest, and Stein.

    18. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 1, Insightful

      Actually, it is possible to find the median of a list in O(n) time, and when you use this to pick your pivot then quick sort is in fact O(n log n) in the worst case.

    19. Re:Computer Science != Software Engineering by dave1g · · Score: 1

      well you have to pick all the pivots, i didnt think about that.

    20. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      "Maths is"? Sounds like someone needs to go back to grammar school.

    21. Re:Computer Science != Software Engineering by eggstasy · · Score: 1

      I would like to add that Software Development, or "Coding", should also be considered a separate issue.
      An engineer, in most engineering fields, is always seen as a leader, an abstract planner, a project manager. The actual execution stage is grunt work that can be performed by unskilled labor.
      There are three separate tiers here. You don't ask a construction worker to plan out a bridge, and you do not ask an architect to research new materials. You shouldn't expect a "code typist" to come up with cool new algorithms. I hate coding - i see it as a mechanical translation of an expertly made plan that integrates well-known methods and algorithms that have been in common use.
      As for why this is not obvious for 99% of IT folks, I can only blame it on the field's relative immaturity.

    22. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      If the first thing you do is take out the CPU manual to see what works fastest, you're in the class of people who think they're good programmers that aren't. 99.9% of the time, the biggest speedups come from using a different algorithm, not from writing inline assembly. If you are lucky, the problem you are working with is constructed such that it is easy to tell that your algorithm handles every case (there are few cases). Otherwise, you need a proof.

    23. Re:Computer Science != Software Engineering by masterzora · · Score: 1

      No, it just sounds like someone is British.

      --
      Remember, open source is free as in speech, not free as in bear.
    24. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 1, Interesting

      Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms.


      Yeah, that is also explained by math. By the way, you can make sure that Quicksort runs in O(n*log(n)), but it is not a good idea, because MATHEMATICS shows, that the worst case is so improbable to happen, that it is not practical.
    25. Re:Computer Science != Software Engineering by eric76 · · Score: 1

      Writing software is very similar to proving a theorem. For all but the simplest, you break it into lemmas (functions)which you prove and then use in the main theorem.

      More importently, you make sure that you cover every special case. Leave one case off and the program is not correct.

      Very few non-mathemeticians are really good at this. Obviously, not all mathemeticians are great software developers, but at least they have a major head start over their non-mathematical brethren.

    26. Re:Computer Science != Software Engineering by illaqueate · · Score: 1

      AI is part of cognitive science of which computer science is a participant. the math vs heuristic distinction to me doesn't make sense. you have, on the one hand, the failed formalisms of the past and, on the other, hand waving about a free lunch as if the simplifying models we use weren't grounded in a complex nervous system. short cuts seem effortless to us because it presupposes a perspective grounded in a brain we are only now beginning to barely comprehend. math will have the same utility when our investigations suggest better ways to move forward. the problem is that we are impatient and want to make it useful in our life time before we can make sense of anything, hence all the hubris in the last 50 years.

    27. Re:Computer Science != Software Engineering by Adam+Hazzlebank · · Score: 1

      No, Quicksort is only O(n^2) in special cases. In most cases it actually is N log(N). Big O means upper bound i.e. worst case performance.
    28. Re:Computer Science != Software Engineering by UserGoogol · · Score: 1

      Heuristics are just as mathematical as anything else. Heuristics cannot be mathematically proven to be the "right thing" (because by definition, they aren't) but math can still come in to quantify to what degree they are the "okay thing."

      --
      "Never attribute to malice that which can be adequately explained by stupidity." -- Hanlon's Razor
    29. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      It's actually possible to choose the pivot so that we are guaranteed O(NlogN) time. A better example of the GP's point, I think, would be the simplex method, a worst-case exponential time algorithm for LP that performed *much, much* better in practice than early polytime LP algorithms. (That said, modern LP methods work in guaranteed polynomial time and are at least as fast in practice as the simplex method).

    30. Re:Computer Science != Software Engineering by russotto · · Score: 1

      Big O means upper bound i.e. worst case performance.
      Yes and no. Big O means upper bound, but says nothing about which case. It's valid to say, e.g., that bubblesort is O(n) on already sorted data. That is, there exists a constant k such that for all n, the number of comparisons (since that's the typical metric for sorts) made in a run of bubblesort on already sorted data of size n is less than kn.
    31. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      He never mentioned assembly programming, but you sure did.

      You have to take the target platform into consideration when choosing an algorithm, which means understanding the target platform, and what your compilers are outputting for that platform. A lot of times its obvious, but once you get past the initial 'aha' of fixing a slow algorithm with a better one and transition into making it even faster from there because its still not fast enough, then you have to have that knowledge. And this rolls back into rearranging the original data into a platform-specific layout so that a platform-specific algorithm can operate on it faster than naive code. And none of this really requires assembly programming for the most part, just knowledge of the platform you are writing for and being aware that the code needs to be aware as well (in places).

    32. Re:Computer Science != Software Engineering by flappinbooger · · Score: 1

      When I was going to college, many of the CS guys would take like 2 extra math classes and get a "free" minor in mathematics.

      --
      Flappinbooger isn't my real name
    33. Re:Computer Science != Software Engineering by coaxial · · Score: 1
      WRT to "true AI," we can't even define intelligence, let alone proving another person is actually sentient as opposed to being an elaborate stimulus response.

      Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms. Yeah so? Perhaps you didn't get this when you took basic asymptotic analysis, but O() is the worst case. THETA() is average case. Quicksort is THETA(n lg n), just like many O(n lg n) algorithms. Even here, quicksort has a lower coefficient than other THETA(n lg n) algorithms. You seem to be implying that no one knows what's going on here, but that's not the case. It's a well understood phenomenon. Perhaps you didn't know that, because undergraduate analysis courses rarely go beyond worst case analysis, becasue usually that's all you need. It's just that quicksort is the exception that proves the rule.

      So now theory is concerned with deriving probabilistic bounds on accuracy and runtime for heuristic methods This is simply not true. There's plenty of provably optimal solutions being developed. Heuristics are nice, but researchers always feel a bit dirty using them.
    34. Re:Computer Science != Software Engineering by public+image · · Score: 1

      But this IS maths, not computer science. Algorithms is a mathematical field. Can someone please define the terms of the debate!

    35. Re:Computer Science != Software Engineering by public+image · · Score: 1

      If you are going to develop scientific and engineering based applications you need a strong understanding of mathematics

      Yes, but not an engineers understanding or a scientist's understanding

      If you are going to design business applications, do systems integration, web applications, etc... then you do not need a strong background in mathematics, but you would stand to benefit from a management, accounting, finance

      Actuarial accounting is not maths then? Finance?

      background; because you more than anyone else are going to be working with the end user

      Don't systems engineers have end users in mind?

    36. Re:Computer Science != Software Engineering by sumdumass · · Score: 1

      Not every house is the same nor is it the same type of materials. And then you have different types of carpenters, the framing, and the finish carpenter are two common types. The thing is, a carpenter fits the idea of a programmer well when you compare all the programs to a house or the aspects of the house. You could even go as far as comparing the architect to the CS people. It would fit nicely.

      And believe it or not, math plays a big role in carpentry and construction in general. Maybe not to the calculus level but geometry, algebra and the basics like multiplication and division as well as adding and subtracting.

    37. Re:Computer Science != Software Engineering by Anonymous Coward · · Score: 0

      Just for the record, Quicksort is an O(n.log(n)) sorting algorithm.

      To be more specific, it has nlog(n) expected operations, though the worst case compare operations could be n^2.

      But this is Slashdot, who cares about specifics!!

    38. Re:Computer Science != Software Engineering by Doomie · · Score: 1

      Are you actually suggesting that true AI comes in the form of a Gaussian kernel and a maximum-margin linear decision surface in the feature space defined by it? Just because SVMs can solve well some trivial vision problems does not mean at all that we got closer to "true AI".

      In fact, there is a trend in Machine Learning right now that suggests getting back to "mimicking" the neuron, perhaps in a smarter way than just using back-propagation...

      --
      Doomie
    39. Re:Computer Science != Software Engineering by vigmeister · · Score: 1

      Actually, it is painfully obvious to me who, in a different field (ME), ends up getting assigned projects based on the fact that I have developed engineering software. Problem is, all my knowledge of a certain language are usually based on what I can get from googling/books. This leads to a weird situation where I design software fairly well (I think have the background and skills to design good software solutions to engineering problems), but I lack when it comes time to implementing the algorithm since my familiarity with the language I am using then is usually next to nothing. This fundamentally means that my code is bloated and kludgy (like me not using the string tokenizer in Java while parsing a text field), but the algorithms are generally robust. I have not learnt programming formally and so I suffer when converting an algorithm to actual code in a certain programming language. While I realize that I need to be an engineer and leave the code-writing to someone else, budget constraints and naivete of employers leads to me writing code. Lately, I have become experienced enough for my resume to look good enough that I can explicitly state that I will design and prototype something (rather than implement it) without jeopardizing my shot at the project. Note that this is purely for my own ethical satisfaction because a lot of people seem to be 'extremely pleased' with prototypes that I write and do not propose to develop it further. Moreover, when people do come in to make an implementation of the prototype, I have noticed that they just document the code differently and remove debug statements and leave it at that. And I'm not fooling anybody by thinking this is because my code was super-awesome. The awareness is definitely growing though and currently where I work, I am being employed for my engineering ability and people actually recognize the fact (without prejudice) that I shouldn't be writing final code (It takes me a lot longer than it would a real programmer), but rather be the designer. I hope it is not simply a case of my having a smart and knowledgeable supervisor, but is in fact a change in the perception of software development. Cheers!

      --
      Atheist: Buddhist in a Prius
  4. As if computer science wasn't stunted enough by cyborg_zx · · Score: 4, Insightful

    Do the lessons of VB6 teach us nothing?

    COMPUTING IS HARD. You can't dumb it down just because it would be nice to do so. And I'm sorry but mathematics is just the way in which meaning is expressed for machines. There's no free lunch here. And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

    1. Re:As if computer science wasn't stunted enough by garcia · · Score: 5, Insightful

      Do the lessons of VB6 teach us nothing?

      People have been fucking saying this about various versions of BASIC since the beginning. Instead of trashing it, what did BASIC's various incarnations teach us?

      It taught us that Microsoft could roll what amounts to a scripting language into its Office line and make the programs ever more powerful without having to relearn something completely new and difficult. An education in just about any language, a book or a list of commands, and some time and you will have a fully functional module or two that saves you a ton of time and energy.

      I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft. If you're somehow saying that if they used C/C++ or even Perl that their code would somehow be wonderful or safe, you're insane.

      COMPUTING IS HARD. You can't dumb it down just because it would be nice to do so. And I'm sorry but mathematics is just the way in which meaning is expressed for machines. There's no free lunch here. And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

      I agree and while most applications require this, if you look at VB as a way to either get people started coding or to do quick things because it's built into the system instead of concerning yourself with the necessity of math-based algorithms, it serves its need.

      I'm no math whiz but I can write code (in languages other than VB) and so can plenty of others. Enough putting people down and being on your high-horse because you write in such and such. Math is important to CS and so is easy access to be able to write code.

    2. Re:As if computer science wasn't stunted enough by cyborg_zx · · Score: 4, Insightful

      The point is that VB is fine if you want to basically do completely trivial things with what you've already got - basic component connection. As soon as you want to do something non-trivial it all falls apart. The language design is simply worse. It's not that you cannot fuck up royally in C/C++ it's just that some stuff can be really hard to do elegantly in VB6. The newer versions have rectified this somewhat but having a rigorous approach to language design is something worth investing in - even if it's 'too mathematical' for some people's tastes.

      It's just not that easy to do some of the cool stuff we want to do. No amount of wishing it were different is ever going to change that.

    3. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 4, Insightful

      fact that now pretty much anyone can write code

      No, the hostility is because now pretty much anyone THINKS he can write code, which lowers the valuation of people who actually can do it. That lowers software quality on two fronts: People who can program are forced to write lower quality code because they need to write more to compete with too many amateurs (in the derogatory sense of the word) and people who can't really program write code that doesn't handle errors properly and fails, often silently and undetectedly, when the input deviates from the expected.

    4. Re:As if computer science wasn't stunted enough by Lumpy · · Score: 1

      VB is the DEFACTO standard RAD for almost all corporations. and the funny part is that VB6 is the Defacto Standard. Not .NET not by a long shot.

      Why? there are craploads of people that understand VB, Microsoft went and C-ified VB so hard that it does not even look anything like the original basic and now all those VB programmers they had need complete retraining.

      So what happened? Corporate America shuns .NET. Almost all apps are still in VB and new ones are in VB not .NET asp is still the norm and not aspx.

      It's far easier to keep using the old style that is working than to halt all productivity while you retrain all your VB jockeys for .NET and the sad fact is some things are incredibly faster to create in old VB6 than it is in vb.net so VB.net is actually a step backwards for most places.

      Which is why there is still a HUGE install base of VB6. Many MANY Vertical apps that sell for way more than any coder here could dream of their app selling for ($34,000.00+) are oversized collections of VB6 apps or one huge one that frightens anyone that knows anything about software.

      But it will not change. Those apps were coded by non programmers because programmers cant understand the nuances of the business process and would take weeks or even months to get enough education in the business process before they can even start to write useful software for that particular business.

      That is why VB is strong out there. Nothing else even comes close in RAD speed or usability that is a commercial product that Pointy Haired bosses really like. (Free exists. Python can outperform VB in a heartbeat as a RAD platform, it just has a somewhat steep learning curve and requires the programmer to have some programming understanding. It is missing a really polished IDE with package/project management though for the windows platform. Adding one of those might speed up python uptake.)

      --
      Do not look at laser with remaining good eye.
    5. Re:As if computer science wasn't stunted enough by shaitand · · Score: 1

      'I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft.'

      You are write but the reason people are upset about pretty much anyone writing code isn't that they want to keep the club elite. Or at least that isn't the right reason to be upset.

      VB introduces the same problem many microsoft products do. VB is simple enough for just about anyone to write code but MOST people are not bright enough to be able to write code in a responsible fashion. They write poor programs that companies come to depend on. Those programs might be resource intensive, may not scale, may cause security issues, or a number of other problems. Avoiding these problems requires a solid knowledgebase. A competent programmer could learn BASIC and write relatively decent code (BASIC is not exactly a champion of efficiency) but there are certainly better language choices for an already competent programmer.

      For a beginning programmer BASIC is also a bad choice. First because it gives those entering the field a false expectation of their ability to write real code. Second, and more importantly, because the language design supports bad programming habits and the syntax is dissimilar to the popular professional languages that have been in use during the past 10 years. You could justify it when there were many using Pascal but Pascal hasn't been in vogue for awhile now.

      'I'm no math whiz but I can write code (in languages other than VB) and so can plenty of others.'

      Then you are a math whiz. You are just more comfortable thinking about the math in non-classical terms. All programming is a form of algebra, not just the complex number crunching algorithms. All logic is algebra and in turn, numerical mathmatics is just a branch of algebra. Philosophy aside, all programming is just an abstraction for the mathematical operations being performed by a powerful calculator with lots of memory (AKA a computer). Every line of code you write (regardless of how you think about it logically) is converted into a number of mathematical operations.

    6. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      So what happens when one company starts prototyping (and shipping, since everyone knows that the prototype become the product) in Python instead of VB? Python is a better language, and free to boot, so that company will out-compete its PHB-managed dinosaur competitors, and all things being equal, prevail.

      That's why I think the out of touch corporate PHB will eventually be a thing of the past. Not because they'll wake up one day and read Dive Into Python and Design Patterns, but because the companies they manage will be out-competed by those that have more in-touch management.

      Besides, lots of people know Python, and lots more are learning it. How many people are learning VB or VB.NET for the first time?

    7. Re:As if computer science wasn't stunted enough by GTMoogle · · Score: 1

      At the risk of putting words in the OP's mouth, I don't think he was being so charitable as to say say poor coders would code better in something other than VB6. Rather, the insinuation about it being hard implies that some people have about as much business writing code as they would building bridges.

      As for whether the current state of affairs is good, or what would have been better, it really depends on whose perspective you're looking from. If you and I had to have an engineering degree to code, it would most likely mean much higher wages and much higher quality products. It would also mean there would be less software in general, and bad software is a fair bit less likely to kill anyone than a bad bridge. I don't even know where to begin judging what would the effect be on 'the industry'.

      While I don't necessarily agree with it, the boat might float a bit higher in the water if some people got off. (That also doesn't mean they need to be thrown off...)

      But really, the lesson that's really important here is that VB's syntax makes baby jesus cry. It's like furniture made out of Duplos. It might really be sturdy, but you'd still feel nervous putting your weight on it.

    8. Re:As if computer science wasn't stunted enough by Dogtanian · · Score: 4, Funny

      COMPUTING IS HARD. Are you Teen Talk Barbie by any chance?
      --
      "Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
    9. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 5, Interesting

      Funny story about work.

      The current back-end system that translates front-end customer orders to actual tangible products often fails silently, and the person who wrote it (who's still with us), thinks that's okay.

      Eventually, management got tired of people not getting their orders, or getting the wrong person's order, and not having a way of detecting that there's any problem. So they hired a new guy to write a new production system.

      Talking to the new guy, he said that the system is almost working, but it fails silently, and he should add error handling if he has time.

      DO PEOPLE NEVER LEARN!?!!

      Error handling isn't optional. Error handling isn't something that gets added into a system. It should be an integral part of the system's design. Furthermore, with exceptions, error handling is painless. There's no excuse for not thinking about it.

      This system is also much more complicated than its predecessor. It needs a dedicated server, uses a long-running daemon process that polls(!) a database for something that really should be a simple event-driven process, and still fails silently!

      Also, another harbinger of doom: "I don't need to use version control. I'm the only one working on the system."

    10. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      Faggot.

    11. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      lol python....

    12. Re:As if computer science wasn't stunted enough by timmarhy · · Score: 1
      "VB is the DEFACTO standard RAD"

      you used the words Rapid Application Development - die in a fire and all of your demon spawn brethren who though cutting the time required to write an application would be a good thing

      --
      If you mod me down, I will become more powerful than you can imagine....
    13. Re:As if computer science wasn't stunted enough by Lars512 · · Score: 1

      The real problem with VB6 from my experience has nothing to do with the language itself, but rather with two related issues. On the management side, a good friend worked for a software dev shop whose idea was: hire talented architects, then write it in VB so that even cheap, unexperienced coders can do the job. Surprise, surprise, the cheap, unexperienced coders made such a hash of it that they needed to spend the money for experienced and talented coders anyway. By then the cost to the company meant its creditors started to scale everything down. Coder side: people may be under the illusion that because they can code something (good), their code is just as good as someone with better depth of knowledge and experience (bad).

      Hence the hostility from experienced coders, who are undervalued by management due to that fallacy. I really don't think anyone's unhappy that more people can program and script things themselves. As long as they're maintaining it, it's all good. People just want to be valued by their actual contribution.

    14. Re:As if computer science wasn't stunted enough by pkesel · · Score: 1

      The problem that software professionals have with VB is that it has allowed hacker office types to produce something they cannot be responsible for, forcing them to leave their wonderful project on the doorstep of the IT department when it gets hard.

      It's the same as handing a sixteen year old a socket set so he can maintain his own car. He'll change the oil perhaps, but when he decides to make it a hot rod he'll end up pushing it to a mechanic to make it run at all.

      --
      - Sig this!
    15. Re:As if computer science wasn't stunted enough by Rich0 · · Score: 1

      I think part of the program is that most professional programmers tend to think in terms of systems with 1" requirement specifications.

      VB6 addresses a completely different niche. Suppose I have a task that I need to do, and by writing 30 lines of code I can get it done in an hour instead of a week. I might not every share my code with anybody. Maybe I'll give it to 5 others. It is a very powerful tool (and an easily misused one).

      At work we are always running into VBA apps cobbled together by somebody in their spare time. The solution of many IT managers would be to ban VBA and try to fire anybody who writes something in it (other than a professionally-designed application). It will NEVER happen. No manager is going to come down hard on the guy in his group who saved the group 3 weeks of solid effort in 15 minutes of his spare time, without asking for a 100 page requirements spec.

      There is a need to better manage and educate workers on the PROPER use for these kinds of tools, but the outright ban just won't work, and if it did it would put a company at a disadvantage.

      The people who use VB are basically just scratching an itch. If somebody wants to come up with a better tool by all means do it (some might argue that a few of these tools already exist). But to expect that ALL software will one day be well-written is foolish - as it neglects problems that fall between just-do-it-by-hand and hire-fulltime-coder.

    16. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      Reasonable people can differ on that particular point, but Python is orthagonal, has a clean syntax, has (almost-)closures, nested functions, multiple inheritance, real module support, docstrings, testing support, a large standard library, multiple independent implementations, a bytecode compiler, a bytecode decompiler... well, I could go on.

      Sure, you can dislike Python. Plenty of people do. But disliking it just because of one minor aspect of its syntax is, IMHO, a mark of inexperience and ignorance. And whether you like syntactic whitespace or not, it's STILL a better language than a lot of the other ones out there.

    17. Re:As if computer science wasn't stunted enough by Mordaximus · · Score: 1

      People have been fucking saying this about various versions of BASIC since the beginning. Instead of trashing it, what did BASIC's various incarnations teach us?

      VB6 unleashed the unholy terror that was the late 90s - hordes of crap programs written by poor programmers. VB6 deserves to be trashed. It lead to a influx of 'developers' that devalued the title, and gave developers a bad, bad name.

      VB6 is like a microwave. At home, a microwave is great. It kinda qualifies as cooking and it gets the job done. It's easy, anyone can do it, it's pretty much automated but as much time as it saves, and as simple as it makes things , it doesn't make someone who uses it a cook, much less a chef. A Chef understands how each and every piece of food on the plate interacts. He can freely substitute one ingredient with another, because of that understanding. He knows there are many, many other appliances in the kitchen, knows how to use them all, and which is appropriate for each job. He knows exactly what a microwave does to food. And because he does, he would NEVER cook with one. It doesn't belong in a chef's kitchen.

    18. Re:As if computer science wasn't stunted enough by NeilTheStupidHead · · Score: 1

      You'd get my mod points if you weren't an AC. ^>^

      The first thing I do when writing a piece of code is to create a basic error handling subroutine, even if it's (as often as not) as simple as "Input error, check your data and restart". Time later to expand and make a more robust handling system as the program grows in complexity.

      --
      Lose: misplace or fail || Loose: not bound together
    19. Re:As if computer science wasn't stunted enough by pasamio · · Score: 1

      In a weird way this is rather an accurate statement. We have a few similar applications, written by the system experts (e.g. the people on the ground needing the tool) that is absolutely abhorent to maintain and manage but it does the job and our customers (internal) love it because it allows them to do what they need. There are some systems that fall apart horribly from time to time (like the one that basically rakes in our income) but the people who use it like it. Its getting slowly rewritten into better and better code now that they have real programming people working on it but the original design was a crappy VB application that did the trick. One example I like to use is Sibelius, which was made by a bunch of muso's because a better tool didn't exist and now its almost the best tool out there to do what it does. The interface is pretty trashy in places sure, but for the people who use it, it works. And that's all that matters to them.

      --
      I always wondered where this setting was...
    20. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      Yes, my wife agrees. Moron.

    21. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      Experienced programmers know more ways to shoot oneself in the foot than the office heros who write these short time-savers. The problem is that not knowing about a way to shoot yourself in the foot is no protection from doing it. Customer with an umlaut in the name? Product number with a leading zero? Filename with a '? One line with start and end date switched around? If you're lucky, the program fails and you know that something's wrong. More often you will end up billing nobody or the wrong person for a delivered product, deliver the wrong product or no product, open yourself up to a remote exploit or report a total duration that is short by two times the duration of the whatever was in the line with the switched around start and end date.

    22. Re:As if computer science wasn't stunted enough by tepples · · Score: 1

      Python is a better language That is a dubious statement about a language which uses indentation to group statements. Even Basic isn't that silly.

      Are outlines silly? Even look at this comment on Slashdot: it can be readily understood from its rendered form, which uses indentation to group statements from one person. Why do so many critics of Python have such a hard time accepting this alternative to block-end keywords such as Loop of Basic, End of Pascal, } of C, or </blockquote> of HTML? What's silly is do ... od, if ... fi, and especially case ... esac from ALGOL, Maple, and Bourne shell (the last of which uses done because od is something else).

    23. Re:As if computer science wasn't stunted enough by Paulrothrock · · Score: 1

      Not everything in computing is hard. I banged together a couple PHP scripts to track my gas mileage. I didn't need to know about non-terminating algorithms, I just had to figure out what the steps were to calculate and record the information.

      However, I agree: Comp Sci shouldn't be dumbed down. There are definitely problems out there that require that level of theoretical knowledge to solve. However, the vast majority of folks coming out of Comp Sci won't use a lot of the stuff they were required to learn, and will have to learn a lot of things on their first job. I've seen folks who take comp sci write overly complex code and not know how to manage databases or how to diagnose problems with their systems or network.

      So there's definitely a space out there for folks who don't know about the math behind Turing machines, but do have a generalized knowledge of computers and networking. And there are degrees out there for these people. I graduated from Penn State with a degree in Information Sciences and Technology. It gave me a lot of knowledge about project management, networking, databases, programming languages, system configuration and other stuff that I actually use day to day. Had I stayed in Comp Sci, I don't think I'd be as well rounded or as prepared for the "real world."

      To use an analogy: Comp Sci is like pure physics. It's what develops stuff on the leading edge of technology. Programs like the one I was in are like engineering: We use the stuff developed by the physicists to solve real world problems. They're complimentary roles that both need to exist for computers and networks to move forward.

      --
      I'm in the hole of the broadband donut.
    24. Re:As if computer science wasn't stunted enough by cyborg_zx · · Score: 1

      Absolutely: a poor coder would be a poor coder in any language. VB just gives them the opportunity to do something. The real question is whether or not we would really rather that they hadn't - or at least don't do so for anything that really matters: like building a bridge that we'd really rather didn't fall over.

    25. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      while ( true ) { System.out.println("terminate this!"); }

      I think you meant to say, all non-deterministic algorithms can be re-written as deterministic (e.g. all recursive algorithms can be made non-recursive with loop statements).

    26. Re:As if computer science wasn't stunted enough by cyborg_zx · · Score: 1

      Any project of about 100 lines in size, such as I would expect your example to be, is going to be quite easy even for a novice. Not too much can go wrong and there's not too much to check.

      At 1000 lines you would probably like to be able to form some abstractions otherwise you're going to find it a bit tricky to work with.

      At 100,000 lines if you aren't abstracting your program is almost certainly a mess of absolute crap that is fragile and will break easily.

      At 100,000,000 lines nobody really has a fucking clue how to make sure the thing works well but testing the fuck out of it is the best we have for now (unit tests, regression tests etc...)

    27. Re:As if computer science wasn't stunted enough by aGuyNamedJoe · · Score: 1

      Are outlines silly? Even look at this comment on Slashdot: it can be readily understood from its rendered form, which uses indentation to group statements from one person. Why do so many critics of Python have such a hard time accepting this alternative to block-end keywords


      My objection to Python's choice is neither the dependence on indenting, which is fine, nor the lack of block-end keywords. Rather, it's the dependance on characters that are not visually distinguishable. I can produce two visually equivalent texts, one of which is a valid Python program and the other of which is just text -- If I do the indenting with space characters, instead of tab characters, it's not valid.

      I understand why tabs are "better", but that doesn't change the fact that I can't find the error by reading the printed version of the program.

      Notice that you're not having difficulty distinguishing the paragraphs in this message, even though I'm using blanks and blank lines to distinguish them.

    28. Re:As if computer science wasn't stunted enough by sandman_eh · · Score: 1
      I dislike syntatic whitespace. A lot.

      But I find I'm liking python.

      I've only just recently come to use it anger having been aware of the language and kept half an eye on it since about 2000. The main reason it has taken me until now to learn it properly has more to do with not having a project to do with.

      This year , two maybe three have come along at once, and hence i have thrown myself in.

      Yes the syntatic whitespace can feel awkward at worst, but the rules for it are reasonably natural and I haven't have any problems.

      But the other elements of the language are really good, and quite frankly I'm not going to throw the baby out with the bathwater. And it is clean bathwater anyway - just not to my taste....

      --
      Master of Peng Shui.Ancient oriental art of Penguin Arranging)
    29. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      First, there is more than one kind of whitespace: tabs and spaces. A tab can look like any number of spaces and the only way to know that you have tabs among your whitespace is by relying on editor functionality or by making tabs visible (i.e. not whitespace). Second, if statements are grouped by preceding whitespace, all grouped statements must have the same amount of whitespace in front of them: No extra indentation to visually align conditions on consecutive lines or other visual cues about the informal structure of the code. Third, in many contexts, whitespace is seen as collapsible and lines as wrappable (webpages for example). If your language relies on whitespace, that not only messes up the readability of your code, but it destroys the structure of the code as well, making it unrecoverable. Fourth, precedent: Even natural languages with all their ambiguities and inconsistencies didn't do away with visible structural identifiers, period.

    30. Re:As if computer science wasn't stunted enough by billcopc · · Score: 1

      (from a far-above-average-in-math dropout)

      VB is in a rough spot. It is relatively easy to learn and will tolerate lots of "bad" code. It's okay to dumb something down for a particular purpose, but you have to add lots of "padding". A beginners programming language should be the computer equivalent to bumper cars: no matter how hard you try, it's pretty hard to hurt anyone if you stay within the confines of the car. Bumper cars don't go very fast at all, just enough to give you cheap thrills.

      VB is a bumper car for computers. You sit a techno-weenie in front of VB and they can write all sorts of crap (excluding kinky DLL calling stuff) and they will still end up with code that doesn't really have nasty leaks. It might not do what was intended, but that same monkey could do a whole lot worse in C.

      Point #2: Computing is hard. But does it have to be that way ? We're still writing code the same way we were twenty years ago, and we're still dealing with the same problems and challenges, we've just added more shiny graphics to it all. We've got scripting languages that are trying to become operating systems, and operating systems that are trying to become gravitational singularities.

      Why are we not using all that power and wisdom to simplify the computer ? Just like robotics have revolutionized the manufacturing industry, we should have software robots that do the grunt work for us. I don't feel like writing yet another ten-page-long exception handler, it's the same old exceptions as every other GUI program, so why couldn't some form of "intelligent" macro do it for me ? Much like manufacturing lines, if a task can be done by the dumbest developer on the planet, then it should also be doable by a specialized AI. Forget code reuse and copy/paste, I want something that looks at the actual code and produces something appropriate.

      Better yet: generalize current systems, APIs and network protocols. Make it so they're all more or less compatible (at the command level), so that a tool that can fetch email can also fetch Usenet articles, or handle instant messaging. Instead of code that goes "Here's how you do Function X()", we should be seeing "I want to get mail. Go get my mail". The large majority of developers should be like middle managers: they bark out high-level orders and the drones (computer) carry them out. A business app's source could be just a few dozen lines of code that concisely defines what it's supposed to do.

      Once we free ourselves from the current repetitive nature of software development, it will free up huge resources (time, money) to focus on writing more innovative and productive applications.

      --
      -Billco, Fnarg.com
    31. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 4, Insightful

      And I'm sorry but mathematics is just the way in which meaning is expressed for machines.

      But not for humans.

      And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

      I have no idea what you just said, and I've been coding for years.

      I agree that computing is hard. Well, I find it easy, but I agree that, in general, if you're going to use a computer, you're going to learn some logic, and I will not help you to avoid thinking.

      But 99% of the apps I write require little to no knowledge of mathematics, beyond basic algebra and arithmetic, and maybe a few binary tricks. In particular, Calculus was a required course for CS in college, and I have never used Calculus in my computing, even programming. Ever.

      I have not read that book, but I would argue that a big reason computer science is stunted is this absurd relation to mathematics. You need better-than-average communication skills if you're ever going to work on a team -- at least to comment your code. You need philosophy -- yes, philosophy! -- at least as much as you need math, and a decent logic class would be even more useful. And you need research skills a bit beyond justfuckinggoogleit.com, if you're going to RTFM -- considering you may have to go looking for a manual, or even the right software to begin with.

      --
      Don't thank God, thank a doctor!
    32. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      Sorry to burst the bubble of the VB World but in my experience VB Programmers are worst disiplined in the industry. I've had too many VB Developers work under me who don't understand case sensitivity, cannot wrote proper functions, don't properly declare their variables and can't write a proper class. I had several people of a VB background who my java developers declared "untrainable". People from C, C++ or Java backgrounds write much better codes, generally understand error handling much better, don't do dangerous casts and organize their objects logically. VB programmers often grossly misuse globals as well. Many of my previous employers won't hire VB developers because of the poor programming habits they invariably experience with programmers who start with VB. Dephi, is a different story as is SmallTalk. Of course coming from Microsoft, I guess I shouldn't be surprised. Design was never their strong point..NET was in improvement but many VB 4,5,6 people couldn't really make the jump to true OO development or C++/Java like rules that were introduced in VB.NET. Remember, even Microsoft eventually abadoned the pre-VB.NET model. They did it for a reason. Sorry but V but the vast majority of what was done before VB.NET was really kiddie scripting and most of these still haven't moved into the world of more rubust programming languages.

    33. Re:As if computer science wasn't stunted enough by Dr_Barnowl · · Score: 2, Insightful

      DO PEOPLE NEVER LEARN!?!!


      No, apparently not.

      I work for a major UK public service, working on tools and content surrounding an international standard. A lot of the code is VB6 and VBA. And the bulk of it has "On Error Resume Next" at the top of every routine. One of our contractors has an IDE plugin that inserts this piece of code automatically (the very idea of this is enough to make me froth at the mouth).. The rationale is twofold ;

      • Unhandled errors off the top of the stack and terminate the program, which doesn't give you a chance to save your work. That's fair enough....
      • Apparently, users don't like seeing error dialogues

      Neither of these is an excuse - where you expect errors, handle them. Where you don't, present them to the user, log them, email to the Pope, whatever your environment demands. Ignoring them is setting yourself up for immense pain, in the form of "it just doesn't work" bug reports from users that take an epic amount of time to resolve.

      This isn't helped by the general style of the code, which is heavily error-dependant - ie, it uses error conditions to check for things like whether an item is in a collection or not. The VBA.Collection class has a lot to do with this as it doesn't have another means of checking for contents.

      But I know for a fact there are places where actual logic errors occur in normal use, but it's one of those situations where are large part of the requirements are expressed as the codebase, and the specifications are so vague and complex that it's just easier to raise a sigh and accept it. Where possible, I replace the error handling with something more structured, and it's actually possible to get a stack dump out of a lot of the code when things go bad now.

      There's no excuse. Yes, it makes your codebase and your binaries larger (but importantly, not slower). But you can have "proper" error handling in VB6. At my previous post, where I was the only programmer brought in to maintain another train wreck, they went from scratching their heads and guessing where the error was to knowing to the line where the error occurred and which values passed as parameters caused it. And my effort was running some automatic code inserters, rewriting any existing error handling, and recompiling the binary.
    34. Re:As if computer science wasn't stunted enough by cyber-vandal · · Score: 1

      people who can't really program write code that doesn't handle errors properly and fails, often silently and undetectedly, when the input deviates from the expected.

      And you think this kind of idiocy never existed before VB? Or is caused solely by VB? You obviously haven't been in IT very long.

    35. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      I agree that it was a mistake in Python to allow more than one kind of whitespace. Tabs should have been disallowed from the start. :-) As somebody else mentioned, however, you can have any decent editor tell you about tab characters.

      That said, the whitespace engine is smarter than you think. First of all, indentation is ignored inside an unclosed parenthesis or bracket list. That means that you can align function parameters, list elements and so on however you want.

      Also, you can use a line continuation character to indent parts of a line separately.

    36. Re:As if computer science wasn't stunted enough by Jesus_666 · · Score: 1

      Do the lessons of VB6 teach us nothing?

      They teach us that it doesn't matter how crappy your language is, once you bundle it with a top-notch GUI builder you do end up with a valuable product.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    37. Re:As if computer science wasn't stunted enough by dkarma · · Score: 1

      People are getting confused on this issue. When it comes down to it anyone can pick up a top level programming language and code with little or no knowledge of advanced mathematics similar to the way you can pick up a phone and dial it without knowing the mechanics of how it works.
      Everyone replying to this thread about how math is essentially pointless these days however should go and try to program in assembly.
      When working with kernels on any system or when dealing with registers etc. it is extremely necessary to have a foundation in at least boolean logic, algebra, binary, hex, and the octal number systems.

      Algorithms require an understanding of math naturally, but IMO this is secondary to actually learning how your programs are interpreted by the machine and how they affect the code running on your particular OS (which also IMO requires STRONG math skills).

    38. Re:As if computer science wasn't stunted enough by tepples · · Score: 1

      First, there is more than one kind of whitespace: tabs and spaces. Likewise, Visual Basic has more than one kind of end tag: Loop for a Do block, Next for a For block, Wend for a While block, End If for an If block, End Select for a Select block, etc.

      the only way to know that you have tabs among your whitespace is by relying on editor functionality Handling HT characters at all, other than by displaying the glyph in your font for code point U+0009, is editor functionality.

      or by making tabs visible (i.e. not whitespace). In languages that use start and end tags around code blocks, such as HTML, C, VB, etc., the only way to find the start and end tags of the block you're in is to use editor functionality: either highlighting or reindenting, and this reindenting makes your code look (drumroll...) like Python.
    39. Re:As if computer science wasn't stunted enough by Hognoxious · · Score: 1

      Some guy called Brooks on the line...

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    40. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      "I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft."

      That is the most 180-degree wrong point I've ever seen.

      The hostility comes from the falsity of the assumption that programming is hard just because (a) the language isn't "easy enough", and (b) Microsoft didn't design the language. In fact, pretty much everyone can write code IF THEY LEARN HOW TO CODE - full stop. Telling people that they do NOT need to learn anything, that computers are only hard because other people made them hard on purpose, that all of the complexity of computing comes from invented complication, that all they have to do is use a Fischer-Price toy language and programming will magically become as easy as playing with baby toys; this is the lie that damages computing and ruins people for programming.

      Hard programs are hard to write in every language. Easy programs are easy to write in every language. Yes, I mean Ruby and C and assembly and brainfuck and BASIC and COBOL, too.

      It is deleterious to society's relationship to computers to sell them the lie that computers can be made so easy to use that they will read your mind and do what you mean without having to exert any effort. Apply this to any other course of study: will re-designing scalpels make it so anyone can perform open-heart surgery? Will dumbing down the laws of physics make it so that anyone can build a safe bridge? Will rewriting the language of mathematics make it so any layman can solve Fermat's last theorem?

      No, regardless if Richard Stallman himself wrote Visual Basic, it would STILL be the paving on the path to the backwards sliding of civilization into Cargo Cult ignorance.

    41. Re:As if computer science wasn't stunted enough by Eiron · · Score: 1

      Yeah. Things being faster is terrible.

      --
      Apathy; it does a body good.
    42. Re:As if computer science wasn't stunted enough by TargetBoy · · Score: 1

      Use the right tool for the right problem.

      VB is great for doing small client/server applications that are user-interface heavy.. aka most business applications.

      Needed something for a large client/server project that is user-interface heavy? Well, then you have tools like PowerBuilder.

      Need software that does large-scale matrix operations to solve least-cost optimization problems? HINT: VB and PowerBuilder are not the right tools. You can get away with prototyping it with them, but your production code is probably going to be in C or C++.

      The same idea can be applied to databases. MySQL, Access, MS SQL Server, Oracle, DB2.. they all have a place and a function where they are the best tool for the job.

      Bigotry just narrows your options.

      On the topic of the use of math in comp-sci... It seems to me, after a lot of years in the software business, that the primary function of all that math was to help teach problem solving and logic. Physics is wonderful for teaching what I call "correct-thinking", since you can "solve" many physics problems in the wrong way and get a "correct" answer, but one that in the long run is a fallacy. This is coming from someone who took all the same courses as a math major through junior year and held the highest GPA in math in his class, at that point I completed my minor.

      If we focused more on those topics instead of developing the skills through as a side-effect of other courses taken, then I think we would be a lot better off. I see a lot of people fresh out of computer science who make errors in "correct-thinking", rather than having any kind of error in coding.

    43. Re:As if computer science wasn't stunted enough by jgrahn · · Score: 3, Insightful

      Error handling isn't optional. Error handling isn't something that gets added into a system. It should be an integral part of the system's design. Furthermore, with exceptions, error handling is painless.

      I wouldn't use the word "painless". Error handling will always be painful in the general case. It's like going to the dentist. It's painful, but if you don't do it, you can predict endless, total pain later on. But I think you knew that.

      Also, another harbinger of doom: "I don't need to use version control. I'm the only one working on the system."

      A haha haha haha. That's just great.

      But I suspect your real problem is that noone replied: "Good for you. Now go on and use version control, or the guards will see you out". You're describing a situation where critical systems are written by people with an unprofessional attitude to their work (not using the tools they should know they need), and noone (except for an AC on Slashdot) appears to check their work.

      I hate micro-management as much as the next guy, but somehow it's more attractive than no management at all.

    44. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      I did some contract work last year for a company using vbscript/asp for the webpages. I couldn't find a single page without severe problems (eval/execute() on unchecked query parameters, sql injection, xss vulnerabilities, etc). Of course, they'd be doing the same things in PHP or any other language.

    45. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      No, I'm presenting an instance of the classic "make it hard, so only professionals can do it" rant, which pretty much applies everywhere and everytime if the field requires education or experience which some product pretends to automate away. Nevertheless, Visual Basic is a remarkable and especially painful example, because by being available in the pervasive Office suite, it enables not lesser people of the same profession but the natural enemies of programmers (non-technical office people) to automate certain tasks without asking IT, which is both a recipe for disaster and eating away at the perceived professional legitimation of the IT department.

    46. Re:As if computer science wasn't stunted enough by smallfries · · Score: 4, Insightful

      I have no idea what you just said, and I've been coding for years.


      The book (which I haven't read, but have come across enough crank bullshit over the years to quote verbatim) is based on the idea that algorithms are the wrong model for program. It's a poor misguided idea based on a trivial technicality - an algorithm (by definition) takes an input, performs a computation, and produces an output. Program do not, and are generally called reactive as they maintain a dialogue with their environment of many inputs and output. It's a technical triviality because as the GP points out you can take a series of algorithms and substitute them as the "guts" between each of the I/O operations. Nothing much is lost in this modelling. If you really need to analyse the bits that are missing then just make an I/OP operation an atomic part of the model. Process calculi (used for concurrent and parallel) systems take this approach. If you really want to appease the anal fanatic cranks (like the book author) then just explain that all of their reactive components are parts of a large algorithm that encompasses their operation and their "environment".

      But now to my point. I bet that you know more maths that you think that you do. It's just that the type of maths that you learnt is not the type they teach you in school. It has nothing to do with real numbers, or calculus. It's a branch called discrete maths that is the heart of computer science. You know how to use trees and graphs? They form a big part of discrete maths. How about changing state as your code executes? That's actually a branch called monad theory. Or do you know more than one language? You said you did CS in college so I'll guess that you're familiar with parsing / compiler writing / language design. A mathematician would probably call that abstract algebra (or at least it's a close fit).

      So you know much more dry dusty old math than you suspect - but for the past fifty years these parts of maths have been called CS. Something that is lost on the book author....
      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    47. Re:As if computer science wasn't stunted enough by Sproggit · · Score: 1

      Correctomondo!!!
      Someone mod parent up!

      The problem wuth VB as a language is exactly the same as Windows as a server platform.
      What Microsoft has done is de-steepened (not a word, I know) the lurning curve to such an extent that even the shittiest of coders (and admins, for Windows) can push a product 'just barely good enough' out the door.

      Once the problem truly becomes hard, these coders (and admins) are left in a a complete state of frustrated confusion, since it was SO easy to get to this point WHY cant they seem to get this block of code (or this insecure web server) sorted.

      The dumbing down of IT has resulted in an unfortunately large percentage of dumb IT people.

      Thanks Microsoft! Your wizz bang, make the language sell wizards that code your app by itself has helped only your pocket-books ... as expected.

    48. Re:As if computer science wasn't stunted enough by feepness · · Score: 1

      And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

      I have no idea what you just said, and I've been coding for years. State machines. Check it out, they are quite useful.
    49. Re:As if computer science wasn't stunted enough by jorghis · · Score: 1

      In software engineering there is a tradeoff between cost/time and quality. In the real world errors may be acceptable for some applications given how much time and money would have to be expended to make the system perfect. Making claims based on absolutes about how "Error handling isnt optional" doesnt take this into account. Sure, if you are writing say, the flight control software for an airplane then I can see "Error handling isnt optional" but if you are writing some program that is used to generate log files given a bunch of data from different sources and will only ever be used by one person then handling every case that could come up might be a waste of time.

      It isnt just 'bad' software engineers, its also ones who consider the value that their time has and act appropriately.

    50. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      Even then, error handling *still* isn't optional. The handling can be as simple as:

      printf("This input's crazy messed up! Bailing out...\n");
      fflush(stdout);
      exit(-1);

      If you don't have any error handling at all, you WILL get problems that you can't reproduce because something a half hour ago silently failed and didn't report it, and you'll have to spend a week or more tracking the damn thing down. It doesn't take a week to insert a single error handling block that would make the problem easy to track down.

      Error handling is painful and nobody likes to do it, but if you don't in anything that is going to be used more than a few times or by more than a 1 person, you're just shooting yourself in the foot. And head.

    51. Re:As if computer science wasn't stunted enough by TheLink · · Score: 1

      I don't generally code in Python, but I think using tabs for indentation is definitely better than using spaces.

      Why? Because it's easier for someone else reading your code to set the viewed indentation to whatever they like, without changing your code. They prefer 1 tab = 8 chars, or 3 chars, no prob - they'll automatically see it the way they want without any changes.

      It's not a big deal, but I really don't see how "X spaces" can be better than "1 tab". Maybe if you copied and pasted code from a terminal/browser/IM client or something? But I think nobody expects that sort of thing to work automatically correctly with Python - you'd have to go check/fix the whitespace first.

      --
    52. Re:As if computer science wasn't stunted enough by Silver+Gryphon · · Score: 1

      I don't suppose, by chance, that you're a consultant?
      Paid by the hour?

    53. Re:As if computer science wasn't stunted enough by bb5ch39t · · Score: 1

      I'll be the goat here and say that this is one reason is I like Java. No, it is not perfect. But it will not fail silently due to lack of testing some return value for -1 or NULL or some other magic value. Of course, if you want it to, it is simple to enclose every function with try-catch where the catch does nothing. Or where the catch translates the exception into a magic return value. But you're at least forced to do __something__. Use of a "null" catch should be ground for dismissal as far as I'm concerned. Even if the exception is "minor" and "doesn't hurt anything", it should at least be logged somewhere.

    54. Re:As if computer science wasn't stunted enough by thethibs · · Score: 1

      COMPUTING IS HARD

      Some is, some isn't. Simple programming is easy; we teach it to children. My kids were writing Logo programs to generate fractal graphics before they were eight.

      Sure enough, VB makes it possible for amateurs to write small programs that perform useful work while simultaneously violating every best practice we know of. On the other hand, VBA, VB6 or VB.Net in the hands of an expert will sing as fine a melody as C++ and be easier to keep in tune than Java.

      We can't blame programmers who have invested huge amounts of time becoming proficient in one or more of the "better" languages for being upset with the quantity of VB code out there and the ease with which it was produced by people of lesser status. You can't deny others of us a little chuckle either.

      As an aside, Ruby on Rails looks to be a worthy successor to VB as the plebian development environment of choice for web apps. The learning curve is shallow, the "time to first result" is short, and the hard stuff that usually takes an expert is already there in the libraries. Now that's annoying.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    55. Re:As if computer science wasn't stunted enough by Just+Some+Guy · · Score: 1

      "I don't need to use version control. I'm the only one working on the system."

      Take one for the team and shoot him.

      Version control is mandatory here for a few reasons, including "what have you changed since it quit working last Tuesday?" and the ability to throw away a development branch when you realize that it's not panning out the way you'd hoped. The latter is my personal motivation. You can simply be more creative and experimental when you know you're a quick "svn revert" away from a known-good state.

      --
      Dewey, what part of this looks like authorities should be involved?
    56. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      is based on the idea that algorithms are the wrong model for program.

      For some problems, I'd tend to agree. Talk to a functional programmer, for instance.

      I don't do that, of course, because I've been doing imperative algorithms for long enough that it's difficult to wrap my head around things like Erlang.

      You know how to use trees and graphs?

      I actually had to learn trees recently. I did not know what a B-Tree was, except that most filesystems use them, so I ignored them until I started writing a filesystem.

      You said you did CS in college so I'll guess that you're familiar with parsing / compiler writing / language design.

      Well, I didn't finish. But I do know a bit about this, some of which isn't a good match for abstract algebra at all -- LISP derivatives, for example. (I understand you could call it a subset, but the fact is, you can do LISP without understanding anything about algebra or operator precedence.)

      I would also suggest to you that, while some of these concepts may come from math originally, more often it's more like a loose analogy. You mention a few things that have to do with math; let me mention a few that I doubt have much to do with traditional math: caching, file formats, protocols, objects and inheritance, package managers, simulations (games) and things like dynamic level-of-detail...

      And again, I'd suggest that a student who takes a philosophy class as a prerequisite to learn-to-program 101 is much more likely to get the concepts. I'd suggest this partly because much of the math that's required is simply not used, does not necessarily require the same skills as programming, and may actually be more difficult for a good coder to learn than the language itself -- among other things, it's easy to take Hello World out for a spin and actually make sure you understand what's going on. Not so easy with most math, beyond arithmetic and trigonometry.

      If I were to design a CS curriculum, I'd require math up to and including algebra, and beyond that, only what's required for a particular domain (trig and maybe basic calc for game engines, for example). I'd also require english, philosophy, logic (if there is such a class), and any subject that requires the student to come up with a researched report (citing sources). Then I'd sit the kids down with the interpreter/compiler of the day, a manual, Google, and an assignment, and be there to offer help.

      --
      Don't thank God, thank a doctor!
    57. Re:As if computer science wasn't stunted enough by Planesdragon · · Score: 1

      A Chef understands how each and every piece of food on the plate interacts.

      Hah! At most, a chef thinks about it. They then create a dish, that may or may not be served anything at all like how they thought. The best ones (the guys who actually make money, as opposed to working for someone else their entire lives) make dishes that are self-contained, and can be compilmented by dishes as the customer prefers.

      And because he does, he would NEVER cook with one.

      Double-hah!

      A microwave is a tool. For some foods (those that are mostly water and just need to be heated), it's perfect. For others, it's a bad choice. But that's the same as any tool. A chef who softens butter in their oven is a moron, plain and simple.

      Maybe, MAYBE, if your chef works for a millionaire and has an unlimited budget, he would turn down a microwave. The chef would almost certainly want a dozen other tools before the microwave as well. But to say that a microwave has no place... well, that's just stupid.

    58. Re:As if computer science wasn't stunted enough by Citizen+of+Earth · · Score: 1

      You can't dumb it down just because it would be nice to do so. And I'm sorry but mathematics is just the way in which meaning is expressed for machines.

      Basic math is good, but do you really need things like calcuseless and differential equations to be good at Computer Science? I've certainly never used them. This is the only math they taught me as a CS undergrad. (Mind you, discrete structures, algorithm analysis, and boolean algebra were CS courses.)

    59. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      You ought to pick up a good algorithms book so you can understand that statement. What he's saying is actually really obvious when rephrased:

      "If you write some functions that are known to always terminate (fancy word for it never gets stuck polling something or in an infinite loop, etc.) and write a new function that just calls those functions, it will always terminate too."

      The key idea here though is that once you read an algorithms book and get used to its line of thinking, you can figure out how to prove whether or not your algorithms terminate, judge how well they scale, and guarantee that they work on every set of parameters you throw at them (every input). It's 50% math, 50% learning how to apply rigorous logic, but the payoffs are big.

    60. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0, Flamebait

      I am SO glad you aren't in charge of designing CS curricula. What you have just described is a software engineer curriculum, not a computer science curriculum. Congratulations, you are now well on your way to training legions of code monkeys!

    61. Re:As if computer science wasn't stunted enough by rossifer · · Score: 1

      I think part of the program is that most professional programmers tend to think in terms of systems with 1" requirement specifications.
      One would think that "agile development" had never been proposed as a radically superior alternative to the waterfall process. In my experience, the number of programmers asking for thick specs are vanishingly few. Also, all of the ones I've observed were among the worst programmers I've ever seen, and wanted the spec as some sort of CYA exercise.

      Most of the time it's management who wants the big spec, usually as some sort of control/power game.

      Big specs are a sign of either 1) a badly broken development process or 2) an incredibly high risk project. One or more people are pretending that they know all of the trade-offs and can keep all of the details straight before doing any coding. The reality is that 99% of the time, the spec writers can't get close on the details or the trade-offs, and the big spec is already a SNAFU before it's half done.

      On high risk projects (space shuttle control software), the spec is the project and the team will have processes to incorporate development-time learning back into the spec. Personally, I find those kinds of projects don't suit my personality (I thrive on agile teams with effective requirements management).

      VB makes the easy stuff easy; but the hard stuff is simply impossible.

      Regards,
      Ross
    62. Re:As if computer science wasn't stunted enough by eric76 · · Score: 1

      After seeing the code written by a number of software developers with a wide variety of skill, I came to the conclusion that the best way to judge their "production quality" code is by their error handling.

      If they don't handle errors, they are useless. They will never be good enough to keep them around and you will never be able to trust their code. Nothing else matters (unless their father is the owner of the company). Send them on their way.

      If they handle only the most common one or two classes of errors, they are of very minimal skill. They may be able to handle quick hacks, but you can do better. Send them on their way.

      The ones you want will check every possible error and do so efficiently. With that kind of attention to detail, these are the ones you want to keep. Since you sent the lesser skilled amateurs and hacks away, you should be able to save plenty of money by reducing the pay spent on amateurs on hacks, so give this small group a large raise and provide plenty of benefits. Keep them happy.

      Some check nearly every error but may miss a few. These are worth keeping, but make sure their code is reviewed to make sure they didn't overlook something.

    63. Re:As if computer science wasn't stunted enough by Jerf · · Score: 1

      Yeah, I thought it was that guy.

      I'd be a lot more impressed overall if his ideas didn't already exist in the real world as stream programming. I have asked him what the difference is here on Slashdot before, and I all I got was another iteration of the standard algorithm rant, without any evidence that he understood or engaged with my point. This guy isn't a genius, just a standard-issue paranoid schizophrenic guy with The Unifying Theory. He differs from Time Cube Guy only in the relative coherence of his overarching theory.

      He also seems to have no comprehension of the idea that his circuits are isomorphic to algorithms; pointing this out just gets another might-as-well-be-copied-and-pasted condemnation of algorithms.

      Basically, as near as I can tell, he's been criticizing for years and years now and has done jack shit to actually prove anything. (Unsurprising, since he can't prove his typically amorphous Unifying Theory.) If his ideas were half as wonderful as he claimed, he should be making buttloads of money, not writing books about why everybody is wrong and he's right... but he can't show you the machine, it's for you to actually implement, I'm sure. Just like Mentifex's earth-shattering ideas on AI, which only await someone to come along and actually implement them since he can't quite seem to convert his amorphous Unifying AI Theory into running code.... (maybe because it's based on algorithms, heh. Somebody point Mentifex at this guy and let them burn each other's time...)

    64. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      I used to think that tabs were better than spaces too. But after dealing with one misaligned program too many, I changed my mind.

      The problem is that there are two uses for left-margin whitespace: logical indentation and aesthetic lineup, and people use a mixture of tabs and spaces for both.

      If people were to follow the rule that only tabs were to be used in doing the logical indentation, and only spaces were to be used for, say, lining up function arguments, we could still all use spaces and adjust indentation how we wanted.

      But people don't do that, so we're stuck with using spaces if we want our code to be consistently presentable.

    65. Re:As if computer science wasn't stunted enough by starfishsystems · · Score: 1
      I came to the conclusion that the best way to judge their "production quality" code is by their error handling

      I was going to offer a dissent, until I noticed how carefully you have phrased your observation.

      What I was going to say was something along the lines of how it can be a benefit to modularity to leave out the error handing. But that's in the prototype stage of code development, where (I feel) that all available cognitive bandwidth should be applied to understanding the structure of the system without distraction.

      But you're referring to production code, at which point all choices concerning modularity have been weighed and decided and baked it. And if part of that baking didn't involve a careful walkthrough to test for impossible or out-of-bounds conditions, error returns, and so on, and if the error handling framework itself lacks coherence, then yeah, that's not quite what I'd call a finished product.

      Someone who thinks it is is still operating at the apprentice stage. These people are easy to hire and they can still be useful to have on staff. But they should be working under supervision, and for that you definitely need to have a master on staff.

      --
      Parity: What to do when the weekend comes.
    66. Re:As if computer science wasn't stunted enough by dkf · · Score: 1

      Calculus was a required course for CS in college, and I have never used Calculus in my computing, even programming. Ever. Sure, but hardly any schools teach proper logic so proxy subjects/topics have to do. And that's what Calculus is: those who do well at it tend to be the same as those who can grasp logic and actually think in a way that is useful for CS. (Now, if there was any school that taught modal and intuitionistic logic, that'd be really useful...)
      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    67. Re:As if computer science wasn't stunted enough by geekboy642 · · Score: 1

      Let me agree to this with an anecdote.

      I'm one of those "office hackers". One of the reports used in my shop is a fairly byzantine format that's at least 30 years old. Most of the reports would be sent out with at least one big error. But for those 30 years, nobody's bothered to do anything about it. I created a Tcl/Tk app that builds and validates the report based on a dialog with each user. Since then, I've been asked to add more features to it. The first version was only about 230 lines, and it was entirely one single script. No procedures.
      It now is about 320kB of code, and if I hadn't rewritten it to make heavy use of namespaces and packages(Tcl's closest equivalent to OOP), it'd be utterly impossible to work on or with.

      --
      Just another "DOJ fascist authoritarian totalitarian bootlicker" -- Zeio
    68. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      "If you write some functions that are known to always terminate (fancy word for it never gets stuck polling something or in an infinite loop, etc.) and write a new function that just calls those functions, it will always terminate too."

      Maybe you are reading past a typo, but what he said was:
      a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms
      which doesn't match your rephrasing in any way.

      I would be interested to know how a non-terminating algorithm is broken down solely to terminating sub-algorithms though. There has to be at least one function that doesn't terminate... maybe the key is in some particular definition of 'algorithm'.

    69. Re:As if computer science wasn't stunted enough by GaryPatterson · · Score: 1

      I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft. If you're somehow saying that if they used C/C++ or even Perl that their code would somehow be wonderful or safe, you're insane.

      I think VB is like Access - deceptively easy to get something up and running, but getting a solid application up requires the same sort of rigour that any other language would. People get the quick results and forget the error handling, clean code, data validation and so on. In business, the goal is all too often the quick fix, where the hacked up prototype becomes the production tool.

      In my experience, many internal company VB and Access projects are good concepts, but awful implementations.

    70. Re:As if computer science wasn't stunted enough by Tablizer · · Score: 1

      The proper way to do such a system is usually an "exception report", or at least mark the bad transactions with a column flag. Then have it send emails (or similar notification) to the persons in charge of dealing with the exceptions. Thus, when they arrive in the morning, they have a list of problem transactions to troubleshoot and make decisions about. It may resemble:

      ERROR REPORT

      Problem #1
      Transaction ID: 12345
      Error description: vendor ID not found in Vendor_Table
      Time of error: 12/12/2006 3:22am
      -----
      Problem #2
      Transaction ID: 32435
      etc...

      This system is also much more complicated than its predecessor. It needs a dedicated server, uses a long-running daemon process that polls(!) a database for something that really should be a simple event-driven process, and still fails silently!

      Why did they have to overhaul the old one rather than just adjust the way it handles errors/problems?

    71. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      I would also suggest to you that, while some of these concepts may come from math originally, more often it's more like a loose analogy. You mention a few things that have to do with math; let me mention a few that I doubt have much to do with traditional math: caching, file formats, protocols, objects and inheritance, package managers, simulations (games) and things like dynamic level-of-detail... You're right: It's not "traditional math"-i.e. calculus or algebra. It's graph theory, logic, and other topics covered in discrete math. Which are the basis of just about everything that programmers do.

      For example:
      Caching: a deterministic method of storing information in a temporary place in order to find it again. How do you show that your caching technique is working, and is efficent enough for your requirements?
      File Formats: A method of encoding and retrieving information in a useful way. Can you be sure that you're reading them correctly? Can you ensure that the file system is storing it correctly?
      Protocols: Encoding and decoding information through a stream. Are you doing this efficently(for a given value of efficency)? Can you prove it?
      Simulations and games: Look up game theory. AI behavior is, at the moment, purely based in mathematical algorithms.
      Dynamic LoD: A deterministic method that's purpose is to limit the number of polys that the system needs to render at any one time. You NEED a substantial mathematical background to even approach this problem-it's not just "it's X away, so we don't render y polys". The system needs to decide which polys it can extrapolate over, which ones it doesn't need to render, and it needs to do this FAST.
    72. Re:As if computer science wasn't stunted enough by tricorn · · Score: 1

      You don't think algorithm analysis isn't math? Boolean algebra? What about formal logic? People seem to be hearing "math" and thinking "calculus" and "differential equations" and "trigonometry" and "geometry", and saying "I'll never need that". Well, maybe you will, maybe you won't. But the "computer science" part of computer programming IS math; there's lots of computer programming you can do with computer science, but then you're not doing computer science. Computer Science itself IS math, but there's LOTS of different fields of math, and being interested in one such field does not mean you're interested in all of them. There are even lots of different areas in CS itself, and interest and ability in one area of CS does not imply interest and ability in all areas even of just CS.

      Math is about formalism and proof and logic. A lot of computer programming is not (but a lot of computer programming can benefit from an understanding of the results that the Computer Science formalism and proofs result in, even if you don't need to understand HOW it was proven).

      Many areas of non-CS math can be useful in programming as well. Calculus and differential equations are useful in some circumstances. Statistics is often useful (queuing theory is statistically based). Even topology can be useful (I can imagine that the 4-color map theorem might be used in the design of a data structure, for instance). Trigonometry has obvious utility in some circumstances. NOT knowing these things limits you in what you can do. That doesn't mean that to be a useful and accomplished computer programmer you need to know every field of math and computer science, of course.

    73. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      So you'd teach the kids to program? That's all well and good, the world needs people who can "just" program (the world also needs clowns), but if you're turning computer science into a course on programming then where are the actual computer scientists going to come from? We don't need people claiming to be computer scientists when they don't know a Turing machine from a kick in the nut sack.

    74. Re:As if computer science wasn't stunted enough by Trogre · · Score: 1

      Who's talking about dumbing anything down? It seems he's recommending rejecting the old method of approaching CS as just algorithms, or changing the definition of algorithms altogether. It's classical Von Neumann/Turing schools of thought that seem to be tripping up even geniuses like Carmack who don't seem to be able to get their heads around simple parallelism. It also seems to be why FPGAs aren't given more attention; the idea that you can sample multiple inputs, process and produce output simultaneously just doesn't fit in to classical models.

      I'm pretty sure the /. summary about forgetting math is wrong though. That doesn't seem to be what this guy is saying at all.

      --
      "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
    75. Re:As if computer science wasn't stunted enough by seebs · · Score: 1

      Maybe it would help if you understood that logic is a kind of mathematics.

      Math is a much broader field than you seem to think, and a great deal of it has nothing to do with numbers.

      Can you explain why bubblesort is often worse than quicksort? That's mathematics. Can you estimate whether ethernet's "random delay and retry" collision handling is likely to resolve a collision in milliseconds, seconds, or hours? That's mathematics, too.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    76. Re:As if computer science wasn't stunted enough by TheLink · · Score: 1

      "so we're stuck with using spaces if we want our code to be consistently presentable."

      Why not write a "Python Tidy" to handle the usual cases? Or make an IDE that figures it out.

      If the program just looks misaligned on your screen but otherwise works correctly then it's not misaligned ;).

      --
    77. Re:As if computer science wasn't stunted enough by WGR · · Score: 1

      Obviously that guy isn't a programmer. If your program produces incorrect answers then it isn't finished, so he has never actually written a program, just started on them.

      The easy part of programming is making the program work with good input. The hard part is make it fail properly with bad input.

      Most security problems are in code written by jerks like your co-worker. Perhaps some one like that should be criminally liable when his company gets hacked.

    78. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      Emacs' python-mode already handles a bunch of common cases. The problem is that often, the visual indentation is ambiguous.

      You know, that would be a great technique if there were ever an international obfuscated Python coding contest --- write code that looks like it does one thing, but actually does something completely different based on indentation.

    79. Re:As if computer science wasn't stunted enough by syousef · · Score: 1

      Do the lessons of VB6 teach us nothing?

      Aparently not, at least for you, since it taught you that you should always do everything the hard way (which is bone headed). Just because a tool is misused/overused it doesn't mean that tool is shite.

      The very worst thing we've done ever since the tech boom is for the most part dumped the GUI tools in preference for hand coding. You use to be able to knock a screen together in a day. Now it takes a week. However it still takes the same amount of time to code any kind of business/application logic. So for a COMPETENT coder instead of it taking a day for the GUI and a week for the application code, it now takes a week for each. Way to go backwards.

      --
      These posts express my own personal views, not those of my employer
    80. Re:As if computer science wasn't stunted enough by TheLink · · Score: 1

      I'm not so sure if that thing would be as appreciated in the more "proper" world of Python ;).

      Whereas in perl there's already Acme::Bleach ;).

      --
    81. Re:As if computer science wasn't stunted enough by Deliveranc3 · · Score: 1

      Ah but the joyous things like linking to an app or RMIing in or whatever in C/C++ is really easy in VB... it's a fine language.

      All he's saying is that most types of functions have been written before, sorting of various types mathematical functions etc.

      Once you know exactly what you want to do in words it's trivial to find an example that has already completed the math (I find it easier to do the math myself[I have a crappy memory, it's easier to figure it out again than remember it] but it's reinventing the wheel).

      As far as VB being a fine language goes, I'd say it's really not... it leads to general solutions taking over your code, you never achieve precisely what you set out to accomplish, I just find in big projects I end up making too many sacrifices to it's interface driven style :(

      It's like OO, but totally insane and shitty.

    82. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      Congratulations, you're an academic. You will spend a lifetime reinventing LISP and Haskell in order to more perfectly optimize your mathematical algorithms that run in O(lookatme) time, while the rest of us "code monkeys" do the real work -- including build the infrastructure necessary for your LISP wankery.

      Or we could cut the name calling and actually talk.

      --
      Don't thank God, thank a doctor!
    83. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      How do you show that your caching technique is working, and is efficent enough for your requirements?

      Benchmark.

      Can you be sure that you're reading them correctly?

      Sure, build a unit test. It won't prove it mathematically, but I think you're a lot less likely to make an error in your unit test that leads to a faulty program passing the test than you are to make an error in your mathematical "proof".

      Can you ensure that the file system is storing it correctly?

      Same answer -- though in this case, the real answer is, use a known-good filesystem. 99% of the programming jobs out there do not involve writing a filesystem, and 99% of the programs out there do not really require any particular filesystem, other than one which is compatible with the platform they run on.

      Are you doing this efficently(for a given value of efficency)? Can you prove it?

      You've got me there. However, unless we're talking about re-implementing IP, you're generally doing something efficiently enough.

      AI behavior is, at the moment, purely based in mathematical algorithms.

      AI is also not a necessary component, though it is often used. You'd have better luck arguing about the graphics, but most of this work is already done for you -- either at the API level (OpenGL) or at the algorithm level (tricks like Carmack's Reverse).

      You NEED a substantial mathematical background to even approach this problem-it's not just "it's X away, so we don't render y polys".

      Actually, that is precisely what LoD is. I'm betting on a particular algorithm I've already seen which can take a 3D model and reduce its precision, but very slowly -- simply do this ahead of time, and cache the smaller model. All that's left is to figure out when to display the higher detail, and when the lower detail, which is mostly a matter of tweaking it till it looks right, and having the system dynamically adjust the ratio between your X and your y in order to hit a target framerate.

      The system needs to decide which polys it can extrapolate over, which ones it doesn't need to render, and it needs to do this FAST.

      That actually sounds a lot more like frustrum, backface, and occlusion culling. And here, there's a wide variety of algorithms to choose from.

      Not having a strong mathematical background, and not being a genius, means I'm not particularly likely to invent such an algorithm. But I can put the pieces together, and in games in particular, this is often not done right at all. In particular, every time you see a loading screen (once you've started the game at all), it means someone at my "codemonkey" level got lazy.

      --
      Don't thank God, thank a doctor!
    84. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      Can you explain why bubblesort is often worse than quicksort?

      I don't have to. I can implement my app with a generic "sort" function, substitute in bubblesort and quicksort, and build some graphs.

      Can you estimate whether ethernet's "random delay and retry" collision handling is likely to resolve a collision in milliseconds, seconds, or hours?

      That one, I probably could, if I were particularly interested. But I don't do ethernet. The lowest I'll probably ever go is TCP or UDP.

      Maybe it would help if you understood that logic is a kind of mathematics.

      And sex is a kind of physics, but Human Sexuality is not in the physics department.

      --
      Don't thank God, thank a doctor!
    85. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      if you're turning computer science into a course on programming then where are the actual computer scientists going to come from?

      People who took the more advanced courses.

      Consider: programming is used in business (where you need to understand a bit of accounting), aviation (where you need physics), game development (where you need math and artwork), systems design (where you need hardcore programming and people skills)...

      Programming, in general, is too broad for a "computer scientist" to be limited to those exploring programming + math. I'd say, give them a course in programming (and not "just" programming, but really good, solid software design principles), and let them combine that with whatever else and make their own degree.

      We don't need people claiming to be computer scientists when they don't know a Turing machine from a kick in the nut sack.

      Call them software engineers, then. Whatever.

      --
      Don't thank God, thank a doctor!
    86. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      The old one may have been so bad sometimes it is easier to start again and remove all special cases that are
        no longer required or only required because the last person didn't see the "obvious" way to solve the problem.

      The proper way to write ANY system is to

      a) may sure all code complies without any warnings (or at least any that can be avoided).

      b) run lint or some other static code checker over the code (even if it is just ksh -n!) any made sure it
              gives the least amount of warnings possible,preferably none. Sometimes some warnings cannot be avoided.

      echo '
      xxx
      yyy' | myprog

      generates a some warning about quotes with the 93r version of ksh!

      c) Make sure ALL errors are logged. How do you know what errors are occuring unless you log them?

      d) Make sure you can enable debug logging that shows everything that is executed.

      Dav'es 1st rule of software design. How can you possibly get a working system unless you have VISIBILITY
        at every stage of the process?

    87. Re:As if computer science wasn't stunted enough by White+Flame · · Score: 1

      I agree that computing is hard. Well, I find it easy, but I agree that, in general, if you're going to use a computer, you're going to learn some logic, and I will not help you to avoid thinking.

      The whole "Well, I find it easy" doesn't sound like somebody who has learned so much that he realizes what difficult problems and limitations are out there, nor knows enough to realize how much he doesn't know. Just sayin'.

    88. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      is based on the idea that algorithms are the wrong model for program.
      For some problems, I'd tend to agree. Talk to a functional programmer, for instance.
      Except that functional programming is just another computationally-equivalent-to-a-Turing-machine type deal. The fact that it is stated in a functional programming language does not mean it's not an algorithm.

      I actually had to learn trees recently. I did not know what a B-Tree was, except that most filesystems use them, so I ignored them until I started writing a filesystem.
      I think you've just lost your credibility on the subject.
    89. Re:As if computer science wasn't stunted enough by MightyYar · · Score: 1

      VB is just a tool in the ol' toolbox. Using it for the wrong application is like trying to drive a nail with a screwdriver.

      I've seen VB used in very complicated applications, but it was just used for the GUI. All of the underlying libraries were written in C++, which were then called by VB. It worked pretty well.

      I've also been involved in a disaster of a project where WAAY too much was done in VBA inside Excel. The application was nearly impossible to debug and I managed to convince management to let us make it into a web app using PHP and MySQL.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    90. Re:As if computer science wasn't stunted enough by FortKnox · · Score: 1

      The problem wuth VB as a language is exactly the same as Windows as a server platform. What Microsoft has done is de-steepened (not a word, I know) the lurning curve to such an extent that even the shittiest of coders (and admins, for Windows) can push a product 'just barely good enough' out the door...
      The dumbing down of IT has resulted in an unfortunately large percentage of dumb IT people.


      (Emphasis mine)
      Either you are a VB developer poking fun at yourself, or you are part of that 'dumb IT percentage' that you bitch about. For the record, your spelling is 'just barely good enough' to read.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    91. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      The "Well, it's hard, mmmkay?" sounds like somebody concerned with keeping job security...

      I realize there are some hard problems out there, but some of the hardest (like threading) have some really easy solutions (like stackless Python).

      --
      Don't thank God, thank a doctor!
    92. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      The fact that it is stated in a functional programming language does not mean it's not an algorithm.

      And yet, it is a completely different way to think about it.

      Am I using the wrong word? I think of "algorithm" as meaning a set of clearly defined, step-by-step instructions -- in other words, a list of imperative commands. A functional language does deconstruct to that, but a functional programmer does not think that way.

      I think you've just lost your credibility on the subject.

      Really?

      So tell me -- where would I have found a B-Tree useful to implement myself, other than in my own filesystem? Or maybe a database? Just about anything else I can think of is either simple enough to use the language's built-in hash in memory, or already solved in a database or a filesystem.

      (Actually, I didn't go with B-Trees. I went with Trinary trees -- a kind of combination B-Tree and Radix tree, that also has interesting properties when it comes to searching -- you get directories for free.)

      --
      Don't thank God, thank a doctor!
    93. Re:As if computer science wasn't stunted enough by node159 · · Score: 1

      He he yeah, late one night I forgot to uncomment a throw in a catch section after doing some walk thought debugging, lets just say that 2 days spent cussing was enough to burn that lesson in for good :)

      --
      GPLv2: I want my rights, I want my phone call! DRM: What use is a phone call, if you are unable to speak?
    94. Re:As if computer science wasn't stunted enough by QuoteMstr · · Score: 1

      Would you consider assert()s to be sufficient checking for impossible conditions?

    95. Re:As if computer science wasn't stunted enough by Money+for+Nothin' · · Score: 1

      WTF? If you don't have requirements, then what the hell do you expect to test?

      Requirements are likely to change over time for any non-trivial development project, but ultimately, you need to perform testing prior to release, and if you don't have in-hand the things the customers wanted, then you have no idea how to determine whether you've met the customer's demands.

      Whether thick documentation is appropriate depends on the project's needs. Where safety is paramount (as in your space shuttle example), thick specs are critical; where the app is a one-time use script written in a day, probably nothing more than a "purpose" section in the code is needed besides comments in the code, of course... And in-between those extremes fall projects with varying needs.

      But regardless, you have to have at least a rough idea going in what you are writing (else, are you even thinking far enough ahead to know what must be written?), so that by the time you're coming out and doing testing, you have a very good idea of what must be tested.

      To do anything else results in cowboy coding slop and apps/scripts that programmers a year later won't understand because the original developers have left the organization seeking greener pastures and left a paucity of documentation for future reference.

      I'm not much for the waterfall process; its promoters (who are few these days) tend to view the process as infallible and worse, themselves and/or their development team as infallible and all-knowing. That's a laughably-arrogant and inaccurate assertion on their part.

      But I find it almost as funny that agile developers believe their process to be somehow novel. Aside from XP, as far as I can tell, it's not: RUP is just the waterfall process with each major stage (requirements, design, etc., and their sub-stages) overlapping its neighbor phases by some arbitrary percentage. The unit-build approach typically found in agile methodology, in which requirements are prioritized, selected, and then units forming the basis to fulfill each requirement are designed, constructed, and tested individually, is sensible in that it forms building blocks for potentially multiple apps. It's much like the advancing abstractions in software design made over time (from thinking about software as sets of single bits, to singular flat sections of data (e.g. the "data division" in COBOL), to objects and the hierarchy of classes which define their structure, to the current stage we're in of writing "components" (for which each has a separate specification).

      But it is still done within the scope of a project, which defines a specific set of pieces to be created, and thus, there is nevertheless an overarching design specifying those units.

      At the end of the day, the bulk of agile methodology is the waterfall methodology adjusted to have non-blocking I/O from one major phase to the next (rather than blocking and completing each phase 100% before continuing)...

      As a final note, the overlapping of the phases results (as is happening in a RUP-managed project I'm developing-for at the moment) in previously-accomplished work being changed later, after more work has been done than would've been in the waterfall process, because of a failure to think through the project's needs thoroughly enough. Then you violate a maxim of the management theorist Peter Drucker, who once wrote "there is nothing as useless as doing efficiently that which should not be done at all". With increased foresight, such waste can be avoided (though never eliminated, because again, requirements change)...

    96. Re:As if computer science wasn't stunted enough by rossifer · · Score: 1

      WTF? If you don't have requirements, then what the hell do you expect to test?
      You misread something. I never said I didn't want requirements. I just don't think that big specs are even slightly effective ways to communicate requirements.

      For instance: on my current project, we use a wiki combined with an issue tracking system (http://trac.edgewall.com/) to articulate and discuss requirements. Usually (always?) the developers need to refine the requirements as the features are developed; removing inconsistencies, adding details, etc. and since it's a wiki, they can do that fairly easily.

      And what about tests as proxies for detailed requirements? We try to create automated tests for everything. Unit tests (a few), functional tests (a lot), integration tests (a lot), load/scalability tests (a few). Contrary to XP, we generally find the best tests are written along with the interfaces and implementation, not before. On our team, QA is responsible for challenging developers on test adequacy. Do the tests really exercise the code? (QA also helps to create automated UI tests, which they base off of the trac wiki, usually after primary development is complete.)

      But I find it almost as funny that agile developers believe their process to be somehow novel.
      That's an interesting but flawed observation. What's novel about agile processes isn't the process. Iterative processes are "waterfalls writ small" and have been useful for many, many years. What's novel is the perspective that, at the end of the day, agile teams find that skilled people are more important than devotion to any particular process.

      As a final note, the overlapping of the phases results (as is happening in a RUP-managed project I'm developing-for at the moment) in previously-accomplished work being changed later, after more work has been done than would've been in the waterfall process, because of a failure to think through the project's needs thoroughly enough.
      I see a part of the problem right here. You believe that it's possible to fully understand the requirements of a system before the system is built. For systems that have been built before: Sure. That's fairly easy. But if this is something new (and therefore likely to be more valuable), my 14 years of software/hardware development experience tell me that getting up front requirements correct is not possible. I've seen a lot of smart people try, and to be honest, I'm tired of being right on this topic.

      Iterative processes (not just agile processes) work around this issue by spending some time developing something that works, and the using the experience from that exercise to inform subsequent projects to develop something that's excellent. As for "more work" being done on the rework of iterative improvement, the whole team, including the requirements writers, has to learn what's actually needed. To pretend that that learning is possible without something you can put in front of users (the previous iteration, perhaps) is either ego or delusion.

      You've got it in your head that there's some way to be perfectly efficient in software development, wasting no time on incorrectly described needs, poorly developed features, etc. Everything I know about commercial software development says you're barking up the wrong tree. Being effective at satisfying needs and providing value must be more important than being efficient. IME generally, and in this case specifically, I find that efficiency is the enemy of effectiveness. There's simply too much learning to be done to pretend that once a moderately complex need has been identified, that it's possible to up front correctly specify a solution in any detail.

      But if you want to keep trying, good luck to you. If you actually find a way, you should write a book on it. It's a guaranteed best seller.

      Ross
    97. Re:As if computer science wasn't stunted enough by GWBasic · · Score: 1

      Funny story about work. The current back-end system that translates front-end customer orders to actual tangible products often fails silently, and the person who wrote it (who's still with us), thinks that's okay. Eventually, management got tired of people not getting their orders, or getting the wrong person's order, and not having a way of detecting that there's any problem. So they hired a new guy to write a new production system. Talking to the new guy, he said that the system is almost working, but it fails silently, and he should add error handling if he has time. DO PEOPLE NEVER LEARN!?!!

      This is really a problem with management.

      They made one of the following mistakes:

      • They hired an unqualified person when they needed a qualified person. Perhaps they are paying too little?
      • The programmer needs a mentor who is qualified and willing to gently step in and "lay down the law" when it comes to good engineering practice.
    98. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 0

      If you are consistent with the spaces, it's just as legitimate. It's when you mix tabs and spaces for the same indentation level that there's a problem. This can be annoying when editing someone else's code. If you expand your tabs to spaces when you save, and the program looks right to the eyes, the program will work. This is valid python:

      if 3==3:
        print "Basic math successful"
      else:
        if 2 3:
          print "Something is wrong in exampletown"

    99. Re:As if computer science wasn't stunted enough by Sproggit · · Score: 1

      OK OK, "learning" misspell was unforgivable. Mea culpa, thanks for the correction.
      "With" misspell was a typo, since I typed that on a PDA keyboard, so that's my excuse and I'm sticking with it.
      "De-steepened" is not a word anyway, so I am curious to hear how you justify criticising my spelling.

      NOW.

      I assume you were able to understand the posting well enough to criticise it.
      Since I make no claim to the merchantability, usability or saleability of my posting, where the hell do you get off judging whether it was good enough to read, since by reading it, you clearly understood the message contained therein.

      Except for coming over as an annoying prat, was there any hidden purpose in your response relating to the topic under discussion. If not, I'm sure there is a classification that applies to your post.

    100. Re:As if computer science wasn't stunted enough by visible.frylock · · Score: 1

      And I'm sorry but mathematics is just the way in which meaning is expressed for machines. But not for humans. Not sure what you're saying here. If humans didn't think in math, we'd have no such thing as mathematics. That's why we use arabic numerals instead of roman numerals or a tally system. If a financial sheet has nothing but tally marks, it's incomprehensible. But if you see $123, you instantly know 1x100 + 2x10 + 3x1 (subconsciously, but you know it).

      I have not read that book, but I would argue that a big reason computer science is stunted is this absurd relation to mathematics. You need better-than-average communication skills if you're ever going to work on a team -- at least to comment your code. You need philosophy -- yes, philosophy! -- at least as much as you need math, and a decent logic class would be even more useful. And you need research skills a bit beyond justfuckinggoogleit.com, if you're going to RTFM -- considering you may have to go looking for a manual, or even the right software to begin with. Not sure, but it sounds like you're talking more about software engineering there, which is not really comp sci (which has been said at length here already).

      As far as the article, the guy doesn't distinguish enough between comp sci/soft eng, and doesn't really define what he means by math. Is he talking about just basic algebra, or about maths that are very relevant to comp sci (combinatorics, graph theory, mod algebra, etc)? Lame article.
      --
      Billy Brown rides on. Yolanda Green bypasses Gary White.
    101. Re:As if computer science wasn't stunted enough by SanityInAnarchy · · Score: 1

      Not sure what you're saying here. If humans didn't think in math,

      I'm not saying something so bold as that humans can't ever really think in math. But you said:

      mathematics is just the way in which meaning is expressed for machines

      That can't be applied as easily to humans. The way in which meaning is expressed for humans is language. Mathematics can be used as a very small, specific subset of language, much like C can.

      But I talk to you in words, not in $123, unless we're talking about a topic for which $123 makes sense -- and even then, as you've illustrated, 90% (at least) of our communication is English, not math or numbers.

      Not sure, but it sounds like you're talking more about software engineering there

      I'm finding that out. I'm also wondering if, when I go back to school, it might be a good idea to look for a software engineering degree instead of computer science. I'm not sure there was a difference at the time...

      --
      Don't thank God, thank a doctor!
    102. Re:As if computer science wasn't stunted enough by FortKnox · · Score: 1

      You are talking about the 'dumbing down' of IT, as if you are the high and mighty 'intelligent' IT person. Then you write the post as if you were in the 'dumb IT' crowd you are complaining about. I figured your post was sarcasm or ironic. I took it as ironic.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    103. Re:As if computer science wasn't stunted enough by Sproggit · · Score: 1

      Dude, seriously, two typos should not an invalid post make.
      While I'm not saying that I'm a high and mighty anything, do you actually have any input to the topic under discussion?

    104. Re:As if computer science wasn't stunted enough by FortKnox · · Score: 1

      All I can say is when people started using C and C++, I bet the assembly programmers thought the same thing.
      I can see your point, as I have a co-op who asks me questions, and I ask him something like "do you know what a reference is?" and he gives me a blank stare. And this is just Java we are talking about, not even VB...

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  5. Applied mathematics by Rakshasa+Taisab · · Score: 4, Insightful

    Taking CS without math is like taking engineering without any physics.

    WTF is the the author smoking?.. There are of course parts of CS that are less involved in math, but it is still overall a fundamental part.

    --
    - These characters were randomly selected.
    1. Re:Applied mathematics by ScottyH · · Score: 2, Informative

      The author is saying that without the pioneers of the science CS wouldn't be intertwined with mathematics. So yeah, it is fundamental now, but in the absence of the original contributors it may have looked quite different. I personally find the argument a bit difficult to swallow, but then again, I'm inside the box.

    2. Re:Applied mathematics by jawtheshark · · Score: 2, Informative

      There are of course parts of CS that are less involved in math, but it is still overall a fundamental part.

      Not even that.... Computer Science is a subsection of Maths. That's it.... Theoretically, you can complete CS without ever touching a computer.

      I was never the best at maths (even though, I beat the best of our class in the final maths exam, but that must have been pure luck. He is a math PhdD at Harvard now, so....). Luckily the parts of maths that are useful to CS, were within my reach ;-)

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    3. Re:Applied mathematics by QuoteMstr · · Score: 2, Insightful

      The thing about math, though, is that it's universal. If we ever discover an alien civilization that's a peer to our own, I'm sure it will have an identical formulation of Pythagoras' theorem. Given different starting conditions, we might have used different notation or words for computer science, but the concepts are inherent in the problems we solve, and therefore would eventually have been discovered and described regardless.

    4. Re:Applied mathematics by jsebrech · · Score: 2, Insightful

      Taking CS without math is like taking engineering without any physics.

      But you don't engineer a bridge by thinking about the interaction of individual atoms, not because that isn't the "right" way of doing it, but because it takes too long and is too expensive.

      The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field. Mathematics are on such a low level of abstraction that they are mostly useless when it comes to thinking about solutions to most of the problems "real world" software architects (outside universities) run across, like large-systems architecture, parallel computing, and most classes of high-level optimization. As a result, "real world" software architects mostly ignore the improvements in the field of theoretical computational science, since it has little bearing on what they do.

      Most notably: a big problem right now facing the IT field is the end of moore's law, and the growing need to parallelize everything. What we see in practice is that most programmers don't really know how to write multi-threaded code, and as a result few applications are multi-threaded. The solution here is not to require all programmers to be CS grads, because that is too expensive and a big waste of resources. A programmer shouldn't have to know about loop invariants, just like a mason shouldn't have to know about load distribution between pilons. The solution is for the theoreticians to focus on something useful to real world architects.

      But, let me be clear about this: a software architect should know their mathematics, just like a bridge architect should know their physics. If you don't know why you're designing a system a certain way, you can't know it is the right way to design it like that.

    5. Re:Applied mathematics by JAlexoi · · Score: 1

      I agree generally to your statements.
      But...... I do not agree that deep understanding of mathematical analysis is required in CS.
      Algebra in general is a MUST in CS.
      Creating encryption algorithm does not involve CS until implementation part, and implementation is definitely is NOT mathematics.

    6. Re:Applied mathematics by cowscows · · Score: 1

      But, let me be clear about this: a software architect should know their mathematics, just like a bridge architect should know their physics. If you don't know why you're designing a system a certain way, you can't know it is the right way to design it like that. Running in a slightly different direction with what you said, I feel it's worth noting that there's generally a difference between a bridge "architect" and a bridge "engineer". If an architect is involved in a bridge design, he/she most likely does not understand the physics behind how it works beyond a very basic level. That's generally not what architects spend their time on. Instead, they'll hire engineers to do all the math for them, and through an iterative process they come up with something that hopefully solves the architects' goals for the bridge, as well as something that the engineer says meets all the structural design criteria.

      I don't know that much about how the software development works, or if something similar to the normal architect/consultant project setup could be applied to programming. But the general gist of it is that to get really nice stuff done, you try to set up the project so that everyone can focus on their particular strengths, and nobody has to waste much time trying to figure out something that someone else can do better/faster. Granted, it adds an extra layer of management, and it doesn't always work smoothly, but it does enable us to accomplish things that we wouldn't otherwise be able to do.
      --

      One time I threw a brick at a duck.

    7. Re:Applied mathematics by GreatBunzinni · · Score: 4, Insightful

      But you don't engineer a bridge by thinking about the interaction of individual atoms, not because that isn't the "right" way of doing it, but because it takes too long and is too expensive.

      Well, actually you do and in multiple aspects too. Whether to design and evaluate the longevity of the applied materials, to the interaction between components, those aspects must be considered in multi-milion dollar projects where bridge building is included.

      Besides that, civil and structural engineers also have to consider the mechanics of materials and also wave propagation. What field of science covers that? Physics, of course.

      The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field.

      No it doesn't. The only point it makes is that the author does not have a clue about what mathematics is. Mathematics isn't algebra or calculus. Math isn't adding up numbers or multiplying things. Mathematics is structured deductive reasoning, which builds up from a solid starting point (axioms) and serves to represent, communicate and help with the construction of ideas. Those tasks are the basis of computer science, whether you are writing an operating system, designing a database, building a network or even creating a new language/protocol. If you take math out of the picture, you simply cannot do anything in CS, whether you actually know you are applying mathematical concepts or not.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    8. Re:Applied mathematics by SunTzuWarmaster · · Score: 1

      Okay, I get that computer scientists have to take math classes and they don't like it.

      I am an Electrical Engineering major in one of the top 10 largest colleges in the US (measured by enrollment). During my career here, I have had to take (as an Electrical Engineering major):

      Physics I - despite the fact that no circuit I build will use newtonian physics (that's okay, it was a prereq to physics 2+3)
      Statics - the science of non-moving structures (mostly a class on bridges)
      Dynamics OR Thermodynamics - (had Statics as a prereq... do I need to point out that with my masters is Digital Signal Processing I will never use eigther of these?)
      Programming/misc - C, C++, ASM (motorola), ASM (intel), Java, Matlab, AutoCAD, MathCAD

      Sometimes you take things you don't need, there comes a time to deal with it. Don't get me wrong, I'm not griping about these, my college considers them to be essential to a well-rounded engineer. That is fine. However, you cannot gripe about taking MATH classes as a COMPUTER SCIENCE major. An extremely large portion of computer science majors spend their time/career developing mathematical models or mathematical techniques for problem-solving.

    9. Re:Applied mathematics by acroyear · · Score: 1

      Except that the whole idea of an encryption algorithm, of creating an "algebra of characters" is itself a mathematical concept. The trouble is is understanding how mathematics so pervades it that even the most basic CS stuff is doing math regardless of whether or not the programmer knows it.

      The trouble is whether or not one considers Logic as mathematics. I do and so does every mathematician out there. It's boolean algebra and the rules that are created are created with exactly the same discipline that informs any other algebra in mathematics. You can't escape it.

      Now you can program without "thinking" that you're doing mathematics all you want, but mathematics in its pure glory is what you're doing.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    10. Re:Applied mathematics by SerpentMage · · Score: 1

      An architect not understand the math or physics? Huh? Really? http://www.ucalendar.uwaterloo.ca/COURSE/course-AR CH.html

      Principles of Structures
      Fundamental concepts of mechanics and structures, as related to architectural design, study of loading conditions, forces, moments, systems of forces, conditions of equilibrium for two and three dimensional structures, centre of gravity of loads and areas, bar forces in trusses, simple frame analysis, moment of inertia. Concepts of simple stress and strain; shear and bending moments in simple beams; shear and moment diagrams, qualitative deflected shapes, flexural and shearing stresses, deflection calculations; compression members; Euler's formula.

      Architects know how to calculate whether or not a bridge will mostly stand. Architects have to know the essential calculations because otherwise architects would not be allowed to design houses. Where an engineer is needed is when the building in question requires the signature of an engineer. For example sky-scrapers require the signature of an engineer because the calculations are quite a bit more complex and require more math. Yet an architect could calculate whether or not the sky-scraper would stand mostly...

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    11. Re:Applied mathematics by JAlexoi · · Score: 1

      Yeah. You can also do physical computations, but you do not call it mathematics do you?
      And BTW a lot of other sciences are using mathematics, and some have math a core part of them. But still physics is physics and the amount of math is appropriate for physics.

    12. Re:Applied mathematics by nwbvt · · Score: 1

      "The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field"

      Well first of all, thats not happening. Computer science education programs are not obsessed with mathematics at the exclusion of other subjects, in fact modern programs are often designed to incorporate many other subjects from biology to art to business fundamentals.

      Second, no, you don't use every theorem you learned your college math classes. But thats not the point. Professional mathematicians don't use them all either. Studying mathematics is not like studying history where the goal is to memorize as many facts as you can about a particular subject. Its about learning a way of thinking which is critical to the study of computer science, namely abstraction. For more information on the subject, check out the article "Is Abstraction the Key to Computing" from the April 07 issue of the Communications of the ACM. Everything is computer science is abstract, and if you are unable to think in those terms you will be unable to deal with complex problems in computer science.

      Now are there other issues that should be covered in modern CS curricula like concurrency? Of course. The curricula needs to constantly evolve as the profession evolves. However, concurrency is another place where if you don't understand abstraction, you are going to be entirely unable to figure out what is happening.

      And yes, I do think all programmers (at least those on production systems) should have a CS education. There are many things such as data structures and algorithms that we take for granted, but the average joe might not be familiar of. Yes, they may be able to throw together a basic PHP site, but that is far different from building a production system. I had to maintain some code that had been written someone whose subject had been graphic design and who had picked up some Java and JavaScript on the side. It wasn't exactly pretty. And what would you really expect? Would you allow yourself to be treated by a doctor who hadn't really studied medicine, but had merely visited a website and took a few online tutorials on the subject?

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    13. Re:Applied mathematics by gardyloo · · Score: 1

      Architects know how to calculate whether or not a bridge will mostly stand. [...] Yet an architect could calculate whether or not the sky-scraper would stand mostly... Somehow, that's not very comforting to me (though I know what you're saying). It reminds me too much of "We'd better get back, 'cause it'll be dark soon, and they mostly come at night. . .. Mostly. "
    14. Re:Applied mathematics by Viv · · Score: 1

      I find the following really drives home the point about logic being math: Any boolean logic statement can be expressed as an algebraic statement.

      Boolean: (NOT x1 AND x2) OR (x1 AND x2 AND NOT x3) OR x3
      Algebraic: x2 + x3 - x2*x3

      Boolean: x1 OR x2 OR x3
      Algebraic: x1 + x2 + x3 - x1*x2 - x2*x3 - x1*x3 - x1*x2*x3

    15. Re:Applied mathematics by sarathmenon · · Score: 1

      Taking CS without math is like taking engineering without any physics.

      But you don't engineer a bridge by thinking about the interaction of individual atoms, not because that isn't the "right" way of doing it, but because it takes too long and is too expensive. While its true that you do not need to know the atomic theory to deal with bridges, you need to have taken the courses in Material Strength, Kinematics and Fluid Mechanics to actually design one. (I know this because a couple of my friends in college are doing exactly this.) And all these courses need a good amount of mathematics, especially calculus, Fourier transformations and Laplace's theory.

      My point is that any science without mathematics is a joke at best. While maths is not what each science is all about, it forms an essential core needed for the foundations of it. The same goes for CS - good algorithm design needs understanding of the big O principle, and why some algorithms might be better than others in certain use cases. I also have a soft corner for set theory and the probability courses - because I liked them :) I may be biased here because I am a CS grad, but computer science without the maths base would be very different and very less powerful and less interesting.
      --
      Microsoft: "You've got questions. We've got dancing paperclips."
    16. Re:Applied mathematics by Fahrenheit+450 · · Score: 1

      Well, I'll offer up a simple counter point to that assertion: cryptology.

      Crypto started out (and really stayed up until the 1970s) as a sort of ad hoc discipline, not particularly grounded in mathematics. No one really understood why things worked or how things worked beyond a level of "well there's a lot of possibilities, and I can't figure them out). But over time, things started changing and math started creeping in with work from Shannon and of course Turing's work on practical cryptanalysis (and let's not forget the work of the Polish mathematicians on breaking early pre-war versions of the Enigma). And by the 70's math had really gained a strong foothold in the world of crypto. Now, the interesting work in the field is almost entirely based in the realm of mathematics -- math has become fundamental to the field, but it certainly wasn't that way for most of its existence.

      --
      -30-
    17. Re:Applied mathematics by coolGuyZak · · Score: 4, Interesting

      Statements like this make a sweeping assumption: that the fundamental theorems of mathematics are not the formalization of concepts hard-wired into the brain. For instance, the existence of prime numbers wouldn't be obvious to an organism that never used integers. Similarly, it may be possible to discover alien life that never had a use for the Pythagorean Theorem (perhaps they don't perceive space?).

      Thus, I believe that your statement is incomplete. Some classes of problems, particularly algorithms, use math by their nature. However, had the discipline branched off of, say, psychology, those classes of problems could be as atrophied as human computer interaction was a few years ago. It is reasonable to assume that CS as a whole would be vastly different. Would architectures resemble the brain? Would they be chemical rather than electrical? Programming languages may be easier to use, but chances are they would lack orthogonality, closure, etc. What would be more entertaining is a computer programmed like Pavlov's Dog...

      In an extreme formulation of this idea, certain elements of computer science may not even exist--imagine algorithm development with my latter example. To consider something a bit closer to home, what if the base discipline of computer science was linguistics?

    18. Re:Applied mathematics by QuoteMstr · · Score: 3, Interesting

      No, math is not hard-wired into the brain. It's hard-wired into the universe.

      An organism can use math without perceiving it --- take bees, which produce hexagonal honeycomb structures. Do you think they perceive the hexagon shape, or the number six? No. They've just evolved behaviors to produce those shapes. Mathematics still describes them perfectly.

      I'm also at a loss to imagine an organism that can manipulate its environment consciously that is unable to come up with basic geometry. I realize that proof through incredulity is no proof at all, but please elaborate.

      Anyway, regardless of whether computer science had originated in linguistics, chemistry, biology, or history, there would have eventually been a need to formally describe how it works. To do that, mathematical concepts would be involved.

      If computer science had originated in psychology and its first focus had been human-computer interaction (odd, since computer science existed before computers), then we would have had a need to describe data structures used in HCI, and a way to explain how to manipulate them. Bam, you've just re-discovered the mathematics of CS.

      Sure, you might be able to build a neural net and train it without understanding mathematics. But you wouldn't understand how it worked; when you explored that, you'd find mathematics whether you liked it or not.

      You can't escape from mathematics. It's there whether you want to use it or not, whether you use the numeral '1' or a picture of a very small cow to represent unity, or the word "axiom" or "chicken" to describe a basic assumption.

    19. Re:Applied mathematics by acroyear · · Score: 1

      we're not doing "massive calculus" when we throw a curve or catch a fly ball. we're doing "extremely rapid estimates and corrections". we're doing MUCH simpler maths, maths we can perform very rapidly by responding to changes in perspective as we move or as the thing we're trying to catch moves.

      in fact, computer responses to visual and radar signals is finally fast enough (see motion-capture animation) that its finally possible to actually program a computer to catch by constantly-correcting guesses rather than trying to program all the physical calculus in it.

      in fact, it was trusting our ability to guess when we caught something that made our brains so easy to be fooled by the "heavier objects fall faster" falacy. no brain ever *calculated* automagically that they'd drop at the same time: we had to be shown how much our imagination (as expressed by those rapid estimates) was wrong compared to reality.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    20. Re:Applied mathematics by coolGuyZak · · Score: 1

      Mathematics is structured deductive reasoning, which builds up from a solid starting point (axioms) and serves to represent, communicate and help with the construction of ideas.
      Not exactly. From Wikipedia:

      Mathematics (colloquially, maths or math), is the body of knowledge centered on concepts such as quantity, structure, space, and change, and also the academic discipline that studies them.

      Both deductive and inductive reasoning are facets of Logic, a discipline of philosophy. Stated mathematically, "Mathematics is a subset of Logic, but Logic is not a subset of Mathematics". I suspect, however, that even this description is untrue. (There is likely a portion of mathematics that lies outside of the purview of logic. As I am not a mathematician, I don't know what it would be.)

    21. Re:Applied mathematics by GreatBunzinni · · Score: 1
      If you had read the wikipedia quote you supplied you would've notice that what you pasted wasn't a description of what mathematics is. What you pasted here is simply some author's limited interpretation of one example of where the science of mathematics is centered on. If you paid a bit more attention and you kept reading the following sentence, you would've read that:

      Benjamin Peirce called it "the science that draws necessary conclusions".

      or even

      mathematics is the science of pattern, that mathematicians seek out patterns whether found in numbers, space, science, computers, imaginary abstractions, or elsewhere.

      The analytical rigour of mathematics can be powerful enough to produce quantitative results but that doesn't mean that metrics is the only thing that math is capable of. To put it in other words, just because it can help you measure things that doesn't mean that's the only thing it is capable of.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    22. Re:Applied mathematics by cowscows · · Score: 1

      I design buildings for a living. I have an architecture degree. I took some structures classes while in school, did very well in them, and I have a basic and intuitive sense of structure. I learned all of the stuff that you listed above while in school, but I have not done a single structural calculation since I started working. I can tell you with all certainty, at least 95% of architects out there do not do any serious structural analysis of their buildings themselves. Pretty much any time there is any significant structural component to a project, we hire a structural engineer. You don't need to be a licensed architect to design and build a single family residence in most places, but we generally hire a structural engineer anyways, because it's a liability that we don't want, and an engineer can analyze the building far better and quicker than we can.

      Architects generally rely on a few rules of thumb, plus previous experience to help us roughly estimate the sizes and locations of structural elements, then we hand our drawings off to the structural engineer. Most architects wouldn't know where to begin to run the numbers for the structure of a skyscraper. There's enough other stuff that has to get figured out for a building that the architect isn't going to waste time doing structural calculations, he's going to pay someone to do them instead.

      --

      One time I threw a brick at a duck.

    23. Re:Applied mathematics by Anonymous Coward · · Score: 0

      An organism can use math without perceiving it --- take bees, which produce hexagonal honeycomb structures. Do you think they perceive the hexagon shape, or the number six? No. They've just evolved behaviors to produce those shapes. Mathematics still describes them perfectly.


      You just lost all credibility with me by using that word. I guess prior to that state of evolution the bees made pentagon shapes and before that they made square shapes for their honeycomb?

    24. Re:Applied mathematics by crashfrog · · Score: 1, Insightful

      An organism can use math without perceiving it --- take bees, which produce hexagonal honeycomb structures. Do you think they perceive the hexagon shape, or the number six?

      No, but we do. The structure of a honeycomb isn't "hexagonal" until a human is there to call it hexagonal. Prior to that it's just a beehive, made in the way bees make beehives.

      Imagine 2 apples. Until someone is there to count them, the "set of 2 apples" doesn't exist. The apples exist, sure; but the set that encompasses them, and is of cardinality 2, exists only in our minds.

      Mathematicians would be a lot less Platonistic, I think, if they'd take courses in semiotics. There's a big difference between the symbol and its referent. Apples exist; but integers exist only when there's someone there to count them. That's why you can have human societies with no conception of "number" at all - where the only "amounts" of anything they can perceive are none, one, and many.

      You can't escape from mathematics.

      Sure you can. It's not inherent to the universe. Mathematics, being a language, is inherent to the way our minds model reality - with symbols that stand in for referents.

      --
      I never have frustrations, the reason is, to wit:
      If at first I don't succeed, I quit!
    25. Re:Applied mathematics by coolGuyZak · · Score: 2, Insightful

      Mathematics still describes them perfectly.

      My argument is that the description may stem from the human perspective. Your use of language supports this, as it implicitly refers to Mathematics as a tool to describe--to model--the universe, rather than the universe as an application of mathematics.

      I'm also at a loss to imagine an organism that can manipulate its environment consciously that is unable to come up with basic geometry. I realize that proof through incredulity is no proof at all, but please elaborate.

      Consider, for the sake of argument, the Formic perspective. While the Formics come from a fictional world, they don't hold logic as a fundamental building block of the universe. They lack a distinction between truth and falsehood. Instead, they consider everything that has happened truth, and 'forget' anything that turns out to be false. Ender notes this specifically in one of the later books (I can't recall which), and how it increases the difficulty of communication with the Hive Queen. Indeed, the three invasions described by the first book were due to a miscommunication between our race and theirs--Formics didn't understand individuality before they met humanity.

      Another perspective, this time using your bee example: While bees create hexagonal structures, we have no evidence that they do this consciously, nor do we have evidence that an alien culture would manipulate their world consciously. Instead, either could "just know" the solution, and thus have no use for geometry. Humans, meanwhile, see these hexagons and say "See! Math is fundamental, even animal's use it!" However, far from being a fundamental concept of the universe, the human is merely applying his world-view (which includes the form and function of a hexagon) to the beehive.

      Sure, you might be able to build a neural net and train it without understanding mathematics. But you wouldn't understand how it worked; when you explored that, you'd find mathematics whether you liked it or not.

      The philosophical question underlying this is which perspective defines the other? On the one hand, mathematics could underlie the entirety of the universe. If this is the case, then we could, theoretically, find the truth of it. Unfortunately, if mathematics is hard-wired into the brain--if the basic axioms of mathematics are assumptions made by the human mind as a means of interpreting the world--we couldn't see past those assumptions. Every attempt to do so would necessarily rely upon them, creating a circular argument or self-fulfilling world view, so to speak.

      A, perhaps, interesting analogy*: Imagine you view the world through emerald lenses. Everything you see would be tinted green, but, having perceived the world this way for the entirety of your life, you would be none the wiser, unless someone or something showed you otherwise. Even then, you would be flabbergasted, possibly to the point of denial, if someone were to show you evidence of non-tinted vision. Now, consider the glasses to be mathematics. The eyes are analogous to your brain, and the assumptions fundamental to mathematics are the tint of the glasses. Can you say you'd be any the wiser? **

      This logical paradox, of sorts, prevents us from knowing the truth of the universe. In fact, an entire branch of philosophy--epistemology--is dedicated toward investigating what constitutes knowledge & truth. Those philosophers have concluded, at the time of this writing, that mathematics is only true because it is defined independently of our universe. Furthermore, any attempt to apply pure mathematical reasoning to the world at large creates incredible complexity. Consider quantum mechanics, string theory, astrophysics, and other such sciences. Each of these, while functional, sacrifices a great deal of the elegance of mathematics due to an intersection of pure reason with the real world.

    26. Re:Applied mathematics by Anonymous Coward · · Score: 0

      RTFA again, you silly thing.

      Author is not arguing against the fundamental nature of maths in CS. He is saying that the maths should not be regarded as the dominant part of CS. I believe he is right: I see no algorithmic basis for highly important concepts like black-box objects, throwing exceptions to handle the unexpected, event-driven paradigms, and so on.

      The emphasis on algorithms and deterministic processing is slowing the development of other heuristics, such as neural net processing and genetic programming. There aren't even any generally available good tool sets for these non-algorithmic heuristics, and yet there are whole classes of problems in prosaic activities like scheduling where these approaches are the best tools we've found so far.

      CS is so much more than an esoteric branch of mathematics. At least, it should be that way.

    27. Re:Applied mathematics by Anonymous Coward · · Score: 0

      Math isn't inherent to the universe? Do you seriously believe that?

      A hexagon would still be a hexagon even if humanity had not named it as such. We did not create the concept of a hexagon. We did come up with the name hexagon, but I assure you the concept was not invented by us. Anything shaped like a hexagon would still have that shape. But then again, you'd just argue that without humans there'd be no concept of shape. You know what, philosophy is a perfectly good field...until you try to make every other field seem useless with it. You're statement is purely philosophical and conveniently for you has no way of being disproved. Well, looks like your "theorem" has no meaning.

      2 apples are still two apples even if nobody counts them. Again, we did not invent the concept of an integer. Pedantic arguments like that serve no purpose. Following your logic to its natural conclusion, we can easily say that the apples were not apples until we decided that they were apples. I mean, since we named them apples, clearly we invented them.

      Furthermore, your statement that math is a language is absolutely the most astoundingly stupid thing I've heard in quite a while. You are apparently so concerned with semantics that you fail to look beyond the surface and understand that that language of numbers and symbols is merely a tool us humans created to be able to use math. The concept of a hexagon is not part of a language. The concept of an integer is not part of a language. The fundamental theorem of calculus is not part of a language. The concept of a vector is not part of a language. A subspace is not part of a language. We use a language to describe these things, but that does not make them part of a language. I assure you that math IS NOT A LANGUAGE. I don't know where you got the idea from, but it is wrong.

      If you'd take a physics class (and took the time to understand it), you might understand just how wrong you are. You might see how math can describe the world around you. Math is inherent to the universe and is universal. Deal with it. Just because you don't like math does not mean you can make some vapid philosophical argument to absolve yourself of its necessity.

    28. Re:Applied mathematics by Anonymous Coward · · Score: 0

      The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field. Wow. Do you realize that computational theory is, for all intents and purposes, a branch of math?

      Like a poster above said: You can't escape from math. It's hardwired into the universe, and if you eschew it, the only one who suffers is you, by losing the potential to understand the problem at hand on a much more powerful level.

      If you use it for obfuscation, it's another matter. There are ways to describe very complicated math accessibly, and there are ways to obfuscate very simple math. But if you disrespect it because you can't understand it, then you're doing a disservice to yourself and to anyone you misrepresent yourself to as anything more than a plain computer programmer.
    29. Re:Applied mathematics by Anonymous Coward · · Score: 0

      WTF is the the author smoking? You see... if the CS curriculum had a little less math and, in its place, a little more biology & chemistry, I would have been able to tell you.
    30. Re:Applied mathematics by Anonymous Coward · · Score: 0

      The underlying assumption of your argument is that there is an "objective reality" Out There that exists independently of any of us observers. The physicists of the last century have pretty much demonstrated to anyone who will take the time to read a little that this is not the case. It is time to move beyond the aristotlean framework.

      Fritjof Capra's _Tao of physics_ has been around for about 30 years; it is now in its 4th or 5th edition. Gary Zukav's _Dancing Wu Li masters_ was also first published in the 1970s, and is in its 4th edition. With books like these addressing the lay public for over a generation, there really is no excuse for anybody with a well-rounded education to be unfamiliar with rudimentary physics (and continue to cling to the flat earth concept of an objective reality).

      More to the point in this thread: while it is possible to express any of Mozart's works in pure mathematics, that doesn't make the music secondary to the maths. Do not confuse the mathematical abstractions with the musical reality: to do so would be pathologically geekish. The relationship between computer science and maths parallels the relationship between music and maths. There is more to computer science than just what can be expressed mathematically.

      And that was the point of TFA: the mathematical model of CS is too constrictive to allow a good holistic appreciation of what CS is really about. Our universities are churning out acoustic engineers who are expected to make beautiful music. Well, duh-- is it any wonder that so many of the giants of today's software industry are producing nothing better than elevator music?

    31. Re:Applied mathematics by im_thatoneguy · · Score: 1

      What he's saying is mathematics exist whether or not we discover it.

      Integers are not some linguistic bullshit we've concocted. They're a universal truth. Yes the word "integer" is a semantic expression but if you have an alien culture they will have to have integers if they exist in our universe. Anywhere there are discreet quantities of something there also exists an integer value.

      For instance there *are* *two* apples. Even if no sentient species ever came into existence and recognized that fact, it is still true. Those two apples are embodiments of a universal truth that there is a discreet quantity of 'something'. There is a universal concept of "are"... something exists, in contrast to not existing. In our universe every species will need an equivalent of declaring something a reality. There is a universal understanding of the definition of "two" || XX YY ** '' you can't argue this fact, there are instances in the universe where there is more than | but less than ||| and it transcends understanding... it simply is... in our universe at least. Apples is more shady because it's defining a system of things, which could still be describe in absolute terms breaking it down into the specific composition and organization of the matter/energy it is formed from but really you can think of apple as a $variable.

      Mathematics transcend the language and understanding of the user or even the observation of the truth. It doesn't take someone to count something for the 'truth' of it to exist.

    32. Re:Applied mathematics by Anonymous Coward · · Score: 0

      Integers are not some linguistic bullshit we've concocted. Hmm, I wonder then, why only one set of numbers are called 'natural.' /slightly sarcastic
    33. Re:Applied mathematics by Coryoth · · Score: 1

      Math is inherent to the universe and is universal. Math is universal, in that by abstracting away detail it provides a framework that can speak broadly and universal, but I think the assumption that math is inherent to the universe is rather hard to support. It is a stretch to say that the universe is behaving mathematical laws; it is clear, at least, that the mathematical abstractions we develop provide a good framework and language with which to model the behaviour we see, but that doesn't mean the mathematics is inherent in the behaviour. We see the world through a lens, through our perceptions, and through the story our minds construct from that. By abstraction we can create lenses that see fairly clearly, and that can transcend our narrow perceptions; don't mistake the lens for what you see through it though.

      2 apples are still two apples even if nobody counts them. Again, we did not invent the concept of an integer. Did we not? What you have is a pair of apples, which is not the same thing as the number 2. The number 2 is an abstract concept, a property that is universal to all things that have "twoness" about them. It is not a physical thing, and you can't point to it anywhere; you can only ever point to pairs of things, which are examples of things that have the requisite property, but are not property itself, which transcends above all the particular examples. The number 2, as opposed to examples that have the property we describe as "two", exists in our minds, not out in the world.

      Perhaps a better way to consider this is to look at transfinite numbers, which, in ZFC, are every bit as real and concrete as integers. So the question is, does the number between aleph_0 and aleph_1 exist, or not? The answer is neither -- its existence is contingent, just a choice we make. Integers are the same, its just that the choices that lead to them are far more ingrained and subconcious. This makes them more "real" to us because they are closer to the way we percieve the world, but they are no more concrete, no more absolute and "out there" as transfinite cardinals.

      None of this is to say that math is useless, or can't say anything about the universe; it is the best lens through which we can view and accurately describe the universe, and its ability to layer abstractions allows us to stretch our minds into worlds of pure possibility, and escape the shackles that nature and evolution has hobbled our intuitions and perceptions with. Math is a wonderful and powerful way to see beyond our own narrow horizons. That is why I study and write about mathematics. I don't spend the better part of my life getting advanced graduate degrees in subjects that I feel are without meaning. But you don't need some concrete absolute platonist world for things to have meaning. The truth of mathematical and logical assertions rests clearly and firmly on the assumptions you make, and ultimately those assumptions are a matter of efficacy, and convenience, not some absolute "truth".
    34. Re:Applied mathematics by Anonymous Coward · · Score: 0

      One thing to note about mathematics and its application to reality is that math is a construct which has been developed from very few axioms and still continues to model all that we perceive without ever changing the axioms. Math can be used to describe things that we do not perceive, and when we find ways to measure previously unperceived effects, math has usually "been there, done that". It seems that math and our perception of the world are either limited by the same thing (which makes math the best we can do) or that math really is the way of the world (which also makes math kinda important).

    35. Re:Applied mathematics by SLi · · Score: 1
      Uhh, as a theoretical computer scientist I find this stuff pretty weird too.

      Theoretical CS, Information Science and many other such branches are heavy in mathematics, and without them we wouldn't have, to name a few:
      • compilers for anything much more complex than assembly or basic, let alone good compilers
      • languages more complex than the early versions of fortran
      • relational databases (yes, the relational model is very mathematical)
      • speech recognition or other heuristical analysis of complex data, especially any time series
      • search engines


      All these are way outside the range for the "php monkey" he probably has in mind as he talks about maths not being useful.
    36. Re:Applied mathematics by Coryoth · · Score: 1

      For instance there *are* *two* apples. Even if no sentient species ever came into existence and recognized that fact, it is still true. Those two apples are embodiments of a universal truth that there is a discreet quantity of 'something'. Things, in this case the apples, exist, but that doesn't mean that the number 2 does. Try and point out the number 2 to me, and you'll only ever point out specific examples of things about which we (hopefully) agree have the property we would describe as "two". The actual number two, the abstract property which is universal to all such examples, that transcends the examples and is something that exists in our minds. Two has no physical existence, but is, rather, an abstraction we have drawn across a vast array of examples; it is a mental synthesis that we make to categorise. To say that the number two exists, really (* pound the table *) exists, is to claim that there is some realm out there, some platonic world with a real existence, which this abstract property inhabits. That's really quite a spiritual belief. There are, of course, people who believe that, but to me it seems a little absurd.

      Please note, by the way, that I am a mathematician. Feel free to read my blog for my thoughts on mathematics, and philosophy of mathematics. I feel mathematics has a great deal of value and meaning; I just don't require a belief that it has some sort of physical embodiment, nor meaning beyond that which we grant it, to have value and meaning. Mathematics is a lens through which to see the world, and it is a lens which lets you see clearer and further than our native perception; don't mistake the lens for the reality you are viewing however.
    37. Re:Applied mathematics by ContractualObligatio · · Score: 1

      I know nothing about civil engineering. However, you'd need to provide a bit more evidence than the nothing you give to convince me that when engineering a bridge, the interaction of individual atoms is taken into account. Seems the problem for the engineers would be hugely complex if they did so, and I'd also have concerns about anyone doing engineering work with materials that are not understood sufficiently well to work with at significantly aggregated level. Do you have a case you could share to support your point?

      "Mathematics is structured deductive reasoning, which builds up from a solid starting point (axioms) and serves to represent, communicate and help with the construction of ideas."

      That's not a definition of mathematics; it is an aspect of mathematics shared with many other subjects. It could easily be applied to philosophy, or debating (which I've had as part of English), or any science. If you are stating that structured deductive reasoning is the essential part of mathematics upon which CS relies, then you're making a very strong argument in support of TFA. Math could be dropped completely, and philosophy (for example) put in its place.

    38. Re:Applied mathematics by Ascoo · · Score: 0

      It's not that organisms need to understand math, but rather that organism use math intrinsically. Math describes the fundamentals of nature, whether or not we're aware of it. Organisms can live perfectly well without consciously knowing the the mathematics behind what they are doing. On the other hand, knowing the mathematics can help an organism obtain a goal faster than mere trial-and-error.

      Let's say an organisms wants to design a hammer. Knowing the mathematics of physics and chemistry, one can easily design a tool that has the appropriate hardness, generates the appropriate force on the hammer's head, etc. Then again, one could always just grab a stone and a stick and tie them together with sinew. So more on topic. Mathematics is necessary for Comp Scientists only to the extent that it tells them if their solution is optimal or if a solution to a problem is even possible.

      On a side note. I think almost all branches of science would benefit from Mathematics. In general, Biology is described by Chemistry, Chemistry is described by Physics, Physics is described by Mathematics, and Mathematics is described by Philosophy (Meta-Mathematics).

      - Ascoo

    39. Re:Applied mathematics by WNight · · Score: 1

      I managed to find the ACM article on another site without registration. It's basically the same as Joel on Software's article on how some people just don't get pointers.

      Wow, paid journals suck. Not being able to read an article someone mentions is so historical. Like Amazon, they clutter search results with things that aren't really available.

      "You want to know the rest of that quote you searched for? Well, we won't tell you, but we'll show you which book it's from and let you buy it! It'll arrive weeks from now and be totally useless to the problem at hand." -- Crap Merchant

      I wish there was a greasemonkey filter to remove all links to pay sites in Google searches. Any site that requires registration to view *any* of its content isn't likely to have high quality content for long.

    40. Re:Applied mathematics by UserGoogol · · Score: 1

      I agree with you in principle, but I disagree with your particular formulation. Math is universal, but our choice of axioms is not. It is not implausible that an alien civilization would not find Euclidean Geometry to be a particularly interesting system, and thus that they would not investigate it sufficiently to discover the Pythagorean theorem. Perhaps due to some peculiar quirk of their homeland they would focus on spherical geometry. (Of course, I also think it's possible that the alien civilization is simply too stupid to do math, but I don't think that's what you meant.)

      In my opinion, math is logic, which is universal and objective, plus whatever artificial systems we decide to construct, which is not particularly universal. There are certain mathematical systems (such as Euclidean geometry) which are extremely useful in describing reality, perhaps even objectively useful, but not universal aspects of reality as such.

      --
      "Never attribute to malice that which can be adequately explained by stupidity." -- Hanlon's Razor
    41. Re:Applied mathematics by Tablizer · · Score: 1

      Perhaps the problem is that schools emphasize continuous math (real numbers, physics, etc.), when software organization study is better served by discrete math, such as set theory, and perhaps symbolic math. The "physical math" is a product of the manufacturing era and military science. While those are great niches, we shouldn't let them monopolize the curriculum.

    42. Re:Applied mathematics by whit3 · · Score: 1

      > During my career here, I have had to take (as an Electrical Engineering major):

      > Physics I - despite the fact that no circuit I build will use newtonian physics
      >Statics - the science of non-moving structures (mostly a class on bridges)
      >Dynamics OR Thermodynamics - (had Statics as a prereq... do I need to point out that with my
      > masters is Digital Signal Processing I will never use eigther of these?)
      >Programming/misc - C, C++, ASM (motorola), ASM (intel), Java, Matlab, AutoCAD, MathCAD

      Ah, the innocence of youth! No circuit will use Newtonian physics? No moving motors,
      no generators or linear motion (loudspeakers)? What kind of DSP monastery do
      you imagine you'll be living in, that doesn't deal with these in GREAT DETAIL?

      And the dynamics and statics of lots of real-world systems gets channeled through transducers
      into ... DSP applications that make sense of the stresses, strains, and the like. Major machines are
      controlled by (your?) DSP designs, and you wouldn't want to exceed the mechanical limits. Hiring
      a DSP guru is the cheap way to work around these issues. Hiring a DSP guru who knows
      about stresses/strains is preferred.

      The reasoning of your college, which considers these things to be essential, is valid, IMO.

    43. Re:Applied mathematics by Tablizer · · Score: 1

      No, math is not hard-wired into the brain. It's hard-wired into the universe.

      We don't know that. I've been involved in long debates about the nature of math, and it is hard to say anything with any certainty about it. The only thing we agreed on as a whole is that it's a system or technique that humans find useful. Whether it exists externally to our minds or the universe is really tough to say.

    44. Re:Applied mathematics by nwbvt · · Score: 1

      The Communications of the ACM is not a paid journal, so do your homework before crying a river over having to spend a dime of your precious money.

      And in case you hadn't heard of it, there is this place called a public library where you can read magazines, journals, and books for free. Yeah, you have to be quiet and deal with lots of old people, but you probably should try visiting one at least once in your life.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    45. Re:Applied mathematics by nwbvt · · Score: 1

      "Okay, I get that computer scientists have to take math classes and they don't like it."

      No, most CS students actually like math (as much as you can like a required class) since they understand the point of mathematics is learn how to think in terms of abstraction, which is necessary in their chosen field. In fact I ended up majoring in it. The ones who hate it are the ones who should be Business Information Technology majors, whose most technically demanding job will end up being setting up a Ruby on Rails web application.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    46. Re:Applied mathematics by Anonymous Coward · · Score: 0

      Mathematicians would be a lot less Platonistic, I think, if they'd take courses in semiotics. There's a big difference between the symbol and its referent. Apples exist; but integers exist only when there's someone there to count them. That's why you can have human societies with no conception of "number" at all - where the only "amounts" of anything they can perceive are none, one, and many.

      Some ideas for you:

      • Read Language Log, a blog written by professional linguists. One of their favorite pastimes is debunking preposterous myths; like the supposed existence of cultures who have no concept of number beyond none, one and many.
      • Learn something about mathematics. The debate about the nature of mathematics has been going on for well over a century, and long predates the study of semiotics. Mathematician != platonist.

      Bollocks, I've just been trolled haven't I?

    47. Re:Applied mathematics by Dragoon235 · · Score: 1

      Similarly, it may be possible to discover alien life that never had a use for the Pythagorean Theorem (perhaps they don't perceive space?).

      Ever talk to Mr. A. Square from Flatland?

      http://en.wikipedia.org/wiki/Flatland
    48. Re:Applied mathematics by Anonymous Coward · · Score: 0

      I might point out that something does not have to be tangible to actually exist. Just because there is no physical two anywhere does not mean that the concept of two does not exist independent of our own thoughts. The amount of two would still be the same number even if we, the human race, did not exist. Why don't you point out gravity to me. Sure you can show me stuff acting under its influence, but you could never actually show me gravity as a concrete thing unto itself. Yet we know that even if we weren't here, gravity still would be. Quantity is also independent of humanity's existence. We came up with a way to refer to that particular amount, but we did not invent that concept.

      Your supposition that math is some sort of a lens that humans view the universe through is pretty much completely unprovable by any means and, since this is a purely philosophical argument at this point, I'm going to continue along those lines. Consider, if you will, for a moment that the question of whether or not a given problem is solvable is precisely the same question as whether or not a given string is a member of a given language (the mathematical concept of a language, not the concept of a natural language). This is a mathematical concept, and a pretty powerful concept at that. This precept holds for any problem. It is possible to prove mathematically that certain problems are intractable. It is a corner stone of automata theory. Whether or not a problem is solvable is something inherent to the universe. It is not the question of can a human brain or brains solve this problem, it is the question of can anything that could possibly exist in this universe solve this problem. I think that this speaks volumes as to the fact that math is inherent to the universe.

    49. Re:Applied mathematics by dbIII · · Score: 1
      Moorlock or Eloi - your choice. Someone avoiding mathematics for the sake of it in a technical disciple will eventually render themselves useless in that discipline.

      As for the analogy - yes materials are important enought for engineers that the study of it is a compulsory first year subject everywhere as far as I know. Computers are used to do stuff with numbers so eventually a programmer will be given a task where they have to know a bit of mathematics - which is why the study of it is in a lot (or maybe all) degree level computing courses.

    50. Re:Applied mathematics by yariv · · Score: 1

      Mathematicians would be a lot less Platonistic, I think, if they'd take courses in semiotics. There's a big difference between the symbol and its referent. Apples exist; but integers exist only when there's someone there to count them. That's why you can have human societies with no conception of "number" at all - where the only "amounts" of anything they can perceive are none, one, and many.

      You totally missed it. Apples doesn't exist, if you think they do, define them. Numbers are more real than apples, since the apple is a concept as well, just not so well defined. There is nothing you can say that exists, except for concepts. The only question is whether one might not use some concept, and numbers (as some other mathematical concept, like the realtion) are used everywhere as far as we have seen (that is, by humans and apes). No one ever described an intelligence without numbers, so I'll not treat one as possible until someone will tell me how can it be.

      About societies with no conception of numbers, they doesn't exist. There are societies with no concept of a specific number over 3 (1,2,3 are always used), but they have the idea of "amount" and the idea of "more" and "less". They even have the idea of "equal" for large amounts (which they can't describe), which is the base to numbers, they just never investigated more advanced mathematics, just like the greeks never knew of irrational numbers (and I think nagatives a well).

    51. Re:Applied mathematics by devonbowen · · Score: 1

      Statements like this make a sweeping assumption: that the fundamental theorems of mathematics are not the formalization of concepts hard-wired into the brain. For instance, the existence of prime numbers wouldn't be obvious to an organism that never used integers.

      There are "idiot savants" (maybe someone can help here with a better term) that derive pleasure from hearing prime numbers. They were, of course, never taught the concept of primes. I always found that interesting.

      Devon

    52. Re:Applied mathematics by Norailyain · · Score: 1

      If we ever discover an alien civilization that's a peer to our own, I'm sure it will have an identical formulation of Pythagoras' theorem. ... unless this alien lives in a nonEuclidean space !
      --
      "I may never prove what I know to be true, but I know that I'll still have to try" Dream Theater "The Spirit Carries on
    53. Re:Applied mathematics by Anonymous Coward · · Score: 0

      "The truth of mathematical and logical assertions rests clearly and firmly on the assumptions you make, and ultimately those assumptions are a matter of efficacy, and convenience, not some absolute "truth"."

      I think from what you're saying is that mathematics is like physics. There is no absolute truth, just abstractions and theorems. However, physics is also universal. An alien particle physicist will also find that electrons are quantized and provide a perfect example of integers, even if the concept of integers has not yet occurred to it. Whether or not "two" is universal or "out there" in some platonic way is irrelevant. Electrons are universal, and if you start with none and add the smallest amount of electron you can you get one, then do it again and you'll have two.

    54. Re:Applied mathematics by Anonymous Coward · · Score: 0

      You can't escape from mathematics.

      Sure you can. It's not inherent to the universe. Mathematics, being a language, is inherent to the way our minds model reality - with symbols that stand in for referents.


      No, you cannot. Mathematics *is* a property of the universe, not to be confused with the jargon and simbols we use to discuss about them. If you wanted to play the semoitic card you should know this better. The proof is that we could invent completely different symbol systems to talk about the same subjects and it would still be mathematics.

      That's why you can have human societies with no conception of "number" at all - where the only "amounts" of anything they can perceive are none, one, and many.


      I haven't heard of any, can you offer a citation? I have heard of societies that use an small set of numbers (one to five, then "many"), but they *do* use numbers.
    55. Re:Applied mathematics by acroyear · · Score: 1

      well, nobody except scientists need to really understand darwinian evolution, but by not teaching the realities of science, biology or physics, early and forcing people to understand it, we create a generation where there will be no more scientists because they won't have the basics handled by the time they need it.

      as long as we keep saying "i don't *need* science", we are also saying "my children won't *need* science, so we might as well not bother to teach it". which is exactly what the religious nutcases in the country want. trust me, they'd be perfectly willing to teach biblical-based geocentricism if they thought they could get away with it.

      it took us 400 years to overcome that once church absolutism kicked in during the 1100s. how long will it take the next time around?

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    56. Re:Applied mathematics by im_thatoneguy · · Score: 1

      But see I disagree with that from a philosophical standpoint. Truth, and I'm not talking about the fuzzy wishy washy stuff we just assume to be true, real truths, provable, universal truths are in my mind just as real as any apple (and equally definable). Saying the number two is a human construction is like saying one exact second is a human construction. While calling that unit of time a second *is* semantic and slightly arbitrary, the second itself (the thing being labeled) is a universal property (relatively speaking) and exists beyond the label. Now a "moment" that's a human construct because it has no universal equivalent, it's completely subject to the sapient's whims. In fact I would wager the number 2 is more real than any apple because the definition of what is an apple is not at all exact.

    57. Re:Applied mathematics by Coryoth · · Score: 1

      Electrons are universal? Well, we think so, but ultimately electrons are our model of how we percieve the universe to work. Now it's damn good model in that it makes suprisingly good predictions, but that doesn't make it "true", just useful. There may well be other perfectly effective ways of describing such things; who knows. What matters to us is that for all practical purposes electrons may as well exist, because things behave as if they do according to our models. That doesn't make them concrete or "real" in some absolute sense, but it does make them good enough that for any practical purpose we don't care.

    58. Re:Applied mathematics by Coryoth · · Score: 1

      But gravity is a human creation. Things will behave as they will, but the abstraction fo some overriding process that makes things behave that way, that's a human model; an abstraction from what is there into a model that allows us to predict (quite accurately I might add) how things will behave; the model is not the reality however. Without us things will continue to behave as they do; that doesn't mean that the concept of gravity as a description of that behaviour will exist; there may well be completely different ways of viewing and describing that behaviour that doesn't invoke what we would describe as gravity. What matters for us is that, for all practical purposes gravity may as well exist, since things seem to behave as if it does. That doesn't make gravity (* pound the table *) "real"; it just makes it an effective abstraction.

    59. Re:Applied mathematics by Anonymous Coward · · Score: 0
      ..which is exactly what the religious nutcases in the country want. trust me, they'd be perfectly willing to teach biblical-based geocentricism if they thought they could get away with it. ..


      You sound like a commie.


      Common sense says that science, with terms like 'space', 'time' and 'theories', are a dillusional way to think and go about life.


      At least religious people admit they are basing their lives on 'beliefs'.. however scientists are too stuck on their own rightiousness to admit they have a belief system as well.


      Nearly everything scientists hold dear (space, time, solids, etc) are not even 'real things'.. but mearly words made up to help mortals understand the great creation of God.


      At least some religious people have a hope for the future (life) and try to have a standard of living complete with morals.. where your commies, scientists and other assorted huminists believe the only MORAL thing to do is to ban religion in all aspects of life.


      You keep on going on talking non-sensical about what happened billions of years ago.. and about how there is no designing of our world.. and I'll keep believing things that are logical, wholesome and give credit to God and *Jesus*.. for everything they have done.. even for people like you :)



      Note: Hi everyone, this is Halvy ;) Because /. management has me moderated permanently with a Karma rating of 'Terrible', they start out EVERY post of mine with a -1 :( ... therefore very few people get to see or find my comments. But most disconcerting is that I cannot post more than 2 comments in a 24 hour period. Therefore I am and will use any means possible to post as myself.



      -- -- The Jewish Mafia must and will be stopped, at any cost.

    60. Re:Applied mathematics by Sax+Maniac · · Score: 1
      I think it depends on how you define CS. My school had a CS program that most certainly required you to touch a computer. There are lots of people (math bigots, mostly) who define Computer Science of what I think is better termed "theory of computation". Different schools, I'm sure, consider it differently.

      To say Computer Science has nothing to do with actual Computers is a little pompous and ridiculous - note the word Computer in both. It's not "Computation Science" or "Computability Science" like the mathies seem to want it to be.

      Then you have the folks that say "well, all Science must be math, it can't be science otherwise". I think "science" is here is more colloquially used as "The Study Of". Otherwise you couldn't have political science or music theory. After all, it's not rocket science!

      --
      I can explanate how to administrate your network. You must configurate and segmentate it, so it can computate.
    61. Re:Applied mathematics by jawtheshark · · Score: 1

      "Computer science is no more about computers than astronomy is about telescopes." -- Edsger Wybe Dijkstra

      That petty much closes my case... Please feel free to play again....

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    62. Re:Applied mathematics by Sax+Maniac · · Score: 1

      Right, but Dijkstra was probably a little bit biased to the "everything is math" definition of CS. Maybe Don Knuth is right...

      --
      I can explanate how to administrate your network. You must configurate and segmentate it, so it can computate.
    63. Re:Applied mathematics by sinthetek · · Score: 1

      One thing that you and many of the repliers to your comment seem to be neglecting is many of the phenomenon illustrated/discovered by the application/research of quantum physics which is, to my understanding (which I admit is limited), more or less the culmination of most mathematical studies as well as various realms of physics and cosmology. I mention this because it re-iterates the same philosophical question mentioned earlier of whether or not the apple truly exists when we are not there to perceive it.There is the possibility that it exists as something completely different when we aren't looking or that it doesn't exist in our universe at all until some cascading combination of very random factors collide with our perception to manifest it as an apple, hexagon, etc Please don't flame me too bad, I never made it past 8th grade in school and can barely grasp basic algebra, it just seems odd to a simple laymen such as myself that you who seem to be professing a very solid grasp of mathematics by incorporating it into the fabric of reality seem to be dismissing what many great philosophers throughout time and modern physicists (and crashfrog) all seem to think are very valid questions/points. Much of the universe manifests itself based on our perception of it, both collective and individual. Insulting this guy (and in essence much of what many our race's greatest minds) because you think your particular understanding/perception is more valid seems a bit pompous, IMO. I really suck at math and barely have a conceptual/laymen's understanding of these things which I am sure will be pointed out is apparent, but I just thought I'd throw in my two cents and point out the irony (assuming my primitive mind has at least grasped that concept properly and applied the term correctly).

    64. Re:Applied mathematics by sinthetek · · Score: 1

      ...Although it is apparent even to myself that I haven't properly grasped the concept of previewing a post or inserting /> tags when replying to posts on here, haha

    65. Re:Applied mathematics by crashfrog · · Score: 1

      Just because there is no physical two anywhere does not mean that the concept of two does not exist independent of our own thoughts.

      Well, then where does it exist? Some metaphorical Plato's cave where all ideals exist independent of our knowledge of them? Waiting to be discovered?

      That's nonsense. To start with, if Plato's Cave holds only true ideas, then where do false ideas come from? If Plato's cave holds all possible ideas, then you're actually looking at a Library of Babel - and the problem there is that finding a specific book in the Library of Babel requires that you already know exactly what it says.

      So, if Plato's cave holds all possible ideas, then you can't go "discover" an idea in Plato's cave unless you know what it is, first - that is, you have to make up the idea in your head before you can "get" it from Plato's cave.

      Platonism just doesn't hold up, for that reason. Either way you look at it, human beings and their ideas - including our ideas about mathematics - are coming from our imaginations, our creativity, our invention - not "being discovered", as the Platonist mathematicians claim.

      Quantity is also independent of humanity's existence.

      Because you say it is? We might as well say that "beauty" is just as independent of humanity's existence; we might as well commit the fallacy of reification wholesale, if we're going to commit it at all.

      The universe we live in is physical, and it operates according to laws of physics - some of which we model, inaccurately, in mathematical language. But to confuse our ability to do that with some actual property of the universe is to confuse the map with the territory. The map describes the territory because we've tried to draw it thus - but if you make a mark on the map, or even destroy the map, the territory remains unchanged. The territory is what's real. The map is how we model it in our minds.

      --
      I never have frustrations, the reason is, to wit:
      If at first I don't succeed, I quit!
    66. Re:Applied mathematics by 1110110001 · · Score: 1

      You just lost all credibility with me by using that word. I guess prior to that state of evolution the bees made pentagon shapes and before that they made square shapes for their honeycomb? As far as I understand evolution, that's what they did and still do from time to time. It's just not very efficient and that's why it's rare. Of course that also means only a bunch of cells in the honeycomb will have a different structure and not the whole comb.
    67. Re:Applied mathematics by jawtheshark · · Score: 1

      Have you ever tried to read Knuth? Unless you love maths, you'll put the Art of Computer Programming down in no time. Of course that's what the joke is about ;-)

      That said, I do not agree that "everything (science) is math". I would categorize Biology as science, but it's not math. A lot of science is math though, or is mainly composed out of math. Physics, for example, has a lot of math, but just as in biology you need observation of nature. That's what differs with pure math and (ironically) computer science: both do not relate to natural constructs. Everything in maths (and also computer science) is in essence man-made. Truths that stand on themselves and no natural observation is required. Thus is the nature of maths, and since all this also applies to computer science, one can safely say that computer science is a part of maths. Even without trying out Bubblesort, you can prove that the worst case complexity is O(n^2). Proving something is only possible in maths: it is not possible in any other science.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    68. Re:Applied mathematics by Corporate+Troll · · Score: 1

      Studying mathematics is not like studying history where the goal is to memorize as many facts as you can about a particular subject.

      Never, ever say that to a historian. That's not at all what they do! Historians, try to interpret and reconstruct the past, including events of the past in context. "Why something happened." For example: you cannot understand WWII without understanding what happened before. You know what? For my high school history exams, I didn't have to memorize facts brutely. No, we were give a text about a certain period of time and with the knowledge we had acquired, we were required to write a dissertation analyzing the text within the historical context. Could be anything, from the excerpt of a propagandistic paper to an excerpt of a journal of 13 year old Jew.

      In those classes it was possible to get an A without mentioning a single date. As long as your analysis of the events was good.

      If you think that history is about memorizing facts, then you seriously misunderstood the point. Oh, and I want to point out the fact that I hated my history lessons, so I just defend historians because I know that history isn't about memorizing facts.

    69. Re:Applied mathematics by Nicolay77 · · Score: 1

      But mathematics is absolute and irrefutable in its results.

      In debating you often hear 'but in the other hand' and so on, and even speakers can convince each other of their conflicting points of view.

      Then normal or experimental sciences have this think that they have a paper stating stuff, and a couple of months later another paper stating just the opposite.

      In maths you can't argue with something than has been proved, if the proof is indeed correct. You can't argue that 2+2=5 in any way, no matter what you feel about it. You can't disprove something once it has been proved. It is also much more strict in defining what really is a proof and what is not.

      That's what makes mathematics more (or less) useful and different to philosophy and the other disciplines you mentioned.

      Also, mathematics always use previous results as a foundation, and a lot of the time, a mathematical theory turns being useful for something unexpected by their authors.

      --
      We are Turing O-Machines. The Oracle is out there.
    70. Re:Applied mathematics by ContractualObligatio · · Score: 1

      And those engineers then continue to consider the interaction of individual atoms while designing a bridge? Or did you conveniently forget the argument you were supposed to actually believe?

      Logically speaking, your post is also an argument for requiring English as a subject of study, for the writing and interpretation of specifications.

      Apart from the facts that you're changing your argument, and not making a strong logical argument at that, you really should address the fact that a highly experienced person believes there is an undue emphasis placed on mathematics. To address such a point, you need to try a bit harder than facile arguments that give no hint of actual practical experience nor empirical evidence to support them.

      I might argue, for instance, that seeing as many graduates from non-mathematical courses have gone on to be successful programmers, that you are out-and-out wrong.

  6. Porn by Dwedit · · Score: 4, Insightful
    1. Re:Porn by supersat · · Score: 4, Funny

      Just as porn relies on math, math (or at least image compression research) relies on porn.

      It's a symbiotic relationship.

  7. Sure thing Einstein by Anonymous Coward · · Score: 5, Insightful

    Good luck on doing a kernel, file system, network stack, crypto, image processing, window manager, animation or 3D without math or algorithms. I look forward to reviewing some of this guys code.

    1. Re:Sure thing Einstein by mogul · · Score: 1

      Well, I will prefere NOT to review his code.

      It's way easier to review well structured code.

    2. Re:Sure thing Einstein by Jeff+DeMaagd · · Score: 1

      I don't know what to call that kind of statement. Structure exists outside the field of mathematics, mathematics is merely one means of expressing it. Better stated, I don't think high level math courses is the only way to teach algorithms.

    3. Re:Sure thing Einstein by TapeCutter · · Score: 1

      "Structure exists outside the field of mathematics."

      You need to broaden your definition of mathematics.

      "Better stated, I don't think high level math courses is the only way to teach algorithms."

      The traditional way to introduce the subject of algorithms is to start with the analogy of a "recipie", but if you want to program a computer to do something usefull it's gonna take more than milk & honey.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    4. Re:Sure thing Einstein by msormune · · Score: 2, Insightful

      There's math and then there's advanced math. I once built a simple 3d modelling software (used 3d Studio mesh file format), and got by just using basic trigonometry and algebra. This stuff does not have to be taught in an university.

    5. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      Did your modelling software have C2 continuous curves, subdivision surfaces, point cloud triangulation and parameterization with minimal texture distortion? It is normal for people to learn about computers and reach a point where they think that they know the language and the API and that is all. But that's not computer science. If anything it's the practical basis for software engineering. Computer science deals with problems which are much more complicated than telling a computer to put this node there and that piece of data here.

    6. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      The author doesn't think that a set calculations and operations to hold an logical invariant is an algorithm. One might argue that the logic part of some algorithms is not stricly contained in the traditional field of mathematics but more inside the equally tradional field of logic. Have anyone met any dining or drinking philosophers recently?

    7. Re:Sure thing Einstein by vidarh · · Score: 1
      Personally I can think of few things more horrific than reviewing the code of a mathematician... I speak from experience.

      Few people are as skilled at writing obfuscated, convoluted code with meaningless identifiers and believe it's so "obvious" it doesn't need to be commented much.

      Of course it doesn't apply to all of them...

    8. Re:Sure thing Einstein by nomadic · · Score: 4, Informative

      I look forward to reviewing some of this guys code.

      Knock yourself out. Whether you agree or disagree with this guy, it's obvious his credentials put him at a level above 95% of the people criticizing him here.

    9. Re:Sure thing Einstein by fast+turtle · · Score: 1

      I look forward to reviewing some of this guys code. You mean his "Hallow Werld" code?
      --
      Mod me up/Mod me down: I wont frown as I've no crown
    10. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      People get their kicks from all sort of things...

      I really hate reading code written by math and physics students. It's usually a big pile of spaghetti. It works (i.e. give the program some input it expects, it produces the output the author meant), but the code has no organization and usually is just one big main method.

      Knowing your math does not make you a programmer. You might be able to envisage an algorithm to solve some devious problems. And you might even be able to implement it in some programming language. But you sure as hell will not be able to put together a sophisticated compiler or a proper OS kernel -- anyway not one that anyone else would like to touch, let a lone read the code.

    11. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      That's not the point. A programmer may not know the correct math or algorithm to implement a routine efficiently. In a script or enterprise app, it probably doesn't matter. In computer science, it's all that matters.

    12. Re:Sure thing Einstein by coolGuyZak · · Score: 1

      Good luck on doing a kernel, file system, network stack,

      Interestingly enough, most kernel-level tasks don't use mathematics in their construction. I was surprised to find that the only means we can use to determine kernel-level efficiency is empirical, because kernels exhibit non-deterministic behavior. (Note that mathematics can be used to construct these things, but any assumptions one could make about performance based on the math is thrown out the window, because processors are interrupt-driven).

    13. Re:Sure thing Einstein by Xyrus · · Score: 1

      "Whether you agree or disagree with this guy, it's obvious his credentials put him at a level above 95% of the people criticizing him here."

      You're percentage is a little high, but your point is correct.

      There is some merit to his claim. Looking at his list of patents, most of those innovations could come about without knowing advanced math.

      However, discrediting advanced math altogether is idiotic. FFTs and CFDs are heavily reliant on the mathematics of the real world, along with any other advanced modeling concepts.

      Perhaps for his particular problem domain, advanced math may not be required. However, I'd like to see him code up a radiative transfer model for a dynamic atmosphere WITHOUT an understanding of CFDs.

      ~X~

      --
      ~X~
    14. Re:Sure thing Einstein by Repossessed · · Score: 1

      I see no code, or anything directly related to programming that I can recognize on that page. He does seem to be very accomplished in the physical aspects of computing. (I'm not sure how much of that he was a researcher for, and how much he was (only) a manager, but a number of those papers only have his name on them, so assuming he's not a complete scumbag and had somebody else write them for him, he understands what the people under him are doing very well.

      I still don't see anything he's done that suggests he has a clue what source code looks like though. (This may be a BIAS of the companies webpage). I do hold the possibility that some of the tech he's pushing (some of which is very very low level), is allowing for a different, more fluid kind of programming.

      That's about the only way his statements on not needing math for computer science would make any sense. Given that you couldn't do anything more than basic code grinding without understanding at least *some* algorithim theory. (Not even necessarily a lot of knowledge, just enough to be able to find non brute force methods so that your code doesn't take a hundred thousand years to run*

      *I screwed up like this once because I didn't analyze my algorithm effectiveness until after I was done, (and yes, it would have taken 100,000 years, at a conservative estimate, though a new high end processor could probably cut it down to 25,000 years) ended up rewriting half my code (and got it to run in 10 minutes instead).

      --
      Liberte, Egalite, Fraternite (TM)
    15. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      You missed the point!

      Sure you have to know your math so you won't code O(2^n) when you could do with O(1). But knowing how to put together an algorithm will not enable you to write a OS kernel.

      Let me spell it out for you: being good at math does not make you a good programmer. A great programmer most probably is also good in math.

    16. Re:Sure thing Einstein by bubbha · · Score: 1

      I've worked on target tracking and target recognition systems - one area of specialty in the author's resume. Many image processing algorithms are based on differential equations, fourier transforms, cellular automata, statistics, etc. When the algorthms are first specified - there's little actual code in sight. Most are described with elaborate mathematical constructions. Computers come in when they are interested in understanding roundoff or trying to solve performance issues or trying to figure out how to jam all that heat-sensitive equipment into the nose cone of a missile. These folks need to also understand computer hardware architecture, and of course - computer science - math and all.

      I think his point is that today, the industry is so broad - that many aspects of computer science never come into play. Deployment specialists, configuration control managers, graphic artists, technical writers, testers and test script writing, "business" requirements analysis, on and on. How important is it for these folks to understand Turing machines?

      I don't think that computer science departments should stop teaching the science of computing. And I don't think the demand for people who can do computer science will diminish. But the field has exploded. Cost of delivering software intensive systems is now the main focus. Software engineering and software architecture concerns now dominate.

      --
      I want to be alone with the sandwich
    17. Re:Sure thing Einstein by SoulRider · · Score: 1

      And his whole point is that the mathematical concept of algorithms is the limiting factor. As a computer scientist this should be an interesting subject. As processes are getting more complex, is the concept of the algorithm going to be a limiting factor to computer theory? This should lead to you asking yourself, is there a better paradigm? Do we as computer scientists need to re-define the concept of an algorithm? Heck I have always thought of algorithms as being implementations and not theoretical applications of computers. What is the theory behind computer sorting? Quick sort, bubble sort, merge sort, these are all implementations of that theory, not theories themselves.

      Proper scientific process requires that results be validated but also that the methods used to achieve those results need to be validated and re-evaluated also. And anyone who is a real scientist and not just some math bigot realizes, the entire foundations your science are based on need to constantly be viewed under the same microscope you use to practice your science. I see more and more young people with scientific degrees that treat their science almost the same way a religious zealot treats their religion. The scientific process we have today exists because that process is in a constant state of doubt. We only use the tools and data that we have available to us today, tomorrow someone could discover or prove that our tools and data are total bs.

      What of the person that studies Human Interface Design, that person is creating the theories and concepts that define how people use and interact with computers. Other than using statistics to quantify aspects of his/her research I doubt that person would need a strong background in mathematical theory. How is this person not a computer scientist? Computer science is more than just converting things into 1's and 0's then converting them back into something else.

    18. Re:Sure thing Einstein by weicco · · Score: 1

      Well, I've done kernel and network stack coding and all I know about math is basic plus, minus etc. stuff. I managed to get it working allthough I first had to check some examples how to calculate checksums.

      At my current work I just need to count numbers together. I don't care about optimizing algorithms since math operations are so light that they wont last long. Biggest bottleneck is making queries to SQL server (luckily ASP.NET has nice asynchoronous support for page and SQL queries).

      So bottom line is, I know jackshit about math, my education is two years in business school, but I've coded almost 7 years for living now and something like 20 years for a hobby.

      --
      You don't know what you don't know.
    19. Re:Sure thing Einstein by Sebastopol · · Score: 1

      The fucker sure did milk his patented "null X" concept for all it was worth. :-)

      --
      https://www.accountkiller.com/removal-requested
    20. Re:Sure thing Einstein by msormune · · Score: 1

      Well, it had triangle subdivision, algorithms stuff for continuous surface and angle calculations and texture coordinate balancing, but nothing complicated. This was in 1993. Computer science should give people tools and ideas to seek answers to questions that go beyond software engineering, but are solvable by computational power. For some, these tools require advanced math but not for others. It depends on the area of research. Mine is health care, so math is not really an issue. There's a lot of theoretical stuff behind software integration, also. Don't get me wrong, I do have a lesser degree (cum laude) in mathematics, but just have never needed it in real life and work...

    21. Re:Sure thing Einstein by Anonymous Coward · · Score: 0

      Which is besides the point. Yes, you can get a job writing SQL queries. But without algorithms and math knowledge (which may or may not come with a degree in CS, depending on the school) you would never be hired to implement SQL itself.

    22. Re:Sure thing Einstein by nomadic · · Score: 1
      However, discrediting advanced math altogether is idiotic.

      From what I understand (which admittedly, isn't much--I'm pretty far outside the realm of math OR CS), he seems to be criticizing a pure mathematics approach to solving problems with a computer. The article quotes his book as follows:

      "Mathematicians and computer scientists are pursuing fundamentally different aims, and the mathematician's tools are not as appropriate as was once supposed to the questions of the computer scientist. The primary questions of computer science are not of computational possibilities but of expressional possibilities. Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."

      This concept of 'process expression' is, he says, a common thread running through the various disciplines of computer science. "A logic circuit is an expression of a logical process; an architecture is an expression of a continuously acting process to interpret symbolically expressed processes; a program is a symbolic expression of a process; a programming language is an environment within which to create symbolic process expression; a compiler is an expression of a process that translates between symbolic process expressions in different languages; an operating system is an expression of a process that manages the interpretation of other process expressions; any application is an expression of the application process."


      The way I read this means that you may need to use advanced mathematics at the process level, depending on the needs of the program, but approaching the entire program as an algorithm, or collection of algorithms, is counterproductive. I think.
    23. Re:Sure thing Einstein by weicco · · Score: 1

      No it isn't. TFA isn't about writing SQL engine. It is about computers and coding in general, if I understood correctly. You don't need deep math skills on every part of programming. Otherwise there wouldn't be those known as script kiddies :)

      --
      You don't know what you don't know.
  8. Computer science ? by ivan_w · · Score: 3, Interesting

    This is all fine.. But it doesn't explain something I have long thrived to understand :

    What is computer science ?

    Computer engineering.. yeah.. I can understand that.. But man.. Computer SCIENCE ?

    That's like saying 'car science', 'cooking science' or 'go at the bar and have a drink science' !

    --Ivan

    1. Re:Computer science ? by Kallahan · · Score: 0

      Technically, the study of logical systems. Nowadays it's just computer programing :(.

    2. Re:Computer science ? by Yetihehe · · Score: 1

      Car science - making better engines, car safety, ergonomics... Cooking science - why dough rises, what's happening with milk and sugar... ( http://www.exploratorium.edu/cooking/ )

      --
      Extreme Programming - Redundant Array of Inexpensive Developers
    3. Re:Computer science ? by Anonymous Coward · · Score: 0

      "I think the way in which people use --or misuse-- words always most revealing. (At a seminar I recently attended, one of the speakers consistently referred to people as "human beings"; he turned out to have been trained as a psychologist.) Bearing that in mind and, furthermore, remembering that the majority of the people in the field regards computers primarily as tools, we should notice that the English speaking world coined the term "Computer Science". We should do so, because it is very exceptional that a tool gives its name to a discipline: we don't call painting "brush art", nor surgery "knife science". From these observations we can only conclude that when the term "Computer Science" was coined, computers were regarded --either in fact, or mainly potently-- as exceptional gadgets. A question to be answered before proceeding is, whether this view of computers as exceptional gadgets is justified or not."

      -Dijkstra (EWD 682)

    4. Re:Computer science ? by ivan_w · · Score: 2, Insightful

      That's engineering !

      Making better engines uses the science of Physics and chemistry..

      Cooking uses the science of chemistry..

      To me it's like saying : 'Lego Science'.. It's not 'science'.. You don't need to know the physical aspects of a lego block to assemble something.. Although you need some insight into how the thing works - but it's not science per-se !

      Then again, it depends on how 'science' is defined !

      --Ivan

    5. Re:Computer science ? by Yetihehe · · Score: 1

      Then again, it depends on how 'science' is defined !
      Exactly that is what I'm saying. Computer science is an amalgam of mathematics, algorithms, engineering. How else do you describe what researchers do with computers in overall?
      --
      Extreme Programming - Redundant Array of Inexpensive Developers
    6. Re:Computer science ? by Anonymous Coward · · Score: 3, Insightful

      It's an old joke that any subject that has "Science" in it's name is not a science e.g. Political Science, Social Science, Computer Science.

      The Science in Computer Science consists largely of niches carved out of other disciplines e.g. algorithm analysis and crypto are mathematics, user interface design is psychology, computer graphics is really about approximating physics, audio compression is mathematics, psychology and physiology, AI steals ideals from biology... every now and then we find out that the physics department, or the electrical engineers, or the chemists, are actually doing almost identical research to us.

    7. Re:Computer science ? by joel.neely · · Score: 5, Insightful

      The term itself is a product of the academic environment, similar to the equally dubious "Library Science" and "Management Science". For what it's worth, the European term "informatics" would have been better, but never caught on.

      That said, I believe there's a useful set of relationships well understood in other fields:

      Science = The search for fundamental knowledge and predictive models;
      Engineering = The creative application of the results of science;
      Technology = The routine application of the results of engineering.

      giving us, for example:

      Science: Physics
      Engineering: Electrical engineering
      Technology: TV Repair, Cable TV Installation

      The punch line is that application of this model to computing works as follows:

      Science: Mathematics
      Engineering: Programming, Informatics, "Computer Science"
      Technology: Coding, Computer Installation, Home Computer Repair, etc.

      Mathematics IS the science in "Computer Science".

      Anyone who has studied advanced Mathematics knows that Math is not about numbers; think of mathematical logic, Boolean algebra, abstract algebra, set theory, topology, category theory, etc. ad infinitum. Dijkstra defined Mathematics as "the art of precise reasoning". In the same sense, "computation" doesn't mean "number crunching", but more generally the automated manipulation of information.

      It is true that there are legitimate concerns in today's computational landscape (networking, concurrency, etc.) which didn't figure in the mathematical/engineering world view of the 1940s, but that's simply a sign that the field has grown up (i.e. grown beyond the limited perspectives of its founders). That's also true in many other applications of Mathematics. For example, early research in differential equations paid much more attention to linear differential equations (because they were more tractable). However, we now know that most "interesting" systems in the real world involve non-linearity.

      Science, Engineering, and Technology share with living systems an important rule: "Grow or die!" Fortunately, the field of computing has grown.

    8. Re:Computer science ? by Anonymous Coward · · Score: 0

      We call it computer science because many of the early computer 'scientists' transferred from physics and were too snobby and pretentious to admit that they were now engineers. Computer science is computer engineering, plain and simple.

      Someone explained the difference between science and engineering to me as this (paraphrasing):
      Science aims to take things apart so we can understand how they work, engineering uses knowledge of how things work to put things together. Obviously in practice taking things apaart and putting things together are completely intertwined: you may need to put something complex together to take something else apart or you may build something so complex that it has unexpected or unintended behaviour and hence you have to deconstruct it scientifically to determine how it is behaving. The later often ocurs in computer engineering, but occasional uses of the scientific method does not suddenly transform the whole discipline from engineering to science.

    9. Re:Computer science ? by Anonymous Coward · · Score: 0

      Yeah good one.

      Except mathematics is not science.

    10. Re:Computer science ? by Colin+Smith · · Score: 1

      Computer engineering.. yeah.. I can understand that.. But man.. Computer SCIENCE ? At the moment, quantum computing. The rest is engineering.

      --
      Deleted
    11. Re:Computer science ? by Potor · · Score: 1

      No it's not the same. Science translates what the German Wissenschaft and the Latin scientia try to cover: the academic, rigorous study of something.

      Science does not mean "exact or physical science," which, as the academic, rigorous study of natural physical phenomena, is just a subset of the original term.

    12. Re:Computer science ? by rabidgnat · · Score: 1

      As far as I can tell (being a major), pure CS is broken up into a few discrete fields

      - The theory of computation (automata\\regexs, Turing Machines\\pushdown automata)
      - The theory of recursive language descriptions as applied to computing (Compilers)
      - Algorithms \\ analysis of algorithms
      - Data structures \\ relation to Algorithms

      Modern courses throw in extra elements of the theory of some real-world disciplines:
      - Operating System Design
      - Architecture Design
      - Software Engineering
      - Networking
      - Databases
      - Modern Programming Languages (normally with at least one procedural, one OO, and one functional)
      - If you're lucky, Linear Algebra (I've never had a more useful math course in my life!)

      A modern CS course taught in a college is not based on just the mathematics, or just the real world applications (unless you go to a bad college), but is a federation of concepts taken from pure and applied mathematics of computation.

    13. Re:Computer science ? by Anonymous Coward · · Score: 0

      There -is- a difference between "science" and "engineering".

      And there are much science that goes into "cars" and "cooking" and even "beer", but it is generally described as a science, like Chemistry, Physics, etc.

      Later, engineers use science publications and data to figure out how to engineer stuff.

    14. Re:Computer science ? by supersat · · Score: 1

      Computer Science is very much a science.

      CS researchers are always coming up with new ideas, and prove that their ideas are actually useful, they need to perform experiments. This can range from measuring the number of branch prediction failures in a CPU (when designing a new branch prediction system) to conducting user studies to evaluate how easy it is to operate a novel user interface. Virtually every CS paper has hard data to back up their claims. These results are peer-reviewed and ultimately published. It very much follows the scientific method.

    15. Re:Computer science ? by ShiNoKaze · · Score: 1

      I'll take a 'go to the bar and have a drink' engineering lab. I get engineering credit for that right? Thank you.

    16. Re:Computer science ? by JAlexoi · · Score: 2, Insightful

      I have studied advanced math and I can tell that it's all about analysis.
      I'd say that Computer Science(or better Computational Science) should consist of logic, Boolean algebra and so on....
      And should be a separate science.

    17. Re:Computer science ? by Hal_Porter · · Score: 1

      No it's not the same. Science translates what the German Wissenschaft and the Latin scientia try to cover: the academic, rigorous study of something.

      Science does not mean "exact or physical science," which, as the academic, rigorous study of natural physical phenomena, is just a subset of the original term.


      Mr Potor. Before you speak further I feel I should make you aware that the penalty for pretension here is DEATH BY HANGING!

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    18. Re:Computer science ? by Plutonite · · Score: 1

      You are correct of course, but the problem with software is that the foundational maths is very heavily intertwined with the technological aspects of the science, because the entire process is conceptual; i.e the end product is a Turing Machine - a piece of information. But like the Ancient Greeks, good computer scientists shy away from the dirtiness of handy-work in favor of the intellectual throne of mathematics, where we discover what is true while leaving it to others to apply that truth, perhaps with some direction.

      Without mathematics (and meta-mathematics) there would be no set theory, without set theory no Computers/computational machines/TM, and without them not one line of the pretty code the author loves so much would have meaning. If some fool hacks some code snippets together to make a program then he is engaging in mathematics whether he likes it or not. His ignorance of it does not render the mathematics any less important. Slow news day. //diatribe ends here

    19. Re:Computer science ? by Anonymous+Brave+Guy · · Score: 1

      They just got jealous of the Engineers, you see: Software Engineering, Traffic Engineering, Social Engineering... :-)

      But yes, I studied CS in academia, and I still couldn't write down a robust definition of the field, nor explain why it's a science and not a branch of mathematics. In fact, the Computer Laboratory at Cambridge University here in the UK even started life as the Mathematical Laboratory.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    20. Re:Computer science ? by Anonymous+Brave+Guy · · Score: 1

      Then I'm afraid you didn't study advanced maths very well. Analysis is an important part of the field, to be sure, but it's no more fundamental than algebra, geometry, logic, and numerous other areas. The American Mathematical Society has a comprehensive classification of these subfields, and it's vast.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    21. Re:Computer science ? by ferespo · · Score: 1
      When Newton(along with Leibniz) invented calculus, Was he doing physics or math? He used that new MATH to explain physical phenomena, does it belong to Math then?

      I think your taxonomy could be rewritten as follows:

      Science: Physics
      Uses: MATH
      Engineering: ....

      Science: Computer Science
      Uses: MATH , LOGIC
      Engineering:....

      It's true that the Computer Science departments have born from Math departments, by the way. But they became adults a long time ago.

      Computer science gives you the basic elements to become a computer scientist I.E. to research and expand the limits of current knowledge in computer design and architecture, languages, compilers, models of computation, artificial intelligence (not a la steven spielberg, of course), network design and architecture, processing of images & sounds, data mining, etc

    22. Re:Computer science ? by ZOmegaZ · · Score: 1

      Edsger Dijkstra once said, "Computer science is no more about computers than astronomy is about telescopes."

    23. Re:Computer science ? by The+One+and+Only · · Score: 1

      Actually, Leibniz was trying to prove his "monadology" by studying infinitesimals--it had nothing to do with studying physical phenomena at all.

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
    24. Re:Computer science ? by dkf · · Score: 1

      Mathematics IS the science in "Computer Science". I respectfully disagree. While CS does draw a lot from Mathematics, it's principally logic that it takes from there and that's arguably got its own history back to at least Ancient Greece. But CS isn't just applied Logic. It also draws a lot from Engineering, there are contributions from all the Natural Sciences, and there's even a fair amount from traditional Philosophy and Psychology. (For example, GUI design is almost entirely related to psychology and has next to nothing to do with mathematics.) There are probably other fields that CS draws from, but you get my drift.

      With that many things coming together, I can't really say anything other than that CS is genuinely its own discipline. (I think it's probably the most significant one to rise in the 20th century; all the other big ones are older, much smaller, or still strongly coupled to a particular parent discipline.)
      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    25. Re:Computer science ? by Anonymous Coward · · Score: 0

      Without mathematics (and meta-mathematics) there would be no set theory

      "Without lamps, there would be no light." -- John Bender

    26. Re:Computer science ? by public+image · · Score: 1

      How about this to throw a spanner in the works: My university requires CS grads to have a minor in a physical science and to complete the same core as Information Technology students. Presumably, they see computer scientists as scientists in their field who are equipped with auxilliary computational skills and knowledge.
      IT students study the core subjects along with project management or other business related areas. They also may study things like crypto, compilers, or formal methods as electives.
      Software Engineers study embedded systems and learn to work with engineers from other fields in interdisciplinary teams.

  9. Depends on the industry by UDFlyers · · Score: 0

    I don't think the field is "better off" without math it lays a good foundation for the field, but I have to say that, after college, I didn't use math very much to solve problems. I did use algorithms quite a bit. To be fair, I was designing software in a field that didn't require math. As my career has progressed I have moved higher in the food chain, but ironically I have started working at places that use their computer systems for "computational fluid dynamics." My background in math has been helpful to understand some of the requirements I get in from the engineers. The point is that math isn't critical outside of the school environment, it's more important to have a foundation/background in whatever industry you are working. Computer science is a support service just about everywhere I have ever gone (even if you sell products, you sell them to help someone) so being able to understand your target audience is probably the most important thing of all.

  10. Sound like he's just trying to redefine the terms by Derekloffin · · Score: 1

    Obviously, I haven't read the book, but the article sure makes it sound like he's just trying to play word games, relabeling the concepts. And then, once he's done that he goes, 'see, it isn't mathematical anymore', when in fact all he has done is disguise the terminology. I sometimes think myself that math hardly covers the intricacies of computer work, but I think this guy is attacking it in the completely wrong way.

  11. Computer Science without math... by siDDis · · Score: 0

    is the same as writing litterature with a programming language.

    1. Re:Computer Science without math... by itwerx · · Score: 4, Insightful

      is the same as writing litterature with a programming language.

      The reason computer science is so heavily influenced by math is the binary architecture that every piece of hardware is designed around. Every real world problem, right down to choosing the color of a font, has to be translated into the digital world by algorithmic approximation - a lot of math! The problem is that it is this very abstraction that makes computers so "flexible" in what they can do. Analog computers existed many years ago but they could only ever be built for a single purpose.
            Unfortunately(?) it is much easier to design and mass produce something which is based on a finite lowest common denominator (bits) than it is to do so based on the continuum that a non-digital solution would require.
            That said, who's to say that a beautiful painting rendered in Gimp/PhotoShop isn't a program of sorts? Certainly it has input, (from the original creator), and output, (its effect on us), and the "code" can be modified to change both!

    2. Re:Computer Science without math... by RealmRPGer · · Score: 1

      Yeah, there's a lot of math involved, but it's always SIMPLE math. I'm not using calculus when doing bitshift operations. I was more than proficient at programming with a high school math education. The additional college math didn't do a thing for my programming abilities.

    3. Re:Computer Science without math... by code65536 · · Score: 1

      Incorrect. That is more of something that an electrical engineer or someone doing low-level programming will have to worry about. All the binary fun with xors, ands, ors, shifts, etc., are all unrelated to the sort of math of Alan Turing.

      Come back to the discussion once you understand what a Turing Machine is.

    4. Re:Computer Science without math... by fractoid · · Score: 3, Insightful

      You probably aren't programming anything that requires math. Try 3D graphics programming - you need a lot of linear algebra, and some calculus if you're doing any kind of shading. Physics simulations require more differential equations than you can shake a stick at. Lossy compression requires frequency analysis and coordinate transforms. Of course, making business database front ends doesn't require much in the way of maths... *sigh* :/

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    5. Re:Computer Science without math... by Apro+im · · Score: 3, Interesting

      ... and here we find the fundamental problem. Programming != Computer Science.

      More accurately, a programmer is not necessarily a computer scientist any more than a computer scientist is necessarily a programmer. Neither is better or worse than the other, and both should know something about the other's skill set, but in practice, there are many amazing programmers who are poor computer scientists, and even more great computer scientists who are poor programmers.

      I would classify programmers as people who can get a computer to do what they want it to, and the measure of the skill of a programmer is how their code performs on some set of metrics (performance, reusability, readability, etc.)

      On the other hand, computer scientists are people who figure out what they can get a computer to do and how to do it. More often than not, these people work in research labs and in academia, and their measure of performance is how many (usefully) novel methods they've found of doing things or how many new things they've figured out they can make computers do. In most cases, aptitude in more advanced math does help computer scientists, although in some sub-fields, there is less dependency on this.

    6. Re:Computer Science without math... by itwerx · · Score: 1

      Incorrect. That is more of something that an electrical engineer or someone doing low-level programming will have to worry about. All the binary fun with xors, ands, ors, shifts, etc., are all unrelated to the sort of math of Alan Turing.

      Come back to the discussion once you understand what a Turing Machine is.


      As someone who's been in this industry for over twenty years in a wide range of positions and responsibilities consulting on well over a thousand projects for hundreds of companies of all sizes and industries, and knowing over a dozen programming languages, I feel I have the background to not only comment somewhat knowledgeably, but to do so in language that can be understood by most people, not just CompSci majors. I would recommend you re-read my parent post with a little more open-minded attitude... :)

    7. Re:Computer Science without math... by itwerx · · Score: 2, Funny

      Heh, not to reply to myself, but to reply to myself, this is the quote at the bottom of the page right now:

      "A word to the wise: a credentials dicksize war is usually a bad idea on the net." (David Parsons in c.o.l.development.system, about coding in C.)

      Rather apt I think!

    8. Re:Computer Science without math... by lysdexia · · Score: 1

      >>> howDoILoveThee = ['nekkid','clothed','here','away','angry','delight ed','flushed and sweaty','cold and angry']
      >>> print len(howDoILoveThee)
      8

      >>> aRose = 'Sweet'
      >>> bRose = 'Sweet'
      >>> aRose == bRose
      True
      >>>

      >>> thee = 'thee'
      >>> aSummersDay = 'thee'
      >>> thee == aSummersDay
      True
      >>>

      It's a lot easier in a dynamically-typed language, but it don't exactly trip off the tongue.

    9. Re:Computer Science without math... by chad.koehler · · Score: 1

      static const char* const totc = "It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness... "; #include int main() { std::cout totc std::endl; };

    10. Re:Computer Science without math... by chad.koehler · · Score: 1

      damn formatting arraaaghhh!!!!!

    11. Re:Computer Science without math... by Tablizer · · Score: 1

      You probably aren't programming anything that requires math. Try 3D graphics programming - you need a lot of linear algebra, and some calculus if ...

      But if you are doing a chemistry app then you need to know chemistry, and if you are doing a non-trivial financial app you need to know finance, etc. etc. In other words, "specialties exist". Nothing new there.

  12. So I am not alone by thomas.prebble · · Score: 1

    So I am not alone in questioning the maths side of things? Good. My major is computer science and let me say my maths is not strong but I have had no issues with any of my computer science papers. However when it comes to maths I am stuck, it's dry and does not relate anywhere to my degree that I can see. I've taken courses in algorithms, language theory, databases etc. and the majority of the work is not maths and if it is it's so obvious anyone can see it. To help gain experience I'm doing some part time work in the industry before I graduate and it comes up nowhere in that line of work either.

    1. Re:So I am not alone by nospam007 · · Score: 2, Insightful

      ... I've taken courses in algorithms, language theory, databases etc. and the majority of the work is not maths and if it is it's so obvious anyone can see it.
      --
      The majority of _your_ work might be.

    2. Re:So I am not alone by Anonymous Coward · · Score: 0

      I was just handed graphics problem by a colleague, who does not have a maths degree. He had spent a week of his time attempting to understand and write code that handled some 3D transformations. Within a day I had a working solution. Why? Because I understand linear algebra. Without that, you can quickly become lost in a sea of matrices.

      Yes, you can download a linear algebra class and watch it. But the point is you are learning maths. And no, i'm not saying i'm "smarter" than him. I just happen to have a maths degree and understand the problem space.

      This is simply 1 example.

    3. Re:So I am not alone by vidarh · · Score: 1

      Of course there are branches of CS where maths is absolutely required. However, his experience (and mine), is that there are so many parts of CS where you don't need much maths that maths is hardly a fundamental requirement for someone to do useful work in computer science. As such, it's worth questioning why so many CS programs are heavy on required maths courses.

    4. Re:So I am not alone by Anonymous Coward · · Score: 0

      one reason is that computer science is still such a new field that to ensure that you are going to be able to survive in the field for the 40 odd years of 'career' after graduating, you damn well have a good solid background in maths. as the world of computers change, the argument goes that you can adapt faster if you have a solid foundation in the underlying principles of the science of computer programming.

      at least this was the argument posited to me by the staff at CMU in the mid-eighties when they didn't even have an undergraduate degree in computer science. one was forced to take maths and concentrate in computer science.

  13. Depends by capt.Hij · · Score: 2, Insightful

    This is just another stupid generalization. There are some areas where you can do good computer science without math. There are other areas where you absolutely need mathematics. For example, you cannot do scientific computing without mathematics. Broad generalizations like this for a wide spread field just shows the ignorance/narrow mind of the author.

    1. Re:Depends by JAlexoi · · Score: 1

      >This is just another stupid generalization. There are some areas where you can do good computer science without math. There are
      > other areas where you absolutely need mathematics. For example, you cannot do scientific computing without mathematics. Broad
      > generalizations like this for a wide spread field just shows the ignorance/narrow mind of the author.

      Totally NOT.
      You could describe what do you mean by scientific computing?
      If you mean physics calculations and similar, than no the person(CS guy) has no need to know that science.
      It's the same as a programmer creating an accounting app does not need to have a BS in accounting.
      I am for sciences to stick to their nature, and CS has came out of mathematics and physics, but is not in essence mix of math + physics.

  14. Sadly mistaken by Rumagent · · Score: 2, Interesting

    Isn't that pretty much the same as arguing that a surgeon doesn't have to know about anatomy? What we do is inherently mathematical - there exists no other way of defining and understanding complexity, computability and so on.

    I agree that you do not need a good understanding of mathematics to create a homepage, but for anything remotely interesting you do.

    1. Re:Sadly mistaken by JAlexoi · · Score: 1

      No longer true. It's not the same as surgeon -> anatomy, its more like physicist -> philosophy (since physics was created by philosophy). So are all physicists excellent philosophers?

  15. Math not essential - Logic is! by DeadlyEmbrace · · Score: 5, Insightful

    I attained a Computer Science BS in 1986. At the time everyone was getting Math minors. I opted for a communication minor instead. I've worked in high-tech engineering environments with real-time programming for many years. What I found is that I've never needed the intense mathematics attained by those with math minors. I needed to be able to implement equations that staff mathmaticians would develop. Though math is a fundamental of computer science, I believe the ability to logically assess a situation from multiple perspectives; communicate your approach with the customer; and then implement a maintainable solution is the key components required for computer scientists.

    1. Re:Math not essential - Logic is! by Anonymous Coward · · Score: 0

      You're talking about computer engineering, not science...

    2. Re:Math not essential - Logic is! by Anonymous Coward · · Score: 0

      Hate to break it to you, but you're not a computer scientist. You're a programmer. The "staff mathmaticians" you speak of could probably claim to be computer scientists; most staff scientists at software companies can. To be a computer scientist, you must as a minimum develop algorithms as part of your job.

    3. Re:Math not essential - Logic is! by Anonymous Coward · · Score: 2, Insightful

      I also hate to break it to you, but logic is a part of mathematics.

      I think the problem is that people are completely ignorant about what mathematics is. In school you get taught sums a bit of trigonometry, quadratic equations and calculus. That is the extent of most people's exposure to mathematics but maths is much much broader than this and much more powerful and useful.

      However, given that you are just a programmer or software consultant, you are correct in saying that you don't need to worry your pretty little head about the bigger picture.

    4. Re:Math not essential - Logic is! by j0nb0y · · Score: 2, Insightful

      I think you're confusing software engineering with computer science.

      Math isn't important to software engineering, but it is of great importance to computer science.

      --
      If you had super powers, would you use them for good, or for awesome?
    5. Re:Math not essential - Logic is! by acidrain · · Score: 1

      For a second I thought you were going to mention boolean and predicate logic. You know like !(a && b) == (!a || !b). Something that seems sooo fundamental, and yet people without that kind of education take up programming all the time. Anyway I avoided math in university and then taught myself some very hardcore 3d data-structures on the job. And it wasn't so damn' boring that way. Although, I did have to hire a PHd mathematician and teach him software engineering just to balance out the team. It seems that even in a math intensive area you really only need one person translating white-papers into code or doing research for every four people doing architecture, optimization, integration and support.

      --
      -- http://thegirlorthecar.com funny dating game for guys
    6. Re:Math not essential - Logic is! by jrsumm · · Score: 2, Funny

      Good call on the communication minor... that's where the girls are.

    7. Re:Math not essential - Logic is! by Anonymous Coward · · Score: 0

      A danish university is actually picking up your point of view, and are offering a communications / CE education.

      www.itu.dk

    8. Re:Math not essential - Logic is! by Coryoth · · Score: 1

      There seems to be a great deal of confusion about mathematics, and I think it is easier to point out what mathematics is not than try and explain what it is. The important point, as you suggest, is that math is about structured reasoning; math is not just the endless array of facts and tidbits that they throw at you in high school math. It troubles me that so many people have been taught math so badly that they seem to not really even know what the subject really is.

    9. Re:Math not essential - Logic is! by Coryoth · · Score: 4, Insightful

      Math isn't important to software engineering, but it is of great importance to computer science. Math is important to software engineering, it's just that you can get by without it. However, if you want assurances of correctness then type theory and proof theory are actually rather important; if you want to do concurrency well then process algebras are a good way to do it right, and with assurances that you are getting it right. You can get by quite happily without these things. You can, however, do an even better job with them.
    10. Re:Math not essential - Logic is! by j0nb0y · · Score: 1

      Agreed. You can be a great software engineer without those things though. You just have to be aware that you can't do them, and make sure tasks involving them get assigned to the computer science guys that *can* do them.

      In my mind, computer science is about math and algorithms. Software engineering is about architecture, design patterns, code maintainability, and of course, project management.

      --
      If you had super powers, would you use them for good, or for awesome?
    11. Re:Math not essential - Logic is! by coolGuyZak · · Score: 1

      I hate to break it to you, but you are wrong.

    12. Re:Math not essential - Logic is! by jefu · · Score: 1

      Nonsense. Logic is a foundational part of mathematics and has been formalized (several ways) very carefully in terms that are more like mathematics than most anything else. Sure the philosophers claim a bit of logic as their own, but to the extent that anyone can reason about logic and determine what exactly it says (and does not say) it becomes mathematics. Take, for instance, Godel's proof. It is entirely about logic and logical systems, but is certainly mathematics.

    13. Re:Math not essential - Logic is! by slickwillie · · Score: 1

      I had a double major as an undergraduate - math and philosophy (heavy on logic). I then went on to get a master's in CS, and a career as a software engineer.

      I can't recall ever using anything beyond basic arithmetic, with maybe some occasional algebra to solve for a variable or two, during my career.

    14. Re:Math not essential - Logic is! by coolGuyZak · · Score: 1

      Logic is a foundational part of mathematics and has been formalized (several ways) very carefully in terms that are more like mathematics than most anything else.

      Once again, however, I do not claim that Logic is independent of mathematics, just that they are not equal. Several aspects of Logic are, at best, superfluous to mathematics. Take, for instance, the fallacies of argument. While many of them can be described mathematically, others cannot. As I said in the linked post, Mathematics may well be a subset of logic, but logic is not a subset of mathematics.

      For instance, take the process of induction. Mathematics provides tools that can be used to analyze a set, be it statistics, set theory, combinatorics, etc. However, mathematics ignores many aspects of induction, including its appropriate use, what is acceptable as inductive evidence, and if inductive reasoning is a valid mode of inference at all. Mathematics is involved merely with the formalization and process of induction. Thus, logically, mathematics doesn't encompass the discipline.

    15. Re:Math not essential - Logic is! by Ibag · · Score: 1

      I think that there is a misunderstanding of what computer science encompasses. We don't call the people who use physical principals to design products physicists, we call them engineers. Similarly, if you are a situation where you are developing solutions for customers, you are not doing computer science. That said, you are pretty much right. Most of the people who want to do computer science or software engineering don't need to know about the vast majority of what is covered in the standard mathematics major/minor. Indeed, a good CS program will have a math for computer scientists which briefly covers the basics of what they will need. In fact, with just a good sense of analytical reasoning, most people can pick up what they need as they go. However, that doesn't mean that they wouldn't be served well by a solid understanding of discrete math, linear algebra, and basic abstract algebra. Additionally, the skills you develop by taking challenging math classes go well beyond the details of the theorems you cover. And if you want to have any hope of designing a better algorithm or more efficient data structure, you need to be able to look at situations in a mathematical way. Also, don't forget that logic can roughly be defined as the intersection of math and philosophy (but that it is easier to understand what good logic is when you're not dealing with rhetoric and ill defined terms).

      So, you're right. If you're just implementing the things that mathematicians (or who I would call computer scientists) develop, then you don't necessarily need a strong mathematical background. However, you are also not doing computer science. You still might have benefited from more math classes, though, even if not directly.

    16. Re:Math not essential - Logic is! by Tablizer · · Score: 1

      However, if you want assurances of correctness then type theory

      As a fan of dynamic typing (or even "type free"), there is no evidence that strong-typed language are objectively better. None. It tends to require more coding, and more code to slog thru creates its own problems. That being said, the utility of it may depend on the type of application. No one tool or technique is universally the best for all situations.

      if you want to do concurrency well then process algebras are a good way to do it right

      In practice, I think one just needs to understand database A.C.I.D. well. Most concurrency in product apps is handled via ACID-based transactions. (Assuming it is not systems software we are talking about.)

    17. Re:Math not essential - Logic is! by Coryoth · · Score: 1

      Don't worry, I like dynamically typed languages too; each has their place. If you want assurances of correctness then strongly staticly typed are a good way to go, particularly if they actually have a good expressive type system (see Haskell or the ML family, or Coq, for example), are definitely the way to go. That doesn't mean you can't write correct code in a dynamically typed language as just easily as you can in a staticly typed one; it means you can't get the same assurance with regard to correctness as easily with type free languages.

    18. Re:Math not essential - Logic is! by Jagasian · · Score: 1

      Strongly statically typed languages tend to generate faster, more correct machine code. Thanks to type inference and soft typing, such languages also do not require more coding because types do not have to be written by the programmer (type inference) and type errors do not need to be worked around if the code is in fact correct (soft typing). In fact, soft typing demonstrates that the distinction between static and dynamic typing can be blurred.

      So on what grounds do you make the claim that strongly statically typed languages are not objectively better?

    19. Re:Math not essential - Logic is! by Tablizer · · Score: 1

      If you want assurances of correctness then strongly staticly typed are a good way to go

      No. Making the compiler happy and producing the right results (output) are not necessarily the same thing. Strong typing may result in the reduction *some* kinds of errors, but may make other kinds of errors more likely, because it bulks up the code size, making it harder to read.

    20. Re:Math not essential - Logic is! by Coryoth · · Score: 1

      I think we're talking about different things. A decently expressive type system provides checks for a lot of errors, and with things like type inference and higher order constructs your code size doesn't bloat as much as you seem to imply. If you experience with static types is C++ and Java then I can understand your concern. Static types are more than just that however. I strongly suggest you look further afield. As long as your type system is expressive enough to allow to actually express "producing the right results" then type correctness, while not a guarantee to of absolute correctness, provies strong assurance of a high degree of correctness. Again, it is not about being correct, it is about assurance.

    21. Re:Math not essential - Logic is! by Tablizer · · Score: 1

      I welcome you to open a blog or post on usenet and show practical code being significantly improved by it. Except for specific domains (not mine), I've yet to see an example of it helping much without bloatage.

    22. Re:Math not essential - Logic is! by Anonymous Coward · · Score: 0

      I think that computer science programs tend to focus on the Math at the expense of programming. It's not the math it's the programming that is more important. Computer Scientists don't solve math problems they program. Computer Science doesn't make people mathematicians and being a good mathematician doesn't make you a brilliant mathematician. It takes a genius to be a great mathematician something which only a minority are. Getting a major in math doesn't really make you a mathematician, it takes a graduate degree and maybe even a PHD before you really can say you have a strong grasp of math and qualify as a mathemetician.

      I know a computer science major who got a double major in Math and computer science. The Math major doesn't give you enough math to be a mathematician (It takes a graduate degree or PHD) and it also doesn't strengthen your programming skills like a graduate degree in Computer Science does. A math comp sci double major is better off getting an undergrad degree in comp sci and then a graduate degree in Computer Science. A really strong Computer Science program should emphasize the programming over the math since Computer Science is really programming with math. Some Universities don't distinguish this.

  16. He has no idea what math is by aleph+taw · · Score: 5, Insightful

    This guy just doesn't seem to understand what math is. Substituting theory of computation with his "theory of expressions" just shifts focus on another field of math.

    1. Re:He has no idea what math is by JAlexoi · · Score: 1

      > This guy just doesn't seem to understand what math is. Substituting theory of computation with his "theory of expressions" just
      > shifts focus on another field of math.

      Yeah... And biology is another field of chemistry, witch in it's own turn is another field of physics.
      Should I continue?
      In essence all sciences relate closely and some are "offsprings" of others.

    2. Re:He has no idea what math is by aleph+taw · · Score: 1

      >And biology is another field of chemistry, witch in it's own turn is another field of physics. >Should I continue? so what's your point? you are certainly not arguing to take chemistry out of biology, are you?

    3. Re:He has no idea what math is by aleph+taw · · Score: 1

      since my previous post got all messed up, here it is again in readable form:

      >And biology is another field of chemistry, witch in it's own turn is another field of physics.
      >Should I continue?

      so what's your point? you are certainly not arguing to take chemistry out of biology, are you?

    4. Re:He has no idea what math is by jbengt · · Score: 2, Funny

      1. Define the math of computer science as algorithms.
      2. Narrowly define algorithms so that they don't include all computer expressions.
      3. Proclaim that computer science doesn't need math.
      4. ????
      5. Profit!!

    5. Re:He has no idea what math is by alder · · Score: 1

      3. Proclaim that computer science doesn't need math.
      4. ????
      5. Profit!!
      Well, in this case step 4 is actually very well defined and can be expressed as a following series: 5,305,463, 5,664,212, 5,828,228, ...
  17. a growing trend by Anonymous Coward · · Score: 0

    I think the mathematical background was necessary as computers were created to solve maths related problems but computers have been used for more and more different things for a while now.
    Of course a minimal mathematical background will always be necessary, but apart from specialized fields (maths, computers graphics, ...), and with the advance in programming languages and frameworks, I think it is already happening
    Of course, I did not RTFA ;-)

  18. An example by Anonymous Coward · · Score: 0

    The difference between using math to solve a problem and using numerical techniques on a computer is seen in the space race. The Americans with computing power put men on the moon before the Soviets who had better rockets and math ability.

    1. Re:An example by WilliamSChips · · Score: 1

      No, the Soviets got everywhere else first. The Americans won because the Soviets randomly started killing all their scientists and we had stopped firing ours about a decade ago.

      --
      Please, for the good of Humanity, vote Obama.
  19. Test devices... by g0dsp33d · · Score: 1

    I actually remember hearing about a device similar to this principle of not using math... I believe they called it an Etch-a-Sketch.

    As much as I disliked math I don't really see how computing is possible without it. Perhaps using math as the proverbial hammer for computing has created some nails out of screws, but I can't imagine one could have any sort of computing without some level of math built in. The brain is probably the closest example I can think of, and I'm sure there is a lot of math involved somewhere behind the scenes (or certainly would need to be to replicate a brain electronically).

    --
    lol: You see no door there!
    1. Re:Test devices... by cuzco · · Score: 1
      There are many fundamental programming tools that don't require math above the level of addition, subtraction multiplication and division.

      For example:
      - Searching
      - Trees
      - Conditional tests
      - Program flow
      - etc...

      As for the brain, I think it's a virtual certainty that the brain doesn't use any math whatsoever. Where would mathematical knowlege reside? Neurons have no need for it, they communicate chemically and electrically. Brain chemicals have no need for math, they "communicate" by way of attraction, repulsion and exchange/sharing of elctrons. Atoms have no need of math as their interaction with their world is built in. Subatomic particles have no need of math for the same reasons. In fact, it's far more intriguing that the brain (and the world at large) accomplishes all that it does without any knowlege of (or need for) math at all.

      We've grown accustomed to using math to describe how parts of the world interrelate, but math is the map, not the territory and likely plays no role at all in the actual workings of brains, cells, molecules atoms, planets and stars. Taking programming "to the next level" may indeed require moving beyond mathematical understanding.

    2. Re:Test devices... by g0dsp33d · · Score: 1

      I grant you that higher math is not needed for many programming basics. But if you look at it in a more abstract way, there is no way you will program an office suite, a video game, etc without some higher math.

      As far as what the brain does, I don't think you, I, nor probably even the experts are certain how it functions. It's almost certainly not the binary math of a computer, but I'm willing to bet that there are chemical and electrical functions that act mathematically. If nothing else, I can at least think math, so there has to be some capability there.

      --
      lol: You see no door there!
    3. Re:Test devices... by jbengt · · Score: 1

      "There are many fundamental programming tools that don't require math above the level of addition, subtraction multiplication and division."

      And when you explore searching, trees, program flow, etc., and develop theories and algorithms about them, you are doing more advanced math.

  20. Wrong, on many levels by adamwright · · Score: 4, Insightful

    Mainly, he claims to want to create a "comprehensive theory of process expression". Fair enough, but as soon as you want to extract usable, reliable results from your "comprehensive theory", you've really just created a branch of mathematics. Maths is not just numbers and calculus, but any systematic treatment of relations in a symbolic fashion - unless he plans a lot of fairly useless hand waving, "Oh, my process is expressed as *insert long winded ambiguous English description", he will be working within the remit of mathematics. Heck, one of my areas of study is the development of processes (studied through the use of process calculi) - a highly mathematical tool.

    He also ignores the vast array of work on non-deterministic algorithms, stating that "Any program utilising random input to carry out its process, such...is not an algorithm". Sure, it's not a deterministic algorithm, but even if you artificially restrict your definition of algorithm to just be deterministic, it's a useful tool in analysing such problems.

    Finally, statements such as "Computer science does not need a theory of computation" are just so bizarre as to be funny. I suggest he forgets all he knows about formal computational theory, and I'll contract "Theseus Research" to write me a program to determine the halting problem for an arbitrary program. I wonder what his bid will be, given that he doesn't need a theory of computation (that would tell him you can't do it, at least with our models of computation - and probably with any).

    Now, all of this is not to say you can't make progress in computer science without the mathematics that's currently been developed - however, you will either spend a lot of time achieving unreliable results, be reinventing the wheel, or just be creating a new branch of mathematics.

    1. Re:Wrong, on many levels by acroyear · · Score: 1

      keep moding this up. i just read the summary and went "prolog, anyone?".

      Even if he manages to create the "expression language" required to program in his "expression" style, that still has to be implemented in an algorithmic form as an interpretation at *some* level, unless he's going to rebuild the computer from scratch at the very chip level and create his "expression" chip and "expression" motherboard and "expression" memory and "expression" bus and "expression" long-term storage.

      I'd love to know how his expression-based system is going to wait for the memory fetch to actually return before he can express something else.

      Truth is, in order to have his expression-based system work, things have to be instantaneous. They're not, and never will be. In effect, he's given me the impression he's spoiled on speed. We're fast, DAMN fast, but we're still ordered and the cpu is still waiting on stuff before it can make its next calculation and how to wait is an algorithmic process and always will be.

      otherwise, he's creating a very inefficient way to express himself.

      --
      "But remember, most lynch mobs aren't this nice." (H.Simpson)
      -- Joe
    2. Re:Wrong, on many levels by The+One+and+Only · · Score: 1

      He also ignores the vast array of work on non-deterministic algorithms, stating that "Any program utilising random input to carry out its process, such...is not an algorithm". Sure, it's not a deterministic algorithm...

      I always understood a deterministic system (algorithmic, physical, etc.) as being a system in which there is only one possible output for any given set of inputs--there is only one result state for any given set of initial conditions, in other words. Has computer science come up with a different definition of "determinism" all of a sudden?

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
  21. Without computers, maths... by mastermemorex · · Score: 2, Funny

    I ok. Let me see if I am able to solve the Navier Stokes equations for unstady flows without the help of a computer. And the Schrodinger equation using a tridimensional net?

    Buahhh! ha, ha!

    1. Re:Without computers, maths... by mastermemorex · · Score: 1

      Wait! I have a better idea!
      Lets express the Schrodinger equations with a Ricci tensor in a Riemann m-dimensional space in Visual Basic 6.0!

      No, sorry. Buahhh! ha, ha!

  22. Math is a subset of the bigger picture of ..... by 3seas · · Score: 4, Insightful

    ....Abstraction.

    And computer science, the software side, is really the science of abstraction physics.

    http://threeseas.net/abstraction_physics.html

    At some point in the higher levels of abstraction creation and use you use the lower mathematical level as more or less a carrier wave of the higher level abstraction, than for the purpose of performing a mathematical calculation. The analogy is that of using radio waves to carry the music you hear over the radio, but the carrier wave is discardedafter it has done it job. Likewise, the mathematics of computers boils down to binary flipping of transistor swiches upon which the higher level of mathematics is carried upon.

    With a correct approach to the abstraction manipulation machine computers really are, we can accomplish a lot more, similar to the difference between using the limitation of roman numerals in math vs. the decimal system with its zero place holder.

    1. Re:Math is a subset of the bigger picture of ..... by 3seas · · Score: 2, Informative

      What the short review seem to be saying is that the author recognizes its not just math.

      How in depth the book goes I do not know, but I do know I've been on about the abstraction perspective for near two decades and communicating it to everyone I can including to those in positions at universities.

      I have noticed these last few years there are others beginning to grasp the bigger picture, such as J. Wing of CMU and her "Computational Thinking" perspective http://www.cs.cmu.edu/computational_thinking.html perspective and another P. Denning of GMU and his "Great Principles of Computing" http://cs.gmu.edu/cne/pjd/GP/GP-site/welcome.html and I'm sure there are others.

      Now I see this short book review "Computer Science Reconsidered: The Invocation Model of Process Expression"...yet I have not seen from any of them software or even an outline of such, that anyone can use to explore and apply the presented perspective. And we all know that to really understand something as it applies to computers requires that actual use of a computer in the learning process for verification of understanding.

      So, here is mine http://threeseas.net/vicprint/Virtual_Interaction_ Configuration.html which the link I gave in the parent post points to.

      Its all about Abstraction Physics no matter how you present it or what you call it. The evidence is in the inability to avoid using the mentioned action constants set, with or without computers. Know what you do, in everything you do!

  23. Reading the article by HangingChad · · Score: 1

    It sounds like the author is suggesting it's time for computer science to evolve from an algorithm based system to process based. Doesn't seem all that controversial. Wouldn't that be the next logical step in the evolution of the computing machine?

    I don't think he's saying do away with math, sounds more like suggesting not to be limited by a mathematical computing model.

    --
    That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
  24. You don't need mathematics at all by Anonymous Coward · · Score: 0

    I'm very poor on mathematics and I never learn CS at all.
    I even never been on any university in my life.
    Still I'm very good programmer, I'm making good money, I'm getting a lot of job offers because people know that I'm better then many other and I can code faster and better then many other.

    To be a good programmer you just need to be good with logic skill and that's all.
    Well, mathematics is also pure logic but still you don't need to know mathematics at all to be a programmer.

    In real programming you just need to know AND,OR,XOR,NOT,0,1 and you have everything you need to build anything.

    1. Re:You don't need mathematics at all by Delkster · · Score: 1

      The article is about computer science, not programming, but even in the latter some idea of mathematics can be useful. In the former it clearly is.

      In some other parts of real programming you need to implement things whose idea is very difficult to construe or analyze without some kinds of mathematical methods. In other words, you need to implement nontrivial algorithms.

      Of course most code (at least when measured in lines of code) is actually more or less trivial in an algorithmic sense, but nontrivial algorithms, although not as abundant in most code, are still needed. Think about audio or video encoding and decoding, image processing, string processing such as text search (no, that's not really trivial to do efficiently either), or 3D graphics; all of that requires nontrivial algorithms, and someone has to implement the code. Understanding those algorithms and concepts may require some understanding of algorithms and mathematics; coming up with those algorithms in the first place certainly requires that.

      You may not have needed to work on things that require understanding mathematics but that doesn't mean nobody needs to do that.

  25. Yes and no by QX-Mat · · Score: 2, Interesting

    I feel that there are a lot of software engineering areas where you don't need much in the way of maths experience - just logical thinking. Most real world math related implementations I've done haven't relied on a high level of maths... linear interpolation and solving quadratics are probably as "tricky" as math goes outside of academia... but...

    That's not the end of it. I've also done a lot of image manipulation work, and you NEED a good math background when you step over simple 2d convolution filters. Knowing your physics also helps - being able to identify trends and patterns in wave forms, and then applying the necessary maths is a great help. When dging into aliasing and reconstruction now, not just filtering, a high math proficiency is a must.

    I've taken to game programming recently. If you know your maths, the physics comes easily. If you know your maths, specially advance vector and matrix theory (with integration and differentiation being prerequisites), things become a breeze. I didnt know enough. And I still struggled from time to time today. Experience is helping me, but sometimes I wish I had a math background to roll on.

    I guess my ramblings are leading to a poor conclusion. Without maths you're limited in what you can do - but you're only limited by lateral field... In most cases you can take an specific soft eng field and go to town without hitting maths. I'm a very good software engineering and reverser, and I gotten here without having a math background. When I wanted to expand into games programming and image processing, things became much harder without the math.

    With all that said, I'm very very guilty of obscuring simple procedures with valid but pointless math - and I know for a fact there's too much pointless formal theory in computer science now. The pointless formal theory is actually what push me away from doing a masters in computer science, and find something more vocational and rewarding!

    Matt

    1. Re:Yes and no by joel.neely · · Score: 1
      You seem to be making the common mistake of confusing numerical analysis with Mathematics.

      Regardless of the application area for your program, when you rewrite something like:

      if (!(a && b && c)) {...}

      into:

      if (!a || !b || !c) {...}

      you're using Mathematics (DeMorgan's Law from Boolean Algebra, to be precise). It's hard to imagine a competent programmer writing code for ANY purpose who wouldn't understand the relationships between the two fragments above.

      Mathematics (although usually the non-numerical flavor) is fundamental to programming.
    2. Re:Yes and no by sjf · · Score: 1

      Of course, the real computer scientist is the one who can explain why in this case, mathematics is not the same as computer science. These are not exactly the same. In many languages, the three arguments are not guaranteed to be evaluated in the first case, but they are in the second. This may be good and it may be bad: it may be good because the compiler can emit code that will abandon evaluation after the first false argumement. It might be bad because the programmer _expected_ all three arguments to be evaluated.(Evaluation may have side effects..consider the misuse of "operator&&" in C++) And, for Wirth's sake, don't do this in a preprocessor macro !

      On the otherhand, your general point is right. However, I understood the relationship, but I could not have named it as DeMorgan's Law.

      IANACS, but I play one in job interviews.

    3. Re:Yes and no by vidarh · · Score: 2, Insightful
      Any competent programmer will know how to do the above, but many will do it because they've either learned the basic truth tables and know how to apply them, or because they've learned the most common transformations by rote. They are "using maths" the same way a builder is "using physics" when putting in an RSJ to prop up a wall, or the way we're "using physics" when we depend on objects not suddenly floating into outer space.

      Whether that is a sensible way to look at things or not really depends on your viewpoint. I'd argue it's pointless.

      That you can explain something using maths doesn't mean that everyone thinks about maths or "use maths" in any conscious way when they do that something.

      I could do the transformation in your example before I'd ever heard of boolean algebra, and learned to spot it without having to think much more about it after having thought through it step by step a few times. My guess would be I figured it out at 7-8 years old based on what I remember of the complexity of my programming back then. I'd argue that I was/am not "using" DeMorgan's law, but just learned a pattern by rote that I understood due to language, not maths.

      If you still insist on calling it maths, then fine. But then the logical extension is to conclude that people complaining there is "too much maths" in CS are highly unlikely to be complaining about basic stuff like that, which people can/will figure out without any background in maths as/when neeeded.

    4. Re:Yes and no by vrt3 · · Score: 1
      I don't know what language you are thinking about, but in C and C++ the evaluation of the arguments is exactly the same in the two forms.

      If you don't believe me, run this small example:

      #include <stdio.h>
       
      int a(int i) { printf("a"); return i; }
      int b(int i) { printf("b"); return i; }
      int c(int i) { printf("c"); return i; }
       
      int main(void)
      {
          int i, j, k;
          for (i = 0; i < 2; ++i)
              for (j = 0; j < 2; ++j)
                  for (k = 0; k < 2; ++k)
                  {
                      printf("%d%d%d\t", i, j, k);
                      !(a(i) && b(j) && c(k));
                      printf("\t");
                      !a(i) || !b(j) || !c(k);
                      printf("\n");
                  }
          return 0;
      }
      Output:

      000 a a
      001 a a
      010 a a
      011 a a
      100 ab ab
      101 ab ab
      110 abc abc
      111 abc abc
      As you see, the same short-circuit evaluation in both cases.
      --
      This sig under construction. Please check back later.
    5. Re:Yes and no by Coryoth · · Score: 1

      ...you're using Mathematics (DeMorgan's Law from Boolean Algebra, to be precise). Actually it gets even more interesting than that. If you're willing to delve into the mathematical philosophy here, you can find proofs that DeMorgan's law (as a statement of pure logic) is, in fact, equiavlent to the pretty much purely mathematical statement "Every maximal ideal in a commutative ring is prime". What this really means is that, at a very deep and fundamental level, what we think of as "mathematics" and what we think of as "logic" are deeply intertwined, and in essence the same. Keep in mind, by the way, that the effort to show that mathematics is just logic (the logicism program of Frege and Russell) failed; ultimately Russell required axioms (most notably the axiom of infinity and the axiom of reducibility) that you really can't describe as fundamental laws of logic. Mathematics is not logic; rather it is more accurate to say that logic is just mathematics -- especially when you come to topos theory and local set theory which let you work in different logics within a mathematical framework.

      Of course none of this is likely of interest to the programmer who simply makes the required DeMorgan's law style transformation by rote without really understanding the underlying theory (is there a need to understand underlying theory to be able to apply it?), but then that only speaks to programming: to actually study and develop new ideas regarding such things does require understanding -- and that's CS research.

      Rather, if I was to point a programmer to mathematics that may well be worth learning and understanding for his day job, I would point to process algebra/calculi. To really understand and use those well it helps to have a decent grasp of abstract algebra. The benefit is that you cna reson about and write concurrent code far more easily. Alternatively, as more of a future investment, you might like to look into abstract algebra and category theory for the ongoing influence they are having in cutting edge type theory. The programming languages of the next decade may well make use of mch of this deep theory to provide far more powerful, expressive, and robust type systems.
  26. CS is not IT by Geoffreyerffoeg · · Score: 1

    You can be great at IT without knowing math. You can probably even be a good programmer.

    You cannot go anywhere in CS without knowing math, because (as the author himself admits) CS is merely a discipline of pure mathematics.

    This is rather like saying "Forget math to be a great stockbroker." You can start a Fortune 500 company from the ground up without knowing a cosine from a cosecant, but D. E. Shaw will never hire you.

  27. What if you grew them instead? by Colin+Smith · · Score: 2, Insightful

    Hmmm?

    --
    Deleted
    1. Re:What if you grew them instead? by jawtheshark · · Score: 1

      Actually, I think the author of the article grew some stuff himself, and it wasn't a filesystem or a kernel. Okay, he planted kernels, so that he could see pretty colours after smoking the dried remains of the female flowers....

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    2. Re:What if you grew them instead? by White+Flame · · Score: 1

      Then you'd expect them to make mistakes, lose data, break things, forget how to do stuff, try stuff that doesn't work and botch things up, just like untrained humans do when trying to grow their knowledge of an unknown. There are certain processes that we want to be ultimately reliable in following protocol, granting exception for catastrophic hardware failures and such. In these cases where behavior protocol is defined, a learning system is generally inferior.

      Also, retraining is an issue. If you do not have high-level conceptual communication with the entity in question, you cannot state changes to the expected protocol. You'd need to go through another indeterminate "growth cycle", hoping your training set and fitness evaluation are meaningful (take courses, degrees, and certs as a timely example for the case of humans) as opposed to systems based on organized business rules, encapsulation, and such. I'm not saying that learning systems are useless, but the examples that the GP listed are very protocol based.

  28. It's computer SCIENCE by Mr.+Underbridge · · Score: 1

    Can you really do computer science well without mathematics?

    You can't do computer SCIENCE at all without the math. You might do some software engineering. Without understanding phenomena that underly the principles you're studying, there is no science. Namely, without any study of algorithms, what's left in the major that anyone would actually call science?

    I honestly don't understand the whining. To get the ACM-approved CS major, you end up basically having to get a minor in math, which will generally require a few classes in Calc, a Linear Algebra course, a Discrete Math course, and maybe two others. It's really not that hard.

  29. Idiotic. by A+beautiful+mind · · Score: 1

    Computer science IS applied mathematics at it's fundamental level.You can try to forget about it as a user, but never as a programmer, much the less as a computer scientist.

    There is a reason why my MSc in Computer Science involved the third most mathematics education after applied mathematicians and physicists.

    --
    It takes a man to suffer ignorance and smile
    Be yourself no matter what they say
    1. Re:Idiotic. by A+beautiful+mind · · Score: 1

      There is a reason why my MSc in Computer Science involved the third most mathematics education after applied mathematicians and physicists.
      Talk about not previewing properly. The sentence I intended to write was:

      There is a reason why my MSc in Computer Science involved receiving the third most mathematics education available in my country after applied mathematicians and physicists.
      --
      It takes a man to suffer ignorance and smile
      Be yourself no matter what they say
    2. Re:Idiotic. by vidarh · · Score: 2, Insightful
      I "forget" about it on a regular basis. Almost none of the software engineering work I've done over the last 12 years, or the hobby programming I did for another 15 before that have required much maths beyond basic boolean algebra, some understanding of computational complexity, and assorted other stuff that's mostly been at most at high school level.

      I started programming at 5 - boolean algebra was the first maths I learned, because it flowed naturally from learning programming, though it took a few years before I knew it had a name. But really, boolean algebra is just logic with symbols.

      You mention programmers/software engineers and computer scientists spearately, and you're right to. The two have about as much in common as a builder and an architect - they'll share some vocabulary and some understanding of methods, but what they need to do their jobs are vastly different.

      I enjoy reading CS research papers, and I have an interest in some subsets of CS - particularly compiler design - but I don't particularly enjoy maths, and tend to avoid maths heavy papers simply because my interest in CS is a hobby and maths heavy papers take more effort (and in compiler design you need very little maths apart from some very basic graph theory anyway - when people write maths heavy papers on compiler design, then to me it tends to be a sign they don't understand what they are writing about well enough to explain it plainly - so far I've seen very few exceptions to that).

      But ultimately CS isn't my career - software engineering IS. The two are different fields, and it's time people actually realize that... More importantly, it's time more schools realize that, and start offering differentiated computer science and software engineering degrees.

      Someone with an MSc or even PhD in Computer Science can easily be useless as software engineers. You wouldn't expect an architect to be able to step right into the job of a builder, after all, and you'd be skeptical about the choices of someone who picked an education as an architect if they wanted to become a builder. I've had to deal with my share of highly educated "software engineers", and frankly none of the best software engineers who have worked for me have had anything above a BSc in CS, and many of them had no degree or unrelated degrees that gave them a good appreciation of the specific domain they developer software for, whereas very few of the people I've hired with MSc's and PhD's in CS have done particularly well (there are the odd exception) - it's marked enough that I've gotten to the point that a MSc or PhD in CS is a warning sign that cause me to probe actual engineering skills a lot more thoroughly, as well as asking some pointed questions about what drove them to pursue their degrees and why they subsequently went into software engineering.

      But even in CS, the extent of maths you need depends massively on what your focus is. As I mentioned, compiler design rarely need to use much maths (some people do, but not because it's necessary - people like different tools), and a lot of other areas use only some small subset or other of maths.

      I hardly took any maths at university, and it's rare for me to come across CS papers even outside of compiler/programming language design that I'd have any problems following due to the maths content. What maths content there tends to be is most often limited enough for context alone to be sufficient to get most of it. When I do run into problems, I can usually easily find papers that have no problems expressing the same information without much maths, which signals that it's very much a communications issue rather than something inherent to the problem. The cases where the maths is so integral to the message that it actually makes much difference apart from reducing the potential audience is very limited.

      Unnecessary use of maths in CS papers is one of my pet peeves. I'm not advocating "dumbing down" research, but scientists that use "big words" when there is no reas

    3. Re:Idiotic. by prockcore · · Score: 1

      I "forget" about it on a regular basis. Almost none of the software engineering work I've done over the last 12 years, or the hobby programming I did for another 15 before that have required much maths beyond basic boolean algebra, some understanding of computational complexity, and assorted other stuff that's mostly been at most at high school level.


      This reminds me of something I saw a while ago. The university created some "Applied Mathematics" courses that were basically CSc courses for math majors. I took one for my math minor.

      The professor had asked students how you would draw a circle. Practically everyone in the course had said X^2+Y^2=R^2. The professor responded, "yes, that is the equation for a circle.. but how would you tell a computer to draw one?"

      The problem is that traditional math courses don't teach iteration. The very way math is taught is a hindrance to computer science. The math students get stuck on the equation of a circle, they know for a fact that it's the only way to represent a circle mathematically, so it must be the answer... but how do you turn that equation into an iterative solution?

      It would never occur to them that drawing a circle is as easy as rotating one point.
    4. Re:Idiotic. by the+eric+conspiracy · · Score: 1

      Traditional math courses do not teach iteration? What do you think long division is? Or addition of multiple numbers? Or multiplication of two 6 digit numbers? These are all iterative processes that are at the root of our mathematics education. When you advance a bit then you get solutions of sets of simultaneous equations, or calculations of Fibonacci or factorials. If you that a course in basic statistics calculations are riddled with iterations.

      I have to wonder how anyone who passed a course in math would say such a thing.

  30. Knuth - nuff said by helfen · · Score: 1

    Just look at any Knuth book (well "The art of computer programming" would be suitable). You can't separate mathematics from computer science. Geez - crypthography, all numerical algoritms are math.

    1. Re:Knuth - nuff said by TheRaven64 · · Score: 1

      I'd love to lock the author of this book in a room with Knuth for ten minutes. My money's on Knuth, unless his brain explodes from exposure to such a high level of idiocy.

      --
      I am TheRaven on Soylent News
  31. without maths... by mastermemorex · · Score: 1

    Physics without maths is called philosophy. Philosophy without physics is called theology. Where the only true is called G. Computers without maths are a TV screen. A player without a screen is a windows machine. Were the only true is called B. Wait a moment! ... Profit!

    1. Re:without maths... by Anonymous Coward · · Score: 0

      More total nonsense.

      Philosophy is reasoning without science. You still need mathatics (logic) to be able to reason. What is missing in philosophy is testable hypothesis (science) NOT mathematics! Theology is a sub field of philosophy relating to people's religious belief systems and the (often faulty) reasoning that people put behind them.

      Once you take Philosophy and add testable hypothesis then we get science. Philosophy underpins science (ever wondered what PhD stands for?). Unfortunately, Philosophy has been belittled in modern culture as part of the ongoing campaign to undermine science.

      Fortunately this is a campaign which benefits everyone: politicians, religious leaders and fundamentalists who do not want people to see through their false logic and arguments, school kids who find math and science too difficult, tired and lazy managers and senior engineers who do not want their staff or their superiors to see through their technical incompetance, advertisers who want to be able to easily convince you to buy stuff. After all, ignorance make the world go round.

      PS. You only have to read slashdot for ten minutes to see what happens when people's basic ability to reason is undermined.

  32. Teh Maths by ShakaUVM · · Score: 4, Insightful

    This is something I've thought a lot about. There have been any number of times that math has helped me in my software development efforts. Things like trig to predict the path of a moving target in Robowars (back when I was in high school) to various vector and angle related maths in CustomTF for Quake 1 (www.customtf.com) to partial derivatives to calculate the slope on a surface. I've also needed math for various economics related things over the years, and probability and statistics have also been exceptionally useful to me. Currently I'm having to decipher a guy's code which is all eigenmath, so my linear algebra course is saving me from having to hire someone just to explain all the math to me.

    But the kicker is that you can't just tell a student that they should "study vector math" because one day they'll write a Quake Mod, because, truth be told, they probably won't. It's the trouble with all examples you give when students ask how math will be useful -- I could pull any number of examples from my life, but the problem is, they probably won't happen in a student's life. Instead, they'll have their own trials. The best you can tell someone is to study all the math they can, because some day it *might* be useful, and they'll want to have that tool in their toolkit.

    And that's just not a very satisfying answer to students who want to make sure that they'll be damn well using what you're teaching in the future.

    But believe me, I thought I'd never have an application for eigenvectors, and now not only do I have to clean out my brain on the topic, but I have to parse someone else's code (PhD thesis code no less) and add functionality to it. Two other friends of mine got stuck on legacy Fortran apps which are essentially mathematical solvers (one for differential equations, the other for huge linear algebra problems), and both of them are extremely happy they paid attention in their respective math classes.

    So, yeah. To CSE students out there: take math. Pay attention. It could very well save your neck some day at a job, and if it doesn't, at least try to make it interesting to yourself to think of applications where you might use them. All math through the first two years in college can find applications for it quite easily.

    1. Re:Teh Maths by Targon · · Score: 2, Insightful

      You could say then, that math is used in so many different areas in life, that it is foolish to try to ignore it.

      On the subject at hand though, the real key to why math is needed in Computer Science is due to the analytical nature of the subject. If you do not know how to solve problems, then you will hit many dead-ends in Computer Science. Math isn't just about solving mathematical problems, it is about looking at a problem and working out a solution. Computer Science is about looking at a problem and working out a solution.

      So, you can take the math out of Computer Science, but the training that you get from learning how to solve math problems can be applied directly to computer science. As a major, Computer Science is or should be as much about how to come up with solutions as it is about knowing how to do this and that.

      So, you can have one person who takes the same computer subjects as a computer science major, but the computer science major will tend to be able to figure out how to break a problem down better due to the math that is a part of the requirements of the major.

  33. Depends on the brand by countach44 · · Score: 0

    I think he means without calculus based mathematics. Discrete mathematics has obvious applications to computing, there are, of course some cases when you may need calculus (experience with power series may help to solve a recurrence relation, for example). But overall, computer scientists really don't need differential calculus or above (in general). I mean, ask a CS person the last time they needed to solve a differential equation or take a line integral. If anything, their answer would be when they took physics (if they had to take anything above general mechanics), which again, doesn't make a whole heap of sense.

    1. Re:Depends on the brand by QuoteMstr · · Score: 1

      You're right, but maybe there's an argument that exposure to higher mathematics encourages the mind to think in a more analytical way, and that method of thinking might have applications to computer science and program design.

  34. Re:wahay! by smilindog2000 · · Score: 5, Interesting

    I sometimes run into great algorithm programmers who were poor at math, but they're rare, and usually can be explained away based on what kind of drugs they did in college. For a good algorithms guy, I love hiring good mathematicians and physicists. You can train them into great programmers a lot quicker than the other way around. However, algorithms are really a very small part of the programming space we work in. I choose to work in this space because it suits me, but most programmers never need calculus. To build a tree-based data structure and a GUI to drive it takes about an 8th grade level of knowledge. Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys).

    The summary of the author's points in the article make the book sound dead wrong on several counts, though it could just be the review. Procedural languages are the natural way to code most programs, and here's why: we've been recording recipes as a sequence of steps, with if statements and loops, since the invention of writing. It's become encoded in our genes. That's really all that early computer scientists put in our early languages like FORTRAN. It's all the stuff we've added since then that's up for debate, in my mind. The author makes money by pushing the boundaries of computing model research. I get big programs written by teams by restricting what language features are used, and how. I'd be interesting to debate the ideas, point by point.

    --
    Beer is proof that God loves us, and wants us to be happy.
  35. Thanks for the quick review by DynaSoar · · Score: 1

    He can try as hard as he wants to create CS without math, but when he comes up with something usable, even if it's written in words, it'll describe a process that could be stated clearer and shorter with math. And if he doesn't state it with math those that know better won't pay him any attention.

    Boole's framework for describing logical processes is math. That's why it's called Boolean algebra. Try to do CS without that.

    --
    "I may be synthetic, but I'm not stupid." -- Bishop 341-B
    1. Re:Thanks for the quick review by neillewis · · Score: 1

      His big idea seems to be that extending Boolean logic with a third value, of NULL, allows it to be more expressive and allows processes to be handled purely in relational logic rather than by rule-based algorithms. I can see there could be advantages for certain applications. I'd like to see a good example of the benefits.

      http://www.theseusresearch.com/NCLPaper01.htm

    2. Re:Thanks for the quick review by QuoteMstr · · Score: 1

      *sigh* More wasteful reshuffling of old ideas:

      See http://en.wikipedia.org/wiki/Ternary_logic

    3. Re:Thanks for the quick review by Bake · · Score: 1

      ...extending Boolean logic with a third value...

      Sorry, that has already been done: http://worsethanfailure.com/Articles/What_Is_Truth _0x3f_.aspx.

  36. What a twit. by Anonymous Coward · · Score: 0

    You can reinvent the wheel of course, and you will have to if you shun math, but what you will do will still be math even if you call it by a different name. Computer science without math is like architecture without statics.

  37. Computing: Art or Science by dragonrouge · · Score: 0

    I think that today it could be argued that developement of computer software and hardware is as much dependent on the developers imagination and understanding of how people interact with computers and each other. This would put computer developement in the field of art rather than science. Computers are definetly out of the lab and they are not going back. Mathematicians are surely needed but I would think there should be room for people with knowledge of linguistics and why not psychologists (possibly to help us away from our computers). A few designers would help

  38. Actually, the author does not say that. by master_p · · Score: 1

    The author says that there are certain things within a computer that should not be modeled as algorithms due to their purpose and complexity. I partially agree with him: in some cases, the point of interest is not algorithms but how the process evolves to reach the desired goal.

  39. Logic by headkase · · Score: 1

    And abstraction is a facet of logic. The challenge facing most programmers is how to represent their logic and environments/apis in a matter that successfully performs the desired task. Representations can range from simple to complex and the challenge is finding one that efficiently and effectively solves the problem at hand.
    As an example, take First-order logic with it's classical statement of:
    All men are mortal.
    Socrates is a man.
    Therefore Socrates is mortal.
    For this situation I tend to look at it as a form of simplistic Venn diagram. It could be interpreted in a set theory way of:
    A circle (mortal)
    inside that circle: (man)
    inside that circle: (Socrates)
    So writing a program that deduces that Socrates is mortal is simply a matter of following the links from socrates through all the containers/super-sets until you reach mortal or the top level.

    --
    Shh.
  40. Computer science uses math because of requirements by Morty · · Score: 1

    Computing is driven by requirements -- we want a program or system that does X, and it needs to do it in total time Y, cost less than Z, and respond to operator input in less than W milliseconds. This in turn drives us to design programs, OSs, drivers, and systems that run "quickly" and consume resources such as RAM and disk space within certain limits. To meet this requirements, we need to quantitatively measure the performance of hardware and code to determine time and resource consumption. The tools with which we do this require mathematics. So computing inherently needs math to analyze potential solutions against qualitative requirements. This is pervasive at all levels of CS, whether it's a logic path that needs to complete a calculation before a clock cycle deadline, a sort that needs to complete in a reasonable amount of time, a network transfer that needs to deal with latency and bandwidth constraints, an OS that needs to grab data off a disk as quickly and fairly as possible to meet the various demands of running programs, or a user interface that needs to respond to user input in a timely manner while creating a DVD image.

    There are also plenty of areas of CS that are even more fundamentally mathematical in nature. Network dynamic routing protocols don't work without various graph-related algorithms. Cryptography leans heavily on number theory. Sets/relations revolutionized databases. It's hard to imagine these advances in CS occurring without the strong connection between CS and mathematics.

    That said, articles are notoriously bad at summarizing books. After all, if the book could be meaningfully summarized in a few paragraphs, the book wouldn't have been published; instead, the author would have just written an article to begin with. Certainly, there are aspects of computing that are heavily abstracted away from CS's mathematical underpinnings -- for example, non-modal application user interfaces, usability, software engineering techniques, and access controls. Perhaps this guy has a method for describing computer systems that makes it easier to think about these problems. Or perhaps not -- even if he has a "new model," if it doesn't make it easier to solve problems in CS, it's not particularly useful. Hard to tell without more detail.

  41. Binary by Anonymous Coward · · Score: 0

    Computers work by ones and zeros - true and false - an electrial expression... There would need to be a significant change in the way computers work in order to program them in a non-mathematical way.What would we use instead in binary? Alphabetical soup?

  42. Meaningless by sjhs · · Score: 0

    I agree with what many have said above. It appears that the author doesn't really know what computer science is--it is the study of the theory of computation. As such, it is entirely reasonable if not necessary to describe characteristics of computation (complexity of algorithms etc.) mathematically. As for 'process expression' versus 'algorithm', he seems to be splitting hairs just to make an (unconsequential) point. It's not like a theory of 'process expression' isn't already a large part of CS, it's just not the only large part. (And for the record, I *do* hope that my operating system is able to terminate, and cleanly too ;-P). I think either this is a marketing ploy to get his company's name in the news, or he is just sore about getting bad grades in his math classes.

    I wonder how Fant will manage to describe his new theory of 'process expression' without using any mathematics.

  43. Modern Programming is closer to Linguistics by ryber · · Score: 1

    I've been in programming business applications for over 7 years and I can you that I use little to no mathematics above high-school algebra. The fact is programming languages themselves require very little math. The math comes from what your programming "about".

    Programming is much closer to the study of linguistics. They are programming LANGUAGES after all. They have subjects and verbs and modifying expressions. Putting a logical line of code together is no different from formatting a sentence in another language. Just look at modern languages like Ruby and Python, where's the math?

    1. Re:Modern Programming is closer to Linguistics by Dogtanian · · Score: 1

      Most people would say that what you're discussing is software engineering, not computer science.

      --
      "Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
    2. Re:Modern Programming is closer to Linguistics by Eli+Gottlieb · · Score: 1

      Actually, the study of programming languages draws heavily on the linguistic theory of formal languages.

  44. Missing The Point...Sigh by Anonymous Coward · · Score: 0

    An algorithm is not an expression of the process. As an example, try using an algorithm to obtain a software patent. An algorithm is an abstract representation of the process, but only the actual process can obtain a patent.

    In the case of a piece of software, the process is the effect it has on the processor's switches and logic gates in a physical sense. This is something an algorithm does not show you, hence, it does not present the basic requirements needed to obtain a patent (i.e. the actual process).

    Thus, you require a new system that provides an expression of the process. 'Process expression' maps what is going on at in a physical sense (i.e. the actual process). The actual process has no mathematics, or logic, its just follows circuit paths, switch states, etc.

    Using an algorithm to patent a piece of software, is about as useful as using a burger to inflate your tyres.

    Such patents are worthless.

    1. Re:Missing The Point...Sigh by mmc_DeepT · · Score: 1

      Explains a lot.

    2. Re:Missing The Point...Sigh by ThosLives · · Score: 1

      Hrm. It seems to me that, based on what you said, that algorithims are a type of process expression. I think the author of TFA is saying that's too limiting because it only gives a single method to solve a problem. Yeah, that sounds annoying, but it's great for provability: if there is only a single way, you can prove that it will or will not give the desired result.

      I'd also contest his argument that operating systems are not deterministic - they are, just with a huge amount of state information; I think the trick is they are deterministic between changes in input state. You don't complain that a car's behavior is "not deterministic" because you don't know the way a driver will turn the steering wheel at any given time; you know that, given a steering wheel input, the response of the car will be X and can then predict the vehicle behavior until the next input from either the driver or another vehicle or a wall or the road or whatever.

      In other words, I think the article is about just making sure that we can think about things in different ways. But to say that it's not based on math - I don't know. Can it be done without math? Probably, just as cooking is most often done without even a cursory knowledge of atomic chemistry (you could probably argue that cooking is its own branch of chemistry).

      So, I think it's a lot of noise about stuff that people already know and already practice but for which there just isn't a label.

      --
      "There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
    3. Re:Missing The Point...Sigh by mmc_DeepT · · Score: 1

      Hrm. It seems to me that, based on what you said, that algorithims are a type of process expression. An abstract representation. It does not reflect the physical process (i.e. switching of circuits, etc.). An algorithm is independent of the architecture, whereas the process is dependent on the architecture.

      I'd also contest his argument that operating systems are not deterministic - they are, just with a huge amount of state information; I think the trick is they are deterministic between changes in input state. Given that they must rely on input of a random nature (i.e. from a human source), determinism depends on your point of view. From the view of expressing the process, it depends on the input provided as this determines the next stage of processing.

      But to say that it's not based on math - I don't know. Can it be done without math? Probably, just as cooking is most often done without even a cursory knowledge of atomic chemistry (you could probably argue that cooking is its own branch of chemistry). I would agree.

      So, I think it's a lot of noise about stuff that people already know and already practice but for which there just isn't a label. I feel that it will have an impact on patents, by more clearly showing the difference between algorithm and the actual process performed by a machine. This will highlight the fact that patents have been granted to software without fulfiling basic legal requirements. It may also show that that form of IP belongs to the designer of the processor and associate electronics.
  45. Thats correct by halplus00 · · Score: 1

    Math is based on computer science. Not computer science in math. Math is a subset of computer science.

    1. Re:Thats correct by SEMW · · Score: 1

      Math is based on computer science. Not computer science in math. Math is a subset of computer science.
      [The scene: around 500 BC. A boat in the Ionian sea, just off the shore of Greece.]

      Pythagoras: Welcome, my fellow Pythagoreans! Since we last met, what news?
      Hippasus: Pythagoras, I have made a new discovery in the field of mathematika: you know that we thought that all lengths are expressable as the ratio of two integers? We were wrong: I have constructed a proof that the length of a line connecting two opposite corners of a unit square cannot be so represented!
      Pythagoras: What? Impossible! It is heresy to say so!
      Hippasus: b--but I have the proof! Look at it!
      Pythagoras: Don't be foolish! [turns to his Macbook pro and starts typing furiously] Hah! Look, I've just calculated it, and the decimal expansion clearly terminates!
      Hippasus: But -- But of course it terminates, you're using floats! They can never be accurate enough to represent the an irrational number.
      Pythagoras: Ah, but I'm using double-precision.
      Hippasus: Yes, but--
      Pythagoras: Double. Precision. [stares at Hippasus]
      Hippasus: ...
      Pythagoras: [To the rest of his followers] Throw him overboard!
      [They do so]

      finis


      --
      What's purple and commutes? An Abelian grape.
  46. Anti-Intellectualism by QuoteMstr · · Score: 3, Insightful

    Algorithms exist whether you think about them or not, but if you don't think about them, you'll accidentally create terrible ones.

    Just as few telescope makers are astrophysicists, most programmers aren't computer scientists. The author himself is evidently not one. Instead, he is one of the more vocal members of an angry, ignorant mob trying to burn down the edifice of computer science. Its members do not understand it, so they fear it and try to destroy it --- look what's happened to computer science at universities!

    It was bad enough when courses about a programming language replaced ones about algorithms and data structures (I'm looking at you, Java and D-flat). It was bad enough when pure profit became the raison d'etre of computer science departments. It was bad enough when I noticed my peers start to joke about how they didn't care about this "maths bullshit" and just wanted to earn more money. It was bad enough when the object, not the bit, became the fundamental unit of information.

    But what this author advocates is still worse. He's proposing that we replace the study of computer science with a vocational programming, and call that emaciated husk "computer science." We already have a "theory of process expression", and that's the rigorous of algorithms and data structures. We've constructed that over the past 50-odd years, and it's served us quite well.

    That field has given us not only staples, like A* pathfinding, but a whole vocabulary with which we can talk about algorithms -- how do you say that a scheduler is O(log N) the number of processes except to, well, say it's O(log N)? You can't talk about computer science without talking about algorithms.

    The author's fearful denunciation of algorithms is only one manifestation of the anti-intellectualism that's sweeping computer science. "We don't need to understand the underpinnings of how things work", the angry mob chants, "but only implement the right interfaces and everything will happen automatically."

    The members of this angry mob sometimes manage to cobble something of a program together, but it's more like a huge rock pile than a colonnade. It often barely works, uses too much memory, doesn't handle corner cases, and is likely to crash. (See worsethanfailure.com.) Members of this mob even think that if the same algorithm is expressed in two different languages, it's two different processes. People like this ask painful questions like, "i know quicksort in C# but can someone teach it to me in PHP?"

    Argh.

    Even "new" developments in programming are just new claptraps for old ideas, with fashions that come and go over the years. The only really new things are algorithms, and increasingly, we're calling people who couldn't independently create bubble sort "computer scientists." It's ridiculous. Call computer science what it is, and create a separate label and department for people who can program, but not discover new things.

    It's this idea that one doesn't need to understand or think to be successful that's at the center of the article, and it's not just affecting computer science. Look around you. I wonder whether we'll fall into an old science fiction cliché and regress so far that we are unable to understand or recreate the technology of our ancestors.

    1. Re:Anti-Intellectualism by Arapahoe+Moe · · Score: 0, Troll

      It has been quite some time since I've seen such an pretentious verbalization of word vomit. Please continue with your number worship, Pythagoras, and stop trying to be Shakespeare because, to put it mildly, your editorial musings are shit.

    2. Re:Anti-Intellectualism by alba7 · · Score: 0

      Old-school mathematicians uses Fortran 77 because they can't
      be bothered to learn the overhead of a fashion language, e.g. C.

      Avantgarde mathematicians use Lisp or some other functional
      language because it heightens the mind. If it's to slow then
      it's all the IT crowd's fault. If machines report something
      about insufficient memory then it's all the hardware crowd's
      fault. And if marketing says that it's so damn tough to sell
      an application whose complete user interface consists of
      definitions in source code, well that's the fault of modern
      day teachers.

      By the way, modern day mathematician use Mathematica and have
      no fucking clue what they are doing.

      --
      Post tenebras lux. Post fenestras tux.
    3. Re:Anti-Intellectualism by QuoteMstr · · Score: 1

      *shrug*

      You could have tried criticizing the argument I made. You could also have stopped reading, or even modded the comment down.

      Though judging by your comment history, it seems that you prefer to foam at the mouth.

    4. Re:Anti-Intellectualism by Arapahoe+Moe · · Score: 0, Troll
      I used the literary device of allusion to criticize your exaltation of mathematics and your defiant elitism. However, this is Slashdot and I probably should have just called you names ....

      .... but since you asked for it. The "ignorant mob" says take your elitist nonsense and shove it up your ass.

    5. Re:Anti-Intellectualism by Foolicious · · Score: 1

      Not to jump in the way of someone else's argument, but mod points aren't always available when you'd like to use them. And there isn't a mod for "masturbatory", either.

      Thing is, I agree with your points, but not really the manner in which you've delivered them. The dumbing down of society isn't limited to computer science (look at the way people write, for example), but when bringing this to people's attention, there's always the risk that your argument will come out in a sort of "I'm-so-smart-and-I-and-my-ideas-add-so-much-value -to-this-earth-...-why-can't everyone-just-see-and-do-things-like-I-do" way. I think that's how some folks would interpret your comment.

      Secondly, I feel, after reading your comment, as if you're indicating that everyone must be an expert at something in order to be able to utilize that something in a practical fashion, which moves the argument beyond supporting the growth of intellectual qualities in any scientific field and into little more than an elitist club of balding, very intelligent guys that don't have wives or girlfriends, but still vehemently insist they do on slashdot.

      To use a decent -- but not great -- analogy, I am glad that I don't need to have 15 years of training to do the trim work on my house. Could a master craftsman do the work better? Yeah. Much better. But that would also cost me a lot more money. I've got tools now that make it easier for a simple DIYer to do the work, and I can do the work to the level that someone that would buy a house in my price range would expect. So am I going to say there's no need for master craftsman anymore, that the expert details they learn only by doing things for years, need not be taught? No. But I'm also not going to say everyone needs to be taught those details if they want to be involved in similar types of projects.

      There's value in both breadth and depth of knowledge. It's not like it's mutually exclusive.

      --
      Please don't use "umm" or "err" or "erm".
    6. Re:Anti-Intellectualism by dblyth · · Score: 1

      You're right on the point. Take the math/science out of Computer Science and you end up with 98% of all of the examples posted to http://worsethanfailure.com/ -- people writing solutions purely to convert inputs to outputs without any thought put in to doing it the best/easiest/cleanest/most extensible/etc.

    7. Re:Anti-Intellectualism by QuoteMstr · · Score: 1

      Yeah, I should have been less bombastic there. Chalk it up to indignation and sleep deprivation. :-)

      That said, I'm not arguing that there should be no DIYers either -- but that if you go to school to be a master craftsman, the school should teach you how to be one, instead of just teaching you to get some paint from Home Depot and slap it on a piece of plywood.

      If you want to hire a DIY guy off the street for $50, great. If you want to hire a master craftsmen, great. If you go to school to be a master craftsman, you should be taught to be one regardless of the difficulty, and that you should care about your work.

    8. Re:Anti-Intellectualism by Foolicious · · Score: 1

      I'm a bit defensive on this one, too -- because I have a BA (not a BS) and work in an industry where there are many with formal CS or Math/Engineering degrees, obtained during a time period when math was indeed the focus -- and yet I don't find them particularly skilled or effective at the type of work that we need to do. They understand a lot more of math than I, but many are poor communicators, lack business savvy, are poor teachers and are terrible overthinkers. Maybe there needs to be new types of differentiation while earning a degree of the types of ways you intend to use that degree, which could determine different "tracks" you could take, similar to how many Communications departments function (mass communications, interpersonal, rhetoric, etc). I do use "maths" (hate that word), but I find those things I learned for my BA (Mass Communications) sometimes exponentially more useful to get my work done, especially given the availability of concepts/code/information that I can steal/copy from others.

      --
      Please don't use "umm" or "err" or "erm".
    9. Re:Anti-Intellectualism by monopole · · Score: 1

      Dead on, but I'd add one more thing.
      While telescope makers are usually not astrophysicists, those who are doing anything more than assemble components are optical engineers if not physicists. While one can often get by with raytracing, which can get pretty hardcore in itself, it's often necessary to go back to Maxwell's equations when dealing with material properties or polarization etc.

    10. Re:Anti-Intellectualism by Anonymous Coward · · Score: 0

      What you say is utter garbage.

    11. Re:Anti-Intellectualism by Anonymous Coward · · Score: 0

      You are a moron. An idiot who cannot even type a coherent sentence. All the while criticizing someone else. Precious!

  47. Stupid Generalization by pionzypher · · Score: 1

    Really..... What are we talking about here? Web developer? He/she is going to rarely use anything above algebra. Network admin? Hmmmm... The ones I speak with don't generally have to do much higher math on a day to day basis.

    For systems development, I'd absolutely agree. If you're working on low level stuff, you're going to be dealing with math regularly and you damn well better know wtf you're doing. On the other hand though, when I did software QA... the heaviest math I did was figuring some median, max,min, stddevs on load test failure rates. Generalizing that everyone needs math (or needs to forget math) to become a great computer scientist is just begging for attention. You don't need to have an intimate understanding of the pci bus to install a soundcard. You don't need to have a diff eq understanding to test software, or to be a web dev. But you DO need it for other areas. And pretending you don't need it in those circumstances is just stupid.

    end inebriated rant(waits for the flammage)

    --
    I'll believe in corporations having personhood when Texas executes one... - advocate_one
  48. I think the author is making a more subtle point by Stradivarius · · Score: 4, Insightful

    I believe the author's point isn't that you don't need to know any mathematics, or that it doesn't have an important role to play in CS. He's simply arguing that some of the main issues in computer science are not fundamentally mathematical problems (even if they require some mathematics).

    If you buy that argument, then treating CS as if it were merely simply another branch of mathematics will not help solve those problems.

    Of course, this also takes us into the perennial debate between where to draw the line between "computer science" and "software engineering". One could certainly define away the author's problem by saying that his examples are software engineering issues rather than computer science issues. And it's true that it's software engineering has been driving a lot of the theory with respect to expressiveness (design patterns and the like). But that view also seems to really impoverish computer science - if all you leave the field of computer science is the stereotypical mathematics, why not just become an applied mathematics major?

  49. Darn it by Anonymous Coward · · Score: 0

    He's right.

    Everyone really knows 1+1 =3.

    Now, if I could only get 5-4 = 28......

  50. You can't seperate logic and math by shaitand · · Score: 1

    In fact, math is nothing more than a branch of logic. You can't seperate computer programming from math for two reasons, programming is nothing but logic and every function is an algebra problem whether you use that form of logic to derive it or not. The other is that the higher level programming used today is nothing but an abstraction of the pure number crunching that is the basic operation of a computer. A computer is a calculator with lots of memory, nothing more.

    1. Re:You can't seperate logic and math by melikamp · · Score: 1

      In fact, math is nothing more than a branch of logic.

      Such was indeed the hope of logical positivists. No great number of actual mathematicians was ever swayed by their arguments though. To many of us who are concerned with this matter at all (a very small number), the opposite seems to be true: that logic is but a branch of mathematics.

    2. Re:You can't seperate logic and math by shaitand · · Score: 1

      'Such was indeed the hope of logical positivists. No great number of actual mathematicians was ever swayed by their arguments though. To many of us who are concerned with this matter at all (a very small number), the opposite seems to be true: that logic is but a branch of mathematics.'

      The argument is one of semantics really. After all, you can convert pretty much all logic to mathematical concepts and mathematical concepts are themselves logical constructs. Math and Logic are two sides of the same coin. If you really want to shake the foundations of your universe try to consider the relation of philophy to the math/logic coin.

  51. "Informatics" - no, please NO! by muecksteiner · · Score: 1

    "Informatics" is a horrible word - it's certainly not English, and was probably derived/invented/whatever by some kind of acedemic lameass who did not have English as a first langugae.

    "Computer science" is not a perfect name, but at least it does not make native speakers cringe every time someone mentions it.

    Just my 0.2E-32 EUR

    A.

    1. Re:"Informatics" - no, please NO! by jawtheshark · · Score: 3, Informative

      Actually, "Informatics" (which is, as you say, an incorrect term in English) is used in other languages to label "Computer Science". In Dutch it is "Informatica", in German it is "Informatik" and in French is "Informatique" (sorry, I now am at the boundaries of my own language skills). All there translate to "Computer Science".

      I have to admit that I prefer the English term, because it says much more than the Dutch, French and German terms. Fact is: "Informatics" is the same thing as "Computer Science".

      Go to wikipedia, search for "Computer Science" and see what the languages I mention translate to. (Try "Nederlands", "Français" and "Deutsch" in the left hand column.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    2. Re:"Informatics" - no, please NO! by novakreo · · Score: 1

      "Informatics" is a horrible word - it's certainly not English, and was probably derived/invented/whatever by some kind of acedemic lameass who did not have English as a first langugae. Most English words are imported from other languages, and there's plenty of fields of study with names ending in 'matics'--I don't see what's so odious about this one.
      --
      O frabjous day! Callooh! Callay!
    3. Re:"Informatics" - no, please NO! by WilliamSChips · · Score: 1

      It's like "speculative fiction"--just hearing it makes me want to kill somebody. "Informatics" isn't as bad as "speculative fiction" though.

      --
      Please, for the good of Humanity, vote Obama.
    4. Re:"Informatics" - no, please NO! by Anonymous Coward · · Score: 0

      You have a really bizarre view of language. Here's a question: how do you think words come into existence and become part of the English language?

      P.S. It happens all the time.

  52. Knuth's point by Anonymous Coward · · Score: 0

    "The primary questions of computer science are not of computational possibilities but of expressional possibilities."

    That is why Dr. Knuth created something called "Literate Programming". It was a small step towards what the author calls "Expressional Possibility".

    "The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other."
                              --D.E Knuth

  53. Some people shouldn't code production systems by QuoteMstr · · Score: 4, Insightful

    Let me make this clear: your ability to write code in no way makes you a computer scientist. It's like saying that the ability to operate a forklift makes you a structural engineer. Stop it already.

    That said, I'm sure you're good at what you do. I bet you can write good code in VB, as well as many other languages. This isn't a personal insult. VB, PHP, and other brutish languages are equally bad in my eyes.

    These languages are brutish because they oversimplify key concepts. That oversimplification also makes them attractive to new programmers, and new programmers universally write terrible code. The languages themselves aren't bad, the coders are. That said, more experienced coders will generally choose more capable languages, so most of the time, a program written in a brutish language will be a bad one.

    We need fewer programmers, not more. Maybe professional certification would help somewhat.

    (Incidentally, we were lucky that Javascript became the de-facto client-side web language. We could have done far, far worse, and although we can change server languages, we can't change a user's web browser!)

    1. Re:Some people shouldn't code production systems by GTMoogle · · Score: 3, Insightful

      Who needs fewer programmers? Some programmers would have higher salaries. Some companies would have better code. Many video games might not exist. Would linux? Firefox? Would computers be as useful today if all those crappy enterprise VB applications had consumed all the programming power that currently invests itself in more generally useful areas?

      I agree professional certification may help improve software in critical areas. Hell, at my workplace we sometimes hire EEs over CS if they're capable of learning to code. CS certification would probably improve our applicant pool (but we probably couldn't afford to hire them). It seems to me that it would also have many deleterious effects if it the requirement for it was applied with too wide a brush.

    2. Re:Some people shouldn't code production systems by QuoteMstr · · Score: 2, Interesting

      You make a good point, but I wonder whether, given how much bad code is written, and how much effort is spent maintaining it, whether, in the end, we'd produce more quality code with fewer, better programmers.

    3. Re:Some people shouldn't code production systems by garcia · · Score: 2, Interesting

      Let me make this clear: your ability to write code in no way makes you a computer scientist. It's like saying that the ability to operate a forklift makes you a structural engineer. Stop it already.

      I never made any such connection. All I said was that people here on Slashdot are on their high horse and think that their shit doesn't stink when it comes to writing code. Please stop THAT.

      We need fewer programmers, not more. Maybe professional certification would help somewhat.

      I don't consider myself a "programmer". I have a background in CS (a minor in it) and I use that knowledge to do my job better. If I had to wait for a "programmer" at my institution to write the code I use I'd never get my work done.

    4. Re:Some people shouldn't code production systems by FishWithAHammer · · Score: 4, Insightful

      And then you have circumstances where quality programmers (myself, not to toot my own horn too much) are then screwed because your Almighty Certifications cost an arm and a leg.

      Certifications aren't worth the paper they're printed on. (The same, it seems, goes for degrees.)

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    5. Re:Some people shouldn't code production systems by QuoteMstr · · Score: 1

      We have doctors, lawyers and real engineers, don't we? Their professional certifications cost something as well. And compared to getting a degree, would a certification really cost that much more? I'm not saying their certifications are always accurate, but at least they're something.

      As for the cost problem --- I don't have a good solution that both ensures that new graduates are held to a rigorous standard and allows existing programmers to continue doing what they do. One could grandfather in everyone with a certain amount of experience, but how does one prove experience?

    6. Re:Some people shouldn't code production systems by GTMoogle · · Score: 1

      Hmm. Hard to say. Initially I thought it couldn't amount to much, but OTOH, there's a lot of waste in the typical bug-fix and minor feature version churn. But then again, would that problem really go away even with CS engineers?

      Good food for thought at any rate.

    7. Re:Some people shouldn't code production systems by Anonymous Coward · · Score: 0

      Considering that as a programmer you can make a career out of maintaining code (and creating enough bugs for another programmer to fix after you're long gone) I will have to agree with you.

      -I wish to ignore the environments where a programmer has to build kludges on top of kludges, which is also a problem that needs to be addressed.

    8. Re:Some people shouldn't code production systems by GTMoogle · · Score: 1

      Well, even completely irrespective of skill, a higher bar to entry would raise the pay rate. I gather that to be half of the concern of many people in these discussions. Making code better is a noble cause, but as you point out, linking the certification to quality is a different issue entirely, and not necessarily an easy one to solve.

      The other thing that certifications would give is culpability. I wonder how many programmers would be comfortable being held responsible for the code they wrote when they were newbs. :)

      As for the worth of most certs or degrees, it doesn't prove anything in a specific case. Everyone knows that guy that's a genius hacker that couldn't stay in school for some reason, as well as that moron who passed by getting others to do his work. But as a whole, they still are a good discriminator. If 10% of applicants without a degree are capable of doing a job, and 90% with, you make it a requirement to have a degree. It's simply not worth your time to interview the degreeless candidates, no matter how many diamonds in the rough you're passing over.

    9. Re:Some people shouldn't code production systems by Splab · · Score: 4, Funny

      I bet you couldn't identify a NP hard problem if it came up and ate all your CPU cycles.

    10. Re:Some people shouldn't code production systems by svallarian · · Score: 1

      One thing that degrees have that certifications don't though...no expiration date.

      Steven V>
      (Holder of many MS and IBM certs and working on a bachelors)

      --
      I patented screwing your mom. But it got revoked for "prior art."
    11. Re:Some people shouldn't code production systems by Excelsior · · Score: 1

      Certifications aren't worth the paper they're printed on. (The same, it seems, goes for degrees.)
      True that. In hiring, I go mainly off the technical interview. A degree means so little. In an international market, there's no way to know the quality of the tens of thousands of schools offering computer science degrees, both in your country and abroad. The name of a degree may not even mean what you think it means.

      At the end of the day, the only thing that matters is what the person is capable of doing and the quality of their work. The best way to determine that is with a good technical interview.

      I think this is part of the reason consulting is so popular in the IT world. The employer gets a chance to test drive, kick the tires, and go back for another one if the first wasn't quite up to snuff.
    12. Re:Some people shouldn't code production systems by 0xdeadbeef · · Score: 1

      These languages are brutish because they oversimplify key concepts.

      And what concepts are those?

    13. Re:Some people shouldn't code production systems by Ironpoint · · Score: 1


      So you hire certified EEs but couldn't hire certified CSs because they would cost too much. What makes CSs more expensive than EEs?

    14. Re:Some people shouldn't code production systems by mjmartin_uk · · Score: 2, Insightful

      Screw people who say you need qualifications to be a 'good' programmer. Maybe it helps but there a plenty of decent programmers in the world who write good code without the nessecary educational background. No area of expertise should be selective based on qualifications alone (except maybe medicine).

      I've seen some truly terrible code by folks with degrees in both Comp Sci and Software Engineering, and even worse code by people who are doing degrees in so called 'ICT'.

      The code style was all over the place, one guy's test code didn't even compile!

      As Excelsior said, a good technical interview is the only way. After the first interview, we then actually get interviewees to write a simple program in 4 hours and review it with them earlier. Sometimes that's the only way to tell if they're any good or whether they'll fit into our organisation.

    15. Re:Some people shouldn't code production systems by localman · · Score: 1

      We need fewer programmers, not more.

      I wonder about that -- maybe that's true at any given company (I maintained a very small team of quality people at my last job), but out in the world? Who cares if there are a ton of mediocre people programming? In fact, I'd think the best thing is to have a thriving ecosystem where anyone can code and we reap whatever comes from it. I think the elitist mentality is an illusion: there wouldn't be more great code, there would simply be less mediocre code. And like it or not, mediocre code can often be useful too. Complete shit code may not be useful, but until the code is written it's not always possible to tell who's going to produce mediocre vs. complete shit. So let everyone have at it and keep what works. If the million monkeys make something cool, great.

      All that said, at my company, where I'm paying for it in advance, I'll keep the team small and high quality :)

      Cheers.

    16. Re:Some people shouldn't code production systems by mrchaotica · · Score: 1

      Here's a newsflash for you: the exam required to become a Professional Engineer, the bar exam (required to be licensed as a lawyer), etc. are in a completely different league than any of the utter bullshit CompTIA tries to pass off as certifications for computing.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    17. Re:Some people shouldn't code production systems by Anonymous Coward · · Score: 0

      Anyone with a job writing software should be well aware why certifications will do absolutely nothing for software quality or software engineering: We have no clue, right now, how to tell a good programmer from a bad one without engaging him in $20,000 worth of his time.

      If we could tell inside a 3 hour exam (allbeit difficult) interviewing would sure be a lot easier: "Did he do well on the exam?" "Does he get along with the people he talked to?" "Does he fulfill immediate technical qualifications we need (which should be few if you're running an intelligent company)."

    18. Re:Some people shouldn't code production systems by Tablizer · · Score: 1

      These languages are brutish because they oversimplify key concepts. That oversimplification also makes them attractive to new programmers, and new programmers universally write terrible code.

      How about some specific examples? Just because a language offers shortcuts does NOT meant it does not offer long cuts.

      Things like separation of biz logic and presentation are often oversold in my opinion anyhow: they make coding longer up front for preperation of a distant "what-if" that may never even happen. In investing, this is known as the Future Value fallacy. (Plus, such separation can still be done in those languages if desired.) Smart coders know how to weigh tradeoffs, including short-term versus long-term issues.

      Bad coders can ruin any language or tool. Let's not get into language bashing unless you can offer specifics. Generalizations will not do us any good on this heated topic.

    19. Re:Some people shouldn't code production systems by Tablizer · · Score: 1

      Certifications aren't worth the paper they're printed on.

      If you have two candidates with identical creditentials except for the certification, it will and should make a difference. The problem is when the certificate becomes the *only* or primary hiring criteria. Not every hiring manager has the budget to hire the super-experienced guy.

    20. Re:Some people shouldn't code production systems by Jonboy+X · · Score: 1

      Hell, at my workplace we sometimes hire EEs over CS if they're capable of learning to code. It helps that it helps to be smart and analytical for both professions, and EEs often have to do some coding at some point in their careers. Also, many older programmers graduated from schools that didn't offer computer science programs at the time, but their experience in the intervening decades often negates that to an extent. However, that's about where the advantages for hiring an EE over, say, an Art History major end.

      There's this bias among EEs that they're intrinsically smarter, because there are fewer of them around. This is probably true on average, just because the growing demand for software engineers lowered the barrier to entry for a while. But it stands to reason that the best software engineers are better software engineers then the best electrical engineers.

      There's also an argument that pops up from time to time that computer programming is a subset of EE. This is bogus. EEs will require the training that they missed without a good CS program in order to become good software engineers, or even good programmers. While EEs were learning FFTs, CSs were learning design patterns. To poo-poo that fact hurts the profession as a whole.
      --

      "In a 32-bit world, you're a 2-bit user. You've got your own newsgroup, alt.total.loser." -Weird Al
    21. Re:Some people shouldn't code production systems by Anonymous Coward · · Score: 1, Insightful

      Let me make this clear: your ability to write code in no way makes you a computer scientist. It's like saying that the ability to operate a forklift makes you a structural engineer. Stop it already. Let me make this clear, your training as a computer scientist in no way makes you qualified to write code. It's like saying that a degree in structural enginering makes you a qualified forklift operator.

      The worst code I have ever seen was designed and implemented by CS majors, give me a SE, CE or even a English BA, to design and write software. Heck forget the degree give me talent and an ability to think logically. Yes CS theory is important, but leave the application of that theory to people who know how to do it right.
    22. Re:Some people shouldn't code production systems by carlfish · · Score: 2, Insightful

      "If you have two candidates with identical creditentials except for the certification, it will and should make a difference."

      Rubbish.

      In IT, all a certification means is that one of the candidate's previous employers had a training budget. I'd consider the two candidates exactly equal. If I could only hire one, I'd fall back on my gut feel of which one interviewed better.

      Charles Miller

      --
      The more I learn about the Internet, the more amazed I am that it works at all.
    23. Re:Some people shouldn't code production systems by segfault_0 · · Score: 1

      Brutish is just a silly over-simplification. Look at the trend in new languages; python, ruby, C#(and .net etc), Java - hell even C++... see a pattern here - simplification of difficult concepts packaged neatly for reuse - a much desired goal in good programming in any language. Visual Basic is implemented in terms of the CLR nowadays, is fully object oriented, and is a pretty powerful language. Unfortunately these simplifications cant do it all for you and since they are more accessible they allow less talented people to actually produce a marginally useful program which sometimes will escape into production use. The implementations of the data structures, and methods that work on them, in these languages is technically beyond what 99% of developers can afford to implement on their own in C or assembler in both money and manpower - 9/10 times their use will make you a better program if used correctly in comparison to a "new" (aka probably untested, probably unoriginal, probably buggy) solution. BTW, have you ever written a program in Javascript - its pretty f-ing terrible.

      --

      I was crazy back when being crazy really meant something. (Charles Manson)
    24. Re:Some people shouldn't code production systems by Splab · · Score: 1

      Whatever it is mods are smoking, I want in on it! How can GP be modded insightful and my parent funny? Autodidact programmers are a bloody disaster!

    25. Re:Some people shouldn't code production systems by Blakey+Rat · · Score: 1

      We need fewer programmers, not more.

      That explains why the demand for programmers is higher than its ever been. That explains why Microsoft is desperately raiding universities around the US (and all over the world) for decent candidates. That explains why almost every company is running, relying on, software written in Excel or Access as a past-time of one of the secretaries who was 'good with technical stuff.'

      Arguably, we need existing programmers to be of higher caliber, but limiting the NUMBER of programmers is stupid.

      Maybe professional certification would help somewhat.

      All a certification would do is guarantee ALL programming jobs get outsourced to India instead of just 75% of them. Dumb idea.

    26. Re:Some people shouldn't code production systems by QuoteMstr · · Score: 1

      Case in point: PHP's hybrid list/dictionary structure makes many otherwise-common cases tricky.

      See http://www.ukuug.org/events/linux2002/papers/html/ php/#section_5

    27. Re:Some people shouldn't code production systems by QuoteMstr · · Score: 1

      Oh, simplification and abstraction are great things. The problem with brutish languages arises when they try to simplify problems to a greater degree than is possible. Some tasks are inherently complex, and if the language punts, then the user of the language has to pick up that complexity, often in subtle ways. Now, PHP doesn't encourage this anymore, but consider the magic_quotes_gpc feature. It's an archetypal example of that kind of thinking.

      I can't comment on VB.NET, having not used it.

      C# is not a bad language [though I'd still prefer Lisp or Python ;-)] either.

      As for new data structures --- in my experience, I've found that it's the newer programmers that will attempt to implement their own data structures, sorting algorithms, etc. instead of using standard language features. I think every programmer goes through a microptimization phase, during which he writes absolute crap. I know I did. :-)

      About Javascript --- yes, it has some nasty gotchas, but it has closures. That's its saving grace. Also, the prototypeish object system can be used to implement a standard inheritance hierarchy; google: there are plenty of examples of how to do this. I'm not saying Javascript is perfect, but only that we should consider ourselves lucky that it isn't much, much worse.

    28. Re:Some people shouldn't code production systems by syousef · · Score: 1

      We need fewer programmers, not more. Maybe professional certification would help somewhat.

      No no no no no. We need more programmers and we need them to be better. Professional certification almost universally enshrines a culture of having to memorize useless facts and kiss the right asses in the right way in order to be allowed to do work. Meanwhile it makes the entry bar so high that people that might be better at the job look elsewhere because they can't afford to spend years getting to a level where their professional body allows them to earn a crust. All you'd see is coders paid like trade apprenticies or even medical interns. I've seen some REALLY bad programmers who are professionally certified in one tool or other (mostly Java). You have to trust a certifying body NOT to create this kind of atmosphere which is the kind in which it will thrive most.

      --
      These posts express my own personal views, not those of my employer
    29. Re:Some people shouldn't code production systems by QuoteMstr · · Score: 1

      Fair enough. It was just an idea. How would you increase the quality of the average programmer though? Just increasing the salary in accordance with demand seems to result in an influx of programmers who don't give a damn about quality, and who are only in "computers" for the money.

    30. Re:Some people shouldn't code production systems by Tablizer · · Score: 1

      Case in point: PHP's hybrid list/dictionary structure makes many otherwise-common cases tricky.

      Well, in my opinion, PHP's odd dictionary is just bad language design. What people really want is light-duty in-app tables with some very basic relational query ability (simpler than SQL, but perhaps with SQL as an option).

      More on this at:

      http://c2.com/cgi/wiki?AreTablesGeneralPurposeStru ctures

      http://c2.com/cgi/wiki?MinimalTable

    31. Re:Some people shouldn't code production systems by syousef · · Score: 1

      Salary has to do with supply and demand. Demand is only partly driven by quality. I've seen way too many employers focus on what knowledge an employee is bringing into the company and too few focus on an employee's ability to learn and their flexibility in coding.

      I think the key to increasing the quality of coders out there is continued education, and plenty of peer review. It has to be constructive peer review and directed education. The peer review should take someone ideally completely unfamiliar with the code and ask them to look at it to see what's difficult to understand, and what's done badly. (Also what's done well. It can't all be a case of cutting down a person's work). Adherence to standards while important shouldn't be the focus. The focus should be managable and efficient code and those standards are necessary only where integration, redability and efficiency are concerned, not so you can fill in some damned ISO 9001 or 6 sigma document.

      As for training, most employers are lucky to allocate a week out of the working year to education, yet expect their employees to be completely up to date with the technology they're using. Also learning algorithms and techniques be they general or specific to one environment shouldn't stop when you're done with a bachelor's degree.

      --
      These posts express my own personal views, not those of my employer
    32. Re:Some people shouldn't code production systems by GTMoogle · · Score: 1

      Not many EE job opportunities in the area.

    33. Re:Some people shouldn't code production systems by FishWithAHammer · · Score: 1

      Probably not (though I'm pretty sure that when I sat down to work at it I'd go 'okay, something's not right here' and do the research to identify it as such).

      Now tell me why I need to be able to identify an NP-hard problem to be a 'quality programmer' (as I referred to it), as opposed to a computer scientist.

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
    34. Re:Some people shouldn't code production systems by FishWithAHammer · · Score: 1

      Well, hell. You hiring? :)

      --
      "You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
  54. The author never heard of a CIS or MIS degree? by Anonymous Coward · · Score: 0

    The author is unknowledgable about the IT industry.
    There are lots of degrees in IT that do NOT involve Math requirements.
    Most community colleges offer a 1 or 2 year degree in programming.
    If you aspire for a higher level education (like Bachelors, Masters, PHD) without the Math...
    C.I.S. (Computer Information Systems) replaces the Math requirements with Business classes.
    M.I.S. (Management Information Systems) has even more Business classes.

    Most college's school of business already provides a degree program for teaching software development to non-mathematical people.

    However, sometimes you do need math in programming... which is why Computer Science requires math.
    Don't water down what Computer Science means.

  55. I agree... by Anonymous Coward · · Score: 1, Insightful

    Before groupthink nukes this person's comment into oblivion, could you please reflect on the last time you had to deal with someone else's shitty code? (I'm sure you don't have to think back very far.)

    If you've never had to deal with someone else's poor work then you [are the luckiest bastard on the planet, but more likely you] may want to consider a career change...

  56. Misleading title and you should RTFA. by Jartan · · Score: 1

    As per the norm on /. the article title is incredibly misleading. The guy never once talks about ditching math. He doesn't even vaguely imply that math should be ditched. What he seems to be talking about is how the methods and tools of orthodox mathematicians (i.e. pure math guys) are still being used by Computer Scientists when all of that stuff should by now be far more "specialized" towards the things Computer Science really studies.

    I think we can see what he's talking about in the many arguments about functional programming. I don't want to open that debate but I can at least attest I've met many people who are biased towards functional programming simply because it's so mathematical.

    It's not hard for me to imagine that some of these same people (who are in academia) are pretty close minded about updating their skill set to something more suited to their actual jobs.

  57. Re:wahay! by atrocious+cowpat · · Score: 5, Interesting

    "Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys)."

    Maybe the question should rather be: Why doesn't Microsoft look for the kind of GUI-guys Apple hires. And the answer to that might well be found at the top of each company. A quote from Steve Jobs' Commencement address at Stanford (June 12, 2005):

    "Because I had dropped out [of college] and didn't have to take the normal classes, I decided to take a calligraphy class [...]. It was beautiful, historical, artistically subtle in a way that science can't capture, and I found it fascinating. None of this had even a hope of any practical application in my life. But ten years later, when we were designing the first Macintosh computer, it all came back to me. And we designed it all into the Mac. It was the first computer with beautiful typography. If I had never dropped in on that single course in college, the Mac would have never had multiple typefaces or proportionally spaced fonts. And since Windows just copied the Mac, its likely that no personal computer would have them. If I had never dropped out, I would have never dropped in on this calligraphy class, and personal computers might not have the wonderful typography that they do."

    Read the whole thing, it's quite interesting (if not to say: inspiring).

    --
    sig? Oh, that sig...
  58. Re:I am able by smittyoneeach · · Score: 4, Funny

    You were off by 19787949 - 1 = 19787948 in your calculation.
    However aren't they all integers, and therefore morally equivalent?

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  59. Abstraction does not always equal Logic by 3seas · · Score: 1

    write a bad sci-fi fiction (what amounts to abstraction sequence) and show me the logic.

    Abstraction is not a facet of logic, and you proved it!

  60. Math != Logic by Prototerm · · Score: 0

    There's something to this.

    You don't need math skills to be a good computer programmer. I, for one, have awful math skills, and don't like dealing with numbers (and yes this does get in the way from time to time, but that is rare.)

    Computers are all about logic, and due to a minor learning problem I've had since childhood, I've always leaned heavily on logic to get better-than-average grades throughout school. As long as a subject lends itself to being *understood* rather than *memorized*, I'm in-like-flint.

    When you program a computer, you don't think to yourself "what's the square root of seventeen multiplied by e to the twenty seventh", you think in terms of "if-then-else" (even if the syntax is different, it often comes down to that simple bit of logic).

    So is math useful to the computer programmer? Absolutely. Is it necessary? Absolutely not. As long as you can *think* like the computer -- in other words, using logic -- you're better off than someone who just knows their sums. I've been doing this for over 25 years, and politically correct or not, this idea has worked just fine for me.

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
    1. Re:Math != Logic by QuoteMstr · · Score: 1

      Logic is math. In fact, there's an argument that all of mathematics can be formulated in terms of set theory.

      Arithmetic is almost never necessary for programming, and if you're using it, chances are you're doing something very wrong, like hardcoding parameters. Myself, I'm terrible at arithmetic, but so was Einstein. Arithmetic is as relevant to theoretical physics as it is to computer science.

    2. Re:Math != Logic by IL-CSIXTY4 · · Score: 1

      Is it necessary? Absolutely not. As long as you can *think* like the computer -- in other words, using logic -- you're better off than someone who just knows their sums

      Thinking like a computer...using Boolean logic perhaps? Those if-then-else structures you love are a way of expressing algebraic statements, even if the language you're using to express them is more like English than algebra.

      Further, when you simplify:

      if ( (a && b) || (a && c) ) ...

      into

      if ( a && (b || c) ) ) ...

      you're using commutation, a mathematical property.

      See, you're better at math than you thought.
  61. Bad article about an interesting subject by owlstead · · Score: 1

    Of course there is a lot of math involved in many parts of computer *science*. Not so much in computer related jobs in the industry, but certainly in science. Where things go wrong is when this math is educated as a standalone subject. I can still remember the horror of math in the first year of the study. Come on guys, if we were interested in pure math, we would have studied something else.

    What was important is -eg- statistics, logic and a bit of number theory. That was indeed present, but then you had "theoretical computer science", "calculus" and a whole bunch of other courses that for some reason were mandatory. Those could be important for further studies, but for some reason they went into these subjects way to deep.

    Fortunately, at the Vrije Universiteit, the amount of math in computer science has been significantly diminished over the years. And that's good because I suspect that only a few remember much of the "calculus" of the first year. I'm pretty good in actually remembering the things I've studied, but almost everything about the real mathematical side of things has gone from memory.

    So my opinion is: teach it, but only if necessary for the subject, and only if the subject has been choosen as a master or something by the student. And explain *why* it's needed if you teach it - students are not a bunch of drones that have some kind of photographic memory. I do think that computer science relies on algorithms a lot, but just teaching the algorithms without any context is just plain dumb. Algorithms are fine, but looking at computer science from a pure mathematical view point is something else entirely.

    Other than this, there is way to little in the article to talk about. A full book review would be much more helpfull. Unfortunately, I could not find any using Google. Either the book is not read, or more likely, it's too new.

  62. And what constitutes the growth environment? by Anonymous Coward · · Score: 1, Insightful

    Hmmm?

    1. Re:And what constitutes the growth environment? by Colin+Smith · · Score: 1

      Bare metal and some way of randomly corrupting ram.

      --
      Deleted
  63. Re:I think the author is making a more subtle poin by neillewis · · Score: 4, Informative

    A lot of the criticism of this guy seems to be knee-jerk defensiveness. Read his papers on 'NULL Convention Logic' and its applicability to asynchronous circuit design and you will see where he is coming from.

  64. Complicated vs. Complex by alba7 · · Score: 1

    Computers are very simple machines providing only simple building blocks.
    To get anything useful done you need to combine an awful lot of building blocks.

    In comparison mathematicians and physicians torture their minds with
    mindboggingly complicated stuff. But when they are pressed to explain it,
    write a book about it, or code some program then all you get is
    incomprehensible spaghetti FORTRAN.

    The mathematician's answer to memory management is garbage collection,
    i.e. it's left as an exercise to everyone else. The mathematician's answer
    to optimizing run-time complexity is even worse; with functional languages
    the problem is simply defined away.

    --
    Post tenebras lux. Post fenestras tux.
  65. Forget logic... by ozbird · · Score: 1

    ... if all else fails, sacrifice a chicken.

  66. CS needs different kind of math... by jozmala · · Score: 1

    The tools that mathemacians produce need to be supplemented more with CS specific abstractions. And generic math classes become less important than more CS specific abstractions after certain point of mathematical prowess.

    This is closer to real life situation. The point where more generic mathematics classes is not as useful any more is debatable.

    --
    ©God :Copyright is exclusive right for creator to determine the use of his creation.
  67. CS - MA = IS by MobyDisk · · Score: 2, Insightful
    Computer Science - Math = Information Systems
    It covers networking, scripting, database management, web design, hardware, etc. It's computer science without the science.

    Also, Computer Science != Programming:

    "Computer science does not need a theory of computation; it needs a comprehensive theory of process expression." That's not computer science, that's programming. The author is confusing the two. I know many great self-taught programmers who can't tell me what O(n) means. They get a feel for what data structures to use, but rarely create their own. There's plenty of use for such people - it's probably the majority of programmers. But it isn't CS.
    1. Re:CS - MA = IS by Shados · · Score: 1

      Correct. And thats where the confusion comes: There is an incredibly high demand for software -developers-, as opposed to computer scientist, people who are intimately familiar with the software development flow, design patterns, software architecture, and a bunch of other things most CS curriculum don't teach. Thats where articles like this one comes from.

      What it fails at, is that there's also a fairly high demand for actual computer scientist. So what does it mean? That we leave CS just like it is, and that there should be -2- different programs in university, because sticking a CS major in a pure software development job is dumb. Just as dumb as sticking a software developer or architect to develop some new compression algorythm or program a pace maker.

      Of course, for every programmer who doesn't know about O(n), there's someone straight out of CS school who has no clue about theta, omega, or just actually what Big O is good for, which is quite amusing :)

    2. Re:CS - MA = IS by mastermemorex · · Score: 1

      Using the appropriate libraries every plain-brain-wave programmer can script a code to communicate wit a data base and a freaky game. But that is not science computer.
      Making a low level code for managing data structures and 3d engine is the hard part and it involves a lot of maths science behind the algorithms.

    3. Re:CS - MA = IS by Anonymous Coward · · Score: 0

      Computer Science - Math = Information Systems
      It covers networking, scripting, database management, web design, hardware, etc. It's computer science without the science. Information Systems as a whole has a lot of science - you can't escape from state machines, petri nets, etc.
    4. Re:CS - MA = IS by MobyDisk · · Score: 1

      That's interesting. At UMBC, Information Systems does not involve state machines. That's covered in Finite Automata Theory which is one of the two courses (Algorithms is the other) that drive CS majors to become IS majors. I've never heard of a petri net, but it looks like that would also be part of Finite Automata Theory too. What school taught that as part of Information Systems? And if that is IS, what does that school consider CS?

  68. finally !! by Anonymous Coward · · Score: 0

    Finally, someone says it. The truth hurts so that guy will receive A LOT of insults. But, it's a first step.

  69. Lemme guess by Opportunist · · Score: 4, Insightful

    The author really sucks at math but heard that there's big bucks in the computer stuff, right?

    Computers are (by their very definition as well as by the word used to describe them) mathematical machines. A computer can essentially do NOTHING BUT calculate. It can in its core add, subtract, shift and move data around. How is this supposed to work without math?

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:Lemme guess by nomadic · · Score: 2, Informative

      The author really sucks at math but heard that there's big bucks in the computer stuff, right?

      No.

  70. Without math -- you get lost in the code! by syn1kk · · Score: 5, Interesting

    I am a DSP programmer, which basically means that all the stuff I code are mathematical formulas transformed into C code. I mention DSP because writing DSP algorithms forces the programmer to know his math really well... enough so that he can distill the complex math into an efficient C code implementation.

    I remember trying to get my specific algorithm to run under 500 micro seconds and the best I could get was like 10000 micro seconds. My coworker who looked at the underlying math equations for my code easily saw a better solution just by looking at the math equations for 5 minutes. After I changed my code to suit the new math equation I got my code to run at 280 micro seconds.

    The whole point of this example:
    When you approach the solution from a mathematical viewpoint, the mathematical viewpoint lets you see more clearly how to optimize an algorithm. In my case, I got lost looking at the C code and missed the elegant mathematical solution because I did not look at the math equations. So I ended up not being able to "distill the complex math into an efficient C code implementation" to find the elegant solution.

    In my case the elegant-math-derived-solution was about 35 times faster (10000 / 280) than the original solution I had come up with.

    -----

    Bottom line: The syntax and complex notations used for math equations lets you look at a problem from a much higher level of abstraction and this higher level of abstraction is much more conducive to seeing the elegant best solution (solutions that improve your algorithm by an orders of magnitude rather than solutions that improve your algorithm by some linear constant).

    p.s. if you were wondering what I was working on --> the function was a GMSK modulator ( http://en.wikipedia.org/wiki/GMSK ) for a transmitter.

  71. Re:Well... Yeah by QuoteMstr · · Score: 1

    An efficient filesystem is going to involve using a tree structure of some sort (probably a B*tree). That's graph theory, and part of computer science.

  72. Huh? by Ambitwistor · · Score: 1
    From TFA:

    Computer science does not need a theory of computation; it needs a comprehensive theory of process expression. Maybe it's just me, but I fail to see how "process expression" is any different from an algorithm. Or is he talking about declarative programming as opposed to procedural programming?

    "A logic circuit is not a sequence of operations. A logic circuit is a sequence of operations, in its most fundamental physical form: a sequence of gates which each act upon a signal.

    An operating system is not supposed to terminate, nor does it yield a singular solution. Algorithms don't have to halt, or yield singular solutions. And operating systems are supposed to terminate when you tell them to shut down.

    An operating system cannot be deterministic because it must relate to uncoordinated inputs from the outside world. That doesn't mean the operating system isn't deterministic! Deterministic just means that you get the same outputs for the same inputs. The fact that in the real world, you never get exactly the same inputs twice, doesn't mean that the OS itself isn't a deterministic algorithm.

    Furthermore, there are such things as nondeterministic algorithms.

    Any program utilising random input to carry out its process, such...is not an algorithm." This guy is very confused about what an algorithm is.

    Is he seriously arguing that this code:

    scanf("%d",&n);
    printf("%d\n", n*n);
    is neither an algorithm nor deterministic just because the user could input a random number??
    1. Re:Huh? by Anonymous Coward · · Score: 0

      Thanks for RTFA cause I didn't. I have to say that whoever gets the nerve to say such silly things in a book, has big issues...

  73. Hammer, nail by Kalvos · · Score: 2, Insightful

    "If all you have is a hammer, everything looks like a nail" applies to some degree to the responses to the review.

    We use math for these machines because that's how they were designed. They didn't have to be, although from our perspective a half-century on, it seems impossible that they might work any other way.

    Computers may need math because of how they were created, but consider that an animator didn't need math to animate, rotate or transform a figure. Though it may be reduced to math, an artist doesn't need math to give depth, shading and perspective to an image. In fact, computers make such analog tasks incredibly math-intensive, as a previous poster noted.

    Despite the depth and complexity of the resulting orchestrations, no math created -- though it may describe aspects of -- Beethoven's Ninth Symphony. Learning language and grammar remain elusive to mathematicians, and even Chomsky's "universal" theories end up flummoxed by the Pirahã language. The multiple readings of T. S. Eliot's The Wasteland would take more time to track than the Internet in real time.

    Even in the sciences from antiquity, increasing description and formulation result in increasing complexity, but not necessarily increasing understanding. Earth, air, fire and water made sense in societal context; then extended elements; then the periodic table; then subatomic particles, light as particles and waves, and behavior of quarks. Magnetism remains elusive, as does an elegant theory of everything.

    Each of these may use math as a description or even a tool, but the careful tuning analysis of the different kinds of gamelans does not apply to the gamelans, but only their analysis. The reference is to itself, and the gamelans go on with or without analysis.

    In other words, were our computers not based initially in creating algorithms to manipulate the basic elements chosen to operate them, impelling the ultimate triumph of binary data over other representations, math may have receded to its place as just one tool of computer activity.

    Dennis
    We Are All Mozart

  74. math used for modeling systems by wingome · · Score: 1

    The important flaw in this idea is that computers model math, if the author had actually paid attention in math class he would have learned that math is used to model computers, and all other systems that need formal description. So if you are doing trivial programming forget the math, if you are modeling a complicated flow (or circuit) you are using math, no matter what you call it.

  75. Math is what separates Science ... by Ihlosi · · Score: 1
    ... from Hogwash.

    Seriously. Can any field of science do "without math" ? Even in fields like psychology, you still need math for statistics.

  76. $1 billion error at Fannie Mae by michaelmalak · · Score: 2, Informative
    Of the $6.3 billion that Fannie Mae had to restate to the SEC in 2006 (covering the 1998-2006 timeframe), $1 billion was due to "End User Computing", presumably an error in a Microsoft Excel spreadsheet:

    OFHEO expressed concerns about Fannie Mae's reliance on end-user computing systems and the lack of strong controls that led to the $1 billion computational error and directed the Enterprise to take remedial action.
    Fannie Mae now requires its IT department to develop applications and has made mandatory many best practices that were previously recommended, such as unit tests, strict source code control, strict deployment control, and a software management process modeled after PMI.
    1. Re:$1 billion error at Fannie Mae by sjf · · Score: 1

      Why isn't this modded up ? It is interesting, relevant, cites sources and contributes profoundly to the discussion.
      (obcomplaint: oh, this is slashdot...silly me.)
      Thank you poster.

    2. Re:$1 billion error at Fannie Mae by Anonymous Coward · · Score: 5, Informative

      Bewcause it doesn't say anything at all like he's claiming it says.

      It was garden variety executive directed securities fraud. Not errors created by poor VB scripts in Excel.

      VI. MISAPPLICATIONS OF GAAP, WEAK INTERNAL CONTROLS, AND
      IMPROPER EARNINGS MANAGEMENT
      As noted in previous chapters of this report, the extreme predictability of the financial results reported by Fannie Mae from 1998 through 2003 was an illusion deliberately and systematically created by senior management. This chapter provides specific examples how senior executives exploited the weaknesses of the Enterprise's accounting to accomplish improper earnings management and misapply Generally Accepted Accounting Principles (GAAP), and how they used a variety of transactions and accounting manipulations to fine-tune the Enterprise's annual earnings results. Those actions aimed to perpetuate management's reputation for achieving smooth and predictable double-digit growth in earnings per share and for keeping Fannie Mae's risk low, while assuring maximum funding of the pool from which senior management would receive bonus payments under the Enterprise's Annual Incentive Plan as well as maximum payments under other, longer-term executive compensation plans.
      To provide context for the technical material that follows, the chapter first expands on several issues raised in the previous chapters by elaborating on the concept of improper earnings management and describing the circumstances that demonstrate that Fannie Mae senior management must have been aware of the evolving official concerns about such practices.

      Following those discussions, the chapter reviews the improper accounting policies and control weaknesses that created opportunities for inappropriate manipulation of earnings at the Enterprise. The chapter then describes inappropriate accounting undertaken to avoid recording other-than-temporary impairment losses to avoid earnings volatility. The chapter concludes with discussions of several additional techniques used by senior management to fine-tune reported earnings results.
      The actions and inactions of Fannie Mae senior management described in this chapter constituted unsafe and unsound practices that involved failures to comply with a number of statutory and other requirements. Several independent authorities, for example, require the Enterprise to verify and submit financial information. The Fannie Mae Charter Act--the statute that created the Enterprise--specifically requires that quarterly and annual reports of financial conditions and operations be prepared in accordance with GAAP.1 The Federal Housing Enterprises Financial Safety and Soundness Act of 1992, OFHEO's organic statute, requires Fannie Mae to provide OFHEO with reports on its financial condition and operations.

      Similarly, regulations promulgated by OFHEO under that statute require the Enterprise to prepare and submit financial and other disclosures that include supporting financial information and certifications, on matters such as its financial condition, the results of its operations, business developments, and management's expectations.

      Moreover, in accordance with applicable safety and soundness authorities, Fannie Mae should have had an effective system of internal controls in place under which:
      policies and procedures would be sufficient to assure that the organizational structure of the Enterprise and the assignment of responsibilities within that structure would provide clear accountability;
      policies and procedures would be adequate to manage and safeguard assets, and assure compliance with applicable law and regulation;4
      policies and procedures would assure reports and documents would be generated that are timely, complete, and sufficient for directors and management to make informed decisions by providing relevant information with an appropriate level of detail; and
      policies and procedures for managing changes in risk would be sufficient to permit the prudent management of balance sh

    3. Re:$1 billion error at Fannie Mae by michaelmalak · · Score: 1
      Have you read all 348 pages?

      As a result of the whistleblower, Roger Barnes, within Fannie Mae, OFHEO (the U.S. government agency in charge of overseeing Fannie Mae and Freddie Mac) conducted a top to bottom review of Fannie Mae practices. They found many, many things -- not just what Roger Barnes reported, and not just what was reported in media soundbites. The $1 billion error due to End User Computing has gone underreported in the media.

      Just look at the table of contents. The paragraph you highlighted was specific to accounting irregularities. The sentence I highlighted was specific to failure of senior management to respond in a timely and effective 2004 warning by OFHEO regarding end-user computing, as it had already resulted in a $1 billion error. (The software best practices I mentioned were not mandated until extremely late -- specifically, not until this 2006 report came out.) And there are many more types of irregularities described in that long document.

      I thought I was clear when I stated that only $1 billion of the $6.3 billion earnings writeoff was due to the end-user computing error. But I guess media-inspired preconceived notions got in the way.

  77. Think "Patents" by NickFortune · · Score: 1

    You can't do computer SCIENCE at all without the math. You might do some software engineering. Without understanding phenomena that underly the principles you're studying, there is no science.

    Well said, sir. And there's nothing wrong with being a software engineer, rather than a computer scientist; I just wish the distinction was clearer in most people's minds.

    I honestly don't understand the whining.

    Well, in the case of TFA, I think it's politically motivated. In a many parts of the world, software patents are still illegal because algorithms are held to be essentially mathematical expressions, and mathematics is excluded from patents. On the other hand, if the big software houses can orchestrate some grassroots support for the notion that "algorithms != mathematics", then they might find the next EU debate on the subject goes a little smoother.

    I think that's all this is - a bought and paid for study, intended to smooth a path for eventual legislation.

    --
    Don't let THEM immanentize the Eschaton!
  78. Data Processing by that+this+is+not+und · · Score: 1

    Long before there were 'electronic brain' computers, there was Data Processing. IBM excelled at producing DP hardware and systems. In the IBM system, the data records took the form of punched cards. The individual records took the form of single cards, and cards could be sorted, shuffled around, and a deck could be placed into a reader so that each line (or select fields thereof from said card) could be echoed to a printer. All of this could be done without math or computation. This is called Electronic Data Processing.

    This occupation is custodial, and still a vast percentage of the people involved working with computers only work at this level. Many people involved in IT (to my mind, it's part of the dividing line- if you're described as an IT person this is your occupation) are simple data janitors. It is part of the reason that I react negatively when a job recruiter or HR type implies that I have work experience in IT. I do not, and am not a glorified clerk.

  79. real programmers use math by Anonymous Coward · · Score: 0

    I program in C++ and java an I use basic calculus and trig to come up with certain algorithms for my programs. the more math you know the better programmer you are and the more efficient your program will be

  80. common lisp by Jasper__unique_dammi · · Score: 1

    ;TODO (defmacro play-vb (vb-like-code) .... ;Learn VB first, need keywords?

    common lisp (clisp is a good app to start with, linux has all the good free lisp compilers)

  81. Math is everything, and I hate that.... by katorga · · Score: 1

    Math underlies everything, and everything can be expressed mathematically. Wishing it away will not make it so. I wish it were not the case because I have always struggled with high order mathematics.

  82. Math for all... by Xoq+jay · · Score: 1

    Saying that computer science doesn't need math, is like saying there's nothing else to be invented... Like maybe the future generations dont really need that Hard and exercising discipline... Well let me tell you (besides the fact that computer science is Taught based on math) you would be asking for math to understand and accomplish knowledge. After doing my Calculus II, I talked to my professor and asked "Why in hell do we need to know these things?!".. And he said: "Well, maybe when you get to work you'll probably wont need to know how to integrate a variety and such... But instead think of the levels of problems you can look for now... You opened yourself for a new range of situations.. Also, your brain has evolved since you first began doing Calculus.. You're actually smarter!...". Taking Math of Computer Science is taking the ability to improve itself, to discover itself and to redefine itself

    --
    God had a 7 day deadline... So he made the world in LISP
  83. There's A Point Here by Effugas · · Score: 1

    Imagine for a minute that Military Science was taught by the mathematicians.

    After all, you need calculus to determine trajectories, statistics to calculate the odds of winning a battle, eigenvectors to locate a terrorist in a crowd, game theory to map out the politics...

    These are all well and good, but Math is not War. The parts of math that are good for war, we need to know. But war is its own realm, and we need to accept that.

    Put another way, biology is not just chemistry with carbon.

    Computer science hasn't branched off the way its really needed to. Computer science is less similar to math than bio is to chem, but bio departments tend to be independent. I think CS needs to be as well. That we can contort math into CS does not mean that algorithms are the best way to view system administration, or even memory management and schedulers. Security can be seen through set theory, and graph theory, but so much of the work to be done is centered on tagging, tracing, and interpreting. These are things that, frankly, math sees as "should be automatic". Just take more samples!

    It takes a process perspective to realize, of course the instrumentation is the hard part. It's a matter of getting an accurate view of the process, and all data anywhere that might affect it (and not getting a view of a bunch of other data that won't). You can use math to help compute this, but it's the tool, not the field of study.

    1. Re:There's A Point Here by QuoteMstr · · Score: 1

      That's not computer science you're describing, but something else entirely. My school had a two-pronged approach to computer education: "computer science" and "computer engineering." The idea was right, but the implementation was wrong. Instead of "computer engineering" being the things you just described, it consisted of half electrical engineering and half the regular computer science stuff.

      That's not what you, or I, or anyone else who's thought about this topic has in mind.

      In the end, information technology isn't really a discipline suitable for a university, while computer science, as a branch of mathematics, is. IT is more like plumbing than physics, based on what most of the comments in this story seem to point to. With some specialized training, a middle school kid could be a competent programmer.

      However, nobody wants to lose the prestige of being a computer scientist. That's how we've ended up with the status quo.

    2. Re:There's A Point Here by Aladrin · · Score: 2, Insightful

      I think you are confused. The question is not 'Is Math Computer Science?', the question is 'Is Math -necessary- for Computer Science.'

      To use your War analogy, Math is not War, but Math is necessary for War. (Unless you like losing, of course.) Someone may have done all the mathematics long ago, and stored it in a computer for you use, but it's still necessary. You can be infantry in a war without knowing how to add. Heck, I'd bet you could even be a low-level official without anything higher than elementary school math.

      Programming is the same way. To use a PC, or script something up in VBScript, no math is necessary at all. To write a compiler (without which, computers can do nothing useful), you need college-level math. And for some applications, you need all the math that's known to humans.

      For years I've heard this same 'you don't need math to program' argument, and it's like saying you don't need roads to drive cars on. Sure, it's -possible-, but it's far from efficient and you're very limited as to what you can do with it.

      --
      "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
  84. Math degrees don't matter anymore by michaelmalak · · Score: 1
    The purpose of a math degree used to be 20% about the material actually learned and 80% learning how to analyze problems, recognize symmetry and patterns, identify constraining factors, prove assertions, and in so proving optimizing proofs to their bare essence.

    No more. Now students just look up the answers on Google.

    It's like trying to train to be a survivalist by looking up photos of Yosemite.

    (In-class tests are the usual response of teachers to Google, but this is a poverty. Previously, math tests were almost univerally take-home because the problems required such deep thinking that hours were required. In-class tests allow only simpler problems and reward shallow quick thinkers who have mastered the art of test-taking.)

  85. The corporate answer is shockingly no by tjstork · · Score: 1

    In the eyes of the corporate world, math is something mathematicians do, not computer programmers. If you are a developer and come up with an algorithm, for say, calculating the price of an energy contract or the risk of an insurance policy, chances are that the company, if sufficient large, has a Phd in Mathematics on hand whose job it really is to invent those algorithms.

    Your job, in corporate eyes, is just put it into the computer, get it into the database (where appropriate), and put it on screen. Most of the time, the Phd in math has enough computers to produce a C language prototype, and they will just hand that off for use in whatever language the business uses. Frequently, this is going to be VB.NET or C#, and more likely, C#.

    Now, this changes if you working for a software development firm. But, in the corporate world, such as working for a utility or a bank or an insurance company, a service industry basically, as a programmer, your job is not to be a math guy, but a computer guy. Let the math people do math, is what the corporate wonks would say.

    --
    This is my sig.
  86. I'm a trained mathematician... by mario_grgic · · Score: 1

    and to me mathematics is synonymous with thinking and abstraction. So if you can do computer science without ever thinking, good for you. But as soon as you start analyzing a problem, deducing a solution etc you are already doing mathematics, you just may not be aware of it.

    I don't understand people who want to pidgeonhole math into a subset of itself and who think math is numbers, computations, or at best calculus, and forget that the processes of modeling, generalization, deduction, abstraction are the essence of math. So pretty much any scientist of any kind is doing math implicitly (even people who abhor it and who went for softer sciences because they did not like math).

    --
    As the island of our knowledge grows, so does the shore of our ignorance.
  87. Re:I am able by Anonymous Coward · · Score: 0

    I'm the operator with my pocket calculator
    I am adding and subtracting

  88. Netcraft has yet to confirm that VB is dead. by Anonymous Coward · · Score: 0

    VB is this generation's COBOL.

    The only way COBOL will die is if the cost of enough COBOL programmers to maintain existing systems is greater than the cost of rebuilding each system plus the problems associated with refactoring.

    The only way I see this happening is if enough COBOL programmers retire and there aren't enough programmers to replace them. Unfortunately (from a technology PoV) the "free market" will most likely solve this problem by encouraging (through money and opportunity) younger programmers to learn/use COBOL (and they'll probably still be cheaper than the programmers they replace). Those young programmers will then only have COBOL experience, meaning that they'll be encouraged (through HR) to be COBOL programmers for life.

    VB is in the same position, the only relative unique "feature" of VB is that Microsoft can (most likely) kill it (or Microsoft could die [become as relevant as IBM], which doesn't really matter, because even if Windows were to fade MS would still market VB (and don't kid yourself, there would be sufficient demand for it)).

    Note that this argument is saying that established/large firms will not abandon COBOL/VB, not that newer firms will (most likely) avoid COBOL (which I believe is your argument).

  89. Oh? And when did you last write any? by Chemisor · · Score: 2, Interesting

    > Good luck on doing a kernel, file system, network stack, crypto, image processing,
    > window manager, animation or 3D without math or algorithms.

    And when, may I ask, did you last do any of these things? Only a miniscule portion of us are working on the kernel, file system, or network stack (and none of them involve any math beyond simple algebra). Only one or two of us has ever written a window manager, and that's the way it should be. Only NSA people work with crypto on a regular basis; the rest of us just use premade libraries (made by cryptographers, who require years of practice to become good in their tiny little area of expertise). 3D is all done in hardware these days; software renderers went out of style in the last century and if you are still doing it, your software must be either really slow or running at 320x240. And as for image processing, most of us don't do that either, and when we do, we don't invent the algorithms; we ask mathematicians to do that.
    Face it, most of us write code that has absolutely no math in it (I don't count algebra - it's just the way you write code). We make user interfaces, write database queries, and, I am sorry to say, rewrite parts of application frameworks we don't like (and there are a lot of such parts). Instead of math and algorithmic theory, these tasks would benefit from knowing how to structure your code properly, how to ensure portability and ease of localization, and, most importantly, how to correctly think about object oriented design.

    > I look forward to reviewing some of this guys code.

    Yeah, do look forward to it, since you'll be waiting a long time to see anyone write an "algorithm". I haven't written one in years, and even then it was for a software renderer made for fun. Real programming is about arranging objects and the control and data flow between them, not about crunching numbers. Numeric algorithms only exist in academia and in a few specialized libraries that nobody wants to, or should, rewrite. Design is what programming is about and that is what programmers should know and be taught. Mathematicians be damned!

    1. Re:Oh? And when did you last write any? by Anonymous+Brave+Guy · · Score: 2, Interesting

      3D is all done in hardware these day

      I hate to break this to you, but no. Drawing in 3D is often heavily supported by hardware and coded using libraries like OpenGL or Direct3D. But how do you think these libraries know where to put things? Someone's doing all the modelling to decide what to draw, and the requirements for this can be quite specialised if you're working in a field like CAD, or games development, or special effects. And who did you think newer versions of the libraries themselves grow on trees?

      Face it, most of us write code that has absolutely no math in it (I don't count algebra - it's just the way you write code). We make user interfaces, write database queries, and, I am sorry to say, rewrite parts of application frameworks we don't like (and there are a lot of such parts). Instead of math and algorithmic theory, these tasks would benefit from knowing how to structure your code properly, how to ensure portability and ease of localization, and, most importantly, how to correctly think about object oriented design.

      OK, but we're not talking about Software Engineering, we're talking about Computer Science. We're not talking about join-the-dots programming, we're talking about how you design the dots and the ways to join them. And you'd better hope the people who are doing that have sound theoretical bases for the models they adopt. Otherwise your database is going to be slow, your garbage collector will leak, your network stack is going to be insecure, and your operating system is going to deadlock.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Oh? And when did you last write any? by Anonymous Coward · · Score: 0

      Neither do you

    3. Re:Oh? And when did you last write any? by lena_10326 · · Score: 1

      Your comment makes sense, but my previous job goes against what you said.

      Performance and business analytics require math. A lot of it. After our initial puny attempts, the company went out and hired people with master's and doctorate degrees in math and the analytics has become a lot more accurate and complex.

      If I were just starting out in CS, I'd get the 2nd degree in math. It's easy to generate data. It's hard to analyze it.

      --
      Camping on quad since 1996.
    4. Re:Oh? And when did you last write any? by QuoteMstr · · Score: 1

      Tell me about it --- just a few days ago, I had to give myself a refresher on complex probability and statistics (specifically, binomial probability and related distributions) to analyze some advertising data. It's surprising how often applications of pure mathematics come up.

    5. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > Tell me about it --- just a few days ago, I had to give myself a refresher on
      > complex probability and statistics (specifically, binomial probability and related
      > distributions) to analyze some advertising data.

      You are not writing an application, you are doing research, which makes you an academic, at least in this particular instance. Chances are, nobody will have to maintain what you wrote, so you could write the whole thing in FORTRAN or APL, or whatever. You are simply illustrating my point is that writing software for real people is very different from writing little programs for research.

    6. Re:Oh? And when did you last write any? by Chemisor · · Score: 1, Flamebait

      > I hate to break this to you, but no. Drawing in 3D is often heavily supported by
      > hardware and coded using libraries like OpenGL or Direct3D. But how do you think
      > these libraries know where to put things?

      Having written a software renderer myself, I am very well aware how such libraries work, and I can tell you that very little higher math is involved in making them, and all that math has already been done. Yes, you need to know a bit about linear algebra, like how matrices work, and have some idea about vector transforms. But you only need to know how to visualize what you are doing and how to implement it, you will not be doing proofs and you will not be doing any theoretical research. All the formulas for transforms, matrix operations, viewport building, clipping, lighting, are already easily available at your local library and on the net. If you want to write your own renderers, you'll need to know a bit about calculus and how to use derivatives to manually step your iterators. But that's all. All your lambda calculus, discrete maths, set theory, group theory, and all other mathematical garbage are of no use here.

      > And who did you think newer versions of the libraries themselves grow on trees?

      My point is that the vast majority of programmers use libraries, not write them. There might be a small niche for a mathematician on a library development team, but that's a negligibly small market for such skills.

      > OK, but we're not talking about Software Engineering, we're talking about Computer Science.

      No, we are talking about Software Engineering, which is what most people here do. Yes, universities employ a few thousand professors that do computer science, but that requires an entirely different education path through a PhD, focusing on theory. Most programmers are programmers, and have no need for higher mathematics, which is the point made in the article.

      > And you'd better hope the people who are doing that have sound theoretical bases for the models they adopt.

      Bullshit. Nobody has developed anything useful in the field of computer science in more than a decade. All the higher-level theory has been done already. What really sucks is the implementation of those theories, and part of the reason that implementations suck is that ivory tower academics developing those theories are so stuck in their higher math, that they are ignorant of the problems of the real world and the implications for their theories that those problems impose.

    7. Re:Oh? And when did you last write any? by Anonymous Coward · · Score: 0

      Note, I am not the GP.

      > You are not writing an application, you are doing research,
      > which makes you an academic, at least in this particular instance.

      If a man only strings together components written by computer scientists does that make him a monkey?

      > Chances are, nobody will have to maintain what you wrote

      Some developers whose projects I have inherited over the years had that exact attitude.

      > writing software for real people is very different from writing little programs for research.

      If your argument is that modern "programmers" are not (and need not be) _capable_ of doing anything more than assembling pre-made components, let's call them something else.

    8. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > Your comment makes sense, but my previous job goes against what you said.
      > Performance and business analytics require math. A lot of it.

      As I keep pointing out, this is not a programming position, it's a research position. Yes, there are a few jobs available where you will do research of some kind, analyzing data and making conclusions from that data. My point is that the vast majority of programming jobs out there are involved with making software, not with data analysis. The vast majority of CS graduates will not be doing research and have no interest in doing research, so it is pointless to make them learn higher maths. For a data analysis position you really should not be hiring CS people anyway; hire a mathematician, because that is the sort of job they are good for.

    9. Re:Oh? And when did you last write any? by WilliamSChips · · Score: 1

      No, we are talking about Software Engineering, which is what most people here do. Yes, universities employ a few thousand professors that do computer science, but that requires an entirely different education path through a PhD, focusing on theory. Most programmers are programmers, and have no need for higher mathematics, which is the point made in the article. No, we're talking about Computer Science, hence why Computer Science is in the title of the article!
      --
      Please, for the good of Humanity, vote Obama.
    10. Re:Oh? And when did you last write any? by Anonymous+Brave+Guy · · Score: 2, Informative

      Having written a software renderer myself, I am very well aware how such libraries work, and I can tell you that very little higher math is involved in making them, and all that math has already been done.

      But that wasn't what I was talking about, as I thought was pretty clear from my previous comment. Sure, the rendering itself is fairly straightforward, but how do you decide what to render? And yes, I do do this for a living, and the maths and algorithms involved in serious CAD (for example) are not trivial.

      No, we are talking about Software Engineering, which is what most people here do.

      You might be. The rest of us are talking about Computer Science. The clue is in the title of the discussion.

      Bullshit. Nobody has developed anything useful in the field of computer science in more than a decade. All the higher-level theory has been done already.

      Sure. So tell me again the theory of how to get a compiler to automatically subdivide work and hand out chunks to different threads, so we can take advantage of all this wholesome multi-core goodness the chip vendors are providing us with these days?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    11. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > If a man only strings together components written by computer scientists

      There are no components out there written by computer scientists. Computer scientists make algorithms that a real programmer has to implement. You wouldn't expect a computer scientist to know anything about performance optimizations or code readability.

      Next, there are only a few components out there that have any algorithms. Numeric computaion is an extremely small part of any application. You might be reading jpegs, or decompressing zips, or decrypting something, but you don't write those libraries yourself and you don't need to know precisely how those algorithms work. The greatest bulk of your work will involve moving data around and interconnecting objects, and that is what all programmers need to know how to do, no mathematics.

      >> Chances are, nobody will have to maintain what you wrote
      > Some developers whose projects I have inherited over the years had that exact attitude.

      Yes, and many of them will have had CS degrees... Cause and effect? Perhaps.

      > If your argument is that modern "programmers" are not (and need not be) _capable_ of
      > doing anything more than assembling pre-made components, let's call them something else.

      It's funny you say this, for that is exactly what I think computer scientists are.
      After all, their work involves neither computers nor science.

      As for pre-made components, I'll repeat myself that if you ever worked as a programmer, you'd know that there are very few pre-made components you can assemble. Most of the time you write stuff yourself, and no, you don't need higher mathematics for any of it.

    12. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > Sure, the rendering itself is fairly straightforward, but how do you decide what to
      > render? And yes, I do do this for a living, and the maths and algorithms involved in serious CAD

      So why didn't they just hire a mathematician to do that job? Programmers write programs, mathematicians do the math.

      > You might be. The rest of us are talking about Computer Science.

      Ok, let me clarify. The article is talking about maths in undergraduate CS degrees. Most people who have a BS in computer science will not be doing research; they will be programmers, which, I suppose is software engineering. I will not argue with you that someone with a PhD in CS should know higher maths, that is what they do. There are very few jobs out there that will require that sort of skills, but somebody needs to do them. However, there is no point in teaching maths to undergraduates, who will be programmers, not researchers.

      > Sure. So tell me again the theory of how to get a compiler to automatically
      > subdivide work and hand out chunks to different threads

      There isn't one and only a "computer scientist" thinks there is going to be. To take proper advantage of multiple processors, you need good software engineering practices of proper design, good abstractions, and solid structures, none of which require higher maths do to. The so-called multithreaded algorithms are little more than hot air.

    13. Re:Oh? And when did you last write any? by Anonymous Coward · · Score: 0

      > All your lambda calculus, discrete maths, set theory, group theory,
      > and all other mathematical garbage are of no use here.

      Really? They're used in image analysis, perhaps someone more open minded than you would be able to utilize them in creating a better renderer.

    14. Re:Oh? And when did you last write any? by CharlesEGrant · · Score: 1

      Bullshit. Nobody has developed anything useful in the field of computer science in more than a decade.

      Yeah, that PageRank thing is totally useless. I don't use it more then 20 or 30 times a day. Bayesian spam filtering? Nobody uses that.
    15. Re:Oh? And when did you last write any? by CharlesEGrant · · Score: 1

      Ok, let me clarify. The article is talking about maths in undergraduate CS degrees.


      No. Did you read the article? The article is about a gentleman claiming an general, non-algorithmic approach to computer science. For example:

      "Mathematicians and computer scientists are pursuing fundamentally different aims, and the mathematician's tools are not as appropriate as was once supposed to the questions of the computer scientist. The primary questions of computer science are not of computational possibilities but of expressional possibilities. Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."

      Undergraduate degrees and undergraduate education aren't even mentioned in the article.
    16. Re:Oh? And when did you last write any? by lena_10326 · · Score: 1

      It wasn't a research job; it was a for profit business. And the algorithms delt with processing massive quantities of response data: 100 million records and billions of transactions and that was only a months's worth of data. We were worked on increasing that to 6 months.

      There were three types of jobs related to this processing. Yes, one was a pure research type of job but the others were not.

      #1. Created pure theory and developing analytic algorithms. High level math degree required.
      #2. Understood, read, and made suggestions for optimizing analytic algorithms. Implemented algorithms in code. Math degree required.
      #3. Implemented support modules. Needed a general understanding of analytic algorithms. Math degree not required but desired.

      Of course we also had a 4th code monkey type (admin web developer), but they were no where near the pay scale of the 3 I listed.

      By the way, the original algorithm processed 8 million users, hundreds of millions of transactions in about 12 hours. After we rewrote major portions, it was doing 100 million users, billions of transactions in about 8-10 hours using a high end massively parallel database as well as dozens of linux data processing hosts.

      --
      Camping on quad since 1996.
    17. Re:Oh? And when did you last write any? by Anonymous+Brave+Guy · · Score: 1

      So why didn't they just hire a mathematician to do that job? Programmers write programs, mathematicians do the math.

      It may surprise you to learn that the two are not mutually exclusive. The fact that our problem domain is mathematical just means we tend to have people around who can also think in terms of things like graph theory and numerical methods, which is handy because those happen to be areas where we develop a lot of our algorithms.

      Ok, let me clarify. The article is talking about maths in undergraduate CS degrees.

      I didn't see any reference to that in TFA. Where does it say anything about degrees, undergraduate or otherwise?

      In any case, by your argument people should stop doing science and mathematical degrees altogether unless they intend to go on to doctoral research, because most people will never use the advanced mathematics, physics, chemistry, or whatever they learn in an undergrad degree otherwise. Of course, this completely ignores the benefits of studying a subject at undergraduate level beyond rote learning, such as understanding different approaches to solving problems in the field and learning different ways to think about things.

      So tell me again the theory of how to get a compiler to automatically subdivide work and hand out chunks to different threads

      There isn't one and only a "computer scientist" thinks there is going to be. To take proper advantage of multiple processors, you need good software engineering practices of proper design, good abstractions, and solid structures, none of which require higher maths do to. The so-called multithreaded algorithms are little more than hot air.

      What a very sad, narrow-minded view. Maybe if you studied a little more about the formal models underlying programming, you'd realise why what you wrote there isn't true, and you'd know that several of the smartest people in the field are working on ways for compilers to do this automatically.

      I always find it odd when people take your view of studying the construction of compilers. No-one questions the usefulness of optimising compilers, and programmers in many languages take things like garbage collection, type systems, or lazy evaluation for granted. Yet all of these things come from much the same basic idea: somewhere in the compiler or run-time system, the program is evaluated according to certain criteria, and based on the results of that evaluation, the executable code is transformed so that it preserves the programmer's intent but carries out its work in a different way without the programmer's explicit control. Why would you think automatic parallelisation was any different?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    18. Re:Oh? And when did you last write any? by lena_10326 · · Score: 1

      I misspoke. I should have said analytic comparisons instead of transactions.

      --
      Camping on quad since 1996.
    19. Re:Oh? And when did you last write any? by Anonymous Coward · · Score: 0

      By the way, the original algorithm processed 8 million users, hundreds of millions of transactions in about 12 hours. After we rewrote major portions, it was doing 100 million users, billions of transactions in about 8-10 hours using a high end massively parallel database as well as dozens of linux data processing hosts.

      How much math does that involve? Split up the things that can be done in parallel and throw more horsepower at it.

    20. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > Yeah, that PageRank thing is totally useless. I don't use it more then 20 or 30 times a day.

      I said in the last decade. Google was founded in 1998, so I presume PageRank is a bit older than that.

      > Bayesian spam filtering? Nobody uses that.

      Bayesian methods have been around for centuries. Applying them to spam filtering is new, but it is more of an implementation detail than any significant research breakthrough.

    21. Re:Oh? And when did you last write any? by Chemisor · · Score: 1

      > It may surprise you to learn that the two are not mutually exclusive.

      Perhaps not, but I am forced to repeat myself that jobs in which mathematical research is required are very rare. Most programmers will never encounter such requirements.

      > In any case, by your argument people should stop doing science and mathematical degrees
      > altogether unless they intend to go on to doctoral research, because most people will
      > never use the advanced mathematics, physics, chemistry, or whatever they learn in an
      > undergrad degree otherwise. Of course, this completely ignores the benefits of studying
      > a subject at undergraduate level beyond rote learning, such as understanding different
      > approaches to solving problems

      Oh, please! You don't go to college to learn things. You go to college to get a degree. If you want to learn something, go to the library. Everything I learned in college, I learned there. Classes are useless; I can read the book by myself, thank you very much. The professors are of no help outside of class either, even if you manage to get to see them. In fact, the only reason to take any science classes at all is for the labs, where you can get practical xperience. Yes, I spent a lot of time in the chemistry labs even though I was a CS major, and it was time well spent. But any classroom time? A total waste.

      >> The so-called multithreaded algorithms are little more than hot air.
      > What a very sad, narrow-minded view. Maybe if you studied a little more about the formal
      > models underlying programming,

      I have studied them, thank you very much.

      > No-one questions the usefulness of optimising compilers

      Optimizing a code for a processor is an entirely different task from making non-threaded code run on multiple processors. The former is a mere technical algorithm, applying a bunch of little rules. The latter requires MAJOR code changes on the global level. There is no way you are ever going to take an algorithm and parallelize it without making some serious architectural changes to the entire application. It's just like a "computer scientist" to think about everything as an algorithm. Parallelization is a problem of program structure and cannot be solved by any amount of local tweaking. You have to set up data splitting and merging, flow control, and checkpointing, all of which are not generalizable for different types of data.

    22. Re:Oh? And when did you last write any? by Anonymous+Brave+Guy · · Score: 1

      I have studied them, thank you very much.

      OK, I give up. You persist in failing to read what I and others have written. You claim to have studied things, though you admit you didn't get much use out of university other than in the library.

      You clearly haven't got a clue when it comes to program analysis and automated parallelisation, because according to you, it's impossible to do things a research group based less than a mile from where I work have already documented doing. There are even published papers and videos of lectures you can download that describe how they've done it and when the techniques they've got so far are applicable — a Google search for "automated parallelisation" returns more than 70,000 results, many of the first ones being directly relevant.

      Optimizing a code for a processor is an entirely different task from making non-threaded code run on multiple processors.

      No, it isn't. It's a closely related problem, and amenable to solution with much the same techniques. Fortunately, the fact that you choose not to believe this won't stop real computer scientists from doing it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    23. Re:Oh? And when did you last write any? by lena_10326 · · Score: 1

      How much math does that involve? Split up the things that can be done in parallel and throw more horsepower at it.
      This was not summing a bunch of numbers. It was behavioral analysis. Math way beyond my understanding and yet I was very good at calculus and linear algebra in college. They were doing mostly statistical stuff. I couldn't even read the formulas.
      --
      Camping on quad since 1996.
    24. Re:Oh? And when did you last write any? by CharlesEGrant · · Score: 1

      I said in the last decade. Google was founded in 1998, so I presume PageRank is a bit older than that.

      Yeah, about two years older according to the link I provided. Repeating your original statement:

      Bullshit. Nobody has developed anything useful in the field of computer science in more than a decade.

      Emphasis mine. Exactly how much more did you mean then?

      Applying them to spam filtering is new, but it is more of an implementation detail than any significant research breakthrough

      But you didn't say there had been no significant research breakthroughs in more then a decade, you said nothing useful had been developed in more then a decade. I submit that PageRange and Bayesian filtering are useful and were developed only slightly more then a decade ago. Those two counter-examples (from off the top of my head) are sufficient to disprove your original statement. If you want to modify your assertion, then we can try again.
    25. Re:Oh? And when did you last write any? by CharlesEGrant · · Score: 1

      Oh, please! You don't go to college to learn things. You go to college to get a degree. If you want to learn something, go to the library. Everything I learned in college, I learned there. Classes are useless; I can read the book by myself, thank you very much. The professors are of no help outside of class either, even if you manage to get to see them.

      I'm sorry you had a crappy experience in college. Some of us had a very different experience. I did go to college to learn things, and I found the classwork and the professors very helpful. You may be a very talented person who can learn things by reading a book. Some of us need a coach who can keep us honest when we think we've understood something, but actually haven't. Some of us are prone to fooling ourselves. There is nothing like defending your ideas to a skilled and professional critic to keep yourself honest about the depth of your understanding.

      You have to set up data splitting and merging, flow control, and checkpointing, all of which are not generalizable

      How do you think the deep pipelines on modern superscalar processors get filled? I mean, ever since the Pentium Pro even the x86 architecture has had multiple integer, floating point, and address units that all run in parallel, not to mention instruction reordering.
    26. Re:Oh? And when did you last write any? by Anonymous Coward · · Score: 0

      Only a miniscule portion of us are working on the kernel,
      I think writing code in kernel space is a bit more common than you've implied.

      Only NSA people work with crypto on a regular basis;
      I think this is one of the most ignorant statements. What about, say, the people writing OpenSSH?

      3D is all done in hardware these days;
      Have you ever used OpenGL or Direct3D? If so, you will know that you are asked to set up a variety of matrices. A matrix is a math concept. ;-) I'm going to guess by the rest of your post that you haven't taken a formal linear algebra class.

      Yeah, do look forward to it, since you'll be waiting a long time to see anyone write an "algorithm". I haven't written one in years, and even then it was for a software renderer made for fun. Real programming is about arranging objects and the control and data flow between them, not about crunching numbers
      Let's look at a definition of Algorithm, hm? Wikipedia says: an algorithm is a finite list of well-defined instructions for accomplishing some task that, given an initial state, will terminate in a defined end-state. Now. Tell me if that description doesn't fit every program ever written. The answer is that it does. There is a reason for this.
  90. More like rocket science? by gvc · · Score: 1

    So why isn't rocket science just rocket engineering?

    Because it pushes the envelope of what we know. In order
    to make rockets work, humankind had to form theories and
    hypotheses and test them by experiment; i.e. the scientific
    method. The public just see the ultimate successess and
    failures, but there are thousands -- probably millions --
    of true scientific investigations along the way.

    Engineering, on the other hand, deals with the routine. Sure
    you might design new brakes for that car or whatever -- that's
    why engineering is often called applied science -- but the
    basic process of building an automobile or road is pretty
    routine.

    There's a fuzzy line between routine applied science and
    science applied to discover fundamental new truths, but I'd
    say that building a road and flying to the moon are on
    opposite sides of the line.

    So where is computer science? There are plenty of fundamental
    truths left to be discovered, and I'd call the exploration
    of those "computer science." The routine generation of some
    payroll system or commercial app, I'd call "engineering."
    "Software engineering," on the other hand, I would call "management
    science" which, IMO, neither science nor engineering.

    1. Re:More like rocket science? by Anonymous Coward · · Score: 0

      Nope, yet more rubbish. Well done slashdot, most incompetantly espoused thread ever.

      It is called rocket science because most early rocket scientists, like many early computer scientists, started as physicists and, being snobs, hate being called engineers. Computer/rocket science are computer/rocket engineering, absolutely no question. In both cases the goal is to build something, not to understand something for its own sake. Hence, the scientific investigations that are necessary in these fields are strictly on a need to know basis, hence it is engineering. The distinction between science and engineering is not defined by how routine something is. In school you probably did science experiments that have been run millions of times by others. Did you call it engineering?

  91. Clueless article by IkeTo · · Score: 1
    The title of the story seems to make a lot of sense. Computer science should be the science about how to make computer does the work that people want, and it should not be just a mathematical science; and given the wealth of knowledges that mathematics is already offering, and the lack of trusted knowledges from other parts of equation like programming process and creative thinking, I think it should worth the click. It doesn't. Just see the following quote straight from TFA:

    A logic circuit is not a sequence of operations. An operating system is not supposed to terminate, nor does it yield a singular solution. An operating system cannot be deterministic because it must relate to uncoordinated inputs from the outside world. Any program utilising random input to carry out its process, such...is not an algorithm.


    So the article isn't about all those. Instead, it is because that stupid guy didn't know that mathematics do not end at computing a function. He thinks there is no mathematics in programs just because they deviate slightly from the simplest model of computation that put some input to the RAM tape and have an algorithm put something into the output tape. He ignores that mathematics is rich enough to capture computations that lasts more than providing a single value. He ignores the wealth of knowledge of mathematics that deals with coordinating other computation. He ignores the wealth of knowledge that deals with random process and, indeed, the source of randomness, which is algorithmically created. And then he claim that mathematics has no place in it, ignoring that once you have any sort of idea, it requires mathematical arguments to make sure nothing wrong can happen to it. I can't help but believing that this is one of the most clueless article I've ever seen in /.
  92. Re:Well... Yeah by RPoet · · Score: 2, Insightful

    Ok, someone said you needed math to get a filesystem going. I'm sorry, but you really don't need to know how to use a Fourrier Series, or to know the Achilles Numbers by heart to open a file, save some stuff in it, and then close it eh...

    Yes, because that's how you design and implement a file system.
    --
    "Oppression and harassment is a small price to pay to live in the land of the free." -- Montgomery Burns.
  93. Stupid by Pedrito · · Score: 1

    I RTFA and the guy is off his rocker. Computer science isn't math and I don't think anyone (except maybe the author) confuses it with math. It uses math as a tool, but it's certainly not math. It's almost like saying a biochemist would be better off without knowing biology or chemistry. They're both tools of the biochemist, but he/she is neither a biologist nor a chemist. Many professions use math as part of the job. An accountant isn't a mathematician, yet an accountant also uses math as a tool. A mechanical engineer isn't a mathematician, but a mechanical engineer also uses math as a tool. I could go on and on all day.

    Personally, I hate math. I've been writing software for 28 years. Math, at least algebra, is something I accept as a necessary evil to do the job, but I've rarely needed more advanced forms of math to do the job. Algebra is simply one of many necessary tools used by the computer scientist. But logic isn't strictly a mathematical concept, and logic is definitely a bigger part of computer science.

    Most of the programmers I've worked with don't really spend a great deal of time thinking about math. They spend time thinking about object oriented design and interactions between components. These aren't mathematical concepts at all.

  94. I agree, but... by Poromenos1 · · Score: 1

    I agree with you in general, but there's a particular point I disagree with. VBScript is a great scripting language to embed into applications (well, nowadays you can embed python wherever you can embed VBScript, so it's not that great), but the GP's beef is with the actual Visual Basic language, I think. I learnt Visual Basic as a first serious language and you could do a great deal with minimal effort, and that is what is great about VB.

    I was a staunch supporter for years, until I learnt python and realized that VB didn't teach me any important programming concepts like classes, exceptions, etc etc (that's until VB 6 or so, .NET is totally different I think). In VB, you don't really need classes, so you get by without them. I don't know if you need classes in python or if I just happened to learn them then, but the fact is that I couldn't understand a single word of advanced programming APIs when I knew VB and I know a great deal more now with python (admittedly, I learnt C/C++, assembly, php, etc etc in the meantime as well).

    To recap, my point is that since VB is good enough, you never become a "real" programmer with it.

    --
    Send email from the afterlife! Write your e-will at Dead Man's Switch.
    1. Re:I agree, but... by sandman_eh · · Score: 1

      I agree with you in general, but there's a particular point I disagree with. VBScript is a great scripting language to embed into applications Possibly. But for WSH I have much more luck using JScript - JScript supports closures and similiar stuff which I have no clue whether are even possible in VBSscript - is more portable meaning I can test my algorithms in spidermonkey . Asva a result my JScript stuff tends to be neater and more elegeant the the same in VBScript.
      --
      Master of Peng Shui.Ancient oriental art of Penguin Arranging)
  95. Just In: Thinking not required to live by bblboy54 · · Score: 1

    I hate math... In college I was failing statistics so badly by the third week that I mathematically not be able to pass the class. I couldn't figured out statistics but I needed math to realize that I couldn't pass the class.

    Point is, I think the emphasis on math is a little skewed but the author of the post is more skewed than anything. Basic math (+, -, X, /) may really not be all that important since us geeks are surrounded by computers that can EASILY do that for us but I can't understand how you can even begin to work with a computer and understand computer logic unless you understand at least the basic principals of algebra.

    So a system that is based on 1's and 0's (I checked, those are NUMBERS) suddenly does not require any mathematics to operate?

  96. Not quite. by mario_grgic · · Score: 1

    I would correct your analogy just a little bit.

    Science: Physics
    Engineering: Electrical engineering e.g. design a micro chip
    Technology: Actually make a micro chip

    There is big difference between knowing how it works at a physics level. A much broader class of people know this. A much much smaller class of people know how to design one. And even smaller class of people know how to make one.

    Same with a nuclear bomb. I think we all know how it works. Some might even know how to make one. But very few have the technology to purify the materials to make one. See the distinction. At each level different kind of knowledge is required.

    --
    As the island of our knowledge grows, so does the shore of our ignorance.
  97. maths IS useless by Anonymous Coward · · Score: 0

    I would have to agree... I graduated from a Computer Science degree 8 years ago, and the most complicated maths I have used has been tangent to the curve stuff - and I learnt that in high school! All the probability and number theory stuff was so utterly useless I would have been better off doing something else with my time. If you are using a CS degree to become a mainstream coder, DBA or sys admin then the maths is useless. If you are using it to build your own 3D engine, or perform some real-world modeling of complex items then it is essential.
    Overall I thought a CS degree was a complete waste of time and delved too much into the history and theory of algorithms, when all I ended up learning was how to code and think logically - and you can do that in 21 days from a book! ;) ;)

  98. You sir by mario_grgic · · Score: 1

    are an idiot.

    --
    As the island of our knowledge grows, so does the shore of our ignorance.
    1. Re:You sir by Arapahoe+Moe · · Score: 1
      Nice. Here's something you can use next time ....

      Your momma's so stupid that she took a job cutting grass on an oil rig.

    2. Re:You sir by Taco+Meat · · Score: 0

      At least he has a mother. You have a one legged transvestite whore from whose anus you oozed, you little piece of afterbirth, you nasty little teratoma who cannot even type a coherent sentence.

      Speaking of your mother, is she still hanging around in dockside bars? I am sick of dressing like a pirate just to play hide the sausage with her skanky nasty ass.

      --
      It's not narcissicism if it's true!
    3. Re:You sir by Taco+Meat · · Score: 0

      Hey buttplug! You still alive or did you finally choke on your mother's pecker?

      --
      It's not narcissicism if it's true!
    4. Re:You sir by Arapahoe+Moe · · Score: 0
      Teratoma? Hanging around dockside bars? Dressing like a pirate?

      Who the fuck writes (much less talks) like that? Is this Rory or Lorelai from the Gilmore Girls?

      Go worship a cow or whatever the crap you diggy diggy do-has do with cows, Suresh. Praise Vishnu or whatever the fuck.

    5. Re:You sir by Anonymous Coward · · Score: 0

      "Is this Rory or Lorelai from the Gilmore Girls?"
      Almost forgot to tell you. I am your father, and I hate you. After leaving your fat nasty mother I also left your fat nasty carcass in the wal*mart. Its a good thing your mother can smell bacon from a mile away, else she'd ahve never found you, you nasty hog.

  99. It doesn't in my case by GomezAdams · · Score: 1

    I have dyscalculia - the trouble with numbers that people have with dyslexia have with letters. Numbers crawl all over the page when I look at them and the harder I concentrate the worse they crawl. I also put numbers into sentences when writing - like 5 for F and otherwise fairly neat block lettering gets pinched and scribbled when I write numbers. But my analytical skills are sharp. Maybe sharper because I had to learn how to compensate. But having said that, most of my problems as a software architect are 'word problems'. Get this damn pile of rubble to do X,Y, and Z'. I have realized fairly complex math formulas into algorythms to do the math that I couldn't otherwise do at gun point. In fact one of the reason I bought my first computer was to get it to do the math for me that I couldn't. I know how math works, I just can't get the ansmwers on my own. So when it comes to CS, IMHO - it's better to be a good analyst and detail oriented than be a math major.

    --
    Too lazy to create a sig...
  100. Depends on what you're computing by Anonymous Coward · · Score: 0

    Many, probably most, applications are simple accounting and data storage/retrieval, for which higher math is not often needed.

    If your computing needs are "scientific", then yes, higher math is more likely to come into play.

    The biggest mistake I made was going in for Computer Science, when all I really needed to take was a few business oriented programming languages and accounting. Learn those, and the fundamentals of database design, and you can "out-program" 99.999% of your competitor programmers.

  101. You need a refund... by mario_grgic · · Score: 1

    on your degree. It really is useless if you think that way. You don't seem to even know what math or computer science is, after earning? a degree in it? Sad, truly sad.

    --
    As the island of our knowledge grows, so does the shore of our ignorance.
    1. Re:You need a refund... by Anonymous Coward · · Score: 0

      Why don't you wow me with your wisdom about MATHS instead of making smart arse comments?

      The only consolation is that when i graduated I was on a much higher salary than people who had dropped out of high school and spent the same amount of time learning on the job. CS teaches you how to think logically. CS also teaches you how to find, process and deliver information more effectively. If you need the maths then you'll probably learn it on the job.

  102. Re: dyscalculia by QuoteMstr · · Score: 1

    Do you have trouble just with numerals, or the more general concept of numbers? If the former, are just the arabic numerals affected, or are things like tally marks and Roman numerals affected too?

    If it's the latter, and, say, a + b - c = d crawls around on the page, how do you compensate for that?

  103. Wrong kind of abstraction by Chemisor · · Score: 1

    The trouble with math-oriented computer scientists is that they abstract the wrong things. Yes, we need to create abstractions in programming; it is what our job is all about, but we abstract processes, not numbers. A mathematician thinks in terms of numbers and functions, which naturally helps in creating numeric algorithms. But they forget, or simply don't know, sitting in their ivory towers, that real programming does not involve any numeric algorithms. Number crunching is for research. Universities are full of scientists who do just that, getting numbers from experiments and writing numeric algorithms to make sense of those numbers. Outside the universities, nobody ever does that; if there are any numbers involved, we do it in Excel. So when you write software for anyone outside the academia, knowing lots of math to know how to invent new numeric algorithms is worthless.

    You will be creating abstractions in the real world, but they are different kinds of abstractions. These will not be based on numbers, but on processes and on structure. To make them you'll recognize similarities between functions or object arrangements and create abstractions to merge them. This is how you make small code. This is how you save time for others, who will be able to use your abstractions directly instead of writing lots of duplicate code or hundreds of special cases. Writing such abstractions requires a lot of skill, but that skill is not mathematical and someone who obsesses about math will not be able to create them correctly.

    Look at STL, parts of which are a shining example of uselessness. One of its core ideas is a collection of abstract algorithms into which we plug in our own functions. Sounds great to a mathematician, but a horrible idea in reality. First of all, we don't have functions; we have objects, and STL does not play well at all with objects and member functions. Anyone who tries, discovers how quickly their code becomes an unreadable bloated pig. Second, "plugin" functions generate bloat. Yes, the compiler can inline stuff, some of the time, but in most situations you end up with larger code then you would have otherwise. Mathematicians also have no experience with PLTs and have no frigging idea how huge those instantiated template algorithm names are and how much they add to disk space usage and application startup time. OpenOffice enormous startup time is largely caused by such things. Third, "plugin" functions don't fit into an object-oriented design. They just don't belong anywhere. An academic doesn't care about such things, since all he has is a few hundred vectors of floats, with no structure whatsoever. He doesn't have to maintain his code, he just throws it away when he's done with the current computation. In the real world, programs live for decades, and clarity of structure is paramount.

    It is the structural abstractions that are most common and most needed. Any programmer would be well served in developing the skill to do these properly, as only a few have that skill, evidenced by thousands of poorly designed projects on SourceForge. So screw the math and spend your time on learning design instead!

    1. Re:Wrong kind of abstraction by QuoteMstr · · Score: 1

      Just FYI, take a look at boost for C++. It's (basically) a template library that makes working with the STL (even with member functions) a breeze. Take a particularly good look at the shared_ptr, bind, and lambda libraries.

    2. Re:Wrong kind of abstraction by Chemisor · · Score: 1

      > take a look at boost for C++. It makes working with the STL (even with member functions) a breeze.

      No it doesn't. Using algorithms with bound templates in boost is no different than using them with STL. It in no way addresses the problems with member functions and general bloat problems when using binds of any kind. With member functions I still have the same gripes. First, you have to specify the fullly qualified name, which is not fatal, but creates more code to read. Second, when you bind a member function by pointer, you call it by pointer, which incurs runtime overhead of at least four extra instructions per call, a branch misprediction, and a cache miss due to that. Yes, sometimes the compiler can figure out which function you are calling and use a direct call, but that is rare. Third, you seldom just call a member function; you call it with some argument, which necessitates the use of bind objects, which are never inlined due to object construction requirement. And, finally, there is the readability issue. Functional, LISP-like syntax is what makes math-oriented academics comfortable, but it makes normal people scream. The resulting hit in readability and performance makes binding a really bad idea. It is always better to create a proper abstraction by examining your class hierarchy and creating a generic, non-templated algorithm that works on everything. Yes, this is always possible! If you think you can't, check your assumptions.

      > shared_ptr,

      Love of refcounted pointers and garbage collection are a sure indication that you have no idea how to define object lifetime. An experienced programmer knows that it is essential to know who owns what object and how long they live. This is not just a memory management problem, it is also a threading problem. Locks and lots of shared objects are symptoms of the same thing. Once you strictly define object ownership and lifetime, you'll quickly discover that garbage collection is unncecessary, refcounted pointers are not needed, and all threading problems disappear.

      > lambda libraries.

      Suffer the same problems as binding, as outlined above. Additionally, this capability encourages turning C++ into LISP, which is the treasured goal of academics, and is utterly despised by all real programmers.

    3. Re:Wrong kind of abstraction by QuoteMstr · · Score: 1

      Love of refcounted pointers and garbage collection are a sure indication that you have no idea how to define object lifetime. An experienced programmer knows that it is essential to know who owns what object and how long they live. This is not just a memory management problem, it is also a threading problem. Locks and lots of shared objects are symptoms of the same thing. Once you strictly define object ownership and lifetime, you'll quickly discover that garbage collection is unncecessary, refcounted pointers are not needed, and all threading problems disappear.


      Agreed, for the most part. Lack of object ownership is a big problem. People's eyes tend to glaze over when you start talking about it, though, unless they've had experience with a non-garbage-collected language.

      That said, there are times when reference counting is the right solution --- consider graphs!

      Also, I don't see what memory ownership has to do with locking. An object might be owned by another, yet accessed from a different thread anyway. That said, threaded programming is horrible and should be used as a last resort, and if needed, threads should share as little as possible anyway. :-)

      [snip rant about template bloat]


      Those are all compiler problems, not language ones. A sufficiently smart compiler ought to be able to inline out indirect calls to member functions as well as bind objects (the C++ as-if rule allows side-effect-free constructor calls and object creation to be optimized out.)

      gcc 4 does a pretty good job of actually optimizing many of these cases, and we're only going to see better compilers with time. It's unfortunate that many compilers aren't as good though.

      It is always better to create a proper abstraction by examining your class hierarchy and creating a generic, non-templated algorithm that works on everything.


      Agreed, as far as abstraction goes, but this is really getting into an argument about object-oriented versus generic programming. Okay, say you're using a compiler that can't optimize the call through the member function pointer, and you have to use an indirect call. How is that differently, exactly, from calling a virtual function through a vtable (which is what I imagine your abstraction layer doing) in terms of performance?

      Can you give me an example of a better abstraction setup, one that doesn't incur these penalties, but remains reusable?

      That said, virtual or indirection function calls really aren't as big a deal, performance-wise, as a lot of people make them seem. If every instruction is that important, then write that function is assembly!

      lisp is teh devil arghhhh aaarrrr [fixed]


      I like Lisp. I suppose that invalidates my opinions. :-)

      Seriously, using lambda functions doesn't mean you have to give up imperative programming. I'm a big fan of imperative programming, most of the time. But writing an inline callback is not academic ivory-tower nonsense, it's something people do every day. Java people do it with anonymous inner classes, and people there don't scream bloody murder.

      (And we're talking about Java people :-) )

      So what's wrong with similar functionality in C++?
    4. Re:Wrong kind of abstraction by Chemisor · · Score: 1

      > Agreed, for the most part. Lack of object ownership is a big problem.
      > People's eyes tend to glaze over when you start talking about it, though

      The existence of stupid people is not a good argument for a language feature.

      > That said, there are times when reference counting is the right solution --- consider graphs!

      That's right. Consider graphs, and discard them. If you need a graph for anything, you are already in deep dudu because you haven't optimized object relationships. That said, if you really think you have a graph-like structure, the graph should not own the nodes. Put the nodes in an array and use another array to store links. This is the proper ownership structure for this problem. The benefits include not having to worry about memory management, an automatic incentive to implement inversion of control (which you probably will want eventually in this situation), less template bloat because the link array will probably be type compatible with something simpler, easier database integration (this is how you do many-to-many relations there), faster node lookup (links are smaller than the nodes, and so the lookup array has a better chance of fitting into cache), and easier debugging (you can dump the graph nodes or links in a simple loop).

      > Also, I don't see what memory ownership has to do with locking.
      > An object might be owned by another, yet accessed from a different thread anyway.

      Use your abstraction skills, man! :) When you have objects shared between threads, you have not properly defined object access rights, which are a part of defining ownership. Ideally, you should not share data between threads at all. Data flow should be one way. You create a data packet, give it to a thread, the thread processes the packet and notifies you when it's done. If you need to access data from more than one thread, it usually means you need to combine that code in a single thread. If you don't, lock contention will wipe out any performance gains you might have had from parallel processing.

      > [snip rant about template bloat]
      > Those are all compiler problems, not language ones.

      Not always. When you create a bound function, you have to instantiate an object, which is indeed a language requirement. Yes, sometimes a trivial constructor can be inlined, but you need to look at the assembly every time to make sure it happened.

      > Agreed, as far as abstraction goes, but this is really getting into an argument about
      > object-oriented versus generic programming. Okay, say you're using a compiler that
      > can't optimize the call through the member function pointer, and you have to use an
      > indirect call. How is that differently, exactly, from calling a virtual function through
      > a vtable (which is what I imagine your abstraction layer doing) in terms of performance?

      A virtual call generates less code than a member call by pointer, but that's not really where the problem is. The real difference is that generic programming generates more code. Every time you instantiate an algorithm, you essentually cut-n-paste all the code in it. Templates eliminate the errors inherent to cut-n-paste programming by doing it automatically, but you still have code bloat. In the approach I am advocating you have true code reuse, not just in the source, but in the compiled executable as well. Once you realize that it is possible to do everything just as simply by creating proper abstractions, generic programming ceases to have any benefits at all.

      In general, the proper use of templates is type safety, not code duplication. Yes, it is occasionally useful to have a templated function; I have written quite a few of them. You just need to realize that it is cut-n-paste programming and is not a substitute for correct design.

      > Can you give me an example of a better abstraction setup, one that doesn't incur these penalties, but remains reusable?

      I can't give you an abstract abstraction!

    5. Re:Wrong kind of abstraction by jbengt · · Score: 1

      "A mathematician thinks in terms of numbers and functions, which naturally helps in creating numeric algorithms."
      Expand your definition of maths: http://en.wikipedia.org/wiki/Predicate_calculus

      ". . . if there are any numbers involved, we do it in Excel."
      If you are doing any serious statistics, please consider using gnumeric instead.
      http://www.stat.uiowa.edu/~jcryer/JSMTalk2001.pdf
      http://developers.slashdot.org/article.pl?sid=04/0 2/23/068219

    6. Re:Wrong kind of abstraction by Chemisor · · Score: 1

      > Expand your definition of maths: http://en.wikipedia.org/wiki/Predicate_calculus

      I'm more than happy to add predicate calculus to the list of maths a programmer does not need to know. Thank you for your contribution.

      > If you are doing any serious statistics, please consider using gnumeric instead.

      If you are using Windows, you are going to be using Excel because that is what comes with it. Whether to use MS Office or free software is company policy.

    7. Re:Wrong kind of abstraction by jbengt · · Score: 1

      TFA didn't address what a programmer needs to know, it did claim that computer science was not rooted in math.

      The point about not using MS Excel for statistics was that there are errors in the Excel statistical package that went unfixed for years (maybe fixed in MS Office 2007 ?, does anybody know?); similar errors got fixed quickly in Gnumeric.

    8. Re:Wrong kind of abstraction by Anonymous Coward · · Score: 0

      We're supposed to take advice about "what a programmer doesn't need to know" from somebody who a) didn't know what predicate calculus is, and b) thinks that a copy of MS Office is included with every copy of Windows? The entire field of study is doomed.

  104. Math won't save you if you're incompetent by Anonymous Coward · · Score: 0

    Math does not a great computer scientist make.

    The worst CS/IT "professionals" were mathematicians. Worst teachers of programming, too: they'd bog one down in solving math problems rather than freeing one to concentrate on learning programming techniques, algorithms, good programming practices, and concepts crucial for developing a sense of engineering.

    Math is necessary for certain kind of problems, very specific problems; but most computing problems and tasks today don't require math, they require talent, good sense to design scalable systems and lots and lots of "feeling" and experience.

    A math professor isn't a programmer, nor is he a system engineer (Jeff Bonwick being a notable exception, with 20+ years experience in system engineering); therefore, a math professor without a background in those disciplines can't teach one networking - TCP/IP, DNS, web servers, databases, C/C++ (effectively, apart from sloving math problems with the language), assembler, good program design, firewalls, proxies, and, and, and...

    BTW, some of the best bank/finance programmers writing trading applications with lots and lots of math aren't mathematicians - but biologists and physicists (know quite a few personally). Maybe one ought to ask oneself why that is so.

  105. "Computer Science" is rare. by Anonymous Coward · · Score: 0

    Most people here are re-inventing wheels.

    This is not science.

    The blame for this is a copyright system not suitable for software.

  106. It's "Maths" not "Math" by Anonymous Coward · · Score: 0

    The abreviation of "mathematics" is "maths" not "math". Only the yanks get it wrong

  107. Have you by Colin+Smith · · Score: 1

    We need fewer programmers, not more. Maybe professional certification would help somewhat. Salary not what it used to be?

    --
    Deleted
  108. I wholeheartedly agree by Alonzo+Meatman · · Score: 1

    When I was getting my BS in computer science, they made us minor in math. As a result, I had to spend hours and hours doing a whole bunch of math that I pretty much hated. The worst part was that in no way did the math help me to become a better programmer. Sure, if I were doing graphics processing or AI or something like that, I'd probably need some math, but those have never been my areas of interest. Since I've graduated, I haven't used calc or liner algebra or advanced stat a single time. By this point, I've probably forgotten it all.

    It's sad to think that all the time I spent doing math in college could have been spent learning useful things, like design patterns or UI design or unit testing.

    1. Re:I wholeheartedly agree by IL-CSIXTY4 · · Score: 2, Insightful

      Lots of people in this discussion mention that they don't use any of the math they were forced to take in college. I think the problem is that schools are requiring the wrong kinds of math, or maybe they're using math to "weed out" students instead of helping them. I think classes in formal logic and discrete math are invaluable to computer science students. Calc...eh, not so much.

    2. Re:I wholeheartedly agree by Rick+BigNail · · Score: 1

      Kind of agree.

      I think calculus is invaluable too, but just not the way it is taught in first year College maths.

      Hey, newton method is really like a simple pascal program :)

  109. Yeah!!! by Dunbal · · Score: 1

    I'm all for it! Do away with those pesky additions and subtractions and "variables" that make programs so complicated! Get algebra out of the code!

    --
    Seven puppies were harmed during the making of this post.
  110. Re:'go at the bar and have a drink science' by Nontagonist · · Score: 1

    "Computer engineering.. yeah.. I can understand that.. But man.. Computer SCIENCE ?

    That's like saying 'car science', 'cooking science' or 'go at the bar and have a drink science' !"

    Funny you should mention that last one. I remember reading about a study
    that was done by a guy in a bar that related the rate of drinking to the
    type of music that was being played. The guy had a drink for camouflage,
    but he also had a concealed tape recorder and a pencil. Every time someone
    took a sip of their drink he'd tap the pencil on the table near the recorder.
    He found that the sadder the country & western song, the more the listeners
    would drink. (As though they wanted to drown their sorrows, on behalf of
    song's protagonist.)

    How's that for 'go at the bar and have a drink science'?

    --
    There is another theory that states that this has already happened.
  111. OpenGL by BlueParrot · · Score: 1

    If you have ever used a matrix transformation in OpenGL you've already touched some high level maths. http://en.wikipedia.org/wiki/Linear_algebra#Some_u seful_theorems

    Trying to do computer science without maths is about as likely to succeed as doing physics without maths, and lets just say you won't get very far...

  112. huh? by FranTaylor · · Score: 1

    I'd like to see someone make a computer that can navigate a spaceship to the moon and back without mathematics.

    One of the 'hot' new topics in computers is heat dissipation. How to get anywhere in this without thermodynamics and its underlying mathematics? If this is not computer science, what is?

    Maybe you can get logo turtles to make pretty pictures on the screen without understanding the math involved, but real computers exist in the real world. We use math to understand our world, so we need to use math to figure out how the computers interact with it.

  113. Non sequitur, that by the+grace+of+R'hllor · · Score: 1

    To understand crypto, 3D graphics, image processing, etc you need math. But writing a crypto library is not part of the definition of software development.

    If I build software for managing agricultural auctions, I need to have in-depth understanding about agricultural auctions; linear algebra won't be of nearly as much use as it would be for 3D graphics.

    1. Re:Non sequitur, that by QuoteMstr · · Score: 1

      But writing a crypto library is not part of the definition of software development.


      Ah, I see. Software faeries leave crypto libraries under your pillow at night.
    2. Re:Non sequitur, that by coolGuyZak · · Score: 1

      I would surely hope not. Well-trained software faeries know to check their crypto libraries into source control.

    3. Re:Non sequitur, that by the+grace+of+R'hllor · · Score: 1

      My point was that you mostly just need math if your problem domain requires it. If you're writing a crypto library, you need strong overall math skills. If you're writing a 3D graphics application, you need linear algebra. If you're writing business process management software, math requirements drop sharply.

  114. Just take math by Fractal+Dice · · Score: 1

    On in the contrary, my experience has been that you should just take the math. Everything else - computer science, physics, even a lot of biology these days is just an application of math. You can pick up the details of any of these fields pretty quickly and make yourself useful if you are have a strong understanding of the underlying patterns and logic math teaches.

    (then again, it may just be that any education adds discipline to thinking and that once you have that, you can learn on your own throughout life)

  115. Not just programming by Metasquares · · Score: 1

    CS is more than just programming. You don't need a large amount of math to code, but good luck doing anything theoretical without a solid math background.

  116. Mod me flamebait if you like by Vexorian · · Score: 1

    If you don't want math in CS, you are either incapable OR lazy, neither of those personality traits helps in computer science.

    --

    Copyright infringement is "piracy" in the same way DRM is "consumer rape"
  117. No math, no physics by suv4x4 · · Score: 1

    I hope this guy does better than Steorn, which claimed that they could throw away physics and produce free energy. You can see how well this went.

    This guy has a beef with mathematics, since he wants solutions to be developed be more naturally. Well, natural intelligence took several million years to develop adaptively, but if I told my client "I'll take your spec and let it 'evolve' into a solution for the next 100 000 years", there's quite the possibility he'll find someone who knows math instead.

    He's right about one thing, and in fact I've said this myself lots of times: lots of the consumer apps don't need heavy math to build. they just need work, good UI and adherence to functionality specs.

    But all of this "easy development" is still built upon math libraries we take for granted (os kernel and management, image and video compression libraries, DSP libraries, sorting algorithms etc).

    As a quick test: let's try and remove all math related machine commands from a CPU and try to work a usable solution with that.. Good luck.

    I don't like people who reject hundreds of years of science work (math) and offer nothing as alternative, except vague dreams about more natural computing.

  118. Using VB maybe.. by Anonymous Coward · · Score: 0

    This must be based on the misconception that operating a programming program, such as V.B., equals being a "programmer" instead of being an (programming) "operator". An operator doesn't need many skills like mathematics or basic programming concepts. What he needs is familarity with the program that does the programming for him.
    When writing programs in a programming language (Pascal, C or C++, ..), an understanding of basic concepts and mathematics (logics) is surely required.

  119. I could care less about Computer Science by wrook · · Score: 3, Insightful

    I really don't care what you do with Computer Science. There is a lot of research that requires math, as others have pointed out. And a lot of it is really valuable. Equally there is a lot of research bundled under "computer science" (because it uses computers I guess) that requires no math. Whatever.

    What I'd like is an arts program that concentrates on programming. I'd like something that stresses *reading* and *writing*. I want people to learn how to *communicate* in these programming languages; not just with the computer, but also with their fellow programmers. I'd like people to do research in language design where they ask the question, "How can I allow the programmer to be more expressive about their intent?" I'd like classes on collaborative design. I could go on forever.

    I was at the art gallery the other day and wandered into the modern art section. They had a display of a particular type of performance art where someone would write out a description of an artwork on 3x5 index cards. A bunch of other artists would take the description and make the art. Along with the index cards and pictures of the finished work, there were a couple of letters. The letters were describing the disappointment the original artists had in the finished work. They even went so far as to accuse the artists following the instructions as being "incompetent".

    I described this to a programmer colleague of mine. His response was, "Wow... I didn't know I was a performance artist". I can count the number of times in the last 20 years that I've had to do hard math in my job as a programmer on my fingers. But questions like, "How the hell did you think *that* was readable", "How can I turn a bunch of requirements into something that isn't crap", "How do I get 10 guys working on a project and have a single vision", etc, etc, etc; those questions I ask every day.

    Sure computer science is important and personally I think math is a part of that. But, someday I hope someone will realize that programming is an *artistic* endeavor and we need to do a crap load of research in that area.

    1. Re:I could care less about Computer Science by cyborg_zx · · Score: 1

      Art is just mathematics that the mind has an intuitive understand of. Now the interesting thing about human communication is that it requires experience. Essentially if we want a computer we can talk to then we're going to have to have a computer that in some way understands what it is like to be a human.

    2. Re:I could care less about Computer Science by Coryoth · · Score: 1

      But questions like, "How the hell did you think *that* was readable", "How can I turn a bunch of requirements into something that isn't crap", "How do I get 10 guys working on a project and have a single vision", etc, etc, etc; those questions I ask every day. Well you could try converting the vague requirements into something precise and unambiguous so the whole team has a clear an unambiguous idea of what is meant. Sure, the first pass at it might not be that great, since there will be details, or specific requirements that aren't thought of immediately, or otherwise not covered. Not a problem, you cna take the original requirements specification and use that to see what might need refinement and, well, refine it.

      And lo, there are even languages specifically designed to help you write requirements out in that sort of clear and unambiguous manner; to help you make sure everyone is working on the same page, that all the different bits will interact within expected ranges, and to give a high level overview specifying what each chunk of code is supposed to be doing. They are languages like the Z specification language, which takes it's name from Zermelo-Frankel set theory, since it is firmly grounded in set theoretic mathematical notation (that being a good way to be clear an unambiguous). If you don't like set theory you can always try something like OBJ or CASL, which are firmly grounded in abstract algebra. You see, math has an annoying habit of cropping up everywhere.
    3. Re:I could care less about Computer Science by vga_init · · Score: 1

      In many ways, programming is an art. I discovered that when I learned to program, and I took great satisfaction in the feeling my creations gave me. Unfortunately, I also didn't know very much mathematics at the time, and after a few years of programming I realized that without a better understanding of different branches of mathematics, my ability to write programs was uncomfortably limited.

      The most interesting and powerful programs in the world are written by people who understand and apply complex forms of mathematics. There are no exceptions (I'm sorry to say).

    4. Re:I could care less about Computer Science by Tablizer · · Score: 1

      I really don't care what you do with Computer Science. There is a lot of research that requires math, as others have pointed out. And a lot of it is really valuable. Equally there is a lot of research bundled under "computer science" (because it uses computers I guess) that requires no math. Whatever.

      I think it is perhaps time to consider math part of the "domain expertise" issue. If you are working on legal software, you have lawyers on-hand to answer legal questions. Perhaps much of math should be the same way. Some domains use a lot of school math and some use almost none (above basic algebra). Thus, why should math expertise be considered significantly different than legal expertise? Most of us cannot store everything we learned 20 years ago in our heads anyhow. That is why we have specialists who keep up on their fields.

  120. better without maths? by Anonymous Coward · · Score: 0

    Are slashdot summaries better without englishes?

    1. Re:better without maths? by QuoteMstr · · Score: 1

      Often, yes. :-)

    2. Re:better without maths? by Anonymous Coward · · Score: 0

      The British are coming, the British are coming!

      And we demand that maths be spelt right, else we shall endevour to colour your towns red to regain our honour.

  121. Algorithms aren't math by taybin · · Score: 1

    If you read Knuth's Selected Papers on Computer Science, you'll see he argues that algorithmic thinking is fundamentally a non-mathematician way of viewing problems. And besides, as other people have stated, Software Engineering is just a subset of Computer Science.

  122. Astronomy == "telescope science" by tepples · · Score: 1

    What is computer science ?

    Computer engineering.. yeah.. I can understand that.. But man.. Computer SCIENCE ?

    That's like saying 'car science', 'cooking science' or 'go at the bar and have a drink science' !

    --Ivan Edsger Dijkstra would appear to agree with you. Calling the study of algorithms "computer science" is like calling astronomy "telescope science".
  123. The car analogy - you knew it was coming. by zerofoo · · Score: 1

    I have a CS degree, and before that, I did three years in an Engineering program, so I have a grasp of the concepts here:

    Computer scientist is to programmer where automotive engineer is to hot-rod builder.

    A computer scientist knows the fundamentals of how computation works. The math determines whether or not your software works well and efficiently, and the computer scientist will know if an algorithm will work in an extreme case before building the software. The computer scientist also creates code for unique cases where there are no readily available pre-built libraries available.

    A programmer, takes requirements and maps those to pre-built libraries and tools. A programmer is more of an "integrator" than a creator of new technologies.

    Example: You want to look for intelligent life in mountains of sample radio data, you ask a computer scientist to design the system. If you want to sort and search through sales data, you get a run of the mill software shop to design you a system.

    An automotive engineer creates new engines, suspensions, and safety systems for the application at hand. Many times, in a new design, there are no "off the shelf" components, so the engineer must know the math behind physics, materials science, and production methods to create a new system. The automotive engineer may also need to be familiar with the human body as well.

    A hot-rod builder takes existing engines, modification techniques, and pre-engineered systems and integrates them into something unique. Many hotrod builders do not have the engineering knowledge to create a new motor, suspension, or safety system from scratch.

    Example: If you want a new hybrid drivetrain that can meet federal and state emissions and safety laws, and can be produced in large quantities, you get an automotive engineer to build you that system. If you want a sub 10 second Camaro, you get a hot-rod builder to build that system.

    The computer science field is starting to divide itself into the "white-collar" and "blue-collar" jobs that define other industries. I see a future where engineering jobs are separate from coding jobs, much like engineering/planning/architecture is separate from construction.

    -ted

  124. Math did not begat Computer Science by Dzonatas · · Score: 1

    We've heard the claim many times that your have to have Math in order to know Computer Science. That is simply not true, especially on the empirical level. The argument factors down to the computational level and the fact that math is not needed in order for states to change in the computation. Also, when you get into AI, you'll find there are conscience levels of state changes that pure science alone can not explain but Computer Science can explain and except with AI. In science, the conscience levels are only defined up unto phenomenas. There is no language in Math to explain such phenomenas, but there is in Computer Science. Therefore, Math co-exists with Computer Science very nicely.

  125. Disagree by Spazmania · · Score: 2, Insightful

    Its not so much that computer science isn't related to math. Its more that CS students are assigned the wrong math courses.

    Algebra is an obvious key to understanding computation. Discrete mathematics including probability and combinatorics tend to pop up in computing problems over a wide range of disciplines.

    On the other hand, it would not be unfair to suggest that computing is more useful to calculus than calculus is to computer science. Continuous mathematics, like calculus, show up rarely if ever in most computer science specialties.

    Fant also seems to be stuck on the word "algorithm." Computer scientists have a very different definition of an algorithm than mathematicians. LISP was the only moderately successful attempt to introduce computer scientists to the mathematical notion of an algorithm. I'll take the groans and dearth of hands raised to the question, "Is LISP your primary programming language?" as proof of just how little regard computer scienctists have for the mathematical notion of an algorithm.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  126. OMG!!! Stupid by GoldenEye4ever · · Score: 0

    If developing a simple windows app, then math is not an issue.

    But just think about developing an OS, video games, device drivers, etc.
    These things require a strong background in math.

    Try taking a course on assembly language, then you'll understand why math is important

  127. Tabs vs. spaces by tepples · · Score: 1

    My objection to Python's choice is neither the dependence on indenting, which is fine, nor the lack of block-end keywords. Rather, it's the dependance on characters that are not visually distinguishable. I can produce two visually equivalent texts, one of which is a valid Python program and the other of which is just text -- If I do the indenting with space characters, instead of tab characters, it's not valid. Guido uses 4 space characters. IDLE, the editor that comes with Python for Windows, uses 4 space characters. If your favorite text editor cannot be set to visually distinguish a horizontal tab character from a space character, such as by drawing the keyboard symbol for tab in light gray, then it has a defect and should be repaired or replaced. You don't mix tabs with spaces for the same reason you don't mix Do While ... Loop with While ... Wend.

    I understand why tabs are "better", but that doesn't change the fact that I can't find the error by reading the printed version of the program. By "printed" do you mean on paper? How often do you read programs on paper, as opposed to in a purpose-built editor?
    1. Re:Tabs vs. spaces by aGuyNamedJoe · · Score: 1

      I understand why tabs are "better", but that doesn't change the fact that I can't find the error by reading the printed version of the program.

      By "printed" do you mean on paper? How often do you read programs on paper, as opposed to in a purpose-built editor?


      How often do I need to do it for it to be relevant?

      Certainly, more often I read code in an emacs buffer, nicely highlighted, etc. Paper is much more convenient in the car and/or the bathroom, however.

      Still, I'm not required to code in Python, so it's not a problem.

      I presume xe's not a Lisp programmer, given the closing marker phobia? Personally, I think including optional {, } block delimiters would be an improvement, but, hey, whoever designs the language gets to choose the syntax. The rest of us simply decide whether or not to use it.

      Hmmm, I missed the ability to use spaces instead of tabs, perhaps that's changed from early Python days? Anyway, having just reviewed the rules in an online manual, and having a laptop of my own these days, I may just need to take another look. As soon as I regain my lisp.

  128. Re:I think the author is making a more subtle poin by Jane_Dozey · · Score: 1

    IMHO the difference between computer science and software engineering is what they do with the knowledge. Software engineers need to be very much aware of the entire computer science spectrum but instead of doing the science (see research) and finding/creating new theories and technologies, they build systems with the existing knowledge. A good software engineer will know as much about computer science as the computer scientist but will use it in a different manner. A programmer is not a software engineer, programming is a prerequisite to be a software engineer.

    That said a Mathematician is not a computer scientist and vice versa. Is maths required for computer science? Absolutely! But only up to the level of some calculus, matrix maths, discrete maths and some vector maths. What is not required is a deep understanding of pure mathematics unless you're specialising in a maths heavy area of computer science such as 3D graphics, image recognition, algorithmics and the like. I agree with the author that CS should start moving further away from the maths discipline but do think that the appropriate maths should be kept in the subject.

    --
    Silly rabbit
  129. Hiding the Failure of Highschool by cab15625 · · Score: 1

    If I didn't know better, I'd say this was an attempt to hide how pathetic our North American school systems have become. I recently finished my first year teaching chemistry at a small University, and it included a course of "Chemistry for Liberal Arts Students" (mostly education students). At one point I made the mistake of trying to explain the concept of equilibrium ... which tends to come up with square roots and the quadratic equation. This produced a near revolt because I was trying to use "advanced math" ... If our school system has fallen to the point where university students think of the quadratic equation (grade 10 math) as "advanced math", then it's no wonder people are trying to introduce idiotic ideas like this into society.

  130. Re:I think the author is making a more subtle poin by aniefer · · Score: 1

    My major was applied mathematics, and I have managed to forget 90% of the math I knew. Applied Math lines up with the engineering side of things. (Engineers should really be forced to take a few courses from the AM department). The science side lines up better with Pure Math and C&O.

  131. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  132. Totally by Quinthar · · Score: 1

    Math is so overrated with respect to programming. It's idiotic to have (for example) four years of calculus, unless you happen to be writing Mathematica. Programming is more like management than mathematics. I think this guy is right on the money.

  133. As Bill G likes to say... by Anonymous Coward · · Score: 0

    That is absolutely the stupidest thing I've ever heard.

    It's so idiotic one hardly knows where to begin the demolition. How about the integers? Standard ZF theory constructs them from the null set and a successor function. Smells like an algorithm to me.

    The really dumb thing is the writer's fixation on process. Strictly speaking computation is totally devoid of process. Process is a metaphor, unavoidable because we use natural language to describe things, and natural language is embedded in the experienced world, which is dynamic. Mathematics (and computer science) deals exclusively with static things. We say things like "application of the successor function to the integer 1 produces the integer 2", but of course that's not literally true; 1 and 2 exist statically and independent of our efforts to describe them. Functions (and programs) - I mean the things themselves, not our written representations of them - don't "produce" or "process" anything; they are just static relations among static things. Process only matters when we engineer machines to mimic the mathematical structures of computation. The only way to do that is in time; logical sequences are modeled as temporal sequences, algorithms as processes.

    It's sheer ignorance in any case to focus so much on math; computer science is a melange of math, mathematical logic, philosophy, linguistics, etc. In fact the boundary lines between those disciplines has blurred considerable over the past century, so what's the point of griping about math? Furthermore, if our Einstein would do a little homework he would find that there are influential schools of thought (e.g. constructivist math) that put computation at the heart of mathematics, and not the other way around!

    Maybe the guy's thinking about language design. Fine, expressiveness is good - or rather, useful. But it's pretty hard to imagine designing a language without knowing a thing or two about mathematical structure - which these days means linguistics, logic, etc.

    I'm sure the people who designed Haskell (for example) would be quite surprised to learn that they've been wasting their time on all that silly math stuff.

    When I read silly crap like this, which can only do harm by misleading the naive, I can't help wondering if universal literacy is such a great idea.

  134. Engineering of mathematics by jefu · · Score: 1
    In his Turing award lecture, Juris Hartmanis said that computer science is "the engineering of mathematics". Feels about right to me. After all, just figuring out what a program is doing by reading the code amounts to a mathematical proof, including induction when there are loops or recursion.

    And while there are facets of programming that do not involve more than the basics of reasoning about programs, almost everything you do above the simplest level will end up using some facet of mathematics in a crucial way.

    There are quite enough simple examples to show this. For instance, suppose you want to generate a random permutation of a set of objects (shuffle a deck of cards...). There are several algorithms to do this and most are incorrect - but to understand why takes a nice (though relatively simple) bit of mathematical reasoning. While, in this case, just knowing that some algorithms are wrong and some right is enough, there is some underlying math that will tell you just how the wrong shuffles go wrong(but it is not at all trivial). In some other problems the math required jumps out much more quickly.

  135. Hard problems by phlamingo · · Score: 1

    From the parent:

    I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft. If you're somehow saying that if they used C/C++ or even Perl that their code would somehow be wonderful or safe, you're insane.

    My personal hostility toward VB comes from two sources: First, it really is ugly. Second, and a bigger issue for me, is that VB was used by tons of of managers to try to solve the "programmer problem." As the grandparent says, programming is a hard problem.

    Understanding the basics of a programming language or system is not so bad, but the ability to learn different business knowledge for every project, to creatively apply it to writing programs, to design programs that can be easily fixed when problems come to light, to communicate with a large population of users with diverse jargon and assumptions -- it requires a smart person who is willing to work hard.

    There may be a lot of smart people in the world, but the willingness to work hard is less common. And, unfortunately, the hype and glamour of programming in the 1980s and 1990s tended to attract people who wanted to get big bucks for little effort. Is it any wonder that business people were freaking out about the cost/quality ratio of programming? Is it any wonder that they are still freaking out about it?

    What has this got to do with math in programming? Oh, maybe not much. But, "removing math from computer science" sounds to me like just another silver bullet someone is proposing to make programming easy for everyone. The simple fact is that programming will always be a hard problem, just as medicine, law, structural engineering, writing symphonies, visual art, and other essentially human tasks will always be. If we ever get true artifical intelligence, perhaps programming can be made simple and easy for everyone. Otherwise, don't count on it.

    --
    I had forgotten how much cooler teenagers look when they are smoking. Oh, wait ...
  136. I'm a good example by DragonTHC · · Score: 1

    I'm a certified Linux admin.
    I can't do any math beyond very basic algebra. (learning disabilities)
    I just decided to go to college.
    I finished my first c++ class with an A.
    The math involved was basic math.

    The hard part is thinking like a computer.
    I didn't need algebra to learn to program.
    My brain's ability to do logic is quite different from the normal logic most other people do because I had such a poor background in math.
    Even though I can't do advanced math, I'm still excelling in computer science.
    I understand true computer and network security; I have a fresh view on how to approach programming problems.

    I am starting my advanced c++ class in august and I'm sure I'll pass that class also. There's a lot less math involved in programming than you think.

    Computer science doesn't need high-level math.

    Computer engineering does.

    --
    They're using their grammar skills there.
  137. Re:wahay! by kestasjk · · Score: 4, Insightful

    It's lucky Jobs went to his calligraphy classes; if he hadn't we'd all still be using monochrome terminals. (A pretty arrogant thing to imply)

    --
    // MD_Update(&m,buf,j);
  138. Re:The True Nature of Computing by smallfries · · Score: 4, Insightful

    What you have written is 100% nonsense and puts you in exactly the same crank camp as Fant. It is always interesting to hear people that don't understand computer science describe what is wrong with it. The model of interaction that you (and he) describe is normally called Reactive software, and it is true to say that it cannot be modelled by a Turing Machine as it performs interaction continuously rather than at the beginning and end of the computation.

    From here you've both made a giant leap to assume that programs can't be described by an algorithm. You haven't understood that the difference between a "computation" and "reactive software" is actually a technical triviality that is easily overcome. Indeed it is so trivial that most languages simply ignore it and have stateful operations for input/output. Reactive programs are normally modelled as a sequence of algorithmic steps, everything that the program does apart from sending / receiving data is modelled by an algorithm. So we can either consider this "non-algorithm" to be a sequence of algorithms or consider the program as an algorithm operating over a larger state that includes the environment. The input/output actions become alrgorithmic state transitions over the program/environment state. Look at the way programs in CSP/CCS or other process algebra are written to how this works. To see how the theory of algorithms can be applied to reactive systems take a look at multi-headed Turing Machines.

    Finally, if you're going to lob a technical term into a discussion then you should understand what it means. Automaton is a well defined term in CS, and it doesn't mean what you think. In particular what you are describing is not a decision problem and so there is not a problem of language recognition to be solved. I vaguely remembering reading the crank research that you are pointing before, and would like to ask you a simple question. Name one problem that you believe can be computed by a UBM, but not by a UTM?

    --
    Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
  139. Mathematics does hinder by Ka+D'Argo · · Score: 1

    Being a somewhat geek that has really wanted to get into the computer related work field, be a website designer, or a sysadmin or just a guy doing hardware repairs, I've always found it hindersome when it came to math.

    Math was never, ever my strong suit. I can do your basics. Addition, subtraction, division and multiplication. Some real basic formulas but past that yea math is a subject I can't seem to learn. As you got higher and higher in math in terms of types and levels there were just even more and more formulas and types of equations for you to memorize. Just cause I can remember a shit ton about Star Trek doesn't mean I can memorize the first couple hundred Prime numbers or square roots of stuff or sign and cosign etc

    Which was cool, cause despite how I always liked the idea of programming and such I knew that was well beyond my field of duty. But then you start looking at other mediums of the computer industry and a lot of jobs require a certain expertise in math. Hell even schools, want math math math. When I enrolled in community college years ago, before I could even set foot into a computer course of any kind (even real basic stuff like web design or web coding) I woulda had to take a ton of math classes. Since I never got around to Algebra 2 in high school (it wasn't a requirement to graduate) I would have had to take that, then Calculus then Trig, then all kinds of other stuff, just for a simple class on how to do HTML or graphical design.

    Since then I've always been hampered by math. Sure I can memorize a telephone number, calculate a checkbook etc But memorizing hundreds of formulas (you may be able to look them up on the job, doing them for tests is different, not all teachers and professors let you write down the formulas). If I want a job as someone high up in the tech industry (that isn't ya know, rocket science) I still need some big time degree and high level of mathematics skill.

    --
    Aw Frell this
  140. Key question: Do we care about -correctness-?? by david.emery · · Score: 1

    Judging by both some of the software I have to use, and the comments on /., apparently not.

    A friend once defined hacker as someone who types "main(){}" and then invokes the debugger :-)

    Sure there are aspects of software/systems development where mathematics, as the underlying 'physics of software' are not so necessary. But saying that we don't need mathematics for developing software is like saying we don't need physics for constructing buildings. Yeah, it can be done, but the chance of the structure (physical or logical) falling down, particularly under conditions outside the nominal, is unfortunately pretty good.

    You do not have to be a mathematician to construct correct programs, but in my experience, it helps A LOT.

            dave

  141. Re:wahay! by Anonymous Coward · · Score: 0

    people say these things all the time kestasjk. Like saying relativity wouldn't have been discovered without Einstein.

  142. Re:The True Nature of Computing by smilindog2000 · · Score: 1

    I read the site. Thanks for the link. A lot more GUI code gets written than real algorithms, and I do feel that we could possibly find a huge improvement in GUI programming through some sort of hard-ware methodology motivated paradigm, as suggested in the link. If that's the kind of programming you're referring to, you might be right. However, for doing things like finding good placements for components, object-oriented procedural programming wins, IMO. It's just the natural way to describe a system, and the algorithm to affect that system. For describing GUIs, I've always wished I could just solder a stupid button on a panel, rather than deal with crazy event loops. I have not seen a programming environment yet that makes GUI design seem natural to me.

    --
    Beer is proof that God loves us, and wants us to be happy.
  143. RTFA: Author is making a more subtle point by Anonymous Coward · · Score: 0

    It looks like most of the posts about this article are written by people who missed the author's point -- and probably because they haven't read the article, the book, or even his thesis (http://www.theseusresearch.com/NCLPaper01.htm). I think it would be clearer if the title of the blurb had been something like "is the algorithmic basis of computing science hindering?"

    As for the notion that you don't need math to be a computer scientist or computer engineer... that's just silly. Of course you need some math, and I would argue that as machines become less computationally bound and more bandwidth/latency bound the amount of math you need is going to increase. Dramatically.

  144. Proof by absurd? by Poltras · · Score: 1

    There is still not even a proof that P != NP, even though it seems obvious. I think what has been proven is that most problem classes of interest are non-decidable and intractible. But so what? You can still get along quite well in the world without a provably optimal solution most choices. Yes, we don't need all those negatives. How many apple do you have? -5? How many apple would you see?

    It's not because the world doesn't need a concept right now or that it is not really practical that it is not interesting or cannot bring advancement for the society. How do you think we advanced in technology (radios were made possible with Fourier calculus), physics (everything...), architecture (phi) or even gardening (geometry) without maths? How can anyone think that maths should be left out of any field?

    Although we should not leave math to non-mathematicians, saying that mathematics is not needed for any field is a proof by absurd that you don't understand the real meaning of mathematics. "So what" is just the QED.

  145. In the first place, programmers are not scientists by Anonymous Coward · · Score: 0

    That's what I find amusing about the entire post and the discussions. Programmers are not scientists. Scientists may be programmers, but the visa versa isn't true.

    So the premise of the title is invalid anyway.

  146. Re: dyscalculia by GomezAdams · · Score: 1

    Algebraic equations don't bother me as with any of the equations I used in electronics. These were the first things I wrote my early programs to do - ham radio stuff. It's only when I put actual numbers to them that I have trouble, As when I do math with numbers from Roman or the Chinese writing which I've learned, since I conceptualize with the Arabic numbers and have to write them down in Arabic. Other numbering systems as words are OK and I can read Arabic numbers fine as words. It's just when I try to do calculations on numbers that it becomes a problem. Hell if I know why. I was in my 40s before I was diagnosed - it was always supposed that I was just stupid and wouldn't be much more than a janitor or gas staation attendant. It was when the early microcomputers came out that I discovered how to make the machine do the heavy lifting - and I've made a damn fine living doing it for other people since.

    --
    Too lazy to create a sig...
  147. O, the irony! by Anonymous Coward · · Score: 0

    The irony is that entire fields of mathematics focus specifically on how expressions work (i.e. the writer's "process expression", whatever the hell that means). Try doing a little research on model theory, universal algebra, linguistics, mathematical logic, proof theory, etc. All of which strive to provide a rigorous analysis (or is it construction) of the "how" of expression, by linking languages to things (symbols to things symbolized.) In my personal experience I didn't really understand the craft of programming until I had studied enough of such stuff to understand the semiotic (for lack of a less intimidating word) operation of formal languages.

  148. Re: cooking science ? by jbengt · · Score: 1

    Having done some work for a well known packaged food brand, in a research and development lab and pilot plant, I can definitely confirm that there is such a thing as cooking science and food science.

  149. Pure Math by toddhisattva · · Score: 1

    "Pure" math is math for its own sake, divorced from application.

    And CS is riddled with that silly idea!

    Here's what any sane person would think when presented with the idea of "pure" math,

    "There is no branch of mathematics, however abstract, which may not someday be applied to the phenomena of the real world."

            Nikolai Lobachevsky

  150. whoever implemented the captcha on this site has by alex_vegas · · Score: 1

    clearly already abandoned the study of mathematics.... I just wrote this comment, and the damn captcha will not let me through. I must be a turing machine myself. "Computer science does not need a theory of computation; it needs a comprehensive theory of process expression." One could argue that the theory of computation is a comprehensive theory of process expression. Most formulations of the the theory of computation consist of ways of precisely describing states and rules for transitioning between them. Leaving that particular albatross aside for the moment, I would agree that there should be more emphasis on communications skills, teamwork and writing in most computer science programs. I do not agree at all that mathematics is irrelevant to computer science. Mathematics in its modern form is simply the study of relationships between very well defined abstract objects, and analogy and application can be drawn from it just about any endeavor. If you don't understand that, take my word for now, and give some group/category theory a read.

  151. lol by planetfinder · · Score: 1

    This bonehead doesn't know what mathematics is.

  152. Geek Paternalism by NetSettler · · Score: 1

    I think the better analogy might be to "movie science". It can both be the case that movies like The Matrix are more easily made with the aid of science, and yet the movies made by people with a camera for YouTube are leading somewhere organic that is different.

    I see the issue he's asking (in the article summary--I didn't read the book) as not being about the questions are answered, but rather what questions are asked.

    It's not that computer science doesn't provide good answers to questions it asks, it's that it locks a great segment of the population out of the right to ask questions relevant to them, by creating an immense jargon barrier to even involving themselves.

    Law and politics have done the same things. Lots of people have opinions on law and politics, because these things affect them on a daily basis. But the world is not moving toward greater involvement of the individual in these areas. Rather, there are ever more ways to explain to someone why they are incompetent to discuss these matters. Which means power collects in a few.

    Most of the arguments I've seen on this thread address the issue narrowly and defensively at the level of rejection of technique, or on the basis of the idea that if this one author has expressed himself poorly or slightly missed the mark in what he has pointed to, then there is therefore no issue. I don't think that's so.

    When the web was born, there were people who made criticisms of the old internet/arpanet network that preceded it. Some may even have said "you built the wrong network before and now we've got the right one". Such a view might be attacked as technically uninformed, but it doesn't make it untrue in spirit. It's true that the Web needed the old internet to be brought up, but it doesn't follow from that that the people of the world were on track to make the web. It could have rolled out very differently, with very different properties, or not at all. And yet, as soon as it was in place, people didn't investigate alternate versions (many of which were in play), they instead set about beating those other things down. Or at least turning their back on them.

    There are technology trends in CS, and that's good. And there are funding trends in CS, and that starves the availability of alternatives. And that's not so good. It's the same kind of battle that the Linux crowd has fought against the Windows crowd--trying to make the case that the emphasis of the market winners is not necesarily the full space of things all people might want. And that's surely so. Yet here another person is trying to make a similar point about computer science in general--how it might usefully do some different things, and who of all people are rushing to say "nothing useful here, just move along"? Slashdot readers. I see much irony here. Your mileage may vary.

    It's not that I don't think there are improvements in computer science that reach mainstream people. I just don't think there are enough. And I don't think we get to a wider audience by assuming what we're doing is already ok. A few moments thought on what else we might be doing, not just in terms of techniques and technologies, but in terms of wishes and goals, doesn't seem like something that should be greeted by such aggressive debunking.

    There are real barriers to people using computers, and there are artificial ones. We don't do much work to distinguish them. Nor do we understand the ordering issues as well as we should. Maybe if people did dive into computation without knowing, they'd come to an intuitive understanding that algorithms matter because they would confront the issues themselves instead of having to understand intellectually. Yet we dissuade people from even trying, so of course they never get that intuition. Before I ever took computation courses in a formal way, I wrote a bad search program in BASIC that it was easy to see wasn't going to terminate. Even without the math, it was very instructive. Because it motivated me to care when I finally did learn algorithms. I knew why they were going to matter and was ready to receive the information.

    --

    Kent M Pitman
    Philosopher, Technologist, Writer

    1. Re:Geek Paternalism by starfishsystems · · Score: 1
      You've built an eloquent case around a set of points which are a pleasure to read. Much of what you say has merit.

      However, I think it needs to be said that science is not the exclusive club you make it out to be. The universals of human behavior and social elitism notwithstanding, anyone can be a scientist. All they have to do is play by the rules. Yes, if you wanted to make the case that there is a pecking order for access to the Hubble space telescope or the Large Hadron Collider, you'd get no argument from me. But nowadays the tools of a computer scientist are available to anyone.

      Computer science is not a pure meritocracy either, but I'd argue that it contains fewer inherent barriers to entry than most scientific disciplines, and being a young discipline, perhaps even fewer social barriers. But that doesn't mean that any twit with a loud voice is going to get equal consideration. I disagree with your claim that we dissuade people from trying, at least no more than any other humans do in comparable settings in science, the humanities, the arts, even at a barbeque competition. If someone wants to go off and do their own thing, fine, I don't see anyone stopping them. But I also think it's reasonable to require some demonstration of merit for an idea to gain acceptance within a community of practice.

      However we may resolve the foregoing question, conditions don't seem to be stopping people from doing all kinds of crazy shit with computers. I don't know if encouraging more of this is required in order for it to become a socially or scientifically fruitful activity. Its inherent randomness is hard to organize purposefully. Yes, in principle more monkeys with typewriters could produce more works of Shakespeare, and likewise we could set up some kind of random funding institute. I had a similar idea when I was a teenager of wrapping many millions of joints in hundred-dollar bills and then shovelling them out of light aircraft over populated areas. Surely that would have produced some positive, though highly unpredictable, creative outcomes. But I could never get support from the government despite the liberal funding climate of the day.

      I'd also like to respond to the suggestion that the Linux community is perhaps being hypocritical or splitting hairs when rejecting alternative approaches to the application of computer science. I think that, to be credible as a constructive suggestion, it has to be made with respect to particular examples and not as a sweeping generalization. In other words, your dissing of a hypothesized dissing falls to its own argument. And of course it's a strawman argument in any case. The Linux community does not stand in place of the computer science community at large. What could be said is that they're both meritocracies involving the use of computers. I see that as a common success, not as a common failing.

      No doubt things are missing from the corpus of identified things that could engage computer science. But which in particular are important? Hypothetical lack is a fine notion, but on an equally sound philosophical footing, I think it is reasonable to assume that things are okay as they are, in the absence of evidence to the contrary. I don't share your view that there is a gap which needs to be closed, but again, it would help if the discussion could focus on particulars.

      In particular terms, I know no more dedicated group of professionals than the dozens -- or perhaps by now hundreds -- of computer scientists I've seen acting on thesis committees and with granting agencies, sitting on conference panels, editing research journals and reviewing submissions, supervising grad students, teaching undergraduates, developing curricula, and all of the other duties expected of someone working in science. These are people who encounter and debate new and sometimes outrageously alternative ideas every day of the week, and who I've often often seen make the point of asking, in these settings, whether compute

      --
      Parity: What to do when the weekend comes.
    2. Re:Geek Paternalism by NetSettler · · Score: 1

      I don't know whether we've got it dialled in quite right, or whether we ever will. But it's way better than random, and that's good enough to take you anywhere, given sufficient time. Crudely speaking, geek paternalism is responsible for this.

      Fair enough. I really hadn't meant to push so hard on the "we're doing it wrong" thing as to say "a bit of criticism won't hurt us". I just felt like there were a lot of overly defensive voices in the messages on this thread I'd sampled, and I wanted to nudge the discussion back toward the middle. I welcome ideas in any form, whether critical or not, as long as one can learn from them. And I'm always fascinated by people who have any theory at all of what computers can be other than what they are.

      For what it's worth, my main personal pet peave about where we've gone is static type checking. It's certainly interesting, but the notion that all of CS seems to have focused so intensely on it, sometimes starving dynamic languages of attention seems to me an artifact of the order in which history occurred. It seems to me it could just as well have gone another way. Is one definitely better than another? Arguably not. But I think it's perceived that way sometimes by people who take headcounts on who uses what. Another accident of present reality that bugs me a lot is the passion for "int" types rather than "integer" and the strange choice of "float" over "rational" or "bcd". And the lack of the "symbol" type as a builtin in most major languages, forcing people to express ideas in terms of numbers that are not numbers--and not even "good" numbers at that, but fake numbers like ints and floats. I think these serve CS folks pretty well, but they are all serious barriers to ordinary people using computers because they are not "natural concepts" and so a barrier to wider audiences. They make people have to think like computers to gain entry, instead of forcing computers to be our servants and think like people. For what that's worth. Most of these are not about forgetting math, and in fact the int/float thing is about restoring proper math in place of fake math. And yes, I know there are good computational reasons for all of these things. But I've heard that for generations of computers now. At what point will computers be fast enough that we can have some fun with them and not have to always let O(1) issues dictate expressional policy...?

      When Rod Brooks came along with his Subsumption Architecture, the establishment thought he was a crackpot. But his ideas were novel and exciting, and they took us to new ground. Last I heard, he was director of the MIT AI Lab.

      Rod just stepped own as head of the lab in the last few days, actually. He's indeed a pioneer ... plus I enjoy seeing him show up on TV from time to time. :)

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    3. Re:Geek Paternalism by starfishsystems · · Score: 1
      static type checking ... the strange choice of "float" over "rational" ... lack of the "symbol" type as a builtin

      You're talking about the Lisp Machine, my man, speaking of MIT. Dynamic type checking, atom as a base type, a great platform for symbolic math and lazy evaluation.

      That project drew some outstanding architects and programmers too, speaking of what does it take to make a great computer scientist. But in commercialization it couldn't keep up with the mainstream, fell behind in performance and economies of scale. It embodied good ideas, though evidently not sufficiently compelling to alter the prevailing fashion.

      My hope is that, if those ideas are truly sound, they'll make a reappearance eventually. And take heart that in the larger scheme of things the Lisp Machine is still very much a conservative Von Neumann architecture. More radical alternatives may make an appearance in their own time.

      I take your point that simply because something lies within the current fashion is not much of a claim. But people seem fond of making such claims anyway. [sigh]

      --
      Parity: What to do when the weekend comes.
    4. Re:Geek Paternalism by BitchKapoor · · Score: 1

      For what it's worth, my main personal pet peave about where we've gone is static type checking. It's certainly interesting, but the notion that all of CS seems to have focused so intensely on it, sometimes starving dynamic languages of attention seems to me an artifact of the order in which history occurred.

      I don't think the historical precedent is that clear. While Russell's type theory and Church's simply typed lambda calculus both predate the development of programming languages, they were both developed as successors to less-structured untyped mathematical languages, to be more amenable to reasoning. The reason static typing has taken such a central role is that it serves as a simpler basis for the execution model of real computers than dynamic typing. Static typing allows you to ensure you're working with total operations on data, whereas dynamic typing requires a more complex execution model tolerant of errors and partiality. While you could push that checking into the hardware (like a Lisp machine), that still makes a more complicated basis for computing than a statically checked assemblage of total operations. In fact, combinational logic circuits are in a sense statically typed, simply with a very weak type system (input and output bus width). On the other hand, it's natural and straightforward to build a higher level dynamically typed system on top of a (properly designed) statically typed system. There is no lack of attention to dynamically typed languages in practice, they are simply more appropriate for higher-level non-critical applications.

  153. Forget math subjects for any non-math major by islisis · · Score: 1

    I think the problems people experience in computer sci/eng are systemic of the maths requirements of science majors in general

    In my opinion all maths subjects should be dropped - and replaced by major-specific maths subjects (some of these exists for engineering majors). In my eyes the problem with taking a pure/applied maths subject when you are not a maths major is that come end of the semester, the lecturer can't say 'oh ok now you know what to do when you need to use this idea' because they have no idea what you want to do. Instead all they can do is stick to what they believe is the common ground between their knowledge of maths and yours, drilling you on how well you know the ins and outs of the the methodology, and basically I could not give a stuff about how quickly I can perform an algorithm on paper 50 times over.

    I would rather be tested on how I can translate the ideas of my major into mathematics. Which is damned well all care about now that I am doing research.

    It's worth the money of paying for extra classes. It's a core issue of the science education system. Academics need to be fed anyhow.

    Here is my take on the obsolescence of mathematics in the spirit of what happened to Latin after Gutenburg's movable type

    1. Re:Forget math subjects for any non-math major by islisis · · Score: 1
  154. Re:The True Nature of Computing by MOBE2001 · · Score: 0

    For describing GUIs, I've always wished I could just solder a stupid button on a panel, rather than deal with crazy event loops. I have not seen a programming environment yet that makes GUI design seem natural to me.

    Exactly. The algorithm is the worst thing to have happened to computing. It is the primary reason that software is unreliable. Programming is hard precisely because it is based on the algorithm. I hope that this new realization among some of us that computing should not be based on the algorithm becomes more widespread. It will usher in the next computer revolution.

    We could conceivably be riding in self-driving vehicles right now but concerns over safety and reliability will not allow it. In addition, the cost of developing safety-critical software rises exponentially with the level of complexity. Switch to a signal-based, non-algorithmic, synchronous software model and the problem will disappear. This will enable us to build applications of arbitrary complexity without the burden of unreliability, something that was impossible until now. This, in my opinion is what will truly bring us into the golden age of computing and automation.

  155. Jobs loves calligraphy because he is half Arab by Anonymous Coward · · Score: 0, Interesting

    Steve Jobs is half Arab, his real father was a Syrian student, named Abdulfattah John Jandali (http://en.wikipedia.org/wiki/Steve_Jobs). Arabs are well known for their love of calligraphy.

    Anyway, the older he gets, the more Arabic he looks, he DEFINITELY has an Arabic (well, Semitic) nose, with proper clothing he could easily pass for a Middle East born, Arab or Jew.

    I wonder how does his Arabic background affect his business. Does the Government suspect him as a (potential) terrorist? He uses a corporate jet, which is good under these circumstances. He is also careful and does not wear a beard or a turban.

    1. Re:Jobs loves calligraphy because he is half Arab by The+One+and+Only · · Score: 1

      ...nor does he practice Islam, which is really the central issue, isn't it? Jobs may be of Arab descent, but he was adopted by whites and raised like pretty much any other white American. And there are times he eschews shaving.

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
    2. Re:Jobs loves calligraphy because he is half Arab by Anonymous Coward · · Score: 0

      His *genes* make him like calligraphy?

      Better ditch that tinfoil hat, buddy.

      There are a lot of things that are influenced by genes, but calligraphy isn't one of them. Let's try on a few similar ones:

      My genes are German and Irish, but I don't speak Gaelic or German or have much of an interest in things German or Irish. I've never gone to Europe and probably never will.

      My wife is Japanese (born and raised; she came to the United States as an adult) but she has no interest at all in anything you would call "traditionally" Japanese. Music, art, whatever. I enjoy those things, but it's a total yawner to her. If I had my way, our house would be filled with Japanese art, traditional furniture, we'd even have tatami in at least some of the rooms. She won't hear of it. Calligraphy is popular in Japan, but she doesn't like that, either. She had to take calligraphy in school and hated every second of it. When she went to college she didn't consider any of the "traditional" female majors and studied engineering, then went on to get her master's in EE. She was one of four women in her master's degree program, and that was a at a big school.

      Next, you'll probably tell us that because you'd very hard pressed to find a suicide bomber who wasn't an Arab or other Middle Easterner (not all ME-ers are Arabs)and even harder pressed to find one who wasn't a Muslim, that suicide bombing is in their genes. Suuuuuure. In the culture? Maybe. In the religion? Absolutely. But in the genes? Nope, sorry. If it was, we'd have to keep a pretty close eye on ol' Steve, just in case.

    3. Re:Jobs loves calligraphy because he is half Arab by gujo-odori · · Score: 1

      I know this is just feeding a troll, but...

      I'm pretty sure his lack of a beard or turban has nothing to do with being "careful" and a lot to do with being a middle-class white guy. Your culture/religion is something you're brought up with, not something in your genes. The fact that his biological father is Syrian influences nothing but his looks.

      I think the only place Steve Jobs is considered a terrorist is in Redmond, where they're all scared of him :)

  156. Re:CS - MA = CE by AWhistler · · Score: 1

    Comp. Sci. - Math = Comp. Engineering

    In college I took classes in Science, Technology and Society. Basically, it was a critical thinking class. One thing I learned there is the true definition of science vs. technology. Science is discovery, engineering is building. While the pyramid builders needed good geometric skills, they didn't need to know the math behind the levers, pulleys, rollers, sand piles, etc. they just needed to know that if you have a long enough lever, you can push on one end with 3 people, and a really heavy rock will move. When it moves you can put roller logs under it and move it better. If you then take this rock, laying flat, and roll it up on a pile of sand in a column, then "drain" the sand from the bottom, the rock will "fall" vertically into place. No math there...just experience.

    If you want to get insight into just HOW LONG the lever has to be to lift the stone, and WHY it has to be that long, you need the mathematics to DISCOVER these insights. You're not building anything...that's science. Once you discover that the length of the lever needs to be X feet long (cubits, arm lengths, whatever), then you can tell the engineers that their levers are twice as long as they need to be, and if you use a shorter one at least X feet long you can still do the work without so many of them breaking from the force. The engineer doesn't care WHY, just that it works.

    A computer engineer just wants to get something that works. A scientist can tell the engineer which algorithms work better (heap vs. stack vs. hash table vs. whatever). The engineer needs the RESULTS of the scientist to build things better. The engineer can tell the scientist what doesn't work, and the scientist can figure out why.

  157. Functional Programming is more mathematical by shoor · · Score: 1

    In my case, I was pretty good at math, got in I think the 85 percentile of the GRE back around 1972,
    and that with a BIG hangover. At first I was lousy at programming. I had my first exposure using
    a PDP-8 around 1966 in a Numerical Analysis class. I was a math major with a 'C' average in mathematics.

    Eventually, though, I did 'get it' as far as programming was concerned when I took an assembler class
    and a class in digital electronics. All of a sudden I knew what the computer was doing, and then I
    could program it. This was in the mid to late 70s, and for the first time I was an 'A' student in
    college. With math, the problem for me always seemed to be holding tight onto the precise
    meaning of the definitions, they would sort of drift in my mind, the way words do in normal human
    language. This was perhaps also a problem for me in accounting and law classes that I took.
    But, once I was thinking in true binary, there was no drift in understanding anymore. And if you
    weren't sure, you could try it out and see if it worked. The computer was patient and unvarying
    in its responses.

    When I tried to learn Haskell, though, it was hard. Partly it may just be that I'm older. But it
    felt like it was mathematics, because I didn't feel like I knew what was happening inside the computer.
    From what I understand, good Haskell programmers are very productive. They win contests. But I think
    they must also have good math skills. You have to be a special kind of programmer to learn haskell I
    suspect.

    --
    In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
  158. Re:Anti-Intellectualism Technological Magicalism by VoidEngineer · · Score: 1

    I believe it was Arthur Clark who coined the term (I'm paraphrasing here), "Advanced enough technology is indistinguishable from magic".

    What we're seeing here is society's reaction to computers as they become so complex that they are effectively indistinguishable from magic. How does an iPhone work? Dunno. It's a magical gizmo, though! In fact, it's a veritable sorcerer's stone! See things from a distance! Talk to people from a distance! Listen to the music of the stars! In old-school Dungeons-and-Dragons-speak, it grants the owner Clairvoyance, Minor Telepathy, and Music of the Stars. Interestingly, the iPhone is basically the same meme/myth as the Sorcerer's Stone. And the Wii? Shall we compare the Wii remote with a magic wand? All sorts of interesting parallels there. One of my favorites, though, were the talking paintings at Hogwarts. Looks just like something you might find at MIT's Media Lab, or at a Sharper Edge Bottique.

    The point is... technology is getting so advanced that society (non tech folk) is starting to resort to myth, magic, and superstition to deal with it. "a scheduler is O(log N) the number of processes"? That's not only greek to the normal layperson, it's technobabble, and it borders on discussing metaphysical abstractions that one would expect from a sorcerer or wizard. And the best part of it all? For the lay person just crossing the digital divide nowdays, learning a series of commands or the basics of a scripting language is practically like learning a rote or a spell. Want to turn on a scrying device? Try opening a webbrowser and watch some online videos. Want to animate an automaton? Try turning on your roomba, or build some Lego robots. Want to create an illusion or personal reality bubble? Play some music through iTunes or log onto WorldOfWarcraft or Everquest or whatever people are logging onto nowdays.

  159. Maths education by wakingrufus · · Score: 1

    I, for one, learned all I need to know about maths from this "look around you" educational video. The BASIC code in the intro is easy to create with just this basic knowledge of maths.

  160. Everything is covered by Topos Theory ... by podperson · · Score: 1

    http://en.wikipedia.org/wiki/Topos_theory

    Bah -- which logical system is abstraction physics living in? It's so far down the tree from Infinite Fun Space that it's not funny.

  161. This is a rhetorical device... by podperson · · Score: 1

    From TFA: "Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."

    So what the writer of the book is really saying is that Computer Science needs a different kind of mathematics.

  162. Re:wahay! by sugarmotor · · Score: 1

    Just because you don't "drop out" doesn't mean that you only take "normal courses". But if you don't study logic it might. :)

    Stephan

    --
    http://stephan.sugarmotor.org
  163. Angry Nerds Missing The Point by Anonymous Coward · · Score: 0

    You are all missing the point and obviously just skimmed the article. Yes computers run on Mathematical Theory. Yes you currently need to know a lot of math to understand how to program. What the author is getting at is this current mode of operation is limiting the evolution and development of computing. Computers are tools and they should work for us. Languages should be designed so anyone can take an idea from their mind and with minimal effort develop a program that does work. Most of the Mathematical theory that all of you hold dear could be done by the computer much more efficiently. Thats the whole concept of high level programming and honestly it has not evolved much over the years. We have the computer doing its own 1's and 0's but beyond that we have not really done much to evolve high level language programming. If you really think about it the hardware has evolved a lot more than most of the high level languages. Essentially many of the high level languages that we are using were developed in the 1960's and 1970's. While everyone rags on VB because it develops poor codes your all missing the point. THE COMPUTER IS SUPPOSED TO WORK FOR YOU. Not the other way around. Instead of bickering about who is the greatest code guru and how many tabs increase the readability of your code fscking evolve already! Write something useful and think outside the box or just sit back and be replaced by indians that can think the same outdated concepts that you do!

  164. Don't knock library science by Anonymous Coward · · Score: 0

    Communication is fundamental to science. Scientists spend a huge fraction of their time reading journal articles, books, conference proceedings, as well as going to meetings, talks, lectures, symposiums, etc. And so publication is a very important ingredient in the scientific method. Library science is about the organization and distribution of publications -- including works that are purely digital.

    In history, what marked the transition between alchemy and chemistry? Alchemists conducted experiments much like chemists do, but they prized secrecy. Alchemists traded information sparingly and wrote the logbooks in their own private codes. When people like Francis Bacon started to share their results as a matter of policy, then the rate of progress greatly increased. That is the essential transition from alchemy to chemistry.

    Library science is not just a matter of "Hey!!! It is teh Dewey Decimal System!!!11"... although indexing was an important technological advance (thousands of years ago), things didn't stand still there. Librarians pioneered many of the information technologies that people take for granted. Library catalogs were just about the first electronic search engines. For that matter, the old card catalogs were search engines too. They were also a pretty early and important form of database.

    Philip M. Morse, while a physics professor at MIT, got interested in libraries. He spent time developing methods to measure quantitatively the way books were found and accessed by their users. He then made probabilistic models for this behavior which could then be used to optimize the library system in various ways. Out of this work grew queueing theory and the entire field of Operations Research.

    Tim Berners-Lee, working at CERN, designed the web "to allow high energy physicists to share data, news, and documentation." This is very much in the tradition of libraries and library science. One of the first interesting applications for the web was the WWW gateway to the SPIRES High Energy Physics database at the SLAC library, created in late 1991.

  165. Holy ignorant masses Batman! by Zarf · · Score: 4, Insightful
    From the article:

    "The notion of the algorithm," he concludes "simply does not provide conceptual enlightenment for the questions that most computer scientists are concerned with."

    The assertion that computer science is not math is similar to the assertion made in the book "The World is Flat" saying the world is now "flatter" than it used to be. In the case of the flat world, Friedman (the author of "The World is Flat") claims the world is flat to create a sense of shock that he can then use to get his message about globalization across. In the case of "computer science is not math" Fant here is trying first to shock as a method of capturing attention...

    Most Americans use math in the singular. The Brits say maths. That is because there are multiple branches of mathematics. What we are discovering is that the tie between arithmetic and calculus and computer science is falsely reinforced. The fact is there are other branches of mathematics that are more important to computer science. There are also many new branches of mathematics that need to be developed in order to solve the new kinds of problems we are trying to solve in modern computer science.

    I am really bothered by programmers who, when I interview them, say they have been writing software for years and can't remember ever having to use math.

    I know they can't possibly mean that... or they don't know what math is...

    I know that in several years of programming you must have at least been tempted to write an if statement or at least one loop of some kind.

    The if statement uses a form of algebra called boolean algebra. It was named after George Boole who was very much a mathematician. I know that there are many programmers today who use the if statement and this form of mathematics makes up a large part of many programmer's jobs. I guess it must be falling out of fashion.

    I know how to perform boolean algebraic operations on a white board and I have many times been confronted with a gigantic morass of if and else if statements and using simple truth tables and a little boolean math have reduced enormous sets of ifs down to just a few.

    The new computer science needs to focus on solving problems involving processes. Processes are like algorithms in that they have a set of instructions but they are unlike algorithms in that they also have many temporal components and may exhibit parallelism, asynchronous invocations, and may not have a finite product. These are the types of problems addressed in newer mathematic disciplines that are trying to see information processes not as tied to computing machinery but as tied to the natural world.

    Computer Science may point to a new kind of science that describes an underlying natural computational order of the universe. We are starting to observe computational processes everywhere, in the brains of animals, to the interactions of ecosystems, to quantum mechanics. We may lack the right mathematics to describe these things and we may have to invent new kinds of math but that doesn't mean that math becomes unimportant. An understanding of math can help when studying logic and so too would it help in studying any new disciplines that we may need to invent.

    New kinds of math are invented every day to describe new kinds of problems. To say you don't need math to study any formal science let alone computer science is just silly. It is just something shocking to say that grabs attention... and the article nearly contradicts itself by the end... and it's only 7 paragraphs. The distinction Fant makes is nearly academic. Just as the distinction between a Statistician, a Geometer ( a mathematician who studies geometry ), and a Logician is academic. Yet that is not what the readers of the headline will read... Fant is arguing to make computer science a new kind of science much as Wolfram has. Yet it would be sil

    --
    [signature]
    1. Re:Holy ignorant masses Batman! by Anonymous Coward · · Score: 0

      I was able to use if statements in school, before I entered university and studied boolean logic, so you shouldn't be math genius to use it.

    2. Re:Holy ignorant masses Batman! by Zarf · · Score: 1

      I was able to use if statements in school, before I entered university and studied boolean logic, so you shouldn't be math genius to use it. I'm not advocating that every programmer be a math genius. I am advocating that every programmer study math. I don't care if programmers are very good at math, just study math. Learn that there are such tools as boolean algebra and truth tables to name only one.

      I have worked on legacy code developed by self taught programmers that don't have the benefit of the training or mathematics background that you and I have. What I find in these code bases is quite disturbing.

      A very typical example of what I might run into:

      if (a) { if(!b) { statement2; } else { if(!c) { statement2; } else { statement1; } } } else { statement2; }

      which reduces to one simple boolean statement. Typically these will not have single function calls in them but have several pages of code between each bracket. Often the "statement2" will be cut and pasted repeatedly because the original developer was either lazy or stupid and didn't think to use a procedure call. Then comes a bug report that is intermittent and hard to trace.

      And lest you think I'm only talking about if statements, consider complexity analysis, sorting, database design, and architecture. You can do all of these things without the math background. You can do 3D graphics using only sine, cosine and triangles without ever using a matrix. But, would you want to? Isn't life easier knowing about matrix algebra? Maybe you aren't a whiz at matrix algebra but you at least know there's an easier way to move that render in 3D than adding dx, dy, and dz over every point one at a time... then subtracting them... calculating the spin of the object and computing each arch of each point around the origin... then adding back dx, dy, and dz to move the object in space.

      You don't have to be a math genius, just know what's going on.
      --
      [signature]
  166. The Book by Zmee · · Score: 1

    The article is light on details on how to find the book (it just calls the author "Fant" with no first name and there is no title). This book it titled "Computer Science Reconsidered: The Invocation Model of Process Expression" by Karl M Fant ISBN 9780471798149.

  167. Re:Well... Yeah by mckinnsb · · Score: 1

    Generally speaking Mathematics is most useful in the field of Computer Science when it is applied to eaither Hardware or Operating Systems. Further speaking, most people who write software or are software designers, or even most network designers, won't need extremely advanced mathematics, although I think most people on Slashdot would agree that a good BA in CS should always know his or her calculus at the very least (it is just too useful in some circumstances).

    I read a post earlier on comparing programming to carpentry. Not a bad comparison I think, and yes, its true that for those once-in-a-while circumstances, you need a mathematician in software design. Most of the time, however, you can get a program (Mathematica) to do it for you (intersection of a regular cube with a plane?) or academia has long since crunched out the solution for you (Vector Systems). Interestingly enough, what makes Computer Science an actual bonifide science (in my humble opinion) is that it uses Mathematics in both the theoretical and practical/application phase. However, unless your working R/D in a very competetive company, or in academia, high-level math might not be necessary. Hell- even Google collaborates with universities.

    Learning Math is a lot like learning Greek or Latin- you are most likely never going to use it day to day, but it offers a lot of peripherial benefits.

  168. Poppycock by the+eric+conspiracy · · Score: 1

    Right, so we are supposed to just throw away 2300 years of the use of mathematics as the underpinning of all rational abstraction of concrete problems because Mr. Fant thinks some other method i.e. "invocational process expression", which is essentially undefined by him or anyone else is a more suitable tool. All I can say is LOL.

  169. What do you want to write? by itsdapead · · Score: 1

    (e.g.) a nice, user-friendly personal database program or a industry strength relationald DBMS with really good query optimization and full ACID, OLAP and general ETLA* compliance?

    If you've thought of a really neat user interface for a personal contacts manager program, then nobody will care if you've used a bubble sort to keep a few hundred names in order. If you're trying to improve performance for Google then some theoretical homework might be in order...

    The danger for education (for any technical subject, not just in CS) is that it tends to teach a subject at a pessimal level of detail - 90% of the class wastes time trying to memorize a few trivial proofs from that subject's equivalent of special relativity (which will be forgotten 10 minutes after the exam), for the sound educational reason that, otherwise, the Prof. that gets the top 10% of the class for the postgrad course will whinge about having to run a few extra lectures.

    E.g. you could either:

    1. Know about the universal Turing machine and its significance
    2. Be able to regurgitate the textbook description of a Turing machine and write the state tables for some trivial operations
    3. Actually be fluent with computability theory and able to apply it to practical applications or original theoretical work.

    (2) is the pessimal level of knowledge, as it is of no realistic use unless you then proceed to (3) and is certainly not required to write form-based database clients. It is, however, pure gold if you are trying to write a CS exam...

    (I'm not saying that (2) can't be interesting or stimulating - just that you shouldn't make students cram it unless they're likely to go all the way).

    (*Extended three-letter acronyms)

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  170. Re:wahay! by Anonymous Coward · · Score: 0

    And since Windows just copied the Mac, its likely that no personal computer would have them Just a little arrogant of Steve there. Amigas, roughly contemporary with the first macs (and in development since before the mac came out, the feature wasn't tacked on at the last minute in response to the mac or something), had excellent multi-typeface and proportional font support. They also had "colorfont" support (where font glyphs themselves could have multiple colours intra-glyph - a vital feature for video work at the time). In fact, amigas gained full outline font support relatively early (with the unfortunate effect they bet on what turned out to be an also-ran early outline font format, Agfa Compugraphic). And the ancient amiga outline font engine STILL kerns and tracks better than linux/X11' and windows' (though of course only perfectionists tend to consciously notice good kerning)

    Mac and Windows people are always pretending the Amiga didn't exist, trying to write us out of history. Damnit.

  171. Forget Math? by kybred · · Score: 1

    I've certainly forgotten a lot of the math that I had in college. So that makes me a better programmer, right?

  172. Read the Article by Anonymous Coward · · Score: 0

    The article is simply stating that the current model of computing, centered around the algorithm, only takes you so far in a world where many, many programs that are written aren't meant to terminate until the computer powers off and handle incoming events that can occur randomly. His theory of process expression seems like an interesting take, I'd like to know if it has any useful concepts in it like the runtime complexities of the algorithm model. If use of this proposed new model doesn't get you anything in the trenches then it's just a cute slashdot article.

  173. Re:wahay! by qdaku · · Score: 3, Insightful

    Most engineers never need calculus either, but we still take an awful lot. Why use does a geological engineer have for vector calculus? You'd be surprised where it shows up sometimes. But you need to know it to understand what's going on behind the scenes in various "standard" equations, modeling programs, etc., so you don't blindly follow what's laid down in a textbook. Most of the great engineers I know in industry and research (pretty closely connected in my industry actually) are also damn sharp at math.

  174. Long Live Fuzzy Math! by slas6654 · · Score: 1

    This is the dangerous prodigy of the fuzzy math backers. Fuzzy math/logic works until the code goes to production. If you have the "joy" of working with software developers, here's a simple test of the "no math" theory: two months before their latest project goes to production, ask them what type of hardware is needed to support their software. Five will get you ten they will come back with something wildy over or under sized.

  175. Mathematics and Software Engineering by hackus · · Score: 1

    This is a pretty good question.

    of course I have a really good answer. :-)

    Lets take a look at the last 50 or so years of computing, with regards to software development to answer this question.

    You have to sit back and ask just one question: Has software advances changed the reliability, cost or efficiency of writing software in the past 50 years?

    I don't think it has. Why is that?

    Well, I still have my old "Dragon" book from computer science class I took in 1991 at UW Madison. In it much of the same is still the same for example, today as it was 30 some years before I took the class.

    The same algorithms in that book can be used on a IBM 360 to compile Fortran or COBOL as today, which you could use the same algorithms to compile Java or C++.

    Even the optimization tricks we used during the linking cycle to "Peephole" optimization on the code haven't really changed.

    This IS the mathematics part by the way. What I mean by that is, well, we still do integration and differentiation since the 1900's but that doesn't mean thats a bad thing.

    Whats important is that in this case we have made advances in computer hardware to solve some important problems in mathematics since then.

    Software however is a different story. Although mathematics can point to a body of problems that have been solved, or new methods that have been developed, software engineers today still use the same methods without any tangible advances in the field. We still have efficiency problems, huge cost problems and lots of bugs.

    I can still remember in the early 1989..1990's most of my instructors were telling me, by the time I reach my age now, people would no longer be "coding". Everyone would be using "case tools" and that everything would be drag N drop and you would program using "objects" and just connect them together. :-)

    I have a private consulting practice. One of the services I offer right now is the "get out of Visual Studio Wizard Jail" services to my customers.

    These are the people who actually took this idea and ran with it today. Only to find that the code generated isn't readable by any human being. The tool when its upgraded, will not import their old projects. Furthermore attempt to modify such a brittle environment results in huge time delays to finish.

    Thats usually when my phone rings. :-)

    So, I come in an scrap the tool framework (i.e. one of the issues I have with visual studio is that many of the wizards assume only Microsoft exists.), replace it with a open standards framework like Apache AXIS for example, and then HAND CODE everything so that is is documentable, and human beings can understand it.

    I then tell the customer that they need to hire a well organized object design engineer to manage code reuse and stop using proprietary tool frameworks because they are nothing more than a revenue stream for the vendor. Use open frameworks and set up your own private internal intellectual property. Be your OWN framework provider and YOU decide how much money your going to spend.

    But there is a light at the end of the tunnel, and academics nor industry can take the credit for it.

    It's called open source. Specifically, the social structures that form when the GPL is enforced and software is built that brings to the table a solution that industry nor academics can solve: Scale of forced contribution back into the closed loop system of the development process when MILLIONS of developers and users come together.

    I kind of like to think of it as a "quantum" development science. As in quantum mechanics, there is a "fuzzy" boundry between laws that work in the big, but do not seem to have any connection with the laws of the small. Well, we have been stuck for the past 40 years in the "small" because no industry or academic institution could do what the internet has done, in a software development sense.

    Now we see "conflicting" seemingly IMP

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
  176. Wierd math guy by Animats · · Score: 1

    This guy has a web site, Theseus Research, where you can read some of his papers. There's a long, somewhat turgid paper on "null logic", which seems to be an approach to designing unclocked digital logic without race conditions. It's one of those off-in-its-own-world papers with no references and no indication of the ideas actually being tried.

    He does have something called the "Theseus Warp Algorithm", which is a different approach to resizing images. The example looks OK, but he only tries it on one image, and that image is an unusual case.

    The book is apparently an extension of his 1993 paper, A Critical Review of the Notion of the Algorithm in Computer Science". The main point he's making is that much of computing isn't about "algorithms", which, traditionally, are computational functions which take in some set of inputs and produce a set of outputs. Much of computing is about doing something about a stream of incoming events. Most modern programs, certainly anything with a GUI, are a set of interconnected working parts, not "algorithms" in the classic sense. That's reasonable enough, and that's as far as his 1993 paper got. He poses a question, but does not define a solution.

    Does his book go further, or is he still just philosophizing? Don't know.

    1. Re:Wierd math guy by Rick+BigNail · · Score: 1

      Sorry, I am too lazy, but you can read the exerpts from here

      http://ca.wiley.com/WileyCDA/WileyTitle/productCd- 0471798142,descCd-tableOfContents.html

      But I am not that confident just by looking at the Table of Content.

  177. Re... Methinks Thou Doth Protest Too Much by slas6654 · · Score: 1

    Please. The F-bomb over VB? Truly this must be an indignation for you. I hope you get over it.

    1. Re:Re... Methinks Thou Doth Protest Too Much by Anonymous Coward · · Score: 0

      This is Slashdot. If we can't get passionate about programming languages what else do we have?

  178. No way. No. NO. NO! by Anonymous Coward · · Score: 0

    I don't even know where to begin rejecting this horrible suggestion.

    I have degree from a school with a mathematics foundation, so I may be slightly biased. Certainly, I was always turned off by calculus in the curriculum. A helpful toolset, but three semesters of it? A little excessive perhaps I thought at the time.

    But now I want to do things with mathematics and statistics that unfortunately my neglected maths studies can't deal with readily. If you want to write Indian-outsource-grade code drivel, by all means just learn a programming language and try and figure out how to use it. The IT consulting industry has been applying that formula for years. I know, I work in it. It SUCKS.

    Let me just put it this way. Having a more efficient algorithm can make a program orders of magnitude more efficient and scalable. An order of magnitude, of the unwashed, would be 10 times. So two orders of magnitude would be 100 times. Even a weak coder like myself can understand that. But I have worked on applications that are horribly inefficient. Batch processes that would take 12 hours to run. Realtime operations that would take 30 minutes to process. In the former case I spent two weeks and dropped that to 2 hours with almost no changes. With the opportunity to rewrite it would have been drastically lower still. In the latter case I spent two months and dropped the execution time to seconds with better than linear scalability in cost versus exponential. And I would not consider myself to be an exceptional programmer. I am merely able to see an algorithm and improve on it.

    That is the difference between a computer scientist and so-called graduates of "technical" programs.

  179. Re:wahay! by Original+Replica · · Score: 2, Insightful

    Like saying relativity wouldn't have been discovered without Einstein.

    I think it's not so much an "if" as a "when". Maybe without Eistein e=mc2 wouldn't have been know for another 20 years. Imagine how drastically that would have changed the 20th Century. Now if Jobs didn't have this artistic side to him, and that offset GUIs by 10 years, then things like the internet and the adoption of PCs might well be at about the 1997 level right now. And that's assuming that the current Federal administration would have pushed for the internet in the same way that Gore did.

    --
    We are all just people.
  180. Re:The True Nature of Computing by jon_anderson_ca · · Score: 1

    Have you tried Qt? I started using it a few months ago, and I'm really, really impressed.

  181. stupid way to put it by penguinbroker · · Score: 1
    i guess programmers don't need to know math. kind of like how doctors usually don't need to know too too much about pharmacology and chemical reactions. they can just memorize what's available and refer to a chart. so in light of the author's erudition lets stop teaching med school students what a hydrogen bond is, cause you know, who cares about the 1% of med students that actually care...

    brilliant...

    math and cs are the same way, most programmers today really on their computer skills as opposed to any theoretical backing but that doesn't make math any less important to the field. first person 3d shooters today are noted for innovations in storyline/gameplay but what made them possible in the first place was a revolution in 3d polygon representation using quaternions back in the day pioneered by the likes of John Carmack. We still need the math to make new things work. And new things are cool.

  182. Rigorous thinking by Anonymous Coward · · Score: 1, Insightful

    In order to program well (by which I mean write code that performs quickly, uses minimal resources, has no (or few) bugs, is easy to change or enhance without creating new bugs, and consistently gets the correct result) you need to be able to think in a very rigorous, structured way. You also need to be able to hold many variables and logical connections in your mind all at once. It just so happens that the practice of mathematics exercises (and hence theoretically improves) this ability.

    The world is full of people who oversimplify what is involved in programming (like my boss, for example...). There is a tendency to leave out relevant variables to make the problem at hand seem simpler to solve, and simpler to implement, than it really is. Because of this, a lot of people think programming is easier than it really is, and they also write programs which seem to get the job done but which wind up causing them problems further down the road. Such people usually aren't big math geeks themselves, don't see the relevance, and are very unlikely to ever become truly great programmers. When things get difficult, they will either run to a truly great programmer (who probably knows a lot about math, too), or try to make the case the the problem cannot be solved (either because there is no solution or because Microsoft didn't provide a robust enough toolset).

    The times when you need to actually perform some calculus in order to write a program are quite rare (depending on the nature of your product, of course). Mostly basic arithmetic is all you need most of the time. However, the mental skills that are developed from the study of mathematics are crucial for the ability to program well.

    I will also predict that the likelihood that a person will agree with me on this increases in direct propotion to their years of programming experience in the field (i.e., after completing school).

  183. Re:The True Nature of Computing by smilindog2000 · · Score: 2, Informative

    The web site often referred to the reliability of hardware compared to software, and argues we need a hardware methodology-like software development system. I disagree. Hardware is often incredibly difficult to design, we use procedural Verilog code to describe each process, and the rest is manual connections between them. At the manual connection level, we're not more productive designing circuits that we were when we used schematic entry. There's something called the "Design Gap", which refers to the fact that we don't yet know how to make chip designers productive enough for them to use up all the transistors now available on chips. This is one reason so many design teams where off-shored to India. We often can't afford the salaries of US engineers to design modern chips.

    Many people have pointed out that programmers can describe the function of a chip in C several times faster than chip designers can do in Verilog. The point is that chips need to work no matter what system they're used in, while somewhat unreliable software can be ok. I'm releasing a 500K line program to a client this weekend. It has bugs. However, it passes hundreds of designs without failure, indicating most customers likely wont run into them. We built that system with only a dozen-ish man-years of effort, but AFAIK it's more complex than any chip ever designed. Our software methodology converges on reliability, but only to a certain quality point. Going beyond that quality point wastes resources that are needed for the next project. To get to Intel Pentium level of quality would take a team the size of Intel's processor design group.

    There are several companies that now directly convert C (or SystemC - basically C++) code to hardware. The idea is to greatly improve hardware design productivity, but it only partially works. The bottle-neck is verification. If the link between the description and the hardware is difficult to see and understand, debugging and verification becomes a nightmare. A C model can be written much faster, but who cares, since it's the verification that takes all the effort? Maybe they can figure out how to improve verification flows, but until then, plain old procedural C/C++ programing with solid coding methodologies will continue to kick pants off of hardware design in terms of productivity.

    --
    Beer is proof that God loves us, and wants us to be happy.
  184. LAMEST THREAD EVER: Re:As if computer science... by slas6654 · · Score: 1

    Come on morons: real men program in Assembler. I have enjoyed slashdot.org for a few years now and (easily) this is the lamest thread ever. What starts out as a profound but ridiculously irrelevant discussion on the value of math in modern computing is degraded down into a childish catfight on which programming language is more manly.

  185. What math do you need? by Animats · · Score: 2, Insightful

    What math do you need in computer science today? It's a tough call. But today, I'd study number-crunching rather than discrite math.

    I have a classical computer science education - automata theory, number theory, combinatorics, mathematical logic - all discrite math. That's what CS was supposed to be about in the 1980s. It's hasn't been enormously useful, and I'm writing this as someone who ran a successful project to develop a proof of correctness system. Mathematical logic gets used a little, but tree-like algorithms are more important. I'm not sure automata theory is useful for much of anything. It's one of those things, like proofs in plane geometry, taught in schools because it was the first theory in the field.

    Number-crunching, probability, and statistics seem to be more useful today. If you do anything in graphics, you have to have the 3D transformation math down cold. I've had to do tensor calculus and integration of non-linear differential equations (I used to do physics engines for animation) and that required plowing through difficult math books and getting consulting from university math departments. Bayesian statistics have become very important - it's used in spam filters, search engines, computer vision, and most things that have to intelligently reduce messy real-world data. I didn't get enough of that at Stanford.

    On the other hand, where are you going to use this stuff? Outside of Google, Microsoft, and universities, who does real CS research any more? All the good research centers (DEC WRL, HP Labs, IBM Almaden, PARC, etc.) are gone, or a shadow of what they once were.

    1. Re:What math do you need? by mastermemorex · · Score: 1

      It is a good question. Take an example how math do you need to design the Airbus A380. Don't you hardly believe that they are using very complex computers algorithms as well as lot of pen and boards full of very complex math equations?

      ..

      Have you tried to switch on? Oh! yes! Now it works!

    2. Re:What math do you need? by starfishsystems · · Score: 1
      What math do you need in computer science today?

      Interesting question with, I think, answers that branch in two directions.

      • In one direction, we might concede that math research is not the bread and butter of computer science that it once was. For now, at least, the development and application of computer systems can get by without a lot of inquiry into mathematical fundamentals, much in the way that the routine development of optical systems no longer requires inquiry into the fundamental nature of light. That inquiry has already produced a rich theory which appears sufficient for most applications. So maybe we should call the job done and move on.

        However, it often happens that we wish to do things for which existing theory is not sufficient, and then it helps tremendously to have a rigorous discipline by which to judge whether such a wish is utterly doomed (mathematically or physically nonsensical) or just not yet fully explored. I can't help but think that the people who are least able to tell the difference between the two are also the most likely to disparage the mathematical roots of computer science.

      • Then in another, even more prosaic, direction there is the daily routine of software development which, let's face it, contains very little sexy math. But still I'm constantly astonished at the number of times I have to intervene in a conversation among software developers or computer systems people whose capacity for formal reasoning is not up to the task. And here's exactly where it helps to be a computer scientist with some exposure to mathematical formalism, because I can help to lay the discussion bare and find out what the fuck it is that we're actually talking about.

        I remember many years ago drinking beer with one of my number theory profs and naïvely asking him where in our careers he thought we would be applying this knowledge. His answer was, oh no, I though you understood, that's not the idea at all. You'll never use this material. I'm just teaching you how to think.

      --
      Parity: What to do when the weekend comes.
    3. Re:What math do you need? by Animats · · Score: 1

      That argument has been used for teaching Latin in public schools, plane geometry, abstract algebra, and various other disciplines of specialist interest. It's worthwhile to learn something that requires formalism for that reason. But it's more cost-effective to learn something which is both useful and uses formalism in a productive way.

      It's useful to have the skill to read a paper in a computer science journal and be able to 1) tell if it's a good idea, and 2) turn it into working code. How many people have the time for that in a work environment today, though? Most people just download code, even it it's flawed.

  186. Re:wahay! by GreatBunzinni · · Score: 5, Insightful

    If I had never dropped out, I would have never dropped in on this calligraphy class, and personal computers might not have the wonderful typography that they do.

    Oh I see. All this time I was lead to believe that Donald Knuth created TeX to satisfy the desperate need for a half decent digital typography tool and after all it must have been due to some class that steve jobs took when he dropped out of college. Knowing that TeX remains to this day the best typesetting system and knowing a bit about Adobe and the history of PostScript, I guess that that half baked assertion makes sense and must be true.

    ...or maybe not.

    Please. Steve Jobs doesn't walk over water, nor is he behind every single thing which can be accounted as progress in the computer world. This whole jobs-worshiping thing is starting to become ridiculous.

    --
    Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
  187. Math is just... by Independent+Voter · · Score: 1

    I'm pretty good at math, but after while I realized something: Math is just a highly structured language used to describe relationships. As such, it is a useful tool. But it's not the only tool. Logic is the true underpinning for math and for devising non-mathematical solutions to a lot of non-mathematical problems, as well. One of the really nice things about both logic and math is that it is essentially impossible to use math or logic to lie. The closest to lying you can come with math or logic is to make false assumptions of one kind or another and then feed them into a mathematical or logical framework to produce some kind of false result.

    Math is not so much important for itself, but because it is a tool that can potentially describe is so immense and comprehensive. Languages other than math have similarly immense capacities, too. Some of them are even superior to math in certain situations, if for no other reason than that they are more accessible to more people who don't have a strong math background. This doesn't mean that they are better than math. It means that they may be more *appropriate* than math for certain applications.

    I think the same is true about using math in computer science or computer engineering. Math may be capable of getting you where you need to go, but there may be other methods to get essentially the same outcome. Logic, especially, can be very useful, but even intuition, to a certain point and in certain applications, can get you where you need to be faster tan pure math, although you have to "work backwards through the maze" to put it into code. The same applies to the current argument about languages (VB vs. C++, etc.).

    This is like two carpenters arguing about whether using a driver or a ratchet is the best. The "right" answer often depends on which side of the wall you're on.

  188. And we all know by weierstrass · · Score: 1

    ..without Gore the Internet would not have been invented.

    --
    my password really is 'stinkypants'
  189. "without math" misses the point by r00t · · Score: 1

    Like engineering, CS needs math.

    Like engineering, CS is not math.

    Some people seem to think that CS is in fact just math. These are the people the article refers to. They've screwed the field. Turing machines may be interesting in spite of their lameness, but they don't mean shit outside of ivory tower academia.

    There are plenty of people who can do the math, both useful and useless, but write programs that are complete shit for various reasons. These people are NOT good at CS and do not deserve to be influencing anything related to the field.

  190. Re:wahay! by smilindog2000 · · Score: 1

    Most of the great engineers I know in industry and research (pretty closely connected in my industry actually) are also damn sharp at math.

    Yeah, me too. The programmer I just hired to do algorithms got a 1600 on his SATs, and loves math. The Indian IIT grad I hired runs circles around me in math. However, most coders out there don't do hard-core algorithms (I'm guessing you do). It's even reflected in our programming languages: C++ is a wonderful language for describing a string class, but terrible for place and route algorithms (no, I don't want to answer why... no need to get into a religious war). However, it's great for MFC classes, though I still think GUIs could be a lot more intuitive if designed more like hardware.
    --
    Beer is proof that God loves us, and wants us to be happy.
  191. I actually think the reverse is true: by einhverfr · · Score: 1

    we don't have enough math involved in most computer science fields.

    In particular information theory is vital to good user interface design and an understanding of Human/Computer Interactions. For example, look at the density of input and output channels on a GUI vs a CLI and you will see why the CLI is so much better for system administration while the GUI is better for displaying rich information.

    Can you prove mathematically that a program has access to a sufficient set of information to provide error-free (assuming no errors in input) processing of information? I think that in most cases, you can make this determination mathematically through relational algebra. This is what I call "information-completeness." Do most software engineers pay attention to this? Not in my experience... Many database engineers on the other hand do this very well because their discipline is steeped in this specific form of mathematics...

    Now, the biggest issue with math and computers is that the mathematical models tend to assume omniscience or at least information-completeness. This has lead to a number of problems in the development of computer imeplementations of these things, for example the dual meaning of NULL in SQL (NULL has exactly one meaning-- "No such value"-- if you assume that the information set is complete but may have a second-- "Unknown"-- if you do not. One would expect many operators to operate differently depending on whether one really meant "No such value" or "unknown" but in reality they all have to assume the latter). Understanding this problem helps ensure quality software engineering.

    Now, some people say "English majors make better programmers than math majors" and I suppose it depends on what area of programming. However, I think that for the mathematical evaluation of software (to ensure the information flow is solid), you need someone who knows math. Furthermore, the entire semantic structure of languages, both natural and computer, can be subject to analysis of things like information theory. At the end, mathematics underlies every other discipline and is the fundamental discipline of any sort of engineering. Sure, there are parts where creativity is also important, but the engineering (including the design of the UI framework and specification) itself is largely a matter of applied math.

    --

    LedgerSMB: Open source Accounting/ERP
  192. Re:The True Nature of Computing by smilindog2000 · · Score: 1

    I've only dabbled with it. I am a fan. Still, designing the front panel of an electronic device seems a lot more straight-forward. What makes GUIs hard (other than the rare creativity required to write good ones) is the way that good interfaces have buttons and things that can be activated at any time in any order. Algorithms are easiest when the read a file, munge it, and write out a file. There's a big disconnect in-between. Life was so much easier back in the days when all we had were command line interfaces.

    --
    Beer is proof that God loves us, and wants us to be happy.
  193. Re:wahay! by smittyoneeach · · Score: 1, Insightful

    Sure am glad that Donald Knuth poseur got no undeserved credit for TeX and METAFONT.
    Admittedly, those tools target publishing, but still...

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  194. Bullshit. by drolli · · Score: 1

    I cite from the linked article:

    > And, he argues, important process expressions do not qualify as algorithms. "A logic circuit is not a sequence of operations. An

    But it can be simulated by one. And actually it sometimes is a sequence of operations.

    > operating system is not supposed to terminate, nor does it yield a singular solution. An operating system cannot be deterministic

    The operating System i use is supposed to terminate. upon a specific input, it should halt the system.

    > because it must relate to uncoordinated inputs from the outside world. Any program utilising random input to carry out its process,

    Yupp. determinisctic to me only means that upon the same "uncoordinated inputs" the Machine produces the same result. that is also something i expect (in a weak, applied form) from an OS.

    > such...is not an algorithm."

    QED or what? A I forgot, no math today,,,

  195. Re:wahay! by oneiron · · Score: 1

    I sometimes run into great algorithm programmers who were poor at math, but they're rare, and usually can be explained away based on what kind of drugs they did in college.

    Hah! Are you promoting the use of tryptamines as a means of improving programming skills? Sounds like a great idea! Unfortunately, the negative cultural stigma puts a bit of a damper on the idea...for various reasons.

  196. idiot! by Anonymous Coward · · Score: 0

    This guy's argument is totally qualitative and completely unconvincing. (Remember, once you toss mathematics out the window you are no longer 'proving' statements, you're only arguing - and no argument is ever *completely* over...unless all parties are dead and bunch of years have passed. In which case the argument is probably still tossed around by curious historians. I rest my case!)

  197. that's geometry, not CS math by r00t · · Score: 0

    CS math is mainly about Turing machines.

    Domain-specific knowlege, including math, is an entirely different issue.

  198. Ever Watch Norm Abrams: Re:Some people... (?) by slas6654 · · Score: 1

    This is easily the most lame flame war I have ever read on slashdot.org.

    I wonder if you morons ever watch Norm Abrams on New Yankee Wood Shop. You should check it out once in a while. Norm shows something about craftmanship that I think every IT guy should know. Norm uses a table saw for rough cuts, mitre saws for angular cuts, and jig saws for round cuts. The point is: Norm uses the right tool for the right task.

    Programming software is very much like woodworking, you get what you pay for (fine hardwood funiture or cheap composite crap). The reality is, if you code for a legitimate private-sector business (ie. not a subsidized public-sector boondoggle), nobody gives a crap about elegant code. It either works or doesn't work. Nobody before you or after you really gives a crap about elegance.

    If you are smart, you know your tool well. If you are even smarter you know your known and use your competitor tools as well. All the other talk about which tool is better is syncophantic BX.

  199. A rather poor idea by Anonymous Coward · · Score: 0

    "Grown" code is infamous for being very difficult to debug/fix/improve by normal means. Firstly, you lose almost all the advantages of open-source code. Secondly, it is difficult to incremently improve it. Lastly, should the application be any different than the criterea used during the growth, you must regrow the program to ensure correctness. Unfortunately, the possible desired input states of a program are almost always underspecified.

    1. Re:A rather poor idea by Anonymous Coward · · Score: 0

      s/desired//

  200. Certifications YES, but not in programming by Anonymous Coward · · Score: 0

    We need the domain expert who has the appropriate certifications in his field of expertise to learn enough programming that he can function as the software project leader.

    We do not need "Certified Programmers". That would be silly. That would be like hiring an English Major to manage the development of stress analysis reports at an aerospace firm, since it is so obviously important to get the grammar and spelling right.

    Basic programming skills are now an essential part of core literacy. Thinking in terms of algorithms and heuristics, event handling and exception handling, etc, etc, can be taught in K-12 and properly reinforced in the two years of lower division before most students are positioned to make a career choice. Everyone graduating today with a technology or science degree needs to be programming literate. Anyone with a B.S. degree without basic programming skills should recognize that their schooling has been deficient and should take additional courses to patch the holes in their background.

    We don't need Certified Programmers. We need a computer literate society.

    That said, there will be a continuing need for specialists in programming and computer science to further develop the field, train the programming teachers, and act as consultants on the projects the domain experts are developing. But the majority of programming is not going to be done by Certified Programmers, just as the majority of business reports are not written by English Majors.

    On a separate but related issue, Parent Post's use of the word "brutish" to describe certain programming languages is elitist and absurd. If you want to write sonatas and symphonies in C or Lisp, go ahead and do so. But most of us are concerned with churning out workaday code that gets the job done in a stolid fashion. Most of us recognize the value of simple prose in PHP, Perl, and SQL when developing in a LAMP environment where the goal is to spread the horse manure in the rose garden in the most efficient and least messy way. So go off and play with the airy-faery high level stuff of Computer Science if you will, but don't bother the rest of us who are tending our gardens and trying to bring a little more beauty into everyone's life.

  201. Re:Well... Yeah by WilliamSChips · · Score: 1

    You don't need to be brilliant in math to code a forum in PHP The master of the Tao understands that PHP is crap, and would never program in it.
    --
    Please, for the good of Humanity, vote Obama.
  202. FFTs and CFDs don't count by r00t · · Score: 1

    Those are domain-specific knowlege. They happen to be math; often domain-specific knowlege is not math. Domain-specific knowlege includes stuff like knowing how a stock market works, knowing how lawyers bill their hours, knowing how oil pipelines are controlled, etc.

    CS math is none of that. CS math is mainly the Turing machine, and the numerous things related to that.

    Some of us need to apply a few concepts that could be proven with Turing machine math, but we sure don't need to do the proofs or even know what a Turing machine is.

    1. Re:FFTs and CFDs don't count by faragon · · Score: 1

      Most FFT and DCT are usually implemented -aka programmed - at very low level (via handmade SIMD, FPU, or DSP optimizations), and for a good implementation you'll require maths, for sure: mantissa, precision, saturation, error propagation, etc. It is not that simple.

      I think that the article was attempting to plot programmers as mere Lego workers, using sentences and loops instead of bricks. If you hire "dumb automats" for doing "dumb work", unless you work as consulting leech, you'll be probably out of the market pretty soon: the key is productivity, and productivity it is often related with automated tool building, for multiplying the human effort, for which you'll finish having to using maths in some way or other (at least it's my case).

  203. Re:wahay! by BitwizeGHC · · Score: 1

    Sure, but who outside the academic community uses TeX to do real print work?

    Now who uses Adobe InDesign or QuarkXPress on a Mac?

    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  204. Re:Anti-Intellectualism Technological Magicalism by Eli+Gottlieb · · Score: 1

    Well yes, but now every computer scientist gets to achieve his true dream of being a wizard.

    And we can eat big dinners in the Great Hall of Unseen University!

  205. Even GUI Programmers Need Math by ml10422 · · Score: 2, Interesting

    I'm just a GUI programmer, but every once in a while, the need for math crops up without warning: How do I quickly find the object closest to the place where the user clicked? How do I fill that polygon that the user just drew with color? What's the matrix math for converting between color spaces?

  206. Code is Calculus. by Moken · · Score: 1

    Hasn't anyone ever heard of Lambda Calculus. It was derived in the 30s to use formal math for function definition, application and recursion. Yeah... Computer Science can be boiled straight into this.

  207. SCIENCE != ENGINEERING != APPLICATION by tempest69 · · Score: 2, Interesting
    Science is about asking questions that havent been suitable answered for your purposes yet. IE how can we losslessly edit lossy image formats. Or how can we optimize the new database once we have installed solid state drives? Or how do we prevent a lockup with this new 128 core chip with 5 dedicated lock bits..


    Engineering is about building things once you understand the concept behind them. So building a jpg viewer/writer isnt science anymore, it was back circa 1980. Dont get me wrong, building one in without libraries is a mess but could be done. Or building a DES encryption box, it isnt easy, but its not science anymore. its engineering, and we need a bunch of good software engineers because they are realy hard to find.


    Most coders dont really fall into the engineer category, unless they are design pattern zealots, or have a robust methodology fro producing code, they are just using logic and application. This is where most of the really cool toys get built, this is where 99.8% of the absurd buggy code comes from. Most Computer Scientists dont Engineer their experiments, IE buggy test code. Without these people we dont really value software engineers. Without Computer Science, Software Engineers are stuck using the same tools over and over.



    Storm

  208. Re:wahay! by theshowmecanuck · · Score: 2, Funny

    ya... and we wouldn't have had the mouse without apple
    what... the mouse was invented BEFORE apple???? gasp
    :-p

    --
    -- I ignore anonymous replies to my comments and postings.
  209. For _computer science_ you will need math by melted · · Score: 1

    But programming is _not_ computer science. I have an M.Sc. in computer science and I've spent 6 years doing programming before joining a research lab half a year ago. Guess what, while solid knowledge of math wasn't a requirement to get hired, to do anything interesting you HAVE to know math there. Statistics, combinatorics, linear algebra, calculus, signal processing, machine learning - a heck of a lot of math. And after 6 years I'm _really_ fuzzy on most of it. It's getting clearer now, but only because I had studied most of this stuff in school. I spend my weekends reading mind-numbing books and writing code far beyond anything I've done before. Using your math can be pretty exciting.

    The caveat, again, is that you must learn to not confuse computer science and programming/software engineering.

  210. Re:The True Nature of Computing by BillyBlaze · · Score: 1

    Grandparent didn't say UBMs can do anything UTMs can't. Just that they're a more natural abstraction. It's like the difference between lambda calculus and Turing machines. One could say Lambda calculus is better because the concept of functions is not readily apparent in UTMs. You might snarkily reply that one's an idiot because lambda calculus and UTMs are equivalent in what problems they can solve. But that's not the point. The point is, choosing one over the other makes some proofs easier and some proofs harder. That's also the sense in which forgetting math may have been useful - it's not that what we have learned isn't true, it's that had we chosen a different abstraction, we might have learned other, more useful things.

  211. Re:wahay! by neapolitan · · Score: 4, Insightful
    > I'd be interested to debate the ideas, point by point.

    Yes, but I wrote a new book that claims that debate is better off without logic. Early debating pioneers such as Kant and Aristotle imposed their logic background on the field, and this has hobbled debate ever since. I reject the idea of convincing arguments as a good way to resolve any conflict.

    --
    Slashdotter, ID #101. UIDs are in binary, right?
  212. It doesn't help that the article quotes nonsense. by DamnStupidElf · · Score: 1

    "Mathematicians and computer scientists are pursuing fundamentally different aims, and the mathematician's tools are not as appropriate as was once supposed to the questions of the computer scientist. The primary questions of computer science are not of computational possibilities but of expressional possibilities. Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."

    This is fundamentally, ignorantly wrong. Anyone who has worked with lambda calculus or turing machines probably has an intuitive notion of why it's wrong too. I don't know how this dude describes "expressional possibilities", but I bet he uses the notation of set theory to do so, and probably relies on the axioms of ZFC when he's talking about the possibilities, especially when he tries to count them. What does that tell you? Apparently all he wants is some different representation, but he shouldn't make sweeping remarks about mathematics being inappropriate to talk about it. Everything in science relies on mathematics. Everything in engineering relies on mathematics. Everything in computer science relies on mathematics. If it didn't, it would be magic.

    A logic circuit is not a sequence of operations. An operating system is not supposed to terminate, nor does it yield a singular solution. An operating system cannot be deterministic because it must relate to uncoordinated inputs from the outside world. Any program utilising random input to carry out its process, such...is not an algorithm

    Some people like the ability to shut down an operating system. If the algorithm running the operating system can't halt, then you have DOS and you just have to kill it in the middle of whatever loop it's spinning in and hope it wasn't doing anything that wasn't written to disk properly. That's not to say that working with an entire operating system in algorithmic terms is easy, I've had numerous thoughts on the best way to interpret the actions of interrupts and timing and randomness. Perhaps the best interpretation is that the operating system algorithms are actually many small halting algorithms that are directly invoked by interrupts, and the data structures are all that remains intact over the lifetime of the operating system. Most processors have a HALT instruction for just that purpose.

  213. Re:wahay! by smittyoneeach · · Score: 2, Interesting

    Right, well, asserting that Knuth's work had absolutely no influence on operating system fonts, as Jobs appears to have done in his statement, seems fishy.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  214. Please (re)read the linked article by coyote4til7 · · Score: 1

    From the article's summary of the book, the author is arguing that programming is about expressing a process. Or to paraphrase in a less threatening way, programming begins with procedure description.

    One way to do this has been procedural programming. Now, the favored approach is to translate a process into a bunch of things --objects-- that interact with each other --via methods. It's another way to model a process. It also more an architectural model than the proof model of Procedural Languages.

    Comments pro and con Visual Basic have been thrown around in this thread. Scripting languages are often used to metaphorically treat different programs (Excel, awk, sed, grep, FileMaker, PostgreSQL, etc) as objects with methods. The methods just happen to have names like APIs, flags and arguments. I've solved a lot of problems in this way with either no math or math that is darn close to counting on my fingers. When I use multi-dimensional arrays to hold data and variables to remember where I in those arrays, I am not doing array calculus. I'm having the machine remember stuff so I can do something with that stuff. What I do with it might be simple math or it might be a list of error messages or it might be the name, contact info and resumse of a guy applying for a job.

    There are typically two implicit requirements for a program. One: it models something accurately enough to produce useful results. Two: that those results (either directly or indirectly) will be understandable by people outside our field.

    Model something? There is no requirement in Math that something has any relation to the real world. The history of physics is littered with advances that came because someone used math that the creator was sure had no real world application. Mathematics will not accept accurate enough; it requires provability according to very strict standards. Results that can be understood by people outside their field? No... mathematicians leave understandability to the technicians: people like physicists and computer (whatevers) that use a bunch of tools (including some of their math) to do something that produces something in the real world.

    --

    the clock on the wall says 4 til 7
  215. Well said! by Anonymous Coward · · Score: 0

    I'm tempted to sign up for an account just to be able to assign points to you for this one. I have a long history of writing terrible negative comments to people here when they're just asking to be flamed, it's my daily entertainment and I appreciate the anonyminity of being an AC. But in this case, I'm very happy to provide positive feedback.

    I'm a computer scientist, my list of projects that I've successfully completed (as if completed is really a posibility for a computer scientist) would clearly define me as one. I use math to design my code and to justify my code regularly. I choose to use languages such as C# these days since the environment provides me a method of writing more descriptive code with less typing. I will revert to C++ when a natively compiled C++ IDE begins to behave as well as Visual C# does. For the code I develop, the language is less important than the algorithms I implement using them. I in fact sometime use Fortran for certain computations because I know the future audience of the code is mathematicians.

    What I liked most about your comment was that you applied a single word to a characteristic of a certain genre of programming languages that in fact summarized what it was that made them typically popular languages among new developers and less attractive to educated developers. The word was "Brutish".

    I've been looking for a definition for the characteristic that regularly differentiates long time developers of polished code from less experienced newcomers and brutish just covers all that needs be to said in a single word.

    I find that I can't use PHP, Visual Basic 6 for a professional project since the libraries provided with the systems are designed specifically for development using "brutish" techniques, or should I just say lack of techniques. The libraries were designed specifically with a goal of making the most functionality available to the non-programmer as possible. For the most part, the PHP libraries were designed by brutish coders and the rest of the coders are forced to conform to a poorly designed library system. I've regularly wondered if the language would in fact be as popular if someone were to step in and build a new class library that was architected and engineered. I very strongly believe the language would lose popularity because of it.

    I also agree that a big problem is that we have too many "programmers". The old argument of Visual Basic sucking is more accurately explained in your earlier arguments. But what is sadly true is that many computer professionals start writing applications in Visual Basic and after several years of building onto these systems, they apply for a new job as a programmer. This is a huge problem since they aren't really programmers, they've just somehow managed to accomplish a task through brute force over time in a brutish language.

    As for Ecmascript, sadly, if Microsoft has their way, Ecma may lose some ground. Microsoft is not intending to support EcmaScript 4 which is in fact the first revision of EcmaScript to make it a full object oriented language vs. the preexisting prototyped language it is today. The prototyped Ecmascript we use today is in fact a fairly strong language. I regularly struggle with the fact that it is a prototyped language, but now that I've come up with a relatively strong solution for coping with inheritance and virtual functions, I find that it's a very capable language. Thanks to how Ecmascript runs in Opera, making applications entirely in Ecmascript is a beautiful thing.

    So thank you for your well written comment and thank you for the term "brutish" in regards to the type of language, I believe it's really expanded my horizons.

    P.S. - Since I don't want to write another post to cover it, please everyone read the article more closely before getting carried away, the book doesn't seem to be about ditching math, just in trying to redefine the method of expressions used for representing computing. Sadly, I would give much credit to the book since it takes away from my favorite fields of computer math being Big-O and mathematical representation of algorithms

  216. Not entirely, but there's more to it than math by Rorschach1 · · Score: 1

    Ok, I'll admit I did horribly at math in college - what little college I completed. Probably because I was too busy sketching logic diagrams and basically designing a microprocessor instead of listening to the lecture. In other words, I was too intent on what I considered the interesting parts of computer science to pay any attention to the boring, abstract crap.

    Now that I'm having to work with DSP techniques more, I regret not getting more out of those classes. I think it's interesting that most of what I read about DSP algorithms comes straight from the math side of things. I needed an algorithm to demodulate audio frequency shift keying (AFSK) signals, and I found several, all well-defined and characterized in mathematical terms. That would have been fine, IF I was programming for an actual digital signal processor. But I wasn't - the chip in question is an 8-bit MCU running at less than 8 MHz, that sells for about $1.69.

    So I threw all (or most) of that away, and did my heuristic best. I'm still refining the code, but even in its current state it does a remarkably good job. And the clock recovery algorithm works great - given the same input, it decodes more reliably than the equivalent $180 commercial modem I've got.

    Only trouble is, I don't have the math background to know if it's even possible to model the algorithm mathematically in any meaningful way. I can only evaluate the performance by testing it - for convenience I've got it duplicated on a Core2 Duo machine and can process 30 minutes of audio data in under 2 seconds to test changes - but I couldn't even begin to characterize the system in mathematical terms. I'm considering some tweaks like allowing the algorithm to vary when the next sample will be taken to try to improve the discrimination without increasing the sample rate, and I've never even seen anything along those lines. (Possibly because it's just a bad idea, but we'll see.)

    Anyway, I guess my point is that I don't like the tendency in CS education to shoehorn everything into mathematical terms. It seems like the level of math needed to understand and model some system is way beyond what's really needed to understand it in a different framework. I can show my demodulator code to any competent programmer and describe its operation in a few minutes, but it'd take higher math beyond anything I've taken to do it with math. So yeah, maybe pure math gets in the way sometimes, and the educational approach needs to be diversified a bit.

  217. Re:I think the author is making a more subtle poin by Bombula · · Score: 1

    Your point is well made, and - it seems to me - fairly obvious. Why is computer science different from other science? You need more than just math to be a chemist or biologist or anthropologist. Why should we expect CS to be any different?

    --
    A-Bomb
  218. 29 years experience... by WheelDweller · · Score: 1

    ...I think I've used math about a dozen times...and that's a generous guess. Unless you're actually _doing_ math, for plotting to the screen (or elsewhere) it really doesn't come into play.

    I've found that troubleshooting and general logic plays the largest part of the sysadmin job; making data streams work, timing system chores, and writing in various languages to interpret those streams.

    Sizing a database? Yeah, math. Predicting the weather? Definate math. But I've been a "documentor", Systems Analyst, IT director, as well as a general staff member...math is kinda rare. But I appreciate the folks who _do_ understand it.

    --
    --- For a good time mail uce@ftc.gov
  219. Re:wahay! by Larry+Lightbulb · · Score: 3, Interesting

    Procedural languages are the natural way to code most programs, and here's why: we've been recording recipes as a sequence of steps, with if statements and loops, since the invention of writing. It's worth noting that about 150 years ago Isabella Mary Mayson, universally known as Mrs Beeton, changed how recipes were written. She had the radical idea of putting the ingredients at the start of the recipe, and came up with the thought that it might be a good idea to write how long something should be cooked for.
  220. Teh Maths! Oh Noes!! by Anonymous Coward · · Score: 0

    Teh Maths are make brain hurt!!

    Code ain't need teh Maths!!

    Too difficult!! TOo difficult!!

    NOOOOES!!!

  221. Re:It doesn't help that the article quotes nonsens by Anonymous Coward · · Score: 0

    An operating system cannot be deterministic because it must relate to uncoordinated inputs from the outside world. Any program utilising random input to carry out its process, such...is not an algorithm
    Wow. That's such an incredibly wrong assumption that I don't even know where to begin.

    Thanks for quoting this.
  222. Basic algebra is good to learn to write algorithms by ls671 · · Score: 1

    All devoloppers must write algorithms. It doesn't matter how high level the tools they use are, they still have to give instructions to the machine to do the task and that constitutes and algorithm, even if they don't realize it.

    I would have a hard time understanding how someone who's got zero abstraction capabilities with basic algebra ( say, up to grade 12) would suddenly develop such an aptitude when starting to develop algorithms.

    Of course, a lot of people without those aptitudes write programs nowadays. But in most cases, they are quick and dirty scripts which tend to be non-optimized. It short, those types of programs are usually hard to maintain, don't scale well and have several security vulnerabilities.

    Math and algebra, at least until grade 12, constitute an excellent way to learn to abstract things in your mind and visualize what the program is going to do BEFORE one starts writing the code. It is much more cost effective when you preview and debug the program (or just a function) in your mind first, instead of just writing it and adjust as you go along.

    --
    Everything I write is lies, read between the lines.
  223. Re:wahay! by smilindog2000 · · Score: 4, Funny

    Ha! I guess that's why I like to see all the variable declarations at the top of a function, and some kind of comment above that. I've also seen recipes with goto statements. I guess you could call it a spaghetti recipe? :-P

    --
    Beer is proof that God loves us, and wants us to be happy.
  224. a joke nobody ever gets by Anonymous Coward · · Score: 0

    I studied math in college and now program for a living. I always tell people that programming is a lot like doing proofs the difference being that with proofs other people have to understand your work in order for it to be correct.
        The idea being that with programs so long as it appears to be doing the right thing then it is judged OK. Whereas with proofs the "runtime" is going to be the professors minds, if they don't agree with each and every step in you line of reasoning then the "program" halts and spits out an error.
      Doing large proofs in topology or group theory really is a good training for writing large pieces of software because of the deductive reasoning. Instead of stopping what I'm doing to prove a lemma now I stop to write a library.
      I like to think that doing large proofs also gave me a sense of style and and an appreciation for elegance.
      With the numerical, algorithmic, statistical stuff I think that can be hit or miss. You may work on a project where that is really useful but you're probably more likely to end up writing web based db apps these days.

  225. Emergent Science by bluebonics · · Score: 1

    I personally view computer science in the same manner as I do chemistry, as an emergent science that derives from physics. Each science is fundamentally structured by the laws of physics, yet this invariably yields mathematical approximations to each subsequently emergent feature contained within each field (think quantum mechanics mathematics approximating to classical mechanics mathematics at the larger scales). The mathematics contained within each field is, naturally, uniquely differentiated from the mathematics of physics (until, of course, you amusingly start coding physics engines), yet is still an integral part of the fields. you certainly don't need to be a math wiz to be a part of the computer science field just as you don't need to be a math wiz to do simple, basic chemistry; you do need an understanding, however, of basic maths. The deeper you get into each field, though, the more complex the math invariably gets; it's inescapable.

  226. Things by simpl3x · · Score: 1

    I've been reading a bit about scientific tools, "Thing Knowledge" and such, and find that often the tools and the understanding evolve in parallel. One could ask, is the thing the knowledge? Does the ultimate mathematical symbolism, best express the understanding? My impression is that much of the future of computation is going to come from sources other than mathematics. This doesn't imply that we don't need maths, particularly if we don't yet have the tools to express heuristics as process.

    Frankly, we barely have a rhetoric for computing and what the ultimate goals will be in the future. How do we process images? How do we communicate with them? How do we type Mandarin? We have a lot of looking back historically to find the future. Perhaps, the question is, what is more important to the future of computing, algorithms or heuristics? I suppose that I'm in the heuristics camp as well.

  227. CS Is Math by MimsyBoro · · Score: 1

    There is a huge difference between CS and programming.

    CS is Math. IMHO not fun math or very interesting Math (much like statitics and other icky parts of Math) but it still is Math.

    Programming on the other hand is very far from CS and from Math too.

    Reminds me of a great story. We just got a new guy on our (programming) team, straight out of Univ. He is writing and wants to check that two sets are equal. So of course he starts writing: //pseudo-code
    bool setsEquals( Set a, Set b )
    {
        checkContains( a, b );
        checkContains( b, a );
    }

    Just like you are taught in school. Except that it is a lot easier to write
    bool setsEquals( Set a, Set b )
    {
        if ( a.size() != b.size() )
            return false;

        checkContains( a, b );
    }

    Half the runtime. Because everything on your computer is finite.

    Most of the time on desktop machines (not on crazy server applications) everything can be boiled down to MAX_THIS_OR_THAT and then all algorithms are just O(1).

    My 2c.

    --
    God made the natural numbers; all else is the work of man - Kronecker
  228. Math by Lord+Kano · · Score: 1

    Knowledge of math is very important. How can you possibly tune your code's performance if you can't fathom how many times loops will need to execute?

    LK

    --
    "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
  229. Re:The True Nature of Computing by Anonymous Coward · · Score: 0

    You have a very limited and limiting understanding of what algorithms are! In CompSci, there has been decades of research into process calculi (rules for algebraically describing and analysing parallel algorithms running on numbers of cooperating entities). Be thankful there has been, because that sort of compsci algorithmic research is why things like mobile phone networks, some of the better p2p apps and many other things work so reliably.

  230. design vs. implementation by enjo13 · · Score: 1

    I actually agree with the author that for a great many CS disciplines advanced math is largely unnecessary. One of the more important skills in actually developing software is the ability to synthesize complex requirements into a workable system. This isn't mathematical, it's structural.. and in my experience it's the hardest thing to find in hiring developers (of which I've done my fair share).

    That distinction is important. While I took the requisite computer science math courses, I hardly consider myself proficient in math. That's because in my career I've very rarely had to write raw algorithms. I've found that most of my time has been spent in designing systems and utilizing other peoples mathematical prowess to implement them. I'm heavily reliant on the STL and Boost, whose authors I have no doubt are great mathematicians. Their work allows me to focus on what I do well.

    There are domains (increasingly becoming smaller) that are heavily reliant on mathematics. Image processing, cryptography, and a host of others spring to mind. However, the majority of programmers in the world aren't inventing algorithms themselves. They're building useful and interesting things out of the work that others have done.

    I would argue that the two are unique disciplines (with information systems another in the computer world). Maybe the time has come to begin introducing degree programs that focus on system design (ie: architect) in addition to the more mathematical computer science disciplines?

    --
    Turn s60 photos into awesome videos with mScrapbook for all S60 3rd edition phones!
  231. Re:The True Nature of Computing by smallfries · · Score: 1

    Err no. I was serious that I've read his site before. He does claim that UBMs are a stronger class than UTMs. You'll also notice that he isn't responding to the claims that he is a crank - probably because he's had that argument many times before...

    --
    Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
  232. So what if can be expressed in math? by TheLink · · Score: 1

    Yes, you can try to express everything in math, but it's not necessarily _helpful_.

    Music is math too. But you can be a great composer without knowing very much math. And even if you did know math, I daresay it's not the main source of the "good stuff".

    Sure I think Computer Scientists should know all that math stuff - monads, NP completeness etc.

    But there's room for a lot of other areas. I mean how about protocol design and syntax? Knowing stuff in Linguistics and maybe Data Compression theory might come in handy. And sometimes knowing existing practice is good enough (protocol = line based, command-response), since someone else new can easily understand what you're doing and _why_. How about breaking stuff into the "right sizes and places"?

    You could also say doing certain things in a program is "Bad Hygiene" and some code is "bad taste", but where does that belong in Computer Science? Does it even belong there? What's "Good/Bad hygiene" and "Good/bad taste" may be obvious to some, but how would you teach it to others rapidly? Figure a way to define it in mathematical terms? Would that be so useful?

    --
  233. Re:wahay! by Anonymous Coward · · Score: 1, Interesting

    And oddly enough, according to the people who designed the original Mac, Steve Jobs tried to kill the Mac off a number of times... only the passion of the engineers kept it going on the sly. Every time Jobs found out they were still working on it, he tried to kill it off again. The Mac doesn't exist *because* of Steve Jobs, it exists *in spite* of Steve Jobs.

  234. Programmers == Typists by Anonymous Coward · · Score: 0

    Programmers these days, are nothing more than overpaid typists. They have no real understanding of the basic algorithms used in any of the most basic concepts. Programming these days, especially with learning languages like java, take most of the skill out of programming.

    Problem A == Java cookbook solution A

    Need to sort, just call java.package.sort.*

    don't worry about the algorithm details, let java take care of it for you.

    Memory management, page tables, effecticent code, let java take care of that for you.

    I took computer engineering, I learned HOW the cpu works, HOW the memory magement unit works, hell I've built an ALU from discrete components.

    I programmed assembler, C, C++, and yes, even took an early java class. I learned HOW the algorithms worked, the math behind them, and then only then, worked on the implementation from SCRATCH.

    What do I do now, not programming, I leave that to the code monkeys. I DESIGN the CPU. Yes verilog is like programming, but on a much lower level, ie: none of this abstraction that the higher level languages provide. It's all about the clock cycles baby!

    3rd and 4th generation languages enable almost any idiot to be able to seqeeze out mounds of steaming code. It "works", but thats about it.

    By all means, lets water down computer science some more. Perhaps the graduates can find jobs in data entry / telemarketing and of course 'web mastering', we can get the real engineers to design algorithms for the rest of us.

  235. Computer Science != Software Engineering by shish · · Score: 1

    People need to understand this :(

    --
    I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
  236. Math is good, up to a point by rinkjustice · · Score: 1

    I'm majoring in Business Marketing, and although I'm not strong with numbers and never have been, I know being forced to learn annuities, interest rates, principal components etcetera stretch the perameters of one's thinking and can only be of benifit.

    On the other hand, we may need more right-brainers in the computer science field (think Apple designers) who focus on interface and seamless communication between man and device. Computers need to meet our needs, and speak our language, and not the other way around. I'm not sure math geniuses have that kind of artistic headspace required.

  237. Re:wahay! by HiThere · · Score: 0

    And you *have* noticed how wildly successful Tex and Metafont have been...
    Well, they have been important, but not in comparison with the Mac. Tex is still difficult to master. (For that matter so is LaTex...even when you add in the various GUI tools.)

    The Mac made fonts easy. That was more important than the technically superior approach taken by Tex. Yes, once people have bothered to learn Tex, they appear to like it a LOT!!, but this doesn't mean that most people would have ever bothered to learn.

    Actually, I'm fairly certain that eventually word processors would have started to handle multiple fonts, but even that's not clear. Apple's switching to typefaces caused a restructuring of the printer industry, and of the CRT industry. Remember shadow-mask tubes? They produced the clearest and sharpest text available...but they could only handle one font at one size. I'm sure that daisy-wheel would have eventually been replaced by dot-matrix...but would the printers have accepted anything other than ascii? The ImageWriter, and then the LaserWriter changed printing more than we can easily grasp. It could well have been that the ability to handle multiple-fonts would have been relegated to "super-high end" printers until the ability to print images became important. That's a 10-20 year delay. (The importance of printing images might have developed more slowly if it weren't an easy extension of existing capabilities. Marketing can drive technology.)

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  238. Re:wahay! by fbjon · · Score: 2, Insightful

    TeX is not a UI renderer, though. Did any OS have nice fonts back then?

    --
    True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
  239. Re:wahay! by iluvcapra · · Score: 1

    Hmm... C++ ... Mapping algorithms... religious war.... MFC!....

    He's clearly working on Microsoft's google maps killer! =D

    --
    Don't blame me, I voted for Baltar.
  240. Relationship between Math & Music by EGenius007 · · Score: 1

    I don't see how the relationship between programmers, their programs, their computers & the math at the heart of digital computation are necessarily more integral than the relationship between musicians, their music, their instruments & the math at the heart of the way the sound is generated, transmitted & received. Yet, we generally do not treat music as a sub-discipline (or sibling, or however you want to define the general consensus of the CS/Math relationship today) of math. Should math be an important part of systems that focus on numeric input & output? Undoubtedly. Should math be an important part of systems that focus on human input & pleasing/practical/"human-like" output? As soon as I hear music by HAL that rivals that of Beethoven or The Beatles, sure.

    --
    I know what you did last summer. Just kidding, I don't work at the NSA.
  241. Re:The True Nature of Computing by msuarezalvarez · · Score: 3, Insightful

    The algorithm is the worst thing to have happened to computing. It is the primary reason that software is unreliable. Programming is hard precisely because it is based on the algorithm. I hope that this new realization among some of us that computing should not be based on the algorithm becomes more widespread. It will usher in the next computer revolution.

    Wow. That's probably the most non-sensical statement I've read in Slashdot in a while, including the huge iraq-related threads... Quite an accomplishment!

  242. 'expressional possibilities' without mathematics? by mpaque · · Score: 1

    The primary questions of computer science are not of computational possibilities but of expressional possibilities. Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."

    And for those expressional possibilities that are not computable? It's not like they won't occur in the Real World.

    Actually, it occurs to me that we may have already reached a point of mathematical illiteracy among those practicing computer programming. At least once a month I see a problem report or feature request from one of our so-called 'software engineers' that reduces to a request that we disprove RIce's Theorem [1] or Godel's incompleteness theorems [2]. These do have a certain entertainment value, although I have recently been told not to toy with the employee's minds and so am somewhat restricted in how much entertainment I can derive from them.

    1. http://en.wikipedia.org/wiki/Rice's_theorem/
    2. http://en.wikipedia.org/wiki/Gdel's_incompleteness _theorem/

  243. Re:The True Nature of Computing by hedwards · · Score: 1

    Exactly. The algorithm is the worst thing to have happened to computing. It is the primary reason that software is unreliable. Programming is hard precisely because it is based on the algorithm. I hope that this new realization among some of us that computing should not be based on the algorithm becomes more widespread. It will usher in the next computer revolution.

    Then what exactly would you recommend as an alternative? The human brain is based upon a huge number of algorithms, logic and processing. Each time I come over to my computer I don't go through the process of trying to figure out what my keyboard is, monitor etc. I have a process in mind to determine that my keyboard has not been replaced while I was away with a hard roll.

    Until such a time as the basic unit of a computer isn't a bit or something which reduces to a bit, we will have a need for algorithms as the base for any decisions that a computer makes. Programming is difficult where it is difficult primarily because people don't typically think about the algorithms that they themselves use in solving a problem. I don't personally think a whole lot about how I know that a square is four sided or that a particular square is red, I don't have to because that thinking is done at a very low level, one which doesn't typically just pop up.

    A computer doesn't have that going on to the same extent, for common operations, it can sometimes be built in, but for the most part the steps need to be followed. Any time the language does something for the programmer that represents a loss of flexibility which may at some point be important. Consequently languages tend to leave as much as possible up to the programmer, as the programmer knows more about what a program needs than the designers knew about a bit of code written 40 years after the language was developed.

  244. Re:wahay! by The+One+and+Only · · Score: 1

    Considering that Jobs took over the Mac project and managed it throughout the early 80's, I find that unlikely.

    --
    In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
  245. a slight technicality... by VoidEngineer · · Score: 1

    Computers are (by their very definition as well as by the word used to describe them) mathematical machines. A computer can essentially do NOTHING BUT calculate. It can in its core add, subtract, shift and move data around. How is this supposed to work without math?

    I get where you're coming from, although I would split hairs and say that, by definition, computers read, write, move forward, or move backwards. Those functions are what formally define a Turing-complete system, also known as a universal machine. The universal machine then quickly lends itself to doing operations such as adding, subtracting, and so forth. Reading and writing are formally different than adding and subtracting; and its the reading/writing/moving which are definitial to Turing-completeness.

  246. Re:It doesn't help that the article quotes nonsens by poopdeville · · Score: 1

    This is fundamentally, ignorantly wrong. Anyone who has worked with lambda calculus or turing machines probably has an intuitive notion of why it's wrong too.

    Oh? See, where I come from, Turing machines and the lambda calculus are formalisms for describing and computing functions, stateless mappings from a domain to a range. Operating systems, for example, are not functions, because they are not stateless.

    This is a common theme among functional programming languages. They want to remain as purely functional as possible (because that approach has proven to be powerful), but are unable to do so in various circumstances because they have to interact with the underlying hardware or user. For instance, Haskell has its monads. Functions, as such, are unable to maintain state. They cannot express the idea of waiting for an arbitrary condition.

    I don't know how this dude describes "expressional possibilities", but I bet he uses the notation of set theory to do so, and probably relies on the axioms of ZFC when he's talking about the possibilities, especially when he tries to count them.

    That irrelevant to his point. He's not saying mathematics isn't a useful tool in computer science. He's saying that the aims of mathematicians and computer scientists are different. Even if they use the same methods. The majority of people working on whether P=NP, or extensions to Rice's theorem (there are lots), or Oracle Machines, etc. are mathematicians. These are very different kinds of problems than computer scientists are interested in. The last computer science conference I went to had papers on Data Mining, AI, computer vision and other kinds of pattern recognition, the mathematical basis of computer security, HCI, and a multitude of other subjects.

    More to his point, he's saying that the mathematician's focus on Halting algorithms (and other Rice's theorem-related constructs) is inappropriate for tackling the kind of (mathematical) problems computer scientists deal with. As such, there shouldn't be a focus on them in CS curricula. Alternatives that capture what computer scientists are interested in already exist (slightly modified Finite state machines, different sorts of logics).

    Apparently all he wants is some different representation, but he shouldn't make sweeping remarks about mathematics being inappropriate to talk about it.

    He didn't. He gave a concrete example of a real life computer program that cannot adequately be modelled by a Turing machine or the lambda-calculus.

    --
    After all, I am strangely colored.
  247. It all depends by deuterium · · Score: 1

    Most of the programmers I know deal primarily with simple web sites or legacy apps. There aren't any demanding mathematical maneuvers involved. It's mostly flow control, modeling objects, and error control. As long as they're able to appreciate the basics of algebra, they're fine. The real skill involved seems to be the ability to define the application as a group of much simpler processes, and structuring the interaction between those. It's about fully appreciating the consequences of a chosen algorithm.

    Beyond the ability to break down systems into simpler subsystems, programming also demands knowledge of the syntax and features a given language has. Much like learning a foreign language, this takes time to fully master, and serves as a relatively important barrier to entry for those virgin to the field. Compilers are unforgiving of the tiniest syntax error, and syntax is essentially arbitrary. Typically, one must know several languages to complete a project. If you spend all of your time consulting your language texts, you'll be inefficient. If you don't understand all of the features a language has, you'll invariably write code that's more convoluted than necessary. A great coder in Actionscript can easily be a mediocre C# developer. Knowledge of the language is critical, and said knowledge isn't easy to master.

    Of course, there will always be programs whose purpose is to perform involved computations, so math will always be required somewhere in the field. Still, those applications are easily outnumbered by the sea of data driven form apps and middleware which require little or no tricky math.

  248. M-x untabify by tepples · · Score: 1

    Paper is much more convenient in the car and/or the bathroom, however. Then can you normalize the whitespace before printing it? Python Style Guide recommends M-x untabify if you use Emacs.

    I presume xe's not a Lisp programmer, given the closing marker phobia? What you see as phobia I see as a devil's advocate viewpoint to your philia. And no, I have never programmed in Common Lisp, but I have programmed in Scheme.

    Hmmm, I missed the ability to use spaces instead of tabs, perhaps that's changed from early Python days? Python Style Guide states: "Use the default of Emacs Python-mode: 4 spaces for one indentation level. [...] Never mix tabs and spaces. The most popular way of indenting Python is with spaces only."
  249. Re:Anti-Intellectualism Technological Magicalism by QuoteMstr · · Score: 1

    It's Clark's third law: "any sufficiently advanced technology is indistinguishable from magic."

    Your analysis is spot-on, and I see this phenomenon happing all around me. It's just sad that professions in the field are beginning to succumb to this mindset.

  250. I do agree by FoxNSox · · Score: 1

    I completely agree with this. I am a computer science student, and I am terrible at math. I repeated entire high-school math classes just to pass. However, I am at the top of my Computer Science classes. I excel to the degree that I have obtained high-class contracts for programming.

  251. Mr Fant by Tell999 · · Score: 1

    I think that man should get real.

  252. Re:The True Nature of Computing by MOBE2001 · · Score: 1

    Then what exactly would you recommend as an alternative? The human brain is based upon a huge number of algorithms, logic and processing. Each time I come over to my computer I don't go through the process of trying to figure out what my keyboard is, monitor etc. I have a process in mind to determine that my keyboard has not been replaced while I was away with a hard roll.

    An algorithmic process is a one-dimensional sequence of steps; only two objects can communicate at a time, a predecessor and a successor. In other words, there is a single signal path. In a non-algorithmic system, by contrast, the number of objects that can communicate simultaneously is limited only by physical considerations. The transputer (Occam) was such a system. That does not mean that a non-algorithmic program cannot be created on a single processor system. Neural networks and cellular automata are some examples of non-algorithmic applications. Problem is, current processors are optimized for the algorithm and computer languages are ill-suited for parallel synchronous systems. In this light, you're mistaken about the brain executing algorithms. The brain is the ultimate non-algorithmic system.

  253. Re:Does your rant have any basis in reality? by QuoteMstr · · Score: 1

    Seems like he has some chops...
    The timecube guy gave a talk at Stanford. Giving a talk means nothing.

    He does? I didn't get that from the article. Can you site something in that review or in the book?
    First, it's cite, not site. And no, I can't cite anything from the article that supports exactly that supposition. However, judging by the overall tone of the article and the reaction to it, that's what the author was getting at.

    I'm not sure if O(logN) is really an algorithm either.
    I'm collecting quotes from the discussion of this article, and the above just made it in. Did you read what I wrote? Do you understand what an algorithm is? Complexity is a property of an algorithm, not an algorithm itself. Some scheduling algorithms might be O(logN), others O(1), and still others O(n^2). For convenience's sake, I use the word "scheduler" to refer to the process that does the scheduling, including the algorithm it uses.

    We already have an algorithmic-y (tm me) field and that's called mathematics. Why are you trying to shoehorn it into CS?
    Computer Science has always been a branch of mathematics. You are trying to adulterate it by removing the mathematics and replacing it with non-mathematical, non-science pragmatic material. That material has a place, agreed, but it's not in computer science. People who want to learn only about the latest object design fads should not call themselves computer scientists.

    Yeah your typical VB programmer can't, but who cares?
    I, for one, care. These VB programmers are writing production software that affects not only themselves and their companies, but all of us. How many lives have been ruined as a result of identity theft caused by easily identifiable security holes? Programmers (or mechanics, for that matter) have a moral responsibility to be competent in their field, since very often their clients have no way of telling the bad apples from the talented folk.
  254. Re:Does your rant have any basis in reality? by QuoteMstr · · Score: 1

    Oh, forgot to mention: teaching algorithms and data structures in Java makes it difficult to communicate some of the subtler points.

    Consider a linked list. Many Java programmers, especially new ones, are confused about the difference between a reference to an object and the object itself, since the difference isn't explicit like it is in, say, C. Really learning about data structures requires keeping these fine distinctions in mind.

  255. Math == Latin by Tom · · Score: 2, Insightful

    The article completely ignores the most important part about math: It's a language. A very good language, even. More modern than any of our natural languages, capable of expressing non-Newtonian, non-Euclidian and non-Aristotelian facts of the world we today know to be true but still struggle to fit into our mother tongues.

    Also, it is what Latin used to be in the middle ages - the common language of people all over the world. Scientists from different continents may be barely able to communicate in their respective mother languages or in english, but if they write down their formulas, they both know exactly what the other is talking about.

    But no, the most important part is that math still evolves, and rapidly. As so many other critics, the author of the article appears to have a very limited understanding of math.

    --
    Assorted stuff I do sometimes: Lemuria.org
    1. Re:Math == Latin by gatkinso · · Score: 1

      Hardly.

      Mathematics is more a logical tautology used to overcome the shortcomings of human communication. WHile it would be tempting to call it a metalanguage, and in come contexts it is, it is simply a logical contruct that is utterly meaningless with out the context that only language can frame it within.

      --
      I am very small, utmostly microscopic.
  256. Re:wahay! by UserGoogol · · Score: 1

    Yes, but he tried to kill the Macintosh because he was working on the Apple Lisa which was pretty much the same idea but way more expensive, and then he switched to working on the Mac later on. As the uncle threads say, Jobs is still kind of full of shit, but not in that way.

    --
    "Never attribute to malice that which can be adequately explained by stupidity." -- Hanlon's Razor
  257. Re:YOUR A FUCKING MORON by QuoteMstr · · Score: 1

    If you don't care about my opinions, why are you reading them?

  258. Re:wahay! by Ironpoint · · Score: 1

    I take offense to your proposition that people are "trained" into anything. People excel on their own merits. The only thing companies do is make it economically feasible and advantageous for a person to develop new skills. I find this "act of creation" is a common view of management types who absolutely must have credit where none is due. Its one thing to take credit for a successful project, but another to take credit for someone else's skill.

  259. Black and white.. Not all or nothing. by Anonymous Coward · · Score: 0

    I think, the summary misses the point here. He isn't saying that Computer Science should completely revoke any relationship with mathematics. He uses, for instance, an analogy between electronics and logical circuits, and how it is viewed in relation to mathematics. Electronics uses a great deal of mathematics--- but it perhaps isn't 'purely' based from the ground up on mathematics. Logic circuits involve processing inputs, producing various potential outputs. The idea isn't to do Computer Science without the use of mathematics, but questioning whether not the basic theory of computer science, and the practice of it, should be so strongly tied to analogous structures in Mathematics (such as functions).

  260. I'd hire the guy with the technical writing degree by Anonymous Coward · · Score: 0

    Most programming doesnt need much math skills. The skill set someone has from getting a degree as a technical writer makes for a better progammer than most CS degrees. Its way past time that the CS departments realized what skills there graduates are really getting hired for and revamp their programs.

  261. Re:I think the author is making a more subtle poin by Anonymous Coward · · Score: 0

    way back, comp sci was just an applied math major, just like you said.

  262. Re:The True Nature of Computing by CaptainCarrot · · Score: 1

    It really does no good for you to describe a system on a high level, abstracting the levels beneath it, and then pretend that there's nothing of any complexity going on in them. You have not defined what an "object" is, but in modern computer science it has a fairly specific meaning: an instantiation of an abstract set of characteristics, among them behaviors expressed algorithmically. Yes, the way in which it interacts with other objects may be subject to changes in its "environment" but there's more to computing than interaction among objects. Even your example of occam, which was a language and not a computer itself, was procedural.

    What you're missing in your insistence that hardware is more complex yet more reliable than software is that software is really nothing more than a simple abstraction of what's going on in the hardware, which conceals a great deal of complexity for the sake of conceptual clarity. But those lower layers aren't really absent and can't always be ignored.

    This whole idea comes across as the naive theories of someone who has not done a great variety of work. Any time I've ever encountered someone who thought a complex or intractable problem has some simple solution that everyone but that person has overlooked, he's been wrong, sometimes obviously and dramatically.

    --
    And the brethren went away edified.
  263. Performance versus human effort by Tablizer · · Score: 1

    When talking about performance issues, certainly math plays a signficant role. However, when dealing with issues of human interaction with the computer, such as software maintenance and interface design, things get messy. One then enters into the realm of pyschology, which is a soft science and varies per individual. More on this:

    http://www.geocities.com/tablizer/science.htm

  264. Re:wahay! by smilindog2000 · · Score: 1

    I just have to say how nice it is to have a forum where I can talk to real geeks. I spent 18 years in Silicon Valley, and now that I live here NC, it's just not the same. Thank God there are people I can have a semi-abnormal conversation with on-line that know something about all of those things!

    --
    Beer is proof that God loves us, and wants us to be happy.
  265. Re:wahay! by smilindog2000 · · Score: 1

    Ha! When I say "I hired" and "my programmer", that's actually misleading. My company doesn't let me manage anyone (and for good reason). These are guys I mentor, and I'm a big fan of mentoring. You're right that they do excel on their own merits. All I do is offer them an environment designed to help them succeed. I'm quite proud of how some of their careers have turned out, and I'll take some credit for giving them their first break. While I can't take credit for their skill, I'll take some credit for steering them in a fruitful direction, so they could attain those skills quicker. I'll also take some credit for being able to tell when a guy is super-smart and eager to succeed, and having the smarts to offer them a chance. Everyone needs a reason to believe they are helping the world, and helping these guys out is one of mine.

    --
    Beer is proof that God loves us, and wants us to be happy.
  266. twisting the terminology to suit your argument by tolomea · · Score: 1

    Quicksort has a worst case of O(n^2), however it normal profile is a very lean O(nLog(n)), there are only a very limited number of situations where it breaks down to O(n^2) and if you hit it with a sufficiently large data set that exhibits one of those cases then it will perform worse than the other O(nLog(n)) algo's.

  267. Many American Arab Christians are suspected of te by Anonymous Coward · · Score: 0

    The main point is the Arabic genes not Islam. The majority of American Arabs are Christian not Muslim, yet they are suspected of terrorism. They ARE NOT CONVERTS from Islam to some odd version of Protestantism but born Christians, the offspring of more than 30 generations of Eastern Christians, adepts of Old, Genuine Eastern Christian Religions, much older than Protestantism: Maronites, Melkites, Coptic, Assirian or Assirian Catholics,etc. Sure, despite being genuine christians (more so than many American Protestants) they wear beards and turbans, which does not help.
    Explanation? A minority in their native countries, Christian Arabs are persecuted back home, thus the pressure to immigrate.

  268. Don't do drugs. by ozone_sniffer · · Score: 1

    This concept of 'process expression' is, he says, a common thread running through the various disciplines of computer science. "A logic circuit is an expression of a logical process; an architecture is an expression of a continuously acting process to interpret symbolically expressed processes; a program is a symbolic expression of a process; a programming language is an environment within which to create symbolic process expression; a compiler is an expression of a process that translates between symbolic process expressions in different languages; an operating system is an expression of a process that manages the interpretation of other process expressions; any application is an expression of the application process." Marijuana is baaaad, mmkay? Drugs are baaad ... don't do drugs, mmkay? Or else you'll also be baaaad, mmkay?
  269. VB != Evil (Re:As if computer science wasn't...) by Tablizer · · Score: 1

    The point is that VB is fine if you want to basically do completely trivial things with what you've already got - basic component connection.

    I am not a VB fan, however, I think you guys don't understand the VB philosophy. VB is based on event-driven thinking. The application is divided up into small snippets of code that "hang off of" event-generating objects (buttons, forms, etc.) In a final project, there may indeed be a lot of code, or "complexity" because there are a lot of events to respond to. I don't necessarily see a problem in this approach. VB's annoyences are not do to the event-driven model itself. I have not seen any formal proof or coded demonstration that it is usually worse. It is a form of semi-declarative programming, actually, which I think the OOP-favoring crowd tries to dismiss for some reason. Much of the app configuration is via attributes.

    That being said, I wish the GUI framework was relational such that one could query and find and display code snippets and GUI attributes as they please instead of how Bill Gates lets you out of the box. But this would probably require and open-source framework and dynamic RDBMS instead of the semi-static model in favor now.

  270. Long on Analogy, short on example solutions by skeptictank · · Score: 1
    Where are the example applications built with your modeling system? Without an example it's difficult to see how it will be used to solve problems more sophisticated than sounding an alarm when a certain stimuli is received. How are the components built-up into systems that can deal with complex problems without increasing signal pathway complexity to the breaking point?

    Second of all, hardware fails all the time. Not only does it fail physically, it fails logically, it comes in over-budget and late. It is poorly documented and doesn't meet requirements - this happens all the time. When it happens you fix it with software. I make my living fixing hardware problems in software. One of the primary factors leading to increased complexity in software are the work-arounds that have to be made in software for bad hardware.

  271. Re:LAMEST THREAD EVER: Re:As if computer science.. by Tablizer · · Score: 1

    is degraded down into a childish catfight on which programming language is more manly.

    You just triggered a marketing idea. I'm gonna create a programming language called "Bigdick++++". You will feel manly using it, regardless of its actual merits. Suggestions for keywords? PENETRATE, DOMINATE, EXPLODE...

  272. Re:I am able by utopianfiat · · Score: 1

    gottem!

    --
    +5, Truth
  273. When is a scientist not a scientist? by Max+Littlemore · · Score: 1

    Let me make this clear: your ability to write code in no way makes you a computer scientist. It's like saying that the ability to operate a forklift makes you a structural engineer. Stop it already.

    I'm kind of torn between agreeing with TFA and not. On the one hand, I see the subject of this story as being akin to the statement "Forget physics to become an astro-physisist", or the concept of not needing maths to do something which is essentially based in maths is nonsensical. On the other hand, if you consider mathemetics to be a language, I wondwer whether writing code, or drawing circuit diagrams could be considered valid mathematical language, which makes the jist of TFA valid, even if the summary is poorly worded.

    I think comparing someone who writes code to a forklift driver is a bit harsh. I would be more likely to compare someone who writes good code to an engineer, even if they don't have a strong mathematical background. Engineering is about applying established thought patterns to problems. It is not science. It's true that "computer scientists" are for the most part not scientists, but that's a seperate issue.

    Some of the worst code I have ever had to maintain has been written by mathematics majors, the absolute worst shit fight I ever had to deal with was from a mathematics PhD. The maths was solid, but the design was shitful spagetti code that, while discreet algorithms performed well, the way thay were put together made the whole system run like an absolute fucking dog.

    So I would say, if people insist on calling software engineers computer scientists, you certainly don't need to worry about mathematics to become a great computer scientist.

    --
    I don't therefore I'm not.
    1. Re:When is a scientist not a scientist? by QuoteMstr · · Score: 1

      Some programmers are forklift operators; others are skilled masons, and others, architects and engineers in their own right.

      I think the root of this whole debate is that computer science has forked into two disciplines, and we need to recognize that. Also, it's possible for someone to be acquainted (and even skilled) in both areas simultaneously, which further confuses the debate. My friend at CMU said that the students there are almost strictly classified into "leet hacker" types or math-friendly ones that disdain actual coding. Both have value, but only the latter should be considered computer scientists.

  274. Re:Math not essential - Logic is! (correction) by Tablizer · · Score: 1

    Correction, that should be "production apps", not "product apps".

  275. Project Euler by TeknoHog · · Score: 2, Interesting

    A few weeks ago I came across Project Euler. Most of the exercises are good examples why math is good for coding; they have brute-force solutions that take a lot of time, but clever solutions should always take less than a minute to run.

    --
    Escher was the first MC and Giger invented the HR department.
  276. Mathematics matters by bruno+loff+barreto · · Score: 1

    The idea that math is not necessary is absurd, foolish, and dangerous. I have a specific example: in Portugal the distribution of teachers in public schools used to be done by hand. A regular software company was hired to write some software that would distribute the teachers according to a set of rules. The company produced thousands of lines of code, and yet failed to write the software --- there was a mistake somewhere but they did not know where. A different company, which employed Mathematicians specialised in specification and verification (yes, that is an area in Theoretical Computer Science), was hired to fix the mess that this previous company made. Of course, where "software heuristics" failed, mathematical argument succeeded, but not before several millions of euro where spent on these "software and system engineers". I have nothing against these people, but it is absurd to say that Mathematics is unnecessary. When it comes to real work --- millions of euro kind of work --- it does matter.

  277. You need both by dbIII · · Score: 1

    I honestly think a lot of the hostility, here, towards VB

    My hostility is due the the lack of backward compatibility - you have to work out if the VB code you are trying to run is really a tweaked BASIC, a tweaked PASCAL or a tweaked java. If the code was orginally written to be staticly compiled it wouldn't be an issue, but instead you need to keep a pile of old machines frozen at different dates so they have the right VBRUN and dozens of other libraries that will break the application if they are the wrong version. The closed source mentality means that you cannot work out what these rarely used apps are doing and you usually cannot track down the author and in some cases when you can they may not have the source code. Those that wrote the little geophysical applets I have to look after had very good mathamatical skills - just poor programing practice (like not keeping the source code!).

  278. Intriguing by Anonymous Coward · · Score: 0

    It seems to me that industrial engineering and program design often have a lot in common.

  279. Depends on context of work by Device666 · · Score: 1

    A developer will most nlikely to use math if he: * has to develop filters for audio * has to develop compilers for instruction optimalisation * has to develop Mathworks * has to develop software for Iter * has to use formal verification * etc But a lot of applied computer science doesn't need math nor science. If you're a researcher you most probably can not do much without math. Boring item.

  280. CYA programming by Tablizer · · Score: 1

    Actually what I describe is CYA gained from experience. If the program stops upon the first error and doesn't finish the others, you get chewed out for stopping production. If you make it not report any errors, then you get chewed out for ignoring problems. If you do what I suggest and have it send an exception report, then you cover both basis. You have notified others of detected problems but finished the batch as best software can. You have Covered Your Ass (CYA).

    If this is not obvious at first, one learns it over time by what one is chewed out for. Even if you are not taught this approach in school, you will learn it in the long run the hard way if you don't like being chewed out by managers. (Some people don't seem to care about being chewed out, and do the same shit over and over.)

  281. Re:YOUR A FUCKING MORON by Anonymous Coward · · Score: 0

    No, you're a fucking moron.

  282. Re:The True Nature of Computing by Anonymous Coward · · Score: 0

    Al Gore Rhythm is truly a frightening thing.

    "I've seen things you people wouldn't believe.

      Al Gore standing relaxed with his eyes closed,
      the palm of his right hand on the back of his head,
      wearing a stained wife beater t-shirt,
      slowly undulating to mystical rhythms,
      only he can hear.

      All this will be lost, like tears in rain."

  283. Re:wahay! by Lars+T. · · Score: 1

    So what do you write your TeX documents with on screen? TeX fonts? Bit-mapped non-proportional fonts?

    --

    Lars T.

    To the guy who modded me down from perfect to terrible Karma - Apple haters still suck

  284. Re:I am able by Anonymous Coward · · Score: 0

    bleep bloop. doink!

  285. maths skills != programming skills by welsh+git · · Score: 1

    Interesting point... I class myself as 'fair' at maths, but rather-good at programming.

    I am particular good at boolean maths/logic etc. but as for general maths, I'd say "fair" (in the context of slashdot posters, not in the context of the general UK citizen who can't do anything without a calculator and someone to help him/her)

    I've always 'heard' that being excellent at maths is invaluable to programming, but from my opinion, as long as your maths isn't rubbish, your personal creativity, and ability to think of solutions "outside the box" (damn, I HATE phrases like that, and will regret writing it in the morning) is far more valuable.

    I'm not dissin' the maths people who program, I just agree that it's not the bee-all-and-end-all

    --
    Sig out of date
  286. Re:wahay! by doom · · Score: 1

    Just a little arrogant of Steve there. Amigas, roughly contemporary with the first macs (and in development since before the mac came out, the feature wasn't tacked on at the last minute in response to the mac or something), had excellent multi-typeface and proportional font support.

    And what about Apple's Lisa machine? In a lot of ways, the original Mac was just a cheap Lisa.

  287. Re:I think the author is making a more subtle poin by Estanislao+Mart�nez · · Score: 1

    I believe the author's point isn't that you don't need to know any mathematics, or that it doesn't have an important role to play in CS. He's simply arguing that some of the main issues in computer science are not fundamentally mathematical problems (even if they require some mathematics).

    The way I read TFA is that the guy thinks computer science is more about logic than about mathematics. Study logic seriously, and you'll find that very much of it is about "expressional possibilities," as TFA puts it.

  288. Missing the point by public+image · · Score: 1

    This seems to be a very emotional point for many of you, but I think you miss the point of the agument in your knee-jerk defence of mathematics. Fant appears (I haven't read the book, just the review) to be arguing against the centrality of mathematics in computer science.

    I think that some level of mathematics will always be required in computer science because computer scientists will always need to work with mathematicians, as well as people from a good many other fields.

    Leave the deep mathematics to the mathematicians and concentrate on processes, is what I see as the crux of his argument. The formalisms which brought us to this point are details that burden the field with complexity that ought to be abstractions.

  289. Re:wahay! by Blakey+Rat · · Score: 1

    Last time I tried it, TeX doesn't render crap on screen, and Steve Jobs' prediction would have come true: if TeX was all there was, there may never have been a computer with real WYSIWYG capability. (Or at least it would be long-delayed.)

    More to the point: it's just an illustrative example, not gospel. Pull the stick out of your ass and let one teeny inaccuracy past once in a while so that other readers might focus on the *point* of Jobs' speech, not the stupid, pointless details. Try the forest instead of the trees.

  290. Re:The True Nature of Computing by WGR · · Score: 1

    However, for doing things like finding good placements for components, object-oriented procedural programming wins, IMO. It's just the natural way to describe a system, and the algorithm to affect that system.

    Actually object-oriented procedural programming is a very unnatural way to program. It is what most people use because it is what most people were taught first.

    Functional programming is a much more natural way to program and Lisp/Scheme/ etc. are much more powerful in writing complex algorithms simply than C++ or Java.

  291. Good luck with mathless CS by deadlock911 · · Score: 1

    Computers are powered by binary arithmetic. Say it with me now: "Binary ARITHMETIC"
    Note the word "arithmetic". Without math you couldn't even make a computer say "Hello world" let alone write some book about how we "don't need math"
    Seriously, hes hurting his processors feelings...

  292. Programmers comes from CS majors by adah · · Score: 1

    You are a programmer, not a computer scientist. I'd hire you to write code based on a specification. I wouldn't hire you to design rendering algorithms. It is too bad they didn't teach you the difference between compsci and programming during day one of your CS program.

    Do companies generally recruit computer scientists or programmers? Programmers. Where do programmers come from? CS majors!

    Apparently the author is right. Whatever we name the CS department, we have a mismatch between what is taught and what is needed.

  293. Some truth to the claim by Stu+Charlton · · Score: 1

    While it isn't likely this book's author has "the" replacement for the foundation of computer science, this isn't the only voice calling for a change in foundation from algorithms, the Von Neumann model, and Turing machines. The Interactive Computing school of thought is pretty interesting, for example, with some pretty heavyweight names behind the idea, such as Robin Milner (of the pi-Calculus).

    --
    -Stu
  294. Fant's ACM article on this topic 14 years ago by adah · · Score: 1

    But no, the most important part is that math still evolves, and rapidly. As so many other critics, the author of the article appears to have a very limited understanding of math.

    This guy knows math: A critical review of the notion of algorithm in computer science, which was published in the Proceedings of the 21st Annual Computer Science Conference 14 years ago.

    Specifically he mentioned in the introduction (emphasis mine):

    We will argue that the conceptual concerns of computer science are quite different from the conceptual concerns of mathematics, and that this mathematical legacy, in particular the notion of the algorithm, has been largely ineffective as a paradigm for computer science.

    It is worth reading (RTFA :-) ). I guess his book is an expansion of his long-holding ideas. Though he speaks against mathematics in computer science, apparently he knows a lot of mathematics. He mentioned Hilbert's problems and Gödel's incomplete theorem. He also talked about the definition of computer science. If people had read his article, there would not have been so many posts trying to say what CS is here.

    1. Re:Fant's ACM article on this topic 14 years ago by Tom · · Score: 1

      Algorithms are a small part of math. There's a huge difference between saying "you can't solve this algorithmically" and "you can't solve this mathematically".

      Now as far as the difference between CS and math is concerned: I'll agree with him as long as we are not speaking about binary turing machines. Too bad 99.999999% of the actual computers out there are just that.

      --
      Assorted stuff I do sometimes: Lemuria.org
  295. Forget Math ??? All is about Math by Cargnini · · Score: 1

    I don't know what the someone is thinking or what kind of drugs have used to suggest this kind of approach, but as Bsc in Computer Science and Msc in Electrical Engineering, all what I know is "everything is about Math". All the exceptional Academic Institutions of CS born from conjugation of Math+Physics+Engineering. The true is CS must come back to mathematics Web sites databases this is all results of Math. In this 3 main fields, the CS conjugation-formation, the only thing that matter is Math, the common point among them.

  296. Forgetting Math is NOT Fant's Opinion by adah · · Score: 1

    Maths IS needed for computer science.

    At least I did not read it anywhere. What I have found in his writing is:

    There is much overlap between the interests of computer science and mathematics, but this core concern with the nature of process expression itself is the unique conceptual focus that distinguishes computer science from the other sciences and from mathematics.

    The notion of the algorithm simply does not provide conceptual enlightenment for the questions that most computer scientists are concerned with.

    Mathematicians and computer scientists are pursuing fundamentally different aims and the mathematicians tools are not as appropriate as once supposed to the questions of the computer scientist. The primary questions of computer science are not of computational possibilities but of expressional possibilities. Computer science does not need a theory of computation it needs a comprehensive theory of process expression.

  297. A Rose by Any Other Name? by Dean+Hougen · · Score: 1

    It seems to me that part of the reason so many programmers, software engineers, etc. say that they don't use math in what they do professionally, is what their courses were called and who their professors were in college. They learned some math (e.g., calculus, linear algebra) from math profs in courses called "Math ". They also learned a lot of math (e.g., boolean algebra, elements of graph theory) from CS profs in courses called "CS ". They go on to use the math they learned in the CS courses every day but rarely apply the math they learned in math courses. They then say they don't use math. Of course, some CS grads use an awful lot of the math from the math courses as well as the math from CS courses but they all use the math from CS courses. Dean

  298. Re:The True Nature of Computing by b1ufox · · Score: 1
    Yes i have tried.

    I wonder where were you all these years?Qt needs people who can spread the word.It is indeed beautiful. And what i mean by beautiful is something to do with the way it is designed rather that what it does, although the outcome is indeed soothing to eyes without any mess.

    Simple, clean and efficient. Moreover the elegant code which makes use of the OOD so well, does makes one more thing great and that is overiding the builtin capabilites. Yes you heard it right, you can change it because you did not like the way Qt works for your X component feature.And that too without breaking anything *mostly* :-).

    A perfect example how to write object oriented code.

    --
    -- "Genius is 1% inspiration and 99% perspiration" - TAE --
  299. Music is math? by Anonymous Coward · · Score: 0

    No. Music can be analyzed using math, but it is not math.

    Computer Science is math in a very real way -- it's a (large) subset discrete math, maybe with a few bits and bobs from other branches of math (e.g. probability theory for randomized algorithms). The fact that lots of CS happens to apply to computers and how computers work is to be regarded as coincidental.

  300. Re:I think the author is making a more subtle poin by Eli+Gottlieb · · Score: 1

    Because very many math nerds like to refer to CS as "a branch of math". Some of these math nerds are the founders of university CS departments that budded from math departments due to shared expertise.

    They're right, as long as one accepts a sufficiently broad definition of "mathematics".

  301. I am on the fence on this one by vuffi_raa · · Score: 1

    in my old C++ class my teacher at the beginning used to do away with math altogether- he would give us these logic tests, the kind that you see on a lot of IQ tests with things like "which is the next in the pattern" and language like "what is wrong with this phrase" and the truth is that it applies VERY well to programming and optimization of code as well as things like conceptualizing code to achieve a specific goal. the machine as we know it needs a certain level of math, because in the end result we need hardware to use the conglomerates of 0's and 1's to do what we want it to, but the process of creating what we want it to do is less math and more concept. Personally I think that there should be an emphasis on "conceptual math" as opposed to traditional methods.

  302. Who's dick is bigger? by Anonymous Coward · · Score: 0

    It may be fairly easy to get started as a biz programmer, but that is not the same as being the best

    Yeah, business programmers know nothing about CS at all. How dare they get a job programming a business app and declare themselves sapient.

    I love these arguments. It's when the slashdot crowd gets together to flex balls and claim:

    1- There are only 12 real programmers in the world and I am one of them
    2- Everyone who is not "me" sucks balls at real development
    3- I would never hire you
    4- Idiots share your point of view

    Shut up, get a job, and start paying your parents for the use of their basement. Kindly allow the rest of us to keep commerce running with on-time, on-budget software. Oh, and put that thing down, too...you'll only go blind.

  303. Re:wahay! by chris.evans · · Score: 1

    Possibly, The best software is often written in response to a need or just something for coolness. But, I have come to realize that a good math understanding is essential and I don't like mixed BASE-N math and anything more than a Bi-Nom give me an ache. :-( I go look it up on amazon for kicks though. --chris http://nxdos.sourceforge.net/

  304. I use a different algorithms book... by SanityInAnarchy · · Score: 1

    The Book of Stuff that Other People Already Invented.

    I generally don't do the algorithms stuff, for the same reason that I don't program in C (or assembly). I like to have a decent understanding of why a particular algorithm is good, but generally, there's enough work already done for me that I can take someone's word for how well a particular algorithm scales.

    --
    Don't thank God, thank a doctor!
  305. Weed them out? by SanityInAnarchy · · Score: 1

    I really don't like that attitude.

    The college I went to seemed to have another policy -- throw the really shitty teachers at the 1st-year, 1st-semester comp sci students. Take some snot-nosed kid off the street who likes computers cause he played Halo once, and give him Hello World in Java. Just so you remember:

    class Hello {
    public static void main (String [] args) {
    System.out.println("Hello, world!");
    }
    }

    It was, very obviously, not designed to teach the kids anything. It was designed to find out who was good at doing one of:

      - Already knowing the answer
      - Looking it up online
      - Learn it from the book
      - Asking someone who can do the above

    In other words, it was designed to figure out who already knew how to program, or who could learn quickly enough, and weed out everyone else. It was NOT designed to teach you anything -- that's what the second semester was for, if you survived the first.

    That's all my subjective opinion, of course, but I really don't like that attitude -- we don't know how to teach, so instead we'll just fail you if you don't get it. I'm not saying that every Halo asshole is capable of learning Java, but we should be paying for an education, not a certification.

    Also: I seem to be fairly good at programming, and fairly bad at calculus and math in general. Maybe I'm just bitter about failing Calculus, though that was my own damned fault (I didn't go to class)...

    --
    Don't thank God, thank a doctor!
  306. Re:The True Nature of Computing by Geoffreyerffoeg · · Score: 1
    From here you've both made a giant leap to assume that programs can't be described by an algorithm. You haven't understood that the difference between a "computation" and "reactive software" is actually a technical triviality that is easily overcome. Indeed it is so trivial that most languages simply ignore it and have stateful operations for input/output. Reactive programs are normally modelled as a sequence of algorithmic steps, everything that the program does apart from sending / receiving data is modelled by an algorithm.

    Indeed. I wrote a program in Scheme the other day, and just because of that, you'd have trouble arguing it isn't algorithmically-based.

    The program takes inputs by instant messages, and updates our ticket tracking software based on it. (There's a complicated story as to why I chose Scheme, but it involves a messaging library that generates S-expressions.) It's certainly "Reactive Software", or a "Universal Behavior Machine."

    How do I reconcile the two?

    (define (main)
      (do (whatever))
      (main)
    )
    (main)
  307. Re:wahay! by HuguesT · · Score: 1

    Probably not even 20 years, more like a few months. You can read this book.

  308. Old Wine in New Bottle? by Anonymous Coward · · Score: 0

    A great publicity stunt, and in turn that should lead to high sales for his book.

    However reading through the article over again, I think the underlining idea is to package the old wine (mathematics) in a new bottle (maybe with a few extensions and/or modification) to make it all sound new, sexy, and radical. With much of the newer generation of CS students thinking that CS = Programming, and not willing to spend more time on skill sets (mathematics) that could widen their horizon(not everyone is going to end up a programmer for a business organization), maybe using a trick from the Business handbook, reengineering and rebranding could make them more interested.

  309. Re:wahay! by HuguesT · · Score: 1

    Perhaps if WISYWIG had never been invented, people would know how to format their thoughts rather than their paragraphs?

  310. Re:The True Nature of Computing by HuguesT · · Score: 1

    You are describing single-threaded algorithms, not algorithms in general.

    An algorithm is not necessarily a single sequence of steps. An algorithm is an abstract description of a computable task. There are such things as parallel algorithms, which are not necessarily "one-dimensional" as you put it. At any rate, it doesn't mater (read on).

    Transputers are nothing but early SMP with a fancy name, with zero SIMD or MIMD capability (I know, because I programmed them back in the day), and occam has nothing on modern parallel languages like (who would have thought?) High-Performance Fortran. In particular early version of occam sucked at floating point.

    Furthermore, it is a well-known theorem in computer science that any computable task (in particular a parallel one) can be computed on a Turing Machine. In fact is is the very definition of a computable task. Since Transputers perform computable tasks, they are simply Turing-capable, no more, no less.

    Finally, whether the brain is or is not a TM (i.e. performs computable tasks) is still an open question. Evidence on either side of the debate is at the moment cirumstantial.

  311. 3D graphics programming doesn't need (much) maths by oliverthered · · Score: 1

    There was a period of time when 3D graphics programming didn't require much maths at all, all the work was done by the pipeline you didn't need to write shaders so no maths there and all the transforms were done by the graphics card so no linear algebra.

    Shaders kinda flipped the whole needing to know maths thing on it's head, but there are plenty of books out there with ready made solutions for most shader effects that you can think of so unless your in the rare position of making something truly original you don't need that much maths to do 3d programming.

    --
    thank God the internet isn't a human right.
  312. I hate to be rude, but... by Anonymous Coward · · Score: 0

    Having coded for years does not make you a computer scientist. Any computer scientist would have no problems understanding that sentence, it is quite simple and uses standard terminology. If someone doesn't understand it, they are probably just a code-monkey.

    And I've known a lot of code-monkeys who never applied calculus in their software. Then I or another real computer scientist came along behind them, and completely reworked their tortured code-paths and structures using a little calculus, and turned it into elegant, maintainable, efficient, and simple code. Afterwards, they always looked at it with a stunned expression, wondering why they didn't produce that. Next project, they made all the same mistakes all over again.

    It happens in every discipline. I've known people that called themselves musicians who never took a music theory course. I listened to some of the atonal messes they've written, thinking they were clever, when in reality they had no clue what a simple cord progression was. You compare those to the real musicians, the ones who have studied and taken courses, the ones who can realtime transpose simply by being told what key to play in, the ones who can extemporize jazz with a group and make it flow, and you wonder how anyone could confuse the two. Not every monkey with a guitar or drum set is a musician, and not every monkey with a C or Perl program is a computer scientist. No matter how many years they've been at it.

    1. Re:I hate to be rude, but... by SanityInAnarchy · · Score: 1

      completely reworked their tortured code-paths and structures using a little calculus, and turned it into elegant, maintainable, efficient, and simple code.

      I hate to be rude, but I'll believe that when I see it.

      I often do the same thing, by the way, I'm just not using calculus, at least not consciously. I'm sure you have a theory to prove just how much more elegant, maintainable, efficient, and simple your code is... I just have eyeballing and benchmarks.

      I suspect that I will want to go back and finish the computer science degree I started at some point, just not now. Frankly, I don't have the self-discipline for it. But if I do go back to school, it will be mostly for the degree, and not for the gaps in my knowledge -- which are there, but I usually fix those as I run into them.

      --
      Don't thank God, thank a doctor!
  313. Re:wahay! by Stooshie · · Score: 1

    ... Procedural languages are the natural way to code most programs ...

    Except when using Prolog

    . That was always the complete head mincer at Uni.
    --
    America, Home of the Brave. ... .and the Squaw.
  314. Re:The True Nature of Computing by jon_anderson_ca · · Score: 1

    Um, nobody said that there are no parallel algorithms, but that "Algorithms are easiest when [they're serial and non-interactive]".

    Since I'd have to learn this "process calculus" to really get into parallel algorithms, I would tend to agree (what could be easier than not having to learn anything new?).

  315. Boeing Dreamliner, Chess, and taking a piss by at_$tephen · · Score: 1

    I'd like to see the author try and fly in a plane designed by computer scientists using his methods. I'd prefer to try the new Boeing Dreamliner which involved a lot of math to design. In fact, in embedded systems you have a lot of mathematical analysis to make sure stuff happens when you want it to happen, otherwise you could have serious accidents and loss of life. I'll guarantee you that Boeing ain't gonna use Windows OS anytime soon to run its planes! The only windows you'll find on that plane are the kind you look through to see the clouds and the kind running on the laptops/pdas of folks dumb enough not to just sit back, relax, and chill for just a while. The main point, though, is that math is a language of reasoning just like English is used for communicating ideas. How would he sell his book without being able to actually write it and then talk about it? It's the exact same idea, except math allows you to be very, very precise in what you mean. And if something dosen't quite fit, it gives you the language to describe something new that does. One can't just carve out one area of the universe like programming and say it dosen't need math. The goodness of being able to communicate reasoning precisely is that it enables others to use a piece of work and build on it, or show flaws in the work's reasoning.

    Hence, after many iterations a dumb programmer can just code away with not much thought to "formal" mathematics. With not much thought to how his dumb mind even functions when he goes to take a piss. Never mind the fact that mathematical models of his dumb ass were used by the marketing folks to lure him into buying all that beer which made him want to take a piss in the first place (even modeling the precise place to place the beer in the store so his dumb ass dosen't miss it). The great things about technological progress is that things change fast thanks to all the above and so eventually the programmers who are too dumb to know math will be replaced by computers or programmers who do. We've already replaced a world chess champion with a computer! Anyways, everyone has their own story of that one programmer they know who didn't really understand the algorithm and replaced some "small" thing and seriously F****d everything up - and you weren't even surprised! Eventually simple arithmetic done by the cost conscious company executive will make sure programmers who do not add value do not add any more 0s to the cost line using the simple subtraction algorithm. Luckily, it does not take much to get into math. Your brain already has more than you need to begin so don't listen to all the fear against math and just begin. You will be surprised what your brain can do because it is far, far, far more powerful than you can imagine. This was assured by the great designer who designed you. For all we know, you're just an algorithm appearing in someone else's consciousness - a very powerful algorithm, though. The classical definition of infinity in mathematics is that an infinite set is one in which if you remove a tangible piece from it, the remaining piece is still equivalent to the original. But, to be fair, let me read the author's actual words before judging him because maybe it's the reviewer who was being dumb.

  316. Re:wahay! by smilindog2000 · · Score: 1

    I love Prolog, and even coded a Prolog interpreter once. Writing a program to do derivatives in Prolog rocks. Writing algorithms, however, in Prolog isn't much fun.

    --
    Beer is proof that God loves us, and wants us to be happy.
  317. TeX usage beyond academia (was Re:wahay!) by WillAdams · · Score: 1

    Recently at work I wrote the back-end of a phone book line ad typesetting system using TeX (a programmer here at work created the web-based front-end).

    My previous employer has a nifty system which uses TeX to typeset XML databases, demo of it here:

    http://cuspub.atlis.com/

    And there are a lot of non-academic examples in ``The TeX Showcase'':

    http://www.tug.org/texshowcase/

    Using Quark and InDesign is fine, so long as one works within their feature limitations --- anything which steps beyond that involves large amounts of repetitive work and tediousness. Interesting discussion on that on comp.text.tex once:

    http://groups.google.com/group/comp.text.tex/msg/3 6401bceced0ee9a

    William

    --
    Sphinx of black quartz, judge my vow.
  318. TeX success not obvious (was Re:wahay!) by WillAdams · · Score: 1

    But it's there.

    InDesign's H&J system for example is based on TeX's, Adobe having acquired the HZ system from URW which took TeX's H&J algorithm and extended it to include character expansion/contraction and optical margin adjustments. These improvements have been folded into TeX by way of Han The Thanh's (sorry, his name has Vietnamese accents not easily entered here) pdftex (interesting Adobe funded his studies at Masaryk University). His doctoral thesis is available here:

    http://www.tug.org/TUGboat/Contents/contents21-4.h tml

    As regards fonts themselves, while William Donelson's work wasn't TeX, it was quite ground-breaking and influential:

    http://www.folklore.org/StoryView.py?project=Macin tosh&story=Origins_of_Spline-Based_and_Anti-Aliase d_Fonts.txt&sortOrder=Sort%20by%20Date

    And of course, there's the classic meeting of Steve Jobs and Knuth:

    http://www.folklore.org/StoryView.py?project=Macin tosh&story=Close_Encounters_of_the_Steve_Kind.txt& sortOrder=Sort%20by%20Date

    William

    --
    Sphinx of black quartz, judge my vow.
  319. Re:Key question: Do we care about -correctness-?? by csrster · · Score: 1

    Reminds me of a recent dailywtf "how to write a method to calculate factorial thread". I know I've been in development too long when I start by writing

    void testFactorial(){
        assertTrue(120, factorial(5));
    }

  320. Maths is god? by steveheath · · Score: 1

    Many mathematicians I have encountered argue that maths is the only real science and that all other subjects are either off-shoots or applications of maths. An interesting, if somewhat egotistical viewpoint.

    Certainly, computing owes a lot to maths, both from the hardware and software angles. That does not, however, make any of the forms of computing a sub-section of maths (or even 'just an application of maths'). That relationship cannot be easily inferred beyond saying that there is a link there.

    Maths is an offshoot of the historically all-encompassing subject of philosophy. Philosophy includes the study of art, theology, logic and psychology (and many others, sorry if I missed out your major). Maths appears to dangle somewhere down the logic shoot, but of course the best arrangement of the branches of human thought is not well defined. For example, maths doesn't really draw on psychology (although without human thinking, the subject of maths wouldn't exist - but that's a whole 'nother can of worms). Software engineering, my favourite bit of computing, certainly does. Software is created by people, used by people and maintained by people. Ignore psychology at your peril! All this is just one example where the subject has become more than just maths.

    Yeah, if you're going to do hard computer things, you almost certainly need a strong understanding of maths (naturally or taught). I know many people who code well because they have the arty or people focus and no heavy maths background. Obviously I wouldn't ask them to do a simulation of a solution to the n-body problem, but for 80% of software engineering they're probably stronger than most of the mathsy people I know.

    In answer then: don't forget maths, but it's not always a mandatory requirement.

  321. In other news... by ziggy_prime · · Score: 1

    The author has also stated that books are wasted space in libraries, food is the hobbling point of cooking, and words are cluttering up language.

  322. No, everything you said is wrong, and pretty dumb by Anonymous Coward · · Score: 0

    "About societies with no conception of numbers, they doesn't exist."

    That's wrong.

    "There are societies with no concept of a specific number"

    So which one is, there are or there aren't?

    "but they have the idea of "amount" and the idea of "more" and "less"."

    Those are not numbers, and you do not need numbers to describe those concepts.

    You are approaching this from a bigoted, closed minded math-centric view, which also happens to be wrong.

    As to the rest of your post, you are a shining example of why mathematicians should stick to calculating and not speaking. Incoherent nonsense is usually what happens when they don't, and not surprisingly, it happened with you as well.

  323. Re:wahay! by Blakey+Rat · · Score: 1

    And perhaps if sanitation had never been invented, we'd all be super-geniuses. As we wallowed in our own filth and died at the age of 35.

  324. How obvious is it and what do we do with it? by Roliel · · Score: 1

    The problem with "obvious/not obvious" kinds of thinking is that there are many things that are obvious which turn out to be not true, and there are many true things that are not obvious. Math is the foundation of everything, and computers are what I call "Big Math"; just more math with big (or small) machines to do it for you. The problem is, everyone should have a solid mathematical foundation, just as everyone should have a solid foundation in the language they speak. Computers have now become a major component in the consumer marketplace, and the paradigm should be on what they are to be doing instead of how to do it. Math is simply the foundation of "how to do it."

  325. Google, Algorithms, and the next Google by at_$tephen · · Score: 1

    As we move to an era dominated by the web, expect the requirement for understanding algorithms to go up. Case in point: Google. It will take just a couple of more guys to conjure up new algorithms and build a super network to rival Google. This is because the web is like one big frigging algorithm and it can shift easily from place to place. And when folks find something on the web that works better, switching immediately then telling all your friends is a no brainer. In the web, a better mouse trap definitely means a better service because there are tons of mice and each mouse is giving birth to tons of more mice. If I find a better search engine than Google's (and I sure need one), I will drop Google in a heartbeat. I bet someone can prove that the more useful a search engine is to people, the more new information they create with it such that the search engine starts to suck and it's a rat race. The average teen alone is spewing so much info that Google and all its network of computers won't be able to catch up fast enough. So, crack open Knuth's books and be the next Google. For a billion plus+ payout even the dumbest programmer could burn at least one midnight lamp giving a shot at ruling the net...for a time at least...and who knows, he or she might get lucky!

  326. Missing the point of university by node159 · · Score: 1

    Everyone seems to miss the point of higher education qualifications.

    * You go to school to learn the basics about life, social interaction, etc.
    * You go to university to learn how to learn. You learn how to ask the right questions, and how to get the answers.

    The information and data acquired at university is mostly redundant on a non-academic life (how many conversations have I had about speculative cache-coherent locking synchronization primitives for large-scale cache-coherent multiprocessors? None), however it teaches one how to think, how to question, how to learn, skills difficult to teach directly.

    This is the one significant difference I find with people who have attended university (does not imply completion) and those that have not.

    As for people citing examples, there is always an exception to the rule and that fraction of a percentage of the population that you interact with has no bearing on the overall makeup.

    --
    GPLv2: I want my rights, I want my phone call! DRM: What use is a phone call, if you are unable to speak?
  327. Re:wahay! by Des+Herriott · · Score: 1

    Writing algorithms, however, in Prolog isn't much fun.

    No.

  328. Mathematics is a language, not a science. by Anonymous Coward · · Score: 0

    What is physics but a collection of mathematical formulae? Computer science is a form of "computer physics" in a sense - it attempts to generalize truths and express them through proven, predictable mathematical models.

    The science IS computer science - math is just the language used to express it. I don't agree with your interpretation.

    My take: If the language of the discipline is math, it's science. Otherwise, it's an art.

    Complexity analysis, discrete maths, algorithms, etc. are the science part of computer science. The actual programming part is considered trivial (you don't need to understand quick-sort to implement it, you can just implement the pseudo-code - follow the established pattern. That's engineering. But to be able to prove that the average case is O(nlogn) or invent the algorithm in the first place is an entirely different matter altogether, and that's more of a research and discovery effort - hence, science).

  329. Re:wahay! by g-san · · Score: 1

    Heck yeah, you should have seen my Apple IIe in 80 column mode!

  330. Definition by Anonymous Coward · · Score: 0

    Computer science is defined as "the study of algorithms." Sounds to me like CS and math go hand-in-hand.

  331. A huge confusion by sjames · · Score: 1

    Once and for all, CS has little if anything to do with writing code. CS is not in itself a practical field at all. It was never intended to be.

    The computer scientist is only vaguely interested in designing or coding a real application or even a language that can be used to produce a real app.

    Have you ever seen what happens when a physicist does wiring? It's far far better to have a EE and an electrician do it for you.

    The physicist may know more about electricity and electrons than the EE ever will. However, the EE knows how the real world behaves and has thought about the practical aspects. He knows that a fuse is more than a device to protect the wires in the wall. He knows that no matter how well it works, if it defies the expectations the next guy will have about the design, someone may be killed.

    In the same way, you hire a PE rather than a materials scientist to design your bridge. The materials scientist can tell you more about the behaviour of a steel beam than the PE will ever know, but the PE knows that in the real world we face manufacturing defects, corrosion, installation errors, bad welds, etc and that a good design must tolerate that to some extent without falling down.

    In the same way, a CS is not the right choice for producing a real world app. If you go with a CS, you'll get a beautiful slow system that assumes the real world provides perfect input. It maay be written in LISP. LISP is a beautiful language that practically nobody can maintain. It makes no concessions whatsoever to readability and maintainability. Nobody was more surprised to see LISP actuaally implemented than it's original creator.

    The problem is, we don't really have the formal major we need, Software Engineer. We have CS and a technician class of programmers and a vague fuzzy line. Software engineers currently are either self taught, CS majors who developed a taste for the practical, a programmer who got interested in the high level design, or a EE that got interested in software. To my knowledge, nobody offers a BsSE.

    In that sense, exactly ZERO applications have ever been written by a person formally qualified for the job. Everyone who has ever written an application has been to some extent self taught, either in total, or to bridge the gap between their formal schooling and the non-existant formal specialty.

    That's also why instead of having a well understood set of best practices, we have a zillion snake oil filled silver bullet fads of the day.

    Meanwhile the assertion that math shouldn't be part of CS or that CS shouldn't be a part of math is just wrong. I CAN see a call for a more applied mathematical approach to Software Engineering and even in CS, but not it's elimination. It may be useful to evolve a more domain specific symbol set to express some CS concepts but that's hardly an elimination.

  332. Re:The True Nature of Computing by Anonymous Coward · · Score: 0

    The model of interaction that you (and he) describe is normally called Reactive software, and it is true to say that it cannot be modelled by a Turing Machine
    Sure it can. Any eventual stimulus which can be handled as input can be described as a string somewhere further down the tape. The machine just won't halt.
  333. Re:The True Nature of Computing by smallfries · · Score: 1

    Congratulations AC, you completely failed to understand my post. Well done you.

    --
    Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
  334. Re:wahay! by Dan+D. · · Score: 1

    Robert Pirsig is that you?! Would you sign my motorcycle? :)

    --
    People who quote themselves bug the crap out of me -- Me.
  335. GoF Mediator Pattern and VB spaghetti by Latent+Heat · · Score: 1
    VB is for the most part the Gang of Four Mediator pattern. On of the means by which objects interact with each other (i.e., the Design Patterns), is the Observer pattern where the Observer hands another object a reference to itself. When some state change occurs in the observed object, it invokes a method on the Observer indicating that the state change has taken place.

    The origin of the Mediator pattern is when you have a network of object that somehow need to act in response to the change of state of more than one object. One example is a GUI form where checking a box can enable or disable other controls on the form. The Mediator is a kind of master Observer, where the Form is the Mediator and it gets events (notifications of state changes) from all of the widgets on that Form.

    The advantage of the Mediator pattern is that by gathering together all of the events into one place, or into multiple places, the event hooks of the main form, you can figure out all of the logic of how multiple controls interact with each othere. The disadvantage of the Mediator pattern is that by gathering together all of the events into one place, it leads to spaghetti code. The Form because the Master Control Program that has to implement all of the logic of what happens when state changes anywhere on the form. It is kind of a like a flat organizational chart where the head person has to supervise an enormous number of employees without intermediaries. Yes, form logic is split into stubs, but it is still in a global form namespace.

    Apple may have a better idea in XCode with their Objective-C version of VB. Haven't looked deeply into it, but it appears to allow one of more mediators to a form (kind of like Java where you can have a single event inner class object for each control or an inner class that aggregates actions from multiple controls), only the XCode version is more visual, VBish.

    As to this notion that events should be marshalled by a relational database, that sound like something Tablizer would come up with . . . wait a minute, you are Tablizer!

    1. Re:GoF Mediator Pattern and VB spaghetti by Tablizer · · Score: 1

      The disadvantage of the Mediator pattern is that by gathering together all of the events into one place, it leads to spaghetti code.

      "In one place" is before cyberspace. Cyberspace has no "one place". OO's tendendency to "model the real world" tends to force real-world physical placement limitations into software. Ideally, event handlers would be in a relational database such that one can group them or filter them any way one pleases per situation or need (any attribute or expression of attributes), not just how the original programmer or Mr. Gates gives you.

      The Form because the Master Control Program that has to implement all of the logic of what happens when state changes anywhere on the form. It is kind of a like a flat organizational chart where the head person has to supervise an enormous number of employees without intermediaries. Yes, form logic is split into stubs, but it is still in a global form namespace.

      Only one person is using a given form instance at a time. If you want concurrency, then launch a second form or app. Also, if we wanted the GUI engine to limit name-spaces to a form, event, or something else, we could. There are many implementation options here.

      Another reason to let a relational engine or relational-like engine handle the GUI specifications is so that multiple languages can use the same framework. That way we don't have to reinvent a different GUI engine/framework for different languages. That is poor factoring of effort. The event processor and the app language may be different also, since they can be set up to only talk to each other via the database. Hidden form/widget attributes can be used as variables if they are needed.

      Also keep in mind that custom software may not need as many fancy features as say mass distributed "boxed" tools, such as Excel or Word, which has complex concurrency and other do-dads that are close to the hardware/OS. A general-purpose GUI engine would be much more complicated than one for custom biz apps. Nobody would use PowerBuilder to make a boxed word-processor, for example. (Although, we may want it to have native vector graphics for the few exceptions that need fine control.)

  336. Fewer, not less by bandmassa · · Score: 1

    The trouble with pure mathematicians is they have such a poor grasp of english ;-) Less is a measure of degree: you don't want lesser girls, they're not as good as better girls. Fewer is a measure of quantity: you want more girls, but because you're a math geek, you get fewer. Less is common usage, I know, but that never makes it "right", it changes the core of the language and meaning gets lost between generations.

    Back on topic (and there was a point to my nit pick) programming is a symbiosis of mathematics and linguistics. If you like, the less/fewer mixup is like not understanding the difference between while/wend and do/while.

    --
    "I hope you like Guinness, Sir. I find it a refreshing substitute for, er... food." Col. Jack O'Neil, SG-1
  337. Re:It doesn't help that the article quotes nonsens by DamnStupidElf · · Score: 1

    Oh? See, where I come from, Turing machines and the lambda calculus are formalisms for describing and computing functions, stateless mappings from a domain to a range. Operating systems, for example, are not functions, because they are not stateless.

    Operating systems are functions of software, hardware and user input. This can be represented in at least two ways. The straightforward way is just to specify the interactions with hardware and the user as part of the input to a turing machine. E.g. at every step where the operating system relies on a user or external device there is enough information supplied in the input on the tape to determine the action of the turing machine. It can even be proved that the TM never needs to examine input out of order (the turing machine must process them in temporal order since it must travel linearly along the tape.), which maintains the temporal order of operations in a real operating systems. This only works for finite inputs, which is sufficient for almost any real operating system. If infinite running time must be considered then the turing machine can be made nondeterministic at the points where external input occurs in the operating system. This causes the NTM to branch nondeterministically at every step where user input occurs, and the resulting NTM follows all possible execution paths of the operating system being modeled.

    This is a common theme among functional programming languages. They want to remain as purely functional as possible (because that approach has proven to be powerful), but are unable to do so in various circumstances because they have to interact with the underlying hardware or user. For instance, Haskell has its monads. Functions, as such, are unable to maintain state. They cannot express the idea of waiting for an arbitrary condition.

    Only because modern computers are made that way. ENIAC and other early computers were purely functional: Plug the wires in correctly and flip the input switches, and the answer appears on the output. All microprocessors are inherently functional, they just synchronize their functional evaluations with a clock signal so that elements of some state are loaded into the inputs of a function, and during the clock cycle the outputs stabilize and are stored to some output state. All that functional programming requires to act like a modern processor is an analog of this process, which can be generalized to monads or some other serializing method with intermediate states. As far as I know, The main reason for this design is that not all functions and not all inputs and outputs can be processed as single entities. It takes a while to type a program, and it may produce pages or gigabytes of output. Imperative processors are a method of evaluating very large functions over very large values without actually having a very very large number of transistors.

    That irrelevant to his point. He's not saying mathematics isn't a useful tool in computer science. He's saying that the aims of mathematicians and computer scientists are different. Even if they use the same methods. The majority of people working on whether P=NP, or extensions to Rice's theorem (there are lots), or Oracle Machines, etc. are mathematicians. These are very different kinds of problems than computer scientists are interested in. The last computer science conference I went to had papers on Data Mining, AI, computer vision and other kinds of pattern recognition, the mathematical basis of computer security, HCI, and a multitude of other subjects.

    Here you have a point. Within a research field it's rarely useful to reduce the problems to basic computer theory, unless the field is brand new and needs a solid footing. However, specialization comes at the cost of generalization, and where education is concerned I prefer a general approach so that specialization can come later with the benefits of a general understanding backing it up. People do switch fields occasionally. Research into computational theory is sti

  338. Re: with or without Maths by chinhnt2k3 · · Score: 0

    ... is not a big deal. If want to do computer science without Maths then just do it and prove that's the right way :P No one forced us to do it the Maths way. The fact was that it just proved to be useful.

    --
    Are you a scoremonkey?
  339. Re:'expressional possibilities' without mathematic by Anonymous Coward · · Score: 0

    The engineers may have been exposed to the concepts in school, but haven't generalized them so that they are recognizable outside of the classroom.

    Kind of like a doctor learning about, say, guinea worm in school, but not recognizing it when someone shows up at the hospital with a worm coming out of his leg, some time after a trip to Africa.

  340. Re:It doesn't help that the article quotes nonsens by poopdeville · · Score: 1

    Operating systems are functions of software, hardware and user input. This can be represented in at least two ways. The straightforward way is just to specify the interactions with hardware and the user as part of the input to a turing machine...

    I'm not so sure about that. I do agree that an operating system can be modelled by a running Turing machine. But only degenerate cases of operating systems halt. The purpose of an operating system is all the side-effects it creates while it doesn't halt. That is to say, it creates an environment in which other programs can run. It interfaces with hardware to output, say, video and sound. These side-effects are essentially analogous the states a the TM are in while running TMOS. (This analogy is why I'm willing to agree, with the stipulation that the TM must be running) By definition, a Turing machine only computes a function when it halts (and the result is what is written on the tape once it has halted). Operating systems make pretty boring Turing machines anyway. Unless something like a kernel panic happens, if they halt, they'll always halt with instructions to reboot or turn the hardware off, no matter what the user input or what side-effects it has created.

    When I got my CS degree, the halting problem was only one section of one of the finite automata courses. It took maybe a week to cover, and explaining turing machines was necessary anyway in order to explain NP completeness. In light of that, is such a fundamental theorem worth dropping?

    Recursive function theory is a much neater way to prove that no halting function exists. Rice's theorem is an easy generalization of the methods used. This can be covered in a day, if suitable homework problems are given. Turing machines are tangential to this topic, especially since Turing's contribution was to prove that TMs can compute the recursive functions, putting them on par with plain old recursive functions as a model of computation. Using provability logic, the proof is downright trivial.

    --
    After all, I am strangely colored.
  341. Re:It doesn't help that the article quotes nonsens by poopdeville · · Score: 1

    Oh, wait! Variations of provability logic known as "Dynamic Logics" can deal with expressing algorithms and proving things about them (like the non-existence of a halting function) all within the same formalism. I'm sure this is what the article's author has in mind for a pedagogical replacement to Turing machines.

    Dynamic logics don't handle concurrency very well, but then, neither do people. :-)

    --
    After all, I am strangely colored.
  342. Sure, lose the math you crazy American... by gatkinso · · Score: 1

    ...a WONDERFUL idea!

    One that the Chinese (/Indians/Russians/Japanese/ect) would love for us to take to heart.

    You know, there used to be a time when Americans actually studied. Not bitch about how math is hard and useless, how they don't need a college degree to be a decent coder, and how school is a waste of time.

    The most patriotic thing you can do for this nation is to educate yourself. All else follows.

    --
    I am very small, utmostly microscopic.
  343. please by Anonymous Coward · · Score: 0

    Looks like another philosopher found his way into CS

  344. Re:wahay! by Sparks23 · · Score: 1

    I don't know where Apple finds it's GUI guys Vat-grown to purpose, and indoctrinated in the Apple Way from day one, no doubt! ;)

    Seriously, though, I think it's mostly just corporate philosophy. Windows looks primarily for scientists, engineers, and so on; a friend who was an artist/graphic designer at Microsoft said they felt very much a second-class citizen, and recommendations often didn't get really listened to. For years, Apple has recruited artists and creative sorts right alongside devs.

    In fairness, I think this is changing a bit; Microsoft's learning that the front-end is as important as the back-end, and is rethinking things and has done things like hiring artists and photographers, or even more importantly, building XAML so that artists can actually design real UI instead of just mockups. Whether XAML changes the UI playing field as much as Microsoft hopes remains to be seen, though.
    --
    --Rachel
  345. Re:wahay! by caywen · · Score: 1

    I remember when I was much greener, I lambasted my experienced coworker's code for doing stuff redundantly and wasting cycles without understanding his ingenious use of L1 cache. In reality, my rewrite ended up 10x slower despite being algorithmically faster. Algorithms are they way they are because of the machines they run on. It's amazing how fast an algorithm changes when the nature of the machine changes. What happens when we move to massive brain-like parallelism? Some classical thinking stays, but some go out the window. To the point of the original article, I don't think the general involvement of math and physics will change, but the type of math and physics will. At least, until we invent a machine that runs on Fun Art and Feelin' Good (tm).

  346. Re:wahay! by HuguesT · · Score: 1

    Non-sequitur.

    The point is that there were very good typesetting systems before WYSIWYG were invented. People who use TeX now can tell you about it, but that's far from the only one : classic WordPerfect is another one.

    WYSIWYG like in Word sounds good until you have real typesetting needs, such as searching and replacing styles so that you have a consistent look across chapters, printing a single chapter with only its matching bibliography instead of the whole document, etc. Writing a book in Word is an ordeal (I've done it) compared to (La)TeX. It's even worse if your co-authors have different versions of Word or use OpenOffice, say.

    With a plaintext source there are no such problems. Maintainting a consistent look is as easy as maintaining a good web site with a CMS instead of hacking HTML.

  347. Maths are more powerful than you think by Nicolay77 · · Score: 1

    I don't see why a lots of things that you believe are 'outside traditional math' can't be explored with math.

    Mathematics is no more about numbers than is about objects and their arbitrary relationships. In fact, it sometimes defines the objects in terms of their relationships.

    What makes mathematics what it is, is the method of theorems, and logical proofs. Anywhere you can state something abstract as a theorem and use it to prove statements, there is mathematics.

    In that sense, all Knuth books are heavily mathematical.

    However, maths is so often related with just calculus and advanced calculus, but I think it is because that's the part everybody has to suffer because it is useful for traditional engineering. It is time to change what's being taught as mathematics (there's much more to it than it's being used now).

    --
    We are Turing O-Machines. The Oracle is out there.
    1. Re:Maths are more powerful than you think by SanityInAnarchy · · Score: 1

      What makes mathematics what it is, is the method of theorems, and logical proofs. Anywhere you can state something abstract as a theorem and use it to prove statements, there is mathematics.

      You can actually go two distinct ways with pretty much the same thing: Mathematics or Philosophy. Math will tend to be mostly about numbers and how to analyze them, while Philosophy will tend to be mostly about the nature of existence.

      Just because you can define each in terms of the other doesn't mean it's a branch of that field. Computer science may be very well informed by math, but comp sci is NOT simply a branch of mathematics, any more than philosophy is.

      In that sense, all Knuth books are heavily mathematical.

      What makes English what it is, is the method of subjects, objects, and verbs, used to construct sentences, which are then arranged into paragraphs. In that sense, all Knuth books are heavily literary.

      Computer science is its own field. Entirely. It's time we started treating it as such. Yes, we need a little math, just as we need a little English to understand documentation, but we don't need to know what a noun is, and we shouldn't need to know what a derivative is, in order to get started in computer science.

      --
      Don't thank God, thank a doctor!
    2. Re:Maths are more powerful than you think by Nicolay77 · · Score: 1

      In that sense, all Knuth books are heavily literary.
      I have to totally disagree with you in this. Knuth books are almost purely mathematical books, not a Harry Potter novel. In fact they are more mathematical than most Calculus books I have read. And I mentioned them because they lay a lot of the fundamental ideas in modern computing.

      but we don't need to know what a noun is
      I think you do need it. It's a basic part of the theory in Object Oriented Programming.

      we shouldn't need to know what a derivative is, in order to get started in computer science
      Totally agree (except for the few times you need to read the big O notation). But mathematics is not calculus. Is a way of logical reason and deduction.

      However, I think he said much better than I did:
      http://developers.slashdot.org/comments.pl?sid=246 995&cid=19788315

      --
      We are Turing O-Machines. The Oracle is out there.
    3. Re:Maths are more powerful than you think by SanityInAnarchy · · Score: 1

      I think you do need it. It's a basic part of the theory in Object Oriented Programming.

      I honestly have to say that no website or book I've seen about programming has ever had the words "noun" or "integral" even mentioned, let alone defined.

      However, I think he said much better than I did:

      He does make some very good points. And my feeling is, the lines get very blurry in computers, but if I had to choose, it'd probably be engineering. Except "Computer Engineering" classes are, if I understand them, more about the physical (hardware) aspects of computing than about engineering the software.

      --
      Don't thank God, thank a doctor!
  348. syntax vs semantics by ChronoFish · · Score: 1

    I think this is really a syntax versus semantics argument. Many great developers have degrees in English, philosophy, and linguistics. Look at all the Perl developers.

    Some people (me) prefer rigid syntax and "functional" languages which tend to be more mathematically based. Others prefer syntax that is more loosey-goosey where symbols change meaning depending on where and how they are used (more natural language based).

    Which do you prefer?

    if (this == that)
        for (c = 101; c = 200; c++) print that;

    or

    if (this eq that)
        for (101 .. 200) { print; }

    I prefer the first one even if it means more syntax. It's much easier for *me* to debug. But others will find the second option more "natural".

    -CF

    1. Re:syntax vs semantics by ChronoFish · · Score: 1

      looks like the less-than sign got lost -

      for (c = 101; c <= 200; c++)

  349. Hey, you emptyheaded microbrain by Taco+Meat · · Score: 0

    I dunno, you watch Gilmore girls? What, is that the best insult you have? You are in the wrong place, junior; outta your league. I am surprised you have a TV, you backwoods troglodite. Worship a cow? Like your mother? She's a cow, or at least she wieghs 800 lbs, so that is pretty bovine. Not that *she's* a pretty bovine, or even pretty, but you know what i mean. How do you even manage to use a computer, what, with your extreme stupidity? Isn't digg.com missing you? You seem more like the digg type, you know. Go hang out with all the skript kiddies and helpdesk monkeys and llama pr0n crowd, you hoosier. Now go away or I will really devestate your silly person. I'll rape your nostrils and make castanets out of your balls. I'll violate yuo in ways your mother hasn't even done. Look out.

    --
    It's not narcissicism if it's true!
    1. Re:Hey, you emptyheaded microbrain by Arapahoe+Moe · · Score: 0
      Go hang out with all the skript kiddies and helpdesk monkeys and llama pr0n crowd, you hoosier.

      Ok, first of all Suresh, all helpdesk monkeys are Indians from India, your homeland and someplace I have never been and which I hope to never have the displeasure of visiting. This is pretty much the First Law of Technology, kindof like the First Law of Thermodynamics. But you're a dirty cow worhipping Hindi so I wouldn't expect you to understand something that deceptively complex. Moving on ....

      Second, hoosier is a term for people from the great state of Indiana in the United States of America. Please, Apu, if you are going to try and be clever, make sure your Engrish makes sense.

    2. Re:Hey, you emptyheaded microbrain by Arapahoe+Moe · · Score: 0
      You can tell us, you are among enemies.

      I am not among anything fucktard. Oh noes, I'm surrounded by the intarweb!

    3. Re:Hey, you emptyheaded microbrain by Anonymous Coward · · Score: 0

      I slept with your mother, and boy, does she like it rough!

  350. Accented characters by martrootamm · · Score: 1

    While I thought that it's easier to copy names with accented characters off Wikipedia as there does exist an article about Thành then seeing the name with accented characters is a different business, especially when support for Vietnamese accented characters is not installed. This was of great help in trying to overcome that hurdle.

    In 'Hàn Th Thành', I can't see the &#7871; character, likely because the page in Slashdot uses ISO-8859-1 encoding, whereas pages in UTF-8 show it correctly.

    One way to make it universally visible is like this: 'Hàn Thê’ Thành', using an e with a circumflex and then adding the right single quotation mark (&rsquo;) next to it, because any other character remotely similar to an acute character fails to show for some reason. The right single quotation mark can be confused with a apostrophe when text is at its normal size (Arial font). To see the difference, the text size has to be increased twice in Firefox 2 (this experienced in Windows 98).