views:

608

answers:

18

What tools would you like to have to make development easier, which either don't exist yet or are too niche/un-featured to be useful. This question was prompted by Redgate (no connection) who are looking to build a proper version control tool for Sql - that's been an obvious gap for years and will hopefully now be filled.

Joel has been after a .Net static linker since Jan 2004.

I'd personally like an IDE that understood the difference between business logic and other code

What (feasible) tools would you like to see?

+3  A: 

Debuggers that capture memory, disk, and process information over time. These exist in some poor implementations for some very specific circumstances but nothing has hit the mainstream languages and environments yet. One feature would be to wind back one minute in time and see the system as it was.

ojblass
It's coming to Visual Studio in VS2010. I can't wait.
Bryan Anderson
oprofile might be an excellent foundation for something like that on nix systems.
none
A: 

A real Drag and drop tool, that provides with good code.

Itay Moav
A: 

Well, here is your static linker at least. :)

JP Alioto
A: 

A good way to profile on Windows CE when you don't have Platform Builder. :)

Trying to profile my program seems to be pretty impossible so there is guessing involved.

James Black
+2  A: 

A good parser IDE. ANTLRWorks aspires towards this goal, but is plagued by numerous problems, especially for non-Java targets.

Don Reba
+1000 as someone who is currently learning flex and bison.
Chris Lutz
I found ANTLR to be far easier to use in terms of cross-platform cross-language features. Of course ANTLRWorks seems to break when you have semantic predicates and backtracking, but it beats everything else I have used.
Unknown
+3  A: 

A single conceptual domain modeling tool that emits an RDBMS schema and matching classes for the OO language of your choice. (Or for any language, for that matter.)

Some new language-like thing in the middle doesn't count. And anything based on XML is an antipattern.

le dorfier
+2  A: 

I'd kill for a multithreaded linker on larger C++ projects, for one thing. Also if Sandcastle, the doc build tool for .NET, were multithreaded, that'd save me a hell of a lot of time. It's a bunch of independent XSLT transforms, yet it runs them one file at a time on a single core. But that's improvements to existing tools.

One "new" tool I'm really desperate for is a half decent .NET profiler that doesn't cost money or at least has a usable free version that isn't time bombed. DevPartner changed their free version to be a trial, and NProf is dead and way too lacking feature-wise. The other players on the market, like dotTrace and ANTS, are not just pay-only but actually hideously expensive. I run an open source project, I can't drop $500 per license for profiling. The money simply doesn't exist.

Promit
You may want to check out the gold linker.
none
+6  A: 

This may sound stupid to some people, but when I was learning COBOL back in school, you could tell the IDE to step over your code line by line for you, and if you touched the mouse, the debugger would pause as if you hit a break point. There are times when I would much rather watch the debugger than press F10 repeatedly. One of my favorite features of this was you could change the stepping speed. Basically number of lines per second, or the delay in seconds between steps.

Or if you have a long running or complex process and you want to say test step 5, without having to rerun steps 1-4 (because they take 20 minutes to complete), being able to save the program execution at a certain point, and resume it to a particular line of code. I'm working on a tool for work right now where this would be a god send.

I know that VS2010 has a historical debugging feature, but I'm not sure if that only works for exceptions and not for program state.

I was just listening to RunAs radio Episode #92 on Applications Compatibility and about 27 minutes into it they are talking about hard coding folder paths in applications. I really blame the tool for not providing enough guidance around that. If we can have intellisense for complex technologies like LINQ, why can't it also produce some type of warning when you do something that will hurt you down the road. There is fxcop, but you have to know to run it. It should be part of the process.

Maybe I'm asking too much and we need to rely on a third party for this.

Chris
Sounds like this could be an add on for VisualStudio... I would actually find this useful.
Neil N
@Neil: Which one? The auto-stepping or save program state?
Chris
Now we're talking, lets start breaking the mould and build some really good tools
MrTelly
@MrTelly: lol "breaking the mould [sic]"
Argalatyr
xcode 3 already has historic debugging; http://iphonedevelopertips.com/xcode/xcode-debugging-going-back-in-time.html
Jasper Bekkers
+1  A: 

This is highly speculative but:

When using dynamic environments like Common Lisp, Python, or even C++ applications using Edit and Continue, I'm struck by how much more rapidly I can work, when compared to C++, C and Java applications, where you have to bring the system down to make small changes.

What I wonder then, is would these kind of environments scale to multi-user systems, for medium and large scale programs? The missing tool is a platform, editing tools and perhaps even new ways for working, that would allow us to work collaboratively in real time. Kind of like pair programming with more people.

justinhj
@justinhj: this may be what you're looking for http://labs.mozilla.com/2009/02/introducing-bespin/
Chris
A: 

Whatever comes after XML. I can't wait.

le dorfier
Ancient Egyptian Hieroglyphs. That's what Web 3.0 will be written in.
Calvin
yaml http://yaml.org/
Brad Gilbert
ASN.1 http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One
Adam Bernier
JSON or S expressions anyone? :-)
none
+3  A: 

A debugger that let you step backwards in time. It's easy to break a program at the point it crashes. It's often not so easy to see why that's occurred and figure out what steps led to that point.

I have a feeling that I heard about something along those lines a little while ago, but can't recall what it is. Nonetheless, there's no "step backwards" button in Visual Studio, so I can dream.

Peter
@Peter: You can move the line of execution by clicking on the yellow arrow and dragging it up in Visual Studio to a line above, but I don't think that rewinds your program.
Chris
Yea, you have to restart the program, which works for debugging most of the time, but not when the crash was introduced by specific user input or other external conditions.
Calvin
There are debuggers which can do this, for OCaml, for example.
Andy
Chris: No it doesn't rewind the program, just jumps to that line.
Peter
Does OCaml keep a history of program states? That seems like the only way you could "rewind" a program execution.
Calvin
There is an experimental java debugger which does exactly this: http://www.lambdacs.com/debugger/
Wim Coenen
A: 

A tool to automatically translate my vague thought processes into working code.

This tool would need to understand advanced concepts such as "you know" and "that other thing."

j_random_hacker
Yea mean a program that can decode "step 2. ???"
Calvin
@Calvin: Precisely!
j_random_hacker
I believe you're looking for step 3 :)
Porges
+1  A: 

A profiler/debugger for analyzing code running on a distributed system, allowing you to debug/step through these hosts and there network interactions from a single runtime would be really neat and with the popularity of distributed systems is going to be a must. Its especially hard to debug such systems currently since there are so many small conditions which can cause chain reactions on other systems...

JH
+1  A: 

An optimizing compiler that actually does all the things everyone thinks that it should.

Crashworks
+1  A: 

An ongoing area of research is how to create multiple editable views of a program that cross-cut various concerns. Some examples are allocation, transactions, locking, data flow, control flow, tracing, logging, etc. Note that the difficult part is being able to edit the program in all views, and combine the pieces in a productive way. This is a programming language as well as a development tool challenge.

Roly Perera has a nice introductory blog entry about this. I found that via a LtU thread about Fluid AOP (a name attributed to Gregor Kiczales).

Doug Currie
+1  A: 

Two that I would pay cash money for:

  • An easy way to track changes to a business object. At this point I would be happy with an "IsDirty" flag but the ability to inspect original and changed values and rollback changes would be nice.
  • A UI framework that made it easier to write read-only and editable views of the same data.
Jamie Ide
+1 Definitely. I've wished for a "SVN repository for business objects" a few times.
Wim Coenen
+2  A: 

An IDE with great IntelliSense / Code completion for dynamic languages like Python and PHP.

adolfojp
such an IDE does exist for php, it's called NetBeans and it's a 23MB free download. it also comes with a fully operational debugger; stepping, wathes and everything. Dunno 'bout Python tho
Kris
+1  A: 

I'd truly love to see an application that fully supports refactoring even complex C++ source code. It is so unnecessarily tedious having to do all this stuff manually.

Refactoring C++, or rather Static Analysis of C++ source code and automated transformations have always been a big PITA.

C++ source code needs to become a query-able entity, like an RDBM, so that we can easily transform it using queries, ideally using a custom SQL-based refactoring language or dialect thereof.

none