Slashdot Mirror


No More Coding From Scratch?

Susan Elliott Sim asks: "In the science fiction novel, 'A Deepness in the Sky,' Vernor Vinge described a future where software is created by 'programmer archaeologists' who search archives for existing pieces of code, contextualize them, and combine them into new applications. So much complexity and automation has been built into code that it is simply infeasible to build from scratch. While this seems like the ultimate code reuse fantasy (or nightmare), we think it's starting to happen with the availability of Open Source software. We have observed a number of projects where software development is driven by the identification, selection, and combination of working software systems. More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components. These parts are then made to interoperate through wrappers and glue code. We think this trend is a harbinger of things to come. What do you think? How prevalent is this approach to new software development? What do software developers think about their projects being used in such a way?"

323 comments

  1. Windows bugs? by Anonymous Coward · · Score: 0

    The immortal blue screen of death, following windows code down through the ages.

    Are we in hell?

  2. Already been done by Anonymous Coward · · Score: 0

    It's the UNIX philosophy - take tools, glue them together with a little shell scripting, and viola (sic)

    1. Re:Already been done by Anonymous Coward · · Score: 0
    2. Re:Already been done by Anonymous Coward · · Score: 0
    3. Re:Already been done by Anonymous Coward · · Score: 0
    4. Re:Already been done by Anonymous Coward · · Score: 0
    5. Re:Already been done by Anonymous Coward · · Score: 0

      Read your own link. If you are the gp, it doesn't mean what you seem to think it means.

      If you had quoted someone else verbatim, without correcting spelling errors, (sic ) would have been appropriate.

    6. Re:Already been done by Ignominious+Cow+Herd · · Score: 1

      Arguably better than 'Walla'. Yes, I've seen it spelled that way.

      --
      Lump lingered last in line for brains, and the ones she got were sorta rotten and insane.
    7. Re:Already been done by Anonymous Coward · · Score: 0

      It looks to me that the GP used it correctly, although I don't recognize the quote.

    8. Re:Already been done by Anonymous Coward · · Score: 0

      Stupid person.

      Linux was a rewrite from the scratch. Minix and BSDI existed already. And HURD was a promised rewrite from the scratch.

      And glibc was a rewrite from the scratch. We had libc5.

      And, oh, konsole was a rewrite from the scratch. Why didn't these people use the xterm code. Why reinvent the wheeel???

    9. Re:Already been done by raduf · · Score: 1


      Mod the parent up. It's the best example of code reuse and component programming in history.

      The big problem with software components is the interface. Not the software interface, the other one: the GUI. No matter if it's browser-based or window-based, it remains a fact that a small change in interface requires a similar change on many levels of depth along the chain of components.

      At the very least, you have to separate the software in Interface Software and Do Stuff Software, and to put them together is considerable effort. This is pretty much the multi-tier philosophy of web applications. It's good enough, but it's far from "cut and paste" component programming.

      That's partly why components work very well in non-UI environments (libraries, unix shell). If anyone finds a way to go around this problem, lots of programmers will be out of jobs :p But the remaining ones will be much happier.

    10. Re:Already been done by MindKata · · Score: 0
      --
      There are 10 kinds of people in the world... those who understand binary and those who don't.
    11. Re:Already been done by TuringTest · · Score: 1

      I'm trying to solve that very problem as my PhD. My solution would involve using "semantic web" formats (which are kind of superior forms of XML, or restricted forms of logic) to represent data, and tags (a la del.icio.us) allowing users to build meaningful data collections without programming a backend.

      The yet unsolved part is how to give users the power to automate common tasks. I plan to use end-user programming techniques for this.

      You've expressed the problem in a very concise way. There are already systems trying to bring the Unix philosophy to the User environment, like Archy and the Haystack project, which use different but related approaches.

      --
      Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
    12. Re:Already been done by raduf · · Score: 1

      Thanks for the links. I took a peek and they're interesting but don't look like they're ready for the real world just yet.

      I discovered Lisp last year. Unfortunately I don't have time to learn beyond simple programs (though i still intend to) but i loved the concept of tackling the problem from the other end: instead of having an environment simple enough for everybody to use, have one so powefull that skilled programers can turn it into specific languages for specific problems.
      I don't know how this applies to the interface problem, but reading this in your links my mind automaticaly went to lisp. Helps a lot that the basic syntax can be learned in a minute: (function parameter1 parameter2 ... parameterN). The rest can be as problem-specific as needed.

    13. Re:Already been done by TuringTest · · Score: 1

      Lisp is the mother of all languages :-)

      Once you learn it, you achieve the zen of programming - lisp is the closest possible language to the mathematical definition of computing. Have you read The Little Lisper? (republished later as The Little Schemer). You can read it in a few evenings, learning some deep programming paradigms and the basics of several complex applications, including compilers.

      End-user programming has already had one big success in its history: the Spreadsheet. Programmers of visual languages consider that spreadsheets are the most versatile (and most widespread) modelling language to date; problems of many different domains can be expressed with cells and functions, and non-programmers can use it efficiently to that end.

      This flexibility is grounded on the same principles as Lisp: a simple syntax without special cases, which can be used to build any grammar on it. Mi goal is to find a similar language wich can model automatic tasks the same way as the spreadsheet can model data. I'm still in a phase where I accept suggestions :-)

      --
      Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
  3. not everything by crankshot999 · · Score: 0

    microsoft will never go open source, the only code they reused in vista was the bugs!

    1. Re:not everything by Orion+Blastar · · Score: 0, Troll

      Yeah Windows XP bugs makes up 90% of the source code. The other 10% was stolen^H^H^H^H^H^H borrowed from DEC VMS and *BSD Unix source code.

      --
      Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  4. Good Idea by fatman22 · · Score: 3, Funny

    Code recycling, and that word was chosen specifically for this case, is a time-honored and proven concept. One just has to look at Microsoft's products to see that.

    1. Re:Good Idea by Anonymous Coward · · Score: 0
      Code recycling, and that word was chosen specifically for this case, is a time-honored and proven concept. One just has to look at Microsoft's products to see that.
      Thanks for the good laugh^_^
    2. Re:Good Idea by Atroxodisse · · Score: 1

      It's not only funny, it's true. Microsoft isn't the only company though. Companies are constantly using software designed out side of house. Sometimes the company gets acquired in the process.

      --
      Read my short stories - You won't regret it.
    3. Re:Good Idea by jbourj · · Score: 1

      Also (but not altogether negatively) consider how much money Google is making by simply shifting through other people's news and presenting it in a 'rehashed'-way.

    4. Re:Good Idea by Cylix · · Score: 1

      Though I would honestly say this is Code Fear Mongering...

      The question depicts a scene in which no one can maintain the core bits of the system and then attempts to align that vision with some current hacks.

      Yeah, people do odd things sometimes and usually they have a reason. Just because one practice is available does not mean the entire future will take that path.

      The most beautiful thing about systems is they can be abstracted on some level or else we would all be lost in a sea of machine language.

      Case in point, while not everyone can design and build a motor vehicle from scratch... it's not beyond the reach of man. However, despite all of the intricate complexities of a vehicle will still manage to design and produce them. I wonder why even horribly convoluted software couldn't take a similar approach. (However, I do have my doubts that we will reach that stage in my life time)

      Fear and loathing on the PCI bus.

      --
      "You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
    5. Re:Good Idea by jcr · · Score: 1

      That's not recycling, that's composting.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    6. Re:Good Idea by Anonymous Coward · · Score: 0

      DNA code recycling is also a time-tested and working method from billion years ago.

    7. Re:Good Idea by Temprasphere · · Score: 1

      Code recycling is good i ask people how many times they find themselves using code they wrote before using open code, its open for a reason. half the time i findmyself seeing code..and only giving me an idea to write my own .

    8. Re:Good Idea by Grax · · Score: 1

      Today's computer are so complex that code re-use is only the only natural way to progress.
      Any time you don't start coding in raw machine language you are re-using code.

      Developers learn first to code at a high-level. As they progress they learn the limitations of coding at a high-level and occasionally drop down to the lower levels. (One advantage of open-source programming is the ability to do that.)

      The low-level programming is there to enable the high-level programming and works best when it can be mostly forgotten. We need programmers who can understand programming at all the different levels and that can select the proper level for the job.

    9. Re:Good Idea by jongleur · · Score: 1

      And for every successful modification, there are 999 unsuccessful modifications. Nature isn't kind to mutations, most of them are completely unsuccesful and result in the death of the organism.

      OTH, these numbers probably aren't all that far off from number of successful programs. You start with the programs that someone thinks of, but are so useless or unworkable that they can't find a backer or buyer for them, so they never make it to the store shelf. Then go to the programs that actually make it as far as the store shelves, versus those that might be found there five years later....

  5. Oh my by Lord+Duran · · Score: 2, Insightful

    If you think debugging is a pain NOW...

    1. Re:Oh my by Ethan+Allison · · Score: 1

      All the components in the repository would already be debugged though.

    2. Re:Oh my by ThosLives · · Score: 1
      All the components in the repository would already be debugged though.

      Doesn't matter; you still have to debug the interface between components, and that is actually a very difficult task. I've not seen a hard number, but I've heard estimates that the complexity is something like O(n^2) where n is the number of components that interface. My guess is it's more like a geometric progression than n^2, though.

      Re-using a part that wasn't necessarily designed for the specific task at hand often has unexpected consequences (sometimes positive, but usually quite negative).

      --
      "There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
  6. We could call these parts... by Threni · · Score: 1

    ..."Objects"! Perhaps have a framework to enable the interconnections of these objects, perhaps entitled the Common Object Model. I think you're on to something! Quick - base an operating system around it! It would probably rapidly become the worlds most popular one!

    1. Re:We could call these parts... by Chaoticmass · · Score: 1

      No, we should call it component object model instead!

    2. Re:We could call these parts... by Threni · · Score: 1

      > No, we should call it component object model instead!

      That's a great idea! (I should take my .NET hat off when talking about old Microsoft technology...)

    3. Re:We could call these parts... by AndrewNeo · · Score: 1

      Why bother? After you go through the trouble of making up this operating system, you'll get the idea that you should make an entirely new system where the parts are called "assemblies" and they're linked together with references.. Maybe you could name the system after a TLD again, too. .ORG or .GOV or something.

    4. Re:We could call these parts... by doom · · Score: 1
      How about the Common Object Request Broker Architechture?

      Or perhaps the Simple Object Access Protocol?

      Or maybe we should give it a REST.

    5. Re:We could call these parts... by Anonymous Coward · · Score: 0

      > Maybe you could name the system after a TLD again, too. .ORG or .GOV or something.

      .NOT!

    6. Re:We could call these parts... by HeroreV · · Score: 1

      Poo! You left out XPCOM!

  7. That'll be the day by Curien · · Score: 1

    I predict that this will happen shortly after all composers simply re-arrange themes and phrases from previous musical pieces in order to create any new compositions and authors simply splice paragraphs from existing books to form new ones.

    --
    It's always a long day... 86400 doesn't fit into a short.
    1. Re:That'll be the day by CRCulver · · Score: 1

      I predict that this will happen shortly after all composers simply re-arrange themes and phrases from previous musical pieces in order to create any new compositions...

      Already been done at least as far back as 1968. The third movement of Berio's Sinfonia is just a cut-up version of a movement from a Mahler symphony with quotations from fourteen other composers interspliced. Schnittke's Concerti Grossi are based heavily on Bach with most of the original content being only the arrangement. Heck, even Saariaho has written new works with the same musical content as a previous once (Pres, Petals, Nymphea Reflection).

      and authors simply splice paragraphs from existing books to form new ones.

      This is already done with romance novels. There is software that can write them for you.

    2. Re:That'll be the day by B3ryllium · · Score: 2, Funny

      It's called "Pop Music". Or, more specifically, "Nickelback". :)

    3. Re:That'll be the day by Korin43 · · Score: 1

      So you mean that this will be sufficient for old programs that no one cares about and porn?

    4. Re:That'll be the day by Anonymous Coward · · Score: 0

      It is arguable that they already do this, through their subconsciouses.

    5. Re:That'll be the day by timeOday · · Score: 1

      It has already happened. Take linux: there's hardly a program out there that doesn't use libc. It's almost impossible to find a GUI program that doesn't use libX11. When's the last time you implemented sin()?

    6. Re:That'll be the day by Anonymous Coward · · Score: 0

      Two weeks ago (on the Parallax Propeller).

    7. Re:That'll be the day by Anonymous Coward · · Score: 0

      Also, modern musicians such as Amon Tobin and DJ Shadow have created unique albums created entirely of samples.

    8. Re:That'll be the day by StarfishOne · · Score: 1

      "I predict that this will happen shortly after all composers simply re-arrange themes and phrases from previous musical pieces in order to create any new compositions and authors simply splice paragraphs from existing books to form new ones."

      As in remixes and sampling? ;)

    9. Re:That'll be the day by cyberon22 · · Score: 1

      Bach himself actually heavily reused his own compositions. During his time in Leipzig the man would write shorter pieces regularly for weekly church services, and incorporate the music into his various passions, concertos and other longer pieces. He would often change the instruments and experiment in other ways, but the melodies and themes would stay the same.

      This is actually one of the major techniques used to authenticate the pieces Bach himself wrote from those he merely copied or transcribed by hand. I actually believe this is one of the reasons the authorship of the famous Toccata and Fugue is D minor is in doubt. It is such an original piece sharing so little in common with his other work that there are reasonably claims to be made that Bach merely transcribed the piece (he did so for a lot of other works, including those from family), even though the only copy we have of the music is in Bach's handwriting.

  8. Isn't that the point? by Tony · · Score: 1

    More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components. These parts are then made to interoperate through wrappers and glue code.

    Isn't that the point of Free software? That it is flexible, that we have the source code so we *can* make it do just what we want, rather than be limited by the original authors?

    What's the point of coding from scratch if you don't have to?

    --
    Microsoft is to software what Budweiser is to beer.
    1. Re:Isn't that the point? by msobkow · · Score: 1

      Distributed systems are designed for component integration from day one.

      Has everyone been sleeping?

      --
      I do not fail; I succeed at finding out what does not work.
    2. Re:Isn't that the point? by bmnic01 · · Score: 1

      Yep ... that is the point. Vinge has some interesting and entertaining ideas and "logical derivations" of ideas that he explores across a few books -- see his latest -- and he's an excellent writer. But the idea of component assembly goes back a ways.

    3. Re:Isn't that the point? by hemorex · · Score: 1
      What's the point of coding from scratch if you don't have to?
      Three words, and I swear I'm not making this up:
      If (False) Then
  9. Vernor Vinge is an idiot. by Anonymous Coward · · Score: 0

    Why do geeks idolize authors who have no idea about how the real world works?

    1. Re:Vernor Vinge is an idiot. by petrus4 · · Score: 1

      Because he has some cool ideas. Sure, they might have zero practicality or association with the real world...but they're still cool. ;)

    2. Re:Vernor Vinge is an idiot. by Anonymous Coward · · Score: 0

      Also, Vernor Vinge is a computer science professor. One reason his books are popular with geeks is because he actually does borrow very heavily from the real computer science world.

      Of course, some jackass will now say "computer science, pah, that's baloney, not real at all". Of course, he'd be saying it on the fucking internet, a product of early computer science (you try making an internet without routing algorithms...), so he really would be a total jackass.

    3. Re:Vernor Vinge is an idiot. by cp.tar · · Score: 1
      Vernor Vinge is a computer science professor. One reason his books are popular with geeks is because he actually does borrow very heavily from the real computer science world.

      I, for one, was very pleased to see, among other things, the use of Unix time in A Deepness in the Sky.
      The friend who'd lent me the book was also amused when I explained it to him... (not every SF lover is a computer geek)

      --
      Ignore this signature. By order.
    4. Re:Vernor Vinge is an idiot. by Benzido · · Score: 1

      I my experience, people who refer to the 'real world' and claim to know 'how the real world works' are in fact completely incapable of defining what 'real' or 'real world' means, and incapable of explaining why we should be talking about this 'real world' rather than some other opposing world.

      Mostly we are admonished to talk about the 'real world' when someone feels that we are talking too much about ideas or abstracts. But much of what we know about the 'real world' was discovered through abstract, foundational or theoretical ideas, by people who were no doubt often told that their ideas had no significance in the 'real world'. I have this creeping suspicion that in this usage, 'the real world' often means 'my limited and narrow experience'.

    5. Re:Vernor Vinge is an idiot. by ClosedSource · · Score: 1

      And some other guy will try to argue that there's some logical flaw in the idea that a CS professor doesn't understand real-world software development just because this idea is expressed on a product of computer science.

      Of course, most of the technology that made the Internet possible was created by individuals who were not trained in computer science and were not academics, but that's another issue.

    6. Re:Vernor Vinge is an idiot. by Anonymous Coward · · Score: 0

      much of what we know about the 'real world' was discovered through abstract, foundational or theoretical ideas

      Bullshit. Everything we know about the physical world was discovered through experiments and interactions with that world. Nothing about the real world has been discovered through pure thought - pure thought has merely provided mathematical models, and we don't even have one of those that actually fits every experiment yet. It seems the real world is too confusing for our puny minds to unravel.

      by people who were no doubt often told that their ideas had no significance in the 'real world'.

      Yes, yes, but for every useful model that was rejected by this method, a thousand useless ones were also rejected. And the useful ones shone through anyway. Conservatism in science is a pre-requisite, not an issue.

  10. Did we ever really code from scratch? by Anonymous Coward · · Score: 1, Insightful

    Machine language maybe. But if you are using the for loops, arrays, stacks, conditions, or whatever of your high-level language, you are already reusing code at that point. We just keep taking the theft to higher and higher levels. All good art starts with theft.

    1. Re:Did we ever really code from scratch? by Anonymous Coward · · Score: 1, Insightful

      Its not theft when the people are intentionally creating the programming language for you to use and giving the consent for you to use it.

      Furthermore, its not "All good art starts with theft" its "Good artists copy, great artists steal".

    2. Re:Did we ever really code from scratch? by heinousjay · · Score: 1

      Wow, you thieves sure get defensive when you're caught.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    3. Re:Did we ever really code from scratch? by Jeremi · · Score: 1
      Machine language maybe.


      Oh sure. Writing machine language to run on a nice pre-designed, pre-built piece of hardware that someone else had to create for you.


      Pansies. For Real engineers, the first stage of software design is the design and fabrication of the hardware it will run on.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    4. Re:Did we ever really code from scratch? by AnarkiNet · · Score: 1

      Before you can design the hardware, you have to make, by hand, the paper the schematic is drawn on.

    5. Re:Did we ever really code from scratch? by The_Wilschon · · Score: 1

      I generally start writing a program by creating the universe. (With apologies to Carl Sagan)

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    6. Re:Did we ever really code from scratch? by 2008 · · Score: 1

      > Before you can design the hardware, you have to make, by hand, the paper the schematic is drawn on.

      OK, so long as I get to father all the thousands of workers I'll need to run the chip fab.

      --
      I quit!
  11. It depends on the application by technoextreme · · Score: 2, Interesting

    I certainly do not want to be developing the same common hardware implementation for a FPGA over and over and over again. Give me something the code for something that works and let me get to the stuff that is unique to the project.

    --
    Ooo man the floppy drive is broken. No wait. The computer is just upside down.
  12. Pay Me. by KermodeBear · · Score: 1
    What do software developers think about their projects being used in such a way?
    Fine with me as long as they pay the licensing fees.
    --
    Love sees no species.
  13. Has anyone else found by majutsu · · Score: 1

    code reuse works best in languages like lisp and not so much in C/C++ family? I'm saying this mostly because in lisp I can drop down to almost any section of code instantly (most of the time, not always) while C/C++ IDEs tracking down a bug on large codebases can be a day long job frequently.

    In the other languages, I often feel like treading in a minefield when reusing anything less than proven APIs or functions, let alone entire codebases.

    1. Re:Has anyone else found by Eideewt · · Score: 1

      I suspect this may be partly due to the lispniks' mania for writing general functions. After all, why settle for something that works when you could spend just a little more time writing something that works in every way you might try to use it?

    2. Re:Has anyone else found by GrievousMistake · · Score: 1

      Actually, Java might be the language to look to here. Strictly defined interfaces and forced modularity and object-orientation... For a simple application you would mostly just import the required compontents and glue them together.

      Of course Java isn't unique in that, and there's probably languages around now that handles it even better, but it is one of the mature and popular languages, and it's specifically designed for component reuse, not code reuse.

      It's strange, though, the summary talks about 'code reuse', noting that 'More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components.'
      Shouldn't this mean future code should be coded more modular and object-oriented, not that in the future we will be copy/pasting and refactoring code from code repositories?

      --
      In a fair world, refrigerators would make electricity.
    3. Re:Has anyone else found by majutsu · · Score: 1

      Yeah, must be the lambda calculus heritage....

  14. Turtles all the way down... by AlXtreme · · Score: 1

    If a piece of open source software is used as a component often enough, people will turn it into a component (through an API, plugins, software packages, modules etc). This improves the overall design of the software and allows better code reuse, but more importantly reduces maintainance issues by allowing developers to upgrade components with relative ease. I see this as a "Good Thing(tm)".

    --
    This sig is intentionally left blank
    1. Re:Turtles all the way down... by j-pimp · · Score: 1
      This improves the overall design of the software and allows better code reuse, but more importantly reduces maintainance issues by allowing developers to upgrade components with relative ease.

      I disagree. Sometimes it happens as you describes. Other times eg: Blat someone simply renames main(), exports it with name decorations properly stripped, and calls it a DLL for use in vb 6. Except it takes one parameter, the command line arguments.

      --
      --- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
  15. I read it and.. by Anonymous Coward · · Score: 0

    think Visual Studio!

  16. Ridiculous. by Max+Threshold · · Score: 0, Troll

    This idea is being pushed by suits who think it will cut costs and increase profits. And it probably will, in the short term... as long as your customers lower their expectations instead of jumping ship. Welcome to the future of unmaintainable garbage software. (Then again, if you've been running Windows you probably won't notice the difference.)

    1. Re:Ridiculous. by innosent · · Score: 1

      No, this is common practice, because it often just makes sense. Maintaining a set of common components means that when you do reuse a piece, you can maintain it once, and release the updated component to all of the affected software. So if you have 30 different customer applications that all use the same iText based report generators, you only have to fix a bug in one place, or add a new feature (like a new type of chart) in one place, and you can release the update for all 30 applications (and satisfy your 30 maintenance contracts). I have a set of my own components and FOSS components (like iText), that I reuse for various common features, and I'm sure the big companies (CA for example) do the same.

      --
      --That's the point of being root, you can do anything you want, even if it's stupid.
    2. Re:Ridiculous. by rm999 · · Score: 1

      "Welcome to the future of unmaintainable garbage software."

      That's a strong statement. I disagree - I think a strong component library will actually improve maintainability of software by an incredible amount. Software Engineering is the last major engineering field to realize a useful and standardized component model. Electronics would be nowhere without IC's. Mechanical engineering would be nowhere if people had to design motors and engines seperately for each application.

      All this increases maintanilbity by decreasing debugging time when something goes wrong.

    3. Re:Ridiculous. by Max+Threshold · · Score: 1

      Sounds great, in theory. But in the real world, most code (other people's code... always other people's) isn't that well modularized and can't be reused without introducing lots of bugs to an application. Every hour saved writing code will cost you three in debugging and re-writing.

    4. Re:Ridiculous. by Anonymous Coward · · Score: 0

      Windows XP works very well. You should stop posting. You're worthless.

    5. Re:Ridiculous. by Jeremi · · Score: 1
      But in the real world, most code (other people's code... always other people's) isn't that well modularized and can't be reused without introducing lots of bugs to an application.


      Very true... that's why it is your job as a software engineer to think long and hard about what code libraries you will use as part of your project. Choose well, and your problem is already partially solved.... choose poorly, and your project can be doomed to failure before it even begins.


      Every hour saved writing code will cost you three in debugging and re-writing.


      If you adopted buggy code, yes. But adopting poor/inappropriate code was your mistake.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    6. Re:Ridiculous. by I+Like+Pudding · · Score: 1

      > So if you have 30 different customer applications that all use the same iText based report generators, you only have to fix a bug in one place, or add a new feature (like a new type of chart) in one place, and you can release the update for all 30 applications ...and break half of them

  17. Just ain't going to happen by syousef · · Score: 1

    Nice piece of science fiction but the reality is there are orders of magnitude more things that can be done writing new pieces of code from scratch than just combining existing ones. People paying for the software tend to make sometimes ridiculous demands on customisation of everything from look and feel to algorithms for doing the actual work for everything from transaction processing, science or graphics. Therefore new snippets will continually need to be coded.

    What we're talking about here is the reuse of libraries. It's actually good practice to find a library and use a tested piece of code if you're doing something, than to go out and re-write it from scratch. My experience is that most developers are bad at searching for and reusing code from their own projects let alone from some vast archive (aka the Internet). The tools and processes in place for finding code that you can trust and that does what you want are so poor that at present we're far from even this level of reuse. Hell coders keep re-writing string handling routines that exist aplenty. But where do I find test cases and results for the existing libraries that I can examine. The quality of the libraries varies widely by language and area of functionality. If I trust the libraries I end up writing code that doesn't work and cop flak for it.

    For example nothing wrong with Java String handling, but have you ever tried to use the standard date parsing routines. Hint: Even with lenient=false it does try to guess what you've meant to enter if you enter something that's close to being a real date. If you want to reject incorrect input, you've got to write it yourself. This isn't an excercise in Java bashing - every language has areas of weakness in the libraries - but it does explain why programmers often prefer to write it themselves. Even if they do decide to reuse, if they're not careful to retest the algorithms, they are taking big risks in terms of getting working functionality at the end of the day.

    --
    These posts express my own personal views, not those of my employer
  18. A Fire Upon the Deep by colaco · · Score: 1

    I'm pretty sure that the novel of Vernor Ving that talks about this issue is "A Fire Upon the Deep" and not the "Deepness in the Sky". The later is a prequel of the former. "A Fire Upon the Deep" was also one of the first science fiction novels to portrait Usenet.

    1. Re:A Fire Upon the Deep by realmolo · · Score: 1

      Well, there is a lot more talk about "code re-use", and programming in general, in "A Deepness in the Sky". Sytem software is something of a major part of the plot.

      "A Fire Upon the Deep" doesn't go into nearly as much detail about such things.

      Incidentally, I thought "A Fire Upon the Deep" was a much better book, partially because it doesn't obsess over the details like "Deepness" does.

    2. Re:A Fire Upon the Deep by Digi-John · · Score: 1

      I'm pretty sure that it is Deepness that details Pham Nuwen's work in code archaeology. I suppose this would have something to do with Slow Zoners not having AI to handle code for them, the way the Beyonders of "A Fire Upon the Deep" would.

      --
      Klingon programs don't timeshare, they battle for supremacy.
    3. Re:A Fire Upon the Deep by Digi-John · · Score: 1

      "Fire" is a much better action book, in my opinion, but I believe that "Deepness" is the overall superior book *because* of the obsession over details you mention. Now, if you were going to suggest which book someone should read first, "Fire" is definitely the one.

      --
      Klingon programs don't timeshare, they battle for supremacy.
    4. Re:A Fire Upon the Deep by Anonymous Coward · · Score: 0

      I don't think A Fire Upon the Deep mentions program "archaeology" as such. A Deepness Upon the Sky goes into detail about Pham's early training as a programmer-archaeologist; I think FUtD only refers to him as a "programmer-at-arms".

    5. Re:A Fire Upon the Deep by Anonymous Coward · · Score: 0

      I'm pretty sure that the novel of Vernor Ving that talks about this issue is "A Fire Upon the Deep" and not the "Deepness in the Sky".

      You are also pretty wrong.

    6. Re:A Fire Upon the Deep by maetenloch · · Score: 1

      Yes, a key plot point was that Pham Nuwen had been around so long that he knew layers of the software and hardware that no one else did. This essentially gave him a backdoor into the systems that he could use against the Emergents.

  19. Service Oriented Architecture by bigtallmofo · · Score: 3, Informative

    The promise of SOA says that you won't have to do this. If you believe in that promise then anyone that develops projects in the future will create them in discrete elements that are accessible as a web service. If you want to start a new development project, just utilize those services that you need and ignore the ones you don't. Because the functionality is encapsulated (and therefore, written, debugged and tested) within the service you're good to go.

    I see application projects in the future acting like glue that holds many services like this together and makes them more than the sum of their parts.

    --
    I'm a big tall mofo.
    1. Re:Service Oriented Architecture by Anonymous Coward · · Score: 0

      That's the key. Using/orchestrating web services and such is where it's at. I think we're slowly getting there. We'll need some solid versioning systems (old apps using web services that have been updated and now work differently) and such things. Hopefully SOA knowledge will get more popular (you don't find highly skilled SOA engineers everywhere and they won't work for a dime either), more books/better education for it, better software to make it all happen, etc. Web services are a true godsend for interoperability (totally platform and language independent). But overall, I think we're getting there. Windows Communication Foundation [WCF a.k.a. Indigo] is looking very, very good too.

    2. Re:Service Oriented Architecture by Anonymous Coward · · Score: 0

      I see application projects in the future acting like glue that holds many services like this together and makes them more than the sum of their parts.

      Ummm, glue a bunch of other peoples crap together to make my project? NO THANKS! I'll use shared libraries that other people wrote and have debugged. But I want my projects to end up being something other than an inifficient glue ball of other peoples code! So I will continue to write the underlying application logic from scratch, the way it SHOULD be done! And when you start running into scaling problems because your relying on a cludge ball of glued together parts, I'll be sailing along smoothly with an application that is fully optimized and multithreaded.

      No, this isn't the first time I have heard this nonesense about applications of the future becoming "too complex" to code from scratch. Nope, people said this in the early 90s, and the early 80s, and the early 70s... Gee, seems to me plenty of well designed, highly complex apps are still written from the ground up today! And talented programmers of the future will continue to do so regardless of this sky-is-falling style FUD. And programmers of lessor capability will continue to have these pie-in-the-sky dreams of not having to think too much to keep their jobs. Of course there is always a home at Microlimp for those people...

      Getting it done quick and easy usually has negative long term repercussions. This my credo as a programmer!

    3. Re:Service Oriented Architecture by twiddlingbits · · Score: 2, Informative

      SOA does not require everything to be made into a web service to be useful and accessible. A service-oriented architecture is NOT tied to a specific technology and may be implemented using interoperability standards including RPC, DCOM, ORB or WSDL or anything else for that matter as long as the interface is defined and published. An application that wants to use the services just builds a contract with the service and off you go. The implementation of the interface is hidden so it could be in .NET, Java, C++, etc. Web Services was the baby steps of SOA, now vendors are talking about doing it with entire applications (EAI). For those of us who have been around software for the last 25 yrs, this is just a re-working of the 1980's Software Engineering where we called it abstraction, modular, encapsulation, and loose-coupling. Reference the programming models for Ada and Ada95 for example. The evolution is in the generalized definition and acceptance of a set of industry standard mechanisms for defining and implementing the interface contracts versus one-off versions written for a specific application. The premise of the Sci-fi story is already beginning to come true. In fact, if you look at a lot of the older sci-fi a LOT of those suppositions about technology (and some about society) have come true.

    4. Re:Service Oriented Architecture by Marcos+Eliziario · · Score: 1

      It looks like it's a long time since you've writen your last line of code, probably Visual Basic code.

      --
      Your ad could be here!
    5. Re:Service Oriented Architecture by Anonymous Coward · · Score: 0

      About 15 minutes ago, and I don't ever write VB crap.

      Sounds like it's long time since your head's been out of your ass, probably you're gay.

    6. Re:Service Oriented Architecture by ashultz · · Score: 1

      Because everyone loves services. There's nothing you wouldn't send out to a random web service - decryption, intensive renders, GUI interaction, file access, event monitoring...

      And the guys in accounting will be thrilled to find out you're crushing their currency exchange web service by converting the prices of the entire stock market once every ten seconds. Thrilled! They'll probably publish all their web services so you can do the same thing to all of them.

    7. Re:Service Oriented Architecture by LifesABeach · · Score: 1

      I can not help but wonder if the reuse of code, and code methodologies is starting to mature for Linux? If this is so, then what will follow is a look inward to the various modules already created. People will start to find those methods that are more useful, and for what types of applications. documentation on those modules will increase, and the understanding of use will become more refined. Here lies the personal nightmare of close source solutions.

    8. Re:Service Oriented Architecture by Marcos+Eliziario · · Score: 1

      Sounds like you are a really narrow minded programmer, that believes in every crap or buzzword the industry throws at you. Btw, calling someone "Gay" as a offense is a strong indication of your repressed desires.

      --
      Your ad could be here!
    9. Re:Service Oriented Architecture by samael · · Score: 2, Interesting

      The promise of SOA is, sadly, not terribly accurate.

      Services change over time, new projects need extra bits of information, changes regulations mean that input that was allowed no longer is, etc. And you either end up with 300 different versions of each business service, so that older clients can still talk to their version of the service, or you have to update the clients whenever the server versions change.

      They're still useful - we use them a lot where I work, but they aren't a silver bullet.

  20. That book... by fm6 · · Score: 1

    ...though basically well written, is full of dumb ideas. This particular dumb idea comes from the notion that the development tools we use now are pretty much as sophisticated as they're ever going to get. That's right up there with the famous urban legend about the proposal to close the patent office.

    Vinge's problem is that he makes too much of the famous failures of AI, and has fallen in with the camp that believes that software will never be able to compete with wetware. That has yet to be proven, but even if its true, simply replicating human intelligence (so-called "hard AI") is not the only strategy.

    1. Re:That book... by Anonymous Coward · · Score: 0

      This particular dumb idea comes from the notion that the development tools we use now are pretty much as sophisticated as they're ever going to get. [...] Vinge's problem is that he makes too much of the famous failures of AI, and has fallen in with the camp that believes that software will never be able to compete with wetware.

      Vinge's premise is not that AI is fundamentally impossible — transhuman intelligence is certainly possible in the Transcend. He just thought it would be a cute idea if AI never pans out on Earth, because the laws of physics here prohibit it. It's science fiction, you know. He doesn't actually believe that the Earth is located in the middle of a Slow Zone in the galaxy, nor does he believe that strong AI is impossible in real life. This is the guy who wrote that essay on the technological singularity, remember?

    2. Re:That book... by IICV · · Score: 1
      Vinge's problem is that he makes too much of the famous failures of AI, and has fallen in with the camp that believes that software will never be able to compete with wetware.

      Do you realize you're accusing an author of being wrong about what happens in the world he created? It's like telling Tolkien "No no no, elves are short and happy and wear pointy hats and work for Santa, they're not elegant beings who have been around since the dawn of time".

      Just so you know, since I don't remember if it's actually in that novel, one of the basises of the Zones of Thought scenario is that it becomes easier to do nifty ultra-high-tech stuff the further out from the galactic core you go - and as I recall, Deepness in the Sky takes place in a region of space where the best AI you can make is retarded moron level or worse.

      And also, I'm pretty sure that for Vinge, software will never "compete" with wetware. They'll just merge - look up The Cookie Monster, Fast Times at Fairmount High, True Names, and apparently also Rainbow's End though I have not read that yet.

    3. Re:That book... by fm6 · · Score: 1

      Oh please. Creating an imaginary past based on current mythology is not the same thing as speculating about a possible future based on current technology.

    4. Re:That book... by imsabbel · · Score: 1

      You criticism is a bit... flat.

      You know, he build an universe, where technological progress just isnt infinite where humans live.

      Also, your first statement is at best ambigous. Do you mean the present tense in the time of the book? Or nowaday technology?
      For the last one: You realize they good ramscoop spacedrives, live for 500 years and can do just about anything you expect from a not-quite far future SciFi enviroment.

      And if you mean the first one: Actually try to understand the book. Technological progress is limited there by the inevitable collaple of civilisation after a few 1000 years, so progress "tops off". Traders like the queng ho can scavage the best whereever they stop, but just because they are so few, and traveltime is so long, its a slow thing.

      Not to mention that you failed the whole concept of the galaxy of zones. To truly appreciate the context of the book, one should have read A Fire upon the Deep before (as without it, one doesnt really "get" the ending).

      --
      HI O WISE PRINCE. WHT TOOK U SO DAM LONG?
    5. Re:That book... by fm6 · · Score: 1
      He just thought it would be a cute idea if AI never pans out on Earth, because the laws of physics here prohibit it.

      You same to think that Vinge invented the AI issue all by himself. If you ever read anything besides SF, you'd know that he's part of a larger stream of thought that says, "AI is fundamentally impossible."

      All the Transcend stories do is invent an imaginary physics that say AI is possible under certain circumstances, just as stories with FTL spacecraft invent an imaginary physics where you can travel faster than light. Vinge isn't saying he really thinks AI is possible any more than all those other writers were saying they thought Einstein was an idiot.

    6. Re:That book... by NickFortune · · Score: 1
      Vinge's problem is that he makes too much of the famous failures of AI, and has fallen in with the camp that believes that software will never be able to compete with wetware.
      That doesn't sound much like the Vinge novels I've read. In fact the companion novel to A Deepness In The Sky, A Fire Upon the Deep operates from the assumption that true AI is godlike in comparison to any biological intelligence.
      --
      Don't let THEM immanentize the Eschaton!
    7. Re:That book... by Anonymous Coward · · Score: 0

      If you ever read anything besides SF, you'd know that he's part of a larger stream of thought that says, "AI is fundamentally impossible."

      You're ignorant. Vinge has never argued that. Quite the opposite. Read his Singularity essay, for one. Or much of his pre-Zones of Thought fiction. Vinge is rather pro-strong AI. Certainly there is a "stream of thought" that says that AI is fundamentally impossible, but Vinge is most certainly not a part of it.

      All the Transcend stories do is invent an imaginary physics that say AI is possible under certain circumstances,

      Actually, they invent an imaginary physics that prevents AI from being possible under certain circumstances. The ending of A Fire Upon the Deep, if you bother to re-read it, implied that Powers beyond the Powers created the Slow Zone and the Beyond in order to protect species from the transhuman intelligences.

      Vinge isn't saying he really thinks AI is possible any more than all those other writers were saying they thought Einstein was an idiot.

      You quite obviously have never read any of Vinge's essays or interviews about AI, nor any of his other fiction.

    8. Re:That book... by Doctor+Memory · · Score: 1
      Do you realize you're accusing an author of being wrong about what happens in the world he created?

      No he's not, he's accusing the author of basing one of the cornerstones of his world on a faulty or falsely-justified premise. Usually, this just means that the particular reader isn't interested in willingly suspending their disbelief on the point in question. It's more akin to someone telling Tolkien "There's no such thing as elves, this whole story is bogus!"
      --
      Just junk food for thought...
    9. Re:That book... by ansible · · Score: 1

      The one time when I really want to use some mod points to elevate a good set of anonymous coward posts... is the time I don't have them.

      Sigh... to user fm6: Please, please read Vinge's A Fire Upon the Deep. It is a cracking good SF novel in its own right, and explains what's going on with the Zones of Thought. Or at least hop on over to Wikipedia and get the summary, and links to further commentary. I assure you that Vinge is about as far away from Roger Penrose as anyone can get.

    10. Re:That book... by fm6 · · Score: 1

      That book assumes that the physical limitations that make AI impossible don't apply everywhere. It still assumes that the limitations exist. Indeed if I remember the story correctly (it's been a long time, and Vinge is not one of those authors I enjoy re-reading) there initially is a huge region where AI is possible but the good guys destroy it in order to defeat an evil intelligence, a sort of computer virus that infects whole cultures. That leaves most of the galaxy in its current state. Or at least what the anti-AI crowd insists is its current state — I've always found their logic flawed.

    11. Re:That book... by Anonymous Coward · · Score: 0

      That book assumes that the physical limitations that make AI impossible don't apply everywhere. It still assumes that the limitations exist.

      Yeah, duh, that's the point of the Zones of Thought. The part you ignored, however, is where I told you that the AI-possible Transcend is the default Zone; that the other Zones were created by super-Powers. Vinge does not assume that those limitations are the natural state of affairs; he assumes the opposite.

    12. Re:That book... by NickFortune · · Score: 1
      That book assumes that the physical limitations that make AI impossible don't apply everywhere

      mmm... it still assumes AI is possible. I guess it's a half full/half empty sort of distinction.

      there initially is a huge region where AI is possible but the good guys destroy it in order to defeat an evil intelligence

      Not quite. The second book is a prequel, of sorts. The AI damping effect gets stronger as you approach the center of the galaxy, with a certain threshold being enough to suppress machine self-awareness, FTL, and related effects.

      From that viewpoint, I read the anti-AI pontifications of some the characters in Deepness in the Sky as a bit of subtle mockery of the anti-AI crowd, at least given we knew about the "true" state of affairs. A bit like the way the locals in Fire Upon The Deep were so amused by Pham Nuwen's faith in dual key encryption given a world of "gods" who could trivially brute force anything sort of a one time pad.

      --
      Don't let THEM immanentize the Eschaton!
  21. Components for Linux, anyone? by Amid60 · · Score: 0

    This type of coding had been going on in the Windows world for many years (10?), using glue languages like Visual Basic and off-the-shelf "components". The hackers in the past seemed to deride the folks using this technology. The real code reuse will really take off under Linux only after a unified component architecture is established, similar to much-maligned, but very useful ActiveX on Windows. This plumbing should belong to the OS, at the very least to enforce just one architecture (Linus seems to keep good lid on the option proliferation). Please don't point to many component architectures already available in the open source world - the very fact of multiple choices makes component pretty much useless as anyone who tried to port a non-trivial program from Gnome to KDE knows well.

    1. Re:Components for Linux, anyone? by someone300 · · Score: 2, Insightful

      Component based programming for Linux turned out very different. Since Linux stuff tends to be developed from the bottom up, starting with a library, then a console app, then a GUI, most "components" ended up just being stuff lower on the stack, like libpng, gzip or whatever. That, and file formats tend to be standardised and read with a library, rather than file access being implemented in any specific application that needs to be loaded every time the file needs to be accessed.

      On DOS and Windows, applications tended to be all-in-one blobs that use proprietary file formats and only depend on the operating system itself. Thus, OLE made sense. There was OLE-type technologies on Linux (such as Bonobo and KParts) but they never took off in any big way due to the general lack of need. In most cases, they were just used for automation, which better technologies such as DBus now exist.

      As for "real code reuse" on Linux... try ldd-ing any application and seeing how many other libraries it uses to do it's bidding. Many application's I've written are just sticking together bits and pieces of other libraries, and that's in C++. I'd go as far as saying that code reuse on Linux is currently better than that in Windows. Generating quick applications with Linux tends to be pretty easy using bash, Python and even C, C++ or C#, where libraries have directly translated into "components" and "modules". The thing on Linux slowing down development isn't having to reinvent the wheel every time you write code, but rather, deciding what libraries you want to depend on and the difficulty of the languages favoured in Linux development, like C.

      Since you bring it up, OLE seems to be taking a backseat in Windows now, where ActiveX is rarely used by anything other than IE plugins. Now clipboard/d'n'd/DDE and Microsoft Office are the only times I actively see it being used. COM is still heavily in use by libraries such as DirectX, however. It was never really used to it's full potential, such as to open Photoshop documents in Microsoft's preview application. Windows, with .NET, seems to be more of a developer friendly way of providing and using library components as a developer does in Linux. .NET components remind me of how libraries are used in Linux. IMO this is a cleaner way of working and it's nice that Microsoft are starting to think this way.

    2. Re:Components for Linux, anyone? by Anonymous Coward · · Score: 0

      OLE, COM, ActiveX - they're all the same thing. DirectX <= 9 does not use COM, it uses COM-style interfaces but breaks most of COM's actual rules. I'm sure you know Linux but you sure as hell don't understand COM.

  22. We're already there by Zepalesque · · Score: 2, Insightful

    As the developer of freely available software, I find the prospect of people using my code a mixed bag. Partially, I feel an ownership of the code I write and am somewhat offended by the idea of people using it . However, as a paid engineer, I go through this at regular intervals; older projects get handed to others for support, as I work on new components.

    On the other hand, I welcome the idea that my free code would be used by others - it is a flattering prospect, I suppose.

    Others profit from this sort of re-use: COM, CORBA, Jars, etc...

  23. Practicalities by IanBevan · · Score: 1

    A key barrier to code reuse is that technology marches on. Many advances render older code either obsolete or, at best, cumbersome. Recent examples might, for example, include adding templates to .NET, which rendered vast tracts of our .NET 1.1 internal class libraries obsolete.

  24. Layers of Abstraction by thorholiday · · Score: 1

    Isn't this why we have layers of abstraction, such as high-level programming languages and external libraries?

    Sure, if someone who only knew assembler from 20 years ago saw the GUIs present today, they might agree with the article. Imagine if you had to write a Windows application in pure assembler. It would be ridiculous! But we have languages like C# or the Windows API for C/C++ to aid with these kinds of things.

    As we progress through time, programmers will simply use higher and higher level languages.

    1. Re:Layers of Abstraction by Tony+Hoyle · · Score: 1

      Writing a windows application in pure assembler isn't *that* hard... it's worth doing as an excercise sometime.

      Writing a complex one would probably be impractical due to time constraints rather than difficulty.

    2. Re:Layers of Abstraction by CreateWindowEx · · Score: 1
      As we progress through time, programmers will simply use higher and higher level languages.
      I think there is a continuum that spans making a higher level language to solve a problem, at one extreme, and cobbling together various modules or libraries to solve a problem, on the other. Implementing a solution to a problem as a part of a language is much harder to do well, but it is then easier for the end user to use because as part of the high level language it will interoperate with other parts of the language. Creating some sort of library or app to solve a particular instance of a problem is much easier to do, but then the work of an end user who wants to incorporate it into their application is much harder, and the end result may end up being more ungainly.

      Solutions that are widely needed (e.g., network sockets, encryption, matrix algebra, etc) are more likely to be "worth it" for someone to build into a high level language. Tasks that are more specialized are less likely. Tasks that are easy to solve will probably be solved many times. Everyone has to strike their own balance between code reuse and the overhead of adapting existing code which may contain bugs, or at least limitations, unwanted dependencies, and inefficiencies in speed or memory. Sometimes it ends up being easier in the long run to "roll your own", because then you really understand the topic, you will be in a better place for debugging it, and your solution can be optimal for your situation.

      Embedded and performance-critical applications (or games) are probably going to do more "rolling your own", or else use a prebuilt framework that is fairly specialized (e.g., Unreal engine) and thus somewhat optimal.

      The problem with frameworks, of course, is that the framework wants to dictate the structure of your code, so trying to use two different frameworks that weren't designed to interoperate can lead to a lot of glue code. Designing a really good framework architecture is a very hard problem, so most frameworks are not "really good". Also, using a framework has the disadvantage of making your code locked in to it, and even if it is open source, it might be generally abandoned, so supporting it yourself may not be feasible. This is of course also true of many of the higher level languages. It will also depend on how long the expected lifetime of the code you write is, how many engineers will have to work on it, and what the turnover rate is for engineers.

      Often the choice between using a library or making your own is just an educated guess, and you can get screwed either way. The only constant is that over time, the ability of one person to really understand what is going on in the running of a program is diminished...

  25. Well... by kitsunewarlock · · Score: 1

    Unless we move out of 64-bit architecture, right? I mean, we'll have to by Sunday, December 4, 292,277,026,596 or else we'll have something slightly similiar to Y2K (or Y2038). But really, aren't a lot of virus' and spybots program this way? I wouldn't know; the only thing I could do related to reprogramming a virus or spybot would be renaming the exe file that the dumb@$$ has to open to get his system infected.

    --
    Ginga no Rekshiya Mata Each page.
  26. !News by iamacat · · Score: 1

    Few people write their own C compilers, libc, math libraries, HTTP protocol handlers and so on. If other/bigger components are available, of course they will be reused.

  27. That sounds very familiar... by DM78 · · Score: 1

    I've been working on a MediaWiki modification that details every portion of the function/object/application creation process. The idea was that I could put a function or object together using pre-existing chunks in the wiki and then the end result will automatically be fully commented and based on code that has already been tested and proven.

    No more buffer overflow exploits, no more null pointer dereferences, and no more need for 30+ libraries that have duplicate or similar code in them... or so the thought goes.

    So far, I have a few entries targetted for the 6502 processor and the script that generates the end result code is mostly working... sort of. heh. Eventually, I'll fill it out with more useful stuff and then make it public, but until then, it's just a hobby to pass the time.

    1. Re:That sounds very familiar... by XMyth · · Score: 1
      No more buffer overflow exploits, no more null pointer dereferences, and no more need for 30+ libraries that have duplicate or similar code in them... or so the thought goes.


      -OR-

      A buffer overflow exploit in 20+ apps based on this code.....

      Not saying code-reuse is a bad thing, but to suggest that it eliminates these type of problems is a little short-sighted.
  28. bullshit by timmarhy · · Score: 1

    various "experts" have been talking this nonsense for years. it's never going to happen.

    --
    If you mod me down, I will become more powerful than you can imagine....
  29. Reality by octopus72 · · Score: 1

    Idea about using decades old logic doesn't work. Someone has to mantain all that code: kernel, basic libraries, platform API's etc.

    Problem is, software gets old, obsoleted by new ideas and when next-gen of hardware takes over, so updates are needed all the time. If you don't pay attention, you can end up with cruft like X Windows protocol which people are now trying to fix and improve to compete with other popular OS's.

    Unlike in this novel, actual (best) code search won't need digging, it will be advertised, categorised, documented, just ready to be used.

  30. No way Jose. by 140Mandak262Jamuna · · Score: 3, Insightful
    Yeah, all European Space Agency was trying to do was to use the Ariane 4 code in Ariane 5. And the rocket blew up 40 seconds after the launch. Why? Ariane 5 flies faster than Ariane 4 and hence it has larger lateral velocity. The main software thought the readings were too high and marked lateral velocity sensors as "failed". All four of them. Then without sensors all the computers shut down. The vehicle blew up. But by that time some bean counter had already shown millions of francs in savings, claimed credit for specifying ADA language for flight control software, collected his bonus.

    Some basic tasks like file io or token processing and such minor things might be reused. But even then porting something so simple like a string tokenizer written for a full fledged virtual memory OS like Unix/WinXP to a fixed memory handheld device is highly non trivial, especially if you want to handle multi-byte i18n char streams

    If the author sells what he was smoking while coming up with the article, he stands to make tons of money.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:No way Jose. by StrawberryFrog · · Score: 2, Insightful

      all European Space Agency was trying to do was to use the Ariane 4 code in Ariane 5. And the rocket blew up 40 seconds after the launch. Why? Ariane 5 flies faster than Ariane 4 .. the main software thought the readings were too high and marked lateral velocity sensors as "failed"

      You claim that this rocket failure is due to software reuse. That just sounds wrong to me. I don't think that not starting from scratch is that relevant. I could more convincingly argue that the failure is due to the software not being tested with the input values that it would receive during operational use. That is important, be the code new or old; and when a failure costs millions, not doing so is inexcusable.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    2. Re:No way Jose. by topham · · Score: 1


      Without doing the research required (I'm lazy on the weekend, ok...) I believe the actual cause of the failure was, they loaded a table of values intended for Arian 4, instead of the dataset for the arian 5. This table of values could have been anything from temperature readings, to timeout values, etc.

      Obviously with values specific to the appropriate to the OTHER rocket an imminent failure occurred. Better checking of datasets would have prevented the problem.

      Software re-use wasn't the problem.

    3. Re:No way Jose. by Coryoth · · Score: 1

      It was indeed a reuse error. It wasn't, however, an unavoidable reuse error. Had the code included proper specification, rather than the specification being buried in a vast paper document, then reuse would have worked out fine.

    4. Re:No way Jose. by mce · · Score: 1

      Actually, the whole situation was a lot more complex. There were hardware exceptions (not enough bits to represent data after conversion from floating point to integer), combined with deadly so-called efficieny optimisations (the trap for these hardware exceptions had been disabled), combined with a cascade of other problems in which code mis-interpreted the bits encoding the unexpected hardware exception as normal data.

      On top of all that, the original conversion error occured in a piece of code that had no function once lift-off had occured and that therefore should no longer have been used/active. This actually is another place where the reuse caused problems: the timer that was supposed to switch off the stuff in question was not modified for Ariane 5. After the fact, it also was argued that even for Ariane 4 this switch off was done way too late anyway: as soon as lift-off occured, the sensors in questions were producing nonsense (and as already mentioned: unsued) data anyway. But for Ariane 4 the delay actually was an intended feature that had on one earlier occasion been used to stop and restart the pre-launch countdown in a time-saving way. Note that this indicates yet another mistake: even if the delay feature is intentional and useful as long as the rocket is still on the ground, the software should be written such that it is disabled immediately after lift-off, not X seconds after some pre-launch event. Worst of all, for Ariane 5 the entire setup made no sense at all anyway, not even as a pre-launch time saver.

      And then there was the design (actually specification) mistake that any exception had to result in stopping the processor.

    5. Re:No way Jose. by elmartinos · · Score: 1

      There are a lot of techniques available that can make software reuse possible. One of them is Test Driven Development. When every bit of your functionality is checked with automated tests you can easily put your sourcecode into another contexts, rerun all the tests, and if they are ok it is a good indicator that it will work.

      We also need a paradigm shift to concurrent programming. This will IMHO inevitable happen, as the processors are becoming more and more multicore. The currently used threading model is totally infeasible, we need something like the Erlang model.

      Erlang seems to be on the right track. The thesis Making Reliable Distributed Systems in the Presence of Software Errors should be a must read for everyone who cares about reliable software. We are going to have to live with the fact that software will never be error free.

      Another concept for reliable software could be multi agent systems, that have similar ideas like in Erlang but go a far step forward.

      All in all, reliable software and reliable software reuse definitely is possible. Just not with mainstream technology.

    6. Re:No way Jose. by AmberBlackCat · · Score: 1

      So they could have changed something like lateralVelocityMaxTolerance = 40 to lateralVelocityMaxTolerance = 50 and made it work. I don't think the "bean counter" is the one to blame. The software engineer is the one who burnt the beans.

    7. Re:No way Jose. by vertinox · · Score: 1

      If the author sells what he was smoking while coming up with the article, he stands to make tons of money.

      But you aren't familiar with the setting of the story. There will come a time when writing code is too complex for a single person anymore unless of course the compilers are so advanced we basically let Strong AI write it for us. There will come a day when the average office application will have trillions of lines of code in them and the operating system quite a large jump beyond that.

      Having to write from scratch will be infeasible for even a hundred developers working in cohesion. Think of it how most computer games these days are made by hundreds of people rather than the single coder back in the 80s.

      So unless we find that we want our software to be less complex, this trend will continue until it is no longer feasible for anyone (at least a human) to write a project from scratch.

      However, this doesn't take into account for better programming languages and programs that write themselves.

      Of course at that point we may no longer need human coders.

      --
      "I am the king of the Romans, and am superior to rules of grammar!"
      -Sigismund, Holy Roman Emperor (1368-1437)
    8. Re:No way Jose. by twiddlingbits · · Score: 1

      Chicken and the Egg...the Strong AI is made up of VERY COMPLEX software which has been reused from other AIs.

      Oh, and when you get a Strong AI let me know. I've been waiting on one for over 20 yrs. I did AI work in the early 80's and back then such a thing was "just around the next corner". That's been a LONG corner.

    9. Re:No way Jose. by Doctor+Memory · · Score: 1
      I could more convincingly argue that the failure is due to the software not being tested

      Actually, one of the tenets of software reuse is that a reused module should not need to be tested. Testing an already-verified module wastes close to 40% of the cost savings associated with (or at least "claimed for") reuse. Of course, another tenet is that reuse consists of using a module for its specified purpose (which includes, as you mentioned, verifying that input values will be valid). What was done with the Ariane 5 software is exactly how software reuse is not supposed to be done.
      --
      Just junk food for thought...
    10. Re:No way Jose. by Soul-Burn666 · · Score: 1

      Yes, it is understandable if a UNIT is left untested when re-used, but it's still crucial to test the complete system which uses that unit, exactly for these reasons where the specifications change.

      Unit A:
      "When parameter x is a positive integer less than 100, return x/2. Otherwise go up in flames"
      If that is the specification, then it's reasonable to test integers between 1 and 100 and nothing else.

      If another program now re-uses this unit, you can still be assured it will work if x is a positive integer less than 100. If your program assumes it works for x > 100 as well, it will go up in flames. That's exactly why you test the whole system.

      --
      ^_^
    11. Re:No way Jose. by gbjbaanb · · Score: 1

      not necessarily. Take your example of games. Once upon a time graphics instructions were practically poked into memory and a bitmap was directly manipulated. Now, in order to get the fancy graphics we're used to, a coder writes instructions to an engine that uses a scenegraph and physics and other libraries all of which use a 3d graphics library (eg opengl) that uses a low-level graphics driver. This is the code reuse that makes things different, and requires a lot of people, there's simply more code that is being brought to bear on the problem, and fortunately most of it is pre-written and stable.

      So, code will never get too complex for a single person, its just that he'll be using a lot more libraries to perform work that he would never have been able to accomplish by writing from scratch.

  31. Resistance is futile by HangingChad · · Score: 1

    Your code will be assimilated.

    --
    That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
  32. High(er) level languages anyone? by kotku · · Score: 1

    The article is a bit of nonsense really. It ignores the fact that building software is a vertical problem anyway where most often you pick the highest level tool to get the job done. You now have

    Transistors
    Digital Logic
    Machine Code
    Compilers
    C Code Family
    Dynamic Languages / Visual Languages
    What next...

    In 20 years time nobody will be pissing around with C code or Java or or Lisp ( ok maybe lisp) except for historical/maintaince reasons. There will be new higher level constructs leveraging streamlined minimal lower level constructs. Many of the problems defined today by large code bases will be rewritten using less effort and more sophisticated expressive tools. In 20 years time there will be 2^20 cores on a chip, perhapps. I doubt code bits from today will solve those sorts of problems.

    --
    My slashdot captcha was "pervert" huh!

    --
    The bikini - security through obscurity since 1943
    1. Re:High(er) level languages anyone? by ResidntGeek · · Score: 2, Funny
      In 20 years time nobody will be pissing around with C code or Java or or Lisp ( ok maybe lisp) except for historical/maintaince reasons.
      That's right. Why, just think of 20 years ago. Today we program in C and C++, and beginners use BASIC. Not at all like people did it 20 years ago.
      --
      ResidntGeek
    2. Re:High(er) level languages anyone? by jgrahn · · Score: 1
      You now have Transistors; Digital Logic; Machine Code; Compilers; C Code Family; Dynamic Languages / Visual Languages; What next...

      In 20 years time nobody will be pissing around with C code or Java or or Lisp ( ok maybe lisp) except for historical/maintaince reasons.

      All those things were available 20--35 years ago. If nothing revolutionary has happened 1970--2006, what makes you so sure it it will happen in 2006--2025?

      Fred Brooks' "No Silver Bullet" theory seems as plausible as ever, IMHO.

    3. Re:High(er) level languages anyone? by kotku · · Score: 2, Interesting

      Why does everybody want a "revolution" when evolution does the job? You only have to look at the language popularity charts to see the trend away from low level programming languages to higher level languages with more expressive constructs. Yes they were here years ago but it takes time for things to catch on properly. I program aeronautical systems for a living and never step outside strict ANSI C for flight code. However for the supporting tools around us we use Python. It isn't FAST but it is fast enough to get the job done and we can develop new tools faster and easier than coding them in C/C++. Why becase Python is a more expressive language than C and for a large domain of problems is now more suitable. The current state of programming language usage is more like a sliding window over the domain of currently available and yet to be available languages. There are rarely revolutions but it is dumb to say that what we are doing today is no differnt to 40 years ago. System complexity rises all the times and new ways of expressing the problems and solutions to those problems will evolve over time. Reusing a 20 years old library will not cut it.

      --
      The bikini - security through obscurity since 1943
    4. Re:High(er) level languages anyone? by vidarh · · Score: 1
      I doubt code bits from today will solve those sorts of problems.

      You might be surprised.

      I'm willing to bet you are running apps today that use quicksort code that is at least 15 years old - quite possibly older, and that can be traced at least 20-25 years back (that is, it likely was translated from an older version in another language rather than written from scratch).

      You probably use at least one app that uses wildcard matching using the "wildmat()" function written by Rich Salz in 1986 (GNU tar for example).

      The amount of old code, or code written based on old concepts in use today is already quite high. People keep reusing wildmat() for instance because it does what it claims to do, is well understood and widely tested.

      That is despite the fact that both the two examples above are of things that are fairly easy to write, and quite easy to do better than most of the commonly reused implementations. In most cases it just isn't worth the effort to write it yourself.

      There's lots of code out there that is decades old that have survived multiple direct translations from now mostly dead languages even.

      That will continue, though I tend to believe that what will survive is more likely to be small pieces like the above than large apps or frameworks.

    5. Re:High(er) level languages anyone? by julesh · · Score: 1

      In 20 years time nobody will be pissing around with C code or Java or or Lisp ( ok maybe lisp) except for historical/maintaince reasons. There will be new higher level constructs leveraging streamlined minimal lower level constructs.

      It's now nearly 40 years since somebody invented an effective "new higher level construct" (i.e. object-oriented programming, a feature of Simula67). What makes you think somebody will come up with a new one in the next 20?

      Many of the problems defined today by large code bases will be rewritten using less effort and more sophisticated expressive tools.

      Perhaps, but I doubt we'll see more than a small percentage improvement (maybe 10-20%) in the expressive power of the tools we use over that time. What language invented since lisp is more powerful than it? All we have are lower-level languages and high-level languages that are easier to read and easier to learn.

      In 20 years time there will be 2^20 cores on a chip, perhapps.

      I wouldn't be so sure. First off, a million cores is extremely unlikely. That would probably require individual transistor sizes of roughly 2nm[1], or roughly 20 atoms of silicon. Also, the class of problems that benefits from a million sequential processing cores is fairly restricted.

      Now if you want to argue that we'll have abandoned the Von Neumann architecture and the notion of an individual processor core in favour of something more flexible and easily parallelised, perhaps I'll be more likely to agree.

      I doubt code bits from today will solve those sorts of problems.

      As long as we're still programming sequential-stored-program processors, many of the techniques (and consequently the implementations thereof) that are in use today will still be useful.

      [1]: I'm assuming 400mm^2 chip size, which is rather large I believe, and that a revolution in processor design will bring the size of a core down to 40Ktransistors. I'm also assuming that gates are roughly square, and that no space is required for interconnects. Both of these assumptions strike me as optimistic.

    6. Re:High(er) level languages anyone? by SurturZ · · Score: 1

      Heh, but twenty years ago most of a programmer's time was spent coding. Now most of a programmer's time is spent reading documentation (whether it be webpages, online help, API documentation, whatever).

      I think there will always be some equilibrium where a programmer has to compare estimates of (coding time + testing time + documentation time) of coding from scratch versus (research time + API learning time + hacking/patching/wrapping time) for using someone elses library/code.

      Also the ongoing maintenance is an issue. For closed source, this generally means that coding from scratch is the more attractive option because if something fails in six months time, you'll have the code to fix it.

      I don't know about open source. I've heard that documentation on open source stuff is pretty sketchy. This doesn't surprise me, because a closed source third-party library has to be pretty freakingly amazingly well documentated and reliable for me even to consider using it - because I don't have the source code. Even with source code, reading someone else's code is often time consuming and I dislike putting code into an app that I haven't checked line-by-line. And if I check line-by-line, I may as well write it myself. Unless it is something that I don't know how to do (in which case I learn by reading the third party code line-by-line then re-write it anyway! :-)

  33. code reuse by zacs · · Score: 1

    This new concept fascinates me. We can take these individual blocks of code. Let's call them "libraries", and join them together with some kind of programmatic glue and potentially reuse them to make some kind of application. This is definitely cutting edge thought. I'm not sure it will catch on though.

    --
    This is a sig
    1. Re:code reuse by Anonymous Coward · · Score: 0
      You beat me to it. I had the very same idea.

      Nevermind, I have other brilliant ideas. I'm thinking of a "Monitor" that lets different programs to run simultaneously on the same hardware. Gotta find a catchier name, though. Maybe something like "Operating Program" or similar..

  34. Congrats, you just described my job by Shados · · Score: 1
    Vernor Vinge described a future where software is created by 'programmer archaeologists' who search archives for existing pieces of code, contextualize them, and combine them into new applications.
    Yeah, thats the present for a lot of us (most of us even?

    Unless you're working in R&D or making things that don't exist (a lot of game engines that are from scratch, a lot of open source projects, new protocole implementation, etc), thats probably what you do 40 hours a week. I know a lot of people for example who have to work with web services, and for a reason or another have to do contract first (because they do things their toolkit, if they even use one, doesn't handle), they often copy paste a WSDL template and modify it. A lot of database management tools have a librairy of template stored procedures. Googling for code snippets and samples is always good...

    Especialy with environments like Java or .NET, you're almost always sure that someone else did something before you, and did it better. Copy and paste their code, modify it, integrate it. Its what I do all day (always making sure to understand how everything works though!!). That allows me to do a lot of things I have no experience in. I'm sure i'm not the only one.
    1. Re:Congrats, you just described my job by XMyth · · Score: 1

      Yea...this article is stupid. Sound like a manager heard about this concept called 'code re-use' and thought it could improve productivity and let them get more work done. I feel sorry for this one's subordinates. Though really, this kind of thing happens every day....

  35. Software Architect by Barleymashers · · Score: 1

    I was in a training class for Rational Software Architecture, I was 'told' that some company's have set it up and augmented the rational suite so that they can get about 85% of generated code before a developer has to touch it. There claim was the architect will be the main driver behind future development and the key cog in the enterprise.

  36. jpg flaw/bug by drfrog · · Score: 1

    isnt code reuse the cause of that major flaw?

    no one questioned the code for years

    --
    back in the day we didnt have no old school
    1. Re:jpg flaw/bug by The_Wilschon · · Score: 1

      But once it is found, it can be fixed at one point, namely the jpeg library. If everyone reimplemented the jpeg routines themselves when they needed to use them, probably quite a few would have a similar bug, even more would have far more serious bugs, and as these were found, each developer would have to fix them independently. Thus, we would expend much more effort to write code, and we would expend much more effort to fix code, and at nearly every point in the game, the average crappiness of the code would be higher.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
  37. suggested in 1986 or so by Anonymous Coward · · Score: 0

    I tried to get RCA to move toward a system like this back in 1985 or 1986 but there was too much protection of each group's work to overcome; managers did not want to release "their" code to others even for use inside the one company.

    1. Re:suggested in 1986 or so by Tablizer · · Score: 1

      Reuse in various forms keeps popping up as a "new idea" every 5 years or so. However, it has proven elusive. The reason to me appears to be that a truly generic unit would have a gazillion features in order to anticipate every need, and thus be a huge hunk of confusion. I used to try to strive for genericness in the past, and unanticipatable features always pop out of nowhere and gum up what I thought was an elegant design. The solution requires solving a combinatorial explosion, not to mention a complicated interface to handle all the potential options.

  38. It's called "A Library"...duh! by sbaker · · Score: 1

    What?!? Why is this news? We have libraries - those are the big chunks of useful code - packaged and (hopefully) documented for re-use and widely distributed.

    When you design new applications you look for libraries that do the bulk of the work - and the application becomes mostly 'glue' to hold the libraries together. Scripting languages are the epitome of this - where large piles of carefully written and optimised libraries make up for the overhead of interpreting the actual library code.

    Dunno why anyone finds this surprising - it's what we've been doing almost since the dawn of programming.

    The tricky part is noticing when you can't find a suitable library - so rather than dumping a bunch of code into the application, design it as a reusable library. There is a small overhead to doing this - but rarely more than (say) 5% of the development cost. So when writing OpenSourced code this is generally done well. The hard part is in commercial code where you have someone with a chequebook and a severe lack of foresight breathing down your neck who would rather save 5% now than save 30% on the next project.

    --
    www.sjbaker.org
    1. Re:It's called "A Library"...duh! by Anonymous Coward · · Score: 0

      > [...] We think this trend is a harbinger of things to come. [...]

      Yeah, only to someone who has not been a practicing programmer during any of the past few decades.

  39. Reminded me when I checked the NWN 2 Toolset by Jugalator · · Score: 1

    The Neverwinter Nights 2 Toolset was redone in .NET, but I checked the various components, and it at least used these:
    - RAD Game Tools' Bink library
    - RAD Game Tools' Granny library
    - RAD Game Tools' Miles Sound System
    - Crownwood Software's DotNetMagic 2005
    - D. Turner, R. Wilhelm, W. Lemberg -- FreeType font rasterizer
    - Glacial Components Software's GlacialTreeList
    - Mike Krueger's (of ICSharpCode) SharpZLib library
    - Divelements Limited's SandBar
    - Various libraries done by Sano
    - Various libraries done by Quantum Whale
    - Davide Icardi's (of DevAge.com) Source / SourceGrid libraries
    - Matthew Hall's XPExplorerBar
    - Zlib

    These were third party work used in the toolset application, and could be more as well (just checked standalone libraries, not any statically linked stuff).

    --
    Beware: In C++, your friends can see your privates!
  40. It happens on BigIron too by Fookin · · Score: 1

    I was speaking to someone at work last week and this exact topic came up. We have 5000+ batch jobs written in JCL and whenever someone needs to write a new program, they just mine through what's already out there and use it for the new stuff.

    It's not that uncommon at my workplace ...

  41. deadline = shortcuts by PovRayMan · · Score: 1

    With companies like EA forcing insanely short deadlines to get Generic Sports Game 2007 out by the holidays, it pretty much forces their code slaves to reuse mostly everything in its' horrific state. If end product quality matters then "from scratch" programming will have a larger priority.

  42. Good in Theory by CyberLife · · Score: 1

    The notion of complete code-reuse and never coding anything from scratch is a very good idea in theory. The problem is that in order for it to work the components from which things are built have to be reliable and trustworthy, and such things are not always easy to find.

    I've been studying errors and defects in engineering (both computers and otherwise) for many years. I was raised by an accident investigator, so I have an innate understanding of why things fail and what people can do to avoid it. The core reason for anything to fail is the assumption of correctness. In all accidents and failures, one can always find somebody somewhere that made an assumption about a component's behavior. The fact they did not know its true behavior caused them to employ the component when they should not have. Thus, the other elements of the system that depended on its assumed behavior also fail, and it just cascades from there.

    In software, such assumptions of behavior often take the form of (to name a few) failing to detect null-pointers, failing to enforce buffer limits, or failing to enforce proper protocol operation. Opening the source to the world can help to detect such assumptions, but someone still has to check. As overkill as it may seem, I've been known to write unit tests for third-party libraries to ensure they behave as their documentation says. Many times I've found them to be faulty. Had I not tested them and just assumed their correctness, my product would not have worked. Even though my code may have been correct and the author of the libraries were at fault for their code not working right, I too would have been in error for making a false assumption.

    Until such time as we can trust the components upon which we base our work, we cannot employ 100% code reuse. To reach such a stage, we need a radical shift in our approach to engineering. We need to ensure that our products do as they're supposed to and not just assume. Unfortunately, the rush to market often prevents us from doing what we should, and that's a shame. First to market is not always best to market.

    1. Re:Good in Theory by Maian · · Score: 1

      Well, if computer scientists ever manage to create a theorem-proving framework that can test code validity, and programmers start programming on top of that framework and produce enough testcases, then simple bugs won't be as much as problem anymore. Granted, that's a big if, but we are talking about the future here, who knows what comp scientists will discover by then, or what methodology software engineers will devise.

  43. Re-using Software Systems is Very Common by this+great+guy · · Score: 1

    You may not realize it, but as of today, virtually all new applications being developed re-use existing working software systems. For example, when you develop a new web application, the components that you re-use are: the OS, HTTP server, database server, scripting language (PHP...), etc. Of course nobody is re-developing everything from scratch. Very often only the higher level software layer (ie. your application) is developed partially or mostly from scratch, but everything else (ie. the internal or lower level components) are re-used from existing projects.

  44. code reuse is pretty common by k1ttyk4te · · Score: 1

    This has been a useful and common method of software development for a long time - at least as long as I've been programming professional, and we were taught it in school, of course, though we rarely did it, since the point was to learn how to do it ourselves before using other's code. Probably 85% of my new development work is tying components that either I wrote or someone else did into new and interesting configurations. The stuff I use (typically compiled code written by other programmers) was in itself designed from custom libraries of things other programmers wrote, and so on and back. There are pieces of legacy code that date back at least 15 years in our custom libraries. Code reuse makes designing and making useful software faster, more standardized and a lot easier to understand. Sure, sometimes you want to do it yourself and that's good, but really? The chances that your print routine or sort are going to look substantially different from anyone else's are low. Of course, none of that applies to research programming,as far as I can tell.

  45. Standards by Millenniumman · · Score: 1

    One of the problems is the necessity for glue code. There needs to standards for software libraries. You can have different libraries, but certain functions should always get you something that will work in the context. One should be able to take out any library from any piece of software, and replace it with another library (assuming there is more than one for the same purpose).

    --
    Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
    1. Re:Standards by Anonymous Coward · · Score: 0

      For open source projects, why should there be more than one for the same purpose, licensing issues aside?

    2. Re:Standards by Millenniumman · · Score: 1

      Because people think things should work in different ways, be written in different languages, etc.

      --
      Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
  46. Not until more code is public domain. by Mike+McTernan · · Score: 1

    While its easy to grab code and quickly put it together to make something that works, it is usually the licences and the difficult to interpret legalese that can limit this approach. This becomes relevant if distribution of the resulting software is required, and is especially relevant in a commercial context. Clean-room implementations are going to be around for a while to come, IMHO.

    --
    -- Mike
  47. PHBs wet-dream by KillerCow · · Score: 1

    This has been the PHBs wet-dream since programming began. They see writing programs as assembly. It isn't assembly. It's design. You can't automate design.

    They always talk about making generic components that can just be "glued" together to create a functioning application. You can't. That "glue" is the business logic, and it's what your program does. It's what you are paying the developers to do.

    If you have good developers (skilled, not monkeys) they will create (or use) libraries to do most of the heavy lifting, but they still need to put those libraries together in a way that solves a business problem. If you could just automatically glue pieces together, how can you provide a useful product for your customers? Sure, you can take an "email system" and a "social networking" system and "glue" them together, but to do what exactly? Solve some business problem perhaps? How will you "glue" them? By developing business logic.

    It's like taking two different ideas / products, placing them in a room together, and expecting "synergy" to create something new and great. Even if you have some great idea about how those two things can be combined to create something, you still need someone to do the design work of actually combining them.

    You wouldn't expect an air conditioner and a storage locker to just magically combine together to create a modern refrigerator, would you? You need someone smart to integrate them. That is what a developer does.

    1. Re:PHBs wet-dream by horster · · Score: 1

      "hey see writing programs as assembly. It isn't assembly. It's design. You can't automate design."

      that's an awesome quote. put another way, management is taking ideas that apply to manufacturing and trying to use them for engineering. it doesn't work.

  48. Move along, nothing to see here by thatjavaguy · · Score: 1

    We've heard it all before. Next story please.

  49. This saddens me by Curien · · Score: 1

    It's truly disturbing to me how someone who put so much effort into writing a response could have completely failed to understand simple words like "all" and "any".

    --
    It's always a long day... 86400 doesn't fit into a short.
    1. Re:This saddens me by CRCulver · · Score: 1

      No, I understood him just fine, I just clicked "Submit" too quickly. What I wanted to write further is that, in spite of the insistence of some Slashbots that coding is an artform, people who code for aesthetic reasons are a minority. Most of the time people just want to get their work done and cash their paycheck. Therefore, it's silly to compare an aesthetic field, such as music, with a functional field, such as programming, even if sometimes there are exceptions. I think it was worth pointing out that many composers have reused material to save time and fulfill a commision just like coders rely on libraries.

    2. Re:This saddens me by Curien · · Score: 1

      it's silly to compare an aesthetic field, such as music, with a functional field, such as programming

      Music is not always artistic; it is often quite functional. I'd go so far as to say that most new music is more functional than artistic. Consider, for example advertisement jingles. If for some reason you insist that music is especially artistic, substitute any other creative process: architecture, drawing, etc. These are all things that increasingly use existing material; but in all cases, the idea that originality could be eliminated is facile.

      I think it was worth pointing out that many composers have reused material to save time and fulfill a commision just like coders rely on libraries.

      OK, but why bother? Of course some composers reuse old music sometimes. And some coders reuse code sometimes. The original question was one of absolutes.

      --
      It's always a long day... 86400 doesn't fit into a short.
    3. Re:This saddens me by fuzzix · · Score: 1
      What I wanted to write further is that, in spite of the insistence of some Slashbots that coding is an artform, people who code for aesthetic reasons are a minority. Most of the time people just want to get their work done and cash their paycheck.

      You could say the same about professional musicians - they just want to play the session, get paid and smoke that joint so they can think of guitar notes that would irritate an executive kind of guy.

      Just because working in the medium is often as soulless as any other assembly line doesn't mean there can't be some level of artistic appreciation for the work of those who are truly committed. Sure, most of what's churned out is what works for cash but there are always those who'll go that extra mile to impress and delight. It might not make the big bucks for the creator but great artists are never appreciated in their own time ;)

      This recent example still has people scratching their heads. "^ this isn't" indeed...

      Are these people a minority? Most definitely, but the number of true artists in any field is a minority.
    4. Re:This saddens me by Anonymous Coward · · Score: 0

      Most of the time people just want to get their work done and cash their paycheck.

      And most working musicians are in bar bands who play the same standard cover tunes every show, and yes, cash their paychecks.

      Your point is?

      Oh, right: you don't have one.

    5. Re:This saddens me by Anonymous Coward · · Score: 0

      I have to stop posting drunk...

    6. Re:This saddens me by Lemmy+Caution · · Score: 1

      I don't think the kind of distinction between the artistic and the functional that you imply here is so easily made. For the composer, the "function" of even a commissioned piece that is only intended to be played in a concert hall, rather than as the soundtrack to a commercial, is still his pay, and thus it is "functional." The "function" of the experience of the concert-goers may be personal edification, the pleasure of going out, the experience of the music (an aesthetic function) itself.

      And that jingle itself will be effective for aesthetic reasons - it will "work" for reasons related to the reasons that the concert piece will work.

      I agree with your protest against the idea that it is silly to compare composing with programming: the two are very much related. I rather think that your protest didn't go far enough.

  50. small language, big class library by StrawberryFrog · · Score: 1

    Look at recently developed programming environments that have made it big: Java and C#, running on a virtual machine, using a large class library.

    My first impression of Java was of "a small language with a big class library" - I don't mean that in a bad way, the relatively small number of syntactic elements in the actual language and handing of things like say, threading to classes is a good thing.

    But coding from scratch? What's that supposed to mean - typing ones and zeros at a OS-less motherboard? Working with all this support is the present and future of coding. Working without it is becoming a niche - for people who make the VMS, Oss, device drivers and class libraries that the rest of us depend upon. And yes, this trend for richer class libraries will continue. Duh.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

    1. Re:small language, big class library by DrEasy · · Score: 1

      That's not new though. Smalltalk was a "small language with a big class library" 30 years ago.

      --
      "In our tactical decisions, we are operating contrary to our strategic interest."
    2. Re:small language, big class library by StrawberryFrog · · Score: 1

      No, it's not new. What's new is how mainstream it has become. It's possible that a majority of employed programmers are working this way now.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

  51. It's about respect for the role of the programmer by Dilbert48 · · Score: 1

    We're all leveraged when we can build on the good ideas and good code of others. The danger, in some organizations, is when they believe they can hire low-skill or non-programmers to put the pre-designed components together. As an old-timer, I've watched software development over the years, and there is a continual tendancy of enterprise managers to conceptualize programmers as low-cost, commodity labor. One company reorganized their development group out of existence, conceiving of this work to be done by vendors and rare consultants. The result is that they are frequently in a state of chrisis from their systems failing and from having nobody on staff with the skill to diagnose or fix them. Managers need to know that they need highly skilled developers, and they need to pay them what they are worth. These people can intelligently build on the work of others in a way that works for the unique problems of their business.

  52. great author, wrong book by Anonymous Coward · · Score: 0

    You mean A Fire Upon the Deep (http://en.wikipedia.org/wiki/A_Fire_Upon_the_Deep ). Deepness is a great book, but information complexity (and AI) is much more in Fire's area.

  53. The future is ... ten years ago. by pedantic+bore · · Score: 1
    I haven't written a program longer than about 2,000 lines from scratch in more than ten years. Nobody I know has, either. It's all about adding another feature, or removing another bug, from giant ecosystems of software that grow like moss over the hardware.

    Makes me nostalgic for the days when I used to start with an idea and create the design from there. But even then, it was almost always the case that everything I built was built on top of, or in the context of, another software system. (well, there was this one time when I wrote my own assembler so I could write my own boot ROM for a machine you've never heard of... but that's not exactly normal)

    --
    Am I part of the core demographic for Swedish Fish?
    1. Re:The future is ... ten years ago. by coredog64 · · Score: 1

      I haven't written a program longer than about 2,000 lines from scratch in more than ten years.

      Then you must not be writing Java code ;)

      I've already done this twice in the last two years and will probably do it again next year.

    2. Re:The future is ... ten years ago. by pedantic+bore · · Score: 1
      Well, I've written an awful lot of Java (maybe a lot of awful Java...) but I don't count implementing an interface or extending a class as writing "from scratch". Maybe I should.

      What I'm counting is: packages I write that contain a class that implements "main" and isn't a degenerate test rig -- something someone might actually run someday.

      I'm not going to try to defend this metric -- feel free to pick another one. The distinction between starting something new and extending/patching an existing system might look different in different environments, but it's still fairly intuitive.

      --
      Am I part of the core demographic for Swedish Fish?
    3. Re:The future is ... ten years ago. by bensch128 · · Score: 1

      Wow, it sounds like you've been in the same project for far too long.

      Isn't code maintance really boring?

      Ben

  54. Geesh, It's been happening for 50+ years by davidwr · · Score: 1

    Ever since the first person reused existing code.

    This is just another step along the same continuum.

    I wrote a small perl program the other day. If you count all the code that executed when I ran it, "my" code was only an itsy-bitsy-teen-weeny part of the whole.

    "Move along now, nothing for you to see here."

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  55. bullshit by Anonymous Coward · · Score: 0

    okay.. this might work for your standard issue make-monkey-press-button-to-do-repetative-task
    business drone software.. but I don't think you'll see any dynamically resized 3D model of a tank
    or something as complicated hooking into a com.buzzword.WebServiceAPI over http for each calculation..

    we moved beyond vax hardware speeds for a reason.. and sometimes that reason is not so you
    can bloat your network with spurious XML-over-HTTP traffic

  56. Unrealistic by onetwofour · · Score: 1

    Whilst this is an uber fantasy for minimizing cost and development time, it will never exist. You just have to look at the amount of bugs that exist in software, they will never really vanish and if we're not writing bespoke software they are likely to double. The text talks about architecture within the project being what will replace the hard work, however software architects exist only in an a project at the start. It's rare to bring them in at the end and can you imagine the hell you'd go through having to debug some alien code if it's not working? The people who make up architects in my University are just the people who are trying to make money for Computer Science, I pretty much see them as a lower form of a professional. The real Computer Scientists are those who bring new concepts, not those who spend all their time planning. I accept we need people from other disciplines to enhance our working practices but it should never be viewed that these people will take over the core subject. For example we all know Computer Science was started from a bunch of crazy Mathematicians (Just look at Babbage and how he was publically ridiculed because he didn't complete his thinking engine), surely someone could also abstract from that time that we won't eventually need Mathematicians because Computer Scientists will still be needed. But we still have the crazy Mathematicians as they are still required for the absolute core stuff. From those principles let's honestly look at how businesses work, You'd never get such a repository put together of lots of clever code. A 100% bug free module for a specific task would cost more than the moon. (About £8.8x10^22 in Cheese Pounds)

  57. OhGodPleaseNo by cperciva · · Score: 2, Interesting

    Code re-use is a great idea. Free software is a great idea. Taken together, and to an extreme, they can cause problems, particularly where security is concerned. What happens when someone finds a security flaw? How can you contact the people who are reusing your code if you have no idea who they are?

    To take a personal example, my delta compression code, which I wrote for FreeBSD, is now being used by Apple and Mozilla to distribute updates; I've talked to their developers, and if I find a security flaw in this code (very unlikely, considering how simple it is), I'll be able to inform them and make sure they get the fix. On the other hand, I know developers from several Linux distributions have been looking at using my code, but I'm not sure if they're actually using it; and searching on Google reveals dozens of other people who are using (or at very least talking about using) this code.

    Putting together software by scavenging code from all over the Internet is like eating out of a garbage dump: Some of what you get is good and some of what you get is bad; but when there's a nation-wide recall of contaminated spinach, you'll have no idea if what you're eating is going to kill you.

    1. Re:OhGodPleaseNo by Jeremi · · Score: 1
      What happens when someone finds a security flaw? How can you contact the people who are reusing your code if you have no idea who they are?


      A mailing list or RSS feed is a good idea for an open-source project... anyone using/relying on the code should be strongly encouraged to subscribe to it. Of course, you can't force people to subscribe, but those that don't can't complain if they miss the big bug announcement.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    2. Re:OhGodPleaseNo by Anonymous Coward · · Score: 0

      Look at this motherfucker. Gots his e-dick all hanging out (yeah, MY code is being used by APPLE and MOZILLA!!). Fuck that shit! You ain't foolin' nobody - you just wanna brag about your code being used by big names, litle bitch.

    3. Re:OhGodPleaseNo by Anonymous Coward · · Score: 0

      It is not your job to make sure that everyone that is using your code gets notified and fixes their code. I'd say it is your job to provide a means for others to get notified when there is a change, if they want to be notified. But it really is up to them, and not your problem.

    4. Re:OhGodPleaseNo by sydneyfong · · Score: 1

      You've got it backwards.

      Suppose instead of somebody using your code, they write their own implementation, which probably contain as many bugs as your first version. In the meantime, your code is already at v0.6.2 and has dozens of important bug fixes.

      Developers who use other's code and are concerned about security should regularly check whether there are upstream fixes to the reused code.

      --
      Don't quote me on this.
  58. Simple matter of by Archfeld · · Score: 1

    economics...That is, until the hardware demands recoding, reuse is both financially and programatically a generally sound philosophy. Of course GIGO still applies :)

    --
    errr....umm...*whooosh* *whoosh* Is this thing on ?
  59. It won't happen UNTIL...(testability framework) by Bluedove · · Score: 1

    It won't happen that way until there is a coherent established framework for functional testing of the "building block" code. It is GREAT to reuse code, and I've worked on a few projects that became GPL due to my incorporation of GPL code. However, most professional projects I've worked on require more on the reliablity front so no time (time == $$money$$) is lost. Any reused/mined code incorporated into these projects has had to be so rigorously inspected and tested for function that when combined with the time spent on banging together glue code, we may as well have started from scratch for those code chunks.

    The exception to this is tiny code chunks that either have a simple testable API (eg. no functions that return values variable with time), libraries/code that have been so widely used that you can "mostly" assume that it's valid (eg. zlib), or occasionaly some banged together prototype "proof of concept" app.

    Until some standard framework is created that the code can be tested for validity by those incorporating the code, it likely won't happen fast (other than for the exceptions listed above).

    For the record, I don't know what that standard framework may be. Personally, i'm in the habit of whenever i write a class, i include a static test function in the class that can be called to put it through its paces and check for validity on all functions and expected data alignments. (eg. on some arm processors i've worked on, a struct is packed based on a 4-byte boundary, and sometimes extra "surprise" filler bytes are inserted. Lots of fun to track those down when you're not expecting them.)

  60. 90% of anything is crap by PhiRatE · · Score: 1

    The problem with this concept is deceptively simple:

    1. The most difficult part of programming is developing software that does a good job of unanticipated uses
    2. Most programmers are fine with something that just does the job they need it to do, and no more
    3. Relatively few useful software components can operate in isolation, the rest place requirements on the environment

    The consequence of this is that contrary to the theory that writing something once should be sufficient, the truth of the matter is that in the vast majority of practical cases, it is simpler to write the code once again, bespoke for your particular needs and environment, than it is to pick up the best available pre-written component to do it.

    The essence of the problem is one of assumptions. Any component has an environment, this is the sum of state and information it requires in order to be able to operate. The component also (probably), has an API. This is the formal environment, the sum o state and information that it makes explicitly available to the programmer.

    The problem that you have is that there is no "right" place for the percentage of the environment to be formalised into an API. For all those of you who are thinking "Well, the answer is obvious, everything!", imagine a component that manipulates dates.

    Think about this for a moment, I use it because it's an example which almost every language I have encountered has done "poorly" (where poorly is the situation in which I find myself implementing something I felt should have been there by default, like adding or subtracting a month).

    The environment for a date component, the true environment, is larger than any date component I have ever seen has exposed. For a start, which calendar are you working in? what timezone? what are the DST considerations for that timezone? is there some mechanism for updating these DST settings for those crazy timezones that change DST times all the time? is the begining of the week Sunday or Monday?, what is the current locale? If I add a month to the 31st of October, is it now the 30th of November, or the 1st of December? what if I subtract a month? is month addition associative?

    Keep in mind that every question there has been solved at some point or another, and the majority of it is solved by the few really good date libraries out there (perl has a particularly fantastic one the name of which escapes me), but I've never seen one that did a good job of updating its daylight savings information, the majority of the *nix style ones simply assume that the operating system has good information, normally the catalog that came with your most recently install of glibc.

    Anyway, back to the point, the issue is simply one of appropriateness. There are some components that make a lot of assumptions, but their interface is simple. There are others that make very few assumptions, but working with them is mind bogglingly complicated. Anyone who has ever had to work with mapserver or equivalent mapping problems will understand the gradient. But it is not at all uncommon to find yourself in a situation, even with something as well covered as dates, where the conventional components don't cover the part of the environment you need covered. Interfaces are either too big and complex, too small and simple, or just focused in a different area (how many components have been dropped because they were perfect, except that they didn't handle multithreading?).

    In the end, rewriting this stuff is going to be a fact of life for a long time yet (unless we get really smart AIs or a revolution in programming I can't foresee), although hopefully better coverage of more common problems will continue to be a feature (it's much easier to do things today than it was 10 years ago basically because of this, regardless of what the lisp guys say :)

    --
    You can't win a fight.
    1. Re:90% of anything is crap by Dun+Malg · · Score: 1
      The consequence of this is that contrary to the theory that writing something once should be sufficient, the truth of the matter is that in the vast majority of practical cases, it is simpler to write the code once again, bespoke for your particular needs and environment, than it is to pick up the best available pre-written component to do it.
      Indeed, the classic advice is "don't reinvent the wheel", but even that advice misses the target beyond a very basic level of complexity. Wooden cart wheels are inappropriate for railroad cars; steel railroad wheels are inappropriate for automobiles; pneumatic automobile tires are inappropriate for a moon rover. Really, you are usually better off reimplementing the wheel, but it's a good idea to have a bunch of wheels around to look at for reference.
      --
      If a job's not worth doing, it's not worth doing right.
  61. The future is here by nicolaiplum · · Score: 1

    and it's called CPAN.

    --
    "For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled"
  62. Expert Systems and AI by camperdave · · Score: 1

    I think that we are not going to be "mining" for code so much as using smarter and smarter tools to develop the code in the first place. Historically, we used to code by flipping bits on the bare metal. Later we developed smarter tools called assemblers and loaders to flip the bits for us. Then we developed "high" level languages like Fortran, Pascal and C, and developed tools to compile our programs. Our tools became smarter. We don't write the code for GUIs anymore. We drag and drop widgets in a design software, click a button, and reams of code get written for us. Object oriented programming could take us farther still, as the GUI elements could already be pre-defined. (Take a card game for example. All the methods for manipulating and displaying cards, and stacks of cards, etc, are already all in place All the programmer has to do is code the rules of the game.)

    As we progress in abstracting the data we deal with, we remove ourselves from raw coding. Once we start abstracting and manipulating programs as data, we will enter a realm where we will be able to do stuff like:

    Programmer:"Give me a klondike solitaire program, but extend it to a crown and anchor deck".
    Computer:Klondike Solitaire found.
    Computer: Unknown term 'crown and anchor deck' in context Klondike Solitaire.
    Computer: Unknown term 'crown and anchor deck' in context card games.
    Computer: There is a dice game with crown and anchor symbols.
    Programmer: "Create card deck variant crown and anchor deck by adding a suit with symbol crown, and by adding a suit with symbol anchor."
    Computer: Card deck variant crown and anchor deck created. Shall I make this card deck variant publicly available?
    Programmer: "Yes"
    Computer: Klondike Solitaire Crown and Anchor variant ready.

    --
    When our name is on the back of your car, we're behind you all the way!
  63. Cost (effort) / Performance by ishmalius · · Score: 1

    Often it is desirable to reuse someone else's library. But often it is still very valuable to provide the code yourself, to prevent another dependency on someone else's code, and also avoid something that might limit portability.

    I think it is the same cost/performance threshold that people use in everyday life, in making a decision to purchase or "do it yourself." Is using a third-party library worth the hassle of integrating and packaging it?

    For example, one developer wanted to add a default dependency on the enormous Boost C++ library to our project in order to provide a chart-drawing ability. Was it worth it to us to add such a burden? No. Would it be beneficial to an app whose purpose is to draw charts? Probably.

  64. I've heard this before... by Chabil+Ha' · · Score: 1

    We will add your binary and technological distinctiveness to our own. --the Borg

    --
    We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
  65. A world without republicans... by Anonymous Coward · · Score: 0

    This is pathetic. Let's look at two examples of software systems which builds on _lots_ of existing systems: PHP. This builds on _old_ wellknown software (png, sql, etc etc) to fully extend the language. People hate it, but don't have anywhere to run (unless you wanna go with the java monster). Now there's Ruby. Not necessarily better, but people run to it like crazy, just to get the hell away from php! -> No hit. Gnome. This builds on completely new software written from scratch just months or very few years ago such as: avahi, cairo, dbus, poppler etc... -> Hit. This article is baloney, and we'll continue to have these moronic future-visions of a world without [insert a moron's view here]. Such as "paper", "software written from scratch", "war of terror", "republicans"... These might all be heart-breaking positive flower-power ideas, but they ain't gonna happen. I bet this "Susan" has never ever read one line of source code, but she's the "management" kind of person. You know, those who just doesn't know anything, but they're paid more than you, to screw with you, making your job a nightmare, not doing any good themselves, except "managing" things... *shrugs*

  66. WildNets by Anonymous Coward · · Score: 0

    There was another SciFi story which was similar, where code became an evolving creature, and that apocrethary like individuals would visit the realm they inhabit (the Wildnet : a multiworld internet of sorts) and bring various specimens back. Problem was if what they brought back had evolved things not intended... as the realm which code which was used day to day needed to be protected from the wildnet evolved code which could have defenses or offensive capabilities designed to take them out... I wonder if that would be the next step... The Book was Night Sky Mine by Melissa Scott.

  67. And we alls knows whats happens next... by 3seas · · Score: 1

    due to massive code reuse we now suffer from the "mindrot" disease that disables us from re-inventing anything, even after we have long forgotten it.

    1. Re:And we alls knows whats happens next... by the+eric+conspiracy · · Score: 1

      Reinvention is an anti-pattern.

  68. You're right... by NineNine · · Score: 1

    That's why there are many times more Microsoft developers than there are for any other platform. MS has made programming insanely simple. DLL's and other forms of COM objects make code reuse very, very simple. I can make a application with a functional web browser embedded in it in under 30 seconds. Can't do that on any other platform that I'm aware of.

    1. Re:You're right... by Watson+Ladd · · Score: 1

      Mac OS X with Cocoa using WebKit.

      --
      Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
    2. Re:You're right... by siride · · Score: 1

      KParts

    3. Re:You're right... by Anonymous Coward · · Score: 0
      Can't do that on any other platform that I'm aware of.
      This should read...
      Can't do that on any other platform that I'm capable of.
    4. Re:You're right... by Anonymous Coward · · Score: 0

      Pnwed!

    5. Re:You're right... by Gentlewhisper · · Score: 1
      That's why there are many times more Microsoft developers than there are for any other platform. MS has made programming insanely simple. DLL's and other forms of COM objects make code reuse very, very simple. I can make a application for > 90% of all PC users with a functional web browser embedded in it in under 30 seconds. Can't do that on any other platform that I'm aware of.


      Fixed that for ya
    6. Re:You're right... by jelle · · Score: 1

      And webkit is open source (www.webkit.org), and derived from khtml from the kde project (www.kde.org).

      btw: where can I download that webkit browser for my S60 v2 nokia 6600. It was promised by nokia a couple of months ago, but it looks like they want you yo buy a new phone first (but I kinda like the 6600). I searched, but only found press release-type stuff, and now I just find 'opendarwin shutting down' stuff... Just sdk stuff, and links to other places, circular references, like this http://opensource.nokia.com/projects/S60browser/in dex.html but nowhere a package that builds to a binary, nor a binary. this place only lists a few phones, and my s60 is not in the list http://www.s60.com/business/productinfo/applicatio nsandtechnologies/webrowser/

      Does webkit do anything, or is it just a bunch of websites linking to press releases?

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    7. Re:You're right... by Jahz · · Score: 1
      That's why there are many times more Microsoft developers than there are for any other platform. MS has made programming insanely simple. DLL's and other forms of COM objects make code reuse very, very simple. I can make a application with a functional web browser embedded in it in under 30 seconds. Can't do that on any other platform that I'm aware of.


      Yes, this is true because "Dynamically Linked Libraries" are a feature only present in Microsoft Windows. In the UNIX/Linux/Mac world, we are stuck with "Shared Libraries."

      The reason there are more Microsoft developers than there are for any other platforms is because there are more Microsoft Windows deployments than any other platform.

      Shared libraries were not invented by Microsoft. Wikiedpia says "Dynamic linking was originally developed in the Multics operating system, starting in 1964." How does that corporate juice taste?
      --
      There are 10 types of people in the world. Those who understand binary and those who do not.
    8. Re:You're right... by shmlco · · Score: 1

      DDLs are just the base. Sounds to me that the OP is talking about building systems on top of more systems on top of other systems based on DLLs...

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    9. Re:You're right... by daVinci1980 · · Score: 1

      Only 90%?

      Boo-freaking-hoo.

      --
      I currently have no clever signature witicism to add here.
    10. Re:You're right... by Anonymous Coward · · Score: 0
      I can make a application with a functional web browser embedded in it in under 30 seconds.
      Is 30 seconds shorter or longer than how long it takes to get rooted using this "functional" web browser?
    11. Re:You're right... by Anonymous Coward · · Score: 0

      Sounds like a house of cards if you ask me.

    12. Re:You're right... by Nataku564 · · Score: 1

      You can do the same with the Eclipse Rich Client Platform. As an added benefit, you can even see the source code to that browser window. Open Source FTW.

    13. Re:You're right... by pasamio · · Score: 1

      WebKit is just a library. The S60 port of WebKit appears to do stuff but also mentions the need for a V3 (not a V2).

      I'm not sure if you've seen this page though:
      http://trac.webkit.org/projects/webkit/wiki/S60Web kit

      It has instructions which mention build in a few places. It seems to be rather Windows biased and requires a large Nokia SDK download. It does mention that this is what ships with V3 so I assume that things should work fine for V2, but its not my phone. As an aisde I remember in my travels around Asia they freely talked of phone upgrades where all they did was update the firmware since the underlying hardware hasn't changed. The msot common example was the 3310 and 3315. You might also be able to upgrade the firmware on your phone to V3 assuming there were no hardware changes.

      WebKit on its own does quite a lot, just appears that Nokia have screwed you in this version of the phone.

      --
      I always wondered where this setting was...
    14. Re:You're right... by jelle · · Score: 1

      Thanks!

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  69. Umm...isn't that what we're doing now? by vishbar · · Score: 1

    That's what is currently happening....for instance, take VB. Each line of code you write isn't an individual assembly instruction--it's basically a prewritten piece of code....

    All this guy is doing is taking it to a higher level. It sounds exciting, but is really obvious :-P.

    --
    Ride the skies
  70. Whatever... by Kjella · · Score: 1

    We already have reusable components, they're called libraries and they keep getting better. But to think that we can ever easily take some piece of software that isn't written to act like a library and reuse it for something else is pure fantasy. If you have a library with a design specification, you have a bug. If you have a piece of software, it might work quite fine until suddenly somewhere in a mangled mess of code you have some implicit assumption somewhere (which may have been perfectly reasonable) that you just broke. You can't retroactively redefine the code to adhere to a specification, which you obvioulsy need to use it as a component. Sure, you can build some test cases and pray really hard that this black box won't fail on you but that is rarely satisfactory. Or maybe you have so stringent control on your code you can drop it in anywhere, but in that case you'd be the first such application I see.

    --
    Live today, because you never know what tomorrow brings
  71. No by a.d.trick · · Score: 1

    In certain situations this is useful and is already being used to an extent. But rabid use of it is generally bad. Remindes me of hammer factory factory

  72. Web Services by Siberwulf · · Score: 1

    What about web services. Aren't they pretty cross-platform and language independent?

    Isn't that where we want to be eventually?

  73. a harbinger of sorts by Daniel+Phillips · · Score: 1

    More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components. These parts are then made to interoperate through wrappers and glue code. We think this trend is a harbinger of things to come. What do you think?

    It is a harbinger all right. It is a harbinger of loads of work to come, straightening out that rotten stinking spaghetti. Hint: all you need to do to establish your reputation as a top open source coder is to dig into one of those piles of poo and fix it. Oh, and don't bother asking anyone for permission, just do it. That is the way it works.

    Why not start with anything a Ximian coder has touched, since all that code needs to be forked anyway now that Ximian has jumped into bed with the enemy. Suggestion: throw away the bonobo and orbit interfaces, they are just bloatware. Reroll using dbus. Throw away Gnome VFS. Reroll using our real VFS. Lather, rinse, repeat.

    --
    Have you got your LWN subscription yet?
  74. software engineering by camperdave · · Score: 1

    That's where having a global database of excellent code comes in.

    Software engineering should be a much more tightly regulated. Right now, anybody with a C++ for Dummies can call themself a software engineer. Software engineers should be as regulated as engineers in other disciplines. There should be best practices, peer reviews, etc.

    --
    When our name is on the back of your car, we're behind you all the way!
    1. Re:software engineering by Marcos+Eliziario · · Score: 1

      Oh Yes! we all now that companies with a CMMI level 5 certification make excelent code.

      --
      Your ad could be here!
  75. We've been there for decades, BUT... by Rimbo · · Score: 1

    The way I learned how to program in pretty much any language was by looking at other people's code, seeing how they did things, and duplicating those methods in my own. Eventually, I get good enough at a thing that I can come up with my own ideas, or that I remember how things are done without having to go look.

    1. Re:We've been there for decades, BUT... by chthon · · Score: 1

      You are lucky.

      I learned to program on my own, then had more formal courses.

      What I learned afterwards out of school was mostly how not to do things.

      Programs (especially in business settings) work sometimes by accident.

      I cleaned up a whole lot of debris from accidents.

  76. Or maybe... by JaWiB · · Score: 2, Insightful

    Libraries

  77. Reuse by Anonymous Coward · · Score: 0

    I personally enjoy not reusing things. It makes me feel dirty.

  78. How little people understand software development by cdn-programmer · · Score: 1

    This just illustrates how little people understand software development. If blind managers were designing houses I'm sure we would end up with the boss saying "here is a functional bathroom - can you patch it to this functional kitchen?". Well maybe yes - and the toilet would be under the table.

    Finding analogies is difficult.

    Why not walk into a roomfull of stories written by a creative writing class and try to cob them together into a best seller?

    Many years ago IBM was touting the line that with the new faster hardware companies could get away with cheaper programmers. The latest incarnation of that idea is outsourcing to 3rd world countries. Now I'm not trying to run down programmers who are born and live in the 3rd world. What I am saying is that trying to cut costs by gutting programming talent is foolishness and it illustrates a complete lack of understanding on the part of people who coger up such notions... regardless of what guise they do it in.

    The only thing that comes from patching together gobs of code is a mess... and undocumented and unreliable and unsupportable mess.

    The whole idea is just pure bull.

  79. higer levels by Inmatarian · · Score: 1

    I'm pretty sure that when you collect pieces of code and glue them together from a higher level of abstraction, you have a programming language. I mean, a simple addition operator in a high level language is several opcodes in assembly for moving stack pointers and such. What this does demand is that the open source community would make the best impact on the world they could by arranging a very detailed archive of code that would cover a wide range of functions, and all be designed with reuse in mind.

  80. How Can This Even Be A Debate by netchipguy · · Score: 1

    I hate to be so blunt, but anyone debating this is an idiot. Code reuse has been with us a long time, and it's the only way that exponentially more complex systems will be built without exponentially larger teams. If you are thinking "but I never cut and paste code" then ask yourself if you ever use a library, for example (standard template library, OpenGL, even stdio.h functions used to be coded by hand 30 years ago). Or if you code in a higher level language where useful functions are wrapped up for you (an entire web browser as an ActiveX control, anyone?). Yes 90% of code is crap. But it is ridiculous to think that we shouldn't build on the 10% of good stuff that is, or can be, neatly encapsulated.

  81. Nothing new here by Anonymous Coward · · Score: 0

    I forsee a future where author-archaeologists compose books out of fragments of old books. I suppose "cribbin" the archaologist who never left the library from Asimov's novel, Foundation is poetic justice.

  82. Absolute power corrupts absolutely. So does SOA. by Wesley+Felter · · Score: 1
  83. DNA by arvindn · · Score: 1

    This is exactly how DNA works. Programmers have so far not had much success at this approach, one because our computers are puny, and two because our programming practices have been tailored for engineered code. But as hardware gets fast enough that most common tasks can be run at a one-millionth slowdown and still run fine, we will get to a point where we can write glue code that runs some other piece of code, throws away 99.9% of its computation, and only uses the rest, simply because of the value of human time vs. computer time. I have written code like this. It was just research projects, not "production systems", but nevertheless it is possible that the future will have less and less coding from scratch.

    1. Re:DNA by alienmole · · Score: 1
      But as hardware gets fast enough that most common tasks can be run at a one-millionth slowdown and still run fine, we will get to a point where we can write glue code that runs some other piece of code, throws away 99.9% of its computation, and only uses the rest, simply because of the value of human time vs. computer time. I have written code like this.
      You're not alone. Much of the early Internet was based on code like this: CGI scripts where one program shelled out to another executable just to access a small part of its functionality. That's still a big driver of server architecture, having a big effect on the popularity of tools like PHP which tend to embrace such integration, and inhibiting the success of monolithic multithreaded server approaches.
  84. Some context for people who didn't read the book by Jerf · · Score: 5, Insightful

    Some context for people who didn't read the book... or didn't read it carefully enough.

    First, Vernor Vinge has a PhD in Computer Science. This obviously doesn't guarantee he can't be wrong, but to those commenters who said something like "these ideas are idiotic"... you've got an uphill battle to convince me that you're that much smarter than Vernor Vinge, especially as most of you saying that don't show me you understood what he was saying in the first place.

    Second, A Deepness In The Sky is set in his "zones of thought" universe. In this universe, the fundamental limits of computation vary depending on where you are physically in the galaxy. This is only faintly hinted at in A Deepness In The Sky, it is explicitly spelled out in A Fire Upon the Deep. This limit on computation may or may not be real. One of the effects of this limit on computation is that you can build a system larger than you can really handle, and eventually all such systems come apart in one way or another. This story is set thousands of years in the future and it is explicitly (albeit subtly) pointed out that the software running the ramscoop ships has direct continuity with modern software. (Qeng Ho computers use the UNIX epoch as the most fundamental form of timekeeping; apparently even the relativistic compensation is layered on top of that.) We are at the very, very beginning, where it is still feasible to burn an OS down entirely and start from scratch.... or is that really still feasible? (Perhaps Microsoft will soon find out.)

    Those of you posting that "we can always wrap it up in an API or whatever", I'd say two things: First, you get the Law of Leaky Abstractions working against you. The higher up the abstractions you go, the more problems you have. (Look it up if you don't know what that is.) The more sub-systems you make, the larger the state space of the total system becomes (exponentially), and the harder it is to know what's going on. It is entirely plausible that you eventually hit a wall beyond which you can't pass without being smarter, which, per the previous paragraph, you can't be.

    In other places in the galaxy, you can be smarter, and Vernor Vinge postulates the existence of stable societies on the order of thousands or tens of thousands of years or beyond, where the society actually outlasts the component species, because the software base that makes up the species does not exceed the ability of the relevant intelligence to understand it.

    Both cases (software might exceed intelligence, intelligence might grow with software) are extremely arguable, and I do not think he is advocating either one per se. (Leave that for his Singularity writings.) But you do him a disservice if you think he is not aware of the issues; he's extremely aware of the issues, to the point that he is the reason some of us are aware of the issues.

    (Even this is a summary. In isolation, probably the best argument is that it is always possible to create a software system one can not understand or control, but one person can be wise enough to avoid that situation. However, in A Deepness in the Sky Vernor Vinge explicitly talks about how in a societal situation, one can be forced by competitive pressures to over-integrate your system and make it vulnerable. "OK, but the government can be smart enough to realize that's going to happen and step in to stop it." First... smart government? But even if you overcome that objection, now your society faces death-by-surveillance and other automated law enforcement mechanisms, which since they can't be human-intelligent will fail. If you avoid that (and it is a big temptation), then you face the problem of anarchy. And remember that "governance" is anything that governs; even if the "formal government" doesn't regulate you to soceital death, private corporations may do it. Anyhow, upshot, Vernor Vinge has done a lot of thinking on this topic, it shows in his books, it is not showing in the criticisms I've seen posted, and when it gets down to it he really has more questions than answers.)

  85. Windows 2012 is DOS! by edwardpickman · · Score: 1

    Hey it was more stable and easier to write for and you didn't need 10+ gig to install it.

    1. Re:Windows 2012 is DOS! by jma05 · · Score: 1

      > Hey it was more stable and easier to write for

      It was NOT easy to write for. If it was at all easy, it was because people did not expect much in their programs in the DOS days.

      > and you didn't need 10+ gig to install it.

      Nor could it handle a meaningfully more than half a Gig of RAM.

  86. Assemblies? Fortrans! by tepples · · Score: 1
    you'll get the idea that you should make an entirely new system where the parts are called "assemblies"

    Hardly anyone programs in assembly. Why not call them "fortrans" because they're translations of a formula for a component?

    1. Re:Assemblies? Fortrans! by Threni · · Score: 1

      > Hardly anyone programs in assembly.

      Assemblies (note the plural) is a .NET term...

  87. Chance similarity by tepples · · Score: 1
    I predict that this will happen shortly after all composers simply re-arrange themes and phrases from previous musical pieces in order to create any new compositions

    Unfortunately, this already happens. The standard for a "substantial" portion under US copyright case law is so short that most melodies are likely already taken. Spider Robinson wrote a short story about such a situation.

  88. Subconscious copyright infringement by tepples · · Score: 1
    It is arguable that they already do this, through their subconsciouses.

    It is also arguable that some people are afraid to write music due to the fear of being sued for subconscious infringement, losing the case, and possibly having to sell the house to pay the damages. For examples from US copyright case law see Bright Tunes Music v. Harrisongs Music and Three Boys Music v. Michael Bolton.

  89. This already exists. Meet CPAN by Anonymous Coward · · Score: 0

    Perl has had this for 8 years already. It's called the CPAN.

    All the components come with tests integrated into them. When you try to install the component, if the tests don't all pass, then baby it don't install.

    Which is why the slogan "90% percent of every Perl program already exists on the CPAN" is so apt.

  90. Ditto by ^_^x · · Score: 1

    Same here - when I was learning VS.NET, there were so many common routines that used a simple but annoying-to-type algorithm that were I using a language like C/C++, would just provide more code to put typos in or forget a keyword. Once I unlearned doing things the long way, I would just type in the first few letters of the function I wanted, pick the right suggestion from the list, and watch as one line does something like connect to an SQL server over a network.

    I'd say we're at the point where code reuse is not only ubiquitous, but transparent - at least in some languages. There will always be fundamental building block languages like assembler for those who NEED to get down and dirty with the hardware. Personally, I'd like to do more of that, but I can't really justify it since whatever I'm doing, I can afford to sacrifice a little CPU or RAM in exchange for saving 30+ hours of coding.

  91. Comment removed by account_deleted · · Score: 0

    Comment removed based on user account deletion

  92. License incompatibility by tepples · · Score: 1
    Hell coders keep re-writing string handling routines that exist aplenty.

    A lot of this may come from software license incompatibilities. Publishers of proprietary software don't want some copylefted library such as libiberty or readline "infecting" the entire project, which may contain valuable trade secrets or patented processes, with the requirements of the GNU GPL. Even in free software, it's impossible to use GPL and Apache license software together.

  93. Wrapper-mania: welcome to hell by drolli · · Score: 1

    Whenever I glued code by a wrapper i shot myself in the foot very efficiently. Wrappers are the last resort. Wrappers are only acceptable if the coder of the code to be wrapped planned his code to be wrapped. If you use a wrapper adding semantics to a component included by the wrapper is a pain in the ass-you have to change three parts instead of two. If needed or if deployment time is near and there is no time to adopt the code in a good way, then a writing a wrapper has to be carried out with a lot of thinking.

    My paradigm would be: only use things as components which were meant to be used as components.

  94. Re:How little people understand software developme by Jeremi · · Score: 1
    Well maybe yes - and the toilet would be under the table.


    Well you have to admit that would be convenient... no need to get up after a big meal.

    --


    I don't care if it's 90,000 hectares. That lake was not my doing.
  95. Anderson's "Brainwave" by doom · · Score: 1
    Anonymous Coward wrote:
    Vinge's premise is not that AI is fundamentally impossible -- transhuman intelligence is certainly possible in the Transcend. He just thought it would be a cute idea if AI never pans out on Earth, because the laws of physics here prohibit it. It's science fiction, you know. He doesn't actually believe that the Earth is located in the middle of a Slow Zone in the galaxy, nor does he believe that strong AI is impossible in real life. This is the guy who wrote that essay on the technological singularity, remember?

    If anyone cares, this sounds an awful lot like a variation on a theme by Poul Anderson, from an early novel of his called "Brainwave". Premise: the earth has been inside a region that physically supresses clarity of thought throughout all of human evolution. The region shifts, and suddenly everyone become orders of magnitude smarter than they have been.

    1. Re:Anderson's "Brainwave" by Anonymous Coward · · Score: 0

      It should remind you of "Brainwave". Vinge's Zones of Thought were an intentional homage to Poul Anderson.

  96. newbies reuse, old farts rewrite by Anonymous Coward · · Score: 0

    I recently read an article in ACM Communications about code reuse and which demographic is more likely to reuse software artifacts. (This may have been an issue of Communications from last year; I'm catching up). The study found that new software developers are much more likely to reuse components than old hands. The major reason was pretty simple: old hands are more likely to have a bit of ego and fall prey to the NIH syndrome. Newbies, on the other hand, are worried about their job (or standing, in a community), and so will tend to reuse existing code rather than write anew. This study was conducted among software development companies and enterprises, not among open source communities. But code reuse in communities seems seriously lacking. Why is that?

  97. I don't think so by psykocrime · · Score: 1

    I don't think we're close to the end of coding from scratch, at least not in the sense that coding from
    scratch will be replaced by grabbing existing F/OSS parts and combining them. And the reason is
    exactly because

    More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components.

    Trying to glue things together that weren't meant to be used that way can sometimes be done, but it's rare that it works well and it's usually a major kludge. Until people start building "pieces" that *are* meant to be used as components of a bigger system, then no.

    That said, the recent trend towards using coarse grained services / SOA, is a step in that direction. When people start writing apps
    that are designed to interoperate as part of an SOA, then I think we'll see a lot more reuse. But right now that's just not
    the case with the major open-source apps.

    If someone wants to try an experiment, try taking, ah, let's say SugarCRM and SQLLedger; and combine them into a cohesive system. Unless
    you're masochistic you'll probably decide it would be easier to write an integrated system from scratch. This is assuming that you start
    with a policy of NOT modifying the base code of either system (after all, who wants to be on the hook for maintaining a private fork of something like that, for basically forever?)

    --
    // TODO: Insert Cool Sig
  98. We're moving towards this society by Opportunist · · Score: 1

    Let's be honest here. How many people call themselves programmers and have no idea what a zero flag is or what the difference between Big and Little Endian is? The current level of "being programmer" is to be able to hack together a few lines of code with pre-set functions that pretty much do the work for you. It's actually frightening to see graphics programmers who don't know how to normalize a vector because "there's a function for that".

    Fine, of course there is one, and most likely it is by heaps more optimized than what you could hack together, but, heck, at least KNOW what you're doing!

    Current schools squeeze out codetappers, but no programmers. They know a few concepts, they've learned the essential functions of one or two languages (most of the time Java and VB, or now C#), but put them in front of another imperative language and they're lost because their functions ain't there. And no resource kit, teh horrorz!

    Of course, those people are cheaper. I get about 2k more than the guy sitting next to me, and probably only because I can see the difference between a CF and a ZF. And that I can accomplish in 2 hours what he does in a day, simply because as soon as there's no function for it and he'd have to figure it out himself, he's lost.

    A lot of people who are squeezed out of school today know their tools, but they do not know the theory behind it. They don't know why they do what they do. They only know "Write code A and computer does B", but they don't have a touch of an idea why this happens.

    And that's where buffer overflows come from. Because, hey, what the hell is a stack? Is there a function for that?

    To get the rambling back on track, I could well see that "program-archaeology" is the next logical step in this. Actually, it has already started.

    Or is anyone here that didn't resort to example code or open source code to find an algo that does what you wanted to do but couldn't figure out?

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:We're moving towards this society by compupc1 · · Score: 1

      That's true, and it's unfortunate. But I think you may be confusing a programmer with a software engineer, or a computer scientist. They're all different. A programmer can definetly get away without having to know too much. But programming is only part of the picture. A computer scientist should understand exactly why things work the way they do -- this includes all the concepts you mentioned. Like big/little endian, algorithm design, computational complexity, etc.

      But it doesn't end there. If you're a software engineer -- as in you have to write software applications for a living -- you also need to understand application architecture, object-oriented design, unit testing, user interface design, business analysis, etc. Programming is only one part of software engineering, and my experience is that people who only understand things like compilers, theory of computation, and CPU organization in reality tend to be pretty poor software engineers.

      As far as the concept of program-archaeology, I don't think it will get to that point. As long as there are custom-written applications, there will be a need to write new code. With that being said, it will also be important to reuse as much code as possible. I've got news -- an effective programmer (even one who understands the "why") -- will always reuse existing code. Yes, this means not writing vector normalization functions by hand. There's no reason to. It's already been done. If you do understand how normalization works, that's even better. But it's not strictly neccesary for many things. If you're being paid to code, you're sure as hell not being paid to reinvent the wheel. I do agree that some people get lost when they're presented with a new language or API. Learning and adaptinve to new situations and learning how to find those "missing functions" is an important skill -- in my opinion, more important than understanding things like the difference between big and little endian.

      --
      -James
  99. A sad day ... by ProfM · · Score: 1

    Truely ... a sad day when a "Hello World" application is 1.5Meg ....

  100. Isn't this what we've been doing all along? by Khmer+Luge · · Score: 0

    Moving to high-level programming languages doesn't seem significantly different than what Vinge is (accurately, I think) predicting. We already reuse code when we type our code into a computer instead of writing hex by hand on a legal pad. Just like human language increased in the complexity of the ideas it could communicate with simpler particles, the language with which we talk to processors continues to grow and pack more implied "meaning" into smaller and smaller informational bits. Functions, subroutines, classes, OOP...we've been moving in this direction for a long time. I'm not smarter than Vinge, but I would say that as a trained computer scientist, he might have tunnel vision when it comes to what programming actually "is", simply because he was so thoroughly schooled in it!

  101. Re:Elephant graveyard of failed software by TheVelvetFlamebait · · Score: 1

    A piece of advice: saying "only real [insert any profession/hobby] do [something]" sounds a bit like you feel the need to prove yourself. And believe me, that is not good here on /.

    --
    You know, there is a difference between trolling and pointing out the flaws in your reasoning. Just saying.
  102. We need a language switch, before reuse can start by grumbel · · Score: 1

    Before one could reuse sourcecode on a global scale I think we first need to switch to a more advanced programming language, probally one not even invented yet. Today a hell of a lot of code does nothing useful, its just there to duct tape together different APIs or to make the compiler happy, while doing nothing by itself. And this isn't just a small portion of the code, but often a very large one, like half of the application or even more. Before that 'useless code' isn't reduced drastically I don't think reuse on a larger scale can work, since it would simply end in even more wrappering and duct taping.

  103. interesting bullshit by tyme · · Score: 1
    In my experience it is not small scale components that get reused, but entire systems. In general the small components are not large or complex enough to make 'software archeology' an advantage over rewriting from scratch or redesigning the application to use a new (supported) component. Even with large systems, at some point the cost of maintaining the old code just gets too large and the system is redesigned and reimplemented, either wholesale or piecemeal. The only systems I have encountered which have effectively resisted reimplementation for long periods of time are:
    1. very complex, so that reimplimentation would be prohibitively expensive
    2. safety critical, so that even minor failures in the replacement system would be disasterous, and
    3. require effectively zero on-going maintenance.

    If a system fails any of these three criteria, the pressure to reimplement will be irresistable.

    Vernor Vinge is an adequate science fiction writer, but his ideas about software engineering are purely fanciful. The very concept that you could replace actual programming with a purely investigative procedure has clearly never actually done any programming. Even if this were possible, it wouldn't be profitable: for any reasonably complex program, the amount of effort needed to understand the program well enough to repurpose it is, at least, equal to the amount of effort required to write a completely new implementation. Very few software systems, and almost no individual components, meet all three cirteria to resist re-implementation.

    Device interfaces change. Communication formats change. Platforms change. Programming languages change. Worst of all, requirements change. Any one of these changes is enough to cause a complete rewrite of a component, even if that component has completely open source code. If a proram's source code is unavailable, or is written in an obscure language, the cost of re-implementation in the face of changing requirements can be a tiny fraction of dealing with the existing program.

    --
    just a ghost in the machine.
  104. Electronic version of the novel by Vadim+Makarov · · Score: 1

    "A Deepness in the Sky" is a excellent novel. If you like SF, it's a must read.

    Those few Slashdot readers for whom buying a paper book would be impractical can get an electronic text on a pirate channel. <pirate> Launch an IRC chat client (Opera browser has one built in) and join the room bookz on Undernet, Europe. Once there, enter the line

    !EBrarian Hugo 2000 Winner Novel - Vinge, Vernor - A Deepness in the Sky.rar

    For simplicity I have skipped the search stage here, listing a file that would probably be accessible for some time. You could get a list of all files by typing e.g.

    @seek Vinge Deepness Sky

    </pirate>

    --
    17779 eligible voters in a district, 17779 'vote' as one. This is Russia.
    1. Re:Electronic version of the novel by callmetheraven · · Score: 0

      Could not disagree more, "Deepness in the Sky" super-sucks, and Vinge only ever wrote one thing that didn't super-suck; the short story "Long Shot".

      And no, I am not a sci-fi hater, quite the opposite, I am a crappy-sci-fi hater.

      Speaking of crappy-sci-fi, anyone read the latest steaming load "Camouflage" from the once-great Joe Haldeman? How did this ever win a Nebula, and just how strong is the crack that the selection committee is smoking??

      --
      You can have my SIG when you pry it from my cold, dead hands.
  105. Processes vs. threads by tepples · · Score: 1
    (how many components have been dropped because they were perfect, except that they didn't handle multithreading?).

    Likewise, how many glue codes have been dropped because they were perfect, except that their developers didn't handle execution models with multiple processes and one thread per process? Conventional wisdom is that multiple processes communicating through message passing (e.g. local sockets) are easier to get correct than multiple threads communicating through shared memory.

  106. what counts as "from scratch"? by Lord+Bitman · · Score: 1

    I use libraries when I write code. Sometimes I use those libraries to write other libraries (which I later use). My boss can write directly in assembler when it's needed, but he's still calling existing system functions which are just inaccesable from C. If you really want to get down to it, the people who made those system functions were just using the instructions already built into the hardware, which I hear is increasingly being created using higher-level tools.

    --
    -- 'The' Lord and Master Bitman On High, Master Of All
  107. Bah... its just the unix philosophy warmed over by HighOrbit · · Score: 1

    SOA is a nice concept (and buzzword). At the local-machine level, this is exactly what unix has always been. You have a bunch of programs with a standard interface (text through pipes/stdio instead of xml through http) and you tie them togather with "glue code" shell scripts (or perl).

  108. Three words by JFMulder · · Score: 1

    More often than not, these constituent parts are Open Source software systems and typically not designed to be used as components. These parts are then made to interoperate through wrappers and glue code. We think this trend is a harbinger of things to come. What do you think?

    Three words : Not gonna scale.

  109. NOBODY codes from scratch anymore by sog_abq · · Score: 1

    since the advent of assemblers, I doubt that anybody really codes from scratch anymore.

  110. Slashdotters in Science fiction : by TTLof1MIN · · Score: 1

    Alastair Reynolds : Century rain. " It's all right,' Niagara said. 'I won't be the least bit offended if you call me a Slasher. You probably regard the term as an insult.' 'Isn't it?' Auger asked, surpriced. 'Only if you want it to be.' Niagara made carefull gesture, like some religious benediction: a diagonal slice across his chest and a stab to the heart. 'A slash and a dot,' he said. 'I doubt it means anything to you, but this was once the mark of an alliance of progressive thinkers linked together by one of the very first computer networks. The Federation of Polities can trace its existence right back to that fragile collective, in the early decades of the Void Century. ,, Slashdotters are murderous genocidal maniacs in that book ;-)

    1. Re:Slashdotters in Science fiction : by Tim+C · · Score: 1

      Slashdotters are murderous genocidal maniacs in that book ;-)

      They're worse than that - the amusica virus is a work of pure evil if you ask me. Personally though, I found the slashdot name-dropping to be somewhat grating. (Also, "an alliance of progressive thinkers"? Has Reynolds ever actually read slashdot?)

  111. Troll Time by Anonymous Coward · · Score: 0

    Oh no!!! A science fiction book talks about something - fud! I program from scratch everyday at work and it hasn't slowed down.

  112. problems with code reuse by multicsfan · · Score: 1

    One of the problems that is occuring now is installing some of these programs. They may not list all the other programs you need first. This causes installs to fail for various reasons, missing header files, missing libraries, incompatable compiler options, incorrect versions of things.

    It can be a nightmare with some programs tracking down all the dependencies. I've been there with several flavors of *nix and also with windows.

    As reuse of code and/or code fragments becomes more and more common the problems with getting all the right stuff that is presumed to be installed located and installed to make life happy.

  113. Re:Oh my - mandatory perl plug by ancientt · · Score: 1
    Of course that could only happen if there were a central source where many people tested the components, and could provide fixes if needed. Something like cpan.org.

    I recently put together a browser like tool in about an hour that would do a task in a matter of minutes that would have taken a week to do manually.

    http://search.cpan.org/~petdance/WWW-Mechanize-1.2 1_03/lib/WWW/Mechanize.pm

    Of couse I could have coded it from C, built my own booting OS and something that would have done the tcp/ip then parsed the results into something recognizable as english text and written in hundreds of potential responses to whatever I got back and it wouldn't have taken more than a decade. Yeah, that would have been "code reuse" too since I didn't write C but I'm not sure that even with a decade I could have done it in binary.

    Are we there yet?

    --
    B) Eliminate all the stupid users. This is frowned upon by society.
  114. Smaller open source project = better reuse by shmert · · Score: 1
    For this to work, the open source projects need to be:
    • Single-purpose and well-defined
    • Well documented
    • Rated/reviewed


    I've been using some open source components for a recent project, so this seems pretty relevant. I needed to upload a file from Java, so used the jakarta HttpClient. Works pretty well! Likewise, I needed to handle uploads, and javamail was stripping unescaped backslashes sent by IE/WIN. Jakarta to the rescue again, they've got a handy project just for parsing multipart form data.

    Both of these were things I could have implemented myself, but certainly ended up saving a lot of time and probably bugs. I was impressed with the level of documentation on the apache jakarta site, it gave me the information I needed to start using the things right away. Plus, having the jakarta project name attached to them gave me some confidence that they weren't utter garbage.

    But most importantly, each of the libs is small and single-purpose, and doesn't try to be a swiss army knife. It was very nice to find two existing frameworks that did what I want, and not much more.

    These are projects I would happily contribute to.
    --
    You drank my drink, you drunk!
  115. Code bloat as far as the eye can see by ClosedSource · · Score: 1

    If this is what the future holds, then the average project will be so bloated that Vista will look like a "hello world" program by comparison.

  116. OT: You don't WIN friends... by Anonymous Coward · · Score: 0

    You don't win friends with salad.

    And you won't make friends with Simpson's misquotes. ;-)

  117. Don't forget the humble pipe. by nick_davison · · Score: 1

    MS has made programming insanely simple. DLL's and other forms of COM objects make code reuse very, very simple.

    It's hard to beat the pipe | for insane simplicity.

    By definition, command line unix reuses the output of one small program as the input of the next on all text based code. It's simpler than any dll linking and has been around since long before DLLs in Windows, Window itself or the MS DOS Windows initially sat upon (and then spent years trying to pretend it didn't).

    This has always been Windows' strength and weakness. Unless an outright coder, you have no way of chaining one program to another. Power users resent having to code to do something that's just right there in CLI systems. On the flip side, with it being so much less accessible, the average user doesn't feel forced to learn the more complex process (sorry linux users but the average grandmother doesn't want to hear "Oh, you just need to grep the output of your find for..." and isn't going to adopt your platform while she assumes she has to do so to get anything done).

    1. Re:Don't forget the humble pipe. by Anonymous Coward · · Score: 0
      This has always been Windows' strength and weakness.

      Absolutely. *nix opens up the system for powerusers; Windows shields newbies from confusing commandlines. Which is why Windows is a lot better than linux for your grandmother, and why linux is a lot better than Windows for me.

      Different strokes for different folks - wish more people could see this and stop seeing it as a war ... *sigh*
  118. It's already happening by thepacketmaster · · Score: 1

    I remember creating subroutines to draw a circle on the screen, or fill that circle with a colour. I remember writing lots of different code that is now considered part of the standard C libraries. I think the key to proper code reuse is the same as it has always been: discrete functions that have properly documented uses and predictable results. I think the reason why some people have issues with code reuse, is because they aren't reusing the code properly. Instead, a program or process that sort of fits the parameters is used and then it breaks because something happened the programmer didn't originally anticipate. There will still be a lot of coding to do even with reusable code, since existing code isn't going to take into account every situation. The bottom line is, code reuse already happens today, and will continue. In order to do it properly, it will just come at a slower (but more effective) pace.

    --

    --

    Luck is just skill you didn't know you had.

  119. True in most large projects by Anonymous Coward · · Score: 0

    I can definitely agree that we are already there in some areas, like large systems. At least in the open source world in my opinion. Think about any task you'd want to accomplish... Does it involve networking? Almost certainly you'll want to reuse some networking library. GUI? There are plenty of GUI frameworks to choose from. An application you use lacks feature X; would you rather write a new application from scratch with that feature or add the feature to the app you use?

  120. A problem solved is a problem solved. by meburke · · Score: 1

    As a matter of fact, I find it lamentable that so many programmers are fumbling around trying to solve problems that have already been solved. I once had a book (part of it consisted of microfiche sheets, so that tells you how long it's been) from the ACM containing all the published fundamental algorithms. True, some of them were in assembly, COBOL, FORTRAN, and other languages that aren't popular now, but the theory was that programmers should be working on solving new problems, not reinventing solutions to old problems. Translating an algorithm from a different language is preferable (in productive mesurements) than reinventing it yourself.

    Vinge has a point, and although I agree that it makes for a good story (because every story needs a problem), it is not good science: Surely those of us working on automated programming systems and generators will also try to invent a method of description that succinctly defines the outcomes of our program segments, and then we will use some type of genetic algorithm or other method of making the program most efficient within the constraints of the outcomes. In other words, software will be "grown", not coded, but the description of what is desired will include a constraint that makes it efficient. Furthermore, most of the tasks and workflow will be described in a similar language, so if a task has already been described, the method of solving it may have been cataloged and "component-ized" so the archeologists' job will be as simple as following a circuit diagram. However, IMO, that part of the problem will be done by robots...

    I think the current code repositories and model repositories are precursors to huge "code warehouses" or "model warehouses". The program designer will define the task, the program generator will decompose the task description semantically and use some type of pattern matching to find a suitable "component" in the repository, generate the program or system according to some type of design or artistic standards, and then grind the system 'til it becomes highly efficient.

    I believe we are closing in on a time when program development will be more akin to sculpture than logic.

    --
    "The mind works quicker than you think!"
  121. Whoosh! by Anonymous Coward · · Score: 0

    The joke was that first there was reinventing the wheel, then there was copy and paste coding, then there was COM, then there was .NET with assemblies, and the next generation after that will have what came after assemblies.

  122. dumb by illuminatedwax · · Score: 1

    This is stupid. We already use multipurpose tools for generating the code we want - we call them compilers. What they're talking about is the simple process of building up higher and higher level code. We're no longer coding in punch cards or buttons on the front of the computer, are we? If you had made the same prediction back in 1960, you'd have "code archaeologists" going back and finding old punch cards to translate into programs today or maybe people reusing the same bits of assembler instead of coding it from hand.

    --
    Did you ever notice that *nix doesn't even cover Linux?
  123. Ummm by Klaidas · · Score: 1

    Wouldn't that be a step back? I mean, someone has to write those blocks of code that you reuse... and if no-one does, 1980 will be calling soon, saying they want their state-of-the-art sources back...

  124. A prominent example: Pentaho by h_benderson · · Score: 1

    Pentaho, the Open Source Business Intelligence Suite is a very prominent example of this new approach on development. It consists of well-known projects like JFreeReport, JFreeChart, Jasper, Kettle, Mondrian and others.

    What the Pentaho guys do beyond marketing is writing glue code and user-friendly development tools. They also usually hire the project owners after incorporating a new project.

  125. Merobase, Krugle, Google Codesearch... by 5thEvangelist · · Score: 1

    fiction becomes reality? Have a look at http://merobase.com/ for example. You can start to recycle code right now.

  126. Actually by Colin+Smith · · Score: 1

    You've just explained the major economic reason for the general lack of code reuse over the last couple of decades.

    --
    Deleted
  127. Arian 5 = insufficient testing, not code re-use by harrypotter2k5 · · Score: 1

    Actually, i think Ariane 5 screwed up because of a conversion of a 64-bit floating point to a 16 bit integer. I believe that this actually has more to do with lack of sufficient testing (particularly on boundary values), rather than the use of 'glue code'

  128. He is fairly well on target. by Anonymous Coward · · Score: 0

    But in a different sort of way - It isnt necessary to actually reuse the code the way he describes. He simply have to look at software engineering ideas of patterns. Patterns ( http://www.amazon.com/Pattern-Oriented-Architectur e-Patterns-Concurrent-Networked/dp/0471606952 ) Have entered the main stream and are finnaly being taught in many undergrad programs - taught and used in graduate programs, and a serious way in which distributed object computing can be done. Patterns provide a tested and verified method for implementing common paradigms of programming, yet can be easily contextualized.

  129. Books, too? by nurbles · · Score: 1

    This is a wonderful idea that I've been hearing variations of for many, many years. I don't think it any more likely for software than I do for books, however. It is conceivable that someday authors would create a "new" book by selecting sentences, paragraphs and maybe even chapters from existing books and just adding a bit of "glue" to connect them. In fact, this has probably already been done. But was it any good? I doubt it.

    As for object re-use, I can never forget one of my programming instructors saying, "Don't reinvent the wheel." But despite using that phrase all the time, he was never able to explain why we have so many different types of wheels, with more being added all the time. How can anyone truly believe that something as complex as software will ever be so perfectly encapsulated? Heck, we aren't even doing it with simple objects like houses or cars, though, maybe, someday, there will only be one standard set of car (or house) parts that are used. Total uniformity would certainly ease maintenance, although the aethstetic aspects may suffer.

    For a computer example, how about something fairly fundamental, like a vehicle guidance system... Changing a few parameters and adding a little glue code should be the most that is needed for the softwear to drive a car, fly a plane, navigate a submarine, roll a segway, or travel to Mars, right? After all, all of those things deal with the same inputs (mass, gravity, inertia, direction, velocity, etc.) don't they? I expect that if such a chunk of software is written it will be massively outweighed by the "glue" code required to support it on each particular device.

    But I'm a pessimist and a Doubting Thomas who probably should have been born in Missouri...

  130. no coding from scratch already for many years! by master_p · · Score: 1

    Does anyone code from scratch these days? perhaps some embedded devices developers...the rest of us use the APIs provided by the operating system and programming language we use, or use alternatives found at code repositories.

  131. Well... by jswalter9 · · Score: 1

    I can't think of a single project I've worked on that didn't include at least one major piece of FOSS.

    --
    Retired from software... maybe. Sort of.
  132. binary trash by Maljin+Jolt · · Score: 1

    Giving a new meaning to trash-bin, eh?

    --
    There you are, staring at me again.
  133. It's 2006 by thaWhat · · Score: 1

    #include
    void main()
    {
    printf("What? It isn't already happening?\n");
    exit(0);
    }

    --
    If all you have is a hammer, everything looks like a thumb.
  134. Combat Archaeology by Jabbrwokk · · Score: 1

    Another SF writer, http://www.amazon.com/Newtons-Wake-Space-Ken-MacLe od/dp/B000C4SFRE/sr=8-6/qid=1162740889/ref=pd_bbs_ 6/104-0751852-8763166?ie=UTF8&s=books/Ken McLeod, has had ideas similar to this in his books. In the last one I read, Newtons Wake, the characters often have to engage in combat archaeology, which mainly involves the aggressive hacking of ancient technology. He introduces the concepts with a sense of humour -- in one segment of the book, the characters' electronics are attacked by a virus beamed from a an advanced technological artifact. They are able to tell the virus is based on human-created code because once they go deep enough with their combat archaeology, it's east to spot the Microsoft patches in the virus code.

  135. No More Coding From Scratch? by __aahgmr7717 · · Score: 1

    Reuse of sotware (as suggested by the original posting) is (in my opinion) greatly hampered by the use of C/C++ and systems that are not modular based. By "module" I mean what Niklaus Wirth created, first with Modula and later with Oberon and Component Pascal. Only by having strick information hiding (which is the default in Oberon) can one hope to be able to paste and glue (reuse) software. The C/C++ default is the export everything. It is a white box. The Oberon default is to export nothing. It is a black box. Blackboxes are much easier and safer to use.

  136. Re:Some context for people who didn't read the boo by julesh · · Score: 1

    Actually, the worst software engineer I ever worked with had a PhD in computer science. It tells you nothing about someones understanding about software engineering. For all practical purposes the two are different fields.

    There are two different fields within CS, is probably a better way of looking at it. I don't know what Vinge's exact area of study is, but given his writing I'd guess he probably focusses on computational theory and/or AI. This means he's likely to have a very solid foundation in terms of software engineering. This guess fits him in a category along with Donald Knuth.

    Other computer scientists study stuff like language semantics, concurrent architectures, mathematical approaches, stuff like that. I'd guess the guy you worked with is one of those.

  137. Re:Some context for people who didn't read the boo by Anonymous Coward · · Score: 0

    There really isn't a good class of programmers in academia. Computer theory and AI people spend all their programming time developing small apps in Scheme and Java (look at recent AI literature if you don't believe this). These apps tend to demonstrate simple concepts and are usually simple enough that they were written from the ground up with minimal reuse.

    As a former professional software engineer currently finishing up a CS PhD , I can say from experience that people with a CS PhD are the least qualified to discuss software engineering. They generally have no experience working on projects that require more than one person and learn architecture from reading rather than doing (also a probem in industry). On the other hand, experience developing real software makes getting a PhD pretty easy. Most CS PhD dissertations are really just medium sized software projects with a few performace studies. If you already know how to write software, you don't have to spend the extra time 'discovering' software engineering while you're working on your disseration.

    -Anonymous PhD Candiate

  138. So in the future... by DragonWriter · · Score: 1

    ...application programming will consist mostly of using collections (lets call them "libraries") of code other people have written in the past, along with constructing bits of glue code to connect them together.

    Er, isn't that what is done now? I mean, sure, there are some situations where you can't rely on either actual libraries or the equivalent in the built in functionality of an HLL (like writing certain basic code either to support new hardware or to tweak existing low-level code for better performance or extended functionality), but its not like most programming today is "programming from scratch".

    There's always, I think, going to be an irreducible amount of programming from scratch as long as new hardware is created which presents a new interface to software, but, yes, using code that other people have written avoid having to reinvent the wheel is important now, and will probably be increasingly important as there are more and more libraries of code out there that are available to use.

    Seems to me that, while there is some colorful language in the description, there's not much new predicted here.

  139. When they built my house by grahamsz · · Score: 1

    They didn't build it from scratch. They used all sorts of screws and nails that had been engineered by other people.

    This is just a natural progression. A few years ago we stopped having to write quicksort routines because they were already done, now we dont have to write webservers or rich text editors because they are done for us.

    The end result will be that it becomes cheaper to make complex applications and so the customer will demand even more complex ones.

  140. Licence/quality paranoia by slim · · Score: 1

    There's tons of Open Source out there that you /could/ use, and there's tons of commercial libraries out there after your dollars.

    But for commercial software, you've got to convince your PHB that it's worth the money (and I rarely see a commercial library that /I/ think is worth the money, let alone can sell to a PHB. ... and for Open Source, you need your employer to OK its use. Now this may be OK in smaller companies, but in the large companies I've worked for it's a hurdle. Mainstream stuff like OpenSSL, Perl, Hibernate etc. are fine (because someone else has gone through the process before you), but anything else has to go through a heavyweight approvals process that's often more work than writing the damn thing yourself.

    There are two main reasons for this:
      - people are concerned about using code of unknown quality
      - people are absolutely terrified of IP law: accidentally incorporating GPL code in something they don't want to GPL; relying on software that apparently has an acceptable licence only for it to turn out to be someone else's original work.

    That, to me, is the big barrier to re-use on a massive scale.

  141. Re:Absolute power corrupts absolutely. So does SOA by Anonymous Coward · · Score: 0

    Thanks! I have long been wondering whether SOA is a joke I am not clever enough to get, or whether it is a technical solution I am not clever enough to understand. That site made it all a lot clearer.

  142. Always by PhotoGuy · · Score: 1

    I always tend to create the technology behind companies I start, from scratch; but using libraries which are very rich, and becoming better all the time. Modularization and improved libraries, tends to blur the lines of what "from scratch" means. Even a raw C program that uses the standard C library, isn't technically "from scratch," since it leverages the work of others in the libs.

    --
    Love many, trust a few, do harm to none.
  143. Glue and Encapsulate by speedplane · · Score: 1

    It is a great idea to take different components and glue them together using languages like python, perl, (or for the web) php. However once those components are glued together they only fit one specific purpose. No one can take advantage of all of your glue-work, which may be a large project in itself.

    We need better ways to glue and then encapsulate. Take a number of components possibly of different languages, or even possibly architectures, glue them together, wrap them up in a single shared object binary, and expose only the needed portions.

    With a language like python you can get 90% there, but its reliance on the python runtime is a major bummer. Compiled python may be a valid choice, but I haven't seen it used too much in practice.

    --
    Fast Federal Court and I.T.C. updates
  144. Oh nooooooo...... by BarnabyWilde · · Score: 1

    Not "code re-use", re-re-re-discovered again?

  145. Making Life from Scratch by adamgolding · · Score: 1

    One day a group of scientists got together and decided that man had come a long way and no longer needed God. So they picked one scientist to go and tell Him that they were done with Him. The scientist walked up to God and said, "God, we've decided that we no longer need you. We're to the point that we can clone people and do many miraculous things, so why don't you just go on and get lost." God listened very patiently and kindly to the man and after the scientist was done talking, God said, "Very well, how about this, let's say we have a man making contest." To which the scientist replied, "OK, great!" But God added, "Now, we're going to do this just like I did back in the old days with Adam." The scientist said, "Sure, no problem" and bent down and grabbed himself a handful of dirt. God just looked at him and said no..no...no , You Get Your Own Dirt!

  146. Coding From Scratch by JeezeLouise · · Score: 1

    There is nothing new under the sun. Everything is just a rehash of Ada Loveless' work.

  147. Software re-use at OS or language level by Latent+Heat · · Score: 1
    Somehow the notion of catalogues of software IC's and assembling applications from such hasn't quite materialized. Much or most of software reuse is in the form of using features built into OS's, computer languages, or compilers.

    Program in Perl and pattern matching comes built-in. Program in Python and you get dictionaries -- key-value pairs. Delphi gives you its VCL. Program in Java and you get instant memory management.

    Making a robust module that people are going to want to reuse is hard, and the people developing OS's and computer languages and associated frameworks are willing to do that hard work. Letting a thousand flowers bloom of a miriad of 3rd party suppliers hasn't developed to the same extent, although there was some hope that component frameworks like ActiveX, .NET, or Java would make that possible.

    The idea was that the right framework would facilitate reuse -- in practice, the right framework is in itself the reuse because it has the features you need built in.

  148. You ignorant dumb-ass by Anonymous Coward · · Score: 0

    You're quoting the British version of the show. The American version said "You don't MAKE friends with salad." Just Google it you stupid f|_|ck:

    You don't make friends with salad

  149. So what's new about this? by whitroth · · Score: 1

    First, that's what libraries are all about. But then, that's also why compilers have become gigantic they're trying to write every possible function that will ever be needed into the libraries.

    Of course, companies have their own functions, but almost *never* have a company librarian, or standards that hand you, as a programmer, these functions - it's always "go see if it's out there, if anyone knows".

    But then code, properly written, is easily usable like this. The ultimate example is, of course, *Nix (grep blah filename | awk 'NR > 5 && NF > 0 && ! ($1 in myarray) { myarray[$1] = $2;}END{ for (i in myarray) { print i, myarray[1]}' | sort |etc |etc.

            mark

  150. Re:Some context for people who didn't read the boo by deadweight · · Score: 1

    IIRC, the problem was something like "my ship might end up in a zone where only a 386 would work", so software archeology was one way to write code for archaic systems that would be poorly understood by someone used to computers thousands of years advanced from that. This is NOT only science fiction. Imagine trying to get a room full of Apple IIs, Ataris, 286s, C-64s, and Amigas all up and running. Anyone remember all the custom autoexec.bat and config.sys files needed to get certain games to run under DOS? BTW, One of the coolest things in Vinge's book was the galaxy-wide network of Usenet servers :)

  151. Unintended reuse of Open Source and software tools by BenevolentProf · · Score: 1

    I'm the source of the original story. (Thanks, Clif, for choosing my post!) What I submitted was much longer and what I was really interested in unintended resuse of Open Source code and the emergence of tools to support such practices. You can see the unabridged version on my lab's web site.

    I'd like to respond to a few of the comments.

    I'm not trying to float an idea, I'm just making some observations of what people are currently doing.

    Yes, reuse is old. Reuse is sometimes bad and sometimes good.

    But what is new, I think, is the wholesale use Open Source systems as components, and the way in which people trawl the web for source code. We've had libraries, DLLs, Perl modules, classes, and the like for ages, but these were designed to be reused. But these Open Source systems were built as stand-alone systems, that people are turning into components ad hoc. When people start designing a system, they start with the idea, see what's available out there that they can reuse, and continue the design process from there. I was trying to ask some speculative questions about what software tools are needed in these situations.

    In particular, there has been a proliferation of search engines for code on the web, such as koders.com, krugle.com, Google Code Search, and Sourcerer, here at UCI. (I'm just a university researcher and not affiliated with these sites in any way.) I have a suspicion that people need features other than the ones built into these tools and that people are being very creative with existing web resources to locate the code that they want. I am a conducting a web survey to find out whether this is the case.

    I had been told that Vinge's "Deepness in the Sky," contains more detail about zones of thought and complexity, and it's sitting on my shelf. But I didn't want to insert a gratuitous reference to a source that I have not read. Look elsewhere on this topic for a more detailed discussion of Vinge's ideas.

    The comments have been really interesting. Some went in directions that I didn't anticipate and others provided insights that were new to me.

  152. futurism by FrostedChaos · · Score: 1

    You have at least a few different levels of abstraction in the industry (you could probably think of more if you tried): applied physicists who understand transistors and atoms and all that stuff, hardware people who understand NAND gates and RTL, Systems people who understand Linux and kernel modules, applications developers who understand software engineering (hopefully), and scripting/web people who understand integrating programs.

    I hate to say this, but people who are further up the hierarchy tend to look down on those below. Physicists tend to think that hardware is just a kludge. Hardware people tend to think that software is easy. And everyone thinks web development and scripting is easy (except the people doing it).
    The people further down on the hierarchy can usually be more laid-back and less mathematically oriented. Ideas from academia also tend to be more relevant to people further up the hierarchy, and less relevant to those below.

    None of these levels are really "fixed"-- new advances are being made all the time by the physicists, and it ripples down the chain.
    This is bad news for people who want things to stay the same, but good news for people who enjoy action and adventure (and being considered obsolete old farts at 35). Also, look for more layers of abstraction to emerge in the future.

    "No more coding from scratch" would only really be true if the operating system and software levels froze up, and new development ceased. But as long as those crazy physicists keep pushing more transistors on to a chip, it's a good bet that today's software will look like a bottle rocket compared to the Space Shuttle of tomorrow. Hold on to your seats, folks, and don't sell that MSFT or GOOG just yet.

    --
    "Any connection between your reality and mine is purely coincidental." -Slashdot
  153. Nothing to do with each other. by jotaeleemeese · · Score: 1

    Maybe one day geeks, nerds (or whatever you want to call them or call themselves) will get this in the part of the brain that is necessary: programming is not art.

    There, I don't care if it hurts. I have made my good deal of programming, saved the world once or twice, was very satisfied about it, and then moved on. I am also an artist on my free time, play piano to good standards, compose a bit, write novels, etc. So I think I know the differences.

    Programming is an engineering-mathematical activity that can be analyzed formally in terms of mathematical equations and theorems and that can (and should) be sujected to constraints, costs and project planning for it to be of any general use. This is more so in the context of the original posting.

    Now, if writing a perl script makes you feel all artsy-farsy, all the power to you, but the pleasure derived from it is not aesthtic in nature and will not convey any aesthetic reaction from anybody normal.

    --
    IANAL but write like a drunk one.
  154. You are in shaky ground there. by jotaeleemeese · · Score: 1

    Many composers do exactly what you are saying.

    Beethoven "Prometheus" theme is heard in many of his compositions, as is its theme from the 5th Simphony.

    As a matter of fact, Wagner advocates this approach (leif motifs) as part of composing an opera.

    And there are uncountable examples of composers that borrowed material from others to make their own compositions (the lazy bastards).

    --
    IANAL but write like a drunk one.
  155. Archeology? Try ICFP Contest 2006 by dolmen.fr · · Score: 1

    The subject of the ICFP 2006 Programming Contest was about exploring a dead system of an old civilization. The challenge is still available. Try it! It was really fun.