Thursday, November 08, 2007

Guess what I missed most...

For some reason, I've gotten interested in ray tracing (like I don't have enough in my life to do right now). So when I found out about a project some guy is working on called Arauna, I had to go look.

It was pretty cool. It looked great as far as lighting and shadows and reflections go, which is one of the best things about ray tracing. And it was rendering a scene with 70K triangles in real time with frame rates on my Core Duo laptop between 7 and 25, pretty reasonable. And with the algorithm exploiting both of the cores, it looks pretty promising as well in our near future of highly parallel architectures.

The guy had the source code for download as well. Of course, being a Windows app using DirectX, it came with Visual Studio project files. Once I figured out how to work around the project setup for Intel's C++ Compiler, I was able to load up the projects into Visual Studio Express 2008 Beta 2. Not only was I interested in looking at the ray tracing algorithms, I also wanted to check out the state of the art that Visual Studio is coming out with compared to the CDT.

VS does have a few things that we have now with CDT 4. It has a pretty fast search for declaration, definition, and references. It seems pretty accurate, although I did notice the had the same problem we did when opening the definition of a constructor. It went to the class definition instead. Also, they have a call hierarchy tree, just like CDT 4 introduced. I guess we're reaching some kind of parody as far as features go.

But the feature I missed most, especially when trying to learn someone-else's code, is the Outline View. We sure do take it for granted in Eclipse-land. It's been there forever with the CDT, starting with the original drop from QNX. With VS, I kept finding myself looking over the the right hand side of the screen to see the outline every time I opened a new file. Instead I had some useless property page staring back at me.

We're getting more and more feedback from CDT users that are coming from the Visual Studio world. There are a few things that Eclipse and the CDT are missing and we are looking at trying to address those. The biggest one is that they want the ability to add any files and directories to a project that they want. I'm looking into a way to do that with the Eclipse File System (EFS). We'll see if I can get my ideas working. But it's cool to see the trend developing.

10 comments:

  1. Once gcc 4.2 gets into Wascana, you can use OpenMP to do multi-threaded apps. I've been playing around with it under linux. It certainly beats having to handwrite pthread code even though the pragmas are ugly.

    ReplyDelete
  2. "The biggest one is that they want the ability to add any files and directories to a project that they want. I'm looking into a way to do that with the Eclipse File System (EFS). We'll see if I can get my ideas working. But it's cool to see the trend developing."

    Do people not use version control for stuff? Is it really that bad out there that people just want to take files willy nilly and drop them into projects?

    ReplyDelete
  3. How many times have we heard that from the platform team. Yes, for crying out loud, it's a real requirement in the C/C++ world.

    For VS users, they just want to be able to do the same things they were able to do in VS. And the ray tracing example is a perfect example. The guy had two projects in the same sub folder with another project in the parent folder.

    I'm tired of trying to explain to paying customers that Eclipse doesn't work that way and if you don't like it, tough noogies. We need to at least try and find a solution for these guys.

    ReplyDelete
  4. If you find a way to use EFS, please blog about that!

    I was thinking along the same lines for importing maven projects, since the default layout for "subprojects" is to have them as nested projects... something Eclipse does not support (now).

    ReplyDelete
  5. I don't think we'll get nested projects out of this. The project list will still be flat but the files will be able to come from anywhere.

    In the long run, I can see us using Working Sets as a nesting structure. This is more a UI thing but I'm not totally clear what the requirement is for nesting at the moment. It does exist as you mention, though.

    ReplyDelete
  6. Doug, what's your experience with using linked resources? AFAIK they provide the same functionality as adding files to projects in MSVC, and they're long-time Eclipse natives.

    ReplyDelete
  7. I have heard of issues with linked resources but, yes, they do do the add functionality. But, of course, we're still missing the include functionality.

    ReplyDelete
  8. The thing about linked resources, is that they aren't completely integrated into all of the commands/functions. For example if you happen to do a search, and your search turns up in a linked resource of which one copy is already opened up the search will happily open up another editor. Same story for debug breakpoints, and refactoring as well.

    Linked resources are great ways to get stuff into the workspace, but using it to bring in "multiple copies" of things as you might want to do to simulate nested projects will eventually run you into several annoying gotchas.

    ReplyDelete
  9. As an Eclipse novice, the thing I find perplexing when coming to CDT is that there are not the usual three Compile, Make and Build All toolbar buttons that are so typical in C/C++ IDE's such as MS Visual C++. To me, CDT is just not intuitive.

    ReplyDelete
  10. Funny, we were just having a discussion about the non-intuitiveness of the build system on the cdt-dev list. You are absolutely right. The Eclipse build system was created for Java where the builds run automatically and are very fast. C/C++ builds are slow and you want to control when they run. We do need to do a better job of helping our users with this.

    ReplyDelete