Slashdot Mirror


Interview with Jaron Lanier on "Phenotropic" Development

Sky Lemon writes "An interview with Jaron Lanier on Sun's Java site discusses 'phenotropic' development versus our existing set of software paradigms. According to Jaron, the 'real difference between the current idea of software, which is protocol adherence, and the idea [he is] discussing, pattern recognition, has to do with the kinds of errors we're creating' and if 'we don't find a different way of thinking about and creating software, we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become.'"

264 comments

  1. 10 million lines by chuck · · Score: 5, Funny
    we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become.
    Thank God.

    -Chuck

    1. Re:10 million lines by Anonymous Coward · · Score: 0

      Yep. And on a javasoft site (home of the people that can't get swing stable)

    2. Re:10 million lines by Anonymous Coward · · Score: 0

      Mozilla is greater than 10M lines, therefor it is crap.

      QED

    3. Re:10 million lines by jackb_guppy · · Score: 0

      10 Thousand lines of code in one program - programmer needs to go back to school.

      10 Million lines of code in one program - confirms the programmer is insane.

    4. Re:10 million lines by chuck · · Score: 3, Insightful
      Seriously, has there ever been a need to write a program of 10 million lines? I rather believe that creating a number of small components that work well, and combining them in some intelligent way, is the way that you build large systems.

      Now, the extent to which the pieces that you're building are called "programs," or whether the whole system is called "a program" is questionable.

      I mean, I've worked on programs of 10 million bytes, and they've seemed to work okay. It would surprise me if 10 million lines is out of my reach using the methods that I'm familiar with.

      -Chuck

    5. Re:10 million lines by Anonymous Coward · · Score: 0

      > Big commercial software is probably already there.

      (I'm the AC you responded to).

      Of course it all depends on what is called a 'program'.

      The linux kernel is > 2M loc.

      If one consider that the linux kernel is not a single program, then one can take a look at mozilla, which is also > 2M. Xfree is slighly under 2M, gcc and gdb are both around 1M.

      10 million loc are definitely not out of reach, big commercial software are probably already there. So the hippy from the article is probably wrong :-)

      That beeing said, software engineering is about mastering complexity.

      You point about having a componentized system, which is the first step in mastering the complexity.

      But generally, we have complexity layered, which means that instead of having 10M of line of code, you get say 2 Million lines used to build an abstraction (like a language) that you use to build components (say 2 million of lines) that make the system up. Such layers are stacked on each others (like microcode->assembly->C->SQL, or kernel->userland->libraries->apps). [Here, I should insert a rant about meta-languages, in which you can develop and use the abstraction. LISP is the example that code to mind]

      At the point, if we want to measure the size of the mozilla application that I use to type, we need to take into account its size, the size of gtk, the size, of wmaker, the size of xfree, the size of the libc, the size of the freebsd kernel. We are not a 10M loc, but damn near.

      So, in one word, I agree with you. 10M are within our reach, and have been for some time.

      Cheers,

      --fred

    6. Re:10 million lines by Elwood+P+Dowd · · Score: 1

      >> we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become

      > And how is this a problem?


      You flamebaiter! How dare you post such vitriolic filth on slashdot! Where do you get off?!

      --

      There are no trails. There are no trees out here.
    7. Re:10 million lines by sql*kitten · · Score: 4, Insightful

      Thank God.

      You're modded as funny, but what you said is insightful. The whole point of moving to ever higher levels of abstraction - from ASM to C to C++ (or CXX as we called it on VMS) to Java to <whatever comes next> is that you can do more work with fewer lines of code. The fact that programs aren't getting any longer is utterly irrelevant to any experienced software engineer.

      I don't think programs will get longer, since why would anyone adopt a language that makes their job harder? I bitch about Java's shortcoming's constantly, but given the choice between Xt and Swing, I know where my bread's buttered. Or sockets programming in C versus the java.net classes. I'll even take JDBC over old-skool CTLib.

      We have plenty of apps these days that in total are well over 10M lines, but you never have to worry about that because they're layered on top of each other. Someone else worries about the code of the OS, the code of the RDBMS engine, the code of GUI toolkit and so on.

      In short, pay close attention when someone from Sun tries to tell you anything about software development - he's got some hardware to sell you, and you'll need it if you follow his advice!

    8. Re:10 million lines by AxelTorvalds · · Score: 3, Insightful
      Yes, there have been the need. Windows2000 is well over 10million lines. Now is it a single program or system of programs or what? Arguably there is a large amount of that code whereby the removal of it would make the system stop being windows2000; GDI for example. LOC is a terrible metric.

      There are other very large systems out there. LOC never factors in expressivness though. I know of multimillion line 370 systems that were done in 370. I believe that they could be much much shorter if they were done in PLx or Cobol or Java or something else.

    9. Re:10 million lines by the-matt-mobile · · Score: 2, Interesting

      I disagree. 10 million lines of code is not nearly enough for AI programming. If we ever get to a point where we're building Asimov style humanoids, there's no way 10 million lines is enough (even with shortcut languages like PERL and Python :-)

      I'm not saying this guy is right, but I will agree that we're not ready to maintain a codebase massive enough to do all the things we'll ever try to do with only our current conventions to get us there.

    10. Re:10 million lines by aero6dof · · Score: 2, Funny

      10 million? Nobody should ever need to write a program with more than 640K LOC anyway!

    11. Re:10 million lines by Anonymous Coward · · Score: 0

      It can be a problem when a team tries to write the code in a language which is unsuitable for BIG projects( C, C++)

    12. Re:10 million lines by whereiswaldo · · Score: 4, Insightful
      Such layers are stacked on each others (like microcode->assembly->C->SQL, or kernel->userland->libraries->apps).

      I think you just proved how greater than 10 million lines of code has already happened.

      How many lines of code is a 10 million line C program in assembly? 50 million? How many lines of code can a 10 line 4GL statement amount to in C or assembly?

      What I think we really need to advance is another way to express logic in a computer system. New languages seem to be getting more focus these days with the popularity of open source, and I think that's a great step in the right direction since more people will get to try out new ideas.

    13. Re:10 million lines by TheLink · · Score: 2, Insightful

      Asimov style humanoid? We don't even understand how existing humanoids work.

      If people are going to build something like that without being able to understand it, they might as well not - there are 6 billion existing humanoids already. Why rewrite existing code? Why reinvent the wheel?

      Without understanding, those AI folk might as well give up and switch from CS to GM and breeding animals.

      Which is what some of them are already doing albeit virtually.

      --
    14. Re:10 million lines by Lemmy+Caution · · Score: 1
      One programmer?

      At a certain point, things are only interesting when they are too complicated to be understood. The neural input/output of, say, a squid is simple enough to be understood in a fairly straightforward way. The neural network for a human is not. Which would you rather have?

    15. Re:10 million lines by VoidEngineer · · Score: 1

      Good points all. Here's my 2cents:

      Seriously, has there ever been a need to write a program of 10 million lines?

      Yeah. A 10 million line application is, at a minimum, 80 Mbytes I believe. Therefore, MS Office is approaching 10 million lines.

      M$ products aside, there are lots of specialized applications which exist in industry that are millions of lines long. Take, for instance, the control program for an airport or a nuclear power plant. In such complexes, the blueprints, system diagrams, and physics are typically all coded into the control program. Modern nuclear power plants have VR CAVES, where robots can be controlled from, and one can do a virtual walk-through of the plant, without actually having to go near the reactor or storage containers. These kinds of programs are millions of lines long, and are critical to the operation of both the plant and our society.

      The oil, auto, and medical industries are other areas which have their own 10 million line code applications.

      Now, I agree with you on the philosophy of modularity. However, the fact of the matter is that science, technology, and coding doesn't work that well. When people are faced with a new problem, they kludge together solutions from previous problems until they get an octogonal or dodecagonal shaped peg which they force into the circular hole with a rubber hammer. After kludging that together, they go get some putty and cement over the hole. That's typically how 10 million line apps get developed.

      Now, the extent to which the pieces that you're building are called "programs," or whether the whole system is called "a program" is questionable.

      Agreed. However, I think that they may really be talking about 10 million line programs, however. Mainframes ship with 50 to 100 GB of RAM nowdays. A mainframe with 80GB of RAM can handle a 10 million line app with 1000 characters per line. I don't know about you, but I've never seen an app with 1000 characters per line...

      I mean, I've worked on programs of 10 million bytes, and they've seemed to work okay. It would surprise me if 10 million lines is out of my reach using the methods that I'm familiar with.

      Is it though? Scalability is a tricky issue. Between 10M bytes and 10M lines, there could be all sorts of threshold points, critical mass points, boundary layers, domain changes, and so forth. For instance, at 10M lines of code, code may suddenly require to by multithreaded or run on multiple processors; which is a serious issue that many smaller programs never need to take into account for.

    16. Re:10 million lines by Anonymous Coward · · Score: 0

      Windows2000 is well over 10million lines

      Can you call that a need? :-)
      Seriously, though, maybe that sort of thing would work better if it were more componentized.

    17. Re:10 million lines by lamp540 · · Score: 1

      If 10 million lines of code is 80 mb then a line of code is 8 bytes. That's obviously not a good average.

    18. Re:10 million lines by iankerickson · · Score: 1
      Seriously, has there ever been a need to write a program of 10 million lines?

      Yes. So the "evil computer hacker" character can allude to its length in the next sequel to Jurassic Park.

      --
      Democracy. Whiskey. Sexy. Pick any two.
    19. Re:10 million lines by Anonymous Coward · · Score: 0
      "Windows" isn't somparable to Linux; it's more like Red Hat (Linux Kernel + gnu utilities + XFree + window manager + thousands of drivers (not available for linus).

      There are separate teams (at MS) for the various pieces, too.

    20. Re:10 million lines by twentycavities · · Score: 2, Interesting

      I don't think programs will get longer, since why would anyone adopt a language that makes their job harder?

      So they can brag about it all the time like Steve Gibson. Every time I go to his site I feel like such a pansy just 'cause I don't know ASM.

      --
      Monstromart: Where shopping is a baffling ordeal
    21. Re:10 million lines by Anonymous Coward · · Score: 0

      ...and for similar reasons I'll take a functional language over Java any time. It is just so much more expressive. I find modern toolkits very annoying to use, they require a lot of extra work due to both design and language choices.

      But for some reason, while the mainstream is moving to slightly higher level abstraction in toolkits, and higher-level languages, they are not moving to more expressive languages. Java is higher-level than C++, but arguably less expressive - the lack of ability to return multiple values from a function often makes you have to write more code in Java than one would have to in C++...

      Even higher-level languages provide even more cost and less advantage. Sure perl is useful for string processing, but that's just because it has useful regular expression stuff by default (and some syntactic abbreviations), nothing that couldn't easily be implemented as a library for some other language.

      Purely LOC-wise, something like K would probably win. But it lacks clarity.

      The things I find it hard to live without (but often have to, due to shortcomings of mainstream languages) are closures and the ability to express data structures on the fly (things like Swing, where you have to explicitly create this, add this to that etc., actually require a lot of work to use compared to how I'd like to do things).

      What am I left with? More-or-less functional languages. Want simplicity? Scheme. Want efficiency, with modules and objects to make large projects manageable? O'Caml.

    22. Re:10 million lines by Anonymous Coward · · Score: 0

      What Mr. Lanier appears to be overlooking is that the current methods of producing software *are* scalable. You just have to pick your level of abstraction. When I first graduated, my programing tool was a soldering iron. Then I drifted into assembly language programming; then Forth; then C/C++, Smalltalk, Eiffel and now Java. Each step up in the level of abstraction took me farther from the metal. When it was just chips and a soldering iron, it was non-trivial to create new functionality. In firmware, it was much easier; in high level languages, it's probably already done. For example: right now I'm writing a clinical lab application that emails and faxes test results to doctors, and also allows doctors to check results via the web. Did I write the code for talking to a fax machine, or for delivering an electronic message to a doctor's computer, or for a web server? Of course not. I'm using code built by others. Truly, I stand on the shoulders of giants. For a good example of the sort of organic scalabilty and fault tolerance Mr Lanier seeks, one needs only to consider the internet. Think of it: every possible combination of hardware and software connected, billions upon billions of errors every day -- and the damn thing still works, and is still growing. This is not nothing.

  2. Just a thought by Neophytus · · Score: 2, Informative

    The day a compiler makes programs based on what it thinks we want a program to do is the day that conventional computing goes out the window.

  3. DUPE by Anonymous Coward · · Score: 0

    This was posted earlier in the week on /..

  4. In the future... by Anonymous Coward · · Score: 0

    Computers will program themselves!

    1. Re:In the future... by ChrisTaylor2904 · · Score: 0, Offtopic

      And in Soviet Russia, it'll be the other way around...

  5. Re:Red Alertt! by Anonymous Coward · · Score: 0

    Please moderate this comment up. The author's clever reference to the high quality Internet Explorer ("IE") helps to demonstrate the philosophical differences between Communist RMS, and the competant corporation, Microsoft.

  6. Full of it. by cmason · · Score: 5, Insightful
    If you think about it, if you make a small change to a program, it can result in an enormous change in what the program does. If nature worked that way, the universe would crash all the time. Certainly there wouldn't be any evolution or life.

    <cough>Bullshit.</cough>

    This guy obviously knows nothing about biology. A single base change in DNA can result in mutations that cause death or spontaneous abortion. As little as a change in a single 'character' can be lethal. That's a pretty "small change" that results in a pretty big "crash."

    I'm not sure if this invalidates his argument, but it certainly doesn't do much for his credibility.

    --
    "If you are an idealist it doesn't matter what you do or what goes on around you, because it isn't real anyway."-R.P.W.
    1. Re:Full of it. by JohnFluxx · · Score: 1

      I think his point is more of, what if that one small dna change caused the entire world to explode. One small creature dying isn't a "big crash".

    2. Re:Full of it. by zephc · · Score: 1

      This guy has seemed to turn into a bullshit artist as of late... i respected his early VR work, but VR is the tech that never was, and I guess he's just killing time now?

      --
      "I would say that 99 per cent of what my father has written about his own life is false." - L. Ron Hubbard Jr.
    3. Re:Full of it. by Anonymous Coward · · Score: 0

      You just said what he said.

      He said:

      if you make a small change to a program, it can result in an enormous change

      You said: ...a pretty "small change" that results in a pretty big "crash."

    4. Re:Full of it. by Anonymous Coward · · Score: 0

      He's always been more of a sideshow freak than a real programmer/technologist. He's one of those people who looks great on the cover of Wired magazine talking about vr or telepresense.

    5. Re:Full of it. by Sri+Lumpa · · Score: 3, Insightful

      "This guy obviously knows nothing about biology. A single base change in DNA can result in mutations that cause death or spontaneous abortion. As little as a change in a single 'character' can be lethal. That's a pretty "small change" that results in a pretty big "crash.""

      This means that natures has got an excellent error catching and correction system, rather than letting buggy code run and produce flawed result it catches the worst cases and prevent them from running (spontaneous abortion) while code with less bugs (say, a congenital disease) has less chance to run (early death, lesser sexual attractiveness to mates...).

      It is only with the advent of modern society and modern medecine that the evolutionary pressure has dropped enough to make it less relevant to humans. Maybe in the future and with genetic engineering we will be able to correct congenital diseases in the womb.

      Even beyond DNA I am convinced that nature has a good recovery system and that if humans were to disappear tomorrow most of the damages it did to Earth would eventually be healed (but how long before we reach the no return point?).

      Now if software could have similar damage control mechanism and if it could still function while invalidating the buggy code, that would be something.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
    6. Re:Full of it. by cmason · · Score: 1

      Yes, obviously you can't read. He said "evolution or life" doesn't crash. I was saying it does.

      --
      "If you are an idealist it doesn't matter what you do or what goes on around you, because it isn't real anyway."-R.P.W.
    7. Re:Full of it. by Anonymous Coward · · Score: 0

      Sure it does. We are here to prove it.

    8. Re:Full of it. by TheLink · · Score: 1

      Well if your software stops working, most of the damages it did to Earth would eventually be healed too.

      --
    9. Re:Full of it. by Anonymous Coward · · Score: 0

      The case of DNA is a special one. (in fact, isn't DNA the physical equivalent of software? Is it any wonder that behavior parallels?) In most physical systems a small change does not result in a crash (ecological crash...biological crash...). In virtually all cases, moving the cheese a foot to the left will not cause the mouse to starve. Cutting off your finger will not kill you.

      Tunnelvision is a superpower and a crippling weakness. Geeks have it in spades.

    10. Re:Full of it. by Cerberus9 · · Score: 1

      Now if software could have similar damage control mechanism

      Exactly. What we need is a mechanism that will drive companies with buggy products into bankruptcy instead of allowing them to flourish and produce flawed results.

    11. Re:Full of it. by raduf · · Score: 2, Interesting

      Well, actually, changes in DNA often don't do anything bad, much less fatal. That's how evolution takes place, right? See how long/well a random DNA change can survive. Anyway, DNA and biological stuff in general is much more resistant (resilient?) to change than software. Much more. DNA is around for a very long time and it hasn't crashed yet.

      The point this guy makes and I totaly agree with is that programmimg can't stay the same for ever. I mean come on, we're practically programming assembly. High level, IDE'd and coloured and stuff but not a bit different fundamentally.
      Functional programming for example, that's different. It probably sucks (I don't really know it) but it's different. It's been around for about 30 years too.

      There has to be something that would let me create software without writing
      for i=1 to n
      for every piece of code I make. It's just... primitive.

      And this guy is right about something else too. If nobody's looking for it, it's gonna take a lot longer to find it.

    12. Re:Full of it. by Anonymous Coward · · Score: 0
      Having not read the article, I'm only responding to the following comment:
      This guy obviously knows nothing about biology.

      I'd suggest you check out Linked by Dr. Barabasi, as mentioned in this /. book review. The point being that much of biology works in a scale-free "network" paradigm, which has the inherent weakness of being reliant on "super-nodes".


      Depending on whether you consider the removal of a super-node (such as a keystone species in the food-chain) a "small change", you're view is limited at best. Sure, some things work that way (like your example), but others don't (like removing a few of the root DNS servers, to take a non-biology example).

    13. Re:Full of it. by rugwuk · · Score: 1

      Its hard to explain his entire concept in one paragraph!

      --
      Its one damn thing before another. (Dick Bird 1999)
    14. Re:Full of it. by Trinition · · Score: 2, Informative
      This guy obviously knows nothing about biology

      Neither do you. The base pairs in DNA work in groups of 3. There's 4^3 possible combinations then, in one group... 64. However, there are only about 25-30 different results. It has been shown that the various combinations that lead to the same result are nearly-optimal. That is, the liklihood that any one base pair would be incorrectly copied as another is least likely to have an effect on teh result of that group.

    15. Re:Full of it. by littleRedFriend · · Score: 2, Insightful

      Indeed, sometimes a single basepair change is incompatible with life. However, biological systems have many safety features. Most of the time, the system can handle errors. Sometimes, people that can not see, will develop better hearing, or blocking a part of a metabolic pathway, will activate or increase the activity of another part to compensate. In biology, there are many feedback loops, and everything is regulated at every step along the way. The result is a complex system that is quite stable. Of course, if you hit the right switch the system will go offline.

      However, I don't see how this insight will lead to a better way of programming. Unless, maybe through sophisticated evolutionary / genetic programming techniques. I see many problems with rational design of stable complex systems like life or 10 million+ lines of code. Sorry Dave, you know I can't do that.

      --
      IANAL, but imagine a beowulf cluster of in Soviet Russia all your belong are base to us welcoming the new SCO overlords.
    16. Re:Full of it. by lamp540 · · Score: 1

      Damn, dissing on the for loop. you're wrong for that...

    17. Re:Full of it. by buddyjones · · Score: 0

      Actually, you're full of it.

      The change you mention (a change in a single character) can be lethal, but more often than not is just fine. In fact, when scientists do genetic screens on model organisms (like fruit flies, worms or yeast) to find mutants, they typically have to make thousands of random changes in the DNA per individual and screen anywhere from hundreds to billions of individuals to find any effect. In yeast, ~16-18% of the genes are essential - which means that the cell will die if these genes are removed. However, there are TONS of mutations that the gene can suffer and the cell can keep working. Most of the mutations will have no effect.

      Consider the number of mutations that CAN AND DO happen and how many of them are actually lethal. The answer turns out to be 'very few'. The reason for this is that biological networks are highly insensitive to parameter variation (eg, the rate at which reactions happen and the number of molecules present), and the biological code is redundant in a way that allows mutations to have a no or a negligible effect on protein structure. Now, these rules don't hold for absolutely every single base pair/amino acid in a biological system, but they do for an enormous number of them.

      Here's another thought experiment: Compare each human to another and see how many differences there are from human to human (these are due to DNA mutations) - yet each of us operates properly, for the most part.

      Also, our DNA is subject to all kinds of insults (UV light, chemicals) continually over our entire lives. So, many errors are introduced in our code, yet we are able to survive for years without rebooting.

      The biological code is also amazingly compact. Your entire genetic code fits on a DVD.

    18. Re:Full of it. by Anonymous Coward · · Score: 0

      How is one computer on the internet dying a "big crash?"

    19. Re:Full of it. by Anonymous Coward · · Score: 0

      There has to be something that would let me create software without writing for i=1 to n

      Try another language besides visual basic. It will open up whole worlds of possibilities.

    20. Re:Full of it. by Anonymous Coward · · Score: 0
      This guy obviously knows nothing about biology

      Neither do you.

      And you don't know as much as you suppose. Yes, DNA bases come in groups of three. But most of the redundancy is in the third base ... change the first two, and you are likely to cause an amino acid change. (Although there are rare exceptions.)

      And although the system is nearly optimal for three, the error checking is poor in comparison to four. (e.g. there is not a checksum bit)

      P.S. There are 20 amino acids plus stop that are encoded by DNA triplets: 21 choices, not "25-30"

    21. Re:Full of it. by mamba-mamba · · Score: 1
      This means that natures has got an excellent error catching and correction system, rather than letting buggy code run and produce flawed result it catches the worst cases and prevent them from running (spontaneous abortion) while code with less bugs (say, a congenital disease) has less chance to run (early death, lesser sexual attractiveness to mates...).
      Just thought I'd point out that mutation is the ultimate source of genetic variation, which, when kept within certain limits, allows species to adapt to changing environments. So, in order for the whole system of evolution to work, a certain amount of genetic error is required.

      MM
      --

      --
      By including this sig, the copyright holders of this work or collection unreservedly place it in the public domain.
    22. Re:Full of it. by Sri+Lumpa · · Score: 1


      True, which is why not all "buggy" code is discarded by the system, some bugs have value. Now let's go and design a system that prevent the buggiest software from running and allows unintended but good side effects to thrive, it's most likely impossible with the way we currently engineer software but thinking about it may give us other ideas.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
  7. 10 million lines by the+eric+conspiracy · · Score: 0, Flamebait

    we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become

    And how is this a problem?

  8. 10 million lines of bullpucky by aminorex · · Score: 5, Insightful

    And when you link your 10 million line program with my
    10 million line program, we've got a 20 million line program.
    This idea of an inherent limit to the complexity of
    programs using current methods is pure larksvomit, and
    if Jaron Lanier sells it, he's a snake oil hawker.

    This is Jack's total lack of surprise -> :|

    --
    -I like my women like I like my tea: green-
    1. Re:10 million lines of bullpucky by Elwood+P+Dowd · · Score: 1

      And when you link your 10 million line program with my
      10 million line program, we've got a 20 million line program.
      This idea of an inherent limit to the complexity of
      programs using current methods is pure larksvomit, and
      if Jaron Lanier sells it, he's a snake oil hawker.

      This is Jack's total lack of surprise -> :|


      If this isn't a troll, my name isn't Elwood P. Dowd. And it isn't.

      --

      There are no trails. There are no trees out here.
    2. Re:10 million lines of bullpucky by Thing+1 · · Score: 2, Funny
      This idea of an inherent limit to the complexity of programs using current methods is pure larksvomit, and if Jaron Lanier sells it, he's a snake oil hawker.
      I'd like to know how he manages to produce snake oil from lark's vomit!
      --
      I feel fantastic, and I'm still alive.
    3. Re:10 million lines of bullpucky by sjames · · Score: 1

      The problem is, if I change my 10 million lines without understanding all 10 million of your code, I'll bet it won't adapt and cope with the changes gracefully. That's the point.

  9. Big Programs by Afty0r · · Score: 5, Insightful

    "if 'we don't find a different way of thinking about and creating software, we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become."

    Fantastic! We'll all get down and program small, specific routines for processing data, each one doing its' own job and doing it well. Those nasty, horrid standard protocols he refers to will allow all these small components to easily talk to each other - across architectures, networks etc.

    Oh wait, this is the way it already works. Is this guy then, proposing that we learn a new way to program because our systems aren't monolithic enough? *sigh*

    1. Re:Big Programs by sql*kitten · · Score: 1

      Is this guy then, proposing that we learn a new way to program because our systems aren't monolithic enough

      Well, duh. How else are Sun going to sell all that 64-bit gear they make? Bigger and more monolithic the better!

      Oh, wait, the network is the computer. Maybe the best solution is to have smaller programs and standard protocols after all.

    2. Re:Big Programs by 6e7a · · Score: 0

      I think he's advocating a more tolerant version of the "small, specific routines for processing data". Imagine passing a parameter that is out of focus to a routine. That routine could choose which of its valid inputs the parameter appears to be, and could return an out of focus result. The caller could choose which result that appears to be. This way the program continues to execute, even when a parameter or return value is erroneous.

    3. Re:Big Programs by Anonymous Coward · · Score: 0

      Sorry, not interested in probabilistic execution paths. Thanks anyway.

  10. Evolution and Core Dump by QEDog · · Score: 4, Insightful

    That is only if you consider one living been only. I think he means that is robust as an ecological balance. If a small change in the DNA base of one animal happens, he dies, and is unable to reproduce. So the 'error' was confined, and dealt with. It didn't explode giving a blue screen. Evolution is a phenomena of many living beens, not one. Even if a big change happens in a specie, most of the time the system is robust enough to absorb it and change the system into one that works. And, because of the evolutionary mechanism, only the good mutations, by definition, spread. Imagine a computer program where only the useful threads got resources allocated...

    --
    "There is no teacher but the enemy."-Mazer Rackham
    1. Re:Evolution and Core Dump by cmason · · Score: 2, Interesting
      I can see this point. I think the analogy is faulty. If you liken DNA to a computer program, then consider a single organism to be a run of that program. A single organism can crash just like a run of a program can.

      Now there are certainly programming methodologies modeled on evolution. But that's not what he's talking about. What he's talking about is using pattern recognition to reduce errors in computer programs, I assume, although he doesn't say this, by making them more tolerant of a range of inputs. Evolution has nothing to do with pattern recognition, other than that both are stochastic processes. Evolution is tolerant of environmental pressure by being massively parallel (to borrow another CS metaphor). And even then it's sometimes overwhelmed (think ice age). His programs would be more tolerant of errors because they used better algorithms (namely pattern recognition).

      I think it's a bullshit analogy. As I said before, I'm not sure if this analogy is key to his argument, but I don't give him a lot of cred for it.

      --
      "If you are an idealist it doesn't matter what you do or what goes on around you, because it isn't real anyway."-R.P.W.
    2. Re:Evolution and Core Dump by haystor · · Score: 5, Interesting

      I think its a pretty good analogy but that comparing it to biology leaves it a bit ambiguous as to what the metaphor is.

      If you compare it to something like building a house or office building the analogy works. If you misplace one 2x4, its very unlikely that anything will ever happen. Even with something as serious as doors, if you place one 6 inches to the left or right of where its supposed to be, it usually works out ok. It always amazed me once I started working with construction at how un-scientific it was. I remember being told that the contractors don't need to know that space is 9 feet 10 1/2 inches. Just tell them its 10 feet and they'll cut it to fit.

      One of the amazing things about AutoCad versus the typical inexpensive CAD program is that it deals with imperfections. You can build with things that have a +/- to them and it will take that into account.

      Overall, he definitely seems to be on the right track from what I've seen. Most of the projects I've been working on (J2EE stuff) it seems to be taken as a fact that its possible to get all the requirements and implement them exactly. Like all of business can be boiled down to a simple set of rules.

      --
      t
    3. Re:Evolution and Core Dump by Anonymous Coward · · Score: 3, Insightful

      IMO, if you liken DNA to a computer program, an individual is one instance of that code, or one process. That process can be killed without the entire system going kaput, which is what makes biological systems robust.

      However, even though I think Lanier's observations are valid, they're not particularly groundbreaking. His "wire-bound" vs. "interface" argument is basically a minor revision of the old procedural vs. OO debate. The problems with coding in terms of objects and their interactions continues to be the same: It's never going to be the most efficient(in terms of information content) possible description of a problem, and it's hard work to write extra code for a level of robustness in the future, when most developers are paid for performance in the present. I strongly believe that the roadblocks in development of more robust software are not technical, but are mostly economic.

    4. Re:Evolution and Core Dump by buswolley · · Score: 1

      program crashes.. but not the os..

      --

      A Good Troll is better than a Bad Human.

    5. Re:Evolution and Core Dump by Have+Blue · · Score: 1

      However, if you put the door six inches to the left of where it's FRAME is...

      Also, see my sig :P

  11. This is an interesting concept... by Anonymous+Hack · · Score: 4, Interesting

    ...but i don't see how it's physically possible. It sounds like he's proposing that we re-structure programming languages or at least the fundamentals of programming in the languages we do know (which might as well mean creating a new language). This isn't a bad thing per se, but one example he talks about is this:

    For example, if you want to describe the connection between a rock and the ground that the rock is resting on, as if it were information being sent on a wire, it's possible to do that, but it's not the best way. It's not an elegant way of doing it. If you look at nature at large, probably a better way to describe how things connect together is that there's a surface between any two things that displays patterns. At any given instant, it might be possible to recognize those patterns.

    Am i stupid or something? He seems to be drawing two, completely unrelated things together. Our computers, our CPUs, our ICs, at the end of the day they're just a bundle of very, very tiny on/off switches - pure binary logic. When we develop code for this environment, we have to develop according to those binary rules. We can't say "here's a rock", but we can say "turn on these switches and those switches such so that it indicates that we are pointing to a location in memory that represents a rock".

    Maybe i'm missing his point, but i just don't understand how you can redefine programming, which is by definition a means of communication with a predictable binary system (as opposed to a "probability-based system" or whatever quantum physicists like to call reality), to mean inputting some kind of "digitized" real-world pattern. It's bizarre.

    --
    I got a sig so you would remember me.
    1. Re:This is an interesting concept... by moonbender · · Score: 1

      Well, you can describe most occurences in nature with an extremely deterministic set of rules, the basic laws of physics everyone learns in school. It's not like a random, "probability-based system" was necessary to understand, simulate or imitate the behaviour he described. Also note that the digital representation in a computer also physically exists in the real world (in whatever way you chose to store them) and is thus influenced by the same "random" effects - although I wouldn't blame any software bugs on quantum phyics.

      That said, I also have a hard time creating a connection between what he suggests and the example he gives. Maybe you need better drugs to grok it. ;)

      Disclaimer: I'm not a physicist, and that likely shows. Heck, I'm not even a qualified computer scientist, yet.

      --
      Switch back to Slashdot's D1 system.
    2. Re:This is an interesting concept... by goombah99 · · Score: 4, Insightful
      When I first started reading it I thought well this is cute but impractical. But I had a change of heart. What first bothered me was the idea that if a function is called with a list of args that the function should not just process the args but in fact should look at the args as a pattern that it needs to respond to. First this would imply that every function has been 'trained' or has enough history of previous calls under its belt that it's smart enough to figure out what you are aksing for even if you ask for it a little wrong. Second the amount of computational power needed to process every single function call as a pattern rather than as a simple function call is staggering.

      or is it? how does 'nature' do it. well the answer in nature is that everything is done in parallel at the finest level of detail. when a rock sits on a surface every point on the rock is using its f=MA plus some electomagentics to interact with the surface. each point is not supervised, but the whole process is a parallel computation.

      so although his ideas are of no use to a conventional system, maybe they will be of use 100 years from now when we have millions of parallel processors cheaply available (maybe not silicon). So one cant say, this is just stupid on that basis.

      indeed the opposite is true. if we are ever going to have mega-porcessor interaction these interactions are going to have to be self-negotiating. It is quite likely that the requirements for self negoitation will far out strip trying to implement doing something the most efficeint way possible as a coded algorithm would. spending 99% of your effort on pattern recognition on inputs and 1% of your processor capability fuulfilling the requested calacultion may make total sense in a mega scale processing environement. it might run 100x slower than straight code would but it will actually work in a mega scale system.

      The next step is how to make the processor have a history so that it can actually recognize what to do. That's where the idea of recognizing protocols comes in. At first the system can be trained on specific protocols, which can then be generalized byt theprocessor. superviser learning versus unsupervised.

      Cellular systems in multi-cellular organism mostly function analogously. They spend 99% of their effort just staying alive. hugeamounts of energy are expended trying to interpret patterns on their receptors. some energy is spent reponding to those patterns. Signals are sent to other cells (chemically) but the signals dont tell the cell what to do exactly. Instead they just trigger pattern recognition on the receptors.

      thus it is not absurd to propose that 'functions' spend enormous effort on pattern recogntion before giving some simple processing result. But for this to make sense youhave to contextualize it in a mega processor environement.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    3. Re:This is an interesting concept... by Gleef · · Score: 2, Interesting

      I agree with your skepticism, Lanier is spouting vague principals with little basis in real systems. He ought not to say "we should go there" until "there" is somewhat mapped out and not a big spot on the map labeled "here there be dragons". However, I do have some things to say about your comments.

      Our computers, our CPUs, our ICs, at the end of the day they're just a bundle of very, very tiny on/off switches - pure binary logic.

      Our DNA, the genetic code that is used to make the building blocks that make us us, and make chimpanzees chimpanzees, is essentially a number in base 4, manipulated by molecules that are either completely hardcoded, or defined within that base 4 number, and influenced by chaotic forces in the world at large..

      Mathematically and logically speaking, there is no difference between a base 4 number and a base 2 number. Nature uses base 4 because she had 4 nucleotides to play with, we use base 2 because it's cheaper to design and build; they are the same numbers.

      When we develop code for this environment, we have to develop according to those binary rules.

      Perhaps, but there are some things that need to be kept in mind here. As Lanier points out, much of what we consider "this environment" is the biproduct of business decisions, not the essential nature of binary computing, for example, processor registers, one dimentional memory, the four ring security model, interrupts, files, these can all be done differently.

      Also, as has been demonstrated in numerous ways, just because you are using a binary device doesn't mean that you must be develop based on binary logic, people aren't toggling the boot loader via the switches in front of the computer anymore. In binary, someone can develop an environment that is much much richer than binary. Then, separately, anyone can develop for that environment without having to worry about the binary details.

      We even have the technology to, given sufficent computing power, completely model any non-chaotic analog environment and have it work right (just keep making the bit lengths longer until you are safely well under whatever error tolerance you have). Chaotic analog environments are harder, but people are working on it; we've got the technology to make something that looks like the chaotic environment, but is missing out on much of the richness.

      We can't say "here's a rock", but we can say "turn on these switches and those switches such so that it indicates that we are pointing to a location in memory that represents a rock".

      But we can. When you write a paragraph of text in HTML, you don't say "turn on these switches and those switches such that it indicates that we are pointing to a location in memory that represents a paragraph", you say "here is a paragraph, here's the text in the paragraph". You can make an environment where you can say "here is a rock" (but until we get better at chaos, it will look and act at best almost, but not quite, like a rock).

      --

      ----
      Open mind, insert foot.
    4. Re:This is an interesting concept... by Anonymous+Hack · · Score: 4, Insightful

      But if his theory is, in fact, what you are describing... Why would we ever do it on the program level? As a programmer, it's actually easier to debug an application if you know exactly how each function is going to treat your arguments. Let's try to think it back to today's technology for a second:

      void *myFunction(void *b)
      {
      if (mostProbable(b, TYPE_INT))
      printf("%d", *((int *) b));
      else if (mostProbable(b, TYPE_CHAR))
      printf("%c", *((char *) b));
      return (mostProbableReturn());
      }

      And in turn our calling function will have to sit and think about the return and what it probably is, etc, etc. What benefit can be gotten from programming like this? Yes, it means we could randomly fire something into a function that wasn't intended for it... for example (in Java): SomeUnknownObject.toString() and instead of getting "Object$$1234FD" we get a true string representation of whatever it is... but we programmed it in the first place! We programmed it, so we know precisely what the object is supposed to be, and precisely how to display it. Why have a computer guess at it when we KNOW?

      "Ah", i see you saying, "but won't it cut down on LOC if a user gives unknown input and the app can figure it out?" True indeed, but then why doesn't he talk about making these abstractions at the GUI-level? It is far, far more practical to keep the fuzzy logic on the first layer - the input layer. And in fact this is already done to some extent. Love him or hate him, Mr PaperClip Guy pops up and guesses when you're writing a letter and tries to help. Love it or hate it, most every text widget in Windows has an auto-complete or auto-spell-fix function. Hell, even zsh and i believe bash do it. This is where fuzzy logic is useful - making sense of input that is either not what you expected or something you could "lend a hand" with. But in the core API? In the libraries, in the kernel, in the opcodes of the CPU? I don't think so. It's in those places where 100% reliability/predictability are vital, otherwise it defeats the point of using a computer in the first place. You don't want your enterprise DB suddenly "losing a few zeros" because your server farm "thought it made more sense that way".

      --
      I got a sig so you would remember me.
    5. Re:This is an interesting concept... by Anonymous+Hack · · Score: 0, Offtopic

      I want to reply, but i'm totally exhausted. It's 4:20am here and i'm not thinking straight any more. I'll get back to you tomorrow if you're interested and this is still on the front page :)

      --
      I got a sig so you would remember me.
    6. Re:This is an interesting concept... by buswolley · · Score: 1

      mod this one up. at least he is an optimist

      --

      A Good Troll is better than a Bad Human.

    7. Re:This is an interesting concept... by blamanj · · Score: 2, Informative

      This is an interesting concept..but i don't see how it's physically possible.

      Actually, it's already been done. The programming language Linda by David Gelertner uses pattern matching.

      Everything exists in a large tuple-space and objects can be "written" into the space. They are "read" by pattern matching. Objects can be passive data or active processes.

      It's a very simple and elegant idea. The JINI and JavaSpaces projects use these concepts, which is probably why Lanier's article is on the Java site.

    8. Re:This is an interesting concept... by Trinition · · Score: 1
      How about a nerual network. When I first took an artificial neural network class in college, I was blown away. So simple. So elegant. And so powerful!

      Like you describe, they require training, but they are MADE for pattern recognition. Artificial neural networks are already used in certain niches of programming. But maybe someone could make them more general purpose for general programming.

      I remember one example we saw in class was building an XOR neural network. It was incredibly complicated compared to a typical digital XOR gate. But the neural network used to remove unknown noise from a signal was surprisingly simple.

    9. Re:This is an interesting concept... by 6e7a · · Score: 0

      Rather than applying fuzzy logic on every function call, you could potentially apply it only when the input needed clarification.

    10. Re:This is an interesting concept... by VoidEngineer · · Score: 2, Interesting

      ...but i don't see how it's physically possible. It sounds like he's proposing that we re-structure programming languages or at least the fundamentals of programming in the languages we do know (which might as well mean creating a new language).

      Hmmm. That's kind of like asking how it's possible for two three dimensional objects to occupy the same place is space. The answer, of course, is to displace those objects along the time vector. Similarly, I think that the author is trying to urge coding paradigms onto a new and different vector basis. This, of course, happens all the time, and people are always indignant when their domain of study's basis of authority is undermined by someone else's work.

      Am i stupid or something? He seems to be drawing two, completely unrelated things together. Our computers, our CPUs, our ICs, at the end of the day they're just a bundle of very, very tiny on/off switches - pure binary logic. When we develop code for this environment, we have to develop according to those binary rules.

      No, not stupid. Caught up in the paradigm of binary opposition, perhaps. Personal computers produced for mass consumption are bundles of very, very tiny on/off switches. Research computers often utilize quadratic switches (biocomputing) and n-switches (optical and quantum computing). A biocomputer, for example, may run well over a billion solutions to a problem, simultaneously, utilizing A,C,G,T switches; the trade-off for breaking the on/off paradigm, however, is that you can only run this particular biocomputer once, and then it's no longer a biocomputer.

      Maybe i'm missing his point, but i just don't understand how you can redefine programming, which is by definition a means of communication with a predictable binary system to mean inputting some kind of "digitized" real-world pattern.

      The process works like this: You (PersonA) can redefine programming or whatever else you want (religion, science, government, etc. etc.) by gather at least one other person (PersonB) to you, and declaring between the two of you, 'We're going to redefine this term F(x) to now mean F(y).' Alternatively, you can say, 'We're going to redefine this term F(x) to now mean G(x).' Between PersonA and PersonB, this term is now redefined.

      After that, it's all a matter of gathering other people into your circle or domain of practice, and getting other people to believe in your ideas. If you, as PersonA, never get a PersonB, then you a lone crackpot without any supporters. If you, as PersonA, gather a million people around you and your believes, you are either L Ron Hubbard or Bill Gates.

      And lastly, programming for biocomputers often involves communication with a predictable quadratic (i.e. genetic) system. It just goes to show that the term 'programming' is pigeon-holed by the computer scientists to mean a particular thing in their field of study.

    11. Re:This is an interesting concept... by jck2000 · · Score: 1

      spending 99% of your effort on pattern recognition on inputs and 1% of your processor capability fuulfilling the requested calacultion may make total sense in a mega scale processing environement. it might run 100x slower than straight code would but it will actually work in a mega scale system.

      Good point -- like a human society.

    12. Re:This is an interesting concept... by terrab0t · · Score: 1

      "Why have a computer guess at it when we KNOW?"

      He is saying that after your program becomes about 10 million lines of code, you may no longer look at a particular object or function and "KNOW" exactly what it's role is. You tend to forget.

    13. Re:This is an interesting concept... by 10am-bedtime · · Score: 2, Interesting
      here's one way to understand the gist of the argument: consider programming to be the application of a specification to a protocol.

      • in the old old days, the protocol was "bang bits" and the specification was "register transfer level" (RTL) instructions.
      • in the old days, the protocol was "drive widgets w/ signals" and the specification was "connect this to that" instructions. a lot of gui programming is still done this way (lamentably).
      • in the less recent past, the drudgery of wiring things from the ground up spawned observation that it is possible to regularize some of the wiring; the protocol was still the same but the specification started looking like "connect pre-packaged-this to pre-packaged-that".
      • in the more recent past, the protocol expanded to "connect your-this to your-that" and the specification evolved to be able to generate more fitly that which was formerly pre-packaged en masse, to "declare my-this and my-that".
      • in the present day, the protocol is "your-connect your-this to your-that" and the specification is "declare my-connect, my-this and my-that".
      • the last step (towards adaptive programming by machines) is to hook up an inference engine that specializes on situation, in order to generate the proper my-* bits (all of them). then the protocol is "teach the engine" and the specification is "recognize situation-A and try my-bits-A".

      one can up-scope and note the (still somewhat imperfect) congruence of the last step w/ the original RTL... in any case (heh), the world is a better place if more users understand the programming mindset if not the act of programming, per se. what is a programmer but a cultivator of the machine? what is a good person but a self-programming philanthropist? what is a great hacker but a good person w/ skillz?

    14. Re:This is an interesting concept... by Anonymous Coward · · Score: 0

      I think it's akin to "fuzzy logic", or "object oriented programming" - it's just a different way for programmers to conceptualize the ultimately digital and deterministic algorithms that they're implementing. Sure, the final result is always machine code executed in linear fashion on a Turing Machine (which is why I will always be an assembly language programmer at heart) but there's nothing wrong with a bunch of programmers flocking to some new interesting way of thinking about things every now and then. Something useful might even come of it. I got some new ways of looking at problems out of the fuzzy logic and object oriented programming ballyhoo, even though they're nowhere near as revolutionary in terms of actual generated instructions or the work needed to produce a commercial product as some of their adherents tend to believe.

      This is only tenuously related, but I always start thinking about it whenever the algorithm conceptualization stuff comes up... The stuff that I think will pay off a lot more in the long run is in the direction of so-called genetic algorithms. Once we can figure out how to 1) describe a program's desired operation in a manner that permits measurement of the degree to which a given program adequately satisfies the description and 2) understand and codify the set of meaningful ways that a program can be perturbed or mutated to cause it to move closer to a desired program description without completely falling apart, then we will have a system that can generate software. Describe the program, constrain the mutations, and let the box churn through a bajillion generations until (hopefully) some code that comes close enough to doing what you need pops out. The simple bugs go away, but the specter of the complicated ones give me chills. In any event, it sure is a good time to be alive.

      - aaron

    15. Re:This is an interesting concept... by Anonymous Coward · · Score: 0

      Pattern recognition! And what is not pattern recognition? I write a function which takes a number of parameters and returns true or false. When it returns true it has "recognised the pattern". Woohoo.

      The only non-algorithmic approach to programming is trial-and-error. The program does its best to come up with a plausible solution and then tries it out. The only problem is that it is extremely improbable and consequently takes enormous amounts of time (evolution seems to get around this by working on a humungous scale and taking an enormous amount of time!)

      It always seems to me that what new age programming 'gurus' are groping for is intelligent computers. People have been trying to do that from day one - with abosultely no success (in the HAL sense). Of course, if you really could make a computer intelligent, you wouldn't need to program it.

    16. Re:This is an interesting concept... by buddyjones · · Score: 0

      Take a look at my post on Amorphous computing. Folks at MIT are actually trying this kind of thing.

    17. Re:This is an interesting concept... by togofspookware · · Score: 1

      // Why have a computer guess at it when we KNOW?

      Tee-hee! Your code looked a little bit familiar to me ;-)

      Well this seems to happen all the time, already. For instance, in an OO language like Ruby, you might have an object with a certain method that you want to call, and you know that you want to call that partular method. But when you say "obj.amethod", the VM'll have to go through and find the method called "amethod", depending on what type of object it is, even if you know when you call it exactly which chunk of code you wanted to call, and this is what allows 'a_int.to_s' to behave differently than 'a_rock.to_s' (what's this called? a "virtual function"?). So this is just a higher level of abstraction. You didn't have that in C. I think what he's talking about is just abstracting more.

      What would be nice would be if you knew exactly what you were doing, you could give the machine more explicit instructions to make it more efficient, but if you weren't, you could just throw something fuzzy at it. Like in C++ where you can specify if a function is virtual or not.

      I think Perl6 is supposed to address this issue.

      --
      Duct tape, XML, democracy: Not doing the job? Use more.
    18. Re:This is an interesting concept... by Anonymous+Hack · · Score: 1
      But we can. When you write a paragraph of text in HTML, you don't say "turn on these switches and those switches such that it indicates that we are pointing to a location in memory that represents a paragraph", you say "here is a paragraph, here's the text in the paragraph". You can make an environment where you can say "here is a rock" (but until we get better at chaos, it will look and act at best almost, but not quite, like a rock).

      I think what's significant here is how something gets further and further removed from the "programming" he's talking about. Sure in HTML you can do that. In Microsoft Word it's even easier - open up your clip art directory, insert rock.bmp, fin. But how is that programming? That's using the user interface that the programmer has developed. He could be talking about some kind of AI where if the user wants a rock he says "i want a rock", and then the AI asks him more and more specific questions about the rock so it can adjust its properties to make it look more or less how the user intended. But how is this "phenotropic programming"? This is artificial intelligence, and idea that's been around for as long as we've been using machines.

      And then on top of that, he wasn't talking about a rock per se, but about protocols. Let's look at the HTTP protocol as an example. Now instead of doing socket() open() fprintf("GET HTTP/1.0 /") we just have a bajillion bytes of data. No concept of one computer being seperate from another. This is almost impossible to conceptualize anyway, because we're so stuck with the idea that we need TCP/IP, we need lower-level modem/NIC/communications protocols, etc. But just imagine for a second we have the whole "internet" as one big bunch of bytes and somehow our new version of DNS has found the bundle of bytes that represent the website we want. Now instead of getting the data in a stream we can understand it needs to know the user wants the "index" page in the data blob. So what does it do? Randomly leafs through the data till it finds something that resembles an index page, and just does a memcpy()? This kind of thing is way, way beyond the technology we have today... And i can already see a number of big security holes. If all the data is accessible to everyone for the purpose of the client deciding what each piece of data is supposed to represent, someone could get access to data illegally very easily. That's just the beginning.

      --
      I got a sig so you would remember me.
    19. Re:This is an interesting concept... by Anonymous+Hack · · Score: 1

      I think my problem with understanding these concepts is that i've been doing so much C programming recently. I was doing a lot of Java a year or three back, though even then i had problems with the whole "Factory" idea and so on. I don't like not knowing what a function is going to do when you call it - perhaps i'm just an assembly language programmer at heart :-)

      But you know, i still really can't see how this would be useful on the programming level. Again, it's the interface with The Real World where "fuzzy" things are going to happen, where a user is going to do something weird and unexpected. Once you process and parse that input (perhaps in this "fuzzy" or "phenotropic" manner), what then? He talks about protocols, but have a look at some of my other comments in this thread. I don't see how it would be to our advantage to abstract protocols and start using "best guess" methods to access different chunks of data. What's the end result if we follow this out to its extreme implementation?

      main()
      {
      workOutWhatTheUserWantsToDoAndDoIt();
      }

      Huh?

      --
      I got a sig so you would remember me.
    20. Re:This is an interesting concept... by Anonymous Coward · · Score: 0

      an infinite number of monkeys using MS Word may eventually produce a Danielle Steele novel. But 64,000,000 monkeys aren't going to add to the Book of Revelation in a week, or even a hundred years.

    21. Re:This is an interesting concept... by sjames · · Score: 1

      I suspect you're on to something. The way we program now actually makes paralellism difficult at times. It may be that the way we program provents the use of powerful parallel systems that could handle the pattern recognition.

      Imagine if every function or object was it's own thread of execution and a machine had hundreds or thousands of processors. If a function could 'learn' when it will be called, and when the parameters it will be called with are actually computed so that it could speculatively run.

      In cases where MOST of the parameters are computed and the others known well enough that there are only a few (say 5) possabilities. It may be worth while to compute all 5 in advance and be ready to present the correct one when the time comes. In a sufficiently (and wildly) advanced system, the whole machine state (as opposed to just parts of the CPU) could be speculative. Imagine a filesystem where a function opens a speculative transaction, then either commits or rolls back depending on the actual state vs. the predicted state.

      There is little doubt that branch prediction and speculative execution burns CPU resources, and yet the net result is that the CPU can do more rather than less.

      Once all of that is in place, a natural next step is speculative execution when data is ambiguous, then choose the branch that doesn't crash, or even the one that later best passes a fitness test (like a genetic algorithm).

      All of this looks completely possible even though it is horrendously complex to implement.

    22. Re:This is an interesting concept... by sjames · · Score: 1

      but we programmed it in the first place! We programmed it, so we know precisely what the object is supposed to be, and precisely how to display it. Why have a computer guess at it when we KNOW?

      YOU know because you wrote it. Will you remember in 10 years? Will the file format change? Will your program end up linked against a new library that does things a little differently (documented or not)? Will the person (with his/her own 100 million LOC to worry about) who links your code in realize it?

      Imagine if the Arienne 5's guidance system had 'realized' that shutting down both primary and secondary systems was even more surely fatal than ignoring the 'unreasonable' input and hoping for the best.

    23. Re:This is an interesting concept... by sjames · · Score: 1

      There would be a lot of complex issues to solve with that, but security wouldn't be an especially hard one. If a blob of data's security attributes don't let us see it, it may be safely assumed to not match (since even if it does, knowing that isn't useful if we can't have it).

      All of the data on the net is already in big blob, we just happen to manually select the URLs. There is no logical reason we must do that, just technical issues that would need to be solved. Google represents a departure from that where we provide significant search terms, and google resolves those (with varying degrees of success) into urls. All of the security issues that come up there are simple human error (forgetting to place a .htaccess or an unexpected path of deep links eventually pointing to a document that isn't supposed to be available yet, etc).

    24. Re:This is an interesting concept... by sjames · · Score: 1

      executed in linear fashion on a Turing Machine (which is why I will always be an assembly language programmer at heart)

      You should check out gTuring. Although asm programming and turing programming (not the language called Turing) are at the same level, turing programming is quite different.

      The table of various symbols at the current position and action to take in response (write a symbol and move one to the left or the right) actually looks a bit like a very primitive pattern recognition such as Lanier describes.A machine implementing these ideas would likely still be a sort of Turing machine, but might not be a von Neumann machine.

  12. What about the Irish by RodeoBoy · · Score: 2, Funny

    we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become.

    Oh I am sure a group of say about 15 Irish kids could do it in a year.

  13. Unfortunately... by holygoat · · Score: 2, Insightful

    ... this guy doesn't seem to really know what he's talking about.

    As someone else has mentioned, life in many respects isn't robust - and where it is, it's not relevant.

    For instance, genetic code is mutable - but try doing that with machine instructions. That's why Tierra creatures are written in its own pseudo-machine language.

    If there's one thing that I don't want happening in code, its tiny errors causing almost-reasonable behaviour. Brittle code is code that's easy to debug.

    What he really wants is lots of small, well-defined objects or procedures doing their one task well. If you decompose a design well enough, there's nothing to limit scalability.
    Good design is the answer.

    1. Re:Unfortunately... by Anonymous Coward · · Score: 0

      Rubbish.

      How many of you have experience coding 10 million lines of code? I know everyone around here likes to think they are master coders, but if you churn out more than 30 lines of debugged, documented code a day, you're doing well. In a lifetime, that's what, 250,000 lines of code - an entire order of magnitude less than what we're talking about.

      Brittle code may be easier to debug but it's also inherently more vulnerable to crashing the bigger the program gets. Anything which reduces that brittleness may mean you lose some control but that may well be a worthwhile trade-off.

    2. Re:Unfortunately... by Anonymous Coward · · Score: 0

      He is trying to think outside the box, and laments the fact that the box is so universal that noone else even understands it exists.

      Your comment about machine code shows that you are fixed in a mindset where altering a single bit in a program automatically has fatal results.

      He proposes that we look for a system where a minor change can only have minor results, whether good or bad. That is a fantastic notion! It means that software development becomes much more predictable than it is now.

      I think the guy is a visionary, and the nay-sayers here on /. would do well to carefully think about how much they are currently stuck in their little boxes.

    3. Re:Unfortunately... by holygoat · · Score: 1

      He proposes that we look for a system where a minor change can only have minor results, whether good or bad.

      But consider another system that relies on accurate output from that previous system.
      If the previous system has been found to "work well enough" (because the small errors have only small effects on the output), but those small errors cascade through the system, several steps down the chain (e.g. writing programs using services) you will be getting problems that are inexplicable - emergent results of the combination of erroneous systems.

      The only way to have predictable outputs is to have properly specified execution - the program should do exactly what you intend, not a robust interpretation of what you intend.

      The author suggests flexible pattern recognition for interfaces. This is fine for a situation where it is suitable, such as recognition of real signals. Within the computational domain, however, such flexibility provides far more risk than benefit.

      Evolutionary solutions to problems are often very hard to certify (automatic pilots, for example), because boundary-case analysis is often worthless. If you cannot explain a solution, you cannot rely on it in a critical situation.

      Fuzzy speech recognition good; formal methods on flight computers good; just don't mix them.
    4. Re:Unfortunately... by Anonymous Coward · · Score: 0

      Thats basically what I thought too. One of the major pros of computers is there precision. The downside of that precision is that if some of the things which make up that system are not absolutely correct and precise there can be catastrophic errors. However, precision is a very useful thing to have, and it seems that in many tasks trading off precision for stability is not going to be worth it.

    5. Re:Unfortunately... by sjames · · Score: 1

      Brittle code is code that's easy to debug.

      It might be best to have a switch on the code. Set it for debug and no effort is made to not just crash, switch it off, and it'll do it's best.

      In some cases, nothing (a crash) is better than almost right. In many others, it's better to be almost right than to do nothing. Consider, you launch a satellite. Given a choice between an orbit a mile too high, and being blown up by the range safety officer if the guidance system hits a bug, which is better?

      There are many somewhat less dramatic examples as well. You are editing a large document. Would you prefer for your word processor to core and die, or say "a wierd error has happened, shall I attempt to save to a tmp file before restarting?".

      What we really want is 100% bug free programs that never do the wrong thing. Decades of experiance and flavor of the day programming and QA methods tell us that we might as well rub a lamp. Robust systems are the next best thing.

    6. Re:Unfortunately... by sjames · · Score: 1

      Fuzzy speech recognition good; formal methods on flight computers good; just don't mix them.

      It is worth noting that although formal methods on flight computers are theoretically capable of taking-off and landing a plane, it is forbidden for commercial flights. F.A.A. regulations require that take-off and landing be handled exclusively by error prone but robust biological neural nets.While offloading to formal methods on flight computers is permitted in other phases of flight, it is not required.

  14. Read it couple days ago by f00zbll · · Score: 2, Interesting
    Most of what was stated is "pie in the sky" idealism. Get real, it will take a long time for programming and software development to get to the point where it works elegantly the way he describes it. I have no problems with reminding people "hey, lets try to improve how software is developed." Like those of us in the trenches don't realize how much of a mess it is most of the time. We can't get from point A to point M without going through all the painful intermediate steps.

    I seriously doubt nature came to the elegant design of 4 base pairs overnight, so let's work hard at making it better w/o throwing a pile of dung on people's face. After all, they are the ones who have to build the pieces to get to that point.

    1. Re:Read it couple days ago by Anonymous Coward · · Score: 0

      I have been in a meeting where a representative of a large (aerospace) company claimed that "it is completely normal that is dumps core. All UNIX programs dump core. It is normal. You should not complain about what is normal" (imagine a french accent).

      Is he right? Hell, no. But the scary thing is he honestly believed he was right, and that crashing programs are normal.

      The author of the article had some very good points, and I'm very happy there are people thinking about this.

  15. Lanier? by Anonymous Coward · · Score: 0

    That bastard tried to kill President Sheridan, and then ran off!

  16. "Robust" versus "goal-oriented" by Viking+Coder · · Score: 4, Interesting

    I used to like this guy.

    The problem with the kind of system he's talking about is that the more robust you make it, the harder it is to change it's behavior.

    Take the cockroach, for instance. It is damned hard to train 100 of them to work together to open a pickle jar.

    That's because a cockroach is extremely robust at being a cockroach, which has nothing to do with teaming up with 99 other cockroaches to open a pickle jar.

    I don't believe nature had a design for each individual life form, other than to be robust. That doesn't give us any particular insight into how to both design something robust that meets a specific goal, which is the point of almost all software.

    Once you get to the point where the specifications of each component are as exact as they need to be to meet a specific goal, you're lacking exactly the kind of robustness that he's describing.

    What he's really saying is that entropy is easy to defeat. It's not. Perhaps there will be easier ways to communicate our goals to a computer in the future, but the individual components will still need to be extremely well thought-out. I think it's the difficulty of the language that makes symbol exchange between a human and a computer difficult - the fact that the human needs an exact understanding of the problem before they can codify it isn't going to change.

    --
    Education is the silver bullet.
    1. Re:"Robust" versus "goal-oriented" by Anonymous Coward · · Score: 2, Insightful

      Exactly.

      I don't want my computer to be fuzzy and robust. I want it to be precise and brittle. I don't want computers to become "life forms". The whole point of the computer is to solve problems, not to be a little organism that "mostly works". Life forms already exist.

      That's what I hear all these "visionaries" talking about: they want to make computers operate like the human mind, but they miss the point that we ALREADY HAVE the human mind! We know how it can solve amazing problems quickly, but can also fail miserably. Why do we focus on this, and not on making computers simpler and more effective tools!

      It's good to always question the design of our computers. The stored program concept, files, all that stuff is arbitrary. But let's not miss the point that computers are tools, assistance, calculators, etc... they aren't brains and shouldn't be.

    2. Re:"Robust" versus "goal-oriented" by sjames · · Score: 1

      NAture's designs are quite programmable. The more complex the organism, the easier it gets to program in some sense. Many experiments have shown that simple feedback involving positive and negative feedback (for example food and shock ) can program a mouse to do anything at all within it's capabilities, even if that behaviour would be counter-survival in the wild.

      If you want cooperative agent behaviour, look at ants.

      Our own central nervous systems demonstrate that principle. Each layer operates through a combination of inhibition of the lower level and manipulating the lower level's inputs. The higher levels can even train the lower levels for specific tasks by making crude attempts until the better suited lower level learns and takes over. This is seen in learning to ride a bike, drive, or catch a ball. It even happens with frequently used passwords or phone numbers. The lower levels are quite robust, and can even surprise us by continuing to function even after higher function is lost to injury or disease.

    3. Re:"Robust" versus "goal-oriented" by sjames · · Score: 1

      Actually, most people do want computers to be more like a human mind, but not completely. We want them to be intelligent enough to do The Right Thing when encountering unexpected input. We want them to be able to handle complex input that we have difficulty fully characterizing.

      We do not want them advanced enough to have their own agenda or psychological needs. We don't want them advanced enough to expect to be paid for their efforts or to be bored with their job.

      Currently, we employ human minds for these tasks. It's not the sort of job one aspires to, it's the sort one ends up with. If we are to ever have a society where everyone enjoys their work and derives satisfaction from it, we must have machines ready to do the boring and unsatisfying things for us. Nobody ever says 'When I grow up, I want to be the person that packs power cords into the battery compartment of radios at the factory!'.

      A significant number of people want them to be embedded in the human nervous system. A 'calculator' becomes part of an embedded system that cause you to just know the answer instantly. That interface will likely require the pattern matching and learning capability just to successfully infer what the conscious mind wants it to do. We will even want it to 'understand' when we don't actully want to know the answer.

      It might be that a hybred approach is best. Precice and brittle systems wrapped by pattern matching interfaces.

  17. and another thing by Anonymous+Hack · · Score: 3, Insightful

    His comments don't seem to make any sense with regard to the way we, as humans, actually view The Real World either:

    So, now, when you learn about computer science, you learn about the file as if it were an element of nature, like a photon. That's a dangerous mentality. Even if you really can't do anything about it, and you really can't practically write software without files right now, it's still important not to let your brain be bamboozled. You have to remember what's a human invention and what isn't.

    Of course a file is a human invention, but it's also a concept without which NOTHING would work - not just computers. A "file" is just an abstraction of a blob, and i mean that both in the sense of a "blob" as in "a thing" and as in "Binary Large OBject". It's a piece of data that represents something. That's exactly the same thing as looking at a house and saying "that's a house" or looking at a car and saying "that's a car". It's just a way to categorize a bunch of photons/atoms/whatever into something we can readily communicate and understand. This is HUMAN, this is how we reason. If we "saw" the universe as a bazillion photons, we'd never get anything done, because we couldn't "here is a car", we'd be describing each photon individually, which would take up millions of human lifetimes. It's a human limitation, and i don't see any way that we could just up and ignore it.

    Don't get me wrong, i think what this guy is talking about is fascinating, but i also think it's got more of a place in some theoretical branch of math than in real life development.

    --
    I got a sig so you would remember me.
    1. Re:and another thing by JohnFluxx · · Score: 1

      There's lot of places that we use files where we don't have to.

      Take libraries for example - why are they in files? Why not put all the functions in a database? Fully indexed, and cross referenced. When you need new functions, just download them.

      Same with programs. Why not just make every program a function? That would make it a lot easier to manipulate the output and input (This is actually close to a project I've been working on for some time.)

    2. Re:and another thing by Anonymous+Hack · · Score: 1
      Take libraries for example - why are they in files? Why not put all the functions in a database? Fully indexed, and cross referenced. When you need new functions, just download them.

      That's a red herring. How do we store the database? As a file. What is a file? An indexed, named set of blocks on a storage medium. But that wasn't my point. My point wasn't that we couldn't use a DB or some other way of accessing our data, my point was that the concept of a "file" is just a way of categorizing data. It's semantics - you could call a DB table a "file", you could call a single field in the DB a "file", it wouldn't make any difference. You still use the data in a "blob" format that arbitrarily represents something useful. I think what he was trying to say was that data shouldn't be stored in any format at all - that it should just exist randomly and in and of itself, and our program should at run-time determine what the random data is supposed to be and somehow use it in some way. "Just like nature". Except in real life we isolate connected atoms (in the sense of "small things", not physics/chemistry atoms) into arbitrary groupings aswell. It's a conceptualization we are required to make in order to create, reason, and communicate.

      --
      I got a sig so you would remember me.
    3. Re:and another thing by tigersha · · Score: 1

      The thing is that the data is stored as a 'blob'. Perhaps we should call it an 'object' but that term is so overloaded that I will rather call it a blob.

      Files are an abstraction of the current storage hierarchy that computers use. A file is storted on disk (or some non-volatile medium) and is opened, read in (perhaps not all,) or written to (or appended to). And then closed. The transfer read and write goes from memory to disk.

      However think now of a situation where memory in a computer is not volatile and you could have all the blobs you need in a sort of large virtual memory space without the read-write overhead. Perhaps some kind of bubble memory could do this or some sort of virtual memory system. Point is, you do not have to use the whole Open and Close semantic thing. You would just change the blob and it would stay there. There is no "Save" and "Load" command, the blob simply "is there".

      Files are currently named by a hierarchical naming system. With a memory-blob archtecture they would still need to be named, but not all of them. For instance, a blob might have refernces to other blobs that are only used by itself but which do not have individual "names" something like temp files.

      There was a discussion on Slashdot a while ago about radical UI's. there was a reference about a Word Processor that did not use files, called Yeah Write. Search on google and download the thing and play with it, its quite small.

      The program does not have a save command. You have a set of letters and you just click on it and edit it. Its always "there". Its an interesting experience. Of course, behind the scenes it gets saved, but the user does not see it like that. Try it. I found it a eye-opener (and over-cute, alas).

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    4. Re:and another thing by Anonymous+Hack · · Score: 1

      Ahh, but this is user interface design, not code design, n'est-ce pas? That's a point i conceded further up in the comments. I can totally see the use of "fuzzy" logic or "pattern matching" in user interface, or just being innovative and trying something different... But it doesn't change the way the vast majority of a system is coded. At best, perhaps, we'd see some kind of "pattern matching" scripting language (not regex) that sat on the top of the application and could customize an interface and "grow" naturally.

      --
      I got a sig so you would remember me.
    5. Re:and another thing by mamba-mamba · · Score: 2, Insightful
      Don't get me wrong, i think what this guy is talking about is fascinating, but i also think it's got more of a place in some theoretical branch of math than in real life development.
      Actually, I think HE sees it as something that has limited utility in real life development, too. I think he's just trying to emphasize that things such as disk files are computer science constructs, and there MAY be Another Way. From the interview, I get the impression that his underlying fear, though, is that a dogmatic CS curriculum with in-curious students will fail to discover the Next Great Idea in computer science.

      On the specific case of files, one thing he may be discounting, however, is that we ended up with disk files by choice. I'm not sure what the criteria were for making the decision, but other ways of arranging data on a magnetic disk (and tape) were used in the old days, and somehow, files and file systems ended up ruling the day. It may just be a waste of time to try the old ideas again. I mean, you wouldn't build a square wheel just because you think that we may have settled too quickly on round ones...

      Anyway, this thread is dead, so I'm probably wasting my keystrokes.

      MM
      --

      --
      By including this sig, the copyright holders of this work or collection unreservedly place it in the public domain.
    6. Re:and another thing by Anonymous Coward · · Score: 0

      I read it :-) I agree. I think there is a lot of pressure on universities nowadays to produce "workers", rather than "thinkers", so their IT curriculums lean more toward "how to do the latest thing in Java" instead of "why is something structured like this in the first place and how could it be different?" That said, i'm hardly a prime example, because i dropped out of college due to getting stuck with all the obligatory Math topics that i thought had no relevance to a job in IT. But then i'm not really your typical IT geek, perhaps closer to a philosophy geek who happens to be a programmer at work. I think a lot of new grads aren't geeks at all. I don't know. I need to sleep hehe

    7. Re:and another thing by sjames · · Score: 1

      How do we store the database? As a file. What is a file? An indexed, named set of blocks on a storage medium.

      Why? Why not store it in the VM without any intrinsic on media structure? A file is a serialized object. While serialization is important, when we should actually do it is an open question. According to most OSes, the answer is allways, we de-serialize it when we want to use it. In other OSes, the answer is only if we must in order to interoperate with legacy systems (see eros).

      Modern OSes have moved a bit in that direction. Linux maintains a cache of directory entries it has accessed before (the dentry cache). Inodes are cached as well through a different mechanism (even though directories are themselves kept in inodes). It is an improvement, but it's interesting that there are several single object type cache mechanisms in the kernel rather than a single generalized mechanism.

      Thought along these lines may or may not lead anywhere, but if the questions aren't asked, we will not only fail to improve our technology, we won't fully grasp what our technology does now. Even if the file is the best way to manage data, we are still limited if we never ask what, exactly, is a file anyway and why do we need them.

    8. Re:and another thing by Anonymous Coward · · Score: 0

      Anyway, this thread is dead, so I'm probably wasting my keystrokes.

      Actually you saved me some keystrokes. I was going to chime in with one of the points you made.

  18. So many errors... by holygoat · · Score: 1
    Just picking one...
    The important thing to look at is how files became the standard. It just happened that UNIX had them, IBM mainframes had them, DOS had them, and then Windows. And then Macintosh came out with them. And with the Internet, because of the UNIX heritage, we ended up thinking in terms of moving files around and file- oriented protocols like FTP. And what happened is that the file just became a universal idea, even though it didn't start out as one.

    Macintosh launched January 1984 (link).
    Windows 1.0 released November 1985 (link).

    Not to mention that what he's saying is waffle... where do they dig up these guys?
  19. My favorite quotes by ckedge · · Score: 2, Insightful

    Virtual reality-based applications will be needed in order to manage giant databases

    "Phenotropic" is the catchword I'm proposing for this new kind of software.

    Oh, those are good signs.

    And we're at the point where computers can recognize similarities instead of perfect identities, which is essentially what pattern recognition is about. If we can move from perfection to similarity, then we can start to reexamine the way we build software. So instead of requiring protocol adherence in which each component has to be perfectly matched to other components down to the bit, we can begin to have similarity. Then a form of very graceful error tolerance, with a predictable overhead, becomes possible.

    Phht, I want my computer to be more predictable, not less.

    we need to create a new kind of software.

    No, what we need is an economic model that doesn't include a bunch of pointy haired bosses forcing tons of idiot (and even good) developers to spew crap.

    And we need consumers to up their standards, so that crap programs can't become popular because they look shiny or promise 100,000 features that people don't need. And we need to get rid of pointy-haired bosses that choose software because of all the wrong reasons.

    In phenotropic computing, components of software would connect to each other through a gracefully error-tolerant means that's statistical and soft and fuzzy and based on pattern recognition in the way I've described.

    Sounds like AI and another great method of using 10,000 GHZ CPUs to let people do simple tasks with software written by morons, instead of simply writing better code and firing and putting out of business the morons.

    1. Re:My favorite quotes by JaredOfEuropa · · Score: 1

      "No, what we need is an economic model that doesn't include a bunch of pointy haired bosses forcing tons of idiot (and even good) developers to spew crap. And we need consumers to up their standards, so that crap programs can't become popular because they look shiny or promise 100,000 features that people don't need. And we need to get rid of pointy-haired bosses that choose software because of all the wrong reasons."

      Indeed. Why do so many software projects fail? Rarely because of bugs (at least from where I am standing). Rarely because it is hard to interface different complex components together (like system integration). Sure it's often hard, but not impossible. Software projects fail because of unreasonable or poorly managed expectations, failing to define the functionality of the software properly, or unrealistic timelines.

      "Sounds like AI and another great method of using 10,000 GHZ CPUs to let people do simple tasks with software written by morons, instead of simply writing better code and firing and putting out of business the morons."

      That is what it sounded like to me. And you know what? Making two bits of software exchange information using a loose protocol, and letting some AI sort out the details, isn't all that hard to realise. This guy might well make that happen. But! for this to be any use, the systems will have to understand the data as well as receive it properly. The system will still have to know what to do with, for instance, a record of an on-line order transaction. It needs to be told by us, by programming to make it do the right thing. And that is the hard part of system integration: not the exchange of information, but dealing with the often slightly different meaning the various systems give to a similar piece of data. I don't see AI or genetic algorithms solve that problem anytime soon, and when at last they will... the focus will shift from programming to training and debugging the initial mistakes the AI will make, and that process may prove just as hard as programming in the knowledge ourselves.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  20. what is "nature"? by miro2 · · Score: 1

    Basicly, the problem with his argument comes from his vague use of the word "nature." Sometimes nature behaves in such a way so that little changes make a difference. Sometimes it doesn't. It all depends on what level you look at. The same goes for a computer. Change the voltage at a chip pin from 5V to 4.9V and it still behaves fine. Change the value of a key variable, and it crashes. Modify the input to a face recognizer slightly, and it will gracefully recover.

  21. God I'm so tired of that guy by Anonymous Coward · · Score: 0

    A while back it seemed like he was in every single issue of Wired.

    Just goes to show you that genius doesn't guarantee the ability to produce worth.

  22. Did he actually say anything? by Anonymous Coward · · Score: 1, Insightful

    He thinks pattern recognition-based methods like neural networks and genetic optimization are the solution to the complexity of traditional software.

    So do lots of naive people. HE has a fancy new word for it.

    Yes, fuzzy computing has its place -- there are certain applications for which it's much better than traditional programming -- but it took so many millions of years for our brains to evolve to the point where we can use logic and language to solve and express problems. It's ridiculous to think we should throw that all away.

  23. Thank You! by ike42 · · Score: 2, Interesting

    Small perturbations often have disproportional large consequences, as your DNA example illustrates. Paradoxically, as Lanier suggests, complex systems can also be amazingly fault tolerant. This is in fact the nature of complex, or chaotic, systems and some say life. However, we cannot, in general, predict which sort of behavior a complex system is likely to exhibit. Lanier seems to miss this entirely. So while his ideas are intriguing I don't think he has a good grasp of the real issues in designing "complex" software systems.

  24. Get that man a haircut, STAT! by MonTemplar · · Score: 0, Offtopic

    Maybe his thinking is being affected by the 10 millions miles of dreadlocks coming out of his head. :)

    --
    -MT.
  25. 10 Million Lines +, Fine just don't write them all by kingtonm · · Score: 1
    This seems to me as something that we're already trying to do. If you look at the way that we're trying to shift the programming pardigm now we'll see some of the concepts Jaron mentions. The current approach of analyse the problem, abstract it and then solve it on a case by case basis is not wrong, per se. However, we try to write our code for re-use, but all these small pools of answers to problems all reside inside small development groups.

    The answer to all of this might be to role the concept of generative programming, with better pattern matching. Therefore companies can more intelligently apply existing, tested, debugged code to their problems and the problems of others.

  26. Jaron, lose the dreadlocks and get a job. by SmokeSerpent · · Score: 1, Insightful

    Why do we need programs with more than 10 million lines of code?

    Has anyone ever noticed that every time Jaron writes an essay or does an interview he tries to coin at least one new word? Dude's better suited to the philosophy department.

    "It's like... chaos, man. And some funky patterns and shit. Dude, it's all PHENOTROPIC. Yeah..."

    --
    All kings is mostly rapscallions. -Mark Twain, The Adventures of Huckleberry Finn
    1. Re:Jaron, lose the dreadlocks and get a job. by Anonymous Coward · · Score: 0

      Some of you /.er's need to go outside. Stop making snide comments about a fairly well written interesting piece. Some of you coders should perhaps read some philosophy, think about things outside of your myopic view of the world. He isn't advoacating anything, besides a little more free thinking, and a little less authoritative dogma.

  27. Ugh by Anonymous Coward · · Score: 0

    Just looking at his picture and reading his pretentious bio, this guy annoys the crap out of me.

  28. Just plain silly... by rmdyer · · Score: 2, Insightful

    Obviously you "can" write mammoth programs with 1 billion lines of code without crashing. It's the kind of program you are writing that becomes critical.

    Generally, serial programs are the simplest programs to write. Most serial programs control machines that do very repetitive work. It's possible to write serial programs very modularly so that each module has been checked to be bug free. Today's processors execute code so that the result is "serially" computed. Yes, the instructions are pipelined, but the result is that of a serial process.

    Where we go wrong is when we start writing code that becomes non-serial. Threads that execute at the same time, serial processes that look-ahead or behind. Most OOP languages tend of obfuscate the complexities behind the code. Huge class libraries that depend on large numbers of hidden connections between other classes make programming a real pain.

    Mr. Lanier might be right, but I doubt it. Seems to me that a line of code could be as simple as that of a machine language command, in which case we are already using high level compilers to spit out huge numbers of serial instructions. Does that count? I think it does. Scaling code comes only at the expense of time. Most people simply don't think about the future long enough.

    My 2 cents.

  29. Jaron Lanier On Software Design and Phenotropics by rpiquepa · · Score: 2, Informative

    I wrote the following on Dec. 20, 2002 about phenotropics. Jaron Lanier is mostly known for being the guy behind the expression "virtual reality." For its special issue "Big [and Not So Big] Ideas For 2003," CIO Magazine talked with him about a new concept -- at least for me -- phenotropics. "The thing I'm interested in now is a high-risk, speculative, fundamental new approach to computer science. I call it phenotropics," says the 42-year-old Lanier. By pheno, he means the physical appearance of something, and by tropics, he means interaction. Lanier's idea is to create a new way to tie two pieces of software together. He theorizes that two software objects should contact each other "like two objects in nature," instead of through specific modules or predetermined points of contact. Jason Lanier also talks about software diversity to enhance security. Check this column for a summary or the original article for more details."

  30. Jason Lanier's virtual reality by resident-crank · · Score: 1
    Jason Lanier's understanding of the history of computing displays a profound ignorance of anything he finds inconvenient, not to mention his understanding of the sciences from which his latest HypeWord(tm) is taken.

    When Virtual Reality first became au courant, I thought it was almost completely wacko, with the rare exception of a few genuine applications relating to telepresence in dangerous or remote environments. Now that we know he thinks software the size of a planet is a *good* idea, it is impossible for me to take him seriously for any purpose.

  31. WHOOOOSH! by Anonymous Coward · · Score: 0

    The sound of 10,000 slashdotters missing the point.

  32. No, YOU'RE full of it by Pentagram · · Score: 4, Informative

    Who modded this up? A single base change in DNA is almost never fatal. For a start, considerably more than 90% of the human genome is junk that has no expressive effect anyway (according to some theories it helps protect the rest of the genome.) Even point mutations in coding sections of the DNA often do not significantly alter the shape of the protein it codes for, and many proteins are coded for in several locations in the genome.

    True, single base changes can have dramatic effects, but this is rare. As an example, the human genetic equipment is so fault-tolerant that humans can be even born with 3 copies of a chromosome and still survive (Down's Syndrome).

    1. Re:No, YOU'RE full of it by fusiongyro · · Score: 1

      ...more than 90% of the human genome is junk that has no expressive effect anyway (according to some theories it helps protect the rest of the genome.) Even point mutations in coding sections of the DNA often do not significantly alter the shape of the protein it codes for, and many proteins are coded for in several locations in the genome.

      Do you think the DNA started off that way? Or is it possible it's more like RAID for organisms, that it evolved that way simply because it is more fault resistant that way?

      --
      Daniel

    2. Re:No, YOU'RE full of it by dubwai · · Score: 1

      "Who modded this up? A single base change in DNA is almost never fatal. For a start, considerably more than 90% of the human genome is junk that has no expressive effect anyway (according to some theories it helps protect the rest of the genome.)" I already added to this but a single flaw in a program is almost never fatal either. Just as in DNA it has to be an important piece of info. I think tha analogy is a valid counter-argument to the interview.

    3. Re:No, YOU'RE full of it by Pentagram · · Score: 1

      There are many theories as to where junk DNA and other types of bloat comes from and why. More fault tolerance is one, random mutation is another, helping protect genes during chromosome crossover is another, and several others.

      Some DNA seems to be viral, or parasitic - that is, present because it can get itself copied back into new copies of the genome (these sequences may have jumped into our genome from viruses - if so, we are to some degree descended from viruses.)

      Interestingly, evolutionary computer programs produce useless DNA in this way, but bacteria generally have quite compact genomes.

  33. Car Commercial by AltImage · · Score: 1

    Isn't that him in that Nissan car commercial (I think it's Nissan). It shows a shot of him pretty quickly riding in the car with some mild electronic music playing over the top, but I'm pretty sure it's him. Can anyone back me up on this?

  34. You're right by Flavio · · Score: 2

    And that's one of the advantages diploid organisms have, allowing heterozygous organisms for even a deleterious mutation to be able to live normally.

    So in a way this guy's right about nature's built in error tolerance methods. But he still throws around words like "chaos" and "unpredictability" without really saying anything remarkable.

    This is only part 1 of what will supposedly be a series, but this looks nothing more to me than an artist's view of a computational problem. From a pragmatic perspective, it makes obvious observations, weak statements that only cite impressive concepts (out of dynamical systems theory, computer science and biology) and proposes no answers.

    To wrap it up, he suggests the reader should question where Turing, Shannon and von Neumann were wrong. Well, guess what: these were all mathematicians and even though one may question why they studied particular topics, their mathematics isn't and never will be wrong because it's logically sound.

    I'm not impressed.

    1. Re:You're right by sjames · · Score: 1

      Actually, there are some important truths in what he said, even if the expression wasn't totally suited to your tasts and/or communication style. If you recognize those patterns and ignore the errors, the transaction between you and him will succeed :-)

      Imagine if it was easy to write apps that would forgive reletively minor protocol much the same way we can read rough translations and even word for word translations that leave the grammar as it was in the original. We can read a novel and enjoy it in spite of misprints. We can miss a few seconds of a movie and still follow the plot and enjoy it.

      Essentially, he is talking about pattern recognition as a technique to allow software systems to degrade gracefully in the face of errors (or even bit rot).

      For Turing, consider that he created a theoretical machine, and then proved a number of important things about that machine. That does not mean that there is nothing else! PErhaps, technically, it would be better to say 'consider where they were short sited'.

    2. Re:You're right by hal9000 · · Score: 1

      To wrap it up, he suggests the reader should question where Turing, Shannon and von Neumann were wrong. Well, guess what: these were all mathematicians and even though one may question why they studied particular topics, their mathematics isn't and never will be wrong because it's logically sound.

      What Jaron is suggesting is that we consider how their approach was wrong.

      --
      Look out honey, 'cause I'm using technology; Ain't got time to make no apology
  35. theory is very interesting by jdkane · · Score: 3, Interesting
    If we don't find a different way of thinking about and creating software, we will not be writing programs bigger than about 10 million lines of code, no matter how fast our processors become.

    I think if more people get turned onto pure component-based development, then the current object-oriented paradigm could carry us much further.

    You have chaotic errors where all you can say is, "Boy, this was really screwed up, and I guess I need to go in and go through the whole thing and fix it." You don't have errors that are proportionate to the source of the error.

    In a way you do. Right now it's known as try() {...}catch(...) {}throw -or- COM interface -or- whatever other language you might work with that has a way to introduce error handling at the component or exact source-area level, and to handle errors gracefully.

    "protocol adherence" is replaced by "pattern recognition" as a way of connecting components of software systems.

    That would mean a whole new generation of viruses that thrive on the new software model. That would certainly stir things up a bit. Of course any pioneered methadology is subject to many problems.

    But I'm not putting down his theory, just commenting on it. The guy's obviously a deep thinker. We need people to push the envelope and challenge our current knowledge like that. Overall the theory is extremely interesting, although the practicality of it will have to be proven, as with all other new ideas.

    1. Re:theory is very interesting by sjames · · Score: 1

      One of the limitations I see in C++ is that objects are not proper entities, just funny ways avoid explicitly declaring virtual tables. For true entities, it should be possable for me to pass an object to a function
      int myfunc(Object *o); in such a way that linkage is fully resolvable at runtime. It should be possable to have code in the function that calls a method that might or might not exist in the particular object unless I assert (for debugging) that it exists. Otherwise, calling the methor returns an error (like ENOSYS if an unsupported driver function is called). Perhaps even have default methods returning appropriate types that get called instead, or simply throw an exception.

      That is implementable in source code (of course), but it would be interesting to see that as intrinsic. The current approach defies reusability by requiring a complete recompile of libraries if the original developer failed to anticipate even one single method in the virtual class. The alternative is that the function must have knowlege coded in of every object it might be passed (and thus, it's reusability suffers as well).

      The challenges to that approach are debugability (what if the method wasn't found because of a simple typo) and performance (what was a simple dereference now becomes a string search).

      The full power of such a system would be realised when fuzzy method matching is supported along with full transaction support such that rolling back would take care of files, memory, the stack, everything. For full effect, such a rollback should be transmittable in a stream such that if a client rolls back, the server can roll back as well. (Yes, that's a real challenge!)

  36. Re:Jaron Lanier is a patchouli-soaked technofaggot by Anonymous Coward · · Score: 0

    It's the hair.

  37. Crap Artist by mr.henry · · Score: 0, Flamebait

    This guy reminds of Ira Einhorn , the hippie guru who BS'd his way into lots of "adjunct appointments" like Mr. Lanier's page says he has. Lots of companies thought he was some eccentric genius because he said freaky things and dressed weird.

  38. Furthermore: by seanadams.com · · Score: 1

    we will not be writing programs bigger than about 10 million lines of code no matter how fast our processors become.

    You can only drink 30 or 40 glasses of beer a day, no matter how rich you are. -- Colonel Adolphus Busch

    There really is a hard limit to just about everything...

  39. Phenotropic programming = crypto fascist code by Krapangor · · Score: 1

    These guys want to weed out all code which is not perfectly flawless and fullfills 100 percent it's obejctives.
    They want to use genetic meta-programming algorithms to create new code from the old one. But only the "pure code" is allowed to recoded, evolve and grow on. Code with even minor bugs is subjected to oblivion.
    Besides the obvious fact that this "superior" code is an evolutionary cul-de-sac, it's also a crypto fascist agenda which should be not toleranted in the open source movement. Imagine yourself that the code would be humans that people like RMS or Linus Torvalds would never have been bred for their anchestors having a long beard and no shower or even wearing glasses. This is morally flawed, even it's just lines of C sources. And note that Linux would never have reached it's modern state for having lot's of bugs in this infancy.

    --
    Owner of a Mensa membership card.
    1. Re:Phenotropic programming = crypto fascist code by lamp540 · · Score: 1

      It will only be necessary to use "genetic meta-programming algorithms" when we can get no further with intelligently designed programs.

  40. I just checked out his site... by inode_buddha · · Score: 1

    and the full text of the interview. I'm starting to think he's onto something, given such newer areas of research as chaos theory and complexity . For the uninformed, these are the folks who bring you such things as fractal generation and the "butterfly effect". (I have purchased hardcopy/books a few years ago). I hope he will correct me if I'm wrong, but I think that what Jaron's question really is, is "At which point can we not use complex computations/computers to model the "real" world (FSVO $REAL)? If our computational mechanisims and models approach the complexity of the "real", how can we validate our results against a third-party?" Just an idea.

    --
    C|N>K
  41. not that bad... by nuffle · · Score: 4, Insightful

    Give him a break.. He's got some points. And at least he's thinking about real and genuine problems. I see a lot of people commenting with the 'who needs 10 million lines of code?' shtick. Sounds familiar.

    We're going to need to do things in a decade or two that would require 10 million lines of code (measured by current languages), just as the things we do now would require 10 million lines of code in 1960's languages.

    The new languages and techniques that we have now provided ways for us to reduce the apparent complexity of programs. This guy is just looking for a way to do that again. Certainly there is room to disagree with his techniques for accomplishing this, but it is shortsighted to deny the problem.

    1. Re:not that bad... by SmokeSerpent · · Score: 2, Interesting
      We're going to need to do things in a decade or two that would require 10 million lines of code (measured by current languages), just as the things we do now would require 10 million lines of code in 1960's languages.


      Exactly. Just as libraries were created so that we can turn memory allocation into a single call, and just as some newer languages or libraries turn an http transaction into a single call, we will be able encapsulate more functionality as needed to reduce the LOC count to something reasonable. And we can do this without relying on Jaron's magic "chaos" or "complexity" or "pattern recognition" 90's buzzwords.

      Jaron is correct in that, yes, we will reduce program complexity and LOC by describing what we want more broadly. He is incorrect in believing that this requires any machine intelligence "magic".
      --
      All kings is mostly rapscallions. -Mark Twain, The Adventures of Huckleberry Finn
  42. Malbolge is the language of the future? by sam_handelman · · Score: 1

    Sumarry: In order to duplicate the features of a biological organism Jaron Lanier finds desirable, you'd end up with a programming language maybe something like Lisp, but a lot like Malbolge. Malbolge, the programming language of the future, is a free download!

    There's something about the way complexity builds up in nature so that if you have a small change, it results in sufficiently small results; it's possible to have incremental evolution.

    Firstly, that simply isn't true at all; as someone who understands both computer programing and genetics (my degrees are in Biochemistry and Computer Science) I can say with confidence that this is all hogwash.

    The same is true of most of what supposedly imports biological concepts into computing. Neural nets and genetic algorithms are very useful tools, and they have been inspired by what we see in nature, but in terms of how they really function, under what circumstances they function, what sorts of problems they are suited for solving - a neural net is nothing like a real nervous system.

    As a biologist I put it this way - a neural net is a very poor model of a nervous system. Genetic algorithms are utterly dreadful models for natural selection.

    So, in this (utterly stupid) comparison between computer source code and living genomes, Jaron Lanier asserts that a living organism is somehow fault tolerant while a program is not. Let me disassemble this assertion.

    Firstly, a living organism is far larger than any single computer program, even windows. Living organism == computer is far more appropo. The Genome (analogous to source code) of a living organism runs up to the billions of bits; the proteome (the concentrations and structures of the proteins that do the actual work of the living organism) would map, even in a single celled organism, to some vastly larger and more complex structure, terrabytes of data at LEAST. You can say, "that's his point!" But this level of complexity is CONSTRUCTED FROM SMALLER PIECES; individual genes. We can duplicate the complexity of a living organism in a computer without duplicating the complexity of a living organism within a single program. If each program can be as complex as an individual gene (thousands of bytes? Easy!) and produce executable code as complex as an individual protein (this is actually harder, but I believe it is possible) than your program construct can mimic the level of complexity of a biological organism.

    So, how IS it that all of this complexity (a human organism) is bug free, while a computer program is not?

    Firstly, the human organism is NOT "bug free." There are all sorts of inputs (chemicals) that cause aberrant behavior of every sort. Bugs happen with some random frequency, anyway. Over time, even if nothing else did, the accumulated errors in your biological processes would kill you.

    Secondly, to the extent that the human organism is, in some abstract sense, more fault tolerant than a computer program, recall that the human organism is NOT designed (warning: science in progress. All creationists are asked to leave the room.) BILLIONS OF YEARS of trial and error have gone into the selection of the protein sequences that give us such problem free use (or not!) every day of our lives. With a development cycle that long, even Windows could be bugfree.

    Thirdly, there is another consequence to our having evolved (rather than having been designed) - inefficient use of memory. Most of the "junk DNA" probably serves some purpose, but brevity is barely a consideration at all (in a larger organism, such as you are I. In fast replicating organisms, such as bacteria or yeast, there is far less genetic packaging.) We are extremely tolerant to mutations in these regions of junk DNA - there are analagous regions in a computer memory were substitutions are tolerated; bit flips in the picture of autumn leaves displayed as my desktop would not crash my machine - in fact, this image is a bitmap, I wouldn't even NOTICE the changes. If we applied natural selection to our computer programs, some regions of high-fault tolerance code might eventually evolve into something functional; my desktop picture might evolve into awk (Okay, now I'm being silly.)

    In something which has been DESIGNED, you short-circuit all of that. The code of your computer program is not filler, pictures or stuffing; it doesn't, it CAN'T share the properties of these dispensible DNA sequences - it isn't dispensible! There are a number of single-nucleotide substitutions (equivalent to flipping a single bit) that will kill you stone dead! Your computer program is not less fault tolerant than the core sequences of the ribosome, the structure which you use to convert nucleic acid sequences (your genome) into protein sequences (proteome.)

    Now, it is true, there are other places in your DNA where a bitflip will alter some chemical constant in a non-fatal (possibly beneficial) fashion. Might we not duplicate this property in a programming language? A computer language with this property would have certain desirable properties, if you wanted your computer program to evolve toward a certain function through a series of bitflips. Indeed, there are computer languages which have this property, to some degree or another. LISP does. Do you know what programming language really EXEMPLIFIES this property? Malbolge.

    Who wants to program in Malbolge? Raise your hands, kids! A protein does one job, instead of another, because it has affinity for one substrate/chemical, instead of another. In a computer, you'd duplicate this sort of thing by fiddling with constants, and not by changing the source code at all. Small, low order changes in these constants would have incremental effects on what your program actually did.

    Malbolge duplicates this property very nicely.

    To me, this complacency about bugs is a dark cloud over all programming work.

    Personally, I believe that this problem is fundamentally solved, and has been for some time. Heap on more degrees of abstraction. If I wanted to write a program that would take 1 billion lines of C-Code, I'd write a higher level language, and write in that, instead.

    --
    The good and new comes from no quarter where it is looked for, and is always something different from what is expected.
    1. Re:Malbolge is the language of the future? by Anonymous Coward · · Score: 0

      ... recall that the human organism is NOT designed (warning: science in progress. All creationists are asked to leave the room.)

      You FUCKING troll!

      May I remind you that evolution has yet to be proven; scientists only cling to it in abject, cowering fear of the alternative - special creation. Evolution is far more a religion than belief in an intelligent Designer.

    2. Re:Malbolge is the language of the future? by Anonymous Coward · · Score: 0

      Oh shut up

  43. Reason for Bugs by Anonymous Coward · · Score: 1, Interesting

    Would you buy a CPU which is full of bugs?
    No? Why? Because it wouldn't be very usable?
    Would you use software which contains bugs?
    Yes? Why? Because it remains usable...

    It is possible to write bugfree software,
    but there's no need to for the average joe market.

  44. My thoughts exactly by 0x0d0a · · Score: 1

    Seriously, has there ever been a need to write a program of 10 million lines?

    Exactly. I don't care how many lines of code there are in the kernel or glibc or glib or gtk or Xlib or SDL -- I happily use them without worrying about them. If you sum all of them up, you can probably get some insane LOC count...but it's modularized.

  45. universe uses just a few lines of code by bigpat · · Score: 1

    The analogy to the universe is important. The whole approach to physical sciences has been to simplify the rules (analogous to the lines of code) to as simple equations as possible. So the universe can be described with just a few equations with the rest just being data.

    I think Jaron is onto something, but his conclusions are off. I think current methodologies are just where we need to go. Keep the code as simple (small) as possible and put the data in some database or something.

    Just think of Microsoft... our favorite whipping Mega Corp... when separate groups work on millions of lines of code and try to piece it all together then the result is not always ideal. But when the goal is simple code and simple protocols then we get better software.

    1. Re:universe uses just a few lines of code by Anonymous Coward · · Score: 0
      The analogy to the universe is important. The whole approach to physical sciences has been to simplify the rules (analogous to the lines of code) to as simple equations as possible. So the universe can be described with just a few equations with the rest just being data.


      Ever wondered where the source of the universe-program is stored?
    2. Re:universe uses just a few lines of code by bigpat · · Score: 1

      "Ever wondered where the source of the universe-program is stored?"

      nope

  46. Programming evolution by ites · · Score: 2, Insightful

    There seem to be only two ways to break the need to write code line by line. Either it evolves (and it is possible that evolved software will work exactly as this article suggests, living off fuzzy patterns rather than black/white choices). Or it is built, by humans, using deliberate construction techniques. You can't really mix these any more than you can grow a house or build a tree. We already use evolution, chaos theory, and natural selection to construct objects (animals, plants), so doing this for software is nothing radical.
    But how about the other route? The answer lies in abstracting useful models, no just in repacking code into objects. The entire Internet is built around one kind of abstract model - protocols - but there are many others to play with. Take a set of problems, abstract into models that work at a human level, and make software that implements the models, if necesary by generating your million line programs. It is no big deal - I routinely go this way, turning 50-line XML models into what must be at least 10m-line assembler programs.
    Abstract complexity, generate code, and the only limits are those in your head.

    --
    Sig for sale or rent. One previous user. Inquire within.
  47. I'm fairly sure you're wrong by 0x0d0a · · Score: 1

    This guy obviously knows nothing about biology. A single base change in DNA can result in mutations that cause death or spontaneous abortion. As little as a change in a single 'character' can be lethal. That's a pretty "small change" that results in a pretty big "crash."

    I think most of the data in DNA requires multiple base pair changes to have a major impact -- I'm not a biologist, though. Otherwise, radiation from the Sun would mutate the bejeezus out of everyone all the time.

  48. I'll go you one better by 0x0d0a · · Score: 1

    You're certainly right that it's hard to change, but I don't even think we need to go that far. It's hard to *make* a system like this. Nature used brute force, a massive computer, and bazillions of years to do it, and didn't get to specify much about what came out the other end.

  49. Liability by wytcld · · Score: 1

    A friend recently got a $90 plane fair to France. Business class. And got bumped up to First because it was oversold. There was a computer error, but the airline had to honor the offer. Much of that flight was sold at the $90 price.

    Right now, if that error's there, and the sale goes through, you can in principle track it back to whose error it is. If it was in an agent's system rather than the airline's, for instance, the airline could recover from the agent. So in Jaron's tomorrow, when things are matched by patterns instead of precisely, and an error happens, is it the case that no one exactly is responsible? Would you want to do business with someone whose systems just approximately, sort of matched up with yours? If yours are running on rough approximation rather than exactitude too, can a determination ever be made of ownership of a particular error?

    Maybe it will all balance out. Maybe large errors will become less frequent as Jaron claims. But small errors, in being tolerated, will become an overhead of corruption. Perhaps a predictable overhead, as he claims, but what's to keep it from inflating over time, as programming practices become laxer because nobody can really get blamed for the errors any more, because they'll be at best even more difficult to localize than now, and at worst totally impossible to pin down?

    --
    "with their freedom lost all virtue lose" - Milton
  50. Right about one thing by still_nfi · · Score: 1

    This is a thought that had been crossing my mind recently. I mean, look at the games industry. Look at the complexity of games as they have evolved over the last 10 years or so. The manpower to produce a commercial game now is exponentially more than it was then. Programmers, testers, artists, 3D designers, musicians, management....there is already a barrier to complexity there...cost, time to market, talent?

    Complexity is definitely becoming a problem but arbitrarily picking 10 million as the magic barrier is a little naive. He discounts the evolutionary process of development. Tools, languages, libraries get richer every day (slowly).

    IMHO, the solution lies in the development of testing tools. When you can write an automated test harness that can fix the bugs that it finds, then we are making progress!

    --
    "I have been around the world and found that only stupid people are breeding" -- Harvey Danger
  51. That tired old cockroaches & pickle jar exampl by Anonymous Coward · · Score: 0

    *sigh*

    I thought my life had moved beyond this.

    That tired old training cockroaches to open a pickle jar example has just been beaten to death.
    Let it rest Viking Coder, let it rest.

  52. Reasonable especially for interfaces by markk · · Score: 2, Insightful

    Looking at this I don't see anything revolutionary in what is proposed, just something hard to do. Of course we work hard at signal processing, pattern recognition and clustering algorithms. They are used for everything from Medical Imaging, Radar, Oil Exploration to trying to automatically call balls and strikes. What I see being proposed here would be to look at interfaces between hmm... modules for lack of a better term in a similar way. If you want it is a far out extension of the idea of Object Request Brokers.

    For example, a very large system would have a goal seeking component creating a plan, it would inquire as to what modules are available, look at the interfaces around and classify them (here is where the clustering and pattern recognition might help) and then choose ones which fit its plan. It would then check results to see if this worked closely enough to move it along its plan.

    This implies a database of types of modules and effects, a lower level standard protocal for inquiring and responding, and another means of checking results and recognizing similarity to a wanted state - a second place where the recognition and clustering algorithms would be useful. This is obviously not easy to do...

    The novel "Night Sky Mine" by Melissa Scott comes to mind as an example of this taken way out. There is an ecology of programs that is viewed by "programmers" through a tool that re-inforces the metaphor of programs being living organisms "trained" or used by the programmers to get what they want. I cannot see this being generically useful - many times we really do want a "brittle" system. It is certainly a way to get to very complex systems for simulation or study or games!

  53. Unfair Comparison by xonos · · Score: 2

    i think comparing computer science to nature is a pretty unfair comparison. Nature is analog, computers are digital. You can make computers seem like they are fuzzy recognizing, but underneath it all, it is, it is a very strict set of rules. Also, faults tolerance for an entire ecosystem is very high, but for the individual is very, very low. So if there is a small defect in my heart, the human race will continue without a hitch, but i won't and neither will my family... So putting fault tolerances into software might make an entire system stay up and running, it might behave slightly differently every time it adjusts for an error. After a while it might behave completely differently than what it was designed to. and IMHO, that's bad.

    The reason computers are so powerful and useful is there strict adherence to the rules, and the fact that it should be able to reproduce exactly repeatable results, no matter how often it is ran.

    Nature and computers play two completely different roles in our society, and trying to make one to be like the other seems for non-logical and detrimental.

    1. Re:Unfair Comparison by mechaZardoz · · Score: 1
      You bring out a very good point: that scale and situation are crucial to the degree of fault tolerance.

      Certainly, I would want strict fault-tolerance in certain aspects of mission-critical operations, eg guidance systems.

      What it comes down to is the right too for the right job. For pattern-recognition, yes, sure, apply fuzzy logic and have a wider disrection to administer fault tolerance. And sure, we can put more of the onus on the interface to handle inter-operability (a la XML), but my fear that if this were to be the norm, we would simply relocate the complexity to another application and hide the sins of poor coding elsewhere.

      I submit that we should strive to make code more efficient (and not rely on faster hardware to pick up the slack). And pare down the size of bloatware.

  54. Conservatism by Anonymous Coward · · Score: 0

    Amazing to read such conservatism from people working in such a dynamic, versatile industry, who owe their very jobs to people considerably more imaginative and gound breaking than they are.

    The very visionaries you castigate *invented* the computer partly because they were interested in whether machines could simulate human thinking.

    People like Turing and Von Neumann for example.

    You wouldn't even have a computer if it wasn't for these 'visionaries' who 'want to make computers operate like the human mind'.

    "They aren't brains and shouldn't be. ." Nonsense. Computers pretty much can be whatever we want - that is the whole essence of the Turing Principle.

  55. nice dreads by Anonymous Coward · · Score: 0

    I get the feeling that this hippie was smoking a little bit too much of something right before he gave this interview.

    NATURE IS ALL JUST PATTERNS MAN! I TOOK SOME MUSHROOMS AND THE WHITE RABBIT TOLD ME ALL ABOUT IT, MAN.

  56. Re:Jaron Lanier On Software Design and Phenotropic by tamas_simon · · Score: 1

    Mr Lanier doesn't tell us how to do this... hmmm interesting, does his "research" has any results? Think about it. We can have components that communicate with each other not by explicit interfaces like now, but some fuzzy way. I don't find it a great idea.
    Or we can have components which do their work using some more fuzzyness than they use now and keep very strict interfaces. I don't know... It's up to the programmer to use fuzzy logic or AI or whatever.
    Also the underlying hardware will remain binary, very fault intolerant, so with Mr Lanier's thinking shouldn't we design "phenotropic" hardware? Meanning everything in It so far was a dead end street? I don't think so.
    I think he should ellaborate on his idea otherwise he'll be the only one who understands what he's trying to say - in the best case :)

  57. Re:Full of that by noshellswill · · Score: 0

    Actually pad're, he's right & you're wrong. Organisms express powerful monitoring systems to STOMP single basepair DNA errors. Those errors are identified, chopped out and re-built. Fast. When such built-in repair systems fail, an organism dies in it's "native" environs. 'Course that also explains why evolution occurs only at the fringes.

  58. ignoring non-linearity by bokmann · · Score: 1
    There's something about the way complexity builds up in nature so that if you have a small change, it results in sufficiently small results; it's possible to have incremental evolution.


    This completely ignores the kind of non-linearity we mean when we talk about chaos theory. Small changes in initial conditions can create huge variations in output, which is why it is incredibly hard to predict the weather, the random motions of a billiard break, or even the exact positions of the planets thousands of years from now.

  59. A gay white man with dreadlocks gets the funding by Anonymous Coward · · Score: 0

    This dude is so far divorced from reality that he doesn't even realize how non-virtual his virtual reality is. He thinks there are no bugs in real life. He thinks any bug in computer programs (he isn't much of a programmer) can crash the net. Maybe a serious bug in Exchange, IIS, or SQL Server can slow it down a bit, but a very minor problem, like a loose wire on a 747 can kill hundreds of people. A security oversight in the same plane can kill thousands. On a less morbid note, has anyone here ever had their car break down? I've got a linux system running gnome using gcc, star office, mozilla, which is computing with websites, chat servers, and clients, email, and more on windows, linux, and other servers. I'd say that's more than 10 million lines of code all working together.

  60. stating the obvious by g4dget · · Score: 1
    Yes, of course, we want our software to become adaptive, to be based on pattern recognition, to be able to make intelligent inferences and decisions by itself. And that's what a large number of people in computer science and related disciplines are working on: pattern recognition, rule based systems, logic programming, Bayesian networks, etc. And when people figure out how to apply the techniques we already have in order to simplify software, they do apply them.

    I somehow fail to see what Lanier is contributing to any of this, other than picking up some buzzwords and trying to make a name for himself.

  61. Complex software by roman_mir · · Score: 1
    I suppose the real difference between a software project and nature is that in nature nothing is preconcieved and there are no deadlines. Nature is a chaotic system where there is no plan, there is noone (except for environment of the system) that dictates what the business requirements are.

    The problem with software design can be traced to the problem of a business design that we are trying to describe in our software. And business is a result of evolution (business evolution) so it is just as complicated as some biological systems.

    The problem with software implementation is that all business rules need to be converted into machine language with full understanding of effect of every line of code upon every other line of code (good coding practices and different paradigms help with that), of course we also have deadlines that nature seems to know nothing about. I suppose that to get one feature right the nature can spend thousands and millions of years, and that feature still was not designed, it was evolved. With software we do not have that kind of luxury.

    We cannot yet compare software design to evolution, we can only compare software design to hardware design that is also done by humans. And hardware is complex and software is complex, only for software there are more expectations - it always solves a new problem, where for hardware the problems are limited - increase speed, increase memory size. Software seems to be the most complicated out of all artifficial systems ever built by humans.


    Will we ever simplify the way software is written? Will the simpliffication be based on pattern recognition? Will software have properties of nature - will it be satisfied with similar results as opposed to precise results? I have problems with that - software has to describe a business system and if it does not describe a business system precisely than we are changing business rules. I don't believe that business software will be written to accept results that are just close enough unless the business specifies that as a requirement. Normally (from what I've experienced in 5.5 years of professional programming, and in total of 14 years of programming) business requirements are quite precise and if they are not, they are incomplete.

    Creating another paradign or another language for software development only seems to delegate the problem and shift it from one layer to another, but at some point the code has to be written (some software 'architects' like this delegation thing, but they forget that it has to be written somewhere, you cannot delegate infinetely.)


    I believe in componentized software systems with well designed APIs between them, nothing more nothing less. Good luck.

  62. He's 100% right by MeddlesomeKids · · Score: 1

    As long as day to day coding is made up of tasks like preventing one-off errors and null pointer references, then the really big and great programs like an artificial intelligence or a _full_ natural language interface, will never be written. Computers are virtual machines - their ability to model anything is their amazing strength - so, why as coders, have we chosen to make the development of code so brittle? Perhaps we didn't "choose" this, perhaps we just failed to choose something else, but we code in the fashion that we do because we made it that way, and as Jaron Lanier points out, it doesn't have to be that way. Coding is the rendering of ideas into machine executable form. The process of coding is ours to construct. Fast proceessors, cheap memory and storage and ubiquitous network connectivity are around the corner, if not here today. These have traditionally been the shackles that held coding back. But they are gone now (or will be soon), we can change the way things are done.

  63. Can do some of this already (and other reactions) by hobo2k · · Score: 1
    pieces of the universe connect together by recognizing each other's patterns
    Isn't that what Component based software engineering does? e.g. MS's COM, or the 'interface' keyword in Java. Pattern recognition is easy: just call QueryInterface.

    It's much more efficient to make it error-intolerant
    Completely agree! In other words: check your parameters and function ret vals for validity! Not doing this is just lazy and dangerous. Perhaps a compiler could issue warnings whenever a parameter is used without a validity check first.
    there's a danger that you lose the faith that used to exist in prior generations: that computing could get better at a fundamental level
    Funny, on the first day of Intro CS 1004 my professor said, "There is no silver bullet. Programming is hard and always will be."

    And Lanier's comments that nature is robust? no way. A divorce is an OS crash. The extiction of a species is the obsolesence of a program. A still born baby is Windows ME. The universe has bugs.

  64. BS, MS, PhD by TheLink · · Score: 1

    Bullshit, More Shit, Piled higher and Deeper.

    Doh, I can spout BS too.

    If he's talking about following nature then he should know that nature tends to reuse old code a lot. So what if grocery carts/filesystems are dumb ideas, evolution won't throw them away if they aren't totally terrible. So you don't write 10 million lines from scratch. You write a little every now and then.

    The main problem with scaling is copyright and patent laws. Such artificial monopolies (especially with those 120+ year terms) mean you often have to reimplement stuff from scratch even if a decent solution already exists.

    Why is the article associating lines of code with complexity? Complexity has little to do with lines of code. And why is he talking about complexity and big programs almost as if they are good things? And why does all this seem so apt coming from a Sun Java site? ;).

    As for one bug killing an entire complex system. No that doesn't happen on my system or I'm sure many slashdot readers.

    If he really believes what he's spouting, then he really needs to learn how to design systems.

    Has he _really_ any idea how complex existing real world systems are? And why they still mostly work? If my web application has a bug, that doesn't kill my webserver, RDBMS, etc. Neither does it kill my microprocessor, caches, RAM, northbridge, southbridge, HDD, vidcard etc. If one custom server goes, my web app can still work without it, albeit it could use more CPU and response isn't as good.

    He says: "You don't have errors that are proportionate to the source of the error. And that means you can never have any sense of gradual evolution or approximate systems"

    Much software (including Linux) has progressed through evolution (with some leaps here and there).

    I sure hope what he's spouting won't encourage all those idiots to reimplement browsers, clients, servers, RDBMs, legacy systems as one huge "distributed enterprise application".

    Maybe I disagree because my degree is in Engineering not CS.

    But it's like talking about a single blueprint detailing 10 million _different_ moving parts. Sure maybe NASA/JPL can implement those (doubt they would tho), but the rest of us will just have to resort to designs that can be implemented in the "real" world.

    If you want something gracefully error-tolerant, soft and fuzzy and able to do pattern recognition, why don't you just get a dog?

    --
  65. Vague, But Interesting by Fermata · · Score: 2, Insightful

    Jaron's concepts are vaguely stated but still interesting. If you imagine a computer having a central intelligence that is modeled after human intelligence with a certain amount of pattern recognition and iterative learning behavior, there are some potential immediate applications of this.

    A simple example would be the computer's parsing of HTML (or any other grammar/vocabulary-based file format) as compared to a human's parsing of the written word. The human mind has a certain amount of fault-tolerance for ambiguities and grammar-deviations which allows it to make some sense of all but the most mutated input. An example of this would be your own ability to grok most Slashdot posts, however rife with gramer, spelin, and logik errors they may be.

    The computer could also potentially do this to less than perfect input - smooth over the "errors" and try to extract as much meaning as possible using its own knowledge of patterns. It could make corrections to input such as transforming a STRUNG tag to STRONG, since this is probably what was intended and is the closest match to existing grammar.

    Obviously this is a very simple example, but I think this kind of approach could lead to new ways of solving problems and increasing the overall reliability of computer systems.

    1. Re:Vague, But Interesting by burns210 · · Score: 1
      so with this pattern recognition you would no longer need a browser... or more exactly, you have the kernel render all the pages and hav just a frontend for the browser.

      Thise could be carried into office fileformats... having some kind of training of the kernel(comparing the test.doc to a test.txt... all using the same pattern recognition engine! sounds good, now all we need is a sourceforge page! :)

  66. Complete And Total Horseshit. by Bowie+J.+Poag · · Score: 2, Funny

    Real Lessons:

    1) Jarod Lanier is a talented, but vastly overhyped individual. Think of the geekiest person you know. Chances are, that person is better qualified to render a decision than this guy.

    2) No one will ever write more than 10M lines of code.. Yeah, ok. After all, nobody will ever need more than 640K either, right? Come on. Every decade, someone comes up with one of these nearsighted and baseless claims. Its a common trap. Just a million lines of code in a single program would have been inconcievable to someone just 10-15 years ago. Nowadays, its common. Every generation thinks theyre the top of the heap, when in reality, history proves them wrong every single time. Its fact. More importantly, the fact that Lanier doesn't notice this pattern sort of underscores point #1.

    Cheers,

    --
    Bowie J. Poag

    1. Re:Complete And Total Horseshit. by Bowie+J.+Poag · · Score: 1

      doh.

      1,$s/Jarod/Jaron/g

      --
      Bowie J. Poag

    2. Re:Complete And Total Horseshit. by MeanMF · · Score: 1

      Just a million lines of code in a single program would have been inconcievable to someone just 10-15 years ago.

      From what I've seen of the Cobol systems my company used to run, anything LESS than a million lines was unheard of...

    3. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      While I agree that Jaron Lanier is vastly overhyped, I would point out one thing that is essentially correct in what he is saying that he never actually says.

      We need 10 million lines of code to do something today BECAUSE our software technologies are very bad at dealing with abstractions and patterns. We use lots of lines of code to (badly) compensate for the inability of the code to deal with these concepts elegantly.

    4. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      Real Lessons for You:

      1) You are the most overhyped blowhard moron there is. Think of the worst desktop programmer you know. Then hit him with a bus. Chances are, he's still smarter than you are, and still more qualified than you are to even post here. Either get a job or go back to playing with your gimp, gimp.

      2) Regarding lines of code:

      # cat microblogger | wc -l
      298

      Pay attention to the "pattern" that you claim in your post. Now think about Fermat's theorem. Then go eat some more cheese, fatboy, and shut the fuck up.

    5. Re:Complete And Total Horseshit. by Bowie+J.+Poag · · Score: 1



      That last troll was posted by:


      McDaniel, Scott mcdev@mcdev.com, pipebomb@pipebomb.net
      McDaniel Development
      2139 Old Highway 5 South, and..
      637 Riverside Dr.
      Ellijay, Georgia 30540
      United States
      (706) 698-5112


      Feel free to call this troll. He's lives with his mom, and that's her voice in the answering machine message. Every time Mr. McDaniel decides to troll, another copy of his personal info will be posted immediately afterward.

      --
      Bowie J. Poag

    6. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      yeah, that's me alright. you sure did get me. i can sue you for this.

    7. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      so you want people bother his mother ?

      because you're not happy with what he posted ?

      how old are you, 12 ?

    8. Re:Complete And Total Horseshit. by Bowie+J.+Poag · · Score: 1



      For the record, I warned him. He didn't listen.

      Anyway... It's obvious he wants attention, so, i'm merely providing him with it. Who knows? Maybe his special brand of wit and personal commentary sounds better at 3 in the morning when thousands of drunken Slashdotters decide to call him.

      Dumping the personal information of a troll is an effective way to get them to STFU. He knows that every time he opens his mouth, another 800,000 people know who he is, where to call him, and even where they can stop in for a visit. He also knows that he triggers his personal information being dumped every time he trolls.

      Like many lower animals, he'll eventually learn that he can prevent his name, address, and telephone number from being published by simply shutting the fuck up. It may take him a while, but, he'll learn. I've seen invertebrates learn how to unscrew a mason jar---Surely, a troll can learn how to STFU, don't you think?

      --
      Bowie J. Poag

    9. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      I think that you have been taken for a ride. No one cares about his posts except you, and I doubt anyone is going to call him. I know I won't.

      Are you in the seventh grade ? grow up.

      If a troll can learn how to STFU, then why are you still here with your condescending 14 year old insults ? seriously. Posting someone's private information (his mother's phone number ? come on.)
      is immature and not becoming of someone who claims to be a professional software developer.

      Don't resort to becoming exactly what you are annoyed by.

    10. Re:Complete And Total Horseshit. by Anonymous Coward · · Score: 0

      You're a fuckin jackass.

  67. 1985 Academic Press by BlackHat · · Score: 1

    Program Evolution: Processes of Software Change.
    M.M. Lehman and L.A. Belady.

    It's obvious few of you or JL have ever read it(chapter 9).

  68. Re:He's 100% right by Anonymous Coward · · Score: 0

    I agree. Pattern recognition, fuzzy logic, fault tolerance etc are all necessary pre-requisites for artificial intelligence. Currently software is shackled (and vulnerable) by strict adherence to rules.

    Its pathetic to see so many bozos here commenting on Lanier's appearance (which is ironic considering the 'uncool' stigma attached to geeks). The man may be a dreadlocked mulatto....so what? Debate his ideas if you got the brains for it.

  69. Someone who can read modded it up... by Anonymous Coward · · Score: 0
    cmason wrote:
    A single base change in DNA can result in mutations that cause death or spontaneous abortion. As little as a change in a single 'character' can be lethal.

    Pentagram replied:
    Who modded this up? A single base change in DNA is almost never fatal... True, single base changes can have dramatic effects, but this is rare.

    Where did cmason imply that single base changes being fatal was common?

    Next time, before attacking someone, try reading what they wrote instead of your interpretation of what they wrote.

    Fucktard.

  70. Hello World, for example by pla · · Score: 2, Interesting

    Very good point.

    To convert it to the software-world equivalent - With enough knowledge of the specific hardware platform it will run on, a good programmer can write a 100% bug-free, "perfectly" robust "hello world" program.

    (Anyone who thinks "void main(void) {printf("hello world\n");}" counts as a perfectly bug-free program has clearly never coded on anything but well-behaved single-processor PC running a Microsoft OS with a well-behaved compiler).

    However, extending your idea, how do you get 100 "hello world" programs to work together to, say, play an MP3?

    Yeah, it sounds absurd, but seems like exactly what the parent article suggests. Trained on enough "patterns" of input, even a set of "hello world" programs should manage to learn to work together the play MP3s.

    That *might* work if we started writing programs more as trainable functional approximation models (such as neural nets, to use the best currently known version of this). But, as much as it seems nice to have such techniques around to help learn tasks a person can't find a deterministic algorithm for, they *SUCK*, both in training time *and* run time, for anything a human *can* write straightforward code to do. And, on the issue of training... This can present more difficulties than just struggling through a "hard" task, particularly if we want unsupervised training.

    I really do believe that, some day, someone will come up with the "killer" software paradigm, that will make everything done up to that point meaningless. But, including this current idea, it hasn't happened yet.

    But to end on a more Zen note... Phenotropic development already exists, in the perfected form. When a rock touches the ground, all the atoms involved just intuitively "know" where the balance of forces lies. They don't need to "negotiate", they just act in accord with their true nature. ;-)

    1. Re:Hello World, for example by joto · · Score: 1
      Anyone who thinks "void main(void) {printf("hello world\n");}" counts as a perfectly bug-free program has clearly never coded on anything but well-behaved single-processor PC running a Microsoft OS with a well-behaved compiler

      Or maybe they have, but are complete idiots when it comes to C. Your program has three large errors.

      1. there is no prototype for printf. Thus printf will default to taking an int argument. The above code would only work if sizeof(int) == sizeof(char *)
      2. main should return an int, not void. Otherwise, it would not be possible to return an error status to the operating system. It also violates the standard.
      3. since main returns an int, you also need a return statement at the end of the function.
    2. Re:Hello World, for example by pla · · Score: 1

      The above code would only work if sizeof(int) == sizeof(char *)

      ...Which it does, on the x86 line (post-286). I will grant, however, that most compilers would give a warning on a questionable type conversion.


      main should return an int, not void

      I could count, on one hand (with three fingers chopped off), the number of compilers I've used that force that. Most compilers just assume a return of zero (or true, or posixly-true, or whatever convention of the week seems popular). Again, a warning, but it will still go on to generate a functional executable.


      However, I think you have, to a large degree, basically agreed with me. What I wrote, for most C compilers running under DOS/Windows on an x86 box, would compile and run, and produce the correct output, despite having quite a few fundamental flaws in it.

      Of course, perhaps I should not have used that example, since I didn't mean that as key to my actual point... More like one absurd example out of a large number of possible choices that would prove equally useless for any task other than the one intended.

    3. Re:Hello World, for example by Anonymous Coward · · Score: 0

      what if you, in fact, want those 100 "hello world" programs, to maybe, print "Hello, world!" to the screen. While it is very nice and all that the were able to conspire to play an MP3 (and possibly trigger a fraunhofer patent violation), it doesn't help if that's not really what you wanted the computer to do.

      But of course, as Douglas Adams has pointed out: "It is easy to be blinded to the essential uselessness of computers by the sense of accomplishment you get from getting them to run at all."

    4. Re:Hello World, for example by joto · · Score: 1
      Most compilers just assume a return of zero (or true, or posixly-true, or whatever convention of the week seems popular).

      For your information, I just did a test with a Visual C++ 6.0 console application. When main was declared to return void, it exited with %errorlevel% 17. This would most likely mean that the run-time system took whatever was where the exit status should have been and interpreted it as an int (possibly extracting only the lower bits).

      So, no. At least Visual C++ does not assume that void main(){} really means int main(){return 0;}. It just doesn't check it, and let's you shoot yourself in the foot. I've not tested with other compilers yet, but I wouldn't be surprised if the results were the same.

  71. no, s/he was right... by Anonymous Coward · · Score: 0

    Where did cmason imply that single base changes being fatal was common?

    when cmason said "This guy obviously knows nothing about biology" in response to lanier saying "if you make a small change to a program, it can result in an enormous change in what the program does. If nature worked that way [...] there wouldn't be any evolution or life"

    generally lanier was correct and got insulted

    1. Re:no, s/he was right... by Anonymous Coward · · Score: 0

      Your Microsoft SQL Server hotmail account is fucked. My linux PC still works fine. Life goes on. Lanier was wrong.

  72. Files by gnudutch · · Score: 1

    So, now, when you learn about computer science, you learn about the file as if it were an element of nature, like a photon. That's a dangerous mentality.

    But the file makes a pretty decent photon. Plan9

  73. This is broken thinking by A+Pressbutton · · Score: 1

    I think the whole way we write and think about software is wrong. ... we will not be writing programs bigger than about 10 million lines of code, no matter how fast our processors become
    I manage the development of a product that has over 1m lines of code (excluding comments before anyone asks) today. It deals with a small corner of the processes a business needs to follow. I see no problem in it growing to be over 10m lines at some point in the future.
    Systems like SAP etc must be more than 10 times this size if you count all the components, so this is nonsense right now.
    I do believe that software will start to share some of the characteristics of a biological organism - if you prod a random piece of DNA you get some random change from blue eyes to spontaneous abortion. if you amend a random piece of code you might not be able to log in or the background colour of a window may (embarrasingly) be buttonface.
    Aren't bugs just a limitation of human minds?
    No, no, they're not.

    Rubbish. Bugs are a failure in communication, at some point in the chain between a requirement of the orginal requirement and the end product.
    If the human mind can express the requirement clearly, and an algorithm for the solution, but not produce a solution then he may have a point.
    If nature worked that way, the universe would crash all the time.
    I read that the majority of conceptions for women over 45 do not make it to term. (no sources I am sure someone can expand) I would call this the universe crashing in a most upsetting manner.

    We need to be very careful before call something a success or failure.
    In the same way that cities are built on the ashes of older civilisations and they just seem to be getting larger, noone says cities are broken as a concept (now they may not be nice if you live in one but that is different - failure for the individual, success for the city).
    could you design a search engine that would encourage people to do more complex searches than they can do on a service like Google today, but still do them easily?
    Sit behind your mum or dad and watch them use IE, wince, and think well, yes. I hoped something more than the obvious from a good mind.

  74. result can't look the same, it must be THE SAME by spRed · · Score: 1

    fuzzy results aren't good enough for ALMOST EVERYTHING we use computers for. If I want to calculate a number I want that same result EVERY TIME I do the same calculation and not something in the ballpark.

    The author describes a paradigm where computers give results that are good enough. For most problem spaces good enough means 'exactly what I want' Most of computing is scientific (for some definition of the word) and will be for a long time to come. It is simply what computers do well, so it is what we use computers for.

    'Phenotropic' programming might be great for artificial life/AI or pattern recognition. I wouldn't recoment it for calculating payroll.

    -spred

    --
    .sig Karma out the wazoo, better to spend points elsewhere if this is above 2 or below 0
    1. Re:result can't look the same, it must be THE SAME by lamp540 · · Score: 1
      fuzzy results aren't good enough for ALMOST EVERYTHING we use computers for. If I want to calculate a number I want that same result EVERY TIME I do the same calculation and not something in the ballpark.

      Don't you really mean that you want the same result to a certain accuracy?

  75. What? by Anonymous Coward · · Score: 0

    [about files] It just happened that UNIX had them, IBM mainframes had them, DOS had them, and then Windows. And then Macintosh came out with them.
    That's an interesting order he has there.

  76. Curse of low level thinking: 10 million lines!?!? by Jayson · · Score: 1

    Why are we saddled with low-level languages? 10 million lines should almost never be necessary.

    Even the highest level language used in industry, Java, is pathetic: test a value, if it is equal to something then skip forward a few line, if it isn't then go to the next line, multiply another value and assign it, increment the first value, skip back a couple of line, ....

    That is horrible! Even your geeks beloved beloved Perl (including the upcoming Perl 6) falls into the same traps. You have to deal with explicit control flow; you have to manually program things as simple as finding all the unique elements in a list or grouping them.

    Why is it that everybody is content to use these pieces of crap when not necessary? Developers cling to their beloved C++ writing hundreds of times more code that they need. Of course hitting 10 millions lines if going to be difficult, but why should you never need to write that much. The fastest relational database that I know of is rumored to be written in just a thousands of lines, instead of millions. Why? Because it is written in something that allows abstraction and not of the Object Oriented kind! Think about your tools. Find betters ones that push your limits and the limits of expressiblity. Don't be happy to sit and pound out 2000 lines of Java one day when you could have done it in 4 lines of something else.


    ten_rows_of_Pascals_triangle: 10{+':0,x,0}\1
    transitive_closure_of_map_at_point : {?,/&:'m@x}/p

  77. You're forgetting by voodoo1man · · Score: 2, Insightful

    that most of this code will be in rule-sets, which really don't qualify as part of the program but as a part of the program's data. Of course, as another poster pointed out, today it is pretty obvious that knowledge and rule-based style AI is only good for expert-systems style intelligence, largely due to the limitations of first order logic. Self-organizing agent based systems and neural networks seem to be the next approach to making a more useful, general-purpose AI, but those largely consist of dynamically created entities, and their code size can sometimes be surprisingly small. Of course, there is a limitation to those two, so if I can pull some speculation out of my ass (this seems to be a pretty safe thing to do when talking about AI), the two approaches of knowledge-based and agent-based systems will have to be combined to make something truly useful. Now, as to how (if) that's going to be achieved reliably and usefully is a whole other story.

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.

  78. DNA is not such a good analogy by rollingcalf · · Score: 4, Insightful

    The functioning of a multi-celled organism such as a vertebrate has incredibly high fault tolerance and would be a better analogy.

    For example, if you stick a pin or needle in your finger, all that happens is you have a moment of pain and lose a drop or few of blood. There is zero impact to your life, health or functional abilities (except in the 0.0001% of cases where a serious infection occurs). The equivalent damage to a software system might be something like changing one bit in a 100-megabyte program. Such a tiny amount of damage can easily bring the whole system crashing down or spitting out gargage information.

    Unlike software systems, animals (and plants, for that matter) can have multiple major components of their body damaged by disease or injury, yet not only do they survive, but they can recover well enough that their functional abilities and lifespan aren't damaged. You can lose your spleen, a kidney, or a good chunk of your liver, and eventually enjoy the same quality and quantity of life as those who have undamaged organs.

    For mere survival, the tolerance is far higher. People have lost multiple limbs, taken a bullet in the head or abdomen, had a lung collapse, or broken several bones and recovered to live to their eighties and beyond.

    It is very difficult to inflict a tiny damage that kills a large organism; the damage would have to be precisely directed at one of its weakest and most vital spots. But it is very easy to essentially destroy a large program by making a small random change.

    --
    ---------
    There is inferior bacteria on the interior of your posterior.
  79. 10,000,000 lines of code? by Anonymous Coward · · Score: 0

    So how many lines of code do people think it takes to run the Web now?

  80. Keeping the leaks contained by terrab0t · · Score: 2, Insightful

    I think the problems with our current model of programming that Jaron is describing can be seen mainly in the idea of Leaky Abstractions. With software abstractions, we try to do exactly what Jarod is talking about; we try to simply make things interface with one another fluidly. What he's pointing out, and what leaky abstractions prove, is that our programming languages just don't work this way. Everything assumes the pieces it interacts with will interact in a specified way. The system depends on every piece to follow it's assumptions and often falls apart completely if one doesn't.

    There are questions to be raised about a flexible system like this:

    What about misinterpretation? Would software now behave like a human and "missread" another component's piece of information? (as people missread each other's handwriting)

    Would "fuzzy" interpretations lead to databases full of occasional false information? Could the same system still operate effectively with these kinds of errors? (a very tricky question)

    Could we still make secure systems with this kind of software interaction? Would secure systems still require the strict standards our current systems have? (ie. your password must still be entered with the correct capitalization)

    Obviousely, information passing wouldn't work in this model. Think of the party game where you sit in a circle and whisper a message in each other's ears to see how garbled it gets. We would just have to avoid that type of system.

    These (and the others I've read) are the kinds of immediate questions that one will make of this concept. I guess Jarod is proposing that these are things that can be worked around conceptually; they're implementation details.

    Personally, I think he's brilliant. I think he has stumbled onto what will be the foundation of the future of computing. Here is the big bold statement he is putting on the record for us:

    "So instead of requiring protocol adherence in which each component has to be perfectly matched to other components down to the bit, we can begin to have similarity. Then a form of very graceful error tolerance, with a predictable overhead, becomes possible. The big bet I want to make as a computer scientist is that that's the secret missing ingredient that we need to create a new kind of software."

    My question is this: Would any of you openly challenge this statement? If he were to more rigourousely define this bet and enter it here, would any of you put yourselves on record saying it was bunk?

    I know that's alot harder than simply not challenging him, but think of the ultimate outcome of his work. Do you truly think computing systems will still be cooperating the way they do now 100 years from now? If the answer is no, but you still don't think he's on to something, then what will change things? Genetically altered super-humans whose brains operate as our computers? The "Mentats" of the Dune novels?

    If I had $2000.00 to spare, I'd bet it on his idea.

    Feel free to quote me on that 100 years from now.

  81. Re:Jaron Lanier On Software Design and Phenotropic by Anonymous Coward · · Score: 0

    'He theorizes that two software objects should contact each other "like two objects in nature," instead of through specific modules or predetermined points of contact.'

    Odd, I notice that I contact the Universe through a specific module called my skin, which only allows predetermined types of molecules through.....

    Besides, all this talk of going 2D is great, until you realize that any remote stuff will be done through a serial interface - a wire.

  82. First Macintosh's file system by pHatidic · · Score: 1

    In the interview Lanier says that on the first version of macintosh, before it was released, they were experimenting with a version that did not use files. Is there anywhere I can find out more information about how this worked?

  83. SAP is already over 100 million lines of code by Anonymous Coward · · Score: 0
    At JavaOne last year, Hasso Plattner said that SAP R/3 is already over 100 million lines of code (that is 10^2 so you know no typo :-)

    Of course, if you have worked with ABAP before, then you will know why this is so....

  84. Organic vs Engineered Systems by tigersha · · Score: 1

    The problem with most computer systems is that they are like a finely tuned watch. Except the watch has a million parts, not 100. And just as a finely tunes machine breaks completely when one part is slightly out of alignment a program croaks if one small thing breaks.

    Organic systems are not like that. The results, however are also not exactly precise. Perhaps what Lanier is saying is that we sould move away from the whole extremely brittle finely tuned machiens where all the parts fit exaclty or pretty much not at all to more organic sort of things.

    Search google for "Feyerabend Project" for more on this.

    One thing mentioned there is that software modules should communicate more with protocol streams than exactly correct rigidly typed structures that break if you cough close to them. In this way thow different pieces of software do not need to be recomiled if something changes on one side.

    As an example, a HTTP server does no go south if an extra HTTP header is plugged into its interaction, while a function call would probably go bonkers if you add another parameter in a call to it.

    --
    The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  85. jaron's mind by lamp540 · · Score: 1

    What drugs is Jaron on, anyway?

  86. Gimmicy Paradigms are NOT needed! by Jagasian · · Score: 1

    The important thing is for our programming languages to not adhere to some gimmic paradigm, but instead the language should be WYSIWYG on a syntactical level. This is obtained by having many of the same properties found in languages such as the various Lambda-calculi:

    1. Referential Transparency: equivalent pieces of code can be swapped by simple cut-n-pasting the code

    2. Church-Rosser Property: programs aren't just deterministic, a program does the same thing no matter which parts are evaluated first

    3. Curry-Howard Isomorphism: statically typed programs have a logical behavior

    Note that I am not advocating functional programming, as other programming paradigms can still use these language properties.

    Surprisingly, these 3 properties are NOT found in most programming languages. This is why small changes in code can cause things to fall apart.
    Without these properties, small changes can have a domino effect and react badly with other far off pieces of code.

    For example, without the first property, referential transparency, two pieces of code that do the same thing can't necessarily be interchanged by simple cut-n-paste. With modern languages such as Java, this isn't as much of an issue, but you can still have problems, especially with regards to multiple threads. In languages such as C, however, unless the code is extremely well written, you can't swap out one piece of code for the other. Global variables, goto statements, etc... Referentially transparent languages would always 100% garrentee that equivalent pieces of code could be cut/paste swapped.

    Without property 2, programs tend to be extremely nondeterministic! C and C++ are two languages that are extremely nondeterministic. For example, not initializing variables, multiple threads, referencing deleted objects, etc... Java has similar problems, especially with regards to multithreading, garbage collection, etc...

    The lack of a logical interpretation (property 3) means you can compile code that just flat out don't make sense in the terms of describing an algorithm. C, C++, and Java allow use of generic pointer variables, so you accidentally pass meaningless things to functions. In C and C++ it is a void*, and in Java it is an Object reference.

    It is still possible to keep nondeterministic behavior, concurrency, and mutation in a language with the above 3 properties (relaxing property 3 though). The above 3 properties also don't necessitate a functional paradigm.

    Anyway, silly paradigms that sound all nerdy might be fun, but they aren't useful. Instead, we should work to make our programming languages well behaved! Subexpressions in the language should be "what you see is what you get"!

  87. Good Point ! by Anonymous Coward · · Score: 0

    It is a major problem of 'half intelligent' partially autonom systems to get the to meet a specific goal or behaviour.

  88. Flawed Premise by ralphbecket · · Score: 1

    The man has got many things wrong.

    1. The number of lines of source code in an application may well exceeed ten million, albeit the vast majority of that number being part of libraries, the operating system and so forth. Great engineering comes from *simplifying* the problem, not throwing complexity at it (which, IMHO, is where so many bugs come from today.)

    2. Oil rigs and planes are *much* simpler things than large software projects. For a start, physical objects generally behave in well understood ways. You tend not to get strange emergent behaviour from piling bricks on top of one another. More to the point, physical objects do not share state (another major source of bugs.)

    3. Pattern recognition is actually harder to get right than correctly implementing a protocol. A key problem with PR is working out exactly what it is your system has learned (cf. the case of the military system that was trained to spot tanks, but instead merely learned the difference between night and day.) PR is also currently very poor at dealing with structured input, which I would have thought would be a major showstopper for any realistic application in software development.

    4. I'd argue that it's easier to work harder on getting things right in the first place (and let's face it, software engineering is pretty much a joke at this stage of its evolution) rather than taking on yet another approach about which we understand comparatively very little indeed.

    5. Stateful computation and (sorry to say this, but) the woefully inadequate abstraction tools available to today's commercial programmers (and no, OO does not cut it, despite the hype and despite the fact you've been using it for years -- if it did work as advertised, code would be much less buggy) are major contributors to unreliable software systems. Oh, and the fact that any monkey can become a programmer these days.

    6. The best programmers often stick around academia because that's where the hardest challenges are taken on. Academic programming language designers (who do have bags of experience in the sort of thing commercial programmers get up to every day) have been advocating declarative languages for decades. For years now the compilers and tools for these languages have been industrial strength. Declarative programming *does* require you to change your way of thinking, but the pay off is programs that are an order of magnitude shorter and very, very often run correctly first time.

  89. Be a software pioneer in 3 steps by rfischer · · Score: 1

    1. Take an existing technology (fuzzy logic)
    2. Redefine it with a cool-sounding name (phenotropic)
    3. Profit!

  90. The physical phenomenon of the natural laws of ... by 3seas · · Score: 1

    The Natural laws of the Physical Phenomenon of our creation and use of abstractions is what he is trying to nail down.

    But it has already been identified and being developed as a general user based automation tool. Useful in many ways, including in teh development and use of an autocoding environment.

    See Virtual Interaction Configuration and even some of my journal listed /. posts for more information.

    It's nice to know..... exactly where many seem to be headed. Unfortunate for them that they seem to be, in one way of another, off course, even just a little over a long ways makes a big difference.

  91. Amorphous Computing by buddyjones · · Score: 1, Interesting

    Gerry Sussman (one of the authors of the famous 'Wizard' book taught in beginning computer science classes) has been working on biology-inspired programming paradigms over at MIT. The correspondance between the structure of living systems and computing systems was pointed out by John von Neumann quite at the dawn of both fields, and these notions seem to be alive and well today. In this view, the genome is like the assembly code of a program which, when run, is capable of replicating itself, developing from a single cell, maintaining and healing itself. Wouldn't it be great if we could write computer programs that had these same characteristics? It's an inspiring conception of biological systems and an incredible vision for a future for programming.

    Jarod is a bit of a galactic gas-bag, having stated publicly that 'nothing good at all will come from biotechnology', but that information technology is 'almost all good' (interview on NBC, as I remember), but in this interview, I think he's on the mark.

  92. mega-porcessors by solferino · · Score: 1
    if we are ever going to have mega-porcessor interaction

    My friend! Prepare to contain your joy 'cos mega-porcessor technology is already here - see press release below.

    Porcine Technologies
    Press Release
    April 1, 2002


    Porcine Technologies Inc, is pleased to announce, after 14 years of continuous research and development, the first public offering of it's mega-porcessor computing technology.

    Mega-porcessors are a completely new approach to computing, directly incorporating the exciting new worlds of genetic engineering and pattern recognition or phenotropic computing.

    Professor Clive Bacon, Porcine Technologies Chief Research Officer explains the technology:

    "Basically, the mega-porcessor is a genetically re-engineered large porcine scrofulus. The gut of the porcessor has been genetically engineered to be extremely sophisticated in pattern-recognition porcessiong. Problems are solved by coding the data set into an ingestible porcine feedmeal. This is then fed to the mega-porcessor whereupon the porcessor falls into a torpid state as it's gut quickly assimilates the data-set. We've done a lot of work to accelerate this process and really make these pigs fly.

    Once the dataset feedmeal has been fully porcessed in the gut and it's inherent patterns recognised and clarified the solution set to the problem is laid down as subcutaneous sebaceous material around the porcessors central porcessing unit (it's belly). This information transfer technique is referred to as Supine Porcessor Ameliorated Messaging (SPAM).

    Finally the solution data-set needs to be communicated to the human operators. This is effected by terminating the porcessor (usually by slitting it's throat) and then serving up the solution-doped meat of the porcessor to the porcessor operators. Ingestion of this material communicates an intuitive answer to the problem dataset directly to the operator's stomach, giving them a 'gut feeling' about the initial problem and it's inherent solution."


    Paul Jamon, CEO of Porcine Technologies, in launching the first three models (already dubbed the three little pigs) of this exciting and promising technology, also announced that development was nearing completion of it's second generation of the technology (BIGSOW) and that several large global enterprises were already testing the unique power of this larger body mass porcessor :

    "We already have several large global enterprises excited about and actively using this second generation of our revolutionary technology. Today, people talk about using 'big iron' to run mission-critical information analysis. We envision a future, where in as short a time as five years from now, companies and their computing operators will increasingly be turning, napkin in hand, to 'big porc'."
    1. Re:mega-porcessors by Anonymous Coward · · Score: 0

      Barter town runs on methane. Methane cometh from pig shit.

  93. Lanier is a buzzword junkie by Anonymous Coward · · Score: 0

    I remember this guy gave a guest lecture when I was at university. He'd dropped the Virtual Reality schtick and was waxing lyrical about Tele-Immersion. He was also unable to make a very convincing argument about why he was so vehemently opposed to the idea of strong AI.

    So, he's just found a new buzzword to blather on about. Yawn.

    (If you're familiar with The Fast Show, he is basically Denzil Dexter.)

  94. yes we must bravely overcome our narrow prejudices by Anonymous Coward · · Score: 0

    we must dare to challenge our small-minded notions of "computer", "bit", "byte", and indeed our entire category of "digital".

    they are simply crutches that we've been leaning upon for too long.

    these pieces of received wisdom had their day, but are now doing more harm than good.

    i'm sure jaron has a suitable replacement in mind.

  95. liked the linux comments by ballzhey · · Score: 2, Interesting

    found in his manefesto
    ...the Great Shame of computer science, which is that we don't seem to be able to write software much better as computers get much faster. Computer software continues to disappoint. How I hated UNIX back in the seventies - that devilish accumulator of data trash, obscurer of function, enemy of the user! If anyone had told me back then that getting back to embarrassingly primitive UNIX would be the great hope and investment obsession of the year 2000, merely because it's name was changed to LINUX and its source code was opened up again, I never would have had the stomach or the heart to continue in computer science.

    --
    You know the Microsoft destroys the night, Linux devides the day...
  96. ad lib by goombah99 · · Score: 1
    Y'know I spell an type like crap, and it really cheeses me off when people respond to that alone and then add no valuable comments of their own. But your response is fantastic. I love it. You should follow me around, I'll probably spew some more gems for you.

    though may it should have been 'pig iron' rather than 'big iron'.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  97. Douglas Adams by goombah99 · · Score: 1

    After I wrote the parent post, I recalled something douglas adams wrote about. He described a big desk that was actually a computer. You sat at the desk and tried to solve you problem. the computer watched you and after a while figured out what the problem you wanted to solve was. then it solved it. Nearly all the computer power was spent wathcing you and infereing your problem. Not quite the same as what I was saying but a remarkable instance of it.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  98. Scared, Stupid and Petty Slashdot Readers by Anonymous Coward · · Score: 1, Insightful

    My opinion of Slashdot readers plummeted after reading these comments. The tone and content of the critisims range from childish (look at the funny hair) to stupid name calling (it's just a lot of BS that anyone can make up) to mindless bragging (I work on XXX million lines of code all the time). Very few of the negative comments were well reasoned or based on reference to any solid information. I think you are all scared shitless by the mere suggestion that your programming skills might not be the final word in technology. Jaron may be right or wrong, but he is taking a radical look at how well we do our jobs. Only a self satisfied smug idiot would accept the current state of the art for software development. Personally, I cringe whenever I am called a "Software Engineer." Engineers build reliable system based on well understood principles that are on time and on budget. Software development does none of these things, and we are lying when we call ourselves engineers. I think that the Slashdot readers who mindless flamed this posting are a big part of the problem, and to make matters worse, are happy with the current sad situation.

  99. larksvomit by Anonymous Coward · · Score: 0

    Thank you for the entirely appropriate and completely new term for a very lightweight (intellectually) and insigificant substance with similar properties the bullshit.

  100. What nonsense.... by Anonymous Coward · · Score: 0

    The fact is that computers are, by definition, a generic machine... ergo, software is a method by which a generic machine is made into a more specialised machine while still being a generic machine.

    Nature, on the other hand, doesn't build generic machines - it makes machines that are very, very good at certain specific things... if it's a fish, it's very good at extracting oxygen from water and swimming. If nature builds an owl, it's very good at spotting prey and flying. Put either animal in the other animal's environment and you're going to have "crashes" because they aren't suited to those environs.

    As a developer, I *KNOW* we aren't doing it right... but we're getting better.

    Look out any discipline that's barely 50 years old and I don't think they'll be in much better shape; It took over 5000 years for structural engineering to get to where it is today... but buildings still fall down; that too, can improve.

    Comparing software to other forms of engineering is silly... in a few years (decades? centuries?) perhaps... but compare that scale to the one nature uses and even 5000 years is so tiny a speck that it's not even on the map. Comparing software development to nature is complete nonsense.

    Is an aeroplane better at flying than a bird? Is a submarine a better fish? Is a car a better horse? Not really, but then, it doesn't really matter because the comparison is invalid.

  101. Main point... by SuperKendall · · Score: 1

    I think in all of the discussion, too many people are focused on this "10 million lines of code" issue. The heart of what he seemed to be talking about was exactly what you just said - combining systems in an intelligent way. He just wants the interface between systems to be fuzzy instead of rigid.

    A very simple example I can think of is imagining a system where you write XSL with references to properties of an object (a javaish wording), and then a physical (you know what I mean) instance of the object itself. These are tied together only by words - the Java code has property "yearlyRecurringCost" and the XSL also has "yearlyRecurringCost". But the interface is rigid - when you change the name of the property to be something like "YRC", then any of the XSL you have must also be changed. Traditionally problems like that have been solved by typechecking, but you can only get so far - like when the property is now mapped to XML and used in another company where the typechecker cannot reach.

    Now imagine a system that would just "know" (or be "pretty damn sure") that "YRC" and "yearlyRecurringAmount" were the same. It would function longer and through more changes, without fixing or failure. That is a simple example of the kind of thing I think he's imagining. However, I'm not entirely sure if the kind of bugs such a system brings on (the system "knows" that "recurringAmount" must mean monthly when it really means yearly) are going to be less limiting.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  102. what about bug in poem? by Anonymous Coward · · Score: 0

    Jaron you are wrong about your focus on bugs. If you read code (or poem) you see bugs or feel them and you see they are good. Bugs are not a constraint for complexity. Our perception is. The surface between you and the computer. This is where protocol adherence fail, your brain simply fuck all these stupid rules. It wants see patterns, beautiful colors, curves, hear sounds, it wants enjoy provocative metaphors. It is bored by coordinates and tags.

    Bugs are cliche. Protocol maniacs are sick, don't mind them...

    yours Santa Claus

  103. I Agree..there are many things and limited time.. by thenarftwit · · Score: 1

    It's like all the debates a long time ago about what the best computer/parrallel computer hardware/software architecture would look like..the answer depends upon what task you want to perform (be it model something, design a game, build a computer system etc). The answer is dictated by what resources (tools, your experience, etc),you have at your disposal and the time frame at hand. Nature can build complex biological systems because they are essentially made from self-reproducing nanomachines (build lots of them cheaply). Like most things, nothing is perfect, it usually gets the job done..if you have all the time and resources, you could build a computer system that uses biology etc as models and simulates most anything and can deal with unexpected inputs etc, but using current echnology, that would be expensive and be sort of like a big smart emulator system..

  104. Just use a system Like CYC..? by thenarftwit · · Score: 1

    You could build systems that incorporate the CYC system..(www.cyc.com)..to put a system(s) like CYC into your system so that it could look for faulty conditions etc...I think that CYC is use in the Ask Jeves search engine..of course, fuzzy, neural networks and traditonal AI could be used too..all this stuff (AI, Comp hardware/software languages, complexity theory) has come out of the last 60 years of comp sci research and math and physics and now biology and chem etc will determin how we make future technologies (like nanotech), it's clear that may people have worked on these problems and there is no single quick solution to the program complexity/reliability issue and probably not one person asking these questions or soving them..perhaps there are more than one good answer and that existing languages and protocols are good enough with correct use and mabey some tweaking too...

  105. Doesn't anyone have anything nice to say?? by Anonymous Coward · · Score: 0

    Christ, what incredible amount of venom in the posts in this subject!

    I thought the article was pretty interesting. Sure, I thought there were points that could be discussed in the article, but why all this flaming and disgust? Even if you disagreed completely with his ideas, can't you at least appreciate his argument that it's worth thinking about a more revolutionary change in computer science? Isn't this a more interesting topic than the millionth "ooh, Microsoft is eeevil!" post on Slashdot? /Lars

    1. Re:Doesn't anyone have anything nice to say?? by Anonymous Coward · · Score: 0

      Coments are not good or bad. You may see them this way, but this doesn't matter. He tried to provoke and he is successful. Simply.

  106. but where's the source by SkunkPussy · · Score: 1
    this geezer spends ages pontificating, yet at the end of the article he has not said anything specific. For example he says nothing about how one is expected to implement the new sorts of interfaces he is talking about anyway.

    He doesn't give any examples. None of the interview is more than subjective waffle.

    I am not knocking this man's ideas, its just he's going to need to do more than talk vaguely about a "paradigm shift" to sell his ideas to me!

    --
    SURELY NOT!!!!!
  107. More power to him by mattr · · Score: 1
    A very interesting article, and rare in that young computer science people might even gain a spark of hope if they read it with an open mind.


    Certainly we need more people thinking outside the box, at least being able to see that there is a box and some other things are maybe outside it.


    Another example of this kind of thinking to me is Damian's Perl Module Quantum::Superposition which lets you take a swing at a totally new way of formulating algorithms.


    When I read Lanier's article I thought (as he noted on his homepage) that 10M is small, but the difficulty of writing good code by professionals is true (Microsoft, NASA, ..) and his point about proportionate importance of errors is on target.


    I've already started getting some new ideas.. and though that $2K seminar in February he's going to be at disappointed me (hallway conversations probably will be most interesting?) I say THANKS to Jaron (and a couple of Slashdot posts..). Catalysts and cell receptors jumbling in my head.. and meanwhile got me thinking positively about how to make my current programming jobs less arduous.

  108. Hehe pure fun for the biology nerd by Anonymous Coward · · Score: 0

    Phenotropic? I think this guy meant "phenotypic," as in "the phenotypic expression of the genotype". And if I think about phenotypes in software, then that would be the actual behavior of the code. And yes, indeed, when I'm working on code (the genotype) I often think about what the executable program (the phenotype) should do in the end. It's time that this guy stops blahing.

  109. Drugs? by Omniscient+Ferret · · Score: 1

    I'm wondering if maybe he's occluded due to drugs. Listen, you can't take visions from the prankster shroom or acid elves as gospel.

    At least, that's what the DMT elves say.

  110. Show me the code by hayriye · · Score: 1
    I think the whole way we write and think about software is wrong.

    Show me the code

  111. The REAL idea of complexity by Anonymous Coward · · Score: 1, Interesting

    The REAL idea he is getting at isn't physical lines of code, although this is a good judge, but how complex the programs are, and what we are modelling, how many interfaces, relationships and ideas we express in the code, and how we can reduce the process of managing bugs.

    The ideas of creating fuzzy relationships (erk, interfaces) between components is fascinating. Although, it seems by definition for one component to be tollerant to another, it must have a preconception of the inputs to expect, therefore it might be like

    if (reasonableResponse)
    return reasonableResponse;
    else if(someNewIdea)
    return myFuzzyWarmIdeaOfAReasonableResponse;
    else
    throw new HeySomethingHappenedDoSomethingAboutItGracefullyEx ception();

    I do however like people conceptions of the 10 Million limit, and code reuse. After all, most systems in the world is a collection of small systems, reused and repeated. The most complex behaviours and unpredictable systems can be broken down into a handful of simple rules or sequences, which is what programming is, or what we think it is.

    Who would want to model one single behaviour in so much code! Lets work at Javaesque ideas of modelling and code reuse, which have really matured recently.

    However, the aim isn't to give us the chance to make really big programs of billions of lines, but to give us the chance to model far more complex systems RELIABLY, including all the little connections between the rocks and grounds of our program.

    Yes Windows 2000 is a biiiiig application/system, but hands up who would say it is realible? Who wants to trawl through it bug finding? That is why they have to throw away and start again (heck they dont, they just leave the shelled out carcase of the code to bloat the system - and further downt he line programmers will reuse methods which look the same as well tested 2 year old code, but this is 2 year old code that want tested, and will call is Windows 2004, and we will all enjoy the lovely exploits which ensue)

    Can you imagine if the code base, or complexity of this beast doubled? And it will, they are trying to squeeze all manner of bits we don't need in there, to sell it as new.

    He also mentions how difficult it is for someone to write an operating system. We can imagine what it does, but it is quite an achievement. It seems that here we are talking about not MORE lines of code, but LESS. If 10 M was some cognitive limit (lets just say for example) we would need people to be able to model a complex application quickly and reliably with ideas, huge masses of code. Yes, reusing many components, but think outside the rect here and how can these bits of logic, these processes, interact in an error tollerant way.

    He wants people to compete more easily and quickly, new software ideas to bring power to those who have the real ideas. Brain grease over elbow grease.

    We all know the power of an interface, or contract. We abstract the idea of an 'application' and it runs inside the 'operating system' and we have a contract of resources and interaction.

    But if one element goes fizz, the whole house of cards goes down, especially if we are talking win32.

    Now you could argue, whatever happens, if a component goes fizz, for some reason, we NEED the application to understand this, rather than continue, as processing the data further with this inconsistency could be more damaging. (missiles landing in your back yard)

    So either we concieve some perfect system for creating programs (arguably impossible since we are only human) or just bring in ideas to MODEL and ABSTRACT the code process through strong contracts, and identify patterns (not the same patterns he talks about) in the code, and give us, as humans, the chance to drag little safety nets around each area, and say, if this part fails, I want it to decide to go here.

    I have been developing this way for well over 3 years, it wasn't natural, it was a developed skill, of course, I THINK like this naturally, but to bring it into the code was a process I had to enforce. (please, tell me you know all this already, and show me all your 100% bug proof applications over 300,000 lines of code)

    Back to this impossible model - which doesn't allow for errors, a strict rule based language which predefines all acceptable states as it is coded, and can see where errors can occur. These chunks can then be fitted together like Lego (tm), and if they don't fit, they don't fit, if they do, then they work together, and the behaviour is something only we can decide upon, ie through interpretation. Our interpretation would be the failing factor in any system now matter how strict, the legal behaviour of that system in itself might not match what we wanted to model, and is as much of a bug as one that goes fizz

    Now Java is getting there, I should say the Java ethos, and best practices and eXtreme Programming, and team based development practices, there are so many built in ideas, and certain powerful tips beknown to developers give us systems which 'cannot' fail. Of course, this is only based upon what we could identify at the time as a failing criteria.

  112. Mod this up.... by Slashamatic · · Score: 1

    This person has posted an interesting response (even if I don't agree). As an AC, it will probably end up being ignored!!!!

  113. Layered testing & Debugging by hughk · · Score: 1
    You mention VMS, so you probably came across a little toy called the Run-Time-Library, which gave a language independent set of tools to do a lot of things, from messing with queues to complex math.

    Calling the library meant that what you were building a layer upon something that was already debugged. However, the library routines contained sanity checks of their own, so if you supplied a null rather than a pointer where one was needed, you found out about it quickly.

    We have a series of different library tools now. Unfortunately, not all try to check what the caller is doing (it does cost performance to be paranoid). What is good though is it means tht you aren't building pyramids on quicksand. Yes, the RDBMS is a layer, but there is nothing to stop us from creating distinct layers within our own systems - layers that can be tested and debugged independently of the application as a whole.

    It has advantages too, because it means that you can come back and reengineer something fundemental at a low cost. You can even change the layer itself.

    However, in the end I don't worry about debugging a large program because the compile/link/debug/edit cycle takes too long. I don't mind large systems (one I have recently worked on is over 30 million LOC on the backend alone) - but I prefer the programs and modules to be smaller.

    --
    See my journal, I write things there
  114. an argument by dubwai · · Score: 1
    One of the points that Jaron makes in this interview is that a single bit errors casuses catastraphic results and that this is unlike nature. I have three points about this. 1. There are many times that I come back to code that I or someone else wrote and it is clearly wrong. If I had never looked at it again, no one would have ever noticed. Other times I have found errors that shouldn't be there but never manifest themselves because they are corrected by other code. I don't know what code he works with but this kind of thing is not the norm. If you get a bad packet from a web site, it doesn't crash your computer (unless you are running WinME.) 2. There are many times a small change will cause huge results in nature. Anyone who doubts this must read
    • Chaos
    by Jame Gleik. People have made the construction analogy but lets take the Tacoma Narrows bridge for example. One small oversight and an entire bridge is destroyed by the wind. 3. In a lot of ways, absolute perfection is not only a requirement of some parts* (see above) of a program in order so they will work, it is also a functional requirement. I wouldn't want my tax preparation software using fuzzy pattern recognition to calculate what I owe. In a lot of ways the precision of computers and software is their greatest strength. If a program is written correctly, you can depend on it giving you the right answer ever single time you use it. I don't know if that is true for what he is proposing. All of this smacks of the "drag and drop" programming concept of the late 90s. A couple years ago someone was telling me that we wont need programmers anymore because we will have software that allows anyone to write a program. That has happend on a very superficial level but the real work of computing is still done by expert geeks.
  115. Just one dark cloud? by adaptiveView · · Score: 1
    To me, this complacency about bugs is a dark cloud over all programming work. - J. Lanier

    ... be that as it may, it's not the only dark cloud. Here are three more that, each in its own way, address some of the issues raised by Mr. Lanier:

    Cloud 1: Information

    Let's go back to the middle of the 20th century, to a very brilliant, first generation of serious hackers that included people like Alan Turing, John von Neumann, and Claude Shannon. Their primary source of coding experience involved coding information that could be sent over a wire. - J. Lanier

    Claude Shannon, in his paper A Mathematical Theory of Communication (PDF version) begins with the oft forgotten statement that, and I'm paraphrasing here (badly), of course he doesn't really mean "information" as that would imply a whole host of semantic issues he doesn't need to deal with but, what the heck, it's a nice word.

    It's certainly an interesting word, but when it comes to what can be stored and/or transmitted, it's the wrong word. That Shannon used it and no one seems to mind speaks volumes about the "programmer's mindset" in the past 50 years and goes a long way towards explaining why GOFAI (good old fashioned AI) has failed so completely.

    Information is a phenomenological experience of the mind's response to stimuli. You may find what you're reading here informative, but that does not mean this arrangement of dark and light pixels on your screen is information or that, when I posted this message, information was transmitted. The illusion of information is very real, so real that it makes it difficult to see that behind it is a mind doing some incredibly complex processing and that without mind, there is no information.

    The illusion of information is borne on the wings of assumption. Call this a message or posting or whatever, but it is really a designed encoding of data, its design intended to evoke particular responses and guided by my assumption that you read and can comprehend English (one of many assumptions). We are so adept at language that most of what goes on when we speak and listen (or write and read) goes on below the level of consciousness. It takes effort to see that the illusion of information requires mind and even more effort to see that mind requires society (i.e., that minds are social -- they require the shared conventions and knowledge represented by the society they are immersed in).

    Anyone who's written even a simple program has experienced the "absence of mind" in the wonderful world of Information Processing/Technology. Without mind, programs are required to simulate particular mind-like functions in order to simulate "information." We state or assume conventions and knowledge (e.g., protocols) in some subroutine so it can "think" about the "information" passed to it. We spend an inordinate amount of effort and time trying to design and follow conventions in our programs. In the "human interface" areas of our programs we expend even more effort trying to get the "stupid" user to supply information according to the conventions our programs are expecting and to decorate (format) information for human consumption.

    To the extent that the knowledge and conventions within a program are complete and consistent, the current "art of programming" works surprisingly well. The larger the program, the more difficult the completeness and consistency becomes and the more dangerous the fallacy that information is storable and transmittable becomes. It becomes too easy for a programmer to assume that "information" produced or consumed by some subroutine they're working on is, and will remain informative. One can easily imagine someone at NASA working on a subroutine that transmits thrust information to a spacecraft. Would they ever imagine that what they have encoded in Pounds will be interpreted by another subroutine in Newtons if they believe their subroutine actually transmits the information? (Not that anything like this would really happen, of course.)

    Cloud 2: System Boundaries

    We need a system in which errors are more often proportional to the source of the error. - J. Lanier

    How do we know what is and isn't part of a system? We look outside and see a car, a tree, a person. The tree has a root system. The car has a brake system and an exhaust system. The person has a cardiovascular system. And yet, the best definition I have for a "system membership function" is: Anything that affects and is a affected by a system is part of that system.

    A little thought in that direction will get you to the conclusion that it's pretty much all one system and everything we deal with is a subsystem. We haven't evolved to look at the world this way. In fact, we try not to as such a holistic view is far too complex. We'd be stuck in analysis paralysis before we ever got started. We have a tendency to begin with the smallest version of "system" we can get by with and expand its domain only when it's the only way to accommodate some "outside" fact.

    In my experience with programming (and technology, in general), the "source of the error" is frequently outside of the "system" we thought we were dealing with. It's not unusual to find that the destination of the error is outside of the "system" we thought we were dealing with, as well. Programmers are all very aware of the effects of system boundary errors (although most would not recognize them as such). These errors manifest themselves in usually annoying, and sometimes frustrating problems. But the consequences can be far more devastating.

    In December of 1996, The Bright Field (a 763-foot freighter loaded with 56,380 long tons of corn) was positioning itself to navigate a turn in the Mississippi River when a primary oil pump failed. Automation software detected the failure and attempted to start a secondary oil pump but it wouldn't start so the automation shut down the engine. When viewed from the perspective of the "engine system," the automation behaved in a perfectly reasonable manner (and had this occurred on the open sea, everyone would congratulate the automation designers for a job well done). But if you jump up a level you see that shutting off the engine makes it impossible to steer or stop the "ship system." Jump up another level and on that day in December you see that you now have an extremely heavy ship drifting straight towards a New Orleans wharf. (The crew was able to finally get the engine started but not in time to stop the ship. It destroyed 200 feet of dock, tore the front off of a hotel and shopping mall and injured 116 people.)

    Cloud 3: Complexity

    If you look at other things that people build, like oil refineries, or commercial aircraft, we can deal with complexity much more effectively than we can with software. - J. Lanier

    Note: I assume (and hope) Mr. Lanier meant: "we can deal with their complexity much more effectively than we can with software's."

    There is a hint in Mr. Lanier's comment of the belief that complexity is somehow undesirable or problematic. In common usage, complexity seems to share some of the semantic space occupied by complicated. Let complicated handle all things messy, difficult and hard to use. Complexity is about connections (physical, social, ideological, ...) between things and it is the source of power in anything we think productive or capable of fending off entropy.

    Having lived near an oil refinery that blew up I have my doubts about our ability to deal with their complexity, and no one needs reminding of what commercial aircraft are capable of. You may be tempted to come to Mr. Lanier's defense here, stating that this isn't exactly the kind of "dealing with" he meant. To which I would reply: yes I know, but that's exactly why complexity seems like such a problem, often times in very surprising ways.

    People, it seems, like to forget that: a) complexity is no less productive just because we didn't intend to create it, and b) complexity is not constrained in any way by our good intentions. Programmers are also fond of thinking of their code as something that simplifies things, but new software always increases the complexity of the system. In fact, when it comes to adding complexity, nothing is faster or easier than software (and this is most likely at the root of Mr. Lanier's comment). It's rather interesting to consider how programmers try simplifying something and end up making things more complex... Some guy named Tim tries to simplify the exchange of scientific documents and, voila! out pops amazon.com.

    It's worth noting that all or most of the significant "events" in human history have resulted in (or enabled or supported) huge increases in complexity. Language, agriculture, population expansion, civilization, transportation (roads, ships, etc.), writing, the printing press, electronic communication, and so on; they have all increased the connections (usually both in number and frequency) between people. (It's possible that Kurzweil's theory of exponential growth of technology is focused on an effect rather than a cause. It seems more likely to me that complexity is growing exponentially and, for the moment, technology is a parallel effect of that growth.)