Slashdot Mirror


The Future of Computing

An anonymous reader writes "Penn State computer science professor Max Fomitchev explains that computing has evolved in a spiral pattern from a centralized model to a distributed model that retains some aspects of centralized computing. Single-task PC operating systems (OSes) evolved into multitasking OSes to make the most of increasing CPU power, and the introduction of the graphical user interface at the same time reduced CPU performance and fueled demands for even more efficiencies. "The role of CPU performance is definitely waning, and if a radical new technology fails to materialize quickly we will be compelled to write more efficient code for power consumption costs and reasons," Fomitchev writes. Slow, bloated software entails higher costs in terms of both direct and indirect power consumption, and the author reasons that code optimization will likely involve the replacement of blade server racks with microblade server racks where every microblade executes a dedicated task and thus eats up less power. The collective number of microblades should also far outnumber initial "macro" blades. Fully isolating software components should enhance the system's robustness thanks to the potential of real-time component hot-swap or upgrade and the total removal of software installation, implementation, and patch conflicts. The likelihood of this happening is reliant on the factor of energy costs, which directly feeds into the factor of code optimization efficiency."

184 comments

  1. Bloat by metamatic · · Score: 3, Insightful

    Every time I think software can't get any more bloated, I wait a year or two and it doubles in size again.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:Bloat by Poromenos1 · · Score: 4, Interesting

      That's very true. I always wonder why some programs have to be a few tens of megabytes (especially some shareware ones) and then a (usually open source) program comes along that's 1/10th of the size of the previous program and has more features (e.g. uTorrent vs everything else). I know that processor speed and memory are practically unlimited so you don't have to worry about them, but this is just stupid.

      --
      Send email from the afterlife! Write your e-will at Dead Man's Switch.
    2. Re:Bloat by euice · · Score: 5, Insightful

      Well, they keep thinking that 100 developpers can do the same job as a handful of good developpers. That's wrong most of the time, as in "9 women can have one baby in one month".

    3. Re:Bloat by slughead · · Score: 2, Funny

      Every time I think software can't get any more bloated, I wait a year or two and it doubles in size again.

      It's true! No GUI has ever been as snappy as classic Mac OS!

    4. Re:Bloat by resonte · · Score: 2, Interesting
      One reason I think is the fact that programming languages have become more high-level over time. Decreasing production time while sacrificing program efficiency.

      While companies that can decrease the production time of creating a program will spend less money on the developers. Efficiency is not a priority as most users do not understand the concept. If a program runs slowly on a user's computer the novice user will think it's a problem with the computer and not the program.

      --
      \(^o^)/
    5. Re:Bloat by TheRaven64 · · Score: 4, Informative
      One reason I think is the fact that programming languages have become more high-level over time. Decreasing

      Really? Languages don't get much more high-level than Smalltalk, and a Squeak does things that C/C++ programs seem to require a lot more bloat to manage.

      --
      I am TheRaven on Soylent News
    6. Re:Bloat by Tolleman · · Score: 2, Informative

      BeOS

    7. Re:Bloat by $RANDOMLUSER · · Score: 2, Informative

      That is true, but that code was wickedly hand-optimized assembly code written by Andy Hertzfeld. The hardware was known and closed. That sort of thing is frowned on these days.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    8. Re:Bloat by Cal+Paterson · · Score: 4, Interesting

      Small binary size != Fast program

      uTorrent != Open Source

      uTorrent isn't the fastest torrent program around either, and neither does it have the most features. It probably doesn't strike the best balance either.

      Next time you get the "uTorrent is b3tt4r!" bull from the #footorrents channel, read the "only 6mb memory requirement" or the "170KB binary size statistics: consider the fact that uTorrent is missing lots of features, isn't FOSS, depends on an OS with a circa 256mb base requirement, and isn't as fast or as nice with IO as some other clients.

      Then perhaps later, consider that the hallmarks of a good program aren't good benchmarks, but good design. The fact that Debian comes on seven cdroms and with 18,000 programs doesn't mean that WinXP is faster because it only comes on one.

    9. Re:Bloat by mickwd · · Score: 1

      "Well, they keep thinking that 100 developpers can do the same job as a handful of good developpers."

      Yes, companies are falling over themselves to pay 100 salaries instead of a small handful of slightly larger salaries.

    10. Re:Bloat by chris_eineke · · Score: 3, Informative
      Please remember that a Windows system by default doesn't come with a shitload of libraries like any desktop linux distribution does nowadays. kTorrent's payload is
      ceineke@lapsledge:/home/eineke$ d /usr/bin/ktorrent
      -rwxr-xr-x 1 root root 284636 2006-05-23 14:51 /usr/bin/ktorrent*
      284636 bytes. Not too bad for a K-app. But consider this, Batman: (leading whitespace removed)
      ceineke@lapsledge:/home/eineke$ ldd /usr/bin/ktorrent
      linux-gate.so.1 => (0xffffe000)
      libktorrent.so.0 => /usr/lib/libktorrent.so.0 (0xb7e38000)
      libkparts.so.2 => /usr/lib/libkparts.so.2 (0xb7df5000)
      libkio.so.4 => /usr/lib/libkio.so.4 (0xb7aca000)
      libkdeui.so.4 => /usr/lib/libkdeui.so.4 (0xb7807000)
      libkdesu.so.4 => /usr/lib/libkdesu.so.4 (0xb77f1000)
      libkwalletclient.so.1 => /usr/lib/libkwalletclient.so.1 (0xb77e1000)
      libkdecore.so.4 => /usr/lib/libkdecore.so.4 (0xb75b9000)
      libDCOP.so.4 => /usr/lib/libDCOP.so.4 (0xb7588000)
      libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7574000)
      libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7571000)
      libart_lgpl_2.so.2 => /usr/lib/libart_lgpl_2.so.2 (0xb755c000)
      libidn.so.11 => /usr/lib/libidn.so.11 (0xb752d000)
      libkdefx.so.4 => /usr/lib/libkdefx.so.4 (0xb7501000)
      libqt-mt.so.3 => /usr/lib/libqt-mt.so.3 (0xb6d18000)
      libaudio.so.2 => /usr/lib/libaudio.so.2 (0xb6d03000)
      libXt.so.6 => /usr/lib/libXt.so.6 (0xb6cb5000)
      libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb6c96000)
      libXi.so.6 => /usr/lib/libXi.so.6 (0xb6c8e000)
      libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb6c8b000)
      libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb6c82000)
      libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb6c7e000)
      libXft.so.2 => /usr/lib/libXft.so.2 (0xb6c6c000)
      libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb6c03000)
      libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6bd5000)
      libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6bd2000)
      libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb6baf000)
      libXext.so.6 => /usr/lib/libXext.so.6 (0xb6ba1000)
      libX11.so.6 => /usr/lib/libX11.so.6 (0xb6abb000)
      libSM.so.6 => /usr/lib/libSM.so.6 (0xb6ab3000)
      libICE.so.6 => /usr/lib/libICE.so.6 (0xb6a9b000)
      libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb6a93000)
      libz.so.1 => /usr/lib/libz.so.1 (0xb6a7f000)
      libfam.so.0 => /usr/lib/libfam.so.0 (0xb6a76000)
      libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6a64000)
      libacl.so.1 => /lib/libacl.so.1 (0xb6a5c000)
      libattr.so.1 => /lib/libattr.so.1 (0xb6a58000)
      libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6983000)
      libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb6961000)
      libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6956000)
      libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6827000)
      libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6823000)
      libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6804000) /lib/ld-linux.so.2 (0xb7efb000)
      libXau.so.6 => /usr/lib/libXau.so.6 (0xb6800000)
      I'm sure that when you claim that uTorrent isn't as large as other Shareware programs you have looked into its library dependencies. Or did you?
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    11. Re:Bloat by lostguru · · Score: 2, Interesting

      well not quite,

      depending on wich of the three great mac classic ages we're talking about 7, 8, or 9 that wasn't really true

      7: had to run on both 68k machines as well as the newer ppc machines and the numerous clones of the day, but still managed to perform quite well on all of them


      8: was the first to run on ppc and the g3 line of chips along with supporting a new proggraming system with the carbon libraries


      9: well nine sucked and im turning into a troll as i type so i just call it non classic and leave


      of course i see no real problem with hand optimized assembly if thats what gets the job done right, and i still think that the mac gui is wonderfull and faster than others (kde, gnome/metashitty)

      --
      Jayne: "These are stone killers, little man. They ain't cuddly like me."
      98% of America's teens drink alcohol, smok
    12. Re:Bloat by Bloke+down+the+pub · · Score: 1

      Actually there are two good reasons why they might do that. Well, two reasons anyway.

      First, it appears like you're getting more value for money.

      Second, no matter how brilliant a developer is, the upper limit of what he can be paid is likely pinned either by a) some arcanely stupid matrix function jobspec rule created by HR, or b) 10% less than his boss.

      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    13. Re:Bloat by 0111+1110 · · Score: 1

      9 women can have one baby in one month

      This is also the reason why a mere increase in the number of cores is no panacea. Although programmers need to start taking explicit parallelism more seriously, certain tasks simply cannot be split up. In many cases a task cannot continue until it has data that has been calculated by a previous task. There is no way around this. So, with the exception of embarrassingly parallel tasks developers and corporations are just going to have to bite the bullet in terms of increased development time and cost if they want to produce programs that run faster than the competition.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    14. Re:Bloat by metamatic · · Score: 4, Insightful

      No, bloat is avoidable yet not avoided in high level languages too. For example, I wrote an RSS and Atom library in Ruby, because I didn't like the one in the standard library--it was ugly code and badly documented. I expected my replacement to be slower and larger, because it was clean understandable code. To my surprise it was half the size and twice as fast. But we're still stuck with the crappy one, because it was the first one hacked together and therefore became part of the standard libraries. And that's the root problem--we have a culture where implementation speed is valued over everything else.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    15. Re:Bloat by Tim+C · · Score: 1, Offtopic

      a) some arcanely stupid matrix function jobspec rule created by HR

      Been there, done that. However, we failed to get HR to tell us what categories we'd been assigned to; the best we got was to be given a copy of the rating system so we could decide where we thought we sat, with a promise that we'd have some feedback - feedback that never came, of course.

      b) 10% less than his boss

      Prior to the jobspec matrix, we were told by our MD that we earnt as much as, or in some cases more than, some middle- to senior managers in other parts of the company, and that that would never do.

      Fortunately, our MD has since realised that actually, perhaps we deserve the money we're paid, and that going too long without a pay rise and in worsening conditions is liable to make people think very seriously about quitting, and that with the hiring freeze on it's a lot, lot easier to pay us a decent wage, HR and middle managers be damned.

    16. Re:Bloat by cicadia · · Score: 1
      284636 bytes. Not too bad for a K-app. But consider this, Batman: (leading whitespace removed)

      For a good time, try this:

      ldd /usr/bin/ktorrent | awk '{ print $3 }' | xargs wc -c
      I don't have ktorrent installed, but other simple KDE apps show dependencies on at least 22MB of libraries
      --
      Living better through chemicals
    17. Re:Bloat by cnettel · · Score: 3, Interesting

      On the other hand, even "obviously" serial tasks can be made faster if you let other threads handle highly speculative precalcing/prefetching/whatever. In a UI context, latency is king. If you can write your code so that processing starts in a background thread twenty ms before the actual click (when the mouse only hovered over the button/menu item), you'll still get the results of faster response. Try to make the processing that actually depends on the input from the previous task as low as possible. Try to guess, if you'll otherwise just be idle. Reindex your DB on another thread, even if it will only save 2 % on your main thread(s). Given, of coures, that performance and latency is what you care about.

    18. Re:Bloat by 0111+1110 · · Score: 2, Interesting

      we have a culture where implementation speed is valued over everything else.

      Here here. Well said. That, precisely, is the core of the problem. The only way that is going to change is if the market forces their hand. If/when the speed of a single core finally does hit a wall, we may see this. It's all about priorities. Developers are making an explicit choice in favor of reduced development time at the expense of exploding minimum machine requirements for nearly identical tasks. The end user really has no way to know how efficient the code is or how much faster it might have been if the developer had been using C/C++, Ada, or whatever fast language with ample hand coded assembly where needed (yes, different routines for each platform).

      Not that development time is a non-issue. It is very important. There needs to be a balance struck between code efficiency/optimization and development time. Right now there is no balance. For modern developers, it is efficiency that is the non-issue.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    19. Re:Bloat by eneville · · Score: 1

      I think they're large for debug informaiton. I noticed in visual studio just a simple comand line program took a second or two to execute, after I turned off a bunch of stuff the program would actually execute in an OK time, similar to that of default options in DevC++, where it executed instantaneously first time, OOTB.

      For a software giant, they[ms] aren't that userfriendly. Total bullshit.

      If everything built in the industry is like this then I guess they have the backing of the power companies.

    20. Re:Bloat by 0111+1110 · · Score: 1

      I think that was more or less what he was trying to say, but in a much more bloated, slow, and inefficient manner.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    21. Re:Bloat by bit01 · · Score: 3, Insightful

      certain tasks simply cannot be split up.

      That's a popular idea. It's almost always wrong.

      It may be true that something can't be split up well automatically but pretty much any practical task can be parallelized to some degree manually.

      Seriously, I challenge anybody here to name even one real-world CPU or IO intensive task that cannot be split up. Even things like encryption and compression can be pipelined and there are complicated mathematical and statistical tricks including speculative execution that can be applied as well.

      It may not be cost effective to do the split but if money is no object some parallelism will almost always help. Yes, tasks can have chokepoints but these become irrelevant if you can parallelize the work before and after the chokepoint.

      There are obscure mathematical exceptions, dependencies on external events and it may be hard to do with the tools being used but that's not what I'm talking about here.

      ---

      Creating simple artificial scarcity with copyright and patents on things that can be copied billions of times at minimal cost is a fundamentally stupid economic idea.

    22. Re:Bloat by JFitzsimmons · · Score: 1

      Where can I get my hands on your library? I have recently been asked to write RSS code in ruby, and I wasnt overly impressed with the standard library, so I'm certainly willing to investigate other options. Also, standard libraries are not completely static. For example, I believe PHP has already gone through three different complete rewrites (complete with a completely new API for each) of their "standard" XML library. If your lib is as good as you say it is then maybe it could also seek inclusion in the ruby standard distro.

      --
      Beware he who would deny you access to information, for in his heart he dreams himself your master. -Anonymous
    23. Re:Bloat by Anonymous Coward · · Score: 0

      Did you submit the lib to ruby-talk? Matz will generally accept any core-replacements that are clearly superior; he's not egotistical at all. Just a couple days ago he accepted a replacement implementation for $SAFE=4, which is a pretty low-level replacement. Did you even try?

    24. Re:Bloat by +Suez · · Score: 1

      Maybe sometimes you will be startle to see that the new edition of the software is smaller than the old one.

    25. Re:Bloat by metamatic · · Score: 1

      It's on RubyForge, named Syndication.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    26. Re:Bloat by metamatic · · Score: 1

      My library isn't API-compatible with the current RSS library.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    27. Re:Bloat by Timothy+Brownawell · · Score: 1
      Seriously, I challenge anybody here to name even one real-world CPU or IO intensive task that cannot be split up.

      SHA-1? Any other good hash function?

    28. Re:Bloat by putaro · · Score: 1

      Well, this paper seems to think you can parallelize SHA-1 at least to the extent of using vector (SIMD) instructions on it

      http://islab.oregonstate.edu/koc/ece679/project/20 03/aciicmez.pdf

    29. Re:Bloat by Kjella · · Score: 1, Informative

      Seriously, I challenge anybody here to name even one real-world CPU or IO intensive task that cannot be split up.

      Well, if you want one that can't be split up well, try any modern 1st person 3D game (FPS, RPG or otherwise). If you want the game to feel good, you have an extremely limited response time. You have no chance to predict it in advance, you don't have time to ship it out a render farm and get it back in time. And while some tasks can be "outsourced" to a second CPU/core, it scales far worse than linearly. I doubt quad-core and beyond will do anything at all for gaming. You can throw all the paralellism you want in it but you couldn't beat a modern PC no matter how many Pentium IIs and Voodoo cards you throw at it.

      --
      Live today, because you never know what tomorrow brings
    30. Re:Bloat by szelus · · Score: 1

      But we're still stuck with the crappy one, because it was the first one hacked together and therefore became part of the standard libraries.

      Being wise, we could have it both ways - define good interfaces, make quick "proof of concept" code, and then replace it with a better, thought-over implementation.

      But then again, defining good interfaces is a time-consuming task, so in a TTM quest, it gets its shortcuts too.

      And we end up with having it wrong both ways - big, bloated, crappy, and ugly code.

    31. Re:Bloat by bit01 · · Score: 1

      Geometric parallelism. Assign a different part of the display (usually a horizontal stripe or interlaced picture) to different GPU's/VRAM's. Effectively, each GPU is working at a low display resolution.

      SGI and "Evans and Sutherland" in their heyday used to do this when electronics wasn't as fast as it is now and even today there's consumer dual and quad GPU solutions. There's no major reason they couldn't scale beyond that if it became cost effective though it may be necessary to use a broadcast bus to get the data to each of the GPU's. A primitive alternative would be to run multiple PC's side by side each having the same world model but slightly different viewing direction to build up a higher resolution display. I've seen this done to get stereo.

      Most 1st person 3D games are graphics limited but if the bottleneck did become the world model then assign different CPU's to different sets of objects in the world model. Remember that each CPU can have it's own copy of the world model with only the relatively low bandwidth data of world updates being broadcast to all the CPU's.

      ---

      I'm not worried about the use of DRM. I'm worried about the abuse.

    32. Re:Bloat by Lorkki · · Score: 1

      Think what you will, but bear in mind that archaic GUI systems only tend to support low pixel and colour resolutions, and have no ways of taking advantage of modern acceleration hardware to take the load off your main CPU, even if they did somehow scale beyond that. The feature sets are much more modest than what people now expect from their workstation environment. That goes in part for later MacOS "Classic" as well, although to be fair it has other historical weights tied to its feet besides the GUI.

      Hand-crafted assembly code would be a fool's route to take these days as you'll only write for one CPU architecture, probably lose some other hardware abstraction while at it, take a much longer time to write the code (presuming you actually want hand-optimisation to be of use), and even then your C compiler might be able to see some optimisation route that you don't. And when you need to switch architectures, you need to do it all over again. All that would be a royal waste of personnel resources for any project, and mostly for nothing.

    33. Re:Bloat by Ginger+Unicorn · · Score: 1

      yes but all those libraries are shared, thus eliminating redundancy. the real acid test would be to add up the size of all programs using all of those libraries, then add up the size of all windows apps required to provide the same functionality and see which is bigger.

      --
      (1.21 gigawatts) / (88 miles per hour) = 30 757 874 newtons
    34. Re:Bloat by Lissajous · · Score: 1

      Ever heard of vertex shaders, pixel shaders, SLI? Hardware-accelerated physics (e.g. http://www.aegia.com/)? All examples of parallelism going on inside your modern PC. Stuff is getting shipped out by your CPU to different bits of you renderfarm all the time, so it can precisely spend it's own time predicting what's going on in advance. This is, in fact, one of the main reasons why a game *does* feel good - because the CPU has been freed up by outsourcing the T&L pipeline.

    35. Re:Bloat by SecondHand · · Score: 1

      Calculate y(n) where y(n) = a * x(n) + b * y(n-1). This is a basic, first-order, infinite impulse response filter. Off you go.

    36. Re:Bloat by DimGeo · · Score: 1

      What if you split the screen between 2 cpu/gpu pairs? You should get much better framerates.

    37. Re:Bloat by why-did-I-wakeup · · Score: 1

      However you have to remember those shared libraries are only loaded into memory once. Then the OS maps those libraries into the applications address space. At least on a good OS thats what happens (or something similar).

      --
      Most people would rather be certain they're miserable than risk being happy.
    38. Re:Bloat by scottnix · · Score: 1

      This is a pretty general statement, my friend. Windows XP is a very user friendly OS. Microsoft may have poor business tactics but they do make/abscond good software. The reason your "simple command line program" took a "second or two" to execute was because you were (assuming it was C++) compiling with /clr. This compiles the application to run on the .NET framework - not to a native binary. The .NET framework adds 20ish Megs of runtime which needs to be loaded in memory when the application runs. As far as the user friendliness of Microsoft's tool, you are simply incorrect. I can only assume you've never developed an application for Windows. Microsoft Developer Network (MSDN) is one of the best documentation sources available. It not only contains Microsoft specific C++ library information (as well as drawn out examples) but also contains the full C++ standard library documentation as well as (clearly marked) Visual C++ specific information.

    39. Re:Bloat by bit01 · · Score: 1

      See sibling post re SIMD. In addition the innermost loop of most hash functions including SHA-1 are bit operations and can be loop unrolled and made expression-parallel to a certain extent, or be speed up with simple hardware to the GB/s range ie. IO limited. After that just hash each file on the disk separately but in parallel. Simple, but it works. Google probably hashes in parallel a lot.

      If I truly did have a single huge file/message that I wanted a single hash of quickly I'd just split the file into separate blocks, hash those in parallel and then hash the resulting hashes together. I realize this isn't quite what you're saying but that's part of the reason I had the word "practical" in my post; if performance is an issue there is normally no reason why you can't just redefine the theoretical problem a little, but with no effect on the practical result, to allow large scale parallelism to be used to achieve the performance required.

      ---

      Don't be a programmer-bureaucrat; someone who substitutes marketing buzzwords and software bloat for verifiable improvements.

  2. heh by JustNiz · · Score: 4, Funny

    >> we will be compelled to write more efficient code

    Spoken like a true Microsoft programmer.

  3. This is called "the wheel of reincarnation" by davecb · · Score: 2, Insightful

    The Foley and van Dam classic, "Fundamentals of Interactive Computer Graphics" cites Myer and Sutherland's description of adding more intelligence to graphics processors until they become the equivalent of CPUs, at which point they repeatedly find themselves slower than mass-production CPUs and are turned back into simple devices driven by fast external CPUs once more (;-))

    --dave

    --
    davecb@spamcop.net
    1. Re:This is called "the wheel of reincarnation" by crmartin · · Score: 2, Interesting

      Yup, exactly. In fact, Fred Brooks extends it in general to any specialized processor --- you find that your specialized processor can never keep up with doing the same thing in a generalized processor. Consider, for example, the IBM System/38 --- which became the AS/400, simulating the S/38's wild-ass object-based architecture on cheap commodity processors; the Symbolics Lisp Machine, which was wiped out as a Lisp platform by pretty much the next generation of GP processors; or graphics processors, like PIxar's specialized graphics machine, which has been replaced by a bunch of Linux boxes.

      In this case, the guy is re-inventing massively parallel computing; a useful technique for certain problems, but hard to map to general computing.

      how different is this from multi-core SPARCs running a thread per core?

    2. Re:This is called "the wheel of reincarnation" by Anonymous Coward · · Score: 1, Insightful

      This is true in many cases but *not* for graphics processors. nVidia and ATI *can* compete with CPU makers because they do mass-production too. Among all the things you could have said, you chose to quote that book in possibly the only place where it's wrong? You made my day.

    3. Re:This is called "the wheel of reincarnation" by ChronosWS · · Score: 2, Insightful

      Was that a revelation? This has been going on for years, although at the present time I do not see specialized graphics CPUs losing any ground to their general CPU bretheren, in large part because they are architected as part of a complete system which is designed entirely for massive data manipulation but no expansion, random peripherals or anything else. So long as that architectural decision remains, it's unlikely we will see the downward spiral of performance predicted. But that's just my opinion.

    4. Re:This is called "the wheel of reincarnation" by Kjella · · Score: 1

      I doubt GPUs will go back to being simple - simply because it's already "done". A simple card that drives 2D at 2560x1600 or even 3840x2400 (2xHDTV, limit of human sight at monitor distance) is already trivial - it's the screens that cost. Beyond that what we need is 3D power, and lots of it. For many reasons, not least of which being heat disappation it's not very practical to have them together, except in low-end situation. But for that we already have integrated graphics chipsets.

      --
      Live today, because you never know what tomorrow brings
  4. Code optimization != specialized blades by namityadav · · Score: 2, Interesting

    Pardon my ignorance, but all the blades are going to have a lot of extra software running too (OS / App manager / network communication etc). So isn't there a chance of the micro-blades end up eating even more power (Specially if the software is still bloated)? Splitting the code in different blades is definitely not really code optimization anyway.

    1. Re:Code optimization != specialized blades by yope · · Score: 2, Interesting
      Splitting the code in different blades is definitely not really code optimization anyway.

      Of course it is not. Why doesn't everybody realize, that this Max Fomitchev has absolutely no idea what he's talking about. This is complete rubbish. "Microblades" to save power? Come on, do the math: More power supplies that produce energy loss (no power supply has an efficiency of 100%), more complex software (because tasks are split up over different cpu's and have to communicate over a sort of network connection)...
      How on earth is such a thing going to be simpler and more energy-efficient? Ok, in the past, there was one big mainframe, where we now have a rack full of smaller servers (blades), but every one of those small servers does much more than that mainframe we had in the past. This fact is a simple balance of two forces: Frist, computers need to get more powerful and efficient, in order to be able to do more computing with less power in less space. Second, since computers get smaller, we can put more computers in that same space to get even more computing power. The point of balance between small and powerful is a simple matter of costs. One huge mainframe with many CPU's eventually gets more expensive to build than a collection of smaller servers with only a few CPU's each.

      I can't believe how many people, who are supposed to be knowledgeable, can talk so much nonsense. He's supposed to be a computer science professor, isn't he? And then there are so many who believe that stuff whithout even thinking about it.
    2. Re:Code optimization != specialized blades by zap42hod · · Score: 0

      regarding power supplies .. blade servers have one set of power supplies per enclosure or even rack - maintaining redundancy is much more efficient that way. In addition to ouputting DC I bet all of them are available with DC input also. In a facility with central DC supply the total savings are certainly noteworthy. Networking and cooling are also shared and more robust, probably making the whole lot (energy and materials wise) cheaper to manufacture and run. Overall, blades inherently tend to use more energy-efficient components because of the increased density.

      That said I'm not sure that a significant percentage of real world deployments can make use of all this. Plus depending on the IPC needs of the split up applications the overhead of communication and stalls between blades may outweigh all of the above. Especially since we don't have general purpose asynchronous chips yet - which reminds me .. where are the chips promised by Sun several years ago? :)

      But "microblades" .. as already speculated the whole blade concept may steer towards a robust and easily scalable, massively-SMP design. The spiral continues ...

  5. The future of software by aersixb9 · · Score: 1, Insightful

    Although the universitys are pumping out thousands of qualified, certified programmers, there doesn't seem to have been any great innovations in software since Wolf3d & Office...And perhaps AOL & TCP...we need another new 'genre' of software...just for fun, here's the genres I can think of off hand: POS/Inventory, Email, File Sharing / Downloading, FPS, Paper Preperation, Scheduling and Coordination, motor control (fuel injectors / cars), RTS, Strategy/War, MMORPG, MMOFPS, Textgames, 2d photo/art, 3d modeling/art, business simulation, flight simulation, car/driving games, publishing (via the web),...and, uh, I'm probably forgetting a bunch, such as program building software (compilers, visual studio) and much more...although the future of computers is probably neat new software, that may or may not require more mhz, and not necessarily more mhz that allows the current styles of software to get more refined.

    1. Re:The future of software by 8ball629 · · Score: 1

      You must be a designer because most, if not all, of those exist.

      Heres a link you may find interesting for video games. Procedural Generation.

  6. Wirth's law by mangu · · Score: 2, Insightful
    "software is getting slower faster than computers are getting faster"


    That's why I don't buy those Python/Ruby/Java productivity boasts. I'd rather do it efficiently in C/C++ right now than wait for a faster CPU that may never come.

    1. Re:Wirth's law by NotInTheBox · · Score: 1

      Most Common Lisp is as fast as C. Mainly because the compilers are optimized over many many years. The same holds true for all languages: It's the compiler, and only the compiler, which makes it run fast or slow.

      --
      What I cannot create, I do not understand
    2. Re:Wirth's law by dunkelfalke · · Score: 1
      --
      Conservatism: The fear that somewhere, somehow, someone you think is your inferior is being treated as your equal.
    3. Re:Wirth's law by LS · · Score: 1

      Every tool has it's purpose. If you wish to waste your time writing a tool in C/C++ that will parse text files or organize your mp3 collection, then have at it. Not every application's bottleneck is the CPU (in fact, most aren't), in which case the speed of compiled code is moot. And even some of those tasks that need speed can be managed by higher level languages, because many of their modules are written in C/C++ and/or assembly. Also, why must you choose between high and low level languages? They are just tools, not mutually exclusive religions. Put both in your "tool belt".

      LS

      --
      There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
    4. Re:Wirth's law by chris_eineke · · Score: 1
      I'd rather do it efficiently in C/C++ right now than wait for a faster CPU that may never come.
      Even if it takes you ten times longer?
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    5. Re:Wirth's law by mangu · · Score: 1
      Most Common Lisp is as fast as C. Mainly because the compilers are optimized over many many years.


      I see. Well, then let me rephrase that: I'd rather do it efficiently in C/C++ right now than wait for an efficient Python compiler that may never come.


      However, it seems that Lisp compilers are becoming too fast for some people today, because some of the old Lisp gurus are migrating to Python. A better proof of this "Wirth's law" couldn't exist.
       

    6. Re:Wirth's law by geminidomino · · Score: 1

      Aren't python and ruby interpreted languages?

    7. Re:Wirth's law by Jeremi · · Score: 1
      That's why I don't buy those Python/Ruby/Java productivity boasts. I'd rather do it efficiently in C/C++ right now than wait for a faster CPU that may never come


      That's why I don't buy those Ford/Honda/Toyota productivity boasts. I'd rather travel efficiently on my bicycle right now than wait for a faster vehicle that may never come.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    8. Re:Wirth's law by Bert64 · · Score: 2, Insightful

      Typically more time is spent running the code than writing it...
      For a one-off script that's gonna be run once and never used again, slow inefficient code that's quick to write makes sense... But for the majority of code that's going to be run over and over again, the time you saved writing the code could be wasted 10 times over waiting for it to run.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    9. Re:Wirth's law by Millenniumman · · Score: 1

      Uh, your analogy is broken, please debug and try again.

      The Ford is the faster vehicle, and we already have the infrastructure.

      --
      Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
    10. Re:Wirth's law by vux984 · · Score: 1

      Typically more time is spent running the code than writing it...

      That's only relevant if the user is waiting for the code to run.

      Consider a "report feature" in many systems. More often than not you are waiting for the database to return the query and then the printer to print it. While it might take 30 seconds to produce the report from start to finish the "code" you wrote only runs for 1 second total, even in a high level interpreted script. Is there really a point to spending 10x the effort to cut the code execution by 70%, and produce the report in 29.3 seconds instead of 30?

      Similarly, consider an interactive system, where the software pauses at each step to get input from the user. If the high level scripted system is responding within 0.1 seconds, seemingly instant to the user. Would it be worth spending 10x the effort to develop the system to respond in 0.05 seconds? The end users productivity will be identical; because the bottleneck is the user not the code.

    11. Re:Wirth's law by chris_eineke · · Score: 1
      But for the majority of code that's going to be run over and over again, the time you saved writing the code could be wasted 10 times over waiting for it to run.
      Then why not use a language that supports churning out inefficient programs in a short time and highly-efficient programs in a bit more time? :P
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    12. Re:Wirth's law by NotInTheBox · · Score: 1

      There is no reason why you could not write a compiler if you wanted too.

      --
      What I cannot create, I do not understand
    13. Re:Wirth's law by Phasys · · Score: 1

      That stupid peglegger is just trying to make a quick buck! Psst, over here!

    14. Re:Wirth's law by 0111+1110 · · Score: 1

      It's not only the compiler. It is also the whether the language allows for sufficiently 'fine-grained' (for lack of a better term) functions. If I only need to do task A and B and the standard library of the language only includes a somewhat related function that does A,B,C,D,E,F all in one, I am forced to write my own function in assembly (or whatever). IMO, what makes C one of the fastest languages ever devised is not the compiler, but its low-level bias. Sure, it is a high level language but it retains a tight grounding with assembly, (i.e. well integrated inline assembly, macros, etc).

      It is common these days to assume that a compiler can beat hand coding every time, but that is not always true. And unless you actually check, you will never really know. The biggest problem I have had with standard library functions in any language was not that the authors wrote inefficient code, but rather that they tried to do too much, far more than I needed and used extra cycles to be more 'safe'. It is difficult for a general purpose function to be as efficient as one that was coded with a specific task in mind.

      [Note: I didn't realize that common lisp had a compiler. That's pretty cool. I'd like to try that.]

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    15. Re:Wirth's law by PostPhil · · Score: 2, Informative

      No one using Python is "waiting for a faster CPU". Languages like Python and Ruby do have productivity gains that are worth whatever overhead they have.

      If the only good thing going for such languages is that they are "high-level", and higher level languages must be slow and clunky (like BASIC, which doesn't belong in the same category), then I could see your point. However:

      1. Languages like Python gained popularity as a glue language. 90% of it is running C/C++ for the heavy lifting anyway.

      2. Such languages are also prototyping languages. A programmer who uses these languages as the prototype can still translate to C/C++ later, and they'll be much more productive because these languages allow you to more freely experiment with your working design. There's less reason to fear starting over if necessary. Simply taking an elitist view that you begin and end with C isn't going to make you more productive, nor does it guarantee your program to be faster if it ends up with a bad design because you already had 5000 lines of code (instead of 500 lines) written that you'd hate to just throw away.

      3. Face it, there are varying skill-levels for programmers of all languages. Optimized standard libraries and built-in higher-level datatypes are tried and tested code within the language that works. Leveraging this code reduces the chance that a newbie will try to re-invent a higher-level data structure, and do it wrong, which would be slower than simply using an optimized one already available.

      4. "Higher-level" doesn't mean "slow". JIT compilers are getting to the point where it's more efficient to let the compiler or interpreter handle garbage collection than doing it yourself.

    16. Re:Wirth's law by 0111+1110 · · Score: 1

      Similarly, consider an interactive system, where the software pauses at each step to get input from the user. If the high level scripted system is responding within 0.1 seconds, seemingly instant to the user.

      Yeah. How often does that happen? If you can manage to allow ALL of your code to run while waiting for a user response (or the hard drive or whatever) then bravo. But that is not the case for the vast majority of the code out there and you know it. Obviously no one is going to start optimizing code without the use of a profiler, or at least without having a good idea which parts of the code are resource hogs. This is just the typical straw man tossed out, I am guessing, by coders who are not proficient or comfortable with assembly. The right tool for the right job. The problem today is not the overuse of hand coded assembly routines, but the overuse of 'managed' code and just barely compiled (JIT) languages which rely too much on wasted CPU cycles to try to make programming easier and safer (uggh).

      Feel free to use Visual Basic or Java or Python or Lisp or whatever for those few routines where speed is virtually irrelevant, where a 286 would be more than sufficient do get the job done. But for the rest, there is no (good) excuse for ignoring execution speed. That, IMO, is one of the most important responsibilities of any developer.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    17. Re:Wirth's law by cnettel · · Score: 1

      Well, the highly dynamical typing of Python means that you can't get performance similar to a properly compiled language without really clever tricks. The same holds for javascript. Make every call a virtual call and every object kind of like the VARIANT that was used for everything in Visual Basic.

    18. Re:Wirth's law by Decaff · · Score: 1

      That's why I don't buy those Python/Ruby/Java productivity boasts. I'd rather do it efficiently in C/C++ right now than wait for a faster CPU that may never come.

      You aren't doing it (much) faster in C or C++; at least not in all cases. Even for algorithms that are routinely used to check language performance (such as Linpack) customised Java VMs equal C code. Java is not interpreted - it is translated to byte code that is then compiled into machine code with a considerable amount of run-time optimisation (with all the optimisation features that C/C++ compilers have). Considerable work is being put into similar technologies for Python and Ruby.

      Processors are getting increasingly complicated, and the idea of optimising general purpose code for multi-core chips will soon look antiquated. Even now, writing general purpose high-performance portable multi-threaded code is vastly easier in Java than C or C++. The future will almost certainly be dominated by portable languages running on highly optimising VMs. and they will give high performance.

    19. Re:Wirth's law by kcbrown · · Score: 1
      4. "Higher-level" doesn't mean "slow". JIT compilers are getting to the point where it's more efficient to let the compiler or interpreter handle garbage collection than doing it yourself.

      "More efficient" in terms of speed, perhaps, but if it's more efficient in terms of speed, it's probably less efficient in terms of space.

      Usually, speed and space are traded off. I dare say that a well-written non-garbage-collecting application will have better speed+space performance than a similarly well-written one written in a modern garbage collecting language like Java. The reason is that memory management overhead in a non-garbage-collecting application is usually quite minimal (you simply allocate memory when you need it and free it when you're done -- the overhead of allocating a freeing memory is very small because it's very simple), while it's nontrivial in a garbage-collecting application.

      Garbage collection itself is a complex, nontrivial endeavor and is very hard to do efficiently. Even the most efficient implementations require much more computation than simply allocating and freeing memory does. So garbage collecting implementations tend to try to delay garbage collection as long as possible, which means more memory is allocated to the application than it really needs. Space versus speed.

      Garbage collection certainly has its merits: it reduces or eliminates an entire class of memory management issues that has plagued programmers from the beginning. But it comes at a price. The price of garbage collection is that your application is almost guaranteed to be less efficient in terms of space+speed than it would be if it were written in a language that didn't have garbage collection overhead. But that assumes, of course, that the application is otherwise well-written. Garbage collection allows the programmer to get away with writing poorer code, since the programmer no longer has to pay the price for failing to properly manage memory.

      Such is the nature of progress in the computing world: the computer manages more things as time goes on, but doesn't do so quite as well as code written by someone who is truly skilled and who truly understands the problem and solution space. So software gets more inefficient (in terms of both speed and space) over time. But it does get easier to write, which of course means that the percentage of badly-written software will continue to increase over time as the bar is lowered.

      --
      Use 'slashdot stuff' in the subject line in any email you send me if you want to get past the spam filter.
    20. Re:Wirth's law by mangu · · Score: 1
      Java is not interpreted - it is translated to byte code that is then compiled into machine code with a considerable amount of run-time optimization


      I saw the Byte magazine in a newsstand for the first time in August 1978, the cover story was about Pascal and I bought it. I still have that magazine. Inside there's an article about how Pascal was compiled to an intermediate form called "P-code". As you can see, the Java VM isn't such a new invention.


      But optimization isn't about byte code alone. As someone mentioned in this thread, algorithms can be much more important. And the big advantage about C/C++ is that they often let you choose the best algorithm for your application. Let's say your program needs to copy a hundred million strings. In C, if you know you can trust those strings to contain no malware, you can do it in a very elegant way: while (*s) *d++ = *s++;. How would an automated optimizer know when you can trust a string to have limited length so you can use this simplified routine without risking a buffer overflow? And, of course, in C/C++ you can use pointers, so maybe the best solution would be to pass pointers to those strings instead of copying their contents.


      Optimization is like that classical joke about "girls looking for husbands and husbands looking for girls". It's not a symmetrical situation. Everything you can do to optimize Java, Ruby, Python, etc, you can also apply to C/C++, but the opposite isn't always true.

    21. Re:Wirth's law by Jeremi · · Score: 1
      The Ford is the faster vehicle, and we already have the infrastructure.


      Precisely my point. In both the software and transportation scenarios, the modern mechanisms already exist and are already faster and more efficient than the old ones. Sorry if my sarcasm wasn't obvious enough.

      --


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

      Judging from your website, it looks like you have a proven history of choosing winners!

    23. Re:Wirth's law by vux984 · · Score: 1

      Yeah. How often does that happen?

      More often than you evidently think.

      Most OS wizards, control panels, etc
      Most web forms
      Most business applications (From POS systems to Personal Tax Software)
      Most utility software
      Most IO-bound or Net-bound applications.

      The amount of code out there that could run at 1/4 speed and make no difference to anybody is quite literally staggering. A vast number of applications are little more than "library/api glue", and the amount of time spent inside the api/libraries or waiting for user interaction frequently vastly dominates the amount of time actually running "the glue".

      I agree execution time is important, and I agree many applications that do real "work" and aren't just api glue can benefit from choosing a "faster" language, but I find more often than not the design of the program is more significant than the choice of language -- you have to be doing some moderately serious processing/number crunching for language to really matter. And I think you are massively underestimating the amount of applications that are just api glue.

    24. Re:Wirth's law by Millenniumman · · Score: 1

      In the original post:
      O is real. C is real. D is not real.
      O needs D.
      O is not used because there is no D so C is used.

      In you post:
      O is D. O is real, but despite their being the same thing D is not. Problem #1. C is real.
      O and D are the same thing, somehow dependent on each other. Problem #2.
      O is not used because it is real but it is not real. Problem #3. C is used.

      --
      Stupidity is like nuclear power, it can be used for good or evil. And you don't want to get any on you.
    25. Re:Wirth's law by Decaff · · Score: 1

      I saw the Byte magazine in a newsstand for the first time in August 1978, the cover story was about Pascal and I bought it. I still have that magazine. Inside there's an article about how Pascal was compiled to an intermediate form called "P-code". As you can see, the Java VM isn't such a new invention.

      It certainly isn't. The VM is much older than that - Smalltalk was using a VM in 1972.

      But optimization isn't about byte code alone. As someone mentioned in this thread, algorithms can be much more important. And the big advantage about C/C++ is that they often let you choose the best algorithm for your application. Let's say your program needs to copy a hundred million strings. In C, if you know you can trust those strings to contain no malware, you can do it in a very elegant way: while (*s) *d++ = *s++;. How would an automated optimizer know when you can trust a string to have limited length so you can use this simplified routine without risking a buffer overflow? And, of course, in C/C++ you can use pointers, so maybe the best solution would be to pass pointers to those strings instead of copying their contents.

      I don't think C or C++ developers realise quite how advanced Java optimisers and Java class libraries are. If you want to have limited length strings in Java, you can use char arrays:

      char [] array = new char [size];

      automated optimiser often knows from the source code (you can use a final ('const') value for the size) that the arrays are all within a certain limit, and it can then turn off range checking and use highly optimised machine code to handle the arrays. Just like with C and C++, there is a real advantage in Java in knowing how to write algorithms that make it explicit what the sizes of objects and arrays are, for the best optimisation.

      In Java, you can pass pointers to Strings just the way as in C - in Java all object references are already pointer - but safe ones.

      Optimization is like that classical joke about "girls looking for husbands and husbands looking for girls". It's not a symmetrical situation. Everything you can do to optimize Java, Ruby, Python, etc, you can also apply to C/C++, but the opposite isn't always true.

      No, this is just not true; not anymore. There is something really special that Java can do for optimisation that C and C++ can't - and that is to be able to optimise at run-time for the specific processor you deploy on. With C and C++ you would have to compile for Intel 32-bit. And Intel 64-bit. And AMD 64-bit. And multicore. And PowerPC 64-bit. And Sparc and... so on (and that only deals with processors, not operating systems). With Java, the manufacturer of the processor and the OS writer work together to provide the optimisation techniques for the Java VM on their platform.

      We are reaching an interesting point with VM technology - byte code translation and run-time optimisation has finally reached the performance of optimised pre-compilation. Within a decade, it will easily exceed it for almost all applications, and, although C and C++ will continue for a long time, they will be gradually related to the niche where they excel - processor-specific system coding.

    26. Re:Wirth's law by mangu · · Score: 1
      There is something really special that Java can do for optimisation that C and C++ can't - and that is to be able to optimise at run-time for the specific processor you deploy on.


      Until the day when you can say "hey, Duke Nukem Whenever is written in Java", that's all theory. If you can do run-time optimization for Java you can also do it for C++. The only thing that keeps anyone from writing a byte-code compiler for C++ that dynamically optimizes it for the processor is that, in the bottom line, the advantages are nothing to write home about. But, OTOH, if there's one thing you can *NOT* do in Java it's to state that "this variable is a pointer to that address, and the compiler should consider it when optimizing".


      If you want to have limited length strings in Java, you can use char arrays:

      char [] array = new char [size];


      I didn't say I wanted limited length strings. I said "suppose you can trust your strings are all limited in size". It's different in a very subtle but important way. I don't know what length "size" is, I just believe it's something my compiler can handle. Can you say in Java "char [] array = new char [{size | size < infinite}]"? That's the whole difference between while (*s) *d++ = *s++; and some size checking code multiplied by a hundred million operations.

    27. Re:Wirth's law by tigersha · · Score: 1

      Very, very few modern computer programs are CPu bound. Your computer spends waiting 99% of its time fo ether a harddisk or a network or some other input.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    28. Re:Wirth's law by Decaff · · Score: 1

      Until the day when you can say "hey, Duke Nukem Whenever is written in Java", that's all theory.

      No, it isn't. People are using Java for high-performance stuff right now - it is not only games that needs this kind of performance. It is image processing, networking, file handling: for example, the Tomcat 5.5 pure Java application and web server can match Apache speeds for many cases. There is also a pure Java database (HSQL) which is very high performance.

      And there is a commercial 3D game written in Java - Tribal Trouble.

      If you can do run-time optimization for Java you can also do it for C++.

      Sure, but why bother when you don't have the advantages of Java - portability at the binary level, garbage collection and easy multithreading?

      The only thing that keeps anyone from writing a byte-code compiler for C++ that dynamically optimizes it for the processor is that, in the bottom line, the advantages are nothing to write home about.

      Yes, they are. Theoretically (and this has been much researched), there are good reasons why run-time optimised byte code should exceed the performance of static compilation. This is going to take a bit more work from the VM writers though.

      But, OTOH, if there's one thing you can *NOT* do in Java it's to state that "this variable is a pointer to that address, and the compiler should consider it when optimizing".

      I am not sure what you mean here, but Java's references to objects can be implemented in any way the VM writers choose (providing they are thread-safe). They can be optimised appropriately.

      I didn't say I wanted limited length strings. I said "suppose you can trust your strings are all limited in size". It's different in a very subtle but important way. I don't know what length "size" is, I just believe it's something my compiler can handle. Can you say in Java "char [] array = new char [{size | size

      OK, so if you have char arrays of variant size, you can deal with each them individually and copy them using

      System.arrayCopy

      This will use a simple, tightly optimised loop to transfer data. This is going to no more or less efficient than the C solution, which involves pointer increments and a zero test.

    29. Re:Wirth's law by Nevyn · · Score: 1
      Tomcat 5.5 pure Java application and web server can match Apache speeds for many cases.

      Again with the speed comparisons to apache-httpd? Please compare features with apache-httpd, but speed with any of thttpd, lighttpd or and-httpd (or insert any number of actually efficient webservers here).

      I think it's fair to say that one of the problems with "higher than C" languages is that in many ways it's harder to do efficiently than C. Which explains why most of the slowest/hugest applications on my desktop are all Java and python based.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    30. Re:Wirth's law by Decaff · · Score: 1

      Again with the speed comparisons to apache-httpd? Please compare features with apache-httpd, but speed with any of thttpd, lighttpd or and-httpd (or insert any number of actually efficient webservers here).

      That is not the point. Features don't impact speed (Tomcat has a considerable, but different, feature set from apache). And, if we are getting to the point of detail mentioned here, it shows that Java really is in the same ball-park as C/C++ in terms of speed.

      When do the C/C++ people finally admit that Java has good performance, or is there going to be continuous goalpost-moving? :)

      I think it's fair to say that one of the problems with "higher than C" languages is that in many ways it's harder to do efficiently than C. Which explains why most of the slowest/hugest applications on my desktop are all Java ad python based

      Such as? The largest and slowest applications I use are general office applications (such as MS Office or Open Office) - virtually all pure C++.

    31. Re:Wirth's law by Anonymous Coward · · Score: 0

      Read the fucking page you're citing before spouting off. In particular, Norvig's reasons for providing the page in the first place.

    32. Re:Wirth's law by Nevyn · · Score: 1

      You don't think it's relevant that you compared performance against the one web server that explicitly doesn't care about performance?

      % ps ax -o vsz,rss,cmd | egrep [...]
      159856 43128 python /usr/lib/deskbar-applet/deskbar-applet
      241032 28384 python /usr/libexec/revelation-applet
      151496 58052 python /usr/lib/gdesklets/gdesklets-daemon
      361480 81056 /usr/bin/java ... -launcher /usr/share/eclipse/eclipse -name Eclipse
      179400 57976 /usr/lib/openoffice.org2.0/program/swriter.bin
      38 4352 100284 evolution
      % ps ax -o vsz,rss,cmd | egrep xemacs
      34128 22352 xemacs
      161148 149480 xemacs
      34160 22348 xemacs

      The first two provide a search bar in my panel (which I haven't used today), the third one provides a single analog clock (much like oclock, which takes "3516 1664") ... eclipse was just started and is open at a blank page, as is openeoffice ... evolution has been up a day and is in front of GBs of email.

      The xemacs bit also shows the problem of garbage collection, the middle one is running gnus and is normally about the same size as the others ... but earlier today I received some multi-MB pictures, and the GC didn't win.

      Also note that eclipse has an edge over most other Java apps. I use due to actually being compiled to native code via. gcj.

      When do the C/C++ people finally admit that Java has good performance, or is there going to be continuous goalpost-moving? :)

      Err, when it's true (Ie. never) ... it's sometimes deemed "acceptable" to have not-good performance, but that isn't the same thing.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    33. Re:Wirth's law by Bert64 · · Score: 1

      Consider again that report feature, reports may not be printed and you might have to run thousands of them on a single machine.
      That 0.7 seconds saved, multiplied over 100,000 transactions becomes 70000 seconds (about 19 hours)

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    34. Re:Wirth's law by vux984 · · Score: 1

      Consider again that report feature, reports may not be printed and you might have to run thousands of them on a single machine. That 0.7 seconds saved, multiplied over 100,000 transactions becomes 70000 seconds (about 19 hours)

      Agreed. *Consider* the situation. Sometimes optimising will make sense. Sometimes it won't. Blindly advocating either is silly.

      If you are running 100,000 in an automated batch then yeah it may be worth going back and optimising it. But if the report is only run by one or two executives once a month optimisation is irrelevant. And in still more cases 100,000 people each interactively run one copy of their own report, on their own computer - and in practice saving 100,000 people 0.7 seconds each - that's going to be tough to see a return on, even if it does add up to 19 hours in aggregate.

  7. small code is hard work by NotInTheBox · · Score: 4, Insightful

    Writing small is difficult and I don't think it can be done in a group. Most software which is small is written bij less then 3 programmers.

    Compare: "Easy writing makes hard reading." -- Ernest Hemingway

    --
    What I cannot create, I do not understand
    1. Re:small code is hard work by Smallpond · · Score: 1

      Most software which is small has a really good library behind it.

    2. Re:small code is hard work by NotInTheBox · · Score: 1

      True.

      But writing a really good library is stil hard.

      --
      What I cannot create, I do not understand
    3. Re:small code is hard work by contrapunctus · · Score: 1

      I remember someone showing me how by entering a series of inputs in Microsoft Word, a pinball game would start that was built-in. To me this was an example of software companies' attitude of "I don't care about your hardware resources".

    4. Re:small code is hard work by Anonymous Coward · · Score: 0

      It's called an easter egg. When it's in anything other than a Microsoft product, you people are amused. Fucking faggot.

    5. Re:small code is hard work by Anonymous Coward · · Score: 0

      Easter eggs have nothing to do with a software company's attitude, they're put in there by the developers horsing around having some fun, without the company knowing. Fucking tool.

  8. the cost of hardware... by geoff+lane · · Score: 4, Interesting

    ...is strongly dependent on the interfaces it presents to the world. The pressure is to push more and more functions onto a chip so that external interfaces can be eliminated. This is the victory of the general purpose computer. While in the short term it is always possible to build faster, more speciallised hardware to perform a function, eventually a faster CPU chip which implements the same facility in software becomes cheaper and generic.

  9. Spirals? by Smallpond · · Score: 1

    What units are on the two axes of this spiral? Why isn't it nested tetrahedrons?

    1. Re:Spirals? by plasmacutter · · Score: 2, Funny

      or.. and this has to be said.. a "series of tubes?"

      --
      VLC FOR MAC IS DYING! IF YOU DEVELOP, PLEASE SAVE IT!!
    2. Re:Spirals? by kfg · · Score: 1

      What units are on the two axes of this spiral?

      Workload and units processing the load, but it simplifies computations to use a system of coordinates native to quantized spirals, nautili.

      Why isn't it nested tetrahedrons?

      Because that would be silly.

      KFG

  10. Dupe? by Knights+who+say+'INT · · Score: 1, Troll

    If I had a dime for every time /. has had a story titled "The Future of Computing".

    Seriously. Not the same story, true, but the same title, over and over. Just look.

    1. Re:Dupe? by NiteMair · · Score: 2, Funny

      You'd have what... $0.50?

    2. Re:Dupe? by Anonymous Coward · · Score: 0

      Welcome to Slashdot, New User!

      We talk about computers here. That includes past, present, and future.

  11. "radical new technology"? by plasmacutter · · Score: 5, Interesting

    Gaming continues to be highly demanding on computer systems.

    While I believe processors are currently heavily outmuscleing the exchange rate of primary memory, and that this gap should be closed, I don't believe the era of power expansion is over.

    While chipmakers are becomming increasingly environmentally conscious by increasing performance per watt, they are also abandoning hype based "clock speed" development and actually focusing on reducing cycles per instruction, raising instructions per second, optimizing pipelining, and increasing responsiveness.

    While this might not be seen as power growth it is, but it's similar to the difference between overall horsepower vs torque on a vehicle.

    in the previous decade, most vehicles had decent horsepower but low torque, now the carmakers focus on less fuel hungry but higher torque engines, but as a side effect they also get more HP per liter.

    --
    VLC FOR MAC IS DYING! IF YOU DEVELOP, PLEASE SAVE IT!!
    1. Re:"radical new technology"? by Anonymous Coward · · Score: 0

      > Gaming continues to be highly demanding on computer systems.

      So true. When I played with C64, there was a game where grass-area was a single green rectangle. Today there are games where every single plant (even grass) is 3d modeled and animated object, with shadows. Sure it takes more power.

      But of course there are programs that could use less. Some programs even have memory leaks or other bugs in the code, that just haven't been fixed. These are something that everyone agrees that it shouldn't be there. But memory leaks are mostly very small and unnoticed. If there is a large memory leak, it is usually noticed quicly and fixed quicly. Good tip for developers: Do a stress test, make a simple robot to use your software in a loop for a weekend, after that see how much memory it is using and how fast it is.

      Of course there are faster ways if you can use proper tools, like valgrind for searching mem leaks. Valgrind will not only tell you about memory leaks, it will also tell you where it is.

      But mostly it is all about priorities. I think that 80% of people complaints are about bugs, 19% are feature requests and 1% asks for more speed or smaller memory usage. But there are also projects, which whole goal is to be small and efficient and to have zero bugs. But then again, if you check forums for those software, all you see is feature requests. Usually people get want they want.

    2. Re:"radical new technology"? by Anonymous Coward · · Score: 0

      Amazing how easy it is to get +5 on Slashdot. In the first half you didn't say anything. In the context of CPU's, what does "increasing responsiveness" mean? You even contradicted yourself with "abandonding clock speed development" and "raising instructions per second".

      And then in the second half with your car analogy you're hopelessly wrong. In the previous decade, excluding SUV's for a moment (a legally different class of car), most vehicles had low torque and low horsepower. Low torque is necessary to keep fuel consumption down, because in order to achieve greater rotational force, a larger detonation is required, hence a larger fuel-air mixture. What the carmakers discovered is that they could make engines breathe deeper and rev higher, adding horsepower, and turned their marketing towards that metric, while this extra power only exists at the top end, in the part of the rev band where most consumers never go. So they get to advertise more hp per liter, while torque remains pitifully low, so cars feel the same, thrust-wise, and get decent mileage, but they have more top-end potential, that you'll never use (unless you like to drive around the red line all the time).

      (For SUV's they didn't have the same fuel mileage standards, so they went with engines that drank more gas but hence also produced more torque, similar to the '60's muscle car era.)

    3. Re:"radical new technology"? by plasmacutter · · Score: 1

      In the context of CPU's, what does "increasing responsiveness" mean?

      generally responsiveness is increased trough a combination of better chaching (more cache more intelligently managed) and more parrallellism, such as hyperthreading and multiple cores.

      You even contradicted yourself with "abandonding clock speed development" and "raising instructions per second".

      no I did not.. any basic architecture course will teach you that a given instruction on a cpu may (in fact is likely) to take more than one clock revolution.. so you can make a chip "faster" and have it process "more [linear] instructions per second" by decreasing the number of clocks per instruction [for nonlinear instructions see counterpoint previous to this one.

      And then in the second half with your car analogy you're hopelessly wrong... [blah blah blah]So they get to advertise more hp per liter, while torque remains pitifully low, so cars feel the same, thrust-wise, and get decent mileage.

      uhh no.. someone hasnt been driving enough vehicles to compare. I however have gone through numerous cars ranging from 1990 to 2005 in model and from american to german to korean in make.. i know what i'm talking about here.

      --
      VLC FOR MAC IS DYING! IF YOU DEVELOP, PLEASE SAVE IT!!
  12. Some thoughts by madcow_bg · · Score: 5, Interesting

    > "The role of CPU performance is definitely waning, and if a radical new technology fails to materialize quickly we will be compelled to write more efficient code for power consumption costs and reasons," Fomitchev writes.
    Yes, he is right. The problem is that http://en.wikipedia.org/wiki/Unix_philosophy has been very long forgotten from the manifacturers of OS for 90% of the PC's around the world. I do not want to start a flamewar, just consider how many features of the OS you really need? It is arguably a GOOD practice to put everything you can in an OS, but for cryin' out loud, at least there must be a way to remove the unneeded parts.

    > Slow, bloated software entails higher costs in terms of both direct and indirect power consumption, and the author reasons that code optimization will likely involve the replacement of blade server racks with microblade server racks where every microblade executes a dedicated task and thus eats up less power.
    That looks like where we're heading now. Jut consider the 1000 projects for distributed computing out there, and the whole virtualization thingy. But this by itself cannot mean that much less power. If you want less consumption, you have to rely on technology AND on more optimized software.

    > The collective number of microblades should also far outnumber initial "macro" blades. Fully isolating software components should enhance the system's robustness thanks to the potential of real-time component hot-swap or upgrade and the total removal of software installation, implementation, and patch conflicts.
    YES!!! That's what we're talking about, man! We need separate modules to do the work. Just for info, try googling for Microkernels vs. Monolithic. Tannenbaum has good arguments in favor of microkernels in terms of stability. I don't want to take either side, but it is true that whilst a mere 99.999% of the cars don't suffer from reboots of their onboard computers, our desctops still do. Remember the old joke: "You've moved your mouse. Please restart your computer for the changes to take efect."

    > The likelihood of this happening is reliant on the factor of energy costs, which directly feeds into the factor of code optimization efficiency."
    Maybe we should move into higher-programming languages that take most of the optimizations hidden from the programmer. For example I have recently read a review that optimizied Java code is VERY near native C performance. Even if that is not true, C is not adapded enough for the various SSE, SIMD and so on optimizations in the modern PCs. Yes, GCC makes all kinds of optimizations, but maybe WE need to move into higher-order logic for our programs?

    1. Re:Some thoughts by Anonymous Coward · · Score: 0

      Don't car computers get rebooted every time the key is put in the ignition?

    2. Re:Some thoughts by Anonymous Coward · · Score: 0

      Maybe we should move into higher-programming languages that take most of the optimizations hidden from the programmer. For example I have recently read a review that optimizied Java code is VERY near native C performance

      If you make your Java code look like C code then yes, it can be made almost as fast if not even equal. The problem is, no-one writes their Java that way. Every action you perform in Java tends to go through 50 different abstractions and these abstractions are not free. (If significant global optimizations were possible they could be, but they aren't thanks to Sun's let's-nail-every-detail-down attitude and design).

    3. Re:Some thoughts by Anonymous Coward · · Score: 0

      just as computers get rebooted every time you turn them off/turn them on.

      However, onboard car computers don't crash with anything approaching the frequency of desktop computers. I'm not talking about physical car wrecks either. You also can get into your car and as long as you have fuel, oil, coolant, and no mechanical mishaps, the car engine will run virtually indefinitely, providing the electricity to keep the onboard computers running crash free. We can't say that about the majority of desktop computers. So quite possibly the word "reboot" should have been replaced with "crash"

    4. Re:Some thoughts by asuffield · · Score: 1
      I don't want to take either side, but it is true that whilst a mere 99.999% of the cars don't suffer from reboots of their onboard computers, our desctops still do.


      This is actually not true. Car computers *do* crash and reboot, they just do it automatically and very very quickly. The thing has to respond correctly within X milliseconds, or a supervising piece of hardware simply resets it, and it starts working again within Y more milliseconds - maybe you get a couple misfires, but the car basically keeps on working.

      Also, they're tested much better than desktops and they're much easier to test (since they operate only in a single fixed configuration, no users meddle with them, and they only do one thing).
    5. Re:Some thoughts by Anonymous Coward · · Score: 0

      However, onboard car computers don't crash with anything approaching the frequency of desktop computers.

      Neither do desktop computers. I haven't seen a computer crash since my mom's old DOS-based Windows 98.

  13. Spiral spirals by crmartin · · Score: 1

    I should have been an academic after all, I think. All I'd have to do is write a paper that says the same thing Fred Brooks said 25 years earlier and people would think I'm brilliant.

  14. virtualization, generators, and languages by drDugan · · Score: 3, Interesting

    ok, my BS meter is pegged

    while the article has lots of intersting data and information, he doesn't know much about predicting the future

    He's right on focusing on memory (vs. CPU) - this is where the major bottlenecks are

    He completely missed the boat though on virtualization. Everywhere I look there are different examples of virtualization that are driving development choices - and he doesn't mention it once.

    he also is missing the tide happening right now with metaprogramming and generators

    also missing the boat on the trends in language flexibility that are turning application development into "domain specific language" development. we're at a tipping point over the current 2-3 year horizon where developers are building out the language AT THE SAME time they write their application. coupled with effective reuse strategy, this will revolutionize how quickly and how functional all our apps can be.

    it sucks that tesxt is static, there are a huge number of ideas here, and I have not expressed them as well as I'd like, but alas, once submitted, the text can't change, and it presents the same info to each reader, no matter what their context or background is. I like talking to people much better.

    1. Re:virtualization, generators, and languages by kfg · · Score: 2, Insightful

      . . . he doesn't know much about predicting the future

      Be vague.

      KFG

    2. Re:virtualization, generators, and languages by chris_eineke · · Score: 1
      also missing the boat on the trends in language flexibility that are turning application development into "domain specific language" development. we're at a tipping point over the current 2-3 year horizon where developers are building out the language AT THE SAME time they write their application. coupled with effective reuse strategy, this will revolutionize how quickly and how functional all our apps can be.


      Old is new and new is old.
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    3. Re:virtualization, generators, and languages by drDugan · · Score: 1

      I agree... LISP is more remarkable as we see computing revisit many of it's stengths, or as the OP might say, have it spiral back around.

      Or stated for the simple minded in search of a moral compass: "There is nothing new under the sun..."

  15. Dude... by Anonymous Coward · · Score: 0

    ...what's again that shit you've been smoking? That sounds awesome!

  16. It's not the language, stupid! by Inoshiro · · Score: 4, Interesting

    It's the algorithm. It's straight complexity theory; C/C++ is not a panacea. If you write a 2^n or n! algorithm in C, it'll have its doors blown off by an nlogn algorithm in Python.

    Either you have constant time, nlogn, or even n algorithms that run OK (CPUs today are fast enough that even for a decent sized n, an n algorithm will be executed shortly). However, no computer humans can ever build that works on the same principles as your desktop computer will be able to do 2^n, n^n, or n! algortihms in any kind of useful time for large n.

    You might be able to get results in a lesser amount of time if you can parallelize the work (see the Distributed.net cracking efforts on factoring into large prime numbers), but if you can't make the algorithm work in parallel or otherwise reduce it to a polynomial time algorithm, even a supercomputer from the year 50,000 won't solve these problems for large n.

    Don't focus on the language; that's the wrong area to look.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:It's not the language, stupid! by Anonymous Coward · · Score: 0

      Solving problems for large N isnt what makes bloated desktop performance. its large hidden constant factors in mostly O(N) stuff and that depends very much upon the language and platforms as well as the skill of the programmer.

    2. Re:It's not the language, stupid! by Xylo04 · · Score: 1
      I agree with the idea that simply writing a random algorithm in C/C++ will not make it nesiccarily faster than writing one in Python/Java. You do have to consider algorithm efficiency before you can assume anything. Thats good theory that every Compsci student learns.

      However in practice, for a given algorithm, writing it in an efficiently-compiled language like C++ will most likely make it faster than an interpreted language like Python/Java. It comes from the fact that compiled code is ready to execute directly; interpreted languages must be transformed from plain text/object code into machine code.

      Could you imagine a graphics-intensive game like Prey or WoW being written in Java? Every time an instruction was needed, it would be first interpreted and then executed! Or how about scientific apps that want to squeeze the most calculations out of every clock cycle? Much slower. Bottom line, there is a difference between languages, and there's a reason for hundreds of them to coexist.

    3. Re:It's not the language, stupid! by chris_eineke · · Score: 1
      It's the algorithm. It's straight complexity theory; C/C++ is not a panacea. If you write a 2^n or n! algorithm in C, it'll have its doors blown off by an nlogn algorithm in Python.
      And here is where a couple of people would disagree with you. C/C++ has extremely well-performing optimizing compilers (alignment, instruction sets, etc.) and so for verrrry small datasets, a 2^n algorithm in C will most likely run faster than a n log n algorithm in, say, Ruby.

      (I don't have data to support my hypothesis, but I will point you toward the gaming industry that has to squeeze every little bit of performance out of a system. There have been some successful attempts at using high-level languages (Lisp in Jax&Dexter 2 comes to my mind) in games, but I doubt (again, no data to support my hypothesis) that the kernels of game engines are written in anything other than a C-derived language.

      By the way, not that that's a bad idea. It's just that there are some myths about high-level languages you can't get rid of. (Again, sadly, Lisp comes to my mind. (I'm biased towards Lisp, did you notice that? (One more level of brackets just to make it clear!)))) :-)
      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    4. Re:It's not the language, stupid! by Anonymous Coward · · Score: 0

      Well, I object that none of the typical applications performs incredibly sophisticated algorithms... What does your mail client do? What does your mail server do? They exchange messages, and there's a lot of inefficiency when messages have to be processed by several layers before being sent or received...

    5. Re:It's not the language, stupid! by Bert690 · · Score: 1

      It's the algorithm. It's straight complexity theory; C/C++ is not a panacea. If you write a 2^n or n! algorithm in C, it'll have its doors blown off by an nlogn algorithm in Python.

      A programmer who knows how to choose the right algorithm will do so regardless of the language being used. So given the correct algorithm, it boils down to the BIG FAT CONSTANTS that determine better performance. Lower level languages like C++ can make those constants smaller.

    6. Re:It's not the language, stupid! by GigsVT · · Score: 1

      I don't agree with that oft taught CS line of reasoning, not when programming in high level languages, or in lower level ones with lots of

      Programs aren't some little snippet with a fixed and enumerated input and output anymore, written in a low level or semi-low level language like C. Saying that every program falls into the same category as grep is silly!

      Sure, it's important to understand algorithmic complexity. All programmers should understand it. But it's not like they taught you in college. There are going to be thousands of little routines with subtle interactions and different implementations. Most of them you didn't even write.

      So yeah, focus on language. The language is often doing a lot of the work for you now. If you use PHP with associative arrays, it doesn't matter how whiz-bang a coder you are if PHP used N^2 algorithms (I'm sure it doesn't) for resolving an associative array index to a value.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    7. Re:It's not the language, stupid! by GigsVT · · Score: 1

      or in lower level ones with lots of

      Doh, "lots of libraries".

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    8. Re:It's not the language, stupid! by BKX · · Score: 1

      Um, no, concerning java. While back in the 80's interpreters interpreted code one line at a time, modern interpreters compile to byte code BEFORE executing it. Java, perl, erlang, etc, all do this. In fact, I've found (through timed tests) that erlang and java code can run a shitload faster than the equivalent C, even with the same algorithm (well, not quite the same in erlang but that's because it's designed for tail-end recursion). This is because the java and erlang compilers which can inline stuff from the standard libraries into the bytecode. C compilers (excepting ICC) can't do this. If it's in a library, it must be linked in. This reduces speed greatly. This is the reason that certain library algorithms in C are implemented as macros in the headers, instead of functions. Specifically, byte order converters (little-endian to big-endian). (Note that even when you call the interpreted program straight from it's source, it's still fully compiled before running. To have this illustrated fully, try writing some good perl code that prints to the console and then some crap and see what happens when you run perl goodthencrap.pl.)

    9. Re:It's not the language, stupid! by AnyoneEB · · Score: 1

      Ugh, Java is not interpreted. It is Just In Time (JIT) compiled. The initial startup time will be slower than C/C++, but once the program is running it will be about the same as the equivalent C/C++ code. But, your point stands: for scientific applications and (high graphics 3D) games, C/C++ is still the right tool for the job.

      --
      Centralization breaks the internet.
    10. Re:It's not the language, stupid! by 0111+1110 · · Score: 1

      but once the program is running it will be about the same as the equivalent C/C++ code.

      Will repeating this to myself 100 times help me believe it? Not that I would be one to dis Java. Of the languages in common use it seems most suited to the difficulties due to the SMP environments which are quickly becoming the standard. That reason alone may be enough to use it for high performance code especially once quad and higher cores become common. I suspect in a couple of years nearly everyone will be running quad cores and enthusiasts will be running them in a dual (or even quad) socket motherboard.

      In practice it certainly seems to me that Java programs tend to be resource hogs as compared to C programs. I have to wonder how much of that is due to the fact that the programmers most interested in making use of every last cycle have historically tended to use C/C++ (with purists avoiding the OOP extensions of C++). Despite continuallly improving compiler performance, I think the programmer who designs the algorithms and overall strategies still has the most effect on efficiency. No code is more efficient than that which you can avoid completely with a more streamlined design. I'm sure a programmer with the right outlook/attitude toward runtime efficiency could write efficient code in any (non-interpreted) language. I just think they may have to try harder and bend over backwards with languages that tend to isolate you more from what's under the hood.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    11. Re:It's not the language, stupid! by sgtrock · · Score: 2, Interesting

      As the GP suggested that graphic intensive games would not perform well, might I suggest doing a side by side comparison between Quake2 and Jake2? There's even a benchmarks page. :)

      I think that should help quell the fears of Java vs. C, anyway.

    12. Re:It's not the language, stupid! by Trogre · · Score: 1

      It's the algorithm. It's straight complexity theory;

      Not so.

      --
      "Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
    13. Re:It's not the language, stupid! by AnyoneEB · · Score: 1

      Interesting, but that only proves my point. Java is get near C/C++ preformance, but C/C++ is still the way to go for maximum performance. Personally, I use Java (and have dabbled in jogl) because I am not making extremely processor intensive programs.

      --
      Centralization breaks the internet.
    14. Re:It's not the language, stupid! by asuffield · · Score: 1
      In fact, I've found (through timed tests) that erlang and java code can run a shitload faster than the equivalent C


      Your tests were wrong. Your C implementations were suboptimal compared to your java and erlang ones, or else they were comparing non-interesting examples. To pick one of many possible examples, any language with automatic garbage collection is going to be measurably slower than a language where the programmer optimises the memory allocation by hand, in many real-world cases (because garbage collecting takes extra processing time, which the language without it does not need to expend).

      Most likely all that you discovered was that the people who implemented your java compiler were better programmers than you were (and so the java compiler managed to find a major optimisation that wasn't possible for your C version).
    15. Re:It's not the language, stupid! by Anonymous Coward · · Score: 0

      Not terribly impressive.

      Even though the vast majority of the work is handled by the GPU and C code (in OpenGL), they come out slower. Imagine comparing Quake2 in software rendering mode to a version of Jake2 that did software rendering in Java?

      And all of this is ignoring the heroic optimizations they did to the Java code that make it no easier to read/write than the original C.

    16. Re:It's not the language, stupid! by Kjella · · Score: 1

      Well, if you're using an inferior complexity routine, your application is in a really trivial state of pre-optimization. I suppose you could say that if you haven't looked at that, it certainly doesn't matter what language it's in. I'm not sure what you're trying to infer, that there are better stanard algorithms for Python or that programmers will think different and write better algorithms in Phyton, but neither make any sense to me. So assuming you haven't made any big screw-ups here, the next issue is per-iteration overhead. There's definately a big difference here - which may be the difference between needing a 3GHz machine and a 1GHz machine. These things really do matter for anything real-time at least...

      --
      Live today, because you never know what tomorrow brings
  17. Single page print version of article by Teckla · · Score: 2, Informative

    Here's a link to the single page print version of the article.

  18. Re: Solitaire by Anonymous Coward · · Score: 0

    To get the absolute bleeding edge advantage putting the seven of spades on a red eight?

  19. Buy SUNW by alucinor · · Score: 1, Interesting

    Wow, if this guy is right, then I'd say to buy some SUNW stock, because this power-consumption problem is exactly what their latest line of server offerings directly address.

    Oh, and I don't have any Sun stock myself, heheh ... yet :)

    --
    random underscore blankspace at ya know hoo dot comedy.
  20. The future of computing is transparent. by The+Living+Fractal · · Score: 5, Insightful

    Today we have bulky boxen and entire rooms filled with computers. We have computers taking up space in our offices and homes. We dedicate energy to just keeping them cool. Tommorow (ok, so not really tommorow, probably in the semi-distant future) we won't really see computers at all in terms of our daily routines. They'll be so miniaturized as to become transparent. The only aspect of computing we'll see in our daily lives will be the user interfaces. The actual computers themselves will be invisible, or at least barely noticeable. They'll become mere extensions of our every whim, capable of reinforcing and improving our minds in a seamless fashion. That, I believe, is the future of computing.

    Take for example Google. What happens when you can query a search into google without actually interfacing with an external device like a laptop with a wireless internet connection? Or into Wikipedia? You'll be able to answer questions within seconds of being asked. Maybe less. This is a bigger change than you might think. Where does this leave conventional schooling, for example?

    To me, it's exciting. And I wish it were here already.

    TLF

    --
    I do not respond to cowards. Especially anonymous ones.
    1. Re:The future of computing is transparent. by kfg · · Score: 1

      . . . reinforcing and improving our minds. . .You'll be able to answer questions within seconds of being asked

      Information is not knowledge, knowledge is not thought.

      Life is not a standarized test.

      And, ummmmmmmm, rotate your tires, or . . .something.

      KFG

    2. Re:The future of computing is transparent. by The+Living+Fractal · · Score: 1

      Information is not knowledge, knowledge is not thought.

      Life is not a standarized test.


      Who said that it was?

      The point is, time is precious. Would you rather waste it digging up answers, or have them at your fingertips, giving you more time to concentrate on the more important matters in this short life?

      TLF

      --
      I do not respond to cowards. Especially anonymous ones.
    3. Re:The future of computing is transparent. by kfg · · Score: 1

      The point is, time is precious.

      And the idea of saving it is a myth.

      Would you rather waste it digging up answers, or have them at your fingertips, giving you more time to concentrate on the more important matters in this short life?

      You will not find the answers to important questions in a reference. The only important matters are food, shelter and family, but only to you.

      And always be greatful that in this world of starving millions your dog is finally getting enough cheese.

      KFG

    4. Re:The future of computing is transparent. by The+Living+Fractal · · Score: 1

      Saving time is no myth. It's an expression that if taken literally is of course logically false. You can't save it, it continues to progress at the same rate, thus you lose it the same no matter what.

      But, if you spend time on things less important to you, you might as well say you are wasting it. And conversely, if you can avoid wasting it, you are saving it. But I shouldn't need to explain this.

      As to the rest of your post, I get the feeling any reply I write will be met with the same nature of commentary: pointless rhetoric.

      TLF

      --
      I do not respond to cowards. Especially anonymous ones.
    5. Re:The future of computing is transparent. by kfg · · Score: 1

      Saving time is no myth. It's an expression that if taken literally is of course logically false.

      Thus you cannot save time, only choose between different ways to waste it.

      . . .it continues to progress at the same rate, thus you lose it the same no matter what.

      Time is relative.

      "I get the feeling any reply I write will be met with the same nature of commentary: pointless rhetoric.

      Well d'oh!

      Go placidly Amid the noise and waste. And remember what comfort there may be In owning a piece thereof.

      KFG

    6. Re:The future of computing is transparent. by Zaphod2016 · · Score: 1
      I'm gonna hafta side with Fractal on this one.

      Many times my crackpot friends and I will end up on 3-hour conference call marathons and start hashing out various schemes and ideas (nothing dangerous or illegal, I assure you). Oftentimes the flow of our conversation is shattered by a Google query or Wikipedia search; a quick pause to determine a specific point, settle a debate, what have you. This will almost spark further discussion (read: tangents), and the hours just start to fly by.

      IMO, it would be awesome if we could simply conference in a PhoneBot. Using voice recognition, and the Internet, this sort of device could save me thousands of hours a year.

      Example:

      Me: but ethanol is only 5% cheaper than gasoline right now, factor in mileage of E85 and the consumer is losing money...

      Crackpot friend: maybe so, but gas is only going to get more expensive. PhoneBot, tell me the futures market price on crude oil for July 2008

      PhoneBot: $XX.XX per barrel

      CF: see? So by the time the first stations are built, it'll be a whole new ballgame.

      Me: Touche. We should start looking at prices. PhoneBot, what is the number of Local Realty Company X?



      In real life, the above conversation took over 3 weeks of heated debate. Granted, this is largely because Internet search technology is still in its infancy, and so, direct answers take a bit of legwork. However, I can certainly picture a day when the scenerio I've described above is not only feasible, but a staple of American business.
    7. Re:The future of computing is transparent. by Cthefuture · · Score: 1

      You're thinking 70's and 80's notion of future computing. We already have a lot of that. Your toaster, car, watch, etc all have computers (microcontrollers) in them.

      The true future of computing is highly parallel systems. Think quantum computing. We will eventually eliminate the entire concept of serialized computing like we have today. Computing time will no longer be an issue as everything will compute instantly. Software will be much more about the algorithm rather than the hardware. In a highly parallel system you don't have to consider how long it will take to do something, you just do it. Now that's exciting.

      --
      The ratio of people to cake is too big
    8. Re:The future of computing is transparent. by Anonymous Coward · · Score: 0

      Doesn't a toaster have some dumb piece of metal that when it heats up it expands, and completes/breaks a circuit, and pops up food?

    9. Re:The future of computing is transparent. by 0111+1110 · · Score: 1

      And these advances will allow 5.32 million mothers to have one baby in less than .00002531 femtoseconds. Not every problem can be parallelized.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    10. Re:The future of computing is transparent. by 0111+1110 · · Score: 1

      And the idea of saving it is a myth.

      What about the idea of putting a stitch in time to save nine? Al says there's no such thing as time anyway.

      --
      Quite an experience to live in fear, isn't it? That's what it is to be a slave.
    11. Re:The future of computing is transparent. by kfg · · Score: 1

      What about the idea of putting a stitch in time to save nine?

      If you want to wear clothes made with only one stitch in ten I figure that's your business.

      I prefer to just leave them all out.

      KFG

    12. Re:The future of computing is transparent. by Cthefuture · · Score: 1

      You're still thinking of current serialized hardware. A quantum computer doesn't work the same way. It's not like spawning a bunch of threads to solve a problem. With a quantum computer you design an algorithm, feed it the input and the output "just is". It doesn't have to be computed over time.

      --
      The ratio of people to cake is too big
  21. Re:Time to pull out my... by kfg · · Score: 2, Funny

    Seriously, WHY DOES it take a 4ghz computer to play solitaire?

    Translucent 3D! Just like real cards.

    KFG

  22. BC: Software development != engineering. by Anonymous Coward · · Score: 0
    Well, they keep thinking that 100 developpers can do the same job as a handful of good developpers.

    That has to do with the typical development process. It's organized poorly. Boeing builds aircraft (including its software) that requires tens of thousands of people. And that's not including the subs.

    So, why is software different. Why is that I can't open up a catalog and get an module/library and have work - like you can with chips/ICs?

    I tell you why: Software development doesn't operate with any engineering discipline. It's run like an arts and crafts shop. Until software is held to engineering standards, it's always going to be a buggy, sloppy, haphazard craft: definately not engineering. Software Engineering?!? Yeah right! Until there's some rigorous standards, that name will stay up there with sanitation engineering!

  23. Hopefully not too "seamless".. by plasmacutter · · Score: 1

    I don't feel like getting my brain hacked or virus infected a-la ghost in the shell thank you =/

    --
    VLC FOR MAC IS DYING! IF YOU DEVELOP, PLEASE SAVE IT!!
    1. Re:Hopefully not too "seamless".. by The+Living+Fractal · · Score: 1

      You assume that is even possible. Can someone hack into your brain through today's internet?

      No, unless you believe pop-ups are TRUE.

      It is entirely possible to interface with computers without direct connections to your gray matter. Subvocal for example. There are many, many more possibilities.

      TLF

      --
      I do not respond to cowards. Especially anonymous ones.
    2. Re:Hopefully not too "seamless".. by jellomizer · · Score: 1

      GNU is the Best so is RMS.
      Microsoft is pure Evil.
      Macs are Cool but expensive always.
      Anyone who makes money is Evil.
      No one who knows technology has a job. ...PLEASE WAIT...

      Um sorry slashdot hacked my brain, and I had to reboot to get my common sence back. Sorry about that.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  24. Cart before the horse by Anonymous Coward · · Score: 1, Insightful

    Throughout the article, he tries to make it seem like CPUs got "better" and then people tried to make apps that used that new CPU power. Ummm, not from where I sit...people wanted more CPU power and the manufacturers gave them what they wanted. I agree that RAM is the bottleneck, BUT I completely disagree with his assumption that people will switch to "green" computers because they save power.
    Try telling your mutual fund manager not to move several billions of dollars in a trade, because the "green" computer is not through computing, while his competitor (who doesn't use the "green" computer) has just made an extra few million for his clients :-)

  25. New Type of Bloat: Hardware by reporter · · Score: 1
    As the size of features on an integrated circuit continues to shrink, we eventually reach a point at which the width of the gate of an NMOS transistor is only 1 atom. Other features have dimensions that measure only 1 atom. The charges (i.e., the collection of electrons) that these features house are so tiny that failure due to alpha particles, cosmic rays, etc. are quite common.

    The only solution to the curse of infinitesimally small features is modular redundancy: hardware duplication. Triple modular redundancy is common in fault-tolerant computer design. As hardware becomes increasingly fragile due to decreasingly small features, the amount of redundancy must increase to cope with the problem of transient failure.

    The implication is that the per-dollar amount of computing power which the typical consumer can buy will not increase indefinitely. As feature sizes shrink (and concurrently as the amount of computing power increases), we eventually reach a point at which the additional amount of required hardware redundancy will start to reverse the decline in dollar per unit (e.g., SPECint2005 or SPECfp2005) of computing power. Are we close to reaching that point?

    I suspect that we are within 10 years of that point.

    The problem of shrinking features is already manifesting itself. Microsoft now recommends that users buy computers with ECC (error-correcting code) memory if the users plan to install Vista.

  26. Re:Time to pull out my... by Jugalator · · Score: 2, Insightful

    Seriously, WHY DOES it take a 4ghz computer to play solitaire?

    Even Vista only requires a ~800 MHz computer for the "Vista Capable" label, stupid! ;-)

    Seriously, if all you want to do is to play Solitaire, why don't you grab MS-DOS and a DOS version of Solitaire and check the minimum requirements? Chances are it'll end up at something less than 8 MHz at least. But it won't be that suitable for many other modern world scenarios than playing Solitaire, you won't get something too much better than monochrome text graphics, you won't get good multitasking, no networking support or advanced features like domains or preparations for remote desktop, no USB support, and so on ad infinitum... And there you have a hint in why this looks the way you're wondering.

    Modern operating systems are to be prepared for *everything* (or so the philosophy goes at least), and the users should basically just be able to press "Next" in the install process, and then it should be able to do everything listed on a website that don't know the user at all, but still have that big shiny list of stuff advertising what it can do. Guess what happens in the OS design process and how much is installed, and how high the requirements become?

    Of course, minimalist freaks that still needs to use Microsoft software can take a look at Windows CE for embedded devices, or the upcoming "Windows Fundamentals for Legacy PCs" for something XP-like that has already been shown to only need 64 MB RAM in a review.

    --
    Beware: In C++, your friends can see your privates!
  27. It is the language, kind of by Anonymous Coward · · Score: 0

    This discussion isnt about algorithms, its about the amount of infrastructure required to support an application. If you write the same algorithm in Java and in C++, the C++ is going to run faster, simply because it doesnt need to be interpreted again and again, which frees up CPU and memory resources (duh). Software is getting more and more bloated because developers are leaning on third party solutions (libraries,utilities, higher level languages, etc) to speed up development time. Market forces are saying that code developed efficiently is more important than efficient code. The problem lies in the tools of software developers, of which languages would be included.

    1. Re:It is the language, kind of by AnyoneEB · · Score: 1

      The C++ will run faster, but the Java code will only get compiled once or maybe two or three times depending on if Java thinks the code will be used again/how soon it gets used again. What part of JIT compiler do you people not understand?

      --
      Centralization breaks the internet.
    2. Re:It is the language, kind of by Bill+Dog · · Score: 1

      It's about both. There is downward pressure on development costs, caused partly by globalization, and partly by PHB ego, greed, and stupidity. So there is demand for cheaper, low-skilled programmers, and safer, and consequently more bloated languages/environments for them to work in. But there's also algorithmic inefficiency, as this new class of developer may not only not have the foundation to choose or know to choose from different algorithms, there's likely no time for such an "optimization".

      --
      Attention zealots and haters: 00100 00100
  28. Well... by Anonymous Coward · · Score: 0

    Just give them a P-p-powerbook and you might see what talented ppeople those developpers are! :-)

  29. You're not understanding. by Inoshiro · · Score: 2, Informative

    Column 1: n. Column 2: 2^n. Colunm 3: n * log n. Column 4: n * log n + 100.

    1 2 0 100
    2 4 0.602059991327962 100.602059991328
    3 8 1.43136376415899 101.431363764159
    4 16 2.40823996531185 102.408239965312
    5 32 3.49485002168009 103.49485002168
    6 64 4.66890750230186 104.668907502302
    7 128 5.9156862800998 105.9156862801

    As you can see, for n less than 7, n * log n + 100 (which assumes our language is 100 times slower to run our n*log(n) algorithm vs. our 2^n language), the boundary exists at 6. If our language is only 50 times slower, the boundary is 5.

    How much slower would a language have to be (in units) for that n to be not incredibly small; say you have AI for an RTS where you want 20 units on screen? Well, if we scale up our little speadsheet table, we see that 2^20 is 1.0x10^6 larger than 20 * log(20). This leads us to the conclusion that if we are writing AI for a game (such as Warcraft) where we want 20 units on screen, and we have a choice between C with a 2^n decision algorithm, or an interpreted language with an n*log n decision algorithm, the interpreted language would have to be 1048550.0 units slower -- or, 52428.0 units of time slower per iteration of the algorithm to be equally effective (and it'd have to have an overhead of greater than 52,428 units/iteration to be LESS effective!).

    The order of the algorithm is the dominant factor in time performance of input to output. Compilers are not little god boxes, and will not fix broken algorithms. Even a very large per-iteration overhead (which doesn't exist, since interpretted languages will use caches, P-code, or even decent JIT techniques) isn't enough to sink the performance of them.

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
    1. Re:You're not understanding. by chris_eineke · · Score: 1

      I 100% agree with your conclusion.

      Please don't forget that I emphasized "verrrrrry small datasets". I was trying to point out that, let's say, for three elements using a bubble-sort algorithm is faster than quicksort.

      And yes, compilers aren't little magical black boxes. But the human brain is. :P

      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    2. Re:You're not understanding. by Entrope · · Score: 1

      What planet are you from where you get a factor of 100 difference by adding 100 rather than multiplying? Try using standard arithmetic.

      If you do, you will find that the crossover is around n=647 for a relative speed of 100x (647*647 = 418609 vs 100*647*log(647)=418760), or around n=282 for a relative speed of 50x.

      However, your broader point stands, since 50-100x ratios are what you might expect for a poorly interpreted language, and JITs or other optimizing compilers perform at the same order of magnitude as native code (and usually within a factor of two).

    3. Re:You're not understanding. by sholden · · Score: 1

      You're right about adding 100 being a completely retarded way of working out 100x slower.

      However, the bad algorithm was 2^n not n^2 (which is also stupid in itself...)

  30. Then perhaps we should rethink hardware by PostPhil · · Score: 1

    Yes, software could definitely use some trimming away of the cruft. But I don't agree with the idea that we should probably just go back to assembler, etc. Honestly, I think the new generation of programming languages have got The Right Idea, because the emphasis is shifting towards telling the computer what to do, and less and less about how to do it.

    I believe the real "The Future of Computing" will happen when we move to clock-less architectures. The current problem is that high clock speeds suck up more power and generate more heat. "Efficiency" is currently understood in terms of cpu cycles. It will be a whole different ballgame between programming languages when that is no longer the case.

  31. Bloat by Lally+Singh · · Score: 0, Flamebait
    Slow, bloated software entails higher costs in terms of both direct and indirect power consumption


    Well shit, stop using Java and .Net.
    --
    Care about electronic freedom? Consider donating to the EFF!
  32. but it is not what the GP says by aepervius · · Score: 1

    What you are comparing (a N^2 C++, to a python nlogn) you are varying two parameter. When comparing two thing you should only vary one, or you blow hot air. In other word I can counter your argument by saying a C++ nlogn implementation is better than a python n^4, but what does it says us of the CPU performance in comparing language : NOTHING.

    The GP is comparing for the same implementation the speed difference. So if you implement a stupid N^2 bubble sort in C++, it will be slow as hell, but stil better than the same bubble sort in java. And if you have a nifty (N) algorithm it will still be quicker with a C++ implementation.

    --
    C. Sagan : A demon haunted world:
    http://www.amazon.com/gp/product/0345409469/
    visit randi.org
  33. Article Difficult to Read by gtwilliams · · Score: 2, Informative
    Wow, was this article hard to read. It looks like the author never read the first draft and merely ran a spell checker on it. There are scores of typos, missing commas, and improper homonyms. Here's just a few:

    We have not really come back to good old centralized computing but rather to arrived at distributed computing model. Although a bulk of work may be done by centralized resources such as servers providing computational services, our desktop PCs and client workstations handle independently multitude of tasks.

    As computer clock speed increased from kilohertz to gigahertz so did out imagination and understanding of what can be done with this computational power to serve our needs;

    So on one had we have a habit (but rarely a need) for higher performance and on the other hand we have a looming fossil fuel crisis, global warming and rising energy prices.

    Yet the only piece of evidence on AMD's involvement with speculative threading that so far surfaced is infamous U.S. patent # 6,574,725 that looks like hardware support for speculative threading in the vane of to Intel's Mitosis.

    Still, with Itanium disappointment tarnishing commercial VLIW prospects perhaps permanently we are unlikely to see more general-purpose VLIW computers, but instead are likely to seem them in niece markets employed for solving a very limited set of special-purpose tasks.

    (for example, new manufacturing technology in the vane of IBM's recent report of experimental SiGe chips running at 350 GHz at room temperature and at 500 GHz when chilled by liquid helium).

    Further more we thought that a better CPU makes a better computer, which is no longer so.

    --
    Garry Williams
  34. hrm by Anonymous Coward · · Score: 0
    we're addressing the wrong problem here


    continual evolutionary udates happen simply because the companies involved need to continue to grow their marketshare in order to keep the stock market happy. microsoft, for example, simply cant release windows X that ditches all the baggage from the last N versions of windows, because people expect all their applications built on any number of SDKs Libraries, etc to just work . microsoft cant afford to alienate large amounts of its existing userbase by doing so, not without commiting stock value sucidie...


    hardware manufacturers are in the same boat, with the same reasons for their "bloat"(sic). its not driven by technoglical excellence, the market is driven by profit and marketshare.


    the article attempts to address a technical problem which only exists because of the higher economic structure of things. simply put at the end of the day, all this hardware and software is there to make money, the future of computing will be the one that makes the companies involved the most marketshare, and cash, not the one that is the most elegant, or beneficial to humanity.


    to think otherwise is to have one's head in the clouds.

  35. Cores and Buses by Anonymous Coward · · Score: 0

    Such a load of crap. You have to wonder why was the author hired as a prefessor, he seems to have a DiDio kind of insight into the future of computing. He never mentions the issue of bottlenecks, which for the last many years have been the buses connecting the computing cores. That forced the CPU manufacturers to include large caches and as much functionality as possible in a single core.

    The one notable exception is the GPU which is complex enough to rival the CPU and which had the AGP bus specifically designed for it. It did not share it with any other processing core.

          Now that AMD has readied HT 3.0 the bottleneck can be removed and it starts to make sense to have specialized cores connected by a high bandwidth, low latency bus. But I don't expect the author to understand this much without frying his neuron.

  36. "Breaker" model by rlk · · Score: 1

    As I see it, the history of computing is one of repeated waves that crash against the beach as the next wave gathers behind it. In terms of corporate IT, this is marked by shifts back and forth between centralized and distributed computing, but the phenomenon encompasses all of computing.

    What happens in each phase is that the new model is adopted first at the grass roots -- individual users or small groups see the "new thing" as a way to get something done, and start using it under the radar. It's frequently said that something needs to have an order of magnitude better price/performance ratio in order to be adopted over the existing way of doing things -- these waves are sufficiently radical that that's exactly what happens. This is the "decentralized" phase.

    Word spreads about the new way of doing things, and it gets used more and more widely. Eventually, the corporate bureaucracy realizes what's going on and takes over, partly because it saves each group from having to support itself and partly because the "new way" becomes more sophisticated and more powerful, and outgrows the ability of small, isolated groups to manage. This is the "centralized" phase.

    Time marches on, people are chafing under the iron grip of the corporate bureaucracy, and something new comes along...

    On the supplier side, what happens is that the new technology is just as capable as the old, for a fraction of the cost (and size, and power requirement, and everything else), so the supplier wants to incorporate the new technology.

    As I see it, the actual specific waves that we've experienced are:

    1. Mainframes: these were the first computers receiving wide acceptance outside of the research lab. As much as people like to joke about them, they were a huge advance over what was used before -- hand calculation, slide rules, mechanical or electro-mechanical adding machines, and the like.
    2. Minicomputers: this had its roots in the 1960's, but really took off only the 1970's. These were often sold and used as "departmental" machines, and were much smaller and simpler to operate than mainframes. They could also be used interactively.
    3. Workstations: as microprocessors became more powerful, they approached (and often exceeded) minicomputers in processing power. At this point it was possible for someone to actually have a computer on his or her desk, under that person's control that was almost as capable as a departmental minicomputer for a fraction of the cost. A lot of people found that these workstations actually made very nice servers. I remember (in the late 1980's/early 1990's) helping to install a bunch of "pizza boxes" (SPARCstation I and II-class machines) with small, cheap SCSI drives that could do just about everything a VAX 8800 or Sun 4/490 could do. What they couldn't do was more than made up for by the fact that we could put 3-4 of these, plus several GB of disk, in a 19" rack that could otherwise hold a 4/490. For ease of administration, we wound up cloning these machines and coming up with a couple of standard loads. We discouraged people from modifying their own machines to make it easier to administer the network.
    4. PC's: cheap microprocessors became even cheaper and just as powerful as workstation-class processors, while small commodity disk drives gained capacity. Eventually someone came up with the bright idea that machines like this could have substantial use of their own, not just as desktops.

    What happened on the vendor side, of course, is that each wave offered tremendous cost savings. It was a lot easier to design a system around a microprocessor than to use LSI or discrete logic. Meanwhile, these microprocessor-based systems became more sophisticated, with increased I/O capacity and more processors (Sun E10K was basically 64 UltraSPARC microprocessors with lots of memory and I/O capacity), and commodity microprocessors, motherboards, memory, and disk attacked proprietary systems. Each wave

  37. Dr. Dobbs editors don't edit by spage · · Score: 2, Interesting

    Where's the *journal* in Dr. Dobbs Journal? It has editors but apparently no one actually edits? I can forgive the lack of "the" articles in the article from I assume a Russian writer, but not the dozens of basic errors.

      Discreet elements were gradually replaced with integrated circuits
    "Discrete elements"

      Intel's new "Woodcrest" server chip as only 14
    "Woodcrest server chip has only 14"

      speculative threading in the vane of to Intel's Mitosis.
      new manufacturing technology in the vane of IBM's
      in the vane of Sun's UltraSparc
    "in the vein of..."!

      although it's new Efficieon CPU
    "Its" here is not a contraction of "it is" or "it has", so no apostrophe, also garbled name "Efficeon"

      the cores itself would become more simple and less-deeply pipelined (kind of like UltraSparc T1 is doing already).
    The cores themselves would become simpler and less-deeply pipelined (similar to the UltraSparc T1)

      while other cores might be deprived of such capacity
    He means "capability"

      unless a way of frequency increases is found that does not result in the market increase in power consumption
    "Unless a way to increase frequency is found that does not result in a marked increase in power consumption"

      instead are likely to seem them in niece markets
    "see them in niche markets"

      Code efficiency is at all time low and potentially hide at least a order of magnitude performance boost
    "Code efficiency is at an all-time low and potentially hides at least an order-of-magnitude performance boost"

      the role of CPU is likely to diminish with time living little reason for further clock-speed improvement
    "leaving little reason..." !!

      extremely bloated code that out GHz-rated CPUs execute
    "that ouR ... CPUs execute"

      there is amble room for software optimization
    "ample room" !

      Quite another alternative to VLIW that is already sprouting profusely
    WTF?

    Crap editing makes text difficult to read, so people won't read carefully, leading to superficial scanning and the decline of RTFA.

    --
    =S
  38. overly simplistic analysis by CoughDropAddict · · Score: 1

    This is a simplistic view of the world. It assumes that the only means of optimization is a big-O algorithm change. If you're using a bad algorithm and you're working with non-negligible data sets, then obviously you should choose a better algorithm -- that's just CS101. The interesting conversation doesn't even start until you are already using the best algorithm available to you.

    Is C/C++ a panacea? Of course not -- straw man. But when your algorithms are equal, high-level languages will execute an algorithm many times slower than a low-level language. An asymptotic order slower? No. But those constant factors are significant.

  39. Windows Fundamentals for Legacy PCs by ce33na66 · · Score: 1

    WinFLoP?

  40. Wrong motivation by ClosedSource · · Score: 1

    "Single-task PC operating systems (OSes) evolved into multitasking OSes to make the most of increasing CPU power"

    I don't think so. The motivation for multitasking was to allow data to be exchanged between applications while both were still running as well as allowing a longer-term task to run in the background while the user does other work. The trade-offs between running a single application and muliple applications at the same time are actually rather independent of CPU speed.

  41. Compelled to write more efficient code by nurb432 · · Score: 1

    That should be a given, regardless of your nice new shiny hardware. Anything less is pure lazyness.

    --
    ---- Booth was a patriot ----
  42. microblade... huh? by Anonymous Coward · · Score: 1, Insightful

    "...and the author reasons that code optimization will likely involve the replacement of blade server racks with microblade server racks where every microblade executes a dedicated task and thus eats up less power."

    Huh? The reasons that blades sell is because they are economically efficient. Creating multiple "single task" physical blades to replace a single more powerful virtualized blade is not cost efficient. In the microBlade, you multiply the number of common components needed to run an independant system (I/O, memory, core chipset, etc) which costs more in absolute terms, costs more in power, and costs more to manage. If the microblade is less powerful than the macroblade, what do you do when you need the macroblade's execution power? Cluster a bunch of microblades together? Not real effcient.

  43. LACK of power created demand for multitasking by Sloppy · · Score: 2, Insightful
    What a twisted perspective:
    So as CPU power grew to meet specific tasks we wanted our PCs to perform it became too much for general tasks such as text editing or spread-sheeting. That extra power just as in the case of old mainframes led to the adoption of multi-tasking operating systems on desktop and personal computers. We had extra power and we wanted to do something with it.

    Multitasking is for getting the most our of your computer (whether it's fast or slow) but pays off most rewardingly when it's slow. If processors and I/O were infinitely fast, people wouldn't give a damn about multitasking, because they would never be waiting for their computer to complete a task. It's when you have to wait for something that you most enjoy multitasking; it lets you use your machine for doing something else instead of twiddling your thumbs staring at the progress indicator.

    Let's say you want to render a graphics scene, download a file, and edit a text document. An MSDOS user would do those things serially, sadly knowing that:

    • while he was rendering, his serial port was idle
    • while he was downloading, his CPU was nearly idle
    • while he was editing, his serial port and CPU were both nearly idle

    And this was true whether it was a 4.7 MHz XT or a 100 MHz 486. "Extra power" had nothing to do with it. Indeed, the 486 user probably lamented MSDOS' lack of multitasking less (not more, as the author suggests) because the rendering would be so much faster.

    Meanwhile, the 7 MHz Amiga user, despite the seemingly "wimpiness" of his machine (HA!), did all three operations in parallel. His CPU stayed at 100% utilization, his serial port downloaded as fast as it could, and his text editor easily kept up with his typing. The Amiga user gets the most out of his machine. Not because the Amiga is fast, but because multitasking mitigates slowness.

    It's the mere desire to get the most work done, that led to multitasking on personal computers. It wasn't the "extra power" that did it. It just seemed that way to the x86 users (and probably only the x86 users) because the slow chips (8086) just happened to have very poor support for multitasking compared to the fast chips (80386). So multitasking appears to correlate with speed. But for the x86ers, it was really a question of CPU features, rather than performance.

    The crux of the author's error is this: "We had extra power and we wanted to do something with it." He has forgotten that "we wanted to do something with it" whether or not we had "extra power."

    --
    As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
  44. Niece markets by solferino · · Score: 1

    While there have been some very erudite comments made in response to this article it seems to me you are all missing the major new concept the author proposes. Let me quote:

    ...but instead are likely to seem them in niece markets employed for solving a very limited set of special-purpose tasks.

    Yes! Niece markets. A concept almost entirely unconceptualised before. And isn't that surprising? - surely people have looked for a place to buy and sell nieces before. Where to buy a nice niece? Where to offload a baker's niece (so irritating it seems like there's 13 of them). Step right down to Aunt Martha's Niece Market. "You'll love our nieces to pieces!"

    Actually now I think about it - a niece market - a better example of a niche market you are not likely to seem.

  45. It worked in the Stone Age by Anonymous Coward · · Score: 0

    Microblades were a real technological breakthrough 30,000 years ago. Let's do it again.

  46. Bloatware = Profit by Anonymous Coward · · Score: 0

    Code that is efficient and robust does not lead to long term profit...becasue it works.

    Software vendors that make a profit year after year do so by selling an idea and a dream to customers that software will solve numerous business process problems.

    So as long as we have users clamoring for the next shiney object dangle in front of them software vendors will continue to provide expensive, cumbersome, bloated, difficult to support and overly complicated software that provides a constant stream of revenue. There is no real motivation to produce quality code as long bloated code is profitable.

    As one software maker who I worked for said:

    "Sell them the sizzle and give them the bacon later."

  47. C vs. the rest. by Anonymous Coward · · Score: 0

    People often ignore the potential of high-level optimisations to blow any low-level tweaking that can be done in C out of the water(*). Sometimes higher-level languages permit optimisations which are simply impossible/undecidable in C -- this can be by token of stronger/more powerful type systems, powerful term rewriting/elimination, or even just by making highly complex, but asymptotically more efficient, algorithms simpler to implement correctly, etc. Currently, low-level tweaking usually wins out, but the higher-level languages are gaining ground rapidly in this area.

    Another point is that using high-level languages does not actually prohibit low-level optimisations in the code emitted by the compiler. Granted, the application programmer will not have as much control as in, say, C, but much of the potential is still there.

    Of course, one should also never underestimate the value of programmer time vs. computer time.

    (*) I'm NOT saying that low-level tweaking is pointless, btw. Ensuring cache-locality and is one of the most important activities that can be performed for any performance-critical code.

  48. You got that backwards. by warrax_666 · · Score: 1
    Everything you can do to optimize Java, Ruby, Python, etc, you can also apply to C/C++, but the opposite isn't always true.
    ... at least assuming that "etc." includes high-level languages with real type systems that can actually prove properties of your code. Such languages can enable optimizations which are undecidable in C, C++, or any of the other mainstream languages.
    --
    HAND.