Slashdot Mirror


Software Tools of the Future

An anonymous reader writes "What are the sofware tools of the future going to be? It's an interesting question, with many facets. Here are some important trends in design and construction tool strategy, which will effect the kinds of software tools that will be delivered in the future. It looks at how to improve software development efficiency through visual modeling, generating code from abstract models, and systematic reuse."

337 comments

  1. Trend vs Financial Backing by fembots · · Score: 5, Insightful

    To affectively effect the future of software tools, the obvious support must come from the developers, but the obvious support for developers are their sponsors.

    At least three of the five points are almost directly targeting at the sponsors, i.e. PHB and friends.

    They don't see(care) if a particular system/software/whatever is most powerful, flexible or easy to use, they're looking at things from the business point of view, e.g. which one brings more profit in the next xx years, and which tool they can easily pretend to understand.

    So a tool that's business-"sense"-driven, transparent and offers lower TCO is likely to be more favorable.

    1. Re:Trend vs Financial Backing by Anonymous Coward · · Score: 2, Funny

      "To effectively affect".

    2. Re:Trend vs Financial Backing by Anonymous Coward · · Score: 0

      Yet another affect/effect defect. Fecal, isn't it?

    3. Re:Trend vs Financial Backing by Anonymous Coward · · Score: 0

      i thought that was on purpose, given the original article uses "effect".

  2. Furture by Anonymous Coward · · Score: 0

    It will talk back to me... I'll be like "Computer, make me a program that can figure out how we can get out of this temporal rift"

    Doesn't matter anyway... cuz the borg will be introducing new software to us soon enough...

  3. It's already here... by dberton · · Score: 5, Funny

    emacs

    1. Re:It's already here... by Anonymous Coward · · Score: 1, Funny

      Emacs isn't the future, the 14 fingered super-evolved human that can actually use Emacs is the future.

    2. Re:It's already here... by smittyoneeach · · Score: 1

      And, if you haven't been properly introduced...

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  4. Finally.. by Anonymous Coward · · Score: 0

    ..a case of wise linking. Not making something like "this article" into the link text or shit like that.
    Congrats!

  5. Resumes... by EnronHaliburton2004 · · Score: 5, Funny

    Gosh, these are tools of the future but I have already found several job openings asking for 5 years experience in each tool...

  6. Heh by Neil+Blender · · Score: 5, Funny

    Good code generators. Yeah, and AI that works too. And flying cars. Utopia is always around the corner. Oh, wait. We have code generators - in India.

    1. Re:Heh by ScrewMaster · · Score: 2, Insightful

      When I was younger, my brother and I we're responsible for shoveling show out of the driveway. We lived near Chicago at the time, and survived a couple of blizzards and other examples of Midwestern winters through the sixties and seventies. One year (1977, I think), after removing a four or five foot thick layer of drifted snow from the driveway and front walk, we asked our father if he would consider buying a snowblower. His response was, "Why? I already have two."

      We never did get that snowblower.

      --
      The higher the technology, the sharper that two-edged sword.
    2. Re:Heh by nxtr · · Score: 1

      no, it'll be command line. it'll be like, you type in 'computer, make a program that will do my homework' and it'll do just that, and it won't go 'bad command or file name'.

    3. Re:Heh by the_arrow · · Score: 1

      In soviet russia code generates you!

      --
      / The Arrow
      "How lovely you are. So lovely in my straightjacket..." - Nny
    4. Re:Heh by erlando · · Score: 1

      Soviet Russia is The Matrix?! I knew it..

      --
      Remember, there are no stupid questions. But there are a lot of inquisitive idiots.
    5. Re:Heh by DerPflanz · · Score: 1

      Well, that is what they said about compilers too, about 30 years ago. "No compiler can ever generate better code than assembler." And see where we stand now; almost no-one that writes (complex) code in assembler anymore. MDA has a future but I think it will take a long time until it really catches on and is used mainstream. But you cannot ignore it.

      --
      -- The Internet is a too slow way of doing things, you'd never do without it.
  7. Usability in Non-MS Environments by The+Raven · · Score: 5, Interesting

    I'm less interested in the new directions dev tools can take, and more interested in getting the good parts of existing tools more ubiquitous. MS tools (like the .NET Dev Studio) are very nicely created, with flexibility and convenience. I would like to see tools with the same capability for C on Linux.

    A lot of developers poo-poo .NET programming like they poo-pood VB programming... but part of the reason for their popularity is the quality of their development tools. Bring some of those enhancements over to C on an alternate platform, and I think the results would be quite interesting.

    Raven

    --
    "I will trust Google to 'do no evil' until the founders no longer run it." Hello Alphabet.
    1. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      but part of the reason for their popularity is the quality of their development tools.

      Just out of curiosity, what makes VB so much better than, say, Delphi?

    2. Re:Usability in Non-MS Environments by roman_mir · · Score: 1, Interesting

      Oh, god, no, MS Studio and the .Net studio suck-ass. Ok, they do have good ideas there but seriously, look at Eclipse for Java (a free IDE started by IBM), compare it to any MS Studio and if you still tell me that the MS Studio is great at the end of comparison, I will be more than amazed. In my latest contract I had to work with both, and I honestly am telling you the way I saw it - I chose Eclipse. I know it's for Java and MS Studio is for a bunch of other things, like VC++ (that's what I used it for,) but seriously, debugging in Eclipse is a so easy in comparison to the debugging VC++ in .Net ... The pointers showing instead of values in the variable watcher is a good example of what .Net offers that is useless.

    3. Re:Usability in Non-MS Environments by Guillermito · · Score: 4, Informative

      Eclipse is not just for Java. You can use it for C and C++, python, COBOL, among others.

    4. Re:Usability in Non-MS Environments by Hortensia+Patel · · Score: 1

      part of the reason for their popularity is the quality of their development tools

      And part of the reason for the quality of their development tools is that the languages are easy to parse, which in turn makes it easy for a tool to understand the code well enough to provide useful assistance. C++ is a nightmare to parse compared with C# or Java.

      Another part of the reason is the Pointy-Clicky GUI Builder, of course, but that part I most definitely would not want to see emulated elsewhere. Addiction to the PCGB is the main reason why Windows still can't do even halfway decent device-independent GUI in 2004; they're trapped in a world of crappy fixed-layout dialogs and oxymoronic "WYSIWG" HTML.

    5. Re:Usability in Non-MS Environments by Darth_Burrito · · Score: 1

      I've used Visual Studio 6 and .net variants quite a bit. I've also made some fairly serious attempts to do work in eclipse in a variety of languages including java, php, and perl, but mostly java. From my experience, Visual Studio .NET absolutely blows eclipse out of the water. Before I continue, let me say I admit a strong level of bias because all my VS work has been supported by a work environment while everything in eclipse has been me struggling solo.

      I think the crucial difference between Visual Studio and Eclipse is that Visual Studio tries to do certain things very well out of the box while Eclipse is attempting to slowly crawl toward perfection in all directions via extensions and manual interoperability. For example, when you install Visual Studio, your compiler is included. You don't need to install a separate runtime, setup your class path, or configure a big list of plugins. When you set up a web project, you don't have to do much in order to start debugging it. Everything just sort of works. It's part of the benefit of a homogeneous system, and for all intents and purposes, Visual Studio .net is designed to help you write data driven web applications in .net. With eclipse, all of that configuration is a major pain.

      Also, I find that eclipse is much much slower than Visual Studio, especially with respect to features like intellisense. I also find the general purpose perspectives system to be somewhat confusing. Also, most of the libraries one might use from eclipse do not have the same level of code hints (the stuff that pops up when you type) that .net libraries have.

    6. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      The 'homogeneous system advantage' that you attribute to .NET is more because of the MS-based components all the way. While I don't disagree that Eclipse has a long way to get there, it will be there.

    7. Re:Usability in Non-MS Environments by Darth_Burrito · · Score: 1

      Eclipse works reasonably well as a java ide. It is not nearly so capable with the other language environments it "supports". For example, when I tried out the Cobol support last year, I don't think it was much more than syntax highlighting. Some of the others like PHP still seem pretty experimental and unrefined.

    8. Re:Usability in Non-MS Environments by okigan · · Score: 1

      MS debugger is VERY good, you seem to be more familiar with gdb (which has its own advantages, ex. integratable into other aps such as Eclipse), and the problem you mention about "watching" the value of the pointer is not a problem of VS but RTFM problem.

      "Studio is for a bunch of other things, like VC++"
      That's the point VS is for lots of things. This reminds me the argument of OpenGL vs DirectX, which falls crashing down when graphis written with OpenGL but for input or sound have to use another API: DirectInput or DirectSound.

      Now not to say VS is perfect (batch builds using msdev or vs.net are possible but not that flexible, but again maintenance of makefile over the life of the project is not that great either).

      Overall MS tools have good ratio of quality vs price.

    9. Re:Usability in Non-MS Environments by okigan · · Score: 1

      One feature I do love about makefiles and (g)make
      is parallel builds -- finally the SMP machine is
      getting used to the max (incredibild -- build
      over network is somewhat silly when you have another 3 CPUs sitting idle).

    10. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      You have got to be kidding or at least seriously sheltered. Visual Studio has to be the worst IDE known to man, it is such bloatware that it's complexities make it fragile.

      Examples:
      - When is the last time that it was ok for an IDE to delete code on you, well any good visual studio developer knows that this is standard fare and there are certain pieces of generated code that like to disappear.

      - Another serious VS flaw is that it lacks many of the text editing features of simpler (yet more powerful) editors like vim or emacs that make good developers productive. In terms of actual text editing VS is not much better than notepad w/ syntax highlighting + code folding.

      In closing, Visual Studio usability is a joke, people that think VS is the best thing since sliced bread have either drank the koolaid and bought into the marketing hype or just don't know any better.

      There are better solutions out there but most people don't bother to do their own research they just go with what the trade journals say they should use.

    11. Re:Usability in Non-MS Environments by Taladar · · Score: 2, Funny

      Well, lets just say Cobol isn't exactly the language of tomorrow ;)

    12. Re:Usability in Non-MS Environments by Taladar · · Score: 1

      If you want Graphics, Sound, Input,... try SDL, you get an easy API AND support for more than one platform which is the absolute killer argument against DirectX IMHO.

    13. Re:Usability in Non-MS Environments by Taladar · · Score: 0, Flamebait

      Not to mention the crappy HTML-Emails and Word-Generated HTML-Pages with so many tags you have to read it twice to find the first part of real text.

    14. Re:Usability in Non-MS Environments by Darth_Burrito · · Score: 1

      I really hope so. Because of it's general purpose nature, its cost, and its community, Eclipse has far more potential than visual studio. If it was as easy to use and setup for serveral primary tasks, then it would truly be a thing of awe.

    15. Re:Usability in Non-MS Environments by okigan · · Score: 1

      Umm, OpenGL vs DirectX was a simile to VS vs x.

      (btw, SDL is a great software package)

    16. Re:Usability in Non-MS Environments by Tablizer · · Score: 1

      Oh, god, no, MS Studio and the .Net studio suck-ass. Ok, they do have good ideas there but seriously, look at Eclipse for Java...

      Orange Alert: Tool Holy-War Up Ahead!

    17. Re:Usability in Non-MS Environments by omicronish · · Score: 2, Interesting

      The pointers showing instead of values in the variable watcher is a good example of what .Net offers that is useless.

      If you can, try to get a hold of the VS.NET 2005 beta. I personally think 2003 is good, but I was completely blown away by what 2005 has to offer. Yes, other IDEs may have had it earlier (refactoring in Eclipse, for instance), but I happen to code in C# and do a lot of .NET stuff, so it does not matter that such features have existed elsewhere. The problem you mentioned is one of the things that are fixed; 2005 will also include things such as refactoring, revisions of the .NET languages, and absolutely insane IntelliSense.

      To make this thread more productive, what exactly about VS.NET is it that you do not like? I haven't used Eclipse lately, though from what I remember it was great for Java development. What does Eclipse offer now that VS.NET doesn't?

    18. Re:Usability in Non-MS Environments by selderrr · · Score: 1

      The pointers showing instead of values in the variable watcher is a good example of what .Net offers that is useless.

      Offcourse, since you're doing java, pointer arithmetic is non existant, so it's a useless feature for java programmers. Doing C work, I find it indispensible. Additionally, your pointed value is only one click away. On top of that, you can create custom debugger displays in DevStudio : any class/object can have a custom routine to be called and whose result is used as debugger display value.

      IMHO, you just didn't seriously work with DevStudio. I'm not an MS fanboy, but if there's ONE thing they did right, its the compiler/editor. Maybe XCode gets near in terms of integration, but it is still too buggy. Eclipse is just fine too, but gets blown away by Devstudio in terms of performance. But somehow, i don't think you're veen listening to my arguments

    19. Re:Usability in Non-MS Environments by master_p · · Score: 1

      Ehm...I don't think Eclipse has many capabilities over VS that are absolutely essential.

      The capability of showing the content of pointers is there...just click in the little '+' button near the pointer variable...and it stays there for as long as you don't change it, and also stays across different runs.

      Does Eclipse have the capability of showing std iterator content, for example?

    20. Re:Usability in Non-MS Environments by roman_mir · · Score: 2, Interesting

      Ok, here are a few: the thing crashed on me more times than I have seen windows itself crash. The method search dropdown almost never worked. The refactoring isn't there, factoring out methods (Alt+Shift+M in Eclipse in default for example), vars, constants is not there. Searching for all callers of a method (function) where is that? Navigation within the IDE itself - going back to the previous stop, going next, going to the first problem, next problem, previous problem etc.

      The entire interface looks like a normal MS interface, cluttered with crud, useless at any given moment, unnecessary icons, missing UI metaphors. It's horrendous and I don't think it will be fixed. It has to be redesigned.

    21. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      The debugger is indeed extraordinary. I had to interface a VB program to a C++ library. The ease at which I could step from one language into another using the same interface was a godsend.

    22. Re:Usability in Non-MS Environments by roman_mir · · Score: 2, Interesting

      So, I've done plenty C, C++ work, still doing it. Have you ever worked with the Borland C++ IDE from the mid-nineties? Even that DOS based primitive UI was better than what .NET is today. Not feature by feature of-course but from point of view of what makes sense, what you should be able to access at any time, what should be on the screen. Yeah, pointers, register, stack all that is useful, but during debugging it is indispensible to be able to view the actual values on the fly.

      Just try debugging Xerces DOM tree preprocessed by Altova in an app. All you can see that the .NET studio shows is useless.

    23. Re:Usability in Non-MS Environments by omicronish · · Score: 2, Informative

      Good list. Refactoring and method references are in VS.NET 2005, so your complaint is valid there. However, I rarely experience crashes (maybe once every few months), including at home, school, at my internship, and even with the beta.

      Regarding method search dropdown (which I'm interpreting as IntelliSense in VS.NET), are you trying to use it with C++? It's always been crappy with Visual C++, so Eclipse might be better in that regard, but it works wonderfully with C#, and comes up in even more situations with 2005.

      As for navigation and the UI, you can customize menus, toolbars, and keyboard shortcuts. I customize the toolbars but the rest of the UI is fine with me, so it's likely a subjective thing.

    24. Re:Usability in Non-MS Environments by Performaman · · Score: 0

      Yeah, I figured this out in 6th or 7th grade when I was taking a class on VB. I asked the teacher, "So, you could write a word processor with this?" She replied, "Oh, no. That requires you to go into source code."
      And that's when I realized that VB was a toy.

      --

      I have gas, but my car uses petrol.
    25. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      Pfft... Dude. Have you tried refactoring under VS? It sucks big ass. It's PITA. Compare that with Eclipse: Just right click and click Refactor, Rename. Type in the new name. Bingo! Not only just renaming, but also restructuring -- like moving certain fields up and down the class hierarchy or separating methods into different classes, etc. I've worked with both Eclipse and VS .NET. I would say I prefer Eclipse BIG time. Setting up classpath, JDK compilers and the plugins are nothing compared to the pains in VS.NET.

    26. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      Why does Eclipse have "more potential" than Visual Studio? That's a fairly broad statement without much backup. Just because it's open source, doesn't make it "da bomb"...

    27. Re:Usability in Non-MS Environments by mdemirha · · Score: 1

      One thing that I learned well as a long time software developer is to NEVER use any Borland products. There are a few good reasons for that:

      * Borland has a good history of screwing up their developers. They simply are not trustable in long-term. As an example, they recenly cancelled their C++ builder product. I can sense the pain of C++ Builder users.

      * Their products are way tooooooooo expensive. A single license for a Pro version of their software generally costs on the order of $3,000. Microsoft on the other hand has a very nice pricing policy for developers. I can get VC Pro for a few hundred dollars. Moreover, I can get an MSDN Universal Subs. for less than $2,000 - This includes nearly all MS products (except their games) and comes with about 20-30 DVDs!!!

      * Number of developers that use Borland products is much much less then number of developers that use MS products or some other open source products like eclipse, gcc, ..etc. Because of that, the number of add-on tools and solutions available for Borland products are generally very few.

      Mustafa Demirhan

    28. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 1, Interesting

      I have nearly finished a project using .Net 1.1 SP1. We go live tomorrow. My conclusion - Never Again.

      VS sucks rocks - it is hard to use and crawling with bugs. E.g. User and COM controls periodically disappear from working programs designs. The cursor becomes locked to a portion of the form etc. etc. etc. I currently have about 20 major bugs noted.

      .Net framework is half baked. Databinding is a nightmare (There is no consitency when changing a control's value programmatically. I have found situations where changing the control does not change the dataset or visa-versa.) Comboboxes are a joke - look on any .Net web site. Apart from the other problems a combobox of type dropdownlist is typo-matic and one with dropdown style isn't. Try explaining this to your users.

      Setup projects: buggy and ultimately unusable. It appears that the available runtime version of .Net is not up-to-date. Our aplication requires SP1 but such a runtime is not available. What the F*Ck are MS thinking? We are lucky, we have a corporate license, so we had to endure the 2 hour setup of VS on ever user's machine - you got to be kidding.

      C# is quite nice - I actually prefer it to Java. However, failure to check array bounds as standard is asking for trouble.

      Yet some still rave about .Net and VS. This leaves me very puzzled - are the using a different version perhaps?

    29. Re:Usability in Non-MS Environments by Darth_Burrito · · Score: 1

      Why does Eclipse have "more potential" than Visual Studio? That's a fairly broad statement without much backup. Just because it's open source, doesn't make it "da bomb"...

      In my opinion, open source projects become "da bomb" when they hit critical mass. For example, perl isn't great because you can write de-css in 8 lines, it's great because of all the free libraries available through cpan.

      The obstacle that Visual Studio faces is that the culture of microsoft enabled development is biased towards commercial add-ons. Put another way, it seems like almost everything I could possibly want in php or perl is free while I have to pay for much of the same stuff in dot net. This isn't to say there aren't a few gems out there for .net because there are (nspring, nunit for example). It's just that I think free tools are easier to find on other platforms.

      Some might argue that there are a huge number of tools available for dot net and visual studio if you are just willing to dish out the cash. However, in most development environments, tools with a price tag get shot down immediately. They've got not-invented-here working against them. If you suggest something and it sucks, then you're to blame, and you've had to involve 12 different people to requisition a $30 piece of software.

      So how does this apply to Eclipse versus Visual Studio? Eclipse seems to be designed to be an extensible IDE. There are tons of eclipse add-ons out there. They are almost all free. And people are writing more and more all the time. In addition, the academic community has embraced java and a renewed interests in practical research is leading academics to create all sorts of neat things like static analysis tools for eclipse.

      Visual Studio is designed to be an IDE for rapid development in .net and, in particular, net enabled applications. I don't think it has as friendly an extension framework. I rarely see any nice free add-ons for visual studio. The academic community has not embraced .net like they have Java. In fact many at my university actively shun anything microsoft.

      So basically, I think the community effect gives Eclipse a very high future potential. However, as indicated in this thread, I think Visual Studio .net is a much better environment here and now, for the kind of software development for which it was designed.

    30. Re:Usability in Non-MS Environments by Anonymous Coward · · Score: 0

      Ah, yes refactoring. The principle of "There's not enough time to do it right, but there's plenty of time to do it over" transformed into a cutting-edge methodology.

    31. Re:Usability in Non-MS Environments by ClosedSource · · Score: 1

      "fixed-layout dialogs"

      You mean dialogs where you actually know ahead of time what the GUI will look like? I hate that. I'd much rather have layout managers surprise me.

    32. Re:Usability in Non-MS Environments by Taladar · · Score: 1

      This is a common error. You only know how they look with your (or the default Windows) font settings,...

      Try looking at them on a PC of someone with bad eyes who uses a double fontsize font and you will begin to love the dynamic dialogs (because you will be able to see more than half of your text)

    33. Re:Usability in Non-MS Environments by ClosedSource · · Score: 1

      Your assuming a non-constrained environment. Supporting large fonts is not always an option.

      When it is an option, you can design a fixed layout that allows for larger fonts and still enjoy a consistent layout.

    34. Re:Usability in Non-MS Environments by Hortensia+Patel · · Score: 1

      You've clearly never tried to run Windows on a high-DPI display. I mean dialogs where crucial widgets get hidden under other widgets or pushed outside the bounds of the (non-resizable) dialog window because the "programmer" and tools vendor thought that 96dpi with 8pt fonts are some sort of universal constant.

    35. Re:Usability in Non-MS Environments by ClosedSource · · Score: 1

      When you say high-DPI, I assume you mean high resolution, not small dot pitch?

      I've seen this problem maybe once in 10 years, I don't think it's a common problem. I assume you can work around it by lowering the resolution when you run the program in question.

    36. Re:Usability in Non-MS Environments by Hortensia+Patel · · Score: 1

      By DPI I mean dots per inch; by high DPI I mean an accurate value of pixels-per-inch on a high-resolution display. In my case, ~144dpi on a 1920x1200 15.4" Dell laptop display which I foolishly bought in the optimistic assumption that Windows would actually work with the damn thing.

      I'm delighted that you don't have this problem. I have it whenever I turn on the machine and don't feel like squinting at half-millimetre-high text. Anything using layout managers - Eclipse, Moz, Firefox - works flawlessly. Anything perpetrated by Pointy-Clicky GUI Builders breaks horribly and/or looks like arse. Changing my DPI settings to run a broken program is a painful process involving a restart and lots of manual fiddling to put things right again afterwards; it's not something to be done lightly.

      I freely admit that I'm suffering for stupidly being an early adopter. However, these displays are becoming more and more common, and many of the problems also afflict people using "Large fonts" for accessibility. Ultimately, assuming 96dpi is now indefensibly sloppy in the general case, just as assuming a US English keyboard, perfect red/green colour vision or a three-button mouse is indefensibly sloppy.

    37. Re:Usability in Non-MS Environments by anomalous+cohort · · Score: 1

      IMHO, VS.NET 2003 is the weakest link in the .Net story. The platform is great. The FCL is incredible. The IDE is pretty buggy and when its not buggy, its real slow. You won't run into these issues with a small project for a single developer. A lot of VSS integration problems show up with multiple developers and multiple large projects in a single solution. Don't even think of bringing up a reaonsably complex web form using the WYSIWYG editor. The real reason for not using VB.Net on large projects is the unstoppable background compile which kills your IDE.

      Fortunately, all the source files are ASCII text and everything can be done from the command line. Someone went to the bother of developing an emacs major mode too. Without these points, I'd by SOL.

      Regarding the original article, this is pure market-speak. Let's just cut to the chase and paraphrase the illusion in 23 words. Too cheap to hire good people? Don't worry. Buy our tool and your cheap, dumb people will be able to do the job. The reality is this. The cheap, dumb people will be able to do a quickie prototype with moderate success but the final project will fail without at least one good developer.

      As a child, you may have heard the story of stone soup. A beggar got a free meal off of a village by promising them something for nothing. In this case, he promised them tasty soup from a stone. But there was scope creep as he was making the soup. Soon the villagers were adding beef, cabbage, etc, to the soup. The stone was just a gimmick. The tool vendors are like that beggar. Promising something for nothing. In this case, software without developers. Along the way, you find yourself adding expensive developers to the mix. Pretty soon, you realize that you didn't need the fancy tool after all.

    38. Re:Usability in Non-MS Environments by selderrr · · Score: 1

      I don't think it's fair to choose a Xerces debuging session as a measure for DevStudio. Xerces is a typical open source app, written for gcc... There is little or no effort done to add a few lines of code that would make debugging objects in DevStudio easier. Like I said : you can attach a few lines of code to a class to change the debugging display. Easy to do & very practical. I could ask you to do a debugging session of a heavy ATL or COM oriented app in Eclipse... Or do some DirectX debugging in eclipse.

  8. He forgot to add: by Anonymous+Crowhead · · Score: 1

    In conclusion,

    6. ???

    7. Profit!!!

    1. Re:He forgot to add: by impy · · Score: 1

      8. Er...

      9. That's it.

      (Apologies to Private Eye)

  9. dubious by rmull · · Score: 1

    Why, exactly, should I take the word of a guy who works for Rational? The people who want to SELL me the tools to do these things?

    --
    See you, space cowboy...
    1. Re:dubious by Dolphinzilla · · Score: 4, Interesting

      thats a fact, Rational tools in my experience are way over-repesented - One group at work proudly used the Rational tools to generate some code - it was the most obscure code I had ever seen - it was not even clear what half the modules did or were suppose to do. They gave me an executable to take to a subcontractor and try out - the subcontractor laughed at it (and so did I...) There is no escaping these tools, we just need to minimize the wasted time they cause... IMHO

    2. Re:dubious by Tablizer · · Score: 2, Insightful

      One group at work proudly used the Rational tools to generate some code - it was the most obscure code I had ever seen

      Somebody will probably have already said it, but generally code generation is a sign that your language or abstractions are not powerful enough. Code generation takes a more compact form of information and creates a less compact result (generated code). One should use the more compact form to tell the software how to operate, not turn it into bloated code. It is almost like turning a table in a database into a bunch of set/get classes that just echo attributes. That is reverse abstraction. The only justification is perhaps performance, but you are sacrifacing maintainability and simplicity in the process. It is to make the machine happy, not people.

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

      One group at work proudly used the Rational tools to generate some code - it was the most obscure code I had ever seen

      Well, generated code is not *meant* to be readable. The idea of code generation is that the programmer only needs to worry about modelling the problem correctly, and doesn't need to bother about the layer below.

    4. Re:dubious by Dolphinzilla · · Score: 1

      My view of this is that use of some of these tools mean you are forever married to them - the code generated is obtuse and confusing if not downright absurd. I am sure Rational would love to create a whole mass of programmers that can generate code that only makes sense to the Rational tools and requires what amounts to reverse engineering to gain understanding of what it does if you have problems. Its a little to abstract for my taste - I don't know about you, but there is enough stuff runnig on our computers that I don't understand what it does without making my own source code part of it !

    5. Re:dubious by BobKagy · · Score: 1

      Having worked some with code generation, it does seem to take a different tack.

      Where I've used it we've tried to ensure the interface was clear & well documented, but ignored the obscure code within. So far its worked out well.

    6. Re:dubious by BobKagy · · Score: 1

      Somebody will probably have already said it, but generally code generation is a sign that your language or abstractions are not powerful enough.

      I've worked with code generation, and would have to agree with you. The reason I prefer code generation over directly coding is that the abstractions in the modelling environment are better.

      We use tools to provide a better abstraction for our problem domain. These tools then generate ANSI C with well documented interfaces. (The code inside might be quite obscure, but isn't too hard to follow if you have the source model at hand.) We then have our choice of C compilers for our project.

      The advantages:

      • Better divorce of hardware selection from software selection. Everyone supports ANSI C.
      • The requirements get described in the language non-software engineers are used to speaking in.
      • The modelling environment offers simulation, so you are less likely to have gaps in the requirements the developer must fill by guessing.
      • No implementation errors.

      Its not perfect. Because the people doing the modelling aren't software engineers they do stupid things. But a software engineer can take a look, re-architect, and know they haven't introduced errors by comparing the before and after results.

    7. Re:dubious by ffatTony · · Score: 1

      I am sure Rational would love to create a whole mass of programmers that can generate code that only makes sense to the Rational tools...

      It's interesting you say that. There was a presentation at my workplace some time ago where some Rational bonehead talked about replacing all programing languages with a kind of uber-UML. Interesting, but I doubt the people who have given us "innovations" such as Rose and XDE will be able to provide such a beast.

    8. Re:dubious by Tablizer · · Score: 1

      The reason I prefer code generation over directly coding is that the abstractions in the modelling environment are better.

      So you cannot "run" from the modeling environment directly? Is it due to CPU speed or something else?

    9. Re:dubious by Grab · · Score: 1

      Modelling environments do *simulation*. It *always* takes more processing power to simulate than to run on the intended target.

      Also, the modelling environment is running in its own little sandbox on the PC. The real hardware will have a load of I/O and stuff to deal with, which is being simulated by the modelling environment. So you can't run directly from the modelling environment, any more than your PC joystick and MS Flight Sim can control a real aircraft.

      What you *can* get are auto-coders which generate C code from the models, in the same way as a compiler generates assembly instructions from C code. Compile that C code and you'll get something that'll run on your target hardware. (Note the two-step process, because C code is portable between processors - it's more sensible to have the auto-coder write portable C code and then generate assembly using existing compilers, instead of reinventing the wheel.)

      Grab.

    10. Re:dubious by BobKagy · · Score: 1

      The reason I prefer code generation over directly coding is that the abstractions in the modelling environment are better.

      So you cannot "run" from the modeling environment directly? Is it due to CPU speed or something else?

      In one sense, running from the modelling environment is like running within a debugger. Given enough CPU you can do it, but why bother once you've got it working.

      Another reason is if the target is differant than a PC. Examples might include an embedded target without an FPU in the CPU. The simulation allows you to model not only the computing environmet but the physical plant it interacts with. Once you've generated targetted code, you interact directly with the actual plant.

  10. Completely lacking vision by beelsebob · · Score: 5, Insightful

    This article, is simply looking at the obvious research efforts on currently used techniques... It has no vision about what might be done entirely differently. It doesn't even consider the potential of things like using different programming paradigms like functional programming or graph programming.

    Bob

    1. Re:Completely lacking vision by Anonymous Coward · · Score: 1, Interesting

      Um, what is "graph programming"?

    2. Re:Completely lacking vision by f3773t · · Score: 1

      Ah I agree!

    3. Re:Completely lacking vision by beelsebob · · Score: 2, Informative

      You specify a set of rules that pattern match sub-graphs of the current state graph, and transform that sub-graph into a new one. You then specify a program as a series of these transformation rules, any valid program can be applied either once or until it can be applied no more. Give it an input graph and you get a new graph as output.

      If you want more information go ask Detlef Plump at the University of York - it's his research that I'm getting this from.

      Bob

  11. In the year 2000... by Anonymous Coward · · Score: 0

    In the future, if Joe Sixpack says, "you know what I needs, I needs a program that balances my checkbook and is completely automated." Then he will go out and buy Microsoft Visual Basic, draw the program, and have it balance his checkbook. Now if he could just write a program that would give his flying car a tune-up he would be all set.

    1. Re:In the year 2000... by ClosedSource · · Score: 1

      Joe S. never balances his checkbook.

  12. autotools by sik0fewl · · Score: 2, Funny

    As long as automake and autoconf aren't software tools of the future, I'll be happy.

    I'd like to see more projects moving towards SCons or jam.

    --
    I remember when legal used to mean lawful, now it means some kind of loophole. - Leo Kessler
    1. Re:autotools by Anonymous Coward · · Score: 0

      Or cmake !

  13. Refactoring by emiddlec · · Score: 1

    More complete Refactoring tools for C/C++ would be nice.

  14. Eclipse! by JKR · · Score: 2, Informative
    I believe Eclipse will become a major part of software tools of the future, simply because the Rich Client Platform initiative brought in for Eclipse 3.0. This makes it easier to create custom Eclipse API applications, compared to version 2 which was a much less modular design.

    My employer is working on an Eclipse-based development environment for their Cascade product, instead of developing yet another custom environment from scratch with all the incompatibility and test overhead that that entails.

    Jon.

    1. Re:Eclipse! by eenglish_ca · · Score: 3, Informative
      Eclipse has a great design no doubt. Automatic code generation through the use of omondo was very helpful in the work I have done with it. However, being a program written in Java it suffers from serious lag even with Java 1.5. It just cannot keep up with Anjuta or KDevelop in terms of raw speed. This may not seem like a serious impedement but it can make working with it quite irritating. Given that using java does give it platform independence, there are solutions like gtk for windows and mac or wx windows in terms of the gui.

      Additionally, I have found it quite buggy when running it on Solaris and Redhat based systems at school where i've primarily used it. I shouldn't have to delete my workspace directory just to get it to run as I have needed to.

      These issues need to be resolved before it can be considered seriously.

      --
      Checking out my form of escapism.
    2. Re:Eclipse! by JKR · · Score: 1
      Hmmm. We've used every milestone in the 3.0 series (except one) on Windows XP and Debian (sid) boxes, and not had problems. The Linux GTK version is even fast enough over remote X sessions to a Linux server using the cygwin X-server.

      You do know that Eclipse uses SWT, not Swing, and SWT uses native widgets (so GTK or Motif on Linux)?

      Admittedly all the extra features in Eclipse 3 have made it slower than 2 (and I almost prefer the v2 UI, it's cleaner and faster), but nothing is free...

      Jon.

    3. Re:Eclipse! by Taladar · · Score: 1

      And then there are people like me prefering emacs (or another simple editor) over the feature-bloat of these graphical development tools and debugging mostly with print-statements which get the job done and can be used in any environment (and almost any language) without reading pages and pages of manuals to understand the debugger.

    4. Re:Eclipse! by nikster · · Score: 1

      i am using print statements in Eclipse (and all other IDEs before that, actually). on several occasions, i have spent significant time with the debugger in order to determine if the debugger would be more efficient. every time, the answer is no. the debugger has too much information - and you have to spend lots of time clicking and digging into it to get the few interesting bits out.
      print-statements are a lot simpler. 3 or 4 quick iterations are enough to pin down 99% of bugs.

      the really great recent enhancement to debugging is automated test cases (JUnit, a snap to set up in Eclipse). these do require an initial time investment, but they pay off almost immediately. also, its pretty satisfying to know that you save maybe 3-5 minutes every time you run the test case [as opposed to manually starting the app and testing some part].

      i also find that refactoring makes a huge difference, not so much in fixing bugs but in improving the architecture. changing an Interface, for example, is not a dangerous and labor-intensive thing to do anymore. in this sense Eclipse (et al.) further good design. if something is even slightly wrong, you can just painlessly change it.

    5. Re:Eclipse! by Anonymous Coward · · Score: 0

      Hmm, I have been using eclipse on Redhat for years (well, at least more than 1;)) and I absolutely love it. Much better than MS Studio. Much better.

    6. Re:Eclipse! by Anonymous Coward · · Score: 0

      You must be a relative newcomer to computing.

      1) Debugging with print statements doesn't always get the job done. Certainly it has its uses, but if you think it's the ultimate debugging tool, then you need more experience.

      2) People exactly like you used to call Emacs 'bloated'. "Eight Megabytes And Constantly Swapping" was the joke. If you want something simple go use ed.
      Unix was of course total bloatware too, written in a ridiculously high-level language (C), and very slow.

      3) 'bloat' is largely a myth. It's a sign of inexperience. Higher levels of abstraction is a good and really inevitable thing in computers. What's 'bloat' one day will be considered 'efficient' in the near future.

      Unix is still around after 30 years. The 'non-bloated' assembly language operating systems of its day are not. Learn the lesson from this.

    7. Re:Eclipse! by Anonymous Coward · · Score: 0

      small projects run fine in Eclipse.. but 600K+ lines of code gets slooow. (I know by experience)

    8. Re:Eclipse! by Taladar · · Score: 1

      I agree that Unit-Testing is a good idea, it is however a totally different kind of testing then the one you normally do with a debugger or with print statements which is the part where you try to understand the bug. With Unit-Testing you detect the presence or absence of bugs (you thought of/already encountered).

  15. Smalltalk, Forth, Rexx. by Anonymous Coward · · Score: 0

    Well like I said over there. Smalltalk, the language that's also an IDE.

    Forth for the other end of the spectrum. Maybe Object Rexx for the middle?

    And last, yes history repeats itself, but that's because we didn't learn the first time.

  16. On the Amiga by suso · · Score: 1

    I remember there was a type of object based visual language for programming/scripting on the Amiga, I can't remember what it was called. But I always thought that if someone could standardize that and make it more available and versatile that it would be the programming language of the future. And that it would allow everyone to make programs.

    It's also kind of like in Star Trek: TNG, the episode where Dr. Crusher has to program the computer to calculate who all those speices DNA will map out to the star charts. You get the impression that she is doing something very complex in an object oriented way. Of course, that's Sci-Fi and made for TV, but still.

    1. Re:On the Amiga by starbird · · Score: 2, Informative

      AmigaVision it was called. It came with my A500, but without a HDD and 2 megs ram it was pretty useless.

      I saw some pretty impressive presentations done with it.

  17. Make it simple by jackb_guppy · · Score: 4, Insightful

    0. Alan is a Distinguished Engineer at IBM Rational

    translates to: Buy Rational Rose - scaratch that see 5... Rent Rational Rose

    1. Connecting business with IT: Business-driven development

    translates to: What do you mean that it will take 8 weeks to rewrite? We are already selling the service, you must change it tonight or be fired.

    2. Greater transparency in the software development process: Auditing, traceability, and accountability

    translates to: We must find some one else to blame, because we don't need to test the part, the system drew it that way.

    3. RAD using new programming models

    translate to: do not design first. build it first , then find out if it mets the need. Wait that is why the want to find someone else to blame it on.

    4. Collaboration among individuals and teams

    translates to: Talk to each other. Stop work in the castles with moats that where built between managers!

    5. "Pay-per-use" software tools: New licensing and subscription offerings

    translate to: We need more money, so we are following M$ model, charge for everything at least twice. Remember: give away the razor, sell the razor blades. Wait that is what Lexmark is doing now.

    1. Re:Make it simple by RAMMS+EIN · · Score: 1

      ``do not design first. build it first''

      Actually, that's a very good way to build software. You start with a simple program that does one thing. Then you add some features and make it more flexible. You keep doing this until it does everything you want. In the meantime, you rip out and rewrite parts that could have been done better.

      Why not design it right to begin with? Because you can't. You always encounter little details during the implementation that you didn't think of during the design. Moreover, if you design first, then implement, the requirements will have changed before you finish the implementation, rendering your design invalid.

      Only if the design is really simple (i.e. you want to build a simple system, or one that consists of few existing parts), you can design first and then implement. Of course, a certain degree of planning ahead is always good, but overdesigning is a recipe for disaster, and a very popular one.

      --
      Please correct me if I got my facts wrong.
    2. Re:Make it simple by bananasfalklands · · Score: 1

      Shoot me there I was thinking 'oo'/polymorhpism was already here.

      Has anybody else heard of Grady/Booch. or are they dead waiting for their idea to take off ?

      --
      Send Peter Clifford Francis Macrae comdoms to 23 Bedford St, St.Neots, PE19 1AX, England
    3. Re:Make it simple by Tablizer · · Score: 3, Insightful

      Your viewpoint sounds like Extreme Programming (XP) philosophy. I generally disagree with it. One can design pretty close to needs if given enough time to study the problem.

      Good designers can pull it off. The problem is that fad-chasing buzzword-oriented Bozo's usually create giant messes because they are using dogma instead of brains to build software. Perhaps XP is for bad designers, but not every designer is bad.

      And, XP is expensive because it reinvents a lot of small wheels along the way that a good analyst can usually filter out up front. Experience can be used to avoid organicly found dead-ends. Creationsim is faster than evolution.

      XP also requires the customer to be on-site most of the time, which is probably impossible and unnecessary. If they have enough time to hang out with developers all day, then their tasks probably don't really need automating to begin with.

    4. Re:Make it simple by Tablizer · · Score: 1

      PHB-talk exposed by Dilbertian Analysis. Good work! Scott Adams would be proud.

    5. Re:Make it simple by Tim+C · · Score: 1

      All things in moderation. In my experience, if you concentrate too much on the design, then you end up with something that's inflexible and hard to change when (generally not if) the requirements change.

      On the other hand, I've seen a lot of complete messes that happened when programmers just leapt straight in and started coding without doing any design work at all. Talk about spaghetti.

    6. Re:Make it simple by bnenning · · Score: 1

      I generally disagree with it. One can design pretty close to needs if given enough time to study the problem.

      I have to disagree with your disagreement. The main problem is (at least in my experience) that the customer doesn't want what he told you he wants, but he won't realize that until you show him what he asked for. I'm not advocating XP (pair programming would drive me insane), but it's critical to be able to alter the design even after lots of implementation work has been done, because you *will* be told to.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    7. Re:Make it simple by RAMMS+EIN · · Score: 1

      I don't know much about XP; What I posted are just my own views. Addressing your comments:

      ``XP is expensive because it reinvents a lot of small wheels along the way''

      You mean that you end up writing and rewriting parts of your code? Not very often, if all is well. Typically, there are components that you can re-use in your project. After they have been used in a few projects, they are good enough that they don't need to be rewritten. And sometimes you do get the design right the first time.

      ``XP also requires the customer to be on-site most of the time, which is probably impossible and unnecessary.''

      That's something XP may require, but I didn't say anything about that. However, I do believe that software turns out better if the developers have an interest in it themselves. The best case of this is when they actually want to use the software. This is sort of like having the customer on-site.

      --
      Please correct me if I got my facts wrong.
    8. Re:Make it simple by Khalid · · Score: 1

      until you show him what he asked for

      Err !! until you show him what you think he has asked for. The main problem in software development is understanding software requirement, when this task has been correctly done, programming is most of the time trivial, or at least use tools and methods that have been used over and over and over.

      XP is about understanding cutomer requirements, not about programming per se. I have found that one of the most interesting tools of XP is TDD (Test Driven development), your test cases are the begining of your requirements, because the way best to learn something new is 1) by using examples, 2) to be immersed in it 3) to practice it. Building software requirements without intimately practising the problem you want to solve is like creating a new theory without using observation. This is why the best way to learn a new human language is to leave in a country where people speak it.

      This problem is central to the formalisation of knowledge, and has been studied fo a long time now.

      Programming in a sens is like creating a new theory for this you may read http://en.wikipedia.org/wiki/Curry-Howard_isomorph ism

      See also these links for the relationship between observation and the creation of scientific theories

      http://en.wikipedia.org/wiki/Epistemology

      http://en.wikipedia.org/wiki/Gaston_Bachelard

      http://en.wikipedia.org/wiki/Jean_Piaget

    9. Re:Make it simple by jackb_guppy · · Score: 1

      From my experience... Good design is overly flexible. That to me is the very core of a good design, anticipation of the business need and having the structure inplace to handle it. Good designers look ahead 2 to 5 yrs down road and see where the business is heading.

      The XP method (and maybe the designers you have worked hence your opinon) at best is building "last week" needs and if you are very very lucky "next week". I have NEVER seen a month or better design come from it.

      Then again the XP methods does support continuing employement because the system never seams to met what is needed today.

    10. Re:Make it simple by Tablizer · · Score: 1

      I have to disagree with your disagreement. The main problem is (at least in my experience) that the customer doesn't want what he told you he wants, but he won't realize that until you show him what he asked for.

      A lot of this can be done by RAD prototyping tools, dummy screen-shots, dummy report layouts, etc. As long as you know the quantity-of-relationships (one-to-many, many-to-many, etc.) between entities, you usually cannot get too far off and changes in presentation will not cause huge ripple effects. Thus, focus on Quantities-of-relationships early and well.

    11. Re:Make it simple by Tablizer · · Score: 1

      Typically, there are components that you can re-use in your project. After they have been used in a few projects, they are good enough that they don't need to be rewritten.

      Generic components and reuse are an orthogonal issue to XP.

      However, I do believe that software turns out better if the developers have an interest in it themselves.

      I agree, but full-day on-site is not practical and not necessary.

  18. O'Caml....the future today by Tyler+Eaves · · Score: 2, Interesting
    Objective CAML is the language you really should be using.

    Features include:

    FAST

    It can be compiled to native code that is just as fast as C.

    Type inference

    In the function
    let hello foo = "Hello, " ^ foo
    , it knotws that the paramter foo is a string, and it won't even compile code that tries to pass something besides a string, ever. However, it also supports polymorphic functions. For instance,
    let gimme_a_one x = 1;;
    can take anything what so ever as x, since it isn't used in a way that requires a specific type

    Garbage collected

    No malloc() or free(). Ever. Oh, and it's efficient, and can handle things like circular references just fine.

    Technique agnostic

    While fundamentally a functional language like lisp or haskell, it has superb support for imperitive and object-oriented programming, including multiple inheritence and all the usual goodies.

    Good standard library
    Things like printf, regexs, hash tables, etc, are already implemented, and always available.

    It really is a great language, and you should investigate it.

    A few helpful links

    Offical Site

    Free online book, best place to learn the language
    --
    TODO: Something witty here...
    1. Re:O'Caml....the future today by basiles · · Score: 1

      OCaml has also an interesting, safe, module system. Some features are still missing (dependent types, more powerful functor, stagged metaprogramming, ...) but are worked upon.

    2. Re:O'Caml....the future today by Anonymous Coward · · Score: 0

      I came to this article as a break from my other window which is vim editing ocaml. I couldnt agree more. This language is my future (to hell with mr IBM marketing guy).

    3. Re:O'Caml....the future today by Anonymous Coward · · Score: 0

      Sounds like Lisp to me... why should I use OCaml over common Lisp?

    4. Re:O'Caml....the future today by Tyler+Eaves · · Score: 1

      Vs. lisp

      Type checking...
      Don't need a lisp system to run programs
      Interacts nicer with C libraries
      More conventional syntax
      Can be used in an imperitive style more easily
      Faster

      --
      TODO: Something witty here...
    5. Re:O'Caml....the future today by Anonymous Coward · · Score: 0
      Indeed. I was recently faced with the same choice. However, OCaml development really is picking up pace and has caught peoples imagination. The things that I was worried about 6 months ago are being addressed (the most notable being install of libraries which is being nicely dealt with by GODI).


      LISP macros are nicer but everything else I find easier using OCaml. The type system is wonderful, pattern matching kicks ass (and some lisp/scheme libraries have copied it) and it looks beautiful with syntax highlighting on.

    6. Re:O'Caml....the future today by The+boojum · · Score: 2, Insightful

      I played with OCaml for a good length of time, considering whether to make it my next language for everyday use. I should also preface things by mentioning that I'm into graphics and rendering; I need fairly heavy duty numeric performance. I've also been thinking a lot about what would be my perfect language, so this has been on my mind of late - I've been reading up on Programming Language Theory papers and texts and contemplating drafting my own language spec and trying to bootstrap a compiler.

      OCaml annoys me slightly because it seems so tantalizingly close to what I'm looking for but falls just short. For one, I wish it had better support for generative programing. Sure, for template like stuff you can immitate that to some extent through the polymorphism, but because it has to be generic, it still doesn't work out performance-wise. Look at the kind of stuff they can do with Blitz++. And I know there's Camlp4 and MetaOCaml, but they're really too kludgy for my taste, though still better than the insanity that is C++ template metaprogramming. (Ick!) The model that I really like is the macro systems in Lisp or Scheme. That would require a Lisp-like syntax to work, but I'm cool with that.

      The other thing that bugs me a bit is that the compiler seems fairly simple in regards to optimization passes. When I've looked at assembly output from it, even with all optimizations turned on, I was surprised to see that it doesn't seem to do common subexpression elimination or strength reduction, like a common C compiler could do for you. I realize that OCaml is more functional, which constrains the compiler a bit, but there are compilers for other functional languages that manage to do flow graph analysis and optimization. (e.g. Stalin for Scheme) This lack is dissapointing in a higher level, more declarative style language like OCaml.

      Finally, one other thing is that while the foreign-function interface to C is better than many other functional languages, I wish it were still better. With OCaml, it seems like you'd still need a small library in C as a shim to interface between the two languages. It would be nice if you could simply declare a function's signature, mark it as an external C function and link the library in. To deal with garbage collection, I'd borrow something like the "pin" construction from C#. I think C# and the .Net framework have a really nice model for FFI.

      Of course, if you don't need such heavy duty performance, OCaml's still a great system and a fair sight better than many other functional language systems. But it's not a panacea for everything.

      One more thing: if you use (X)Emacs, be sure to have a look at Tuareg Mode.

    7. Re:O'Caml....the future today by Anonymous Coward · · Score: 0

      it dosen't look like oatmeal with nail clippings mixed in.

    8. Re:O'Caml....the future today by Taladar · · Score: 1

      After all there must be a reason lisp is one of the oldest programming languages still alive...

    9. Re:O'Caml....the future today by Tyler+Eaves · · Score: 1

      Thanks for the interesting reply!

      I must admit I'm pretty much a rank newbie at O'Caml, but I thought I'd try to bring in a few more converts ;). I certainly don't think it's perfect, but basically, to me, it gets more right than any other language I've found.

      --
      TODO: Something witty here...
    10. Re:O'Caml....the future today by OmniVector · · Score: 1

      i've been meaning to learn objective caml, just because i hear a lot of good things about it. it really reminds me of ruby (features wise) without the scary syntax.

      i think we need to see languages like objective caml, ruby, lisp, scheme, etc become more mainstream. these languages support extremely dynamic capabilities that languages like java, c, and c++ just can't do without a lot of trouble or huge workarounds.

      --
      - tristan
    11. Re:O'Caml....the future today by pkhuong · · Score: 2, Informative

      (here, Lisp = Common Lisp)

      Depending on the implementation, you can get some type checking (CMUCL and SBCL do type inference a lot, iirc).

      While ML has type checking, it also needs a different operator for each type of argument. It probably affects refactoring a little and is sort of annoying, but nothing serious.

      Just consider the Lisp "system" as a library. Depending on the smartness of the compiler, it can be shaken down to a smaller size.

      FFI isn't exactly hard to do. From UFFI's (LGPL) manual:
      def-function name args &key module returning

      (def-function "gethostname"
      ((name (* :unsigned-char))
      (len :int)) :returning :int)

      Bah syntax. Both our opinions are probably extremely well anchored :)

      How's Lisp harder to use imperatively? Just about every control operator has an implicit progn.

      Faster. Often true, but how much so? Lisp, with annotations and compiled for speed instead of safety, is pretty to close to C. (Here's the last troll-induced response I can remember: http://home.comcast.net/~bc19191/blog/040308.html) . However, how much and how often does it matter?

      Better metaprogramming support.

      --
      Try Corewar @ www.koth.org - rec.games.corewar
    12. Re:O'Caml....the future today by Haeleth · · Score: 1

      Offical Site (ocaml.org)

      OCaml.org is NOT the official site. The official site is http://caml.inria.fr/.

      It's worth mentioning a few other features that aren't as common in other languages. The main ones for me are structural subtyping (basically what Python types call "duck typing", but guaranteed sound at compile-time) and an excellent debugger with a "rewind" function letting you take your code back to an earlier state and try a different execution path.

      The syntax is a bit odd at first, and knowing it is unlikely to get anyone a job, but it's a nice language to use for personal projects...

    13. Re:O'Caml....the future today by Anonymous Coward · · Score: 0

      Better metaprogramming support.

      Really?

      Using camlp4, it's possible to modify OCaml to use a Lisp-like syntax. (I seem to recall there being a Scheme mode in the standard distribution at one point.)

      How easy is it to use Lisp macros to get an OCaml-like syntax? :p

    14. Re:O'Caml....the future today by Anonymous Coward · · Score: 0

      it really reminds me of ruby (features wise) without the scary syntax.

      Now THAT'S something I've never heard.. what is scary about Ruby syntax?? It's the must friendly syntax I've ever used!

      def greet(name)
      "hello, #{name}"
      end
      puts greet 'joe'
      ???
    15. Re:O'Caml....the future today by OmniVector · · Score: 1

      i was refering to ruby not having scary syntax. it's ocaml that does.

      --
      - tristan
    16. Re:O'Caml....the future today by warrax_666 · · Score: 1

      I sort of agree about the syntax: The thing that really annoys me is that it's a sort strange mix of whitespace-is-important and whitespace-is-not-important (try nested match clauses for one example). I have no problems with Python (which heavily favours whitespace, of course) or C-like syntax (which uses lexical tokens), it's just this strange mix I have a problem with.

      However, after switching to revised syntax, I've never looked back. Some of the revised syntax is a bit too verbose for my liking, esp. the requirement that one must always use a do { ... } block for multiple statements where a "chain statements" delimiter might have sufficed, but overall it was a win for me.

      --
      HAND.
    17. Re:O'Caml....the future today by brpr · · Score: 1

      How easy is it to use Lisp macros to get an OCaml-like syntax? :p

      Quite easy, and it's been done. You just use reader macros.

      --
      Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.
    18. Re:O'Caml....the future today by OmniVector · · Score: 1

      syntax in many cases is irrelevant i think. my only deviation from that claim is python, which requires whitespace for syntax (literally the worst syntax idea i've ever heard, which is why i avoid that language like the plague). i'm promising myself to learn o'caml soon. it sounds too good to pass up.

      --
      - tristan
    19. Re:O'Caml....the future today by Taladar · · Score: 1

      I thought the same about Python but recently I read a good book about it (Dive into Python) and I think it has lots of features that outweigh this serious flaw (I still think whitespace for syntax is one).

      I do not disagree with your statement that syntax is irrelevant. Many aspects of syntax are, but readability is an important aspect to understand what code does. Ruby is very good in that area, Python is after a while and in Perl you can (I wrote "can", I know it is possible to write better Perl Code) write things you won't understand yourself half an hour later. C-like languages and especially Java has problems in that departement as well IMHO.

  19. Are tools a crutch? by K.B.Zod · · Score: 5, Insightful
    I worry about the increasing power and complexity of IDEs in particular. While they do so much more for developers and have all sorts of whiz-bang features, I bet much of the time the developers themselves don't understand what is going on. They become tied to the IDE, and need it to do all these things because they don't know how to do it "themselves", i.e., without hand-holding.

    I develop in Java, and my environment consists of Emacs and Ant, mostly (hardcore, right?). I work with people who use NetBeans and Eclipse, and they keep running into weird problems interfacing them with CVS, or with mysterious classloading "features" that they have, or other obscure problems. Invariably, they don't know how to fix the problems, and I can't help because I never run into them.

    I would like tools of the future to be as transparent as possible, to prevent this sort of situation. If tools are so magical that their users don't know the real theory and practice behind them, they end up relying on them to do any work. Their flexibility is very limited, and the tools end up compounding or obfuscating the "real" issues facing them.

    1. Re:Are tools a crutch? by m50d · · Score: 5, Insightful
      Increasing abstraction is necessarily the way of things. When assembly language was invented, some said it was a crutch for people who couldn't write machine code properly. Ditto for fortran and assembly, ditto for garbage collection, ditto for any feature that makes coding easier.

      The next wave is the ides that make the repetitive coding unnecessary. Sure, it makes things slower, but it makes *developing* them faster, and machines are getting faster but developers aren't. I don't think there's anything to be afraid of.

      --
      I am trolling
    2. Re:Are tools a crutch? by Anonymous Coward · · Score: 1, Interesting

      You have hit the nail upon its head. At work, I use Vim/ctags/bash/gdb. I am highly effective with them because I have taken the time to learn how to use them. Other developers in my company whine about how hard they are to use, and petition management for some super expensive supertool that will release them from the burden of learning how their tools work. If they are successful in getting management to buy these tools for them, I predict that I will still be more effective than they are and that they will still come to me for help finding obscure bugs that they can't find themselves because they don't want to learn how anything works.

    3. Re:Are tools a crutch? by MythMoth · · Score: 1

      You use Emacs and Ant and think you're close to the metal? What sort of lunatic are you?

      Emacs is certainly a mature product, so it's hardly surprising that its CVS support is rock solid. But in no way, shape, or form is it less complex (unless the Eclipse SDK acquired a LISP interpreter that nobody's told me about).

      Eclipse support for CVS was patchy to start with and is pretty solid as of the 3.0 release, but that's because Eclipse is essentially a work in progress. I use it myself and adore it, but it has its faults.

      Mind you I tried to learn Emacs once and reverted to vi pretty quickly, so you might not want to respect my views...

      --
      --- These are not words: wierd, genious, rediculous
    4. Re:Are tools a crutch? by Darth_Burrito · · Score: 2, Interesting

      Don't think of them as crutches, think of them as enablers. If the environment is well designed, the benefits of a technology that enables more people to do a particular task will almost always outweigh the costs.

      For example, if the environment is generating weird problems when interfacing with cvs and it's hard to figure out what's wrong, then there are two problems. First, the environment is apparently difficult to integrate with cvs (this was my experience with eclipse). Second, when a problem occurs, the environment is not giving the user the requisite information to solve the problem.

      Shrug, even with these kinds of design problems, the benefits will still outweigh the costs for many people... and the technology will only get better.

    5. Re:Are tools a crutch? by Is0m0rph · · Score: 1

      Most of my work right now consists of using the Watcom C compiler and debugger under QNX 4.25 with no GUI. I use Ultra Edit as my editor for almost everything with the occasional use of vi under QNX. For merges and diffs I use Araxis Merge. I don't need any fancy IDEs I can do everything I need to do with just those tools.

    6. Re:Are tools a crutch? by gokeln · · Score: 1

      Using Java? Take a look at Nice (nice.sourceforge.net). It can use anything developed in Java-- compiles to bytecode, or you can gcj-it. And, it has an Eclipse plugin.

      What I find really useful is that they have improved the language in ways that Java 1.5 should have. Improving the type-safety system. Functions as first-class expressions. Fully parameterized types. Optional parameters and NAMED parameters.

      --

      There's no time to stop for gas, we're already late.
    7. Re:Are tools a crutch? by JKR · · Score: 1
      Eclipse has CVS problems because they write their own client and now have to keep it up to date and bug compatible with the various CVS forks (yes, Tony, I mean CVSNT!).

      CVS apparently is still not featureful enough to not have to rely on parsing the text output of various commands, and not stable enough that that text format doesn't keep changing (like we just discovered, Debian (testing) runs CVS 1.12 and Eclipse 3 only officialy supports CVS 1.11 due to some textual output change, WTF???).

      Subversion support for Eclipse is a joke, Perforce is too expensive, Bitkeeper support is nonexistent... We are stuck with CVS.

      Jon.

    8. Re:Are tools a crutch? by K.B.Zod · · Score: 2, Insightful
      Your analogy to the jump from machine code to assembly, and from assembly to higher-level languages, is spot on. As I was finishing my original post I thought of that, but kept going anyway. :)

      And so I guess the real question is what makes those tools really great? I know I couldn't do without compilers, nor could most others, and develop anything as good as I can with them. Chris Sawyer is one exception ... I think he did Roller Coaster Tycoon in straight-up assembly.

      Perhaps it is because they completely handle the complexity they are designed to ... they are "perfect" that way, where they need no transparency, or those cases where they fail to work are so rare that the cost of dealing with that is far outweighed by the efficiencies gained in using the tools in the first place. Perhaps the great tools are either completely transparent, or completely opaque, and things in the middle lead to the situations I worry about.

    9. Re:Are tools a crutch? by Beek · · Score: 1

      Heh, I sooooo totally agree. I'm in the same situation, where I work most people use Netbeans, and they're totally dependent on it. It gives them all sorts of problems, but they can't give it up. And it's a pain for me, because I can't use some language features (mainly assertions) because they'd have to reconfigure Netbeans to compile with -source 1.4. However, I still use Netbeans, but just as an editor. It's on-the-fly syntax checking & code completion are useful.

      I've been playing with Netbeans 4, and I love it. The free-form projects are what I like, because I can just plug in my ant script run targets from inside Netbeans. I'm going to try and get everyone onto Netbeans 4... Life will improve then...

      The thing is, most thing outside of editing code are done better by a separate tool. Why use Netbeans' internal instance of Tomcat when you can install and run a real instance of Tomcat just as easily? Why use Netbeans' debugger when JSwat is better? Why use Netbeans' CVS support when the command line cvs, or WinCVS does it better? I guess not everyone has the old Unix mindset.

    10. Re:Are tools a crutch? by Anonymous Coward · · Score: 1

      Increasing abstraction is necessarily the way of things.

      No. The problem the original poster was talking about is mostly the fault of Java, not abstraction in general. J2EE is a big fat ball of spehgettied mud. They got away from component-driven and event-driven development, returning to early SmallTalk models, such as MVC, which was crushed by VB, and that is coming back to haunt them.

      Return to components and events, and life will be smoother again. I guarentee it.

    11. Re:Are tools a crutch? by K.B.Zod · · Score: 1
      I should have included tags around my Emacs / Ant usage being hardcore. :) Still, it's one step closer to down there (or at least to the VM, which is running in an interpreter, which is written in C (maybe), which was compiled to assembly / machine code, running inside some OS) than when using an IDE. So in a relative sense (only) it is more direct working with those.

      I use CVS command line exclusively. I tried some GUI clients for it (jCVS in particular I used for a while) but I like the hands-on feel of the command line more. It's a matter of personal preference, but then again, when something weird happens in a shell around it (be it Emacs or Eclipse), it's extra work to figure out whether that shell is the problem (or your lack of understanding of it) or it's something deeper.

      I want to try using Eclipse, nevertheless, but I start it up and see all these windows and little buttons, and stuff about projects and things, and I just want to code ... if I spent time on it, I probably would figure it out, but I am just not motivated enough. Plus, I hear the problems my co-workers encounter, and my motivation sinks further.

    12. Re:Are tools a crutch? by Taladar · · Score: 1

      Funny. CVS seems to work just fine when you use it from the commandline (which is REALLY easy btw)

    13. Re:Are tools a crutch? by Anonymous Coward · · Score: 0

      s/IDE/language/;

      People have been so eager to add new features to languages, that improvements to existing low level languages like C and Ada aren't being made.

    14. Re:Are tools a crutch? by lostguy · · Score: 3, Insightful
      I develop in Java, and my environment consists of Emacs and Ant, mostly (hardcore, right?).

      Not to be snotty (oh, come on, this is /., so I'll have to snot this up a bit.) but you're probably using a tiny subset of the language if you're relying on your understanding of the SDK. You're probably wasting a lot of time trying to remember if it's put() or add() or addElement(), all things your IDE should tell you, and you shouldn't need to store in your brain.

      The people I've worked with who insist on using vi or emacs for Java dev work are usually working about 50% or less the speed of people using a quality IDE such as IDEA or VisualAge/Java. Class and method completion alone speed up programming and also expose you to a lot more of the API than you can reasonably expect to hold in your head, especially with the speed at which the SDK has been increasing lately.

      Without IDEs, people usually know two data structures, Vector and Hashtable, and the myriad classes in the Collections API are more of a novelty than anything else. If they know more than two collections, they know the non-reentrant versions of each of the above two classes.

      I've also watched some of those holdouts switch from emacs to IDEA, and it's truly a "holy shit" moment. You're doing yourself a professional disservice not to be using them.
      If tools are so magical that their users don't know the real theory and practice behind them, they end up relying on them to do any work.

      At some point, you need to give up and assume that an abstraction is opaque. Otherwise, you'll be stuck at a relatively low level in terms of what you'll be able to do in life.

      Our entire society has advanced at the same rate with which we have lost touch with the more concrete necessities of survival. The people of ten thousand or so years ago were not appreciably "dumber" than we are. What they did lack was a lot of knowledge, especially of the abstract. They knew, however, which berries were edible and which weren't, how to avoid getting eaten by bears or rabid chipmunks, how to avoid freezing without the use of an electric heater, etc.

      These are all things we've had to give up over the millennia on our way to an advanced civilisation. In the future, we will have to give up more.

      Almost all people writing object oriented software don't really need to know about electron tunnelling and capacitance. They may need to know about garbage collection, but usually only when something goes wrong in their application. That usually happens once or twice a year, but not on a daily basis, and not for much longer. The entire purpose of the virtual machine is abstracting away a lot of the lower level details -- and this is a good thing!

      I think it's useful to be able to write trivial programs in a primitive tool such as emacs/JDEE. However, I can all but guarantee that you can do it faster and with a much higher quality with a real IDE.
    15. Re:Are tools a crutch? by m50d · · Score: 1
      The tools are a black-box, just like function calls, libraries, and lots of other things. And we need them so that we can concentrate on things without having to worry about the big picture, because in a modern programming project the big picture is simply too big.

      The reason the linux kernel works is that people who know the hardware can write drivers without worrying about the rest of the kernel. The same is true for almost any multi-person project, where perhaps the gui designer can design the gui without having to understand the rest of the project.

      A good tool is one that means you don't have to understand how it works, just what it does. If not you might as well be doing whatever the tool does by hand.

      --
      I am trolling
    16. Re:Are tools a crutch? by Taladar · · Score: 1

      Last semester I had to do a group software engineering task in a group of 8. In the first meeting someone spent over 1 hour to figure out how to use cvs from eclipse on his laptop and afterwards couldn't even say how he got it working so all the others using eclipse had to work it out for themselves too. I used Linux commandline, cvs commandline and Emacs and was halfway through reverse engineering of the codebase to which we should add something by the time they got their eclipse working. Later they ran into trouble because their code ran in Eclipse but not without it (on the demonstration server&client). This real world experience is one of the main reasons I always see IDEs with more scepticism than most other people (besides: I like the commandline better in any situation, not just development, but thats personal preference)

    17. Re:Are tools a crutch? by Taladar · · Score: 1
      You're probably wasting a lot of time trying to remember if it's put() or add() or addElement()
      You are right, it shouldn't be necessary to remember those. That is why most other language use a consistent naming scheme in their standard libraries and publish a style guide or something similar for third party library development. Java is terribly inconsistent in this matter, probably because they had too many designers working on the language instead of one person deciding these things.
      a primitive tool such as emacs/JDEE
      If you would look behind the first few hours of Emacs usage you would know that Emacs is propably the most advanced development environment today. You can automate pratically everything and there are modes for almost all the features your typical IDE offers. In addition you can customize it to fit your personal style AND the most important feature of all for software engineers choosing the right tool (language) for the job: you can use emacs with almost every language out there without relearning everything. For further information you should look at http://www.emacswiki.org/
    18. Re:Are tools a crutch? by lostguy · · Score: 1
      If you would look behind the first few hours of Emacs usage you would know that Emacs is propably the most advanced development environment today.


      Nice try, if wrong. :-)

      My biggest beef with Emacs is usually that I do too much with it. I tend to run GNUS in the same instance as the rest of development, and guess what -- it's single threaded! There's no reason that grabbing email via nnimap should keep me from doing anything else.

      To get emacs up to the same level of functionality as, say, IDEA, I'd have to spend about twelve months writing modules that don't exist today. The modules that do exist, such as folding.el or ecb.el, are nice efforts, but mere shadows of the similar functionality offered on an application that actually is an IDE, instead of an IDE toolkit.

      But, since I've only been using emacs for fourteen years, what do I know? ;>

      I've watched more experienced emacs users than yourself make the switch from emacs to IDEA, and they all regret not switching earlier.
  20. Software tools of the future.... by smcdow · · Score: 1, Funny

    ...will run under emacs.

    Emacs, baby. All the way.

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
    1. Re:Software tools of the future.... by norkakn · · Score: 1

      Rules for Optimization*:

      1. Don't.
      2. (For Experts Only) Don't Yet.

      *not applicable to verilog or other languages designed out of sadism.

    2. Re:Software tools of the future.... by Anonymous Coward · · Score: 0

      I love the way you say emacs with a LISP....

  21. MDA Tools by Anonymous Coward · · Score: 0

    Model Driven Architecture (MDA) is the future. It eliminates most of the design, development and deployment phases by allowing you to focus on the analysis which drives directly into a platform independent model. This model can be deployed to most platforms, redeployed down the road on commodity hardware, updated ... there's a million benefits. No more outsourcing, no more defects because of developers deviating from best practices.

  22. Slashdot Dupes by ethzer0 · · Score: 0, Offtopic

    In the future... We'll have software that protects against dupes!

  23. attractive to middle management- otherwise sucky by xtermin8 · · Score: 1, Insightful

    Tools will make it easier to hire and fire programmers (and outsource for them), and they'll give middle management more control (or at least marketed that way.) Whoopee! What a Brave New World!

  24. The Software Tool Of The Future: +1, Patriotic by Anonymous Coward · · Score: 0

    is Lisp.

  25. Harbor Freight by Anonymous Coward · · Score: 0

    I'm not sure if they have Harbor Freight outside of California so a lot of people might not get this reference.
    It refers to a company that imports dirt cheap tools and sells them at rock bottom prices. Their products are basically the cost of the materials plus an extremely thin overhead, not altogether unlike selling software for the cost of the media.
    Thirty years ago, Americans mainly bought their tools from stores like Sears which carried brands like Craftsman which had this deal where if you broke a tool they would replace it for free. Of course that was a cute policy since most people lose their tools long before they break them and these tools were prohibitively expensive to buy in the first place.
    Harbor Freight just fucked that market up in a big way. The fact is, those imported tools are just as good for most household jobs and far, far, far less painful to replace if you lose them.
    Of course the analogy between software tools and hardware tools is not all that great, but what I'm driving at is that even in the world of wrenches, hammers and screwdrivers the high-cost "quality" tool with the service guarantee strategy has already failed. Generic, standard and, most important, inexpensive tools eventually dominate and that is a very good thing.
    People obsessed with the importance of brands should get out of the tool business and try the fashion industry. That's a market where brand consciousness is always in high style.

  26. New vison gets nowhere- robots by Anonymous Coward · · Score: 0

    "doesn't even consider the potential of things like using different programming paradigms" That's because "new vision" has never really amounted to much of anything(outside of academia.) We will continue to used tired old paradigms until something truly disruptive occurs. I'm still dreaming about "artificial intelligence" doing the vast majority of programming. Time to start working on those "positronic brains!" haha

  27. Re:Keep the Best Tools Non-Open Source by basiles · · Score: 1

    I disagree, at least from an European point of view.

    BTW, I was a few days ago at the IST2004 European conference (The Hague Nederlands) and I heard the exact opposite view. Only high-value opensource tools would help Europe in not losing all its (unsufficient) IT industry.

    Probably the US is in a different position: dominant corporations (including corporations behaving against laws and ethics, see recent anti-trust cases) - like MicroSoft- are american.

    In all cases (and in all continents), the IT job market will evolve.

  28. How to compute ... by ThomasCR · · Score: 1

    How to square a 2x2 matrix? Here is, what the Critticall tool has to say about that: C21=A21*A12; C11=A11*A11; C11=C11+C21; C22=A22*A22; C22=C22+C21; X=A11+A22; C12=X*A12; C21=X*A21; Did you know this?

    1. Re:How to compute ... by Anonymous Coward · · Score: 0

      How to square a 2x2 matrix?

      Dude, a 2x2 matrix is already a perfect square. Did you know this?

    2. Re:How to compute ... by BayBlade · · Score: 1

      Its not square when you use really wide numbers--then its more of a rectangle.

      --

      The key difference between a Programmer and a Senior Programmer is that one of them is Mexican.

  29. Mono by bogaboga · · Score: 1
    From the statement "It looks at how to improve software development efficiency through visual modeling, generating code from abstract models, and systematic reuse." in the introductory remarks, I am sure Mono foots the bill here. Go Mono! I hope those in charge of filing for patents have already done so, or are about to do so.

    Cb..

  30. Your insensitive clod! I'm a 14 digit Vi user! by Anonymous Coward · · Score: 1, Funny

    Us super evolved types are an intuitive bunch, and have long abandoned Emacs. My 14 fingered friends really enjoy using Apple Xcode with a single-button mouse.

    1. Re:Your insensitive clod! I'm a 14 digit Vi user! by Anonymous Coward · · Score: 1, Funny

      I therefore welcome our new 14-fingered vi-using programmer overlords.

  31. QNX Momentics by RAMMS+EIN · · Score: 1

    Have you ever worked with QNX Momentics? It can be used to build programs in a variety of languages for a variety of platforms. I found it a lot more comfortable than MS Visual Studio .NET. Also, it's not restricted to just one platform. It costs quite a bit, though.

    --
    Please correct me if I got my facts wrong.
  32. mc & mcedit by Anonymous Coward · · Score: 0

    thats all anyone needs...

    and gcc & make...

  33. I've already seen one post dissing code generators by Jack+William+Bell · · Score: 3, Interesting

    I've already seen one post dissing code generators, but I expect to see that general class of software development tool to greatly increase in popularity over the next couple of years...

    Why? Well mostly because they are getting better. Many of the newer code generation tools are very flexible and have some ability to preserve changes to the code; making them easier to fit into real development cycles. Also we are already seeing 'just in time' code generation as an optimization tool; that functionality, when combined with runtime environments like the Java Runtime or the CLR, is going to get easier and more powerful.

    So, in the end, we may see developers tweaking code generation templates and filling in design forms/creating design diagrams in order to create some classes of software -- business software and game levels would probably benefit greatly from this scenario.

    Obviously there are other classes of software development which would see much less benefit...

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  34. same as usual by Anonymous Coward · · Score: 0

    Something from the past like LISP, lambda calculus, relational databases, etc., will be re-invented, re-named, and poorly re-implemented. Companies will sell it with hot new trademarks, fads will come and go, and software will still be full of bugs, and buyers will still not care.

    Those of us who have been programming the same way for years will yawn, adapt to the new languages and wonder "what did they get wrong THIS time.. oh I remember when we had to start calling that 'refactoring'.. now the kids call it 'unduplicating', okay, whatever".

  35. The paradox of Emacs by Anonymous Coward · · Score: 0


    Emacs: The solution to our problems.
    Emacs: The cause of our problems.

    Imagine how different the world would have been if IBM has gone for ROMable Emacs instead of DOS.

    1. Re:The paradox of Emacs by 10am-bedtime · · Score: 1

      if some forward-thinking IBM exec wants to fund an emacs-on-silicon pilot, please email me privately. thanks.

  36. Exactly, tools are a crutch... by Anonymous Coward · · Score: 5, Insightful

    ...and being a developer is a (mentally) tricky job, and all the crutches you can lay your hands on are useful to have if they improve your quality and/or productivity.

    However you have to be a master of the tool, rather than its slave unsure of how it does its magical stuff.

    I've never really got why the die-hards hate any sort of automation in their environments. Why? I understand you want the direct grip on the code... which is exactly what you get in something like Eclipse (well, you have to tell it your source dirs and your classpath, otherwise you can use it as just a text editor with syntax colouring, if that's what you really want).

    There are days as a Java dev when a good tool is absolutely worth its weight in gold. For instance, if you're in maintenace mode on a large codebase which you know nothing about, and you change a method's behaviour, what upstream code will that affect? Ctrl+Alt+H in Eclipse will tell you. A text editor which doesn't actually understand the structure of your code would require you to do a lot of fumbling around and regexp searching and cross fingers you're not missing anything.

    1. Re:Exactly, tools are a crutch... by Beek · · Score: 5, Interesting

      >However you have to be a master of the tool, rather than its slave unsure of how it does its magical stuff.

      This is the key... The problem is that those who depend on IDEs can't function without them. You aren't a master if you can't do the task without the IDE. And if you can do it without the IDE, then it isn't really a crutch anymore, right?

      >I've never really got why the die-hards hate any sort of automation in their environments.

      They LOVE automation... They just want complete control. IDEs almost never give you that. make (or ant or whatever) is the ultimate automation environment, and it gives you that control. Sometimes you have to write code to do your task for you, and the problem with IDEs is that they rarely let you plug that functionality in easily.

      >For instance, if you're in maintenace mode on a large codebase which you know nothing about, and you change a method's behaviour, what upstream code will that affect?

      Unit testing ;-) But the Eclipse feature you mentioned is still extremely useful, and I don't think any dev be opposed to that, because it doesn't modify your code unexpectedly. It's when your IDE changes code silently when this becomes a problem. I've had Netbeans mutilate my tag libraries before. Stupid Netbeans (although version 4 is very promising).

    2. Re:Exactly, tools are a crutch... by Taladar · · Score: 1

      IDE != Automation

      Automation means Scriptability which is not possible in most IDEs I know. They let you use their integrated scripts but when you want to make a custom change no IDE-Developer thought of you are at the same point as in a simple text editor. With Emacs or make or the shell I can write small programs to make almost any change in my programs I want. That is true automation.

    3. Re:Exactly, tools are a crutch... by RodgerDodger · · Score: 1

      They just want complete control. IDEs almost never give you that. make (or ant or whatever) is the ultimate automation environment


      That's why I use Eclipse for developing and Ant for producing builds. They can live side by side.
      --
      "Software is too expensive to build cheaply"
  37. its already started too by Anonymous Coward · · Score: 0

    I think the point about needing a way that normal people can develop software is key - tools can be a way of reducing the technical barriers & associated risks that exist in software production

    For me vb, cyrstal reports and to a lesser extent rational rose, lint fit into this category..

    I'm not sure you could call it a trend yet but there seems to be more than isolated occurences of companies producing client software with lower-risk languages/tools and buying in the more complex back end processing logic from outside.

    Not sure about the disproving-liability point; tools can only automate process and I haven't seen a software process yet that could provide a legal standard of proof that something is fit for purpose.

  38. Pay-per-use - Bah! by crimethinker · · Score: 5, Insightful
    I can't quite understand why all the salesweasels think we'll jump at pay-per-use licensing. Here's a thought: I'd like to BUY my tools and OWN them, not be treated like a criminal by a vendor.

    Pay-per-use implies a secure authentication mechanism, which then opens the door for abuse of one sort or another. If you are developing a product which will compete against something Microsoft already does (or plans to do), and MS gets wind of it, will there be "technical problems" in contacting the authorization server the next time you start up VC++? What about the SCO v. IBM debacle? SCO claimed they could terminate IBM's license for AIX, and if pay-per-use had been in place, SCO could have flipped a switch on all IBM's customers. Do you think that would have affected IBM's willingness to settle? Yes, they could have got a court order to turn it back on, but how many customers would have been down for a day or two, and said, "Screw this, I'm buying my unix from the people who OWN it!"

    Pay-per-use is NOT the wave of the future so long as I have any say in it. When my boss asks me for tool evaluations, I'll always favour the least-encumbered tool. And yes, that means even if it's sub-optimal. We can always make changes to F/OSS stuff to meet our needs, and the freedom to do so, IMHO, more than makes up for the extra work involved.

    -paul

    --
    Pistol caliber is like religion: everyone has their favourite, and theirs is the only right choice.
    1. Re:Pay-per-use - Bah! by Taladar · · Score: 1

      +1000 Insightful

    2. Re:Pay-per-use - Bah! by Coryoth · · Score: 1

      I can't quite understand why all the salesweasels think we'll jump at pay-per-use licensing. Here's a thought: I'd like to BUY my tools and OWN them, not be treated like a criminal by a vendor.

      I'm just trying to imagine a self respecting Carpenter who rents his hammers, chisels and lathes only as he needs them...

      Nope, my imagination just doesn't stretch that far.

      Jedidiah.

    3. Re:Pay-per-use - Bah! by BobKagy · · Score: 2, Insightful

      I think it depends on the tool.

      I'd hate to think my text editor was pay per use.

      I'd rather my compiler wasn't pay per use, especially if I needed to compile to debug.

      But I saw one tool where they wanted $150,000 per development seat. It was a tool I could see myself using 3-4 times / year. Each time it would save me hundreds of hours of development, but I couldn't justify buying it, nor the $40,000 in annual maintenance.

      Now that's something I could see paying per use.

  39. Better Languages by RAMMS+EIN · · Score: 2, Interesting

    I think that we will see a movement to better languages than the currently ubiquitous C-like and Java-like ones (heck, even VB.NET is Java-like these days). These languages lack flexibility and get in the way of rapid application development and adapting to changing requirements. I think the world will move to more dynamic languages.

    Also, with multiprocessor systems, clusters, and other forms of parallel systems becoming more and more common, I think we will see an increased usage of languages and paradigms better suited to that than the current imperative ones.

    The tools of the future, then, will obviously be the tools that we write to support these new languages and paradigms. Dynamic languages can be optimized by figuring out which parts are static and leaving out the dynamic checks for those. Or programs can be optimized at runtime, by seeing which execution paths are most frequently taken and speeding up those.

    --
    Please correct me if I got my facts wrong.
    1. Re:Better Languages by Taladar · · Score: 1

      I never understood why someone would design a language with a C-like Syntax today. Okay, C has its uses but it definitely hasn't the best syntax I have ever seen. Most modern scripting languages like Ruby and Python have a relatively easy, short syntax and focus on integrating proven tools like regexp, xml-parsers,getopt... into the language to ease common tasks like string-parsing and config-file reading and writing. In Java most of these tasks still require pages of code which were spend better elsewhere with real problems.

    2. Re:Better Languages by ClosedSource · · Score: 1

      "I never understood why someone would design a language with a C-like Syntax today."

      I do. For all the interest developers have in new technologies, we fundamentally hate change in our day-to-day work. So Java had to at least be hidebound-compatible with C if Sun hoped to see it adopted widely. As a for-profit company, Sun put marketing above other considerations.

      I think open source developers are missing some real opportunities in this area. Freed from corporate restraints, why don't they develop brand new OS's and computer languages that are technically superior or easier to learn than the current Unix-like and C-like paradigms? Perhaps they are I'm just not aware of them.

    3. Re:Better Languages by Taladar · · Score: 1

      Unix-like is not C-like. And the last time I checked all the modern Scripting languages (developed Open Source afaik)have superior syntax AND use the strong points of Unix like e.g. the everything is a file paradigm or regexp. I think Unix has survived for 30 years for a reason:

      simplicity

      a "feature" most big companies seem to forget these times.

    4. Re:Better Languages by ClosedSource · · Score: 1

      I didn't make any connection between Unix-like and C-like. It is true, however, that I don't find the idea of everything being a file particularly logical or simple. For many devices, it's just a poor abstraction.

      Perhaps I see it that way because my original background is in embedded systems where, at least in the old days, there were no mass storage devices and no good reason to slow down and fatten up the system with an abstration that didn't really fit.

      Cobol and Fortran are a lot older than Unix and still in use, but I don't consider longevity the measure of quality.

      If you don't believe anything has been learned about OS design in the last 30 years then by all means don't pursue any new OS.

    5. Re:Better Languages by Taladar · · Score: 1

      I do think we made progress in some areas. However I do not blindly embrace everything new just because it is new. It must be better in my opinion. Unix has it's flaws but it also has some pretty interesting design principles and abstractions. Eric S. Raymond made a nice list in his book The Art of Unix Programming http://www.catb.org/~esr/writings/taoup/html/ch01s 06.html and while I don't agree with everything he writes I witness the "magic" of things like pipes and clean textual config-files everyday while at the same time I see the problems with more recent approaches. The ideal way to develop something new would be to take the good parts from the old tools and correct the flaws that have shown in practical use and if this means stripping out 3/4 of the "features" then this is a good thing even though marketing might say otherwise.

      I also tend to like a choice about the tool I use for every single task instead of buying everything as a package (e.g. IDE). I would like a language with the power of C and the power and syntax of modern scripting languages where you could do things low-level if necessary but don't have to if you don't want/need to and where you could understand a program by reading it without consulting an API Documentation or following the counter-variables of each and every for-loop (better: each-Iterator-concept like in ruby).

    6. Re:Better Languages by ClosedSource · · Score: 1

      "I witness the "magic" of things like pipes and clean textual config-files everyday while at the same time I see the problems with more recent approaches."

      I think the limitations of technology in the 1970's combined with the Unix philosophy of never using a single integrated program when you can combine many small ones makes things like pipes a necessity. Whether this is a virtue or a sin is a matter of opinion.

      Text files are a sophisticated abstraction that require specialized tools called text editors to create. The fact that we've been using these tools for a long time may lead us to forget the abstraction, but it's still there.

      "The ideal way to develop something new would be to take the good parts from the old tools and correct the flaws that have shown in practical use and if this means stripping out 3/4 of the "features" then this is a good thing even though marketing might say otherwise."

      I agree (although one person's "features" are often another's fundamental requirements). In addition, I think there's more to creating a superior OS then keeping good parts from legacy systems, correcting flaws, and stripping out unneeded features. Some new ideas are required as well.

      I can't say I know much about scripting languages, but in my opinion if a language has more than one kind of assignment operator (+=) or uses an iteration operator (++), it has been at least partially derived from 'C'.

  40. Next on Fox: When Buzzwords Attack by Anonymous Coward · · Score: 0

    It looks at how to improve software development efficiency through visual modeling, generating code from abstract models, and systematic reuse."

    I hear demonic voices howling these phrases in recurring nightmares I've been having.

    Oh, wait, those were meetings at work.

    Can we also "utilize synergy"? Pretty please?

  41. Re:I've already seen one post dissing code generat by Anonymous Coward · · Score: 0

    any language that requires code generators is a broken language.

    I've written code generators for PHP and Java (in Ruby). I had to do it because those languages are so badly designed (PHP especially has no excuse, it is completely possible to add dynamic features without breaking the existing syntax or semantics of the languages, yet the designers choose not to).

    When I program in Ruby or Lisp I don't need code generators, I can "generate" code *within the language* at application startup time.

  42. 2050 called by Anonymous Coward · · Score: 0

    It said, "You're all still stuck with shitty Microsoft dev tools suckers!!!! And by the way, kernel 8.6.9 still doesn't support USB9. HAHAHAHA."

  43. Fundamental problems in the items by Todd+Knarr · · Score: 4, Insightful

    Hist first item shows a fundamental problem right off. I've dealt with projects that were driven directly off the business requirements. The problem is that they were driven directly off the business requirements. The next project was for a slightly different set of business requirements, and because they were slightly different none of the work on the first project could readily be transferred over. By contrast in other projects I managed to divorce the business requirements from the actual work, and I could step back and instead of addressing the business requirements create tools and facilities that I could then use to address the business requirements. The next project in that line, with it's slightly different requirements, required only some relatively easy extensions to the existing work and we were in business. It took a fraction of the time. Most of the problems with business-process-driven software design and development, IMHO, is that it's too focused on the end result to be good at front-loading the solving of meta-problems that can speed up later work because solving the meta-problem doesn't provide any immediate advantages for the problem immediately to hand. In mathematical terms, it looks for a local maxima at the expense of an even better global maxima that's on the other side of a minima.

    His second item about auditability also aims at the wrong point. When, for example, designing the control software for an ABS system, the goal is to have it work correctly. All else, auditability, certifications and such, are supposed to be means to insure the goal is met. That implies that you judge their usefulness not on their own but on how well they help meet that goal. He's aiming at those things as goals in themselves. ISO 9000 falls into the same trap: it concerns how well you followed a process and not how the final results turned out. This is useful if someone at the top has their eye constantly on the final result and is willing to boot the process out regardless of how thoroughly it complies with ISO 9000 if the end results aren't meeting spec, but all too often the process becomes the goal and a shield against actually being judged on the end results.

    1. Re:Fundamental problems in the items by tootlemonde · · Score: 1

      By contrast in other projects I managed to divorce the business requirements from the actual work, and I could step back and instead of addressing the business requirements create tools and facilities that I could then use to address the business requirements.

      The article appears to be saying the same thing or something similar:

      As we use the current generation of tools in this context we are seeing the emergence of new roles, usage scenarios, and support needs. The lessons from this work are leading to a complete refactoring of tooling capabilities

      "complete refactoring of tooling capabilities" seems to where you both agree.

      The problem is that whatever he is saying is so vague and jargon-laden that it is hard to tell. When you write about "front-loading the solving of meta-problems that can speed up later work because solving the meta-problem doesn't provide any immediate advantages for the problem immediately to hand," I'm not sure you're adding a lot of clarity.

      When you go on to say, "all too often the process becomes the goal and a shield against actually being judged on the end results" one could easily point out that solving meta-problems can all too often become the goal rather than being judged on the end result, which is how well the project ultimately solves the business problems.

      When he writes in the auditability section, "Were the processes used to develop the software audited for quality? How were software designs analyzed and validated before they were put into production?", he seems to be addressing your concern about solving meta-problems by focusing on the components rather than the end results.

      At any rate, he's supposed to be talking about "The Future of Software Tools" but mostly he talks about processes. Solving meta-problems and auditability don't meet the usual definition of a tool. They're a good thing to do regardless of what tool you're using and should have been done all along.

    2. Re:Fundamental problems in the items by Anonymous Coward · · Score: 0

      While I pretty much agree with you, you've also got to realize that when you're on the wrong end of a wrongful death lawsuit, auditability is exactly the *right* point.

    3. Re:Fundamental problems in the items by Tablizer · · Score: 1

      IMHO, is that it's too focused on the end result to be good at front-loading the solving of meta-problems that can speed up later work because solving the meta-problem doesn't provide any immediate advantages for the problem immediately to hand.

      I find that if I try to make truly generic business abstractions (frameworks), new or different requirements come a long that almost totally bust it by taking turns I failed to anticipate. Instead, I have moved towards small-scale "helpers" that help with specific repetative tasks.

      For example, some of the SQL clause formation is rather tedius and repetitious. But rather than try to wrap all of SQL behind a generic API, make small routines or tools that help with the most repetitious parts, such as column assignments and validation in INSERT and UPDATE clauses, and continue to do the rest by hand (string concatenation).

      In other words, focus on abstracting the low-hanging fruit mostly. By keeping the helpers small and simple, if your abstractions don't work for later projects, you have less to lose. Sometimes you can tweak them for a new projects rather than starting from scratch.

      Giant mega, do-it-all business frameworks almost always fail to be truly generic. Some say after 3 tries you get it right, but who can afford that many tries? Thus, use small helpers instead.

  44. Improved Efficiency by 3)+profit!!! · · Score: 1
    It looks at how to improve software development efficiency through visual modeling, generating code from abstract models, and systematic reuse.


    Software development efficiency is affected more by the skill of the programmers and the flexibility of the design than by the use of such tools. Bad code is bad code, no matter how it was written.
    1. Re:Improved Efficiency by Taladar · · Score: 1

      But Autogenerators seem to create bad code more often than not. You only have to look at the majority of auto-generated HTML-Code out there which is a far easier to generate than Code in a Programming Language to see that Autogenerators are still not there (and perhaps never will be). If solving the problem is difficult in itself what do you think creating an automated solver for that problem will be...more or less difficult?

  45. Radical Innovation by LionKimbro · · Score: 5, Interesting

    Here's my set of software predictions. Some more detail to fill in for that other guy's blog entry.

    Here we go:

    • Refactoring Browsers - let you change the name of a class, method, whatever- and have perfect replacement across the project. This is important, because it means that our API's can feature consistent naming schemes, without a whole lot of upfront planning. These exist today, but not in common use.
    • Spatial Code Browsering - The ability to organize our textual code in a shared diagram, so that we can arrange it the way that we think of it. Most of our code is text, for various reasons. But we tend to think of spatial relationships between blocks of code. There's no reason why we can't lay out the files spatially, share those spatial layouts, and browse those spatial layouts.
    • Replay Debugging - You can make programs run in a virtual machine that tracks deltas over time, or keeps time slices. You can "rewind" or "fast forward" a test execution, introspecting into the state of variables at different points of time. If your debugger is smart enough, it can answer the question: "now how did THAT come to happen?" "Why did you do X? Why didn't you do Y?"
    • Publish-Subscribe - Is it just me, or is publish-subscribing becoming more important? That's because we're going to component systems.
    • Tuple Space(s). By my limited understanding, this is a model of programming where you have: A gigantic data store, and little micro-programs that pull and push data to the store. For example: Let's say you have a web-app. The web server receives a request, and pushes it into the store, in the form of a graph. So, for instance, you get the "request" node, and it links up to a node representing the time it was received, and it links up to the URL, and it links up to the response to be filled out, etc., etc.,. Then if a program knows how to fill out the response, it starts filling out the response as much as it can. For things that aren't at it's level of abstraction, it leaves for other programs. When things are fleshed out enough for those programs, they automatically jump into play, and fill out the rest. When it's all fleshed out, the web server recognizes that the "done" flag's set, takes the whole thing, ships it out, and then clears everything. What's new here is that what triggers programs/procedures is the state of the tuple store, the shared graph- programs register states that they can metabolize, and then when conditions are right, the programs are invoked. Your programs are collections of traps. Mixes declarative programming with imperative programming, in step with development of the semantic web.
    • Non-boxy interface, Deep visualization - Our GUI tools are all "boxy," and there haven't been any real UI advances since MFC, and I do blame the API. It's easy to imagine API's that allow you to specify call-outs, how icons that contain icons are specified, the ability to compose and connect icons, etc., etc.,. But we're still in the images, rectangles, buttons, and tree views days, as far as easy-to-use API's are concerned. As SVG matures, I believe that our API's will get less rectangular, and give us visual and interactive power on the cheap.
    • Social Help Documentation - I think we'll see integrated help documentation linking up with things like wiki and programmer's forums. So you'll be able to read a function's documentation, and see 17 examples of real use of the function and commentary. It won't be a seperate open-a-web-browser and search thing, it'll be easily available and connected with the deployed documentatio
    1. Re:Radical Innovation by Tablizer · · Score: 1

      Refactoring Browsers - let you change the name of a class, method, whatever- and have perfect replacement across the project. This is important, because it means that our API's can feature consistent naming schemes, without a whole lot of upfront planning. These exist today, but not in common use.

      I have proposed that if named code units (routines, methods) were managed in a RDBMS instead of files, then you would not need special browsers to do renamings. Renaming would become nothing more than a two-line query. In fact, if auto-generated named-unit ID's were used (not necessarily seen by developers depending on IDE), then renaming may not even be necessary. Renaming multiple things in general is often greatly reduced by normalizing how things are referenced.

      But if stuck in flat-file land, then better IDE tools for propogating name changes is indeed a good thing.

    2. Re:Radical Innovation by geg81 · · Score: 1

      Your "radical innovation" has been around for several decades; it's only that the industry mainstream is finally catching on.

      (Calling MFC a "real UI advance" is a howler.)

    3. Re:Radical Innovation by Taladar · · Score: 1
      Social Help Documentation...
      That would be a nice idea however I doubt that it will be integrated into programming languages/IDEs from people who think Javadoc is a good idea even though you can't navigate Sun's own Javadoc-Collection in a useful way without using google to search it (even concerning Classes that have similar functions like the different Time and Date Datatypes).
    4. Re:Radical Innovation by LionKimbro · · Score: 1

      Yes; if you have the code automatically convert names to pointers to the thing named, then our problem is solved.

      But our entire infrastructure is based on the text-file user interface.

      One thing I've been thinking about, is a "compiler with it's head cracked open." That is, a compiler that spills out everything it understands about your software, after it's loaded it all into memory, and is preparing to write out the compiled output.

      I would think the compiler should be able to say, "On line 354 of foo.c, the text "bar()" is a function call to the bar function."

      Parsing over and over, whenever you wanted to rename something, would be a bitch. But you could get around that, if you had a continous compiler- something like a compiler that is a server. Whenever you change a file, it re-parses just that one file, and knows everything else from it's first parse. So then it can give you all the details.

    5. Re:Radical Innovation by DrEasy · · Score: 1

      You know, it's your post that should have made the Slashdot story, not that piece of marketing crap we were given.

      I'd say we're getting there with respect to support for refactoring (Eclipse does a good job, and I hear IDEA is even better). But spatial code browsing and replay debugging, if done well, would definitely revolutionize development.

      Publish-subscribe is just a design pattern, and fully supported in modern OO languages (think event model), nobody's stopping you from using it!

      I have a bit of experience with tuple-spaces, and although the concept is appealing, tracing and debugging can become hell very quickly as the size of the program increases. This is an area where very smart debuggers would be needed to make the concept practical, in a way it's the same problem I have with Prolog-type languages.

      Social documentation should be supported directly in the IDE, and in a contextual manner, i.e. a right-click or an Eclipse "light-bulb" away. And no, this doesn't mean I want full web browser support in my already bloated IDE. Text and maybe hyperlinks are good enough.

      As for your last point, allow me to connect it with social documentation. Let's integrate calendaring and RSS with TODOs in IDEs, and be able to track everybody's progress. Now that might help with project estimation issues.

      --
      "In our tactical decisions, we are operating contrary to our strategic interest."
    6. Re:Radical Innovation by Audity · · Score: 1

      'Spatial Code Browsing' just struck as the most brilliant idea I've heard in a long time. Are there any projects out there to implement this? I would love to see something like this in action.

    7. Re:Radical Innovation by Tablizer · · Score: 1

      ...then our problem is solved. But our entire infrastructure is based on the text-file user interface.

      Well, but this topic is about the future. Files are an outdated concept IMO.

      Parsing over and over, whenever you wanted to rename something, would be a bitch. But you could get around that, if you had a continous compiler...

      If it is that much trouble, then perhaps it is time to switch to an interpreter. Use unit tests to check stuff rather than type checking.

    8. Re:Radical Innovation by cpeterso · · Score: 1


      When I first read your description of Automatic Calendaring, it seemed unnecessary in our "connected" world. But as a recent convert to PDA-style calendars and task lists, RSS-like calendar "subscriptions" sound like a fantastic idea. I imagine organizations publishing their event/meeting calendars, other groups collating them into calendar feeds, and even private calendars published by friends and family.

      Is anyone working on this? Do any of the current internet calendaring standards do RSS-like calendar publishing?

    9. Re:Radical Innovation by Taladar · · Score: 1
      Files are an outdated concept IMO.
      And what do you have in mind to replace them?
    10. Re:Radical Innovation by Taladar · · Score: 1

      What a nice idea.

      You broadcast your calendar with an entry "Away - Holidays" and all the nice people with the crowbars in the neighbourhood know where to break in with minimal risk.

    11. Re:Radical Innovation by Anonymous Coward · · Score: 0

      We have implemented a debugger allowing up to 20 seconds of what you call "Replay Debugging". Unfortunately we don't know how to sell it :-(

    12. Re:Radical Innovation by vbweenie · · Score: 1

      There's a little more on Tuple Spaces, including a toy Python implementation, in my blog here:

      http://codepoetics.com/poetix/index.php?cat=2.

      What tuple spaces provide is a high-level, very loosely coupled "coordination language" for multiple processes: potentially very good for "grid" computing, workflow with multiple agents or many other forms of asynchronous processing.

      --
      Experience is a hard school, but fools will learn no other.
    13. Re:Radical Innovation by Anonymous Coward · · Score: 0

      GCC-XML and LLVM are steps towards cracking GCC's head open that you may want to check out.

    14. Re:Radical Innovation by cpeterso · · Score: 1


      no, your personal calendar could be kept private for friends and family.

    15. Re:Radical Innovation by cpeterso · · Score: 1


      Some people are already working on RSS Calendars. Looks promising!

    16. Re:Radical Innovation by Tablizer · · Score: 1

      And what do you have in mind to replace them?

      A relational database with a few extensions.

    17. Re:Radical Innovation by Darth_Burrito · · Score: 1

      And no, this doesn't mean I want full web browser support in my already bloated IDE. Text and maybe hyperlinks are good enough.

      Heh, I do. Considering the massive amount of resources these IDEs already take up and the massive amount of resources that are increasingly available, it probably wouldn't put much of a dent in things and it would let you add all sorts of markup to make the inline documentation more readable.

      At least allow for the use of different font styles and images. I mean, sometimes a diagram is worth a thousand words and sometimes a thousand words is pretty much worthless.

    18. Re:Radical Innovation by Darth_Burrito · · Score: 1

      You just blew my mind. Is someone working on something like this? Where can I find it?

  46. Security by RAMMS+EIN · · Score: 0

    With businesses growing more aware of security issues, we will develop tools that lead to better security. It's not enough to teach programmers about security and which pitfalls they need to be aware of. We need to systematically analyze the code and find and eliminate weaknesses.

    --
    Please correct me if I got my facts wrong.
    1. Re:Security by Taladar · · Score: 1

      To do this it would be nice to have programming language versions so you could have a header in your files that your programs comply to definition 4 of and all parsers with the same or higher versions support this while at the same time the higher versions are developed without the flaws of the older ones. In other words: A language you can depend on to not break with every minor version AND being developed at the same time.

    2. Re:Security by TheLibero · · Score: 1
      Actually there are groups that are working on developing a framework or environment to develop "secure" software using formal methods, and other "scientific" methods for designing and testing software.

      The question is "how many people would be interested in using them?"

      Not too many, because of the high cost involved in applying such techniques. So, usually you find governemnts more interested in them rathar than civil companies. Governments can afford cost, and the "usuability" issue since "highly" secure systems aren't really developed with "usuability" in mind!

      --
      "Evil thrives when good men do nothing"
    3. Re:Security by Anonymous Coward · · Score: 0

      http://www.erights.org/talks/index.html Check out the SkyNet talk there.

    4. Re:Security by Taladar · · Score: 1

      I just noticed /. ate my "insert name of language here" after the "definition 4 of"

  47. Better Languages-Erector Set. by Anonymous Coward · · Score: 0

    We could also have meta-databases of pre-existing code. Need a sorting algorithm? Pull out a quicksort general sorting template (language neutral form) complete with information about the algorithm itself e.g.speed, accuracy, etc. Plus any correctness tests that need to be done, as well as documentation. Insert into code being worked on. Customize, run, fix as needed. Lather, rinse, repeat.

  48. MDA, Code generation, and the like by SlySpy007 · · Score: 3, Informative
    As systems beome more complex and the amount of code required to do it grows, we need to actively find new strategies to help us create better software faster. Development activites also need to be tailored to suit other related activites, most notably verification and validation. MDA is a good step because it allows the developer to focus on the higher level concerns of the system, and step back from some of the code level concerns. Code generators and transformational systems are an excellent counterpart -- if you have a modeling language with a formal syntax and well-defined semantics, you can easily write very powerful transformational tools to spit out anything you like -- models in a different representation, code, test cases, graphs...the list goes on. A colleague of mine has a saying "No more software engineers"; I personally think he's on to something. We as a profession spend altogether too much time worrying about code-level concerns and the like, when to make more robust, fault-tolerant, higher-performance systems we need to spend more time focusing on higher-level system concerns.

    Some links to check out on these topics:

    Semantic Designs (makers of a very powerful, generic transformational environment) http://semdesigns.com/

    Link to Nic Rouquettes slides from a talk on MDA at the UML 2003 conference) http://ase.arc.nasa.gov/uml03/rouquette.pdf

    Link to an article from ACM Computer magazine (last january I think) about MDS, and project at JPL which aims to incorporate some of these ideas into the design of a robust, re-usable flight software platform http://www.computer.org/computer/homepage/0104/Reg an/r1059.pdf

    1. Re:MDA, Code generation, and the like by Taladar · · Score: 1

      Funny, in my experience high-level tools make me worry about code-level-problems more than low-level ones do. High-level-tools often do something almost but not exactly the way I need them done and then I spend more time on this small difference than I would have spend on the whole manual code writing thing. I think however that domain languages and special parsers for them are useful (like lex and yacc e.g.) if you can decide yourself when NOT to use them and when they integrate nicely with manual code-writing.

    2. Re:MDA, Code generation, and the like by SlySpy007 · · Score: 1

      Yes, I agree. Most of the high-level tools that act in this way *do* in fact produce junk most of the time. Things like Rhapsody, if you are familiar with it, use a simple basic template and then do some fancy pattern matching to give you 'code'. But that's not code -- there's no formal semantics to what is produces; it's simply text. The same goes for products like Mathworks Stateflow toolkit. It's nice in that it allows you to focus more of your efforts on system level concerns, but the code that it produces is garbage. Moreover, this approach is not flexible, scalable, or easy to upgrade/maintain. That's why tools that apply formal methods are what are really needed -- tools that allow you to analyze and manipulate your design or code artifacts with some assurance that what you end up with is a coherent, sound product. The problem is that we focus entirely too much on code! Isn;t it sad that here we are, almost 2005, and the best way we have to produce a piece of code is to sit down in front of a keyboard for hours on end and use our fingers. Personally, I think it's pathetic. We're becoming complacent with what we have...how many people do you know that seriously consider using anything other than C, C++, or Java? We need to start looking for solutions to the problems on the horizon, not just trying to maintain something which may not be the best answer anyways. C++ was an ugly attempt to make C something it wasn;t intended to be. The extreme of this is what Alexandrescu is doing. Don't get me wrong, I think it's marvelous, but it's some of the ugliest code I've ever seen. With quality tools and a fresh perspective on how we do what we do, I think we'll continue to evolve.

  49. Re:I've already seen one post dissing code generat by Jack+William+Bell · · Score: 1

    You know, I hear that kind of thing all the time about LISP, Ruby and various flavors of declarative languages. But it is important to note that no one uses them for anything important. (OK, not entirely true I will admit -- there are big projects in LISP at least; but it is certainly true in general.) So, until the rest of us stop using 'broken' tools to write the software that actually runs the world, you really don't have a point.

    Someone smarter than me said it best: "There are two types of programming languages; the ones that people bitch about and the ones that no one uses." -- Bjarne Stroustrup

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  50. We already have it. by Anonymous Coward · · Score: 0

    Python has existed for years.

  51. Re:I've already seen one post dissing code generat by Anonymous Coward · · Score: 0
    So, in the end, we may see developers tweaking code generation templates and filling in design forms/creating design diagrams in order to create some classes of software -- business software and game levels would probably benefit greatly from this scenario.


    You come up against limits imposed by information theory (or practice). You have to communicate the parameters to your tool in some way, the least repetition the better. I came to the conclusion that the easiest form to put the parameters into is a text file and the best way of doing that is a text editor of your choice. All the rest is just duct tape to get round shortcomings in the language and libraries (hmm, why are IDEs and code generators so useful with Java...)

  52. Refactoring Browsers (eg, Eclipse) by sean.geek.nz · · Score: 3, Informative

    Refactoring Browsers were a radical change 2 years ago, and improved coding immensely.

    But the claim that they "aren't commonly used" is bunk. They are in very common use today. Eclipse, IDEA, JBuilder, etc. Java IDES have made a huge leap in the last 2 years, and they rock.

    They succeeded because they weren't trying to reinvent programming. They just aim to make coding easier and better.

    Why non-Java IDEs haven't caught up, I don't know. The worst part by far of having to deal with C++ is that these days the tool support just isn't up to the standard of Eclipse or IDEA. emacs does great stuff with syntax, but it can't replace an IDE that is tracking the codes semantics and making clever use of that knowledge.

    sean

    1. Re:Refactoring Browsers (eg, Eclipse) by JKR · · Score: 1

      Partly the problem is that C++ is a pain in the ass to parse - for example you need whitespace to stop nested templates > from mis-parsing as the stream operator >>, and if there's a syntactical error it's harder to recover gracefully and carry on parsing. This makes building fast parse trees in memory and maintaining them as the user keeps on typing harder than, say Java (notice how generics in Java 1.5 correctly parses > without needing magic whitespace?

      Jon.

    2. Re:Refactoring Browsers (eg, Eclipse) by LionKimbro · · Score: 1

      By "commonly used," I mean: "just about everywhere."

      If the Java people are using it right now, then that's a good sign.

      The Internet was huge and big in 1993. In 1997, my mom used e-mail regularly.

      E-mail is now in common use.

      I'm eager for refactoring browsers to be in common use.

    3. Re:Refactoring Browsers (eg, Eclipse) by Taladar · · Score: 1
      Why non-Java IDEs haven't caught up, I don't know.
      Maybe Java has a language design so bad that you need these tools more than with other languages. Java lacks a certain kind of consistency in is API that is sometimes called the Principle of least surprise. In Ruby e.g. you want to sort an array, you call arrayname.sort, in Java you call Collections.sort(arrayname) after searching the documentation where the latter is speed up by the use of an IDE but the problem wouldn't even exist if the language design wasn't flawed in the first place.
    4. Re:Refactoring Browsers (eg, Eclipse) by Anonymous Coward · · Score: 0

      In Ruby e.g. you want to sort an array, you call arrayname.sort

      You say it as though it were a "duh" thing. But it's not. It's just as obvious to an experienced Java programmer that you use Collections.sort on an array (since an array is a collection).

      Tell me, quick, without looking it up - how does Ruby's arrayname.sort sort things? Does it sort strings in alphabetical order, and if so, does it use straightforward byte-wise collation (to match the programmer's expectation), the user's current system locale (to match the user's expectation), or a Unicode collation algorithm? Is it case-sensitive? Where multiple string variables contain the same data but do not point to the same location in memory, what ordering is used there? What about sorting arrays of objects containing both integer and string members - which member does it sort by, or does it use some other principle?

      What about if you want to reverse an array - is the method called "rev", "reverse", or something else? What if you want to remove duplicate elements? Is there a method that returns the union of two sets stored as arrays, and if so, do you know what it is off the top of your head (and if not, was your first guess correct)?

      What about adding two arrays? Does "array1 + array2" work? Does that append array2 to array1, or does it add each element of array2 to the corresponding element of array1? Are you aware that there are a lot of people who would consider the latter behaviour more natural, not least because it's obvious how to extend it to other arithmetic operations?

      And so on.

      Doesn't seem so intuitive now, does it?

    5. Re:Refactoring Browsers (eg, Eclipse) by Darth_Burrito · · Score: 1

      Why non-Java IDEs haven't caught up, I don't know. I think Java hit the academics by storm. It is probably the favorite language out there for static (and dynamic) analysis. Some folks out there are looking at .net but for all intents and purposes, .net came too late.

      For an example of the kind of stuff I'm talking about, check out the really cool soot framework.

    6. Re:Refactoring Browsers (eg, Eclipse) by Anonymous Coward · · Score: 0

      It is possible to write a C++ parser. There are even people who will sell you one if you can't manage it yourself. I think the real reason for the lack of refactoring browsers for C++ is just that C++ is not that hip anymore.

    7. Re:Refactoring Browsers (eg, Eclipse) by sean.geek.nz · · Score: 1

      Refactoring browsers make it easier to refactor your code.

      So you can, for example, split a class into a super-class and an implementing subclass, and the IDE will then find every call to create or use an instance of that class and (with some Q&A with the programmer) fix it all up for you.

      Or, to give the simplest example, you can rename a method and the browser will fix every call to that method.

      Clearly any OO language benefits from this sort of thing even if its core libraries API happens to map 1:1 to your personal intuitions.

      sean

  53. Re:Keep the Best Tools Non-Open Source by Anonymous Coward · · Score: 1

    Ask yourself, "How would I feel if my tools were exploited by the Americans to improve their weapons systems or their torture techniques against Iraqis and others?"

  54. Buzzwords, psychology, and viewpoint relativity by Tablizer · · Score: 3, Interesting

    There have been a lot of attemps and experiments since the early 1970's to improve the software development and management process. However, there has not been any magic bullet. Most improvements are incrimental and often disputed.

    Graphical tools have generally proven ineffective because there is no one "proper" viewpoint. All the possible viewpoints needed by different departments or situations cannot fit onto the same sheet of paper or screen without being messier than the coded counterpart.

    Another thing the article mentions is getting closer to how the user thinks about things. The problem with this is that everybody thinks differently. There is no one "right" way to think and the variations are wide. Plus, people with different ways of thinking have to use the same software or same information. Delivering different viewpoints of the same info leads to the next item:

    One area I would like to see explored more is divorcing presentation from meaning (DPFM). Rather than use linguistical syntax to store algorithms and attributes, if such information was treated more like a database, then one's view of the algorithms and information could be altered to how a given developer or user wants to see it.

    It is roughly similar in concept to Microsoft's .NET run-time engine in which different languages compile to the same thing, but perhaps use relational and more declarative techniques instead of the map-based "database" and imperative-intensive approach favored by OOP proponents and languages. OOP is generally a code-centric way of thinking and is not very condusive to DPFM in my opinion. It is a fight that has to be settled one of these days.

    Hierarchical approaches to managing such information have generally failed to scale. The real world and its change patterns are not really tree-shaped. Philosophers have known this for quite a while, and computer scientists keep rediscovering it the hard way.

    One would be querying info instead of relying on file and code browsers so much. Some things, such as math and Boolean expressions, are still best represented as code (although they don't have to be stored that way under DPFM), but the size of such units can perhaps be reduced, similar to how code is reduced to mostly individual event snippets in event-driven UI systems. But to study event snippets, you query for them if there is no UI click-and-point approach available for a given search.

    Yes, all this may take more horsepower, but better abstraction usually does take more.

    1. Re:Buzzwords, psychology, and viewpoint relativity by JKR · · Score: 4, Interesting
      One area I would like to see explored more is divorcing presentation from meaning (DPFM).

      Yes, I couldn't agree more. On a similar theme, I'd like to see source control tools which store the parse tree of the code as the canonical source, rather than the ASCII (or Unicode, in the case of Java) source code. Then the local system regenerates the source on the users machine, with the correct local coding conventions, whitespace, indenting etc. No more "braces-go-here" wars, and tools which already use the parse tree (like Eclipse) have one fewer task to do on checkout of a large project.

      Jon.

    2. Re:Buzzwords, psychology, and viewpoint relativity by Tablizer · · Score: 1

      Yes, I couldn't agree more. On a similar theme, I'd like to see source control tools which store the parse tree of the code as the canonical source, rather than the ASCII

      Personally, I think there are ways to reduce reliance on trees, thus make the trees flatter and smaller. More of the structuring would then best be browsable as tables instead of trees. But it may require changing the way one programs. I enjoy table-centric ways of organizing info, but I am not sure if others will take to it well.

      It is hard to please everybody. Even if we divorce presentation from meaning and put the tokens etc. into data structures, there is still the issue of what kind of data structures are used, and this usually leads to structure holy wars.

  55. Re:I've already seen one post dissing code generat by Jack+William+Bell · · Score: 1

    I'm not arguing that code generators and advanced IDE's are a form of duct tape -- only that they are a form of duct tape we need. Certainly there might be some magic tool out there that oblivates that nescessity; but until it is in general use I won't be using it to get my work done.

    In other words, I live and work in the real world. In the real world things are often hacked together with twisted coat hangers, old pizza boxes and duct tape. So, to me, duct tape is a good thing.

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  56. Left behind by GCP · · Score: 5, Insightful

    I agree. Anyone who doesn't understand the importance of abstractions is likely to get left behind.

    There was a time when you planned to work for your company until retirement, your company had ONE computer, and you used a small set of tools plus technology-neutral algorithmic and domain knowledge to write software.

    These days the diversity of technologies that matter is mind boggling. If you don't use something at your employer this month, you'll need it at your next employer next month.

    Getting the XML right, getting the HTTP protocol right, etc., etc., involves using tools that automate a lot of things for you. (Libraries are included in what I'm calling "tools".) You just don't have the time or the mental bandwidth to use all of these things quickly and well if you insist on doing everything manually.

    IDEs that organize the protocols, handshaking, and plumbing between technologies, that fill in the blanks for you with valid information, that bring the right documentation to you at the moment you need it, that give you one-click builds and deployment, that give you debugging views in every increasing variety, etc., are only going to increase in importance.

    I'm with the grandfather poster when it comes to my desire to have tools so simple that you know what's happening when things go wrong. When I can, I use them. But, more and more, it's becoming impossible to do so.

    It's just like my father, who mourns the loss of cars with engines so simple and transparent in function that normal people could repair them. For cars, that time has past, and software is going that way, too.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:Left behind by Taladar · · Score: 1

      The problem here is that car mechanics still understand the whole engine of a modern car. Developers ARE the mechanics, not the normal people, if the developers don't know what's going on (or going wrong) we have too much abstraction. We should remove some abstraction until a time where the lower abstraction levels are guarranteed to work 100% correct. Then we can start to build additional abstraction above them.

    2. Re:Left behind by iabervon · · Score: 2, Insightful

      The thing is that, previously, each increase in abstraction was either done by writing in a higher-level language or by using a nicer library in the same language. IDEs, on the other hand, move from writing code in any language to carrying out an IDE-specific process which generates a chunk of code which is then part of the project without anyone having written it.

      The real solution isn't IDEs. It's adding language features that let you write the code more simply without a lot of boilerplate, and APIs which are easier to use. Really, the standard compiler should deal with the plumbing and there should never be any blanks which need to be filled in with information an IDE could supply. Doing these tasks with an IDE just hurts repeatability.

      On the other hand, the rest of the things on your list are good: having a system which processes the project such that your tools are acting with a complete understanding of the code helps a whole lot.

    3. Re:Left behind by GCP · · Score: 1

      The problem here is that car mechanics still understand the whole engine of a modern car.

      No, they definitely do not. Mechanics these days not only don't know how to fix the chips and other contraptions that represent more and more of the logic in an engine, they don't even know how to tell what's working and what isn't. For an increasing percentage of the engine, all they know how to do is run a very expensive machine that will tell them what to replace, and they don't know how that expensive machine works either, beyond the "abstract", arm-waving notion that "it runs a bunch of tests".

      As the logic of the engine's various functions is made more complex and useful, it is changed from the purely mechanical and visible to the electronic and encapsulated. Then, instead of studying how the engine works, new mechanics have to study how increasingly complicated diagnostic tools work, and you have another layer.

      Even the engineers who build these cars don't understand the whole engine. They use encapsulation and interfaces like software engineers (and they often ARE software engineers) to deal with the growing complexity.

      if the developers don't know what's going on (or going wrong) we have too much abstraction

      "Too much abstraction"? The amount of abstraction is essentially a function of the amount of complexity that has to be dealt with and the limitations of the human mind. Increasing functionality demands increasing complexity, which requires increasing abstraction for mere mortals to deal with. It's a pattern you see everywhere, from the old Roman legions to Web applications.

      I don't see drawing a line in the sand and declaring, "I'm not going to work at any higher level of abstraction than this," to be a winning strategy over the long run even though, as I said, working with malfunctioning black boxes is nobody's idea of fun.

      --
      "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    4. Re:Left behind by stoborrobots · · Score: 1

      Anyone who doesn't understand the importance of abstractions is likely to get left behind.

      Equally, anyone who comes to rely on abstractions as a crutch will almost certainly get left behind as well... Joel on Software puts it, and other software design principles very nicely...

    5. Re:Left behind by ClosedSource · · Score: 1

      While automatic code generation is a feature that most IDEs have today, it wasn't the original purpose of an IDE.

      The idea was to combine editing, compiling, and (eventually) debugging into a single environment. There was a big productivity boost in features like being able to double-click on a compile error and have the IDE open the file for editing with the cursor on the offending line.

      Naturally companies tend to emphasize code generation features because they want to convince you that their product will reduce the amount of code you need to write, but you can use an IDE productively for years without using those features.

    6. Re:Left behind by m50d · · Score: 1
      The IDE is the equivalent of a compiler in this respect though. It's compiling the higher level "IDE-lang" into c++ or whatever you're using - which is what we did when c++ was invented and you wanted to use objects - you'd compile the c++ into plain c, which you could have written yourself, but each compiler would do it slightly differently.

      I use qt designer to do my guis a lot, and save them as .ui files. I can have my ide turn these files into .py or .cpp files, or alternatively I can load them directly at runtime. Is loading them at runtime somehow "better"? Because it's pretty much equivalent to using a library to expand the language, but the only difference between it and ide code generation is that it's slower.

      I will say one thing for your side though. What we need is a standard way of handling code generation, so you can move your code generator templates between IDEs. Otherwise you have lock-in, which is never a good thing.

      --
      I am trolling
    7. Re:Left behind by iabervon · · Score: 1

      I have nothing against IDEs with special (e.g., graphical) support for specialized source formats; the issue is when the IDE generates code in some other language directly without a step involving a non-generated format you can version control. (Personally, I mainly avoid IDEs because they always seem to have keyboard shortcuts that are malicious to people accustomed to using Emacs the way I do, which involves moving text around with C-k/C-y; but this means that I insist on only using things that can be done outside of the IDE).

      When you save your guis as .ui files and turn them into .cpp files, you don't then start editing the .cpp file and consider it the source of your project. So you just have another stage in your compile, and it doesn't actually matter that the intermediate step in also code that you could have written.

  57. Bill Gates sez... by Anonymous Coward · · Score: 0

    we'd all be doing VISUAL programming on holografic 3d images moving stuff with our hands. I hope VB is not part of his vision.

  58. no article comments! by Anonymous Coward · · Score: 0

    no one commented on the article via developerworks
    (it's a lame blog anyway), so i registered a
    developerworks account and posted a comment linking
    to here, -lol
    ok, sad but i was boooooored :-(

  59. CVS Integration by Darth_Burrito · · Score: 1

    I would be interested in seeing better version control integration in development environments. In a traditional approach we have several distinct tools. There is usually a repository with a version browser, a diff viewer, and a your development environment.

    If you want to see a the previous version, you often have to switch to your repository tools. If you want to see comments submited with a version, you have to go to the repository tools. If you want to compare the previous version to the current, you have to switch to your diff viewer. When you are back to development, you switch to the IDE editor mode.

    I'd like to see an IDE completely integrated with version control and language commenting features. For example, the story of a file should be part of the program file document. It shouldn't reside in a version control database. If you want to see differences between the code your looking at and a previous version, you ought to be able to just right click and have the changed code show up a different color right in your editor.

    Perhaps unrelated to cvs, I'd also like to see better association of comments to sections of code. As things get copied and pasted around, it is not uncommon for comments to become disassociated from relevant code. You might find yourself asking, what section of code does this comment cover: the whole file, this function, this loop, this line? If comments were formally associated with code regions (vs feature), it would define a scope for the comment. You also might find yourself looking at the code and the comment and trying to reconcile conflicting information. It might be useful to be able to view what the code for the region looked like when the comment was originally written (more cvs integration).

    I'd also like to see better integration of development tools with version and development environments. For example, it should be easy to set up a version control system to run a style checker, compile code, and perform regression testing. When it encounters problems it should be able to determine (basically) what they are, when they were introducedm, and by who. You should also have the option of setting more pre-check in checks. Bits and pieces of this kind of solution exist (like Java's checkstyle), but setting up the environment to do everything is very unfun.

    As a natural extension of the whole line of commenting, I'd like to see comments move more from a language feature to a program document feature. For example, if I add a change log entry to a function header, I don't want to just copy the text above and type everything freeform. I want it to be more like I'm adding a response to a message board. The IDE maintains the comments in some internal representation, it prompts me for the requisite information using some kind of unobtrusive form. It automatically identifies things like the date and the user. If my change log is a response to someone else's comment, the comment appears as a thread, etc....

    1. Re:CVS Integration by Darth_Burrito · · Score: 3, Interesting

      Ooh - sorry for responding to myself but I thought up another. It might be nice if there was more security/workflow in a version control system.

      One simple example of security might be something simple like - you do not have permission to edit this file. I bet this can already be accomplished with file system permissions and what have you.

      But what would be even better would be for the environment to support basic workflow style processes. For example, if Bob is the expert on the Data Access Layer, and you make some changes and check them in, Bob should receive a notification with a note from you and perhaps and automagically generated report detailing what interfaces changed. This same kind of tactic has been employed on some wiki's to reduce vandalism. It could also be implemented as an approval process.

      Moving along in that workflow direction, it also might be nice if the development environment was formally aware of the to-do list. In other words, if we bring in more version control functionality, why not add project management integration.

      You might start the day by opening a task. Then you edit several files accomplishing the task. The changes you made in the version control system become associated with the task as do a record of the files that were changed. If someone else needs to see what changes you made for a particular task or bug or project, they can drill down from the top instead of trying to figure out what you did by looking at comments in version control.

    2. Re:CVS Integration by Anonymous Coward · · Score: 0

      you should just hire some gnarly babe who works as a stripper by night so that she can be in your glowing nerdliness running cvs commands by day....

    3. Re:CVS Integration by Monf · · Score: 1
      my favorite cvs integrated environment was textpad with a syntax file for colorizing my code, and most cvs and compile commands added to the Tools menu...

      Worked way cool, and I could even make it pretend it was Brief...

      --
      Pay no attention to that man behind the curtain.
  60. Re:Keep the Best Tools Non-Open Source by basiles · · Score: 1

    Actually, I think that any (even rogue) state has enough power and money to buy (or steal) any software product (either sold or opensource). Of course, some snesitive software are not easily available (like e.g. numerical codes used in weapons) but these are not commercially available (nor opensource) products. So I really think that open-source is really a non-issue for bad nations. I mean that even today, poor nations can do a lot more harm than medium corporations or armies. As a case in point, when the Soviet system (sort of) worked -eg in the 1970s- it was able to produce weapons (even if we know today that their cost and quality has been over-estimated by the US policy). And it did'nt need any opensource software... Also, I would suppose (but I really don't know) that the former Iraqi army did not buy license for every Microsoft systems they have been running :-)

  61. Re:Keep the Best Tools Non-Open Source by Taladar · · Score: 1

    This is more or less the same kind of strategy the RIAA and MPAA employ (as often pointed out here on /.) It might be best for the old dominant companies but the overall growth of the IT market is slowed down by this kind of thinking. Who cares if the new, superior tools come from the US, Europe or China if the overall speed of development is increased from decades to years, from centuries to decades. The scientific community always worked best when all scientists around the globe worked together and not concurrently.

  62. Genetically evolve software? by wittgensteen · · Score: 1
    With a technique known as genetic algorithms it's possible to solve a problem by:
    1. Generating a random set of solutions (the "population")
    2. Creating the next generation by randomly combining the best solutions in the current population
    3. Repeating the previous step until you are happy with the current best solution

    Genetic algorithms have been used to solve a number of problems that would be hard to solve otherwise, problems where it is easy/fast to determine if a solution is any good or not.

    If we combine this with test-first development, where you start writing testcases, then code until they pass, we would end up with a software development methodology where all the developers do is write testcases, then GA will provide a solution where all the tests pass.

    Think about it, we have loads of processing power available so who cares if you have to run your tests every night on a huge system - when you show up in the morning you are likely to have a working solution that passes your tests (until you write more tests, that is).

    Mind you, GA tends to write absolutely horrible code, and most of it by far doesn't even seem to be used at all - which is also the case with DNA, BTW. And for a complex system you need a huge number of testcases. Maybe the issue in the future will be how to automatically write tests?

    </incoherent-rambling>
    1. Re:Genetically evolve software? by ratboy666 · · Score: 2, Funny

      Back in 1981, we were writing a word processor -- dedicated box, 64K (yes K) memory, Zilog Z80 processor.

      Management complained that dev was taking too long... and yes, we were writing in assembler.

      Proposed by co-worker:

      Given that testing is perfect, and programming takes too long, why not start by writing your test cases? Then, generate a one-byte program. If it fails a test case, reject. If it can't complete, tentatively keep, and if all cases are met -- ship it.

      Given the second case, generate another code byte (there are only 256 to go through), and repeat the test process.

      Obviously, the final product will be perfect -- all test cases will work, and (as a bonus), the program will be the optimal size. As another bonus, the company can dispose of all programmers, as these roles would no longer be needed for the developement of new software.

      This document still exists in the archives of the company. I wonder how many people have looked at it in the past twenty years and laughed?

      Plu ca change.

      Ratboy.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    2. Re:Genetically evolve software? by Taladar · · Score: 1

      Even if you have an upper limit of program size of 64k (your memory) and running all testcases would take only 1 second per program to test you would need 2^16777216 seconds to test all possible programs.

    3. Re:Genetically evolve software? by TheClarkey · · Score: 1

      Good in theory, however the representation is going to be really tricky.

      Step 2 is the most important and in practice will be the most costly operation. As you say, simplisticly you're combining the best results of the population and hoping that they combine to give you a "better" solution than the last. You need to ensure that the children that you create doesn't break any rules. For example, you need to ensure you never divide a result by zero, use undeclared variables or break any other laws of whatever language is being used.

      This is also known as Genetic Programming.

  63. Re:Keep the Best Tools Non-Open Source by Anonymous Coward · · Score: 0
    Probably the US is in a different position: dominant corporations (including corporations behaving against laws and ethics, see recent anti-trust cases) - like MicroSoft- are american.

    See Parmalat, TotalFinaELF, Royal Dutch Shell...

    Honestly, this sort of comment displays such complete ignorance it would astonish me how many Europeans spout it so proudly, if I didn't read your newspapers there and see nothing but "Enron...Halliburton...Enron".

  64. I'm a developer; here's my prediction/wish list by crazyphilman · · Score: 2, Interesting

    This is a combination prediction/wish list:

    Microsoft will continue to integrate third-party tools into their Visual Studio suite, demolishing the companies that manufacture them. This will suck for third-party tool builders, but it'll be pretty cool for us developers. Here's what I see them putting in:

    * Expansion of their project templates to include a comprehensive set of patterns for just about anything you might want to do in an enterprise. Got a project coming up? Click an icon and you'll be given a complete set of skeleton code for you to modify. Useful, but dangerous: more productive developers = fewer developers.

    * expansion of modelling tools as the VB guys get more comfortable with object oriented programming. Integration of UML tools with Visual Studio.

    * Expansion of tools that allow managers to directly code business rules using prebuilt code blocks. This is going to be a big deal; everyone's already scrambling to build it.

    * Integration of unit test tools with Visual Studio as Microsoft catches on to the whole test-driven development thing. Right now, you've got to hand-build your tests. Not for long...

    In the JAVA world, I've got a wish list, but I think it's pretty realistic:

    * Sun, under pressure from Microsoft's ease of use, will create a new GUI layer that is simpler than Swing and AWT, works more quickly, and provides 90% of the functionality programmers use the most. Swing and AWT will still be available, of course, but we'll have this easier option and it'll get integrated into IDEs as a project type, making everyone's life easier.

    * Java IDEs will continue to embrace visual development, making life easier on everyone.

    * One thing I think would be nice would be for IDEs to incorporate patterns as templates that you can drop into a project. So, say, if my main GUI is MVC, I can drop an MVC template into my project, and other templates in for specific parts of the backend... Sort of a quickstart, right?

    * And, since Microsoft is going to do it, some of the Java IDEs will too: prebuilt project skeletons for common business needs, and tools to easily build business rules so Managers can handle all the client-meeting shit.

    I know, my predictions are boring as always. I'm not a revolutionary, I'm a code monkey!

    --
    Farewell! It's been a fine buncha years!
    1. Re:I'm a developer; here's my prediction/wish list by CaperNZ · · Score: 2, Interesting
      Here's what I see them putting in...:

      It turns out your 'Predictions'... are infact some of the enhancements being released in Visual Studio 2005 Team Edition.

    2. Re:I'm a developer; here's my prediction/wish list by crazyphilman · · Score: 1

      Really? Then I'll probably get my hands on it next year... Sweet!

      Well, MY night just improved... :)

      --
      Farewell! It's been a fine buncha years!
    3. Re:I'm a developer; here's my prediction/wish list by outcast36 · · Score: 1

      I heard UML was not going to be the data modeling language of choice for VS 2005 Team version. Any slashbots know why? (or that I am just wrong).

      And yeah, pre-baked patterns do sound good.

  65. Has anyone tried SOFTWIRE? by Anonymous Coward · · Score: 0

    I say graphical programming is the future. Take programming out of the realm of nerds into the realm of designers.

    By the way Softwire is free now. No excuse not to try it. Unfortunately for the Linux fanboys it only works with Windows and you need Visual Studio installed.

    Easiest way to program ever.

  66. Left behind-CLI. by Anonymous Coward · · Score: 1, Insightful

    There's one thing no one's mentioning. A good development environment needs a good CLI. Despite all the gooey this, and the gooey that. Text is still the interface used. What's that your typing in? A picture you say? Green screen environments have shown us that one can be productive.

    1. Re:Left behind-CLI. by Taladar · · Score: 1

      I agree. You can do things on a (conceptually) 30 year old Unix commandline that are still practically impossible (to automate) in modern GUIs.

  67. Tools I Need by Anonymous Coward · · Score: 0
    First, I need a tool to decrypt DVD-Audio.

    Next, I need a tool large enough to distract from my nerdly geekiness.

    Next, well, really, I could just use a larger tool...

    Does that make me gay?

  68. Well for one... by darthscsi · · Score: 1

    "What are the sofware tools of the future going to be?"

    I suspect a tool that corrects spelling mistakes will prove to be a useful "sofware" tool.

  69. Patent Law by Anonymous Coward · · Score: 0

    I'm sure any new tool will need a substantial retail price to cover the cost of paying the licence fees for 236,542,876 various patents.

  70. Poor tools, No credibility. Re:dubious by jageryager · · Score: 2, Informative

    I've spent the last two years in a OOD project with a team of 5 - 15 SW Engineers. I can't speak for the Rational XDE tools, or Rose RT, but Rational Rose really really sucks bad. It's the kind of tool that will make you claw your eyes out.

    Any company that can sell a tool like this and claim to be in the buisness of "improving" your software process and productivity has absolutely no credibility with me.

    Rose has Modal, non-resizable, dialog boxes that display paths. If the path doesn't fit in the box it is truncated. You can't resize the box. So.. You can't see the end of the path.. ( Error could not write to /some/really/long/pa, really helpful.)

    Rose has modal, non-resizable, scrolling boxes. With these it is at least possible to see the path if you need too. But you'll still go mad as the box is only big enough to hold about three 30 character lines. Of course I'm looking through a list of 200 files, and all the paths are 100 characters long.

    Rose has sequence diagrams that forget their sequence, and can't be rebuilt.

    Rose has a bug that makes it just go insane if a version 0 of a file gets created in UCM/Clear case. And it can't tell that it has gone insane.

    Rose can't keep track of files that have changed underneath it. It has a bad habit of hijacking files and not telling you.

    Rose has no good way to merge many parts of models.

    Rose has a bad habit of "disappearing" modeled objects during a reverse engineer step, and not telling you. If you accidently screw up a path to a file, and reverse engineer, your modeled object will disappear. And all of the other artifacts that depend on it will get corrupted. And god help you if you check everything back in that way.

    I'll take my coffee black. I'll take tcsh and vi as my integrated development environment and OOD tool over Rose any day of the week.

    Kevin

    --
    "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety"-B.Franklin
  71. yes, that will happen... by geg81 · · Score: 1

    People will develop software like that right after we get world peace, have completely switched to renewable energy, and everybody exercises for 1h and flosses and brushes three times a day.

    1. Re:yes, that will happen... by Taladar · · Score: 1

      Unfortunately for creating world peace we must somehow get rid of all the people (marketing, managers,...) that want these tools more than everyone else so when they finally arrive nobody is left that needs them.

  72. abstraction good, tools bad by geg81 · · Score: 1

    Increasing abstraction is necessarily the way of things.

    Better languages give you increasing abstraction, which is a good thing. But tools don't really give you increasing abstraction, they just try to hide complexity.

    The next wave is the ides that make the repetitive coding unnecessary.

    That has also been the previous wave and the wave before that. In all those waves, people tried to get by with tools, but eventually they realized, they had to move to new languages. It's going to be the same this time around.

    1. Re:abstraction good, tools bad by m50d · · Score: 1

      Huh? I don't know about you, but when I moved from machine language to assembler, I used a *tool* called an assembler, and when I moved to C I used a *tool* called a compiler. Tools are what make languages possible, and IDE templates are just as much a language as c++ is.

      --
      I am trolling
    2. Re:abstraction good, tools bad by Anonymous Coward · · Score: 0

      I think even a half-wit should be able to figure out from context that I said "tools", I was referring to "tools other than compilers", even if his personal definition of "tool" includes "compiler".

    3. Re:abstraction good, tools bad by m50d · · Score: 1

      Well, fine then, but my point still stands. Why is it that using a compiler is ok but using an ide to generate code is not?

      --
      I am trolling
  73. Re:I've already seen one post dissing code generat by dubl-u · · Score: 2, Insightful

    Many of the newer code generation tools are very flexible and have some ability to preserve changes to the code; making them easier to fit into real development cycles.

    The way I look at it, there's only one good kind of code generator: the kind whose output I almost never look at and never, ever tweak. Compilers, for example, are a kind of code generator that I love.

    The other kind of code generator strikes me as just half implemented. Somebody has come up with some sort of interesting abstraction, but they haven't pushed it as far as a service, library, or compiler that you can use happily. These days I never use them.

    What's the difference? Maintenance cost. A code generator produces a lot of code that is, pretty much by definition uninteresting. That means that you've hidden the actual interesting code in a whole mess of boring code, which makes it really expensive to maintain. And generally the generated code is highly duplicative, meaning if you want to change certain things, you have to change them in a lot of places.

    To me, it seems like code generators dramatically worsen the cost-of-change curve. For any project where you aren't already planning to throw out the code, this strikes me as a mistake.

  74. RoseRT (a.k.a. Rose Technical developer) is Ok by Anonymous Coward · · Score: 1, Insightful

    I actually work with RoseRT on a daily basis and it is the only member of the Rose family that does not suck. Most important reason: complete code generation from model, and model based debugging.

    Once you've gone through the learning curve, you become very productive. Mind you, there are always shortcomings. Parallel development and subsequent merges can be a pain because merging is not as visual (e.g model based) an experience as normal development.

    Still, the whole package is actually very good. Must have something to do with the fact that Rational bought it (it was first called ObjecTime) instead of creating it from the ground up. Most of their other tools are a nightmare to work with. Ah well, every litter needs a price puppy.

  75. Re:Keep the Best Tools Non-Open Source by Anonymous Coward · · Score: 0

    And how is this not a completely xenophobic, nay racist comment?

  76. Source DB? by Doc+Ruby · · Score: 4, Interesting

    How about a SQL DB of source code, particularly C/C++? Just tokenized code, not the text of the source. SELECTing code by block inserts whitespace and comments according to user preferences. The compiler SELECTs code for generation, INSERTing large binary objects into other tables, including executables. Configuration options fill other tables. Scope is per block across the entire project, rather than the ancient file scoping paradigm. The entire filesystem granularity of C/C++ is a straitjacket.

    Just the whitespace options would make it worthwhile for me. Then there's concurrency of team access, backups, distributed repositories, versioning, redundancy optimization, and all kinds of other better interfaces for the rest of our toolchain. That's the kind of bionic source infrastructure I'd like to see in my future.

    --

    --
    make install -not war

    1. Re:Source DB? by Anonymous Coward · · Score: 0

      I think that that is an interesting Idea. But I think it would be to expansive to impliment. It would be neat to say maybe

      call (function X,1=3)
      say add a + b, then set a equal to fx output
      call (function y, 10)
      y could be a loop fx, Looped 10 times

      that would be quick & resonable, but probably restrictive in the end...

      hmm.. I will ponder this one...

    2. Re:Source DB? by Doc+Ruby · · Score: 1

      I'm intrigued by what you describe (though I don't get it). It doesn't look like what I was describing, though. I'm not inventing any new syntax, or changing C or C++. I just want the source to be stored in a structured database, according to the structure of the parsed code: blocks, labels, arguments, lists, assignments, operators, return values. Just to increase the operations I can perform on the code, like generate call graphs, change '{'/'}' indentation/newline (whitespace) style, writelock lines and blocks, transactional un/redo and diffs, that kind of thing. The language doesn't change, not one bit. Just the storage and access, which opens a new interface to code manipulation, structured on syntax.

      --

      --
      make install -not war

  77. An 8 year old Vietnamese girl by gelfling · · Score: 0, Troll

    The tool of the future will be some child chained to her desk churning out shitty code for 80 cents a day.

    Get over yourselves, slackers.

  78. The conservation of complexity by tootlemonde · · Score: 1

    Tools that are simple to use are complicated to develop and enhance.

    The simpler the tools are to use, the more complex the projects are that they are used to create.

    In addition, simple tools become more complex over time as new features are added and they are used to solve more complex problems. Whole sub-systems are reduced to a tool, which makes the resulting systems simpler at the expense of more complex development tools.

    I don't see any way to avoid complexity. It just gets moved to a different level where different developers have to deal with it.

    The future of software tools could be an endless cycle of moving complexity from systems to development tools and then back again to systems.

    1. Re:The conservation of complexity by Taladar · · Score: 1

      But the question is wether these complexity-reducing mechanisms should be built into the language (like modern scripting languages) or use the language (like IDE features).

  79. Re:I've already seen one post dissing code generat by Jack+William+Bell · · Score: 1

    I think you missed my point: Code generators have improved so that the cost-of-change has gone down! At one time they were really only good for getting started by spitting out piles of repetitive, uninteresting code; afterwards you might tweak the generated code or have to change it for a bug fix, so you didn't want to regenerate. This is no longer entirely the case.

    Check out some of the links here. Especially CodeWorker.

    Mind you I am not entirely a fan of code generators myself, having been forced to use bad ones in the past. But they are good fits for certain kinds of problems, they really have improved recently and I was simply trying to answer the original question in the parent article in a meaningful way. I really do think they are going to be hot in the developer space soon. Unfortunately I expect a lot of PHBs are going to jump on the bandwagon and want us to use code generators in spaces where they aren't a good fit. For example, using a code generator in a case where a nice clean library is more suitable.

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  80. MOD AS TROLL AND IGNORE by Zen+Punk · · Score: 0, Troll

    Come on guys, don't respond to this troll. Look around, this has been posted in various forms to many topics here, including space weapons, bio-engineering, etc.

    --
    Sleep is futile.
  81. don't do a spell check on code by Anonymous Coward · · Score: 0

    Because if it ain't spelled right you can't compile it. . .

    DAHH

    Oh, I shouldn't use words like 'dahh' or "ain't"
    because you might not be able to understand me.

    DAHh

  82. Re:attractive to middle management- otherwise suck by frankvl · · Score: 1

    It's a matter of time, but programming will eventually be easy enough to be done by the users themselves.

    The programmer job of today is comparable to that of a typewriter in the early days. Those who don't embrace alternatives are just being naive.

  83. You just don't know the right idioms` by Anonymous Coward · · Score: 0

    I have crafted highly dynamic control systems in both C and C++ complete with animated graphical user interfaces.

    These interfaces controlled real robots which are now used world-wide to do industrial production in the ******** industry. The machines sell for something like $30,000 each.

    I would never have been able to do this real-time control in lisp or your other meta-languages.

    You don't know what you are talking about.

    It depends on the real-world application as to what language to use.

    Why do people use C for real-time control:
    Becase it works!

    If you don't know how to do dynamic control in C or C++, how could you ever hope to pull it off in any language?

    1. Re:You just don't know the right idioms` by OmniVector · · Score: 1

      if you think c is as dynamic as ruby, you've been living under a rock.
      c cannot do this:
      var = 5
      puts var.to_s
      var = "foo"
      puts var.to_s

      C cannot do this:
      block5 = proc do |x|
      x + 5
      end
      block3 = proc do |x|
      x + 3
      end

      blocks = [ block3, block5 ]
      blocks.each do |block|
      puts block.call( 1 )
      end

      without lots of type hacking and without nearly as much brevity. C is powerful, yes. but it does not have dynamic typing, it is not garbage collected, it does not have OOP capabilities, it does not have lambda blocks, and it does not have dynamic expandable arrays built in. there's a lot to be said about a language that handles all this crap for you without having to resort to non standard libraries, or without having to redo it yourself. crap i haven't even mentioned call with continuation, regex, and built in ftp and http servers and clients, and the huge amount of other things ruby has out of the box that C still doesn't have in the standard libraries. i can't even make a simple expandable array in C without resorting to glib or writing it myself.

      --
      - tristan
  84. The Price of Progress by handy_vandal · · Score: 1

    It's just like my father, who mourns the loss of cars with engines so simple and transparent in function that normal people could repair them. For cars, that time has past, and software is going that way, too.

    Years ago -- okay, millenia ago -- any primate with an ounce of neocortex could re-engineer a lion femur into a very serviceable melee weapon.

    To this day, any primate with an ounce of neocortex can make his own club. But just try to make a tactical nuclear weapon! For that, you need an entire army of primates -- and they'd better have more than an ounce of neocortex.

    -kgj

    --
    -kgj
    1. Re:The Price of Progress by stridebird · · Score: 1
      But just try to make a tactical nuclear weapon! For that, you need an entire army of primates

      Not 'make'...'develop'. But this has already been done. Once humanity has blazed the trail to a new technology, there is a route, if you like, left behind making it much easier for others to follow. Tactical nuclear weapons _could_ be constructed by a lone person using the knowledge already accumulated and available to our species - and lots of ingenuity. Modern car engines are _not_ beyond the technical comprehension of a single human, however the trend is that it is becoming harder to understand its function by simple observation. So, you may need to construct an interface to onboard electronics and learn the data structure to home repair your vehicle, but then again, there's already paths available here too http://www.focushacks.com/index.php?modid=14 | http://www.easesim.com/J2534/ | http://www.aa1car.com/library/2004/us10430.htm etc etc etc. If you fail to appreciate that the technology has changed and you approach the job expecting it to be auto mechanics circa 1973 for ever, you are going to be confuseded by the dense, wireclad, evolved plastic thing in the front of your car these days. (I don't mean you as in parent poster, I should rewrite that in some bland third person style.)

      Not everyone can do this...but that's why you're here, right?

      TFF ctl + / ctl - i couldn't slash without you

  85. Theorem proving software and Godel by fuzzy12345 · · Score: 1
    From the article: "Suppose there is a major design flaw in the software managing the anti-lock brakes on a popular model of car that results in injury of a number of people. How does the manufacturer of the braking system prove that it was not negilgent in the design and implementation of that software?"

    Obviously, new software tools are going to have to embody twisty little logic traps and lawyer skills.

    --

    Everybody's a libertarian 'till their neighbour's becomes a crack house.
  86. Re:Keep the Best Tools Non-Open Source by Performaman · · Score: 0

    Now, how many times have you seen someone tortured with the source code from EMACS? Just the source code- I know it's happened with the binary.
    Also, if the Chinese can build a nuclear weapon, don't you think they could write a decompiler?

    --

    I have gas, but my car uses petrol.
  87. The CASE tools of the future are here today... by bADlOGIN · · Score: 1
    Not only are these CASE* tools $1.14 per pack, but you do actually own them! Anyone who has given up the notion that you can sacraficing working, tested, iterative software for pounds of system design documents will tell you that these babys are great. When combined with advanced concepts like talking to your damn customers as various agile development practices advocate (like Scrum and XP), you can deliver great software.

    Seriously folks, there is nothing to see here. Move along and don't take the free koolaid. Of the things this guy says that are correct (points 1,2, and 4) are addressed with changing your process, not your tools. Points (3 and 5) are just attempts to sell you a glass hammer (it's like the infamous "golden hammer", but breaks when you try to use it). Better programming models have been promised for over 30 years, and pay-as-you-go is just forcing you to behave the way some vendor wants you to. In this case, "some vendor" is IBM.

    *CASE: Celluloid Assisted Software Engineering

    --
    *** Sigs are a stupid waste of bandwidth.
  88. Re:you will always need software engineers. by SlySpy007 · · Score: 1
    I usually don't reply to mindless anonymous trolls like yourself, but let's make one thing clear -- I have no affiliation to Semantic Designs whatsoever. I have used their tools and found them to be superior to anything else up to now. So unless you have some fact which I'm unaware of (if you did, it would be a bald-faced lie anyways), don't make baseless accusations to prove a tenous point. Next, let me respond to your brilliant question with another, equally brilliant question: do *you* even know what the tools I'm talking about do? Something tells me no. Could you describe the steps of a bottom-up tree transformation? Do you know how a compiler works? Or do you just think of it as 'that thing you use to make your code run'?

    And I'm sorry that I'm not a purist like you, but if you'd like to write a few 100 KSLOC to control a commercial airliner, then have to test it and prove to some folks (who I'm assuming will be a lot smarter than you) that it's stable, then be my guest.

    How is it that you are a 'real engineer'? Because you continue to do things despite the fact that they don't work? That sounds like a George Bush engineer to me. There's nothing more amusing that someone who chooses to defend themself with absolutely no backing to their argument, just mindless rants.

    Also, you made the worst mistake possible in this topic: software engineers are *not* programmers. Yes, they program occasionally, but that is not and should not be their only activity. Any joe with half a brain can attend a trade school for 6 weeks and become a programmer -- it takes someone with some intelligence to look past the code, something I see you are incapable of doing. But I'd advise you to continue to think as you do -- maybe that's why you're out of a job.

    And lastly, you missed the entire point of the post by thinking this was about kicking programmers out of a job -- it's about making smarter, more effective programmers who produce better code through the utilization of tools rooted in sound formal methodologies.

    Hopefully you think my reply is as pointless as yours was. It's like the old saying, garbage in garbage out.

  89. Still trying to replace the programmer by Brandybuck · · Score: 4, Insightful

    I see they're still trying to replace the programmer after thirty years. This is nothing new folks. Let me explain the situation. The people running businesses hate programmers. Maybe it's because we have real degrees instead of MBAs, or maybe it's just because we didn't join the right fraternities. But they just don't like us. So they keep trying to come up with ways to fire all the programmers.

    It all started with Cobol, the language that didn't need a degree to use. In more modern times it was Visual Basic, the language that even monkeys could use. You've got entire programming environments where all you do is drag and drop stuff around the screen. Rational [sic] salesmen claim you can generate your entire application from UML.

    For some generic "fill in the blank" type applications, they're correct. For maybe half (wild ass guess) of applications out there all you need is to wire a form into a database. But what about the other half of applications? And what about the remaining 90% of software that is NOT an application?

    At the core of Google is a Damned Big(tm) database, but does anyone in their right mind think Google could ever have gotten off the ground without real programmers writing real code in a real language? Or what about the Linux kernel? Does anyone think it could have been created with a CASE tool? Is there anything in GNOME, KDE or Mozilla that could have been automatically generated from UML? Would you feel safe driving a car which had an ignition system written in Visual Basic?

    Programmers aren't goin to go away, no matter how advanced the tools become. They'll make the programmers' jobs easier, but they won't replace them.

    --
    Don't blame me, I didn't vote for either of them!
    1. Re:Still trying to replace the programmer by a24061 · · Score: 1
      In more modern times it was Visual Basic, the language that even monkeys could use. You've got entire programming environments where all you do is drag and drop stuff around the screen.

      That's the truth! If you're not typing, you're not programming.

    2. Re:Still trying to replace the programmer by einar2 · · Score: 1

      The counter example I am always using when discussing with the methodologist in my office: UML me an application that calculates the average of a set of numbers.

      Yes you can model the application in UML and do a lot of the conceptual work. At the end, you have to code the business logic. There is no way around it. If you could express the business logic in UML (or any other modelling language), UML would look as "complicated" as code.

    3. Re:Still trying to replace the programmer by Brandybuck · · Score: 1

      Very true. UML is a nice tool, but it's just a tool. It will give you the external shape of the program, and maybe some glimpses into the inner workings, but it's as far removed from coding as the ToC is from the contents of a book. It's a great organizational tool, but that's the extent of it.

      --
      Don't blame me, I didn't vote for either of them!
    4. Re:Still trying to replace the programmer by Teancum · · Score: 1

      I've got to challenge that statement. I have told my wife and co-workers often that when I am pounding on a keyboard or even moving a mouse around that I am not programming then.

      You are only "programming" when you are throwing the nerf basketball or thrashing a whiteboard out with the latest concepts of what you think the design ought to be like. In other words, when you are giving formal instructions to a computer you have (or should have) the design already worked out and at that point you are simply trying to transfer the model of what you think the software should be like into the computer.

      GUI designs, and even just plain User Interface issues can sometimes bog a project down, but with a good form designer like most decent GUI compilers offer nowdays, this at most takes up 5% of all of my development time. 50% of my development time is pounding the wall with a baseball, bowling, playing golf, or even downing a few beers. It is trying to make the concepts fit, and far too often that is occuring for me when I'm at home with my wife and kids....time supposedly "off the clock" from the employer.

      The problem is that most non-engineering types (accountants, salesmen, CEOs, and unfortunately too many engineering managers) think that if you aren't pounding on the keyboard and writing the next KLOC (thousand lines of code), then you havn't been productive. Sometimes I will spend an entire 10-hour work day writing just three lines of code, especially if it is to do a bug fix. The trick is to know what exact three lines of code you need to write, and where it will do the least damage to the rest of the software. Try to explain that to a CEO, and no wonder they think programmers are just wasting their money.

      Still, I've got to admit that your statement about "Real programmers only type" (paraphrased and redone) does ring some truth. Of course, I could also get ugly and suggest that only real programmers know how to program a CPU using toggle switches loading instructions into CPU registers by hand...who needs such newfangled pieces of junk like a keyboard anyway?

    5. Re:Still trying to replace the programmer by a24061 · · Score: 1
      I agree that ll that other stuff (thinking "off-line", reading, etc.) is an important part of programming. I should have said If you don't end up typing, you're not programming.

      BTW, I don't disparage graphic design and related work---only the Visual Basic nonsense.

  90. Seven by dbIII · · Score: 1
    vii will be out.

    And the upcoming version of emacs, emacs-u-later.

  91. MOD PARENT DOWN! by Anonymous Coward · · Score: 0
    The grandparent post is not a troll. The post is informative and has a useful link.

    On the other hand, your post is a troll. It is just a whiny complaint that contributes nothing to this discussion. Moderators, please downgrade the parent post!

  92. Re:I've already seen one post dissing code generat by Anonymous Coward · · Score: 2, Interesting

    If you hear that all the time, aren't you kind of curious what all these people are talking about??

    Here's a site I use to manage big important projects, written entirely in Ruby by ONE PROGRAMMER in about a month: http://www.basecamphq.com/

    The whole site is something like 4000 lines of code. I've seen XML configs for Java ORM layers longer than that!

    Here's the programmer's blog: http://www.loudthinking.com/ .. the framework he wrote is open source.

    Search around for the comments from many Java programmers who have taken a look and realized they've been wasting their life.

    Numbers don't really mean anything. If I can work more effectively in a programming language that nobody else uses, I will. It doesn't hurt that Ruby is very easy to read and learn and is becoming more popular by the day (I believe Gentoo.org is dropping AxKit in favor of a 100-line Ruby program to render their web site's XML).

    But "numbers" aren't a valid argument. PHP is extremely popular, but only because so many *inexperienced programmers* use it. It's a rotten language.

    I would say 50% of my work is in Ruby, the rest in more boring languages. If the client doesn't care, I use Ruby and I finish most things in a few *days*. I don't know what "important" means, but I have Ruby code running that medium-sized business *depend* on. I bet in 5 years, you'll see Ruby in the big companies too. Amazon.com has asked some Rubyists to come over and give presentations, for instance.

    Again, if you have to use a code generator rather than just writing everything in one language, you're doing more work, and more *complex* work than I am. You like doing less work, right?

    Do yourself a favor, learn a little about these other languages and decide for yourself.

  93. You're not doing it right by Anonymous Coward · · Score: 0
    What's the difference? Maintenance cost. A code generator produces a lot of code that is, pretty much by definition uninteresting. That means that you've hidden the actual interesting code in a whole mess of boring code, which makes it really expensive to maintain. And generally the generated code is highly duplicative, meaning if you want to change certain things, you have to change them in a lot of places.

    To me, it seems like code generators dramatically worsen the cost-of-change curve. For any project where you aren't already planning to throw out the code, this strikes me as a mistake.

    Why isn't the generator part of your build cycle?

    Why isn't the generated code factored out of your application such that the interesting code and generated code are separate?

  94. Re:I've already seen one post dissing code generat by Jack+William+Bell · · Score: 1
    [SNIP long discussion of why Ruby is so cool] Quote: "Do yourself a favor, learn a little about these other languages and decide for yourself."
    Are willing to pay me to learn [insert your favorite language here]? I spent a lot of time learning Python (currently my favorite language) and have never been paid a cent to write a line of it. I would gladly learn another language if it meant a good job would come of it.

    I mentioned in another reply on this thread that I live in the real world. And the sad thing is, here in the real world we get paid money to write code in languages other than [insert your favorite language here]. Hell, I even spent six years in the COBOL mines. By my own count I have programmed in upwards of twenty different languages for pay; and every single one of them sucked for one reason or another! I have to put bread on my table and support my family, so I did what I had to do, despite what my heart told me.

    Here in the real world we often must do things like that. I envy those who have more choices. But I've only so much mind share and I need to spend it where it will return the most value in terms of dollars per hour, not personal satisfaction.

    And if it was about personal satisfaction I would be nattering on at length about this programming language I have spend fifteen years designing and everyone should be using instead of [insert your favorite language here]. Sadly all I have to show for that wasted time is piles of yellow pads full of notes and about five thousand lines of partially working code...

    P.S. Get a /. account and post with your real name. If your opinions are as sound as you feel they are, you shouldn't be shy about connecting your identity to them.

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
  95. Underwear Gnome Economics 101! by Anonymous Coward · · Score: 0

    I once made a certificate for a colleague who went through "UGE Training."

    -dw

  96. Oh, please. Buzzword overload. by Animats · · Score: 2, Insightful
    From the article:
    • The importance of understanding the business context for IT investment has never been more obvious than it is today. More organizations are recognizing the role of IT as a determining factor in the efficiency of their operations, and a bottleneck in their ability to innovate. I am spending a lot of time with customers who want to explore business alternatives, drive IT projects more directly from business needs with well established business goals and ROI, choreograph services to realize their business processes, and monitor those services in execution to relate operations to the needs of the business. Support for that flow (in its myriad variations) is essential. As we use the current generation of tools in this context we are seeing the emergence of new roles, usage scenarios, and support needs. The lessons from this work are leading to a complete refactoring of tooling capabilities.
    Let's try that again, in a different context.
    • The importance of understanding the business context for office furnishing investment has never been more obvious than it is today. More organizations are recognizing the role of office furnishings as a determining factor in the efficiency of their operations, and a bottleneck in their ability to innovate. I am spending a lot of time with customers who want to explore business alternatives, drive office furnishing projects more directly from business needs with well established business goals and ROI, choreograph services to realize their business processes, and monitor those services in execution to relate operations to the needs of the business. Support for that flow (in its myriad variations) is essential. As we use the current generation of tools in this context we are seeing the emergence of new roles, usage scenarios, and support needs. The lessons from this work are leading to a complete refactoring of tooling capabilities.
    See? It's a totally generic statement.
  97. spatial code browsing? by Anonymous Coward · · Score: 0

    can you elaborate what you mean by spatial code browsing?

  98. Perhaps a pre-requisite is needed before ... by 3seas · · Score: 0

    ....getting better tools?

    That being a better and common understanding of abstraction physics. Where like with physical reality we gain more control the better we understand the physical physics, we will have more control in understanding abstraction physics better...

    Physics of Abstraction (abstraction physics)

    Abstraction enters the picture of computing with the representation of physical transistor switch positions of ON '1' and OFF '0' or what we call "Binary" notation. However, computers have far more transistor switches in them than we can keep up with in such a low level or first order abstract manner, so we create higher level abstractions in order to increase our productivity in programming computers. From Machine language to application interfaces that allow users to define some sequence of action into a word or button press (ie. record and playback macro) so to automate a task, we are working with abstractions that ultimately accesses the hardware transistor switches which in turn output to, or control some physical world hardware.

    Programming is the act of automating some level of complexity, usually made up of simpler complexities, but done so in order to allow the user to use and reuse the complexity through a simplified interface. And this is a recursive act, building upon abstractions others have created that even our own created abstractions/automations might be used by another to further create more complex automations. In general, if we didn't build upon what those before us have done, we then would not advance at all, but rather be like any other mammal incapable of anything more than, at best, first level abstraction. But we are more, and as such have the natural human right and duty to advance in such a manner.

    There is an identifiable and definable "physics of abstraction" (abstraction physics), an identification of what is required in order to make and use abstractions. Abstraction Physics is not exclusive to computing but constantly in use by ... well... us humans. Elements or facets of abstraction physics include the actions of abstraction creation and use, such as defining a word to mean a more complex definition (word = definition, function-name = actions to take, etc.), Starting and Stopping (interfacing with) of an abstraction definition sequence, keeping track of where you are in the progress of abstraction sequence usage (moving from one abstraction to another), defining and changing "input from" direction, defining and changing "output to" direction, getting input to process (using variables or place holders to carry values), sequencially stepping thru abstraction/automation details (inherently includes optionally sending output), looking up the meaning of a word or symbol (abstraction) so to act upon or with it, identifing an abstraction or real item value so to act upon it, and putting constraints upon your abstraction lookups and identifications (when you look up a word in a dictionary you don't start at the beginning of the dictionary, but begin with the section that starts with the first letter then followed by the second, etc., and when you open a box with many items to stock, you identify each so as to know where to put it in stock.)

    Abstraction Physics has yet to be established/recognized in a broad "common acceptance" manner, similiar to the difficulty in the acceptance of the hindu-arabic decimal system (which included the concept that nothing can have value - re: the Zero place holder). It took three hundred years (from inception) for the innovation of the now common decimal system to overcome the far more limited Roman Numeral system. (NOTE: mathmatics and the symbol sets used are also abstractions and therefor a subset of abstraction possibilities and certainly an application of abstraction physics.) Though the act of programming is still younger than many who apply it, we are technologically moving at a much faster rate of incorporating innovations and better understandings of reality. There is a physics to ab

  99. Roll your own! by RoboProg · · Score: 1

    Dismiss? No way. However, I would recommend that perhaps people learn to create their own simple code generators for various needs.

    One of my personal favorites is to translate tables in a document, such as HTML, into language X for use by a table driven processing engine. Another is to whip up record structures / objects + attributes.

    Your mileage may vary. Eliminate redundancies, you have better uses for your time.

    --
    Yow! I'm supposed to have a plan?
  100. Comment scope? by RoboProg · · Score: 1

    The focus on comments over blocks of code seems to tie into Donald Knuth's "Literate Programming" where you write the documentation first, then embed the code, in any order you want. The build process then extracts the code in a working order / set of files and off you go to the compiler.

    Not that I've ever been in an environment that used such a thing, but it sounds very interesting.

    --
    Yow! I'm supposed to have a plan?
  101. Re:I've already seen one post dissing code generat by Anonymous Coward · · Score: 0

    I think DSLs are a better option.

  102. visual abstraction, realtime design, time savings by t2048 · · Score: 1

    As a hobbyist who enjoys programming, my interests are heavily biased towards "innovations" that make programming itself more interesting / enjoyable / satisfying, and less boring / mundane / repetitive. So, I especially like the visual/modular programming interfaces found in Max/MSP, Reaktor, Reason, and also in the software I'm currently writing called "Salvation" (http://www.slvtn.com) .

  103. Just some general comments by warrax_666 · · Score: 1
    And I know there's Camlp4 and MetaOCaml, but they're really too kludgy for my taste, though still better than the insanity that is C++ template metaprogramming. (Ick!)

    I guess there's no accounting for personal taste, but IMHO MetaOCaml doesn't seem too bad (and I agree that it's much much better than C++ templates :)). I do wish they'd try to stabilize and incorporate some of that stuff into the INRIA Ocaml distribution so that people could actually start using it.

    [Stuff about lackluster optimization]

    I believe someone has been working towards an LLVM backend for OCaml, which might end up providing better performance and optimization opportunities (since LLVM can also take into account run-time profiling info).

    [Stuff about COCaml interface]

    I kind of agree that this bit could be better, but for simple interface you can almost always use camlidl to great effect. For complex interfaces, I usually find that camlidl becomes more of a hinderance than help, and I almost invariably end up implementing the C stubs manually. YMMV.
    --
    HAND.
  104. Placing the burden on the programmer by wtrmute · · Score: 1

    Regardless, in a fixed-layout system, the burden is on the programmer to take large fonts and other accessibility options into consideration. In a dynamic layout editor, these considerations are naturally handled by the code.

    It's just like OO. There's nothing you can do with objects that you can't do with ordinary functional or even unstructured programming; you have to be a lot more careful, though.

    1. Re:Placing the burden on the programmer by ClosedSource · · Score: 1

      True, but there's still a trade-off between consistency and flexibility here. I don't see that sort of trade between OO and procedural languages.

    2. Re:Placing the burden on the programmer by wtrmute · · Score: 1

      It does exist, though: object orientation is just like procedural programming except that we limit calling through class boundaries; this means that procedural languages get more flexibility than Object-oriented ones. That, and true OO languages hold a lot of runtime information about datatypes which are rarely used and just take up memory, most of the time. With a procedural language, if you have need of a specific RTI, you create a struct that provides it and instantiate it strictly when necessary. Isn't it easier just letting the runtime library deal with this for you? It might, but it's something to think about when you are deciding which way to go.

    3. Re:Placing the burden on the programmer by ClosedSource · · Score: 1

      Yes, I understand there are trade-offs between OO languages and procedural ones. I just don't think it's the same kind as fixed layouts vs. dynamic ones.

      The choice of OO vs. procedural doesn't really affect the user experience, it's just an internal design detail. There may be cases where response time is different but that time is often too short for a human to detect and where it's longer, it can often by optimized away.

  105. And it all depends ... by pete29 · · Score: 2, Insightful
    There is a difference, between "the tools that are going to be developed" and "the tools that should be developed from a rational point of view".

    A developer is basically somebody, that closes the semantic gap between the idea as it is presend in the human mind thinks and the code that has to be interpreted by the machine. A good tool is a tool, the reduces the burden of this process, so that more complex ideas can be realized.

    Of course, not everybody has yet understood this simple fact, e.g. I frequently call him Linus "writing kernel code should not be simple" Torvalds in casual Linux design problem discussions.

    But yet more problematic is the fact, that we have not really (yet?) understood, how the process works. Do you know how a program to be is initialially represented in your mind, before you start decomposing it into modules and even smaller parts drawing from learned knowledge and books which algorithms to apply and which techniques to use? I surely don't ... the same way I do not actually know, how my brain composes a series of strange markings on a surface in to legible text.

    Yes, neuro-psychology has made progress in understanding the inner workings of the human brain, but they are far from knowing how it really works.

    But the worst part: Software designers and exspecially programmers have a long history of ignoring scientific progress, not only in their own area of expertise, but even more concerning other sciences.

    All of the discoveries in natural language programm have been deliberatly ignored by newer languages such as C#. And languages like PHP and Perl are even inconsistent from a pure computer scientists point of view.

    There are things, I would like to see:

    • easy design of self-learning user-interfaces
    • real natural language programming
    • globalized object stores
    • ...
    but most of these things are just not going to happen.

    Either because somebody is to traditionalist about something or simply because clean, simple, standardized interfaces are definitely not what you get with such a heavily divers and varying area like current in-the-field programming.

  106. Re:Linda and its relatives. by Anonymous Coward · · Score: 0

    If you look closer at Linda you will have a deeper understanding of it. In its basic form it doesn't have triggers and there is no way to search the tuple space without removing (and reinserting) all the tuples until you find the right one.

    The tuple space comes from above. Great assumption. Bah.

  107. Software Tools of the Future by jandersen · · Score: 1

    Simple:

    1. vi
    2. C

  108. KDevelop by Anonymous Coward · · Score: 0

    You guys should really check out KDevelop 3, and learn how to use it.

  109. Just wondering... by warrax_666 · · Score: 1
    requires whitespace for syntax (literally the worst syntax idea i've ever heard, which is why i avoid that language like the plague)

    I always wonder why people think it's such a bad idea, since the syntaxes of almost all current languages require indentation/whitespace to be readable anyway... Just stay away from tabs (or alternatively stay away from stupid editors that treat tabs as anything other than aligned on 8-char columns) and you'll be fine.
    --
    HAND.
    1. Re:Just wondering... by OmniVector · · Score: 1

      so what if you want to copy/paste a block of python code? what's that? you use 3 spaces and i use 4 spaces? oops. you use tabs and i use spaces? oops.

      ruby is the perfect solution really. most blocks can use either { } or do end. it's a simple solution for those who don't like verbosity. block delimeters exist for a reason, and it's a fairly tried and true structure at this point. python is a good language overall, but it still has problems in my opinion.

      --
      - tristan
  110. Early type checking versus late type checking by 2901 · · Score: 1
    Vs. lisp
    Type checking...

    I'm curious as to what Tyler has in mind, since Common Lisp is a strongly typed language.

    Perhaps his concern is that Lisp does its type checking at run time, rather than compile time. There are two aspects to this. Some compilers, notability CMUCL, make good use of the optional declarations to do type checking at compile time and produce fast code. More importantly, the actual issue is not compile-time versus run-time, but early versus late

    You always want early type checking. If your development cycle runs: edit, compile, edit, compile, run, edit,.... then you want compile time type checking. If your development cycle runs: edit, run, edit, run, compile, run,... then you want run time type checking.

    Even if the software is designed top down, a Lisp programmer would code in a bottom up, test as you go, style. One window has the program source, another has the Read-Eval-Print-Loop. Immediately a function is written, it is sent to REPL and tested interpretively. Once the code is correct, it is compiled, to get full speed, and work moves to the next stage: achieving performance goals.

    Thus Lisp has early type checking, and that is what is important, not whether it is compile-time or run time.

    1. Re:Early type checking versus late type checking by Tyler+Eaves · · Score: 1

      My workflow in O'Caml is quite similar. Using tuareg-mode in emacs, I have two windows open, one is an ocaml toplevel (A repl, basically) and the other is my sourcefile. I can easily evaluate anything from the source file in the toplevel.

      --
      TODO: Something witty here...
  111. Re:attractive to middle management- otherwise suck by Taladar · · Score: 1

    See, this is a common mistake. For thirty years or so now people say, tomorrow users will be able to program themselves, but instead the programming tasks just get more complex.

    Users doing ALL the programming (even the programming of the programming environments/languages) won't happen before real AI is developed which IMHO is scheduled for "never" (or at least not in this century).

  112. The real reason for code generation by Latent+Heat · · Score: 1
    You have a good point about why you can't run directly from the modeling environment. I have always kind of wondered about code generation (I call that feature "code wizards" after its -over- use in Visual Studio), but couldn't quite express what I thought was wrong with it.

    I think the answer is that a modeling environment which can "run" the model becomes its own computer programming language, and people are concerned that if something is perceived as yet another (fine) computer language, no one will want to use it. If the modeling system can spit out C++, you can point to that and say "here, it uses C++ and C++ is a portable language that everyone has heard about." Heck, C++ was originally a modeling environment for C (it was a preprocessor that generated C code).

    The thing that bothers me about "code wizards" for C++ is that C++ has macros, it has classes, it has templates, and to supply a code wizard is an admission that you don't know how to use those three facilities in C++ to abstract what you are doing (ActiveX, Windows forms) in form you can get people to use, so you automatically generate C++ code that uses macros, classes, and templates in such a way that no one can read or hope to edit the code.

    Microsoft has in a way given up on C++ for UI code with their C# language -- I think of it as Delphi, a highly Windows UI-oriented language that is a long way from its Pascal roots, with C syntax. On the other hand, the Windows forms side of Delphi configures widget properties by serializing objects to a resource file (the .dfm file that gets folded into the .exe when you compile) while C# .NET reverts to generating code to set property values. Then they try to hide that code in the editor. Maybe they think that is more efficient.

    I think that it would be useful to have both charts and automatically generated C++ code in a modeling tool the charts and C++ were two different ways of looking at the exact same thing -- in a CAD tool for hardware, you could have a circuit diagram and a text net list. For this to be useful it is essential that they have a good round trip capability -- if you edit the C++ you don't lose the ability to get back to the charts. It would be helpful if the generated C++ code were readable. It could be verbose, that you wouldn't want to generate it by hand, but it would help alot that you could safely edit it if you wanted to.

  113. Run before write by 2901 · · Score: 1

    It would be nice to be able to run your program before you have written it. For example:

    CL-USER(1): (defun foobar (x)
    "Keep barring x until it is foo"
    (loop for i = x then (bar i)
    until (foo i)
    finally (return i)))
    FOOBAR
    CL-USER(2): (foobar 7)
    Error: attempt to call `FOO' which is an undefined function.
    [condition type: UNDEFINED-FUNCTION]

    Restart actions (select using :continue):
    0: Try calling FOO again.
    1: Return a value instead of calling FOO.
    ...
    [1] CL-USER(3): (defun foo (x)
    "X must be over 100"
    (> x 100))
    FOO
    [1] CL-USER(4): :continue 0
    Error: attempt to call `BAR' which is an undefined function.
    [condition type: UNDEFINED-FUNCTION]

    Restart actions (select using :continue):
    0: Try calling BAR again.
    1: Return a value instead of calling BAR.
    ...
    [1] CL-USER(5): (defun bar (x)
    "Grow x by doubling"
    (* x 2))
    BAR
    [1] CL-USER(6): :continue 0
    112

    We start the program running at prompt 2, write it at prompt 3 and 5, and get the answer, 112, after 6.

    This would help with one off calculations, and with refining requirements via exploratory programming. I think the issue is more of a culture/management/training thing, rather than technical difficulty.

  114. Re:I've already seen one post dissing code generat by Darth_Burrito · · Score: 1

    I love using code generation. About 9 months ago, I wrote an object oriented data access layer generator for .net. The code it made was somewhat messy, but the interfaces were clean, and it saved me a lot of time. Even more importantly, all of the manually written code was much more readable as a result of the extremely standard OO data access libraries. I heard the next version of .net was supposed to come with some kind of code generation for data access layers in the standard tools.

    About four months ago, I discovered PHP/Pear's DB_DataObject which is pretty cool. It is missing some features I had in mine, but it makes up for it by being incredibly easy to use. Now I've set up a protected page on our website at work that allows anyone to regenerate the entire data access layer at the click of a button. I hardly ever have to write sql and, more importantly, it makes things much easier on the programming light-weights.

  115. The Big Picture by nikster · · Score: 1

    As a software engineer, i would ask one question first: What is it that makes our job difficult, what needs to improve?

    I start from the ideal situation: If i know what to do - the requirements - i want to just make it happen. An ideal software tool would allow me to go straight from specs to a prototype.

    I would estimate about 50% of the current total project time is spent developing specifications - the process of figuring out what exactly the customer wants. Even though that's probably the first thing taught in SE 101, i rarely see it done in practice. Software people don't listen, and the customers don't know any better. Note: Before you can implement a business solution, you must develop a full and deep understanding of the business process. Before starting the implementation.

    All we can hope for in a realistic software tool is to save the other 50%.

    Eclipse was a major step in terms of productivity, and i think it mostly works because even though it does a lot of stuff for you, you can always go in and text-edit something. Good tools are both transparent and powerful.

    As for Rational tools: Power without transparencyt. I won't touch them with a 10 foot pole. They are great if you want to get away with failure (as you can point to them and claim that you used the best tools available), but if you are interested in developing great products - no way. It is the wrong solution for the problem.

    What i want as a developer is very simple: I want the shortest path from conception to implementation, from idea to program. I don't want the tool to help me with the idea because it just won't work. Also, spending a lot of time talking to the customer and listening and tormenting them with questions is surprisingly easy.

    When i implement things i try to automate everything that can be automated, but in Eclipse/Java, at least, i still end up with 80% of my time wasted on silly things. These i want a tool to take care of for me, preserving transparency at the same time.

    To the Emacs/Java hard-core people: Get over it and use Eclipse. You can set it to Emacs keyboard shortcuts, You can bind in external programs with ANT, incorporate python for code generation, and last not least use all the great time-saving and quality-improving tools that are built in. And all of it completely transparent and free of charge.