Slashdot Mirror


Postmodern Computer Science

gnat writes "Two New Zealand computer scientists have a paper accepted for OOPSLA called Notes on Postmodern Programming, which identifies shortcomings in traditional views of computer science. With a section on the difference between "The Matrix" and the net, a bulleted list of new approaches called "We're All Devo", and a section called "Messy is Good" consisting of nothing but a scan of a hand-drawn diagram, this is not your father's computer science paper. It's thought-provoking stuff, though. And you know they did their homework--they cite Larry Wall's Postmodern Perl talk."

29 of 386 comments (clear)

  1. So.... by mindstrm · · Score: 2, Insightful

    Programming is not computer science....
    what am I missing?

    1. Re:So.... by Anonymous Coward · · Score: 1, Insightful

      Computer scientists don't have to worry about that either...Any more than the mechanical engineer has to worry about the CAD program they where designing something in segfaulting. Programming and computers, these are just tools of the computer scientist. Computer science is the science of computation, programming is just a convenient way to compute things. Computer science is just a branch of mathematics.

      Unless the laws of mathematics suddenly cease to hold computer scientists don't have anything to worry about.

      Cubicle dwelling geeks that where "too cool for school" cause they learned to slap together some programs in java or something have to worry about that kind of crap like a call to GetGravity returning a null pointer because of a previous page fault in User32.EXE. That's just another monkey job. Well trained monkeys, true, but it ain't science.

  2. Re:More overhead! by Zebbers · · Score: 4, Insightful

    what are you coding? I doubt youre coding a kde app for converting database formats. Different languages have different uses. Different uses require different levels of optimization. For most people, rapid development means a good deal. If asm was the best way to do most things, then I doubt all these other languages exist. But they do, and for a reason.

    I don't care how good an asm coder you are but I can bet there are some severe limitations on how complex and how large of a program you can write. Code a FPS entirely in asm and you will have my deepest and uttmost respect.

    Until then, Id suggest losing the holier than thou attitude..for neither C++ nor Java have anything inherently wrong with them. They are simply tools designed to solve certain problems, and a good deal of people in this world have deemed them quite sufficient for their needs.

  3. What's the point? by MSBob · · Score: 1, Insightful
    OK. So I didn't read the paper... Perhaps it's great but more than likely it's another one of those pointless academic super high level treaties on software construction that really don't help anyone write better software.

    When I was in school I read a book titled "Software Construction, a holistic approach" or something along those lines. Over 300 pages of pure irrelevant theoretical nonsense that didn't help me become a better developer one bit. I sense this paper is no different. Maybe I'm wrong but their abstract hasn't sold me on reading the rest either.

    I'm not against reading academic papers. In fact I really appreciate reading a good paper on an interesting research topic (like the paper on AOP I read a while back) but those '10,000 feet view of the discipline' papers rarely have enough substance in them to make reading them worth the time invested.

    --
    Your pizza just the way you ought to have it.
    1. Re:What's the point? by Anonymous Coward · · Score: 1, Insightful

      I started reading it but it was just a bunch of silly nonesense. Any academic paper that starts off with "Section 0: The Manifesto" seems highly suspect to me.

      Basically these turds weren't good enough at math to produce a useful computer science paper so they wrote some wishy washy crap that's so theoretical and broad that no one will be able to really prove it's bullshit, but it's bullshit none the less.

      Personally i think their whole thesis is crap, i mean this thing has been peer reviewed or what?

    2. Re:What's the point? by dilger · · Score: 5, Insightful

      How the heck does a post which begins by admitting complete ignorance of the subject at hand get moderated up?

      This paper is anything but high level. And that's one of its strengths, IMO. Although I'm not sure the authors would consider it publishable in a journal -- seems more like a conference presentation to me.

      The beginning is a skillful emulation of manifesti such as that of the futurists. For that alone, it's worth reading.

      cbd.

  4. Christ.... by crimsonistaken · · Score: 2, Insightful

    this is dumb. It's going along the lines of music. postpunk postpostnupostpostpunk. Before you know it, we'll have post-post-nu-post-avante-garde-post-programming

  5. Postmodernism defined by TekkonKinkreet · · Score: 5, Insightful
    The authors decline to define postmodernism, for reasons of space. While I respect their decision, here's some insight from Frederick Jameson, William A. Lane Professor of Comparative literature and Director of the Graduate Program in Literature and the Center for Crirical Theory at Duke University, perilously near to where I live:

    "Any sophisticated theory of the postmodern ought to bear something of the same relationship to Horkheimer and Adorno's old 'Culture Industry' concept as MTV or fractal ads bear to fifties television series."

    If you don't know what this means, it's because your brain evolved to reject drivel. To be perfectly honest, I hope this is a hoax. Wouldn't be the first time.

    But then, with postmodernism, you can't really tell the hoaxes from the honest nonsense.

    Adam Gopnik of the New Yorker noted some time ago that the message of postmodern work is almost always trivial (like "violence is bad"), but couched in the most inscrutable and/or eye-catching terms (like "search for an interpretive skein within that overburdened word 'violence'" or "violence as style"). How about this one, from the paper: "Without a grand narrative, there will no be one common way to program, or even one common kind of interface between programs." More than one way to program? Sign me up for a grand narrative, post-haste!

    I thought Slashdot was immune to this kind of idiocy. (Well...no, I didn't, but I can dream, can't I?)

  6. !(Truth) == truth by Ted_Green · · Score: 3, Insightful


    Frankly, the absence of a value system and a "Grand Narrative" (see "No Big Picture" 7) in approaching programing is a rather dangerous mindset and can seriously lead to sloppy programing. While I'll agree that it's nice to say in principle that C++ isn't better than C# which isn't better than Java which isn't better than Qbasic, and that there's no "wrong" way to write code, in practice I'd say it's far easier and more efficient to act as though there was a Grand Narrative, and that ASM is far better for writing faster base level routines than Pascal is.

    While I admit I have yet to read the whole article (I'll get to it) my first impression is that succeeds at failing where so many other "Postmodern" calls have done before. Which is to say it inadvertently deconstructs itself (one contradicts themselves when they say "there is no right way to do things" as this in itself proscribes a "right" action [to treat all ways equal])

    At a more fundamental level I have a hard time accepting "Postmodernism" next to "Programing" as the former is a system stating there is no such thing as a Truth statement and the latter, at it's very core, is based on truth statements. (Yes, yes, I know there is a rather big difference between Truth and a truth, esp. when truth is meant as an on/off switch, but it still quirks me regardless =)

    Either way, it's still a pretty good read.

  7. what the...? by devphil · · Score: 5, Insightful
    the actual root of everything which is programming and this cannot be denied

    ...fuck are you smoking?

    Programming is not the goal, nor the root, of computer science. Programming is the means, not the ends. Or, as Dijkstra (RIP) put it, "Computer Science is no more about computers than astronomy is about telescopes."

    Programming is fun, and it's certainly the part of computer science which I tend to look forward to the most when starting a project, but your statement is like saying, "the actual root of architecture is trowling cement onto bricks."

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    1. Re:what the...? by bshanks · · Score: 2, Insightful

      >> the actual root of everything which is programming and this cannot be denied

      > Programming is not the goal, nor the root, of computer science. Programming is the means, not the ends.

      I think there is a legitimate disagreement here (the authors of the papers know that there is another point of view here). I don't know on which side I stand. I tend to think in terms of programs myself, but I can't decide if that is a bad thing or a good one.

      As for "the actual root of architecture is trowling cement onto bricks", in some sense it is. But more so for programming; you have to look at context. Some reasons why "architecture" and "cement laying" are less distinct in programming:

      1) the "bricklayers" and the "architects" of programming must have similar training and are often considered to be in the same profession

      2) programs are somewhat malleable and so it is possible for the blueprints to change in the middle or to become muddled with the program itself

  8. Layers by Veteran · · Score: 5, Insightful
    Here are the two fundamental problems of computer science:
    • Bad programmers write bad code.
    • There are many more bad programmers than good programmers.


    Programming is a bit like chess; you can't point to anything specific that a bad chess player
    does wrong. It is not that a bad chess player moves his pieces incorrectly - bad players are constrained by the same rules of the game that good players are; a bishop stays on its color for both the good and bad players. The only difference between good and bad players is that poor players make poor choices of moves.

    In a similar fashion poor programmers use the same tools as good programmers - they both get their programs to compile and run - but poor programmers just make poor programming choices.

    Here is an example of something which poor programmers don't seem to get. When you put a nice shiny new paint job on a layer of crap - it might look ok - but it is still a layer of crap.

    That simple observation explains why Microsoft's operating systems stink.
    1. Re:Layers by captaineo · · Score: 4, Insightful

      One aspect of poorly-written code (volumes of which I produce myself) is that it does not extract as much redundancy from the problem as it could. e.g. big if() or switch() statements instead of a table of results or function pointers. I find that the best program is almost always the shortest. (within reason; removing all the newlines doesn't count =)

      Non-orthogonal, inconsistent APIs are another big source of trouble. (stdio comes to mind... quick, which of the arguments to fread() is the FILE* pointer? What's the difference between fputs(foo, stdout) and puts(foo)?)

    2. Re:Layers by Dr.+Bent · · Score: 4, Insightful

      I completely agree. I think that these problems are compounded by the fact that there is a disproportionate number of bad programmers in the market today. Every discipline has it's 3 standard deviations, tip of the curve, top-tier professionals and...everyone else...but software development has many, many more in the "everyone else" catagory because:

      1) Dotcoms gave jobs to people who had no business being programmers and encouraged students to drop out of school to take high paying jobs that are non-existant now.

      and

      2) Most people do not have a clear understanding of what software development is all about. They equate computer use with computer science, and then are surprised to find out (after 4 years of college) that it's not at all what they expected.

      This leads to more crappy software, less general understanding of effective software development techniques, and a whole hell of a lot of people who have no clue what they're talking about.

    3. Re:Layers by jazmataz23 · · Score: 4, Insightful
      Augh, this is why the "modern" notation should always be used. It's much more readable to denote the files (columns) a-h, and the ranks (rows) 1-8) instead of naming squares by the pieces that originally resided there. Those P-KR4 (Pawn to h4 or P-h4 in modern) and/or P-QR4 (P-a4) mean moving the pawns in front of the rooks out two spaces. (often pawn moves are written simply as the position they move to, but I added P for clarity)

      The duffer is trying to activate his rooks immediately. This is an awful move because the rooks will be quickly destroyed by the far more agile enemy knights. Rooks should not (as a rule of thumb) be activated until the middle game once the board has been cleared up a little. Being up a rook in the endgame (typically defined as the game after the queens have left the board) is a HUGE advantage.

      In fact, if you're prepared to support them (and your opponent allows it), pushing the d and e pawns two spaces each can be a large advantage for white; you control the center, and have lots of space behind them to develop your minor pieces.

      Now, Mr. Modernist Moderator, go ahead and mod me -1, offtopic. I will simply PostModerate you Unfair!

      like it or not, (and reading the discussion above, I see a lot of not-liking, not-understanding in the discussion) slashdot is intensely postmodern in its character.

      heh, here's a simple example from my own post. [B][/B] is modern HTML, [STRONG][/STRONG] is postmodern.

      OK it's *really* late, that seemed too funny...
      jaz

      --
      Death to Argument by Slogan!! (This post twice-encrypted with ROT-13. Replies not using same will be ignored)
    4. Re:Layers by BCGlorfindel · · Score: 3, Insightful

      "If you are working on a large code-base, in conjunction with many other people, this is untrue. Over-abstracting or over-generalizing code has the effect of making that code much harder to parse, and much harder to maintain."

      I believe that you are missing the point of the original post. If you abstract and generalize your code properly, you wind up with very compact code which is flexible and readable. I believe by shortest program, the poster means the least lines of code per section(function,method,etc) in your program. Making every function/piece of your program consist of a short number of lines ensures that it's function is clear. Also because such pieces will only perform a relatively simple function, their reusability is quite high.

  9. Re:Larry has done better by EvlG · · Score: 2, Insightful

    I think Wall's usage of the word deconstruct is consistent with the definition you provide, given his explicit mention of languages such as BASIC (viewed as the 'inferior' languages) and other 'superior' languages (like C and Python).

    Even saying Perl (a 'superior' language) is based upon the 'inferior' ones is evidence of this.

  10. Sweet God in Heaven, NO. by kma · · Score: 5, Insightful

    Reading the paper, I get the impression that this is mostly typical undergraduate hand-wringing about the gulf between academia and industry. That's fine, as far as it goes, and I've certainly indulged in my fair share of it. However, as an occasional student of stuff other than computer science, I'm a bit worried by their choice of terminology.

    To sum up: Post-freaking-modernism??? Do these people have any idea what a plague on the humanities the loose collection of intellectual conceits known as "postmodernism" has been?

    I've tried my hand at reading Foucault/Derrida/Barthes/etc., and their secondary sources. It's exceptionally difficult, but not in the way that, say, a complex algorithm is difficult. It's difficult in the way religious texts, or David Lynch movies are difficult; i.e., the difficulty is a smokescreen to keep the reader from catching on that this is all a bunch of bullshit.

    This sort of deal typically begins with, "I will argue that {truth,reason,science,gender} is {non-existent,socially constructed,a masculinist plot}." Several hundred extraordinarily poorly written pages follow in which the author, in varying degrees of good faith, actually tries to argue these points. Of course, if truth is socially constructed, we all have no basis upon which to discuss anything. Rather than calling one another on it, the postmodernists collectively wink at one another, and promise to take one another seriously, and quote one another every chance they get. It's academics by pyramid scheme.

    I understand why humanities people, even bright ones, fall for this routine, since they might go through all of their undergraduate and graduate education without encountering a single academic who hasn't drunk from postmodernism's poisoned cup; but why on earth would computer scientists be visiting this curse on a journal I subscribe to?

    To those posters above tempted to give in to the siren song of self-referentiality, who might be thinking, "Hey, some of my CS classes are boring, maybe we need some of this radical 'postmodern' stuff to kick boring old CS in the pants," remember: computer science is very, very young. New ideas and techniques are thick on the ground in fields as diverse as graphics, systems, theory, AI, and software engineering. Literary critics eventually turned to postmodernism in part because it seemed like there was nothing left to say, and this postmodernism stuff, bullshit or not, was at least different. In computer science, we are still learning how to write a well-structured novel.

    1. Re:Sweet God in Heaven, NO. by Bert+Peers · · Score: 3, Insightful
      It's not that CS class is boring, it's that it is teaching values which have been declared by the industry as irrelevant. Remember "MATURE" software ? Maintainable, Adaptable, Transparent, User Friendly, Reliable, Efficient. Say that to a manager and you get "BWAHAHA".

      Programming has been deconstructed de facto to a bunch of hacking that only needs to get the job done; anything CS has to say about the process has been declared by the industry as irrelevant. Sounds very postmodern to me.

    2. Re:Sweet God in Heaven, NO. by Ted_Green · · Score: 3, Insightful

      " post modernism is not the butchering of the language that you attribute to undergraduate papers. post modernism is rather a way of looking at the world that says, "there is no one way of looking at things. shades of grey exist. there are in-between stages to life." "

      Post modernism, however, as far as a philosophy itself goes one step further saying that all there *is* are in between stages of life and that the only shade *is* grey. Modern Post modernism (I can't believe I'm actually saying that) as advocated by Richard Rorty and his cohorts says that in the world there is no such thing as True/False. There's a reason Post modernism is so closely linked with deconstructionism, as anything that makes a claim outside its context must by default be wrong.
      The only method of criticism in Post modernism is to criticize within the context of the system/culture. In culture this means you can't say circumcising women in other countries is wrong, nor can you say we have a right to interfere in another's war.

      I don't have a problem with the general cultural movement of Post modernism, as applied to computer science (to say that there isn't always one way of doing things and that one should judge each language way of programing on its own merits rather than in comparative to another) But Post modernism ultimately can not be applied to CS in it's most profound sense, because CS at its base level ultimately requires *one* way of doing things, you have either a 1 or a 0. CS is ultimately already holistic and is unified through it's root language: math.
      You can't get any more objective than that.

  11. Can't agree with either of you. Heart. by SuperKendall · · Score: 5, Insightful

    It's true enough that "P"rogramming is not the root of things. Instead I think it is the heart, which is not quite what either of you are saying.

    You say that "P"rogramming is the means, but then give a quote about "C"omputers which is not the same thing.

    "P"rogramming is obviosuly much more than just the means. The actual running "P"rogram of just about any design can have so many facets of care and life put into things - the ease with which the "P"rogram might be built. The configurability of the "P"rogram. The API which one might access the "P"rogram through other "P"rograms. The interface that leans the user to interact with the "P"rogram are all entireley different than the abstract thoughts that gave birth to the "P"rogram, and breathe soul, if you will, into what once was abstract and souless, and are all aspects of how successful we consider the program regardless of how strict it adheres to original design, or even intent.

    To argue this point further, I'll use as a basis the section of the paper where they speak of many approaches have been taking to working with computers. Software Engineering. Software Architecture. Computer Science.

    All of these are similar in that they may produce "P"rograms, but the commonality is that all of them require "P"rograms in order to further themselves. Any of these approaches to software alone, without "P"rograms, leads to the approach becoming "dead", in the way that Latin is a "dead" language.

    I think what the original poster is really saying (and what I agree with) is that Computer Science in some places is striving to seperate itself from the "P"rogram, and in doing so also harms the ability for the student to study or engage in Architecture or Engineering or whatever other approaches can be taken with software. To lean on the paper once more, good programming education is like bad art - you know it when you see it. I'm sure there are computer programs doing a great job even now (I know Rice did an excellent job with me years ago), but we (and here I speak of any means of learning, college, self-taught, or otherwise) need to be careful to provide both the heart and the brain when bringing life to an education in software development.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  12. Re:Multi-paradigm language Oz by jtdubs · · Score: 4, Insightful

    Oz is a very cool language. I've played with it before.

    The advantage of LISP is that rather than being a Multi-paradigm language is's a no-paradigm language.

    LISP is the most generic and powerful language I've ever used.

    It's syntax is simple and uniform. It's functionality is also simple. But with it people have built a complete, powerful, OO system, written in LISP, running within LISP, which transform LISP into an OO language.

    Implementing PROLOG as a language within LISP is less than two pages of code.

    Functional programming is built in to the core.

    I'm certain that logical and relational programming could be written in LISP, it's just a matter of whether they have been. I will look in to that.

    But, better yet, any future paradigms are also implementable as LISP programs.

    Anyway, that's enough of my LISP ranting for now. I'll do some more reading on Oz. I've always meant to, but just never got around to it. Thanks for the idea.

    Justin Dubs

  13. Re:Arts funding by Tablizer · · Score: 5, Insightful

    Is it just me, or does this sound like an Arts Faculty which is tired of seeing all the university funding go to those pesky IT faculties and wants to bring itself forward into the nineteenth century?

    Actually, software engineering does need more *psychology* related input IMO. People can fight over languages and paradigms and design methedolies for years without ever agreeing. It is more like politics than say math.

    In my observation, different software engineering approaches keep trying to model the practicioner's head rather than absolute external principles or the external world. (I am not saying that the latter is necessarily better.) For example, nobody has shown that OOP is objectively better than procedural/relational. Debates over which is better often expose different *fundimental* perceptions of reality and the change-patterns of reality.

    In some of my debates with OO fans, if we ever figure out exactly where and why we differ, it tends to be things such as the likelyhood of certain events (change requests) happening. All the "training" in the world is not going to convince somebody that change X is more likely than change Y if their personal experience and observations tell them otherwise. OOP seems optimized for handling modification patterns that don't fit reality as I perceive it.

    Paradigms and languages are a lot like ink-blot tests: they reveal a lot about our internal cognative thinking patterns and world view assumptions.

    Thus, software engineering is more related to psychology than math (barring some breakthrough mathematical proof that X is objectively and practically better than Y).

    So, let the psychology department play with computer science for a while, not just the art department. The math-heads have had their turn for long enough.

  14. Good heavens - I'm PostModern by AlecC · · Score: 3, Insightful

    So now I have got a name for the way I have been programming all my life - use the best tool that comes to hand without argueing whether it is theoretically perfect. Use mixed tools if that is what the problem at hand demands. Don't reinvent if you can possibly beg/borrow/steal.

    The paper strikes me as completey tautologous anywhere outside a Computer Science department (and probably to the more practical half of those inside). If you're involved in shipping code, either for money or for the good of the community, you are interested in what works, not what is theoretically best. Of course, if a nice theoretically clean tool does the job - use it. But if a steaming heap of old code does the job (where reliability and efficiency may for part of the spec), use that.

    Welcome to the real world, guys.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
  15. Re:LISP is so great that nobody wants to use it by Anonymous Coward · · Score: 2, Insightful

    The vast majority of commercial shops reject Lisp. Some really profitable ones don't.

    "Eat shit, ten billion flies can't be wrong".

    Just because the numerical majority of people use Windows, or the numerical majority of developers use Visual Basic or Java, doesn't mean that they're the ones you should pay attention to.

  16. What a load of rubbish. by Qbertino · · Score: 3, Insightful

    I'm a trained Artist. I know these people that shit in the corner and call it [fill in random art-style bullshit].
    Perl is cool, Perl is geeky and gives a humorous look at the way things where back then with *nix admins. It's an anacronisim with a cool and powerfull interpreter, thus people still like to use and learn it. Even though it's syntax sometimes is like "ActionScript on crack" or something.
    But calling this (crappy software design and/with/or Perl) 'Postmodern' is like calling Lingo an 'interessting aproach to PLs'. Just because Perl is the tool of choice for a certain set of problems, there's no reason whatsoever in calling this 'postmodern'.
    Gawd, what people can crap about in more than 2 sentences amazes me ever so often.

    --
    We suffer more in our imagination than in reality. - Seneca
  17. Nothing new here... by Jagasian · · Score: 4, Insightful

    The goal of Computer Science is the program? I guess computability theory and complexity theory aren't goals of Computer Science? What about programming language design? Such a narrow definition of Computer Science, such a wrong definition. A better, yet still incomplete definition of Computer Science is that its goal is to understand what can/cannot be computed, and how the computable can be computed.

    First off, this paper seems to confuse "Computer Science" with "Software Engineering". "Computer Science" is about theory while "Software Engineering" is about making products and services using software. This makes all of the knocking of the traditional theories of computer science nothing more than apple vs orange. If you read "Software Engineering" in place of "Computer Science", then saying that the goal of computer science (i.e. Software Engineering) is the program... saying that is more correct.

    I especially liked the part where they say that elements of a program are not abstractions but symbols. Maybe someone should tell the writer that Computer Science started as an off-shoot of a branch of Constructive Formal Mathematics known as "Metamathematics". Metamathematics concerned itself with symbolic representations of abstractions. Mathematicians 100 years ago spent allot of effort studying various aspects of Metamathematics. Read the original works of Brouwer, Hilbert, Kleene, Church, Turing, and Godel to name a few. Kleene has a good classic textbook on Metamathematics that the writer of this paper should read.

    This paper is not scientific. It is not mathematical.

    This paper expounds nothing new, original, or worthwhile.

    This paper is nothing more than a waste of time. At best it made up some new terminology for someone else's achievements. It would be even more entertaining if the title included a few other meaningless buzzwords/buzzphrases, such as: "paradigm shift".

  18. PostModernism works? by MarkusQ · · Score: 4, Insightful

    This is the way PostModernism works

    PostModernism works? Really? And it has produced...what? I can't off the top of my head think of anything useful that has come out of it, can you? I don't even recall much that was particularly entertaining, at least not enough to justify the whole "movement."

    Maybe you meant to say "this is why PostModernism doesn't work."

    -- MarkusQ

  19. Re:LISP is so great that nobody wants to use it by Anonymous Coward · · Score: 1, Insightful

    Python has very little in common with either Java or LISP.

    Common LISP has some wonderful compilers, and there have been a few successes. It isn't going to get you as many job opportunities as Perl, since fighting inertia is pretty difficult, but learning to be productive in LISP is really its own reward. Whether or not you use it commercially, if you find it more efficient for your personal projects, then surely that is enough?

    Java is more like Smalltalk's statically-typed bastard retard child, than a strict offspring of C. It shares syntactic forms with C and C++, but the whole feel of the environment is Sun taking its Self VM work and the Smalltalk/Objective-C bastardization to the set top, and then the web client, and finally the backend.

    The "ultimate language" (if one doesn't find that concept wholly retarded, as I tend to) is really rather unrelated to what IT workers do. A lot IT workers are fairly stupid people that have obtained a rather easy skill, without much in the way of any real aptitude. The tools, or languages we research and develop today may be entirely lost to the market for decades, as so many ideas have been throughout human history. Time doesn't prop up the dinosaurs forever.