Programming Tools You've Used?
crazy_speeder asks: "I'm looking for programming tools for the whole development cycle, including documentation. The project I'm working on will use C++ and Java. What has been your experience using tools like C++ Builder, Netbeans, Eclipse, JBuilder, Doxygen, ClearQuest, Rational Rose, g++, and any compiler, debugger, or IDE that you may have used. I need tools that will handle auto documentation, unit testing, design, file editing, and the like. As far as platform goes, Linux is the target OS while Linux or Solaris will be the host OS."
Write whitepapers and similar documentation with LaTeX, it looks more believable. It looks better, and makes indexing easier.
What keeps me going is my inertia.
Java: vim, GNU make, javamake, javac, javadoc, IntelliJ IDEA.
If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
I know this doesn't answer your question directly, but while I certainly understand that there are "auto documentation" tools, and such available, learning to write your own, comprehensive, thought-out documentation is a very valuable skill that most don't have. Don't rely completely on automated processes. Somewhere along the line, you will find yourself having to hack out code in a text editor, or use a less-than-top-of-the-line development environment, at which point you will have to fall back on your own skills and not those of an auto-documentation program.
Finding a complete and comprehensive development environment is definitely an ideal situation, but don't neglect your knowledge and skill by using it as a crutch.
My mom always said, "Jim, you're 1 in a million." Given the current population, there are 7000 of me. God help us all!
vim
Eclipse will work for your overall environment. For documentation, use Doxygen. Stick with gcc for the compiler.
Use SIMPLE makefiles; don't make multi-nested monstrosities if you can help it. Seriously, simple makefiles and absolutely NAILING the build procedures up front will save you a hunk of time. The user should be able to type 'make' and build the whole system, if at all possible. Don't make them jump through hoops. Don't let people change makefiles without review.
Don't rely on Rational Rose too much, or you will have a pretty demo, but nothing running on anything else other than a slide projector.
Use cvs for your version control. Get a bug tracking system that you can use to smoothly promote code along from devel to test to system test to staging to release to retired.
Beyond that, don't spend too much for tools. If you find something you need, cool. But don't add tools just because you can.
Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
boost also has a nice unit testing library. I use it for all my C++ code.
I'm working in Eclipse right now, trying to debug a userland NFS server, and it's a pretty nice product. I may be biased, though, because my company sells an IDE based on Eclipse + CDT, so try it for yourself.
You'll need to install the CDT plugins for C/C++ work, but that's not a liability. In fact, it's really Eclipse's strength - there are literally hundreds of plugins (commercial and OSS) that can be integrated into the environment to give you exactly what you want.
"Great men are not always wise: neither do the aged understand judgement." Job 32:9
Changes are, you most already have everything you need on your system.
would happen to be BlueJ. It's written in Java, so it'll work on a lot of platforms, it's got a very simple interface, and just lets you code. None of the clutter of Eclipse.
Nobody's mentioned Jikes yet. It's an open source (CPL) java compiler from IBM. It's written in C and is significantly faster than javac which runs in the vm.
If you want your java code to run on the vm, jikes may be a good idea. If you want native java code, then there's also gcj .
Avoid NetBeans, I had nothing but trouble with it. JBuilder is good if you can afford the commerical versions, since the free versions are pretty much useless. Eclipse is probably the best free IDE, and with C++ plugin I find it more than capable for what I need.
IMO Together is much better than RR, they both cost about the same, which is the serious downside to both. If you are only doing forward engineering I would consider ArgoUML. Argo does decent forward engineering, but it's reverse engineering leaves a lot to be desired. If you have to do any reverse engineering, none of the free UML tools I looked do a decent job of it. In fact Rose isn't even very good at reverse engineering.
Doxygen works well for documenting C++, I wish the output was MORE Javadoc like.
If you are doing a lot of C++ coding get a code memory/bounds checker. Commerically Purify is stll the best, IMO. There are also some good free options, sorry I can't remember the ones I looked at though.
Uniting testing I use junit for Java. There is cppunit for C++, I haven't tried it though so I can't say how good it is.
Maven is very useful for project management duties.
Use Netbeans. It has recently leapfrogged Eclipse in many areas (not to say that won't change) and the guys I work with say it is faster than Eclipse now in addition to the Refactoring, Swing Builder, etc. that it has.
The new 4.0 and 4.1 releases use ANT build files for all of their project information. They build and run JUnit tests as part of the project and the build process, and they come with a sweet profiler that even allows you to profile remotely. One of the neat things about the ANT based projects is anything that can use an ANT build script can build your project -- whether it be ANT itself, CruiseControl, Maven, Eclipse, etc.
The latest beta of 4.1 will even import Eclipse projects.
Also recently voted Developer.com Product of the Year 2005
Those who open their minds too far often let their brains fall out.
The best Java IDE, by far, bar none, is IntelliJ IDEA. It blows everything else out of the water, although it has a price to match.
Eclipse is essentially an open-source clone of IDEA, but in reality it doesn't even come close to matching it. IDEA's tagline is "develop with pleasure", and that's not just marketing drivel.
This space intentionally left blank.
Axis
Jakarta commons, Spring, Hibernate
NetBeans (only if doing massive Java web app or Swing UI), Eclipse (good all around; web features castrated by IBM now trying to re-attach)
CVS and CVS client inside IDE. Other Linux clients IMHO have issues.
Junit
Ant, Ant and Ant everything via Ant
CruiseControl
Some form of Wiki
Poseidon / Argo UML
JIRA or equivalent
IMHO, deserve to stay away from:
JBuilder
Oracle Jdeveloper
IBM WSAD and other minions
Portal frameworks (maybe Liferay is ok)
Keep the project simple and bare bones. I wouldn't try and lock any of your developers into specific tools. CVS, Ant (because you're doing Java too), JavaDoc/Doxygen, any IDE should be able to integrate with these.
The project I'm on does not require any specific IDE at all. We've got guys running Emacs, I'm a vim user, another uses NetBeans, a few more Eclipse, and somebody has their personally licensed copy of JBuilder out here too.
The only issue have is when developers sometimes setup their IDEs to use different tabs sizes (we say they're 2 spaces, but people forget sometimes) and when some IDEs reformat a whole class on you, which makes the CVS diffs difficult to apply to different branches for fast-tracked bug fixes.
emacs-21
perl -e "eval pack(q{H*},join q{},qw{70 72696e74207061636b28717b482a7d2c717b343 637323635363534323533343430617d293b})"
Anyone have a grid with links? I'd like to see what's available by platform/OS vs language. Lately all I've been doing is LZMP, but some of these new devices have me wondering if there are any Open Source tools that can run on platforms like Windows Mobile. (Sigh) Maybe I should try and finish porting python to my smartphone first ...
"Can there be a Klein bottle that is an efficient and effective beer pitcher?"
for debugging, ddd works ok on top of gdb
What keeps me going is my inertia.
Consider Sun's DBX and the DTrace utility in Solaris 10. I haven't used DTrace much, yet, but I really got a lot of milage out of DBX' ability to track down memory leaks and array overruns, for example. I think Sun's compiler suite (incl. dbx) is still somewhat expensive, but DTrace is free with Solaris.
-- Microsoft is the most expensive commodity operating system and office suite vendor in the marketplace.
I use vim and make for small C++ projects, but for larger projects I've found it useful to have a real IDE. Either Anjuta or KDevelop are good.
Most of my professional programming recently has been in Java. Eclipse is far and away the best free IDE, although I've heard unconfirmed rumors that recently NetBeans has started becoming usable. We use IntelliJ IDEA, which I highly recommend. We switched away from Eclipse because it supported the same sort of refactoring that Eclipse did, but it was faster, easier to control from the keyboard, and seemed more intuitive. And at $500/license it's pretty cheap compared to the (commercial) competition.
I agree with the comments others have posted about getting a well-designed build system set up first thing; it really will save you time. If you're using Java, then Ant is basically the de facto standard, and is well worth using. If you're running both Java and C++, it probably makes sense to use Ant for both, so you can have a single build system.
As far as version control goes, you really want something more flexible than CVS. I've used CVS in a professional setting, and while it has its advantages, its lack of changesets makes managing a large project difficult. It isn't so bad with C/C++ code, where it is common to have a few large source files, but with Java forcing you to make lots of small source files it makes version management a real hassle.
We're switching over to Subversion for version control. While you're looking at version control, take a look at Trac, which is an immensely useful issue management system that integrates directly with SVN.
For my programming (I'm a student), I currently code in C and Java, and sometimes I play around in Python and Scheme. I pretty much use all traditional Unix tools for my programming. I use FreeBSD as my operating system and vim as my editor. I compile my C programs using gcc, check them for errors with lint, and debug them with gdb. For Java programs, I use the JDK, and I use the python interpreter and the guile interpreter for Scheme, as well. I've heard great things about Eclipse; I'll try that.
Only tool I've used since leaving DOS was 'vi'.
"Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
Use a version control system like cvs or svn to manage your project; it will save you a lot of time.
...
/home/me
M E update MODULE ...
One thing I'd like to do for various reasons is to use "chained" cvs so that I could checkout (or cvs-update) from a master cvs repository, say cvs.sourceforge.net, to an intermediate repository, say sharedhost.com ( to which other developers might have shared shell access) and then checkout (or cvs-update) from there to my private local repository at privatehost.com, for example:
privatehost $ ssh sharedhost.com
sharedhost $ cvs -d `pwd` init
sharedhost $ export CVS_RSH=ssh
sharedhost $ cvs -z3 \ -d:ext:USERNAME@cvs.sf.net:/cvsroot/PROJECTNAME update MODULE
cvs update: Updating MODULE
cvs update: Updating MODULE/...
sharedhost $ pwd
sharedhost $ logout
privatehost $ cvs -d `pwd` init
privatehost $ export CVS_RSH=ssh
privatehost $ cvs -z3 \ -d:ext:USERNAME@sharedhost.com:/home/me/PROJECTNA
cvs update: Updating MODULE
cvs update: Updating MODULE/...
Unfortunately the second stage despite numerous variations of cvs inits, export CVSROOT=..., etc never actually checks out anything from sharedhost.com except an empty directory tree. All the sub-directories are there, but the files are not actually checked out.
Yeah, eat this, all you VI fans! ;-)
;-)
Seriously, while newer-generation IDEs might be better for Java/C/C++, the cool thing about Emacs is that it has modes for all languages known to man, and then some. So if you just code in Java/C/C++ -- pick up an IDE, but if you do not know what life will send your way tomorrow -- start customizng your Emacs.
And of course good luck editing LaTeX docs in Eclipse!
Paul B.
Valgrind is great for debugging memory problems (wild pointers, memory leaks). It's not at all like the older memory debugging tools; you just run "valgrind your-program" and it'll rewrite your executable to perform the appropriate checks, then run it. Right now it only supports x86 executables; they're working on PowerPC support.
One tool I've been using a lot of lately is valgrind. Valgrind is a debugging tool that runs an unmodified binary in a special environment to detect memory related problems.
It's great at detecting memory leaks and odd memory management related crashes. In particular, it's invaluable for threading related memory errors. It can be a bit overwhelming though, especially if you use a lot of libraries that are sloppy with their memory.
One limitation: it's pretty platform specific. Originally, it was pretty tightly coupled to the x86 architecture, though I think there's a PPC port in the works.
QMTest is an open-source testing framework that you should try. Fairly simple, adaptable, extensible. (Full disclosure: It's made by my company, but not by me. From reading the mailing lists, we get lots of kudos, so presumably it's working. *grin*)
As for other tools:
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
Slickedit is still my favorite all around multi-platform, multi-language IDE. The only thing it's really missing is a visual design tool for developing GUIs. But you could always get the plugin and run it with Eclipse.
For all non-Java development, unless mandated by a contract, I use GNU Emacs as my primary environment, with the GCC tool chain and GNU Make. This works amazingly well on all stages of development, but as others have said, keep things simple: try to avoid mazes of recursive makefiles, for example (read Peter Miller's Recursive Make Considered Harmful, then read it again.)
Your choice of tools will depend a bit on how cross-platform you need things to be. If you are developing now, or think you will be developing in the future, for multiple platforms and compilers, take that into account from the start and save yourself a lot of headache. Don't bother with AutoGen and friends unless you are distributing this to third parties: it's a PITA. It's great if you have absolutely no control over future systems, but otherwise there are better ways.
For Java development Eclipse is going to be your very good friend. I'm not a big fan of IDEs, but Eclipse is really nice insofar as it integrates with the Java language very well and can help you a lot. It's refactoring capabilities are worth the learning curve. Unfortunately I have not had a lot of luck getting ANT integration working, so I maintain a separate ant build file that I use for release builds in my projects.
For documentation purposes Doxygen is the thing to use. It has Emacs integration as well (written by yours truly). We use this to generate reference documentation, and then have Python scripts to massage the HTML output as we need. With its XML output you can use XSLT instead, though I haven't tried that. We need to produce multilingual documentation, and after many different attempts with tools have settled on LaTeX with a customized version of the Python macros. It works really well, if you can find doc writers who are comfortable writing with it. We are experimenting with Lyx to see how it integrates with our hand-coded documents. We use JavaDoc for Java reference documentation, though we could (should) migrate to Doxygen.
Other tools that are essential: Valgrind is a must use. I prefer it to Purify. Use Bugzilla for bug tracking: easy to set up and maintain. I recommend Perforce for your SCM. I'd avoid CVS. Give Subversion a look, but we've been happy with Perforce. Depends on how much you want to spend. We use AutoGen a lot to generate sources: very useful. And pick a scripting language you are all comfortable with and use it: Python is what we use, Perl works. It doesn't matter which one you use, as long as you're all comfortable with it. We have Python scripts that produce hourly summaries of Perforce activity, for example. We've tied our Bugzilla into Perforce... lots of things can be done.
Cool new python-based build tool: scons. More intuitive than make, imo.
and the right methodology for the job.
This is not to criticize your choice of tools. Personally, it's close to what I use, except I use ant for building. But I've found time and time again that people on my team struggle with one or other part of the tools chosen. When I've looked at the problem, it is usually that they are struggling against the presumed methodoloy presumed by those tools.
For example, cvs or subversion have a concurrent editing model that goes nicely with agile methodologies. Agile methodologies are the engineering equivalent of keeping your room picked up as you go along rather than letting the crap pile up waist deep and then dealing with the problem.
But agile might not be the kind of methodology you choose, for (occasionally) good or (usually) bad reasons. if it isn't, cvs will probably multiply your problems painfully.
With CVS, people work on what they think they need to work on, then deal with the fact that this might conflict with somebody else's idea of what needs to get done. The process is that you update from your repository, resolve any conflicts that arise, and then commit the resolved changes back. You do this every day, if not multiple times per day. It's the equivalent of keeping your room picked up. The problem is, this process doesn't seem like much fun at the outset. Actually, when you work this way, it is pretty enjoyable, but if you let things go, say not committing for a few days, you are punished. I've had people working for me who found this excessively time consuming and restrictive. The problem was they weren't doing it enough. You have to have real commitment to continual integration for cvs to work.
So, if you're not commited to continually integrating your work, and not stressing collective code ownership, then maybe cvs is not the tool for you. You may want a tool that supports locking on checkout.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
What happens three years down the road when Management decides not to renew the Rational Rose license? What happens when IntelliJ stops supporting your version of IDEA and you have to upgrade with money you don't have? Etc.
Use only open tools. Open-source is best, of course, but anything that uses completely documented file formats and has tools for exporting to other formats is acceptable.
Don't let yourself get nailed with vendor lock-in. That's a bad, bad place to be. Better to use slightly inferior tools which are open than to lock yourself to a vendor.
That said, here are the tools I find myself using again and again:
- C++
- jEdit is a Java programmer's editor with excellent C++ support. I do development on Linux, Win32 and MacOS X, so it's very nice for me to have one editor I use on every platform. jEdit's not as featureful as, say, Emacs, but it's considerably more friendly to use.
- Boost. If you're writing C++ and you're not using Boost, you're committing a crime against yourself.
- Python. With Boost's Python library, it's easy to make your C++ applications scriptable. Write the heavy lifting parts in C++, then make those parts callable from Python. Do the rest of your development in a far safer, more sane language. You get almost all of the speed of C++, and far fewer headaches.
- SWIG is another tool that's excellent for creating scriptable C++ applications.
- Subversion for your version-control needs. Nothing else will do.
- Doxygen for all your documentation needs. Learn it, love it. Your code's not done until every public part of the API has been doxygenated.
- The GNU Autotools are really, really awful. They're also far better supported than Scons or pick-your-Autotools-replacement. Get ready to feel the pain of m4 macros. Sorry.
:( - The GNU Compiler Collection started getting a good C++ compiler around version 3.0. I've been quite favorably impressed with 3.3, and I'm looking forward to 4.0. I don't recommend it for Windows, but for Solaris and x86 Linux it's beautiful.
- I haven't found a good C++ unit testing framework yet. If you find one, please let me know.
- Java
- Eclipse is an excellent Java IDE. jEdit also fits the bill nicely, if all you want is an editor. I use both frequently, and am quite pleased with both.
- Subversion again for your version-control needs.
- jUnit for unit tests. Your code's incomplete unless you've written unit tests for it.
- Javadoc for documentation. I would recommend Doxygen, but it's quite possible you'll be deploying your applications on machines that don't have it installed.
- Ant for all your build needs.
Hope all this helps.I agree with avalys - Intellij is by the far the best IDE for Java. Despite being large and visually cluttered (which most all IDEs are), it doesn't get in your way, and actually helps you be productive.
I've tried using Eclipse many, many times (oh LORD, I've tried!) but something never quite works right, or it acts just a little odd, and it ends up distracting more than helping. I really want Eclipse to succeed, and I will keep trying it, but for now it's Intellij all the way (hee hee, new marketing jingle).
BTW, I've used IDEA on Windoze, Linux and OS X, and it works great on all of them.
Nothing is inexplicable; only unexplained -Tom Baker, Doctor Who
The only issue have is when developers sometimes setup their IDEs to use different tabs sizes (we say they're 2 spaces, but people forget sometimes) and when some IDEs reformat a whole class on you, which makes the CVS diffs difficult to apply to different branches for fast-tracked bug fixes.
... *sigh*
This is a pet-peeve of mine. A 'tab' should never be 2/4/8 space characters, it should be the Tab character.
If people use spaces instead of Tab characters, then this means that *everyone* must use the same number of spaces and indent in the same style or the code is unreadable. BAD! It violates the KISS principal!
If you want Tabs which are 2 characters wide, then set the tab-width DISPLAY in the IDE or editor and use the tab key. That way, every developer can adjust the tabs to their liking. Simple, no silly CVS whitespace-merging issues and it works in most situations.
Any decent IDE or text editor should let you adjust how tabs are displayed.
Personally, I'm a 'set tabstop=4' kind of guy myself. You want a tab to be 1 or 18 characters wide? FINE! Go for it! But just use tabs
[/end rant]
"Can of worms? The can is open... the worms are everywhere."
dont know jack about unit testing, so cant tell you how good it is, but this just got taken up by a project i use:
http://cxxtest.sourceforge.net/
I agree that Rose is a pain. (Caveat: student here, so maybe we just suck)
We tried to draw some class diagrams, sequence diagrams, etc. After struggling with Rational Rose, we found it easier to just do things semi-manually in Visio, rather than use the built-in capabilities of Rational Rose. Havn't tried using the code generation / reverse engineering capabilities of Rose though. In generally, I just find its UI to be annoying, even if its output isn't necessarily so. Not to mention that there was no obvious way of printing out the diagrams (I ended up taking screenshots and printing that).
If you use MS Visual Studio: If you can, try to use the older versions of Rose if you must. The new one (XDE) integrates with VS, and it completely drags VS down.
Of course we know that Lisp is the only language worth coding in! ;-)
"A guy on Slashdot" even made it to Paul Graham's collection of Lisp quotes:
"I have heard more than one LISP advocate state such subjective comments as, "LISP is the most powerful and elegant programming language in the world" and expect such comments to be taken as objective truth. I have never heard a Java, C++, C, Perl, or Python advocate make the same claim about their own language of choice."
- A guy on Slashdot. What theory fits this data?
Thanks... for the *pointer*?
;-)
Surely, "Thanks for the object reference"?
There is an upcoming book from O'Reilly named Practical Development Environments about development environments for software - the tools you use and how you use them. It's mainly for Unix and Windows. The draft for review is nearly complete. I'm the author.
I've no idea what animal it will have on the cover. Any suitable suggestions?
Editors and IDEs are personal choices. Make vim, emacs, and kdevelop available to everyone (Those are selected because they are the most popular free ones, have the admins install any other free ones on request). Then have each department budget for other editors that any one person may find works best for them. You might want to see if there are demo versions of commercial software you can make available to those who care to try it.
Everything else you need to make choices. There can be only one source code system so choose one. There can be only one make, so choose one. (my current project had two incompatible makes for a short time while we converted to the new system, it was a pain not worth living with any longer than you must!)
Make sure you code is cross platform. Don't use any gcc only tricks if you can avoid them, and where you must use them be careful to make them easily wrapable so you can use other compilers latter. For C++ gcc isn't very good, if speed becomes a concern you can buy a different compiler latter (perhaps just for one platform, using gcc for the other). In fact you can developers work with gcc (which is free and normally good enough), and have a good compiler for the build system.
If you're doing any J2EE work, I highly recommend Eclipse with the myEclipse plugin. It carries a price tag of about $30 per year, but this is much cheaper than many of the other equivalent IDEs. Included are a JSP developer, XML editor, SQL Editor, database explorer, EJB modeler and JSTL support among many other features. It is a great tool.
If J2EE isn't of any concern, I still first recommend Eclipse because of its nice integration with CVS, JUnit and other Java tools. There are also plugins for C and C++. And best of all, it's free. Even if Eclipse weren't free, I'd still pay for it. It's the best IDE I know.
The only other IDE I'd recommend is SlickEdit. I used it for a number of years for C/C++ and Java before switching to Eclipse. It's a good editor, but I found that I could do my job better with Eclipse. Many of my co-workers use SlickEdit instead and rave about it. It all depends on what you need to do and how you work. There's now a plugin so you can use the SlickEdit code editor in Eclipse. However, Visual SlickEdit comes with a price tag in the $200 - $300 range and the plugin is a about $150 or so.
> Surely, "Thanks for the object reference"? ;-)
References are not polymorphic, and therefore are not suitable for the public interface of most any C++ code. Nor can they be used in C interfaces. The number of strikes against references grows larger the longer you look at it, to the point where you shouldn't ever use a reference unless you're absolutely certain that you need one. Basically they're necessary for operators, and that's about it.
UltraEdit is hands-down my favorite editor. It carries a $40 price tag, but It is well worth it IMO. I also use Beyond Compare for visual diffs; its a great tool with lots of filtering options.
Just as an aside, Doxygen is actually quite a good tool for writing general documentation as well; constructing project documentation intranets is pretty straightforward. The fact that it integrates well with existing code, picks up clever comment markers, etc. makes it easier to write design documentation that links directly to the implementation survey stuff, but it's good for a lot more than just that.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
pico. or nano.
everything else sux.
For C/++ I use Dev-Cpp. It has built in CVS, and almost any feature you could need. Plus it is open source. (find it here: http://www.bloodshed.net/devcpp.html , but as the site goes up and down you can get it here: http://prdownloads.sourceforge.net/dev-cpp/devcpp- 4.9.9.2_setup.exe)
For Java I am just starting to work with it but from what I have done so far I have done in command and Eclipse. It seems to have most things that are needed. (find it here: http://www.eclipse.org/)
Utinam me logica falsa tuam philosophiam totam suffodiant.
Agreed . Netbeans 4.0 has improved. I am my slef getting used to complete opensource tools for development. I only have an x86 machine and use WinXP and Gentoo (some times) for Dev (though I have a project total linux in progress) for C++ gcc can be used in both caes (CygWin and MinGW for windows) But so far i ahve only stuck with JDK from Sun. I would like to try out Jikes some day. Coming back to Netbeans . its an awsome IDE but those of you who want to spend some time and configure their IDE for themselves ..it is not the complete solution.
In the end i can only think of either eclipse or Emacs (surprsingly no one mentioned it)
I plan to spend some time making my own IDE out of Default Emacs. Atleast it would help me master language features
Also ant+subversion for java and cvs+gnu make for cpp were my conclusions. Its not about having exposure to maximum tools ..or the best tools. But its about using the RIGHT tool (i think) :)
Also ..KDEVELOP is good and is available for Windows too with KDE Cygwin project (buggy though)
I still think that sticking to a single documenation style ie doxygen would be better.
geoaxis
Just lending support for IDEA... best java IDE i've found
Jgrasp
Source-navigator
Jedit
How about hiring PEOPLE to do this?
"This mission is too important to allow you to jeopardize it." -- HAL
I would personaly use Kylix, because it compiles better then any thing else.
:-)
I'm fairly sure I remember that Borland got the linux kernel to build with Kylix and it was faster and smaller.
Borland make the best compilers.
I'd also go for J Builder, because its cool, and its writen in Java. It also makes life easy for you.
Of course, I'd never write C, but what the hell, there is no accounting for taste
I completely agree. I've been using UltraEdit-32 for almost eight years. I've grown so accustomed to its flexibility and general usefulness (converting unix to dos or mac linefeeds automagically?) that I feel crippled in things like JBuilder.
The down side is, I feel productive enough in UE32 that I have not spent time learning Eclipse . . .
Er, references are not polymorphic? Surely you're on crack?
Marxist evolution is just N generations away!
Jam is by far the best make tool I ever used. Its so much simpler then all other makes. Yes its out of the standart, but it works flawlessly, althought kinda unmaintained.
I intend to live forever. So far, so good.
UPDATE: Version 8.0 of SlickEdit (the latest greatest) includes a Java GUI designer. It allows drag-and-drop GUI editing like you know from other products, and produces reasonably decent Java code.
It's a wee bit quirky, perhaps pending some small bug fixes, but it works and will even use the much-dreaded GridBagLayout.
Impressive, I think, for a tool that's supposed to be an editor. I strongly second the recommendation of Visual SlickEdit as an editor and, a little more reservedly, as a Java GUI builder.
When one person suffers from a delusion, it is called insanity. When many people suffer from a delusion it is called Rel