Hacker News new | past | comments | ask | show | jobs | submit login
JetBrains C++ IDE: Status update and Video report (jetbrains.com)
166 points by rdemmer on Feb 10, 2014 | hide | past | favorite | 126 comments



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?


Eclipse does not suck, you just need powerful enough box to run it. I use 32 core/256 GB ram workstation.


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.


It's kind of traumatising to see those kind of hardware requirements for an IDE :)


I think the parent poster was being sarcastic :)


QTCreator


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. [...]

http://richg42.blogspot.fr/2013/10/a-shout-out-to-qtcreator-...

Considering how VS is for games developers the gold standard by which all C++ IDEs are measured, this speaks a lot.


In my opinion, QTCreator is the one to beat at the moment. Its fast, simple and covers most of the IDE features for C++.


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.


> quad core i7 and 16GB

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.


Having used Visual Studio, I am not convinced that native code vs. VM-based code is the issue. :)


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 agree, I can live with these minor behavioural infractions by both products because they let me get far more stuff done than by not having them.


Buy/build a faster PC?


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.


If you are using it on Linux, make sure to use sun java. I've noticed it performs and looks a lot better then open jdk.


It has been "Oracle java" for a few years now and that is a political problem for some people, myself included.


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).


OpenJDK is more or less on par since version 7.


There's also some vmoptions tweaking you can do to increase performance some more.


Before Clang, we had GCC monopoly which was even worse. Situation is getting better.


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)

Seems like so does JetBrains ObjectiveC/C++ IDE :

http://www.jetbrains.com/objc/features/cpp.html

"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."


> ... a Clang monoculture when it comes to C(++) tools ...

There are plenty of other C and C++ vendors besides gcc, clang and Microsoft.

But yeah, clang seems to be the only pluggable compiler freely available.


Sorry, he really should have written "gcc, clang, and EDG" monoculture.

Are you aware of any significant compilers that use anything other than these as frontends at this point?

(microsoft, intel, portland group, comeau, etc all use the EDG C++ frontend)

I guess XLC still does (or it did when I was at IBM 7.5 years ago), but not sure they are really still in the running.


Visual C++ uses EDG only for the IDE. The compiler still has it's own frontend.


Please tell me they did not put Phoenix out in the wild :)


No, but they are rewriting the frontend to be AST based as well.

http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-21...


http://en.wikipedia.org/wiki/Intel_C%2B%2B_compiler

I don't have a lot of experience with it. I've used Cilk Plus a few times.


> Are you aware of any significant compilers that use anything other than these as frontends at this point?

Not sure what the embedded and console guys have as frontends.


Mostly GCC based, some now clang based, the rest MS.


Have you been using the latest version? Their latest versions have had a huge focus on UX. I think that Idea 13 >> Idea 10, for example.


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.


For fonts, what really helped it for me on Linux was copying the font and removing all hinting information (as outlined here - http://superuser.com/questions/614960/how-to-fix-font-anti-a...)


> 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.


> I was getting a bit worried that we would have a Clang monoculture when it comes to C(++) tools (

I know of at least one open source C++ preprocessor using GCCs front-end.


Which parts of Emacs rely on Clang?


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).


JetBrains is the only software company whose products I actually want to pay for, if for no other reason than I want to keep people that bright and hardworking fed and comfortable, so they can continue making great products.

Very excited to get my hands on this IDE - I might actually start coding C++ again.


First class CMake support?

Jetbrains, you're my favorite company. You actually pay attention to what people want when you release your software.


This might be a major benefit of them actually trying to make a profit by selling you the product.

Seriously though, this looks great, and dragging C++ dev into the 21st century is something they are probably uniquely placed to take on.


QtCreator also has this and is fast as hell.


QtCreator also has this.


And KDevelop has a very complete CMake implementation as well (unsurprisingly, seeing as how the vast majority of KDE projects use CMake and KDE was an early adopter of it).


Too late for me.. as i'm using gyp for some time now :(


A C++ IDE with modern refactoring capability? Those JetBrains folk are getting mightily ambitious. And I mean that as a compliment.


Amusingly (or not), when I attempt to refactor code using XCode, it states that refactoring C++ is not possible. Only C and ObjC can be refactored. I was surprised by this, considering the refactor support under VC++.

So well done to them!


I still find I can't trust XCode refactoring. AppCode (also a Jetbrains product) is fantastic in this regard. XCode is just for Interface Build, the rest in AppCode.


I just came across this message some days ago. What's the reason for C++ refactoring being hard?


The preprocessor, which means whatever the editor sees might have a complete different meaning. There are people that make all sorts of dirty tricks with the C and C++ preprocessor.

C++'s grammar is not context free, so you really need a compiler frontend to make sure the refactored code isn't broken.


I'm not a C++ programmer, but I'd imagine it having to do with turing-complete metaprogramming.


(lack of) context free grammar.


That music brought back memories when synthesizers were the cool new thing and people would try to make 'futuristic' sounding music in high school as background to instructional material. "the audio-visual club at Jackson High performs many vital be hilariously fun functions!"



Hah! Perfect.


It looks very promising, but watch it on mute!


What a soundtrack! I stopped watching the video because of that


That's a shame. I guess it's a bit too late to tell you that the player had a mute button.


Don't you miss the C64? :)


Proper C++ IDE for linux would be awesome!


KDevelop and Qt Creator are right now both adding libclang support for autocompletion (and hopefully more of the code model) and both became pretty good in the past. I suggest looking into them, especially as soon as libclang is in.


It's not like KDevelop doesn't have very fully featured auto-completion support right now :).

Its existing C++ smarts are extremely impressive already; the developers are mostly considering libclang to get out of having to maintain their own C++ implementation as time goes on and the language gains more features.


Qt creator is good, at least with < 100KLOC projects, probably with ones larger as well.


What's wrong with Emacs?


Whats wrong with using a magnetic needle and steady hand?


What's wrong with using butterflies?


Injectors > butterfly valves


It doesn't have the 'I' in C++ IDE.

Before anyone feels the need to praise Emacs here: It's been my primary C++ development environment for nearly 15 years. It does it alright, but it's not integrated in the way an IDE is.


qt-creator isn't bad at all.


For large code bases, I suspect Java parsing will not be performant enough. I love Jetbrains but I wish they'd just use clang rather than write a Java parser.


Also see this development of KDevelop which I think may become a great competitor: https://news.ycombinator.com/item?id=7211513


It's already a great C++ IDE right now, BTW. The referenced blog post is as self-critical as you might expect from a developer aware of the warts, but KDevelop's existing C++ smarts are actually very impressive in practice.


I like the features shown in the video, but hated the hideous background music.


Most youtube videos have a mute option.


I wonder if progress in this area will speed up the process of getting ndk/native development support in Android Studio. Congratulations to the JetBrains team for this milestone, it looks promising!


I notice it didn't automatically insert the semi-colon after the closing curly brace of class SMA. Haven't done enough c++ lately to think of situations where you wouldn't want this.


It will =) Just some current problems.


Eclipse has the best C/C++ tooling these days, IntelliJ has a lot to catch up still: http://eclipse.org/cdt

It is nice to see them trying.


If you abstract from platform-dependency Microsoft Visual Studio has the best C++ tooling these days, hands down.

If Python and Java are any indication, and JetBrains continue to invest in that, I bet their C/C++ IDE will be much better than CDT.


These days? How did you come to your conclusion, in my research Eclipse CDT has really fallen behind (Qt Creator, KDevelop and maybe even CodeLite)


I don't know, Qt Creator gives up on the code base I have to work on, CDT has problems but is still much better. I remember it used to be the same at my previous job.

I wish I could use KDevelop or Xcode, but we're doing our work on Windows (and that's the case in most corporations, because of Outlook...).

And I don't even dream about auto-refactorings, I just want an editor with good code browsing capabilities...


Why not use VS? I have plenty of complaints about various Microsoft products, but very few of them are on the quality of their C++ IDE.


Let alone Visual Studio and Xcode.


lol no

Compared to Visual Studio Eclipse CDT is cute at best.


I wouldn't be so quick to say that. VS is very C++ centric. Last I heard offical support for C features past C89 gets pretty spotty with MS.


By the way for Visual Studio you will be able to use ReSharper C++ support: http://blog.jetbrains.com/dotnet/2013/06/26/resharper-to-sup...


No IntelliJ IDEA support. Is this going to be included in AppCode or will it be a separate IDE?

Other than that the refactoring look beautiful. Better tooling definitely makes C++ look like less of a PITA.


It's based on IntelliJ and therefore like a separate IDE


I can't be the only one that A) Programs in multiple languages and B) Would gladly pay for language add-one to one IDE.

I'd be happy to use IntelliJ for everything!


I have IntelliJ Ultimate, but I'd actually love if my license would also be good for PyCharm, RubyMine, etc.

Obviously, you can get much of the same functionality by installing all the relevant plugins in IntelliJ. But, the per-language IDEs are nice in that they are tailored for that specific language. Also, they have a lighter footprint, since the plugins for the other languages are not loaded. And I don't see disabled JRebel buttons, etc. when working on, say, a Python project :).


The extra niceties of language specific IDEs over IntelliJ is supposed to provide a reason for giving JetBrains more money to keep up the good work. Their tools are surprisingly cheap when you pay for your own license.


Well, except for the Mac-only IDE (AppCode I think it's named), the other IDEs are just tweaked IntelliJs with stripped down configurations and language specific plugins.

Those plugins can be installed and used in IntelliJ itself, so you can have Java/Ruby/Python/PHP/Javascript/etc support, all in one.


AFAIK PyCharm comes with stuff (like Django support) that the Python plugin doesn't have.


I've seen references to Django in the Python plugin as well.


I am the lopposite? of you. I program in multiple languages and _like_ having multiple IDEs so that it doesn't turn into the cockpit of a 747. Once I switch contexts, I relax and stay for awhile.


This rules - I used to use visual slick edit years and years ago, glad to see jetbrains stepping up to the plate to provide a cross platform IDE for c++.


I've been using a version if it for a while in a private build. It gets a long wrong but it's very nice and simple overall.


Please please make it support Microsoft's C++ compiler under Windows. Otherwise it's a deal breaker for me.


For Windows you can also use ReSharper C++ support: http://blog.jetbrains.com/dotnet/2013/06/26/resharper-to-sup...


Oh God, release me from Eclipse, please ??!


Can I expect this would allow me to write an IDE plugin in C++?


I'm afraid no.


I doubt it.


This is great! I was waiting for this for quite some time now.


Hurry up and take my money!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: