[Rant] Linux C++ IDE's suck
OICW

A while ago I've ranted a bit about how the Code::Blocks suck. Well, quite frankly I have to admit that at least they seem to suck the least from all of the other IDE's I have tried for C++ development so far. At least for me.

I have downloaded several of them just today and tried to import one non-trivial project (2 subprojects) of mine created in Code::Blocks. In addition I have tried to create a new project from scratch.

  • Eclipse - tried them, was able to import the project (not build it). The Eclipse RCP is just pure mess and not very space efficient. I gave up when I saw that customisation is possible, though it is done utterly wrong (how on Earth am I supposed to identify which toolbar is which from a list of checkboxes?). Not to mention that the whole IDE just walks all over me and imposes Workspaces on me etc.


  • Netbeans - when maximized the menus won't either even appear or just disappear as soon as they are opened. Issue in Swing/JDK or whatever. Not my problem. Anyway I gave them a try but wasn't even able to import the project.


  • Scite - not an IDE, just a text editor. Might as well use vim... ::)


  • Anjuta - a whole clusterfuck that was able to somehow open the project. But nothing more.


  • CodeLite - looks much like Code::Blocks. Amazingly fast start. Amazingly fast crash upon loading the project ::)


  • KDevelop - surprisingly it didn't look bloated like all of the KDE stuff seems to me since version 4. It started up pretty fast, though crashed as soon as I tried importing the project.

End of rant. Long story short, it seems that though the C::B autocompletition and whispering suck plus lots of other pet peeves. At least it doesn't get in my way and allows for great deal of customisation and flexibility.

Anyway, what do you guys use for development on Linux? Any suggestions what am I doing wrong with Eclipse?

Thomas Fjellstrom

The C++ stuff for eclipse just sucks.

Have you tried creating new projects for the IDEs rather than importing? Especially with KDev. I really liked it for doing kde dev.

Aikei_c

Linux is an IDE itself! You just need to configure it.
That's obviously a joke, but I think on linux most people use text editors with various packages/plugins/whatever and build their IDE themselves.
I wouldn't take my words seriously though, since I'm not experienced with linux.

Chris Katko

Geany.

{"name":"geany.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/5\/5579a976493d0f9f5943e87ea3e26ce3.png","w":919,"h":740,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/5\/5579a976493d0f9f5943e87ea3e26ce3"}geany.png

Highlighting, project support (don't know if your type is though), variable/class/etc context highlighting and completion, and a side-bar object view.

l j

I've used MonoDevelop for C++ with varying success.
Fairly stable.
Autocomplete wasn't as context-aware compared to VS last time I've used it, but much better than C::B. Felt better than C::B to me but didn't mess around with it enough to probably have noticed many problems.

OICW said:

Any suggestions what am I doing wrong with Eclipse?

I've only used it for Java development. Having a lot of open projects in a workspace can randomly grind your computer to your halt for no apparent reason, but it does require a hell lot of projects, so I'll let that slide. Sometimes something just breaks and requires a restart (not that often but it happens). They've added a restart button in the menu bar under one of the items (or maybe that's just the adk version), which is helpful but shouldn't be something that's required in the first place. Also I've found the standard auto-completion settings get in my way most of the time instead of assist me, but that's personal preference. It always felt quite sluggish though.

Chris Katko
taronĀ  said:

I've used MonoDevelop for C++ with varying success.

I tried to, but it would max out CPU usage and crash every time it tried to load on my Netbook.

bamccaig

IMO, the reason that no good IDEs exist on Linux is that it is contradictory to the "UNIX philosophy" and therefore hard to do well period, let alone without major funding. It's the same reason that no good IDEs exist on any platform. >:(

For starters, GUI applications are exponentially more complicated than their command-line brethren. What might take a day to add to a command-line client is probably a week's work in a GUI, if not more. And of course, all of that extra code adds to maintenance costs too. There are always going to be bugs, and with GUI code those bugs are exponentially harder to resolve.

The worst offense is that the code is tightly coupled to the IDE that it is written for. If you try to implement a feature for Code::Blocks then it can't be reused easily for Eclipse or NetBeans, etc. Part of that is short-sighted design, and part of that is GUI programming already taking enough goddamn time without adding the added complexity of abstracting things into reusable interfaces. This makes things difficult. When GUIs change they break everything because things are so tightly coupled to the GUI... Getting it right is very hard and rarely accomplished.

The command-line is the most efficient, precise, and friendly user-interface. Think of a command line as another form of code. That's all it really is. It is fast and precise to command the computer with commands (both in development and use). It is slow and error-prone to command the computer with graphics (both with development and use).

I think that most Linux users are more than happy on the command line. They've given it a chance, learned how much better it is, and just don't require graphical tools to get their job done. Why waste time developing exponentially more code for a worse result when they can apply their skills to something that really makes a difference? That's my personal opinion...

Don't knock Vim until you've persevered. >:(

Chris Katko

I'd say the reason Linux IDE applications suck is because most Linux GUI applications suck. And the reason, I think, for that is that people hate writing good user interfaces and assume that "anybody can do it" in the same way that non-programmers take for granted advanced programming.

The effect is further compounded by that fact that:

In Windows, if the GUI sucks, nobody uses it.

In Linux, if the GUI sucks, the programmers tell you you're not using it right.

The whole Dwarf Fortress complex.

OICW

Have you tried creating new projects for the IDEs rather than importing?

Yep, I have tried making a new project from sources since nothing else besides C::B can open C::B project. Perhaps I was doing it wrong (TM) and perhaps that project of mine doesn't have a very good structure.

Aikei_c said:

Linux is an IDE itself! You just need to configure it.
That's obviously a joke, but I think on linux most people use text editors with various packages/plugins/whatever and build their IDE themselves.
I wouldn't take my words seriously though, since I'm not experienced with linux.

Well, it's not a joke, it's entirely possible. But there's a reason I'm not using vim[1] nor esoteric desktop environments like xmonad/Awesome. I have found that I'd have to spend a unreasonably long time configuring these. Not to mention that in order to get used to them I'd have to configure them first. But here comes the Catch 22. And I don't have time to learn these things.

What I'm looking for is a software that allows code editing and project management because I can't be arsed to manually track all my files outside the code editor. I also don't want to write my own makefiles as they quickly become a mess. I'll have a look at Geany, thanks Chris. I might give KDevelop one last try, but crashing on me almost after start is a way to ensure I won't use the software in the future. I know MonoDevelop, but I wouldn't use it for C++.

bamccaig said:

Don't knock Vim until you've persevered. >:(

I seldomly use vim, but I just don't have the time to learn it properly. I have things to do. And at work IntelliJ Idea seems to work best for Grails development (though in my opinion it's much bigger bloatware than Eclipse and Netbeans combined).

Update:
Oh, I almost forgot, my main pet peeve with Eclipse was this (downscaled from 1280x800 resolution of my laptop):
{"name":"608098","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/b\/ebc88b8b68e3922afb6ce1291589633c.png","w":640,"h":400,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/e\/b\/ebc88b8b68e3922afb6ce1291589633c"}608098

References

  1. Besides quick config edits, hacks etc.
Thomas Fjellstrom
OICW said:

Yep, I have tried making a new project from sources since nothing else besides C::B can open C::B project. Perhaps I was doing it wrong (TM) and perhaps that project of mine doesn't have a very good structure.

Ah ok. It sounded like you were trying to import the project file. If its crashing just trying to open up the files, that really sucks. I don't remember KDev crashing on opening up a regular set of files. But I have to say, KDev does some fancy magic, so its not impossible that some new language features might confuse the heck out of it. That's my guess on what it might be. Still though, that's no excuse for crashing.

OICW

Well, I have seen something like "import project from sources" and tried that. When I tried to restart the KDev it crashed again. The third time I got some error message and no crash. But still a bad way to go. On the other hand I wasn't able to start CodeLite until I have deleted the workspace...

Jonatan Hedborg

The problem with developing without a good IDE for me is the lack of context sensitive refactoring (no, SED does not count), auto-complete (that is, language aware and parsing your code to figure out what you might need), direct error feedback, and maybe most of all, a usable debugger. Oh and easy and flexible code style formatting (that does not require that you learn Yet Another DSL to configure).

Linux is good for a lot of things, but it's been standing pretty much still when it comes to development environments, while the rest of the world has been racing ahead. This is because some people simply refuse to acknowledge that they might not have the optimal solution already. Really, what are the odds that the first idea was the best?

Thomas Fjellstrom

KDev has some powerful re-factoring. You just have to not have the version that's crashing for OICW. :(

Slartibartfast

I'm using QtCreator for developing C++ on Linux, it has every feature I expect it to have and it works well.
Of the above mentioned IDEs I only tried Eclipse. I've used it for a while but in the end it was to annoying to use.

OICW

You just have to not have the version that's crashing for OICW. :(

The version is this:

oicw@apollo ~ > kdevelop --version
Qt: 4.8.5
KDE Development Platform: 4.10.5
KDevelop: 4.3.1

I have just tried to create a new C++ project from template. Just as soon as I got to see the default main.cpp it crashed >:( what baffles me is why KDevelop depends on vlc.
{"name":"608099","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/7\/f77f0351b6145c1a95042dbef8275951.png","w":607,"h":351,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/7\/f77f0351b6145c1a95042dbef8275951"}608099

Update:
When restarted it presents me with selecting CMake binaries and crashes again. The third time it tells that the file process died unexpectadly. When I try to load the project it crashes :D

Update 2:
"You need a user account on the KDE bug tracking system in order to file a bug report..." - wait, what? I need what? :o No way in freaking hell! >:(

Update 3:
Oh and Geany is simply unsuable piece of crap. Creating new project was far from intuitive (base directory, filename, project name - it wasn't updating when I have edited the base dir and kept me bugging until I've found the right permutation of the parameters) and it's all DYI - write your own makefile, etc.

Thomas Fjellstrom
OICW said:

what baffles me is why KDevelop depends on vlc.

It likely uses the phonon, which depends on vlc or gstreamer.

Quote:

"You need a user account on the KDE bug tracking system in order to file a bug report..." - wait, what? I need what? :o No way in freaking hell! >:(

They got tired of all the people spamming the bug tracker. If you can't be bothered to take the step to sign up, they really don't care ;)

I'd do the same thing.

I use Kate, and Konsole. It sucks that it doesn't have decent project wide auto-complete, but it does do it for symbols in a given file.

OICW

They got tired of all the people spamming the bug tracker. If you can't be bothered to take the step to sign up, they really don't care ;)

I don't really care either :D I can't be bothered to create bazillion of accounts I use only once, though I understand the reason for this decision. Sadly, this was the first time I was actually going to file a bug report (though I think I'd have gotten flamed for not using the up to date version instead of the one from repo).

Thomas Fjellstrom said:

I use Kate, and Konsole. It sucks that it doesn't have decent project wide auto-complete, but it does do it for symbols in a given file.

I have used it in the past for small assignments. KDevelop is essentially Kate with project management (that seems utterly borked). Though I really need something that can take care of the tedious project management tasks. I hate to admit that I'm probably going ot use QtCreator after all :-/

Thomas Fjellstrom

KDev is far (far far) more than kate with project management.

Also Kate is the only one with that fancy automagical file tree view[1].

References

  1. hint, I wrote it \o/
OICW

Sure, that was gross generalisation on my side :) Oh, by the way I've always liked Kate ;) sadly, I can't right now remember that tree view you're talking about :( Anyway, thanks for suggestions rants etc.

axilmar

The command line can be more powerful than GUIs for complex tasks, but GUIs cannot be beaten for the less complex tasks.

For example, compiling a project in an IDE is as complex as pushing a button, because the IDE knows all the horrific details of calling the compiler and linker.

In the command line, even typing a simple command that does everything would take more than pressing a button.

Linux doesn't have a polished GUI and polished GUI applications because people that use Linux do not have an incentive to create such applications. When they have though, the results are just as good as those in Windows/Mac.

Evert
OICW said:

I seldomly use vim, but I just don't have the time to learn it properly. I have things to do.

There is no obligation for you to use vim (or any other piece of software) if you don't want to.

I will say this though: if I had thought "I have too much to do to learn to use vim properly" rather than "I have a lot of things to do and a deadline approaching. If I start using vim to do things I will learn to use it quickly" I would never have learned to use it.

OICW
Evert said:

I will say this though: if I had thought "I have too much to do to learn to use vim properly" rather than "I have a lot of things to do and a deadline approaching. If I start using vim to do things I will learn to use it quickly" I would never have learned to use it.

Well, when I'm in such desperate time constraint, the last thing I want to do is to complicate the matters by learning new stuff that seems unintuitive at first glance. Though I understand the reasoning behind it.

Trezker

A comment on the linux is an IDE thing.

In Haiku, there a desktop feature called stack & tile.
http://www.youtube.com/watch?v=7MleAbU3AXs

This allows you to put different windows together either docked or stacked (tabs).
With this you can put together your own IDE by grouping up all the different programs you're using.

I don't know if there is anything like this on Linux.

Edgar Reynaldo

I'm sorry, but I will never be converted to using a text based and not graphical code editor. I hate text interfaces in general, and all they do is slow me down. I know, I must be the anti-floss to bamccaig but I like my GUIs. When done right, they speed up work tremendously.

As for IDE's on Linux, I tried C::B and I didn't like it very much, and it takes a lot of processor time for some reason. There were menus and toolbars everywhere. Configurable I'm sure, but the defaults are horrendous. I like to have a menu and maybe one toolbar, and that's it. Get out of my way, let me have my screen space, and let me work.

Chris Katko

I'm sorry, but I will never be converted to using a text based and not graphical code editor.

There is zero advantage to intentionally using text mode on a graphics card. And if you're using text mode emulation in a graphics environment, you're using a GUI. Truetype font anti-aliasing doesn't occur in text-mode.

Don't get me wrong, I still love the glow of edit.com's Hyper C/Pascel/whatever format. But I've yet to find a Linux text editor that comes even close. They're all covered in obscure, silly, key combinations.

It's like "Yeah, you can do regular expressions while you write code! But all I care about is do you actually know how to write software?"

My points seem scattered around, so I'll just say, use what you want, just don't tell me a fake text-mode editor is automatically going to give everyone better code.

Edgar Reynaldo

I should have said console based vs graphically based. I just can't use something that doesn't even use the pointer. :/

Matthew Leverton

On Linux, I use:

  • Sublime Text 3

  • MonoDevelop

Both are very nice, but I don't use either with C++ because I don't code in that dreadful language. >:(

Chris Katko

C++ because I don't code in that dreadful language.

Or with Allegro, right?

Evert
OICW said:

the last thing I want to do is to complicate the matters by learning new stuff that seems unintuitive at first glance. Though I understand the reasoning behind it.

At the time, I was finishing up my PhD and wanted something that would let me program (mainly Fortran, Perl) and write text (LaTeX) and would give me the same experience on a Mac as it would on Linux.

Still quite glad I made the switch.

so I'll just say, use what you want, just don't tell me a fake text-mode editor is automatically going to give everyone better code.

Of course not, but neither the reverse.
An editor (whether you call it an editor or an IDE) is just a tool. You use the one that suits you the most for a particular task.

I should have said console based vs graphically based. I just can't use something that doesn't even use the pointer. :/

There's barely any difference between vim and gvim, other than being able to click in a gvim window and have the cursor move there.

In other words, I don't really see the difference you're making. :P

OICW
Evert said:

At the time, I was finishing up my PhD and wanted something that would let me program (mainly Fortran, Perl) and write text (LaTeX) and would give me the same experience on a Mac as it would on Linux.

Yep, that's a very good reason for learning and using it. Few years back[1] I've decided that I want to get into Linux and I have installed it as my primary OS. Few weeks ago I have wiped my Windows dual boot partition from a laptop clean. So, yes, I know what the immersion with the software can do.

Unfortunatelly, three things are keeping me from vim. For one it's a terminal program (nope, I don't like gvim, though there's hardly any difference between the two). Second, it isn't able to manage my projects, I'd rather offload this mundane task to the IDE. Same for debugging purposes, gdb's interface is too lowlevel for my tastes. The last thing that really bugs me is the bazillion of keyboard shortcuts that aren't always intuitive and easy to remember (sure by practice you get to know lots of them)[2].

References

  1. I actually cannot recall when exactly I've made the switch to Linux, must have been around 2008 or something
  2. Actually this is the other reason I haven't switched to a tiling window manager. I want something useful and friendly. The other reason, I've already mentioned, is that you have to configure it a lot in order to get a look like on screenshots.
Arthur Kalliokoski

I like to use a terminal box, Bash history makes it super easy to use, hardly ever type anything out in full, kwrite to do the text editing, and the ddd windowed debugger. I can open up another terminal for info or manpages. They're all desktop windows in their own right, and not tied to one big window. If I get too many at once to manage easily, I can just drag them off the edge of the screen to the next workspace and continue.

Simon Parzer

Use QT Creator, even if you are not developing QT. It has really good code completion. You can load projects directly from a CMake file, it supports the major compilers (MSVC, GCC, clang), it is fast, it runs stable.

Or you could use Vim with NERDTree, and some syntax completion, there are various options. Vim is the best choice if you are willing to invest some time and write your own scripts and macros. Even if I'm using Visual Studio, I resort to Vim sometimes. I think it's a joke that the standard search, or search/replace box in most IDEs does not allow regular expressions.

torhu

Visual Studio has supported regex search/replace for a long time.

Aikei_c

What torhu said. Been using regex for search and replacements almost since I started using visual studio.

Simon Parzer
torhu said:

Visual Studio has supported regex search/replace for a long time.

Nice, didn't know that. A little embarrassing actually, but it's never too late to start using it. :)

Arthur Kalliokoski

Sed does global/replace fine.

{"name":"204788.strip.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/0\/00974c38e425b41315b9d61fc6784eaf.gif","w":640,"h":199,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/0\/00974c38e425b41315b9d61fc6784eaf"}204788.strip.gif

OICW

Use QT Creator, even if you are not developing QT. It has really good code completion. You can load projects directly from a CMake file, it supports the major compilers (MSVC, GCC, clang), it is fast, it runs stable.

Actually that's exactly what I've ended up with :) I've swallowed the bitterness of it[1] and in the end I was quite surprised by it.

References

  1. Mind you, I tend to hate everything Qt related with passion.
Thread #613511. Printed from Allegro.cc