Nice to see some new powerful C++ tools coming up. Also great that they seem to develop their own analysis code, which is pretty challenging for C++, but if JetBrains doesn't do it, I don't know who would. I was getting a bit worried that we would have a Clang monoculture when it comes to C(++) tools (outside of Microsoft at least: Xcode, Kdevelop, plugins for vim, emacs, sublime text, ... all use clang beneath the hood).
The only problem I have with JetBrains' products is the java UI they use. It never seems to fit into the OS. The mac version looks OK in screenshots but feels foreign when you use it, and the Linux version looks really bad (esp the Fonts). Also it is pretty sluggish - faster than Eclipse and NetBeans of course, but you still feel it's a java IDE beneath it. (Not saying that java based IDEs are neccessarily slow and unpolished, but I never found one that's entirely satisfying).
Personally I'm happy with how IntelliJ IDEA looks on my Mac or on my Ubuntu.
It can be sluggish but I've never met an IDE that isn't sluggish and that's worth the price of me not using a text editor such as Emacs.
This "Java UI" that they use give them a competitive advantage - it makes it easier for them to support multiple platforms. I'm happy that I get to use the same IDE on multiple OSes, as I routinely use multiple OSes (e.g. for work I now use OS X, for personal projects I'm using Ubuntu Linux and from time to time I use Windows too).
What other IDE has a comparable feature set, works on Linux, OS X and Windows and does not suck like Eclipse does?
Except when it remembers on a full moon to blow your metadata directory or the broken interaction between its worspace builders and external building tools.
Rich Geldreich, the guy from Valve working on their Linux OpenGL debugger uses Qt Creator and looks really satisfied:
I've been using QtCreator full-time now for 6 months and I think it's awesome. I would buy it in a heartbeat, but it's a free download and it's even open source.
A bit of the background behind my need for a VS alternative: For more than a decade I've been using Visual Studio (since VC5 I think), and various other IDE's from Borland/Watcom/MS before that. [...]
KDevelop doesn't use clang, it has its own C++ parser, template engine and so on. It's true however that KDevelop developers are currently investigating clang as a possible replacement of that implementation, so while your statement is wrong now, it might become true later.
Hope they port their IDEs to native code. They are sluggish most of the time and freeze pretty bad (during garbage collection ?). That sucks because the functionality they provide is pretty awesome in most of their IDEs (intelli-j, webstorm).
I unfortunately have this same problem, most of the time the IDE works great and it's feature set is most definitely nice. However sometimes it just locks right up / chugs along, especially with the IdeaVIM emulator -- which isn't that satisfying in itself. My machine is plenty fast (a sibling comment on this thread mentioned to another user that it may be the issue). 2.53GHz Xeon (Quad core, hyperthreading) and 24GB of RAM.
All of this has left me using vim + terminal for python development, loading up PyCharm community as a glorified debugger.
I haven't used it in _years_ but this used to be the best and only refactoring editor for C/Java/C++, http://www.xref.sk/xrefactory/main.html not sure if it is even supported or installable. It ran as a plugin in emacs. Even in 2003-4 it was able to index the entire Linux kernel in a handful of minutes.
That used to be a problem for me on a polycarbonate macbook, it has been decent on a quad core i7 and 16GB of ram. If you have specific scenarios that are slow they will be happy to look at them. Jetbrains has always been responsive to the bugs I file, it is making me a little teary eyed.
My problem is that the computers I'd like to code on are not the ones I have to code on. At work, I have a computer that is from Q1 2009. It has an Intel dual core (pre "core i") CPU and 2 GB ram, and is running some kind of ancient Scientific Linux (based on CentOS). I also have some code on computers standing on the other side of the atlantic, into which I have to ssh, and then use vi over the net, which is horrible. My portable is a trusty old eeePC that, while great for writing/coding on the go, and doing office stuff, is really painful to use with a modern IDE.
That sucks of course, but it's not going to change soon since I'm a scientist, not a programmer (although I mainly program). And it's not just my university, but apparently a common problem in my field. The crappy state of PCs doesn't affect the runtime of our programs though. We're supposed to run most code on the Grid or on batch systems anyway, which usually have plenty of power. But it's really a problem for productivity, and I wonder what I would be able to do if we had similar resources like industrial programmers.
Btw. at home I have a desktop PC that I bought for gaming some time ago (Intel i5 2500, 8 GB ram, decent GPU, Hackintosh/Win7), and I find myself more and more bringing work home to run on it, because it outperforms anything I have in the lab. On that, of course I have no problem running any IDE I've tested.
That frankly sucks man. I view my computer as an extension of myself and not something my employer dictates. I have put SSDs, memory and extra monitors in all employer supplied equipment (and removed them when I left). If that isn't possible, I just use my own laptop / machines. As a scientist, your condition probably won't change on its own, you will always be 4 years behind, which is on the painful end of the curve for using current generation software.
If you can't upgrade your machines, then yes, downgrade your software so it runs at a reasonable speed. There has been a trend, and this is an extreme example, of people using DOS software like wordperfect and turbo c++ in an emulator on modern hardware to get blazingly fast full keyboard navigated apps.
I also have some code on computers standing on the other side of the atlantic, into which I have to ssh, and then use vi over the net, which is horrible
Have you tried using sshfs and then running an editor locally? Just don't use a GUI-based file manager on the mounted filesystem (esp. the OSX Finder.) :(
Yeah, this is what I used to do. There were some problems with file managers as you said, but it worked nicely in IDEs. Nowadays I only log in to that system to submit batch jobs every now and then, so it is not a big problem anymore.
> I'm a scientist, not a programmer (although I mainly program).
I guess it comes down to a good employer. My employer takes the view that a) give people the tools they need and b) developer time is expensive, computers are cheap in comparison.
I never experience any slugginesh or freezing. And I don't think porting it to native will do much, the myth about java being sooo slow should be dead by now.
Which version? I've found I get less and less pauses with each new version of IDEA. Currently the only blocking pauses I get now are when I change branches and my Maven POMs change underneath IDEA and it has to recalculate what modules belong in my project.
Visual Studio 2013 is pretty quick off the blocks now. They've definitely made a bunch of improvements with initial load time and time to open non-trivial solutions. That and some tweaks they've made to the glyphy UI has made me fall in love with it again, especially running the out of box "Dark" theme.
Yeah, it starts up fast. But there are still pauses and freezes when it does certain things. I don't find them to be particularly less significant than pauses in Jetbrains' products (which also startup pretty quick here).
I can only speak for myself, but... I have that option privately, and in that situation I would by a new PC. But I need a C++ IDE at work, not for my hobby...
So you complain about the most awesome thing which has happened to C++? A tool (libclang) which parses the code 100% the same as the compiler does including all the newest specs and quirks and then outputs more abstract data for IDEs to use. It’s rather strange so many IDE developers waste so much effort to duplicate this C++ parsing algorithms and actually all of them fail at it. Not a single IDE has managed to properly parse C++ templates and C++11/14 features like auto declaration and so on.
I don't think it's fair to call captainmuon's comment a "complaint". More hoping for a healthy technical ecosystem. After all, clang is in itself partly a response to the prior gcc monoculture.
Right, I do think clang is a godsend. Finally reasonable error messages, modern compiler technology, you can interface it with tools for "intellisense" and syntax highlighting in many editors, ...
I have the "pleasure" to work with something called ROOT, which is a data analysis toolkit for particle physics. One major component is the C++ interpreter CINT. Now you can imagine a C++ interpreter is a very bad thing. Subtle differences in execution, scripts that are almost valid C++ code but not quite, etc.. ROOT tried to offload some parsing to GCC via GCC-XML, but IIRC that didn't work so well, and GCC-XML was also doomed for political reasons (RMS didn't want a stable interface to the internals of GCC, so that nobody could interface it with closed-source code). With the new version of ROOT however, they are moving to a clang based interpreter, which means much less bizarre bugs due to corner cases of C++.
(originally by Masaharu Goto, which lead to the saying "Masaharu Goto Considered Harmful"... I don't mean to offend that guy though)
Hilariously no attempts seem to be made to actually sort this out at the language level. Context free grammar anyone?
Fear of breaking backwards compatibility is what slowly kills languages eventually. As long as every new version needs to be backwards compaitbile you can only add and deprecate, never remove and fix.
Have JetBrains said anything about possibly addressing these issues? Besides the "ew" factor of using anything labeled "Oracle," Oracle Java has been a right royal pain to install and keep up to date ever since they pulled it out of the various distro repositories. (They provide an RPM for downloading, but not a DEB, which makes life even more fun for Debian/Ubuntu/etc. people like me.)
OpenJDK on the other hand is in the repos, and is supposed to be the official Java reference implementation these days anyway (right?), so it seems like at some point it would be good for JetBrains' products to play nice with it...
I use this PPA: http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-... -- which has no Java files but can automatically install Java when it gets a new version. It seems decently up to date (though I would recommend never running Java on the web anyway, unless you have to because you live in Denmark).
The Java UI they use is part of what makes it easy for them to have a cross-platform product that works almost anywhere Java does.
I also find the "never seems to fit into the OS" argument a bit silly as most of the popular IDEs don't really "fit" either. For example, XCode's UI design is all over the place -- it doesn't match a lot of what users expect from OS X. Visual Studio has screaming uppercase menus and odd controls (among other oddities). Eclipse, well, it's never even come close to looking like a native application.
So perhaps the more interesting question I'd ask is what IDE have you used actually feels, looks, and acts like a truly "native" application?
In the end, I care more about a usable application that works on the platforms I use consistently then one that works wildly differently on every platform just so it can "feel native".
I think a shared look is important, but a shared feel is more important. That's where the real problems often start. Does your editor know my custom dictionary? Does it have the standard key bindings? My overrides? If the need arises, can I use user interface scripting to drive it?
Also, look can be annoying. If, IMO, my favourite font looks ugly in tool X, I'll have to spend hours finding a replacement (yes, that replacement won't be better than the default or than what I chose after three seconds, but it takes hours to admit that/adapt to the idea that that font is OK)
And yes, Xcode, Visual Studio a d Eclipse aren't the ideal son in law, either, but that doesn't mean we cannot bash other would be sons in law.
I was getting a bit worried that we would have a Clang monoculture when it comes to C(++) tools (outside of Microsoft at least: Xcode, Kdevelop, plugins for vim, emacs, sublime text, ... all use clang beneath the hood)
"The IDE will be integrated with Clang Analyzer, so that more than 2000 code inspections and error diagnostics results from Clang compiler would be shown right in the editor."
No, but I will try it again once I get a new laptop. It might also have been an issue of Java versions / Ubuntu versions / Fontconfig settings.
I already noticed a big difference, roughly comparing PyCharm when it first came out, and the new experimental Android SDK a few months ago - both based on JetBrains code, the latter was much more polished.
The latest release, v13, has moved towards a more agnostic style that keeps a lot of the same widgets but doesn't try to feel like it belongs to any one platform. Definitely give it a try if you haven't used intellij in a few versions.
A big thing is whether you are using openjdk or Oracle's JDK(IIRC Oracle's makes IntelliJ look a lot better). OpenJDK generally makes interfaces look bad.
> The mac version looks OK in screenshots but feels foreign when you use it
I use it daily on OS X and it doesn't feel foreign to me, but then I usually hate most of OS X's shipped interfaces anyway (my calendar is still pretending to be made out of leather), so perhaps I'm a poor judge of fit.
Nothing, but I think I saw a plugin (or what that's called in emacs land) that uses it for syntax highlighting. I definitely know there are such plugins for vim and sublime. It seems to be pretty easy to interface with clang for such purposes.
There is also an auto-complete provider that uses clang for giving completion suggestions. I also think there might be a company-mode backend in the works, though I'm not sure about this one (company-mode is the "official" completion framework for emacs, while auto-complete is the unofficial but most widespread one).
The only problem I have with JetBrains' products is the java UI they use. It never seems to fit into the OS. The mac version looks OK in screenshots but feels foreign when you use it, and the Linux version looks really bad (esp the Fonts). Also it is pretty sluggish - faster than Eclipse and NetBeans of course, but you still feel it's a java IDE beneath it. (Not saying that java based IDEs are neccessarily slow and unpolished, but I never found one that's entirely satisfying).