Software Tools of the Future 337
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."
Trend vs Financial Backing (Score:5, Insightful)
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.
Re:Trend vs Financial Backing (Score:2, Funny)
Re:Keep the Best Tools Non-Open Source (Score:2)
It's already here... (Score:5, Funny)
Re:It's already here... (Score:2)
Resumes... (Score:5, Funny)
Heh (Score:5, Funny)
Re:Heh (Score:3, Insightful)
We never did get that snowblower.
Usability in Non-MS Environments (Score:5, Interesting)
A lot of developers poo-poo
Raven
QNX Momentics (Score:2)
Re:Usability in Non-MS Environments (Score:2)
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 P
Re:Usability in Non-MS Environments (Score:5, Informative)
Eclipse is not just for Java. You can use it for C and C++ [eclipse.org], python [python.org], COBOL [eclipse.org], among others [2y.net].
Re:Usability in Non-MS Environments (Score:2)
Re:Usability in Non-MS Environments (Score:3, Funny)
Re:Usability in Non-MS Environments (Score:2)
I think the crucial difference between Visual
Re:Usability in Non-MS Environments (Score:2)
Re:Usability in Non-MS Environments (Score:3, 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 thing
Re:Usability in Non-MS Environments (Score:3, Interesting)
The entire interface looks l
Re:Usability in Non-MS Environments (Score:3, 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
Re:Usability in Non-MS Environments (Score:2)
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 valu
Re:Usability in Non-MS Environments (Score:3, Interesting)
Just try debugging Xerce
Re:Usability in Non-MS Environments (Score:2)
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?
Re:Usability in Non-MS Environments (Score:2)
dubious (Score:2)
Re:dubious (Score:5, Interesting)
Re:dubious (Score:2, Insightful)
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 tab
Poor tools, No credibility. Re:dubious (Score:2, Informative)
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 i
Completely lacking vision (Score:5, Insightful)
Bob
Re:Completely lacking vision (Score:3, Informative)
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
autotools (Score:3, 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.
Eclipse! (Score:3, Informative)
My employer is working on an Eclipse-based development environment for their Cascade [criticalblue.com] product, instead of developing yet another custom environment from scratch with all the incompatibility and test overhead that that entails.
Jon.
Re:Eclipse! (Score:4, Informative)
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.
Re:Eclipse! (Score:2)
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.
Re:Eclipse! (Score:2)
On the Amiga (Score:2)
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
Re:On the Amiga (Score:2, Informative)
I saw some pretty impressive presentations done with it.
Make it simple (Score:5, Insightful)
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.
Re:Make it simple (Score:2)
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
Re:Make it simple (Score:3, Insightful)
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 a
Re:Make it simple (Score:2)
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
Re:Make it simple (Score:2)
``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 requ
Re:Make it simple (Score:2)
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.
O'Caml....the future today (Score:3, Interesting)
Features include:
FAST
It can be compiled to native code that is just as fast as C.
Type inference
In the function , 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, 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 [ocaml.org]
Free online book, best place to learn the language [inria.fr]
Re:O'Caml....the future today (Score:3, Insightful)
OCaml an
Re:O'Caml....the future today (Score:2)
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
Re:O'Caml....the future today (Score:2)
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.
Re:O'Caml....the future today (Score:2)
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
Re:O'Caml....the future today (Score:2)
Re:O'Caml....the future today (Score:3, Informative)
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 [b9.com] (LGPL) manual:
def-funct
Are tools a crutch? (Score:5, Insightful)
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.
Re:Are tools a crutch? (Score:5, Insightful)
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.
Left behind (Score:5, Insightful)
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.
Re:Left behind (Score:2)
Re:Left behind (Score:3, Insightful)
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
Re:Are tools a crutch? (Score:2, Insightful)
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 complete
abstraction good, tools bad (Score:2)
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 t
Exactly, tools are a crutch... (Score:5, Insightful)
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.
Re:Exactly, tools are a crutch... (Score:5, Interesting)
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
Re:Exactly, tools are a crutch... (Score:2)
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.
Re:Are tools a crutch? (Score:2)
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 ha
Re:Are tools a crutch? (Score:2)
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 suppo
Re:Are tools a crutch? (Score:2)
Re:Are tools a crutch? (Score:3, Interesting)
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 occ
Re:Are tools a crutch? (Score:3, Insightful)
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
Software tools of the future.... (Score:2, Funny)
Emacs, baby. All the way.
Mono (Score:2)
Cb..
I've already seen one post dissing code generators (Score:4, Interesting)
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...
Re:I've already seen one post dissing code generat (Score:3, Insightful)
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 th
Re:I've already seen one post dissing code generat (Score:2)
Check out some of the links here [del.icio.us]. Especially CodeWorker [codeworker.free.fr].
Mind you I am not entirely a fan of code generators myself, having been forced to use
Re:I've already seen one post dissing code generat (Score:2)
Someone smarter than me said it best: "There are two types of programming
Re:I've already seen one post dissing code generat (Score:2)
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.
Pay-per-use - Bah! (Score:5, Insightful)
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
Re:Pay-per-use - Bah! (Score:2)
Re:Pay-per-use - Bah! (Score:2)
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.
Better Languages (Score:3, Interesting)
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.
Re:Better Languages (Score:2)
Fundamental problems in the items (Score:5, 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.
Radical Innovation (Score:5, Interesting)
Here's my set of software predictions. Some more detail to fill in for that other guy's blog entry. [ibm.com]
Here we go:
Refactoring Browsers (eg, Eclipse) (Score:3, Informative)
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 d
Re:Refactoring Browsers (eg, Eclipse) (Score:2)
Re:Refactoring Browsers (eg, Eclipse) (Score:2)
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.
Re:Refactoring Browsers (eg, Eclipse) (Score:2)
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 w
Re:Radical Innovation (Score:2)
(Calling MFC a "real UI advance" is a howler.)
Re:Radical Innovation (Score:2)
Re:Radical Innovation (Score:2)
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,
MDA, Code generation, and the like (Score:3, Informative)
Some links to check out on these topics:
Semantic Designs (makers of a very powerful, generic transformational environment) http://semdesigns.com/ [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 [nasa.gov]
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 [computer.org]
Re:MDA, Code generation, and the like (Score:2)
Buzzwords, psychology, and viewpoint relativity (Score:4, Interesting)
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
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.
Re:Buzzwords, psychology, and viewpoint relativity (Score:5, Interesting)
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.
CVS Integration (Score:2)
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
Re:CVS Integration (Score:4, Interesting)
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.
I'm a developer; here's my prediction/wish list (Score:3, Interesting)
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!
Re:I'm a developer; here's my prediction/wish list (Score:2, Interesting)
It turns out your 'Predictions'... are infact some of the enhancements being released in Visual Studio 2005 Team Edition.
yes, that will happen... (Score:2)
Source DB? (Score:5, Interesting)
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.
The conservation of complexity (Score:2)
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
Still trying to replace the programmer (Score:5, Insightful)
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.
Oh, please. Buzzword overload. (Score:3, Insightful)
Re:Improved Efficiency (Score:2)
Re:Genetically evolve software? (Score:3, Funny)
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