Slashdot Mirror


User: QuoteMstr

QuoteMstr's activity in the archive.

Stories
0
Comments
2,609
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 2,609

  1. Re:Oh? And when did you last write any? on Forget Math to Become a Great Computer Scientist? · · 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.

  2. Re:Applied mathematics on Forget Math to Become a Great Computer Scientist? · · 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.

  3. Re:As if computer science wasn't stunted enough on Forget Math to Become a Great Computer Scientist? · · 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.

  4. Re:Wrong kind of abstraction on Forget Math to Become a Great Computer Scientist? · · 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++?
  5. Re:Anti-Intellectualism on Forget Math to Become a Great Computer Scientist? · · 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.

  6. Re:better without maths? on Forget Math to Become a Great Computer Scientist? · · Score: 1

    Often, yes. :-)

  7. Re:Non sequitur, that on Forget Math to Become a Great Computer Scientist? · · 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.
  8. Re:Wrong kind of abstraction on Forget Math to Become a Great Computer Scientist? · · 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.

  9. Re: dyscalculia on Forget Math to Become a Great Computer Scientist? · · 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?

  10. Re:Anti-Intellectualism on Forget Math to Become a Great Computer Scientist? · · 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.

  11. Re:Some people shouldn't code production systems on Forget Math to Become a Great Computer Scientist? · · 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?

  12. Re:There's A Point Here on Forget Math to Become a Great Computer Scientist? · · 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.

  13. Re:As if computer science wasn't stunted enough on Forget Math to Become a Great Computer Scientist? · · 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.

  14. Re:Some people shouldn't code production systems on Forget Math to Become a Great Computer Scientist? · · 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.

  15. Re:Depends on the brand on Forget Math to Become a Great Computer Scientist? · · 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.

  16. Re:Math != Logic on Forget Math to Become a Great Computer Scientist? · · 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.

  17. Re:Well... Yeah on Forget Math to Become a Great Computer Scientist? · · 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.

  18. Re:As if computer science wasn't stunted enough on Forget Math to Become a Great Computer Scientist? · · 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?

  19. Re:Thanks for the quick review on Forget Math to Become a Great Computer Scientist? · · Score: 1

    *sigh* More wasteful reshuffling of old ideas:

    See http://en.wikipedia.org/wiki/Ternary_logic

  20. Re:Applied mathematics on Forget Math to Become a Great Computer Scientist? · · 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.

  21. Some people shouldn't code production systems on Forget Math to Become a Great Computer Scientist? · · 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!)

  22. Anti-Intellectualism on Forget Math to Become a Great Computer Scientist? · · 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.

  23. Re:References? on Politically Incorrect Observations About Human Nature · · Score: 1

    Ironically enough, one of the contributing factors to the original crusades was an excess of young men in western Europe, and a desire by the ruling class to direct the energies of these young men toward a productive use.

    Gives a whole new meaning to "make love, not war."

  24. Re:Defined: Liberal on Court Orders Dismissal of US Wiretapping Lawsuit · · Score: 1

    How do conservatives take away freedom? Let me count the ways:

    - Prayer in public school (Freedom of/from religion)
    - Censorship of the media (Freedom of expression)
    - New York's "free speech zones" (Freedom of assembly)
    - Suspension of Habeas Corpus (Right to Due Process)
    - Warrantless wiretapping (Right to privacy and due process)
    - Canadian border passport nonsense (Right to travel)
    - The Schiavo case (Interference with medical care)

    I'm sure I could list many more.

  25. Re:Wavelength restrictions on FCC Rules Open Source Code Is Less Secure · · Score: 4, Insightful

    That's what code burned into ROM is for -- or hell, EPROM or even EEPROM would be fine, so long as it can't be erased through normal operation of the device.

    If the FCC is that concerned about software radio operating out of spec (which I personally believe isn't really going to be a problem), then it should mandate hardware access controls on all radios.

    Ultimately, ANY solution that relies on locking down client devices is doomed to failure. People can, and do, tinker with their own devices.