Hacker News new | past | comments | ask | show | jobs | submit login
CLion, the new C/C++ IDE from JetBrains (jetbrains.com)
289 points by broodbucket on Sept 8, 2014 | hide | past | web | favorite | 146 comments

I have to say, I'm a big fan of JetBrains products. I use PyCharm pretty much every day and love it.

The only thing that I am not a big fan of though is having to install Java to run any of their IDEs. I'm not a Java developer, and have no need to install it on my system, so having to install it just to use my IDE is a bit of a pain. Small price to pay I guess for an otherwise great product.

Congrats to the team on another great-looking IDE.

I dislike dealing with the JVM as much as all the non-java programmers but this is trivial on Mac OS X + Linux and is what allows JetBrains to launch on virtually every platform from day 1.

On OSX the JRE installs on demand and requires very little from the user other than clicking OK and a password. On Linux package managers are there for you. In practice, I'd rather not have Java if I don't need it but it's fairly painless to get setup for this sort of thing.

Sidenote: JetBrains makes a great IDE, I always hear python programmers praising pycharm and java programmers praising intellij.

Though I don't personally have any problem with system Java installations, I agree that it would be nice if JetBrains would just do as most Java game developers (and many destop app developers) do and simply bundle a JRE with the IDE. It'd mean considerable bloat if you use many JetBrains IDEs (as opposed to just IDEA with plugins) of course, but would eliminate the "why do I need Java" complaint.

That, or Oracle could do the right thing and a) remove the crapware installation from the public JRE installer and b) fix the JRE updater to work as silently and smoothly as, say FireFox or Chrome updaters. The latter has gotten much better of late, but could still use improvement.

They could optionally ship the IDE with their own embedded JVM. I think that Eclipse does that (or maybe did, I did not check it recently). I don't think it is necessarily worth the trouble though.

I am able to run IDEs from JetBrains on goddamn Solaris without any effort. I can't say that about nearly any other modern piece of software.

I seriously don't understand the "I hate Java" meme. My job and hobby languages are all JVM, front-end notwithstanding, but I cannot get a firm grasp on where the hate is coming from. This is about as sensible as me saying "I hate Python" or "I hate Ruby" so I will avoid installing it on my machine. It's just a language and a runtime.

If you don't like writing it or working in it, then sure, we all have opinions on what makes a language good. Not wanting to install a piece of software because it runs applications written in that language just strikes me as a bit silly.

Maybe I just have Stockholm Syndrome after all of these years.

People who aren't Java developers hate it because the JRE install is irritating as FUCK. The JDK is smooth sailing. Install, add JAVA_HOME, done. The JRE, on the other hand, pesters people to update once a week, adds a little tray icon, and installs the ASK toolbar by default. I'd always used the JDK, so I never noticed how gross it was until I installed the JRE for someone.

"This looks really different. Oh man it's asking you to auto-update. That's frustrating."

    rpm -ivh jdk-<version>-linux-x64.rpm

    export JAVA_HOME=/usr/java/default/
    export PATH=$JAVA_HOME/bin:$PATH
Was that hard?

It is not hard once you know. Finding out is one more thing. One more poorly documented thing at that I think.

Google is your friend. That is how I learned. I wasn't born with this knowledge.

I'm not sure what you're trying to refute. I was (am) saying that installing the JDK is really pleasant and painless. Installing the JRE is gross for the average Windows user because of all the bullshit that Oracle stuffs in there.

I think that is a common trend with Windows software. I haven't used Windows close to a decade now but I remember the atrocious malwares shipped in form of toolbars on Windows very clearly. And probably that is what forced me to move to a better development platform that Linux is.

What about Windows?

For Windows the JRE is bundled with all of the JetBrains products.

Really! Cool - I was not aware of that (only using them under Linux).

I don't hate Java. I hate the Java installer, and the update manager. I was hacked maybe a year or two ago browsing a normal website, it was Java. Java installs itself into your browser and makes you vulnerable to every web page you visit (edit: during an open window for exploitation in an outdated Java plugin). In reality, I now uninstall Java on my browser and to this day I have not been to a website that requires it, other than shady pop ups and shady websites.

There's also the update manager, I don't know why but Java feels the need to update every other day or week, and then on top of annoying you by prompting a UAC (yes I know I can disable these) they add a toolbar into every update / install process, sometimes you just miss those check boxes and then all of a sudden you have toolbar hell.

I love Java, I hate the installer and the updater. I also hate the JDK itself, it's a horrible mess, try switching to C# for a year, then go back to Java. You'll hate it. I still love the capabilities of Java, but it needs a overhaul on a lot of things.

That's Windows specific, I understand the frustation and I am sorry you have to live with that. Every time I boot back into Windows I get harassed by updates and reboots. I don't miss it.

Funny, my Ubuntu box shows an update dialog almost every day.

The Ubuntu update dialog is unified and has zero risk of tricking less savvy users into installing spyware. I'm sure you've seen Windows machines with five different updaters popping up at boot, competing for attention (e.g. Flash, Java, Apple, MS Update, MS security alerts, etc.)

Your point was being harassed by updates.

As for spyware, oh it is so easy to convince Joe user to install it, even on UNIX systems. Social engineering makes wonders.

I'm actually not the one who made that comment. My mention of spyware was in reference to the Ask toolbar installed by the JRE on Windows. Installing such things is not a normal part of the Ubuntu update process.

Nor it is from JRE, if you bother to take it from the proper place.


Oh, I don't know, just bother to read what the dialog says.

The official JRE really does prompt to install the Ask toolbar. First Google result: http://www.quora.com/Java-programming-language/Why-does-Java...

I've mentioned elsewhere ( https://news.ycombinator.com/item?id=8285065 ) that I really don't mind Java, and FWIW I have liked the Jetbrains IDEs, but the consumer JRE installation and update process is really quite bothersome.

Why so many people hate Java ? Let's start with the fact that it installs an auto-update system that tries everthing it can to trick you into installing adware (ask-bar).

in addition to aardvark179's tip of installing the JDK to not get the sponsor message, there's also a well hidden option in Java's Control Panel to prevent them from asking you to install the sponsor:


What version are you using? I don't have that option in 1.7.0_60

Thank you sir! You took a load off me.

This does not happen on either OS X or Linux. I'm reasonably sure it doesn't happen on Windows with the JDK, either.

Install the JDK, no auto-update guff, and extra useful tools as well.

Or just install the JRE, but from the developer download site (same place you download the JDK).

For me at least the main annoyance of using Java-based tools are issues like these: http://youtrack.jetbrains.com/issue/IDEA-57233 . Had to install a non-official patched JVM to get the fonts to look decent, when all the other applications on the system render fonts just fine.

That's exactly the reason I don't use Jetbrains' products (font rendering looks like crap in them on Linux) and stick with Eclipse. I installed the non-official patched JVM to get the font rendering to look good but I'm not going to depend on a product that requires me to tweak the JVM just to make the product look good. My ability to tweak the JVM might go away at any point since I can only patch OpenJDK and Jetbrains recommends the Oracle JDK. Then what? Suck it up and look at the ugly fonts? No, thanks! I'd rather use apps that use SWT and render fonts natively. The couple of Swing apps I use are open source and if I'm sufficiently motivated to continue using them I can port them to SWT or find some other compromise. I wish more people would feel the same, then, maybe, Jetbrains would find a solution, but ,alas, it seems too few people care for Jetbrains to take notice.

Regrettably, fact of the matter is that fonts look bad on Java, particularly on Windows where Java-enabled programs are unable (for whatever reason) to leverage ClearType and thus get the antialiasing done just right.

To pick on Java is my point of contention. Every runtime has warts, If I did some digging I could find issues with any other environment. It just seems like folks pick on Java disproportionately. That might just be the HN echo chamber, but I don't see too many folks bitching about any other non-native runtime.

Part of my problem with Java tools is that I'm always on a laptop, often running on battery, and it seems like every single Java-based program on OS X just sits around using 3-5% of the CPU even when idle.

Well, that comes from the Garbage Collector, cleaning after all the programmers to lazy think about resource usage. But hey, never mention this when together with Java-developers, because saying something critical about garbage collection ist almost as bad as denying global warming.

Java programmers aren't too lazy to think about resource usage. They have just chosen to devote their intellectual resources to solving problems on a larger scale than memory management. This is a perfectly appropriate decision for a very large number of problem domains.

This is what good tools allow people to do.

What? I may be wrong but I get a macho vibe from your comment. Men handle memory themselves.

Wise men choose the best tool and sometimes not having to bother too much about memory handling frees up a lot of mental bandwidth to deal with much bigger problems.

A lot of early days Java apps built with Swing were slow and ugly. I think that's where a lot of the "java is slow" stories come from.

Of course, Jetbrains' products are a proof that you can use Java to build modern apps that are pretty good.

> A lot of early days Java apps built with Swing were slow and ugly.

Specially because most developers couldn't bother to write proper Swing code, or reading blogs like "Filthy rich clients".

Indeed, one of my proudest projects was written with Swing using a better LAF and custom widgets. I'm primarily a web developer at present, prefer Ruby or C over Java, and would rather build GUIs in Qt, but I don't mind Swing.

Actually the jetbrains UI is pretty bad on osx.

The JRE is a really bad citizen on Windows, I gather. At least at some point, it actually shipped with toolbars! MacOS and Linux users don't have to deal with this.

i don't hate it but i understand that it adds one too many steps.

my code works on every platform actually out of the box. no installs necessary. i consider that important so i just can't use JVM in general unless i sacrifice that...

i usually get disbelief until it is seen, but all of my large non trivial projects build out of the box in one step and run with one click. i really value that.

that being said, all my android projects use a JVM in the end. :)

I don't hate Java. I have no experience in using it as a language, so I'm not qualified to comment in that regard. My point is that I would rather not have to install it simply to use this tool.

Its like having to install Ruby simply because these a single Gem that you want to install and there is no other way to go about it, even if you never use Ruby for any other purpose. More of an annoyance than anything else.

Think of it this way: If there weren't licensing issues, they would probably just package it into the IDE distro, and you'd still be "installing" it on your system, you just wouldn't know about it..


You can't understand this. It is emotional... ;-)

i dont think you need to install java to run the ide - it comes with a compatible version of the Java Runtime. You need to install java if you want to work on java projects.

Depends on the platform. "What do I need to start with CLion?" lists "Installed Java is required, Apple JDK 1.6.0_65+ is recommended" for OSX and "Oracle JDK/OpenJDK 1.7.0_51 is required" for Linux.

Only Windows bundles its own JVM, same as other non-IJ IDEs.

Yep, I had to install OpenJDK. Haven't tried installing on anything other than Linux, though.

Thanks for making a 41 comment branch that is about your in ability to put up with install _pain_. Totally not constructive for discussing the article.

I don't want an IDE. I want an IDE service. Something like GoCode for Go or Omnisharp for C#. IDE's miss the point. What a programmer edits code in becomes more and more personalized as time goes on. An IDE can never hope reach the level of customization we crave. But a service that our editor of choice can consume? That is where the future is at.

When JetBrains releases an IDE as a service then I'll be excited.

I do admit that of all the IDE's I've used IntelliJ was definitely the least annoying. But it still doesn't hold a candle to Emacs in Evil Mode for me.

> IDE's miss the point.

No, because IDE are more than just coding.

They offer an integration of services that one usually requires in large scale projects.

I want:

- semantic refactoring

- background compilation as I type

- static analysis

- integration with bug tracking software and source control

- visual debugging of data structures, threads

- ability to change code during debbuging sessions

- navigation of binary artifacts

- debugging unit tests

- semantic code navigation

- GUI designers

- XML build tools

- visual navigation of databases

- UML dual way generation

- ...

And above all, avoid trying to make Emacs or VIM do half of these features, every time I install them.

zaphar's point, and I agree with him, is that most of the features you mention should be offered as services that can be used by whatever UI suits your fancy. It is a shame to have to switch to shallow editing tools to be able to benefit from all this machinery.

Did you miss the visual part?

did you miss the "most" part?

No I did not.

A great part of an IDE worflow is the visual experience. Having some kind of service, while forcing each client application to create their own UIs, kind of beats the purpose.

This is why on UNIX world the developer experience feels half-baked to those of us that could step a bit into the world as imagined by Xerox PARC.

It's a great part of the workflow for you. For me it's constant visual interruption of flow state.

Nothing about having a service prevents offering that visual experience. IntelliJ/Eclipse the IDE can still exist while consuming the same backend that my Emacs consumes. You get your visual experience that helps you achieve flow state. I get my highly configurable/optimized editor that helps me achieve flow state.


I have never, ever found the "visual experience" to be the reason that I enjoy using an IDE. Besides, even if it were, what about that procludes building a nice UI around existing modules?

Emacs AFAIK can do all those things, with different degrees of integration depending on the language. For pure C, for instance, Emacs has always been the "IDE" of choice for years in UNIX(ish) environments. Thanks to Clang C++ is now covered too. For Lisp languages there is simply no other option. Even scripting languages like Python, Perl and Ruby have all got fantastic integration, and their modes keep getting better and better because of their open source nature, adding semantic analysis and tools integration. The package manager makes it really easy to automatise installation and updates.

Sure, its learning curve is unusually high and Elisp knowledge is required for some edge cases, but it's definitely worth in the medium and the long run.

> Emacs AFAIK can do all those things, with different degrees of integration depending on the language.

Did you miss the visual and semantic adjectives?

I know UNIX since Xenix and DG-UX days, before Linux was a thing and Emacs was my editor to go up to 2005.

Unless it has changed radically, no it cannot do all these features. Half of them, yes.

Sure you can program them yourself, to get as end result some text interface to ELisp functions.

But I no longer want to spend time doing that.

> For Lisp languages there is simply no other option.

Only if you don't want to pay for proper Common Lisp environments. They can do so much more.

> Unless it has changed radically

It didn't. Emacs still tries to do most of those things and fails more often than not. I love Emacs and I use it daily, but between it's dated look, monstrous codebase, enormous feature set and limited resources dedicated to development it cannot hope to match programs written for a single purpose by a team of professionals.

Still, Emacs is great editor. I'm not going to dump Org Mode, for example, and calc is great, and scripting is absolutely awesome (Emacs is also great IDE for Elisp) and so on. It's great for many things, and it's even ok for programming, but it's never going to be as good as IDEs. And IDEs are not going to have mail & newsgroup clients built into them, I suppose.

Visual, semantic, binary navigation, ...

I used Emacs on my UNIX projects between 1994 and 2005.

Jetbrains appears to be making some effort to "modularize" the IntelliJ platform. I'm not sure exactly what that entails, but they've at least gotten far enough such that they are building a web-based tool for code browsing and more [1], so it appears they've made some effort to decouple the Swing GUI from their underlying platform. I'm not sure how much of this can be seen in the open source IntelliJ Community Edition or where it stands, but maybe something similar to NRefactory (what Omnisharp uses for C# support) can be achieved.

BTW I've recently tried omnisharp-emacs, but found dealing with larger C# source files was way too slow to be useful. But it's pretty great to be able to use Emacs for C# and get useful code completion, so I'll be continuing to make efforts to make this work.

[1] http://blog.jetbrains.com/blog/2013/09/18/upsource-a-platfor...

I'm using Omnisharp extensively but I don't have to deal with large C# files so I've not run into any issues there. I try to keep the classes and methods small and clean so I hope I continue to not run into issues there.

You want to send all your code over the internet for processing every time you edit a line? This is (to a much lesser extent) how Salesforce's IDE works, and it's awful in my estimation. The only reason to do it is if (again, like Salesforce) you have a proprietary platform with an automated verification process that you don't want to reval to users.

Zaphar obviously didn't mean a web service. Look at the READMEs for the projects he mentioned to get a sense of the architecture: something that understands the language, be it a library, a daemon, what have you; and a binding of the editor to that thing, like a plugin.

Pitching a new IDE is asking a programmer to throw away years of experience in their editor of choice (mine, for better or worse, is Emacs) for some shiny feature.

Wasn't obvious to me :) In that case, I would generally agree, and I'm not sure why that isn't the standard model (since I can't think of many IDE frontend features that don't reduce to some pretty generalizable concepts, while I can think of lots of IDE backend features that are very unique to the language in question).

(I see above that people are arguing that this doesn't solve the issue of visual integration, but I don't see why separation of concerns in this way would make it harder to write a language-specific IDE--can anyone point to any examples?)

This looks really interesting, glad to see some new development in the area of C++ IDEs.

That said, it's disappointing that they have explicitly tied this into CMake. This limits it's usefulness / ease of adoption for anybody working on a larger project with some other build process. Hopefully more generic support gets added as this matures out of EAP.

As for the first 1.0 release, we'll go with CMake. After that we have big plans: http://youtrack.jetbrains.com/issue/CPP-274

Awesome! I certainly get wanting to keep the feature set more limited while you gather feedback. I look forward to trying this out at some point in the future.

I wonder why they took GDB instead of LLDB, which was designed specifically to be nicely integratable with IDEs.

other than that, CMake is ok for a start, but some kind of support for good-old makefiles will still be needed. most of the projects won't be bothered to switch to CMake just to be compatible with IDE

We are planing LLDB integration: http://youtrack.jetbrains.com/issue/CPP-359

As for the other build-systems: http://youtrack.jetbrains.com/issue/CPP-274

Maybe just a question of time. AppCode (the Objective-C version) runs LLDB.

I'm honestly not sure what it does that QtCreator doesn't (for free!). Especially since I'm not particularly fond of CMake.

Congrats, thought. C/C++ could use more powerful and cross platform IDEs.

Thankfully thanks to native code resurgence and also Clang's work, it is changing.

IBM had a version of Visual Age for C++ that tried to offer Smalltalk like developer experience, but it used lots of memory back then, and it failed to get enough customers.

There was also another company selling a similar product, that used to sell Lisp Machine software, but I don't recall the name any longer.

C++ Builder is also quite good, but thanks to Borland/Inprise/Embarcadero mismanagement gets ignored outside big enterprise projects.

Currently QtCreator refactoring seems to be quite limited still.

> There was also another company selling a similar product, that used to sell Lisp Machine software, but I don't recall the name any longer.

Are you thinking of Lucid and their "Energize" environment? If you're interested, Richard Gabriel (founder of Lucid) published a set of essays about the failure of Lucid. You can get them here (linked from the author's site): http://dreamsongs.com/Files/PatternsOfSoftware.pdf The section on Lucid is called "Into the Ground".

Yes, that is it! Thanks.

I developed a significant project in C++ Builder more than a decade ago and it was a really smooth experience.

How is the support of C only in QtCreator? I always read C++ on the project page.

This is great...I am already a subscriber for most of their product they just found a new way for me to give them more money.

I would love to see them implementing a C# (Mono/.Net) IDE for Linux and Mac. Monodevelop/Xamarin Studio is ok, but I love the power and flexibility of intellij idea.

Given their investment in ReSharper, and that almost everyone who uses .NET is using VS, I would be surprised if they think it's worth their while.

Having said that, I wouldn't have expected them to put out AppCode, either but maybe it's because Xcode sucks so amazingly much whereas it seems everyone sings the praises of VS.

I agree, but I am also waiting to see if they are brave enough to do the same thing they did with AppCode but with C#.

Interesting, they came up with ReSharper for C++. I wander how that compares to Visual Assist.

Compared to VAX, R# is aiming at 100% code fidelity. This means not skipping on macros and the like when performing analysis.

This is really exciting to me, I've been waiting for this since their update in February And I just picked up C++ again last night after a long break from it. Perfect timing! I was already missing that Alt+Enter functionality.

Apparently Resharper for C++ has been in public EAP for a little while already (first time I've heard of it). I'm definitely going to try both, but does anyone know the differences? It seems like CLion is more mature that Resharper for C++?

Edit: Does anyone know of a good way to convert a Visual Studio solution to cmake? The only thing I use C++ for anymore is VST plugin development, which is pretty Windows-centric, and everyone uses Visual Studio.

Ah, so not a vaporware, it seems! Great to hear and congratulations to JetBrains.

Caveat: apparently published under an "Early Access Program" as of now, where "EAP build doesn't require any license and can be used freely for 60 days.", and "Please note that the quality of EAP versions may at times be way below even usual beta standards."

Now, my most important question, that I couldn't find answer for on the pages, is: does it provide "Find all references", and one that would correctly resolve references in advanced templates? (i.e., better than Eclipse CDT's)

It definitely provides "Find all references" - as to how well it'll work in the presence of templates, that's anyone's guess. But I'd definitely bet it's better than CDT's, or will be soon.

Awesome! And I confirm it does provide from looking through bug reports. As to whether better, I'd be wary to any claims, but I think I might give it a try!

edit: argh, yes, now I see that it's mentioned in the original blogpost; haven't read it to the end :/ this->facepalm();

Great news~

Only minor disappointment for me was that you can only use it on windows with gcc via msys, and you have to struggle through that install yourself. Given that there's a build of clang* out there for msys already that would have been nice to support... but I guess it's still EAP.

* http://sourceforge.net/projects/mingw-w64/files/Toolchains%2...

Try these one-click installers; the experience is much better.

mingw-builds to install gcc:


msys2 to install the rest of the build environment:


(as well as a growing number of packages, managed with a port of pacman from Arch)

You could try using Clang from MinGW. May be CMakeCache changes will be necessary in the CMake tool window. But in the whole should work ok.

Which is where Qt Creator currently shines (would be interesting to hear from someone who has tried both) :)

i see that JetBrains people are in this thread. Is there an "everything" license? I can justify PyCharm, and perhaps CLion; but if the (combined) price was right I'd also get IDEA.

For the majority of programming languages/environments (e.g., IDEA) I suspect the community edition will be enough for me. But I would be happier if I could pay a reasonable price and get all JetBrains products in one install.

This is timely for me. I'm still new to C++ and have been using vim so far. I'm having trouble figuring out a way to easily refactor C++ code (e.g. renaming things across multiple files). In Python there are vim plugins which do a good job of this, but I haven't found any good plugins for C++ refactoring.

It might be worth learning a new environment if it makes this easier.

I had a look at the video and it really seams nice, but for me the cost (learning yet another tool, integrating it into your workflow, dependance on yet another big-size software project) is too high.

The fancy stuff they show you are in my opinion just short-comings of C++ [activate flame-war prevention system] or not THAT important in development. E.g.

- implementing getters/setters: just make the thing public, the whole private/public bullshit is too shallow

- implementing methods: inheritance is normally used with caution and is just a small part of your application (e.g. a core that uses it); you will think about getting this abstraction right (your inheritance tree) and the time it needs typing the text to implement the methods is often small in comparison to the thinking over inheritance.

- completion: IMHO there are different modes you are in, while coding: (0) prototyping (researching the problem, reading API documentation) and (1) implementing a robust solution; In the first case, again, the time it takes you is more constrained by the thinking you do, and in the second case you probably know the API and important functions already (from the previous step) so the auto-complete is not needed anymore.

The coolest thing is the renaming which really might help you tackle one of the hardest CS things (naming things). Furthermore I would not use the Shape example as it is too far fetched from reality. It's like the "let's implement fibonacci numbers" in the FP world. And how do they manage "Makefile" only projects?

Sounds like you've never used a jet brains product before. Seriously, it's worth a download just to play with even if you only do it for ten minutes and then throw it away.

You may be surprised at how much of a productivity boost it is (and yes, intelliJ can be slow; but it's nothing like as rubbish as visual studio).

I use PyCharm quite a bit, and I find it great. To me though slowness is a big issue. I often switch back and forth to vim, and occasionally find the slowness of pycharm quite jarring. Had I not been using vim, perhaps I would not have noticed, but it does have quite an impact at first.

Their autocomplete is second to none, however. And once that has parsed the codebase it is lightning fast. Definitely recommend giving it a try.

I was suffering slowness in PHPStorm, but I've disabled all of the plugins that I wasn't using (mostly things like support for frameworks I don't use) and it's now much more responsive.

more ram (and make sure the jvm is allowed to use it)

Deep inside I wonder if the ram usage isn't wasteful, but then I use "find usages" in a medium sized python codebase and I'm just happy pycharms saved me 30+ minutes of poking through code. I found it a big productivity boost.

Makefiles are not supported yet. But we plan to: http://youtrack.jetbrains.com/issue/CPP-274

Eclipse CDT project import is also planned ? What about remote debugging ?

Remote things are in plans after 1.0 release: http://youtrack.jetbrains.com/issue/CPP-744

As for the Eclipse we don't have such requests but may consider if it becomes popular.

> and in the second case you probably know the API and important functions already (from the previous step) so the auto-complete is not needed anymore.

I don't know about you, but I don't memorize functions/classes when I program. I don't always remember proper capitalization (is it HttpClient or HTTPClient?)

>IMHO there are different modes you are in, while coding: (0) prototyping (researching the problem, reading API documentation) and (1) implementing a robust solution; In the first case, again, the time it takes you is more constrained by the thinking you do, and in the second case you probably know the API and important functions already (from the previous step) so the auto-complete is not needed anymore.

I find in the first case, I can be much faster when I can just think. Instead of having to switch mental contexts between "What's my logical process" and "How does that translate specifically into this language/framework/whatever." A simple example is if I want to iterate through every item in a container, I'd like to just type 'for', tab, the first few letters of the container variable, tab, and have it all set up. Resharper does this, and will even name things appropriately for you (if the container is something like myInts or intList, it will name the item myInt).

I used to do most of my planning on paper, or in a text file for this reason. But it's much nicer to be able to merge planning and coding as early as possible.

In your second case, well (1), maybe this is true for you and others. But not for everyone, myself included. I have a pretty poor memory for specifics. Is it myList.length(), myList.length, myList.Count, len(myList), count(myList)? On top of this, every one of the previous examples is valid in a language or framework I use at least on a weekly basis, if not daily. I may be doing python and javascript all day at work, then go home to work on a game in C++. It leads to a lot of confusion. (And about 30 minutes until I remember I need to use brackets and double quotes again, haha).

Everyone has their own ideal purpose of an IDE, and JetBrain's goals are pretty much in line with what I want. I agree that many of the fancy features they show off are just getting around the short-comings of C++. But to me, that is the point. I like the IDE to remove the actual "coding" aspect as much as possible. Allow me to think through the logic and control flow. Not whether the current item has to be dereferenced or not. Let me think of the actual data structure, and not whether it needs to be called .push_back() or .append() or .add().

>A simple example is if I want to iterate through every item in a container, I'd like to just type 'for', tab, the first few letters of the container variable, tab, and have it all set up. Resharper does this, and will even name things appropriately for you (if the container is something like myInts or intList, it will name the item myInt).

Yeah, but e.g. in C++ there are many styles of for-loops. How does the IDE find out what you want to do? Different projects adopt different for styles (size_t, iterators, etc.).

>Is it myList.length(), myList.length, myList.Count, len(myList), count(myList)?

That's a legitimate question, but how does your IDE help there? I solve the problem using a

"<language> get length of list"

web-search. Can your IDE answer this question? If I just type


I will get usually a drop-down menu of all the methods. But then I have to try "c" for count, "l" for length, etc. In particular I have to assume that the size function is a method which is the case in Java, C++, but e.g. not in Python. Or does JetBrains Python version (PyCharm I think) rewrite a.length to len(a)?

My main IDE complaint is that IDEs lock you into languages, libraries and workflows. If you work with a text editor your have to know

  - the language
  - the text editor
  - your build system
  - your version control system
If you work with an IDE you have to know

  - the language
  - a text editor (e.g. remote sessions without X)
  - the build system
  - the version control software
  - the ide
  - probably a plugin that makes your ide editor behave like your text editor
  - a plugin for your language
  - a plugin for you build system
  - in general: how does the IDE's plugin system work
So I like the idea of IDEs, but for me the abstraction always fails and I struggle with its plugins. I give them a try sometimes but most of them are locked into eco-systems:

  - qtcreator: QT, C++
  - eclipse: Java
  - netbeans: Java
  - PyCharm: Python
  - Clion: C/C++
If you work with different languages, libaries and workflows it is often not trivial to make the IDE adapt (in particular, most of them have their own definition of "projects" and scatter you directory trees with hidden files) and the whole dev-setup gets more complicated. What do you do if you have to use a language that's not supported by the IDE?

The text editor abstraction feels more honest: "Look your project is a bunch of text files. I give you the following interface to explore/change this text blobs." Again, I like the idea, but good IDEs were always locked into eco-systems and these change so fast that the IDE seems always behind. I think Smalltalk had an advanced IDE but it locked you into ... Smalltalk.

eclipse: Java, Scala, Clojure, C, C++, Ada, D, OCaml, Haskell, ...

Netbeans: Java, C, C++, PHP, Ruby, Groovy, ...

> I think Smalltalk had an advanced IDE but it locked you into ... Smalltalk.

Which shows you never used it.

Smalltalk is an environment. Workstation OS, IDE, REPL and programming language.

Only the whole experience is gratifying.

Same goes to Interlisp-D, Mesa/Cedar, Lisp Machines and Oberon systems. All Workstation OSs that mix all these concepts together.

UNIX developer experience might sound great, but only for those that never had the experience to touch such systems.

It is true that there are systems (Lisp Machines, Oberon, Smalltalk, etc.) with a more integrated approach and there are great ideas, but what I meant with the term "IDE" is classic IDEs on Windows, Linux and OSX. These OSs are heavily UNIX influenced and for those systems I consider text tools (editors, shells, command-line tools) the easier development UI.

>I had a look at the video and it really seams nice, but for me the cost (learning yet another tool, integrating it into your workflow, dependance on yet another big-size software project) is too high.

Yeah, it's for people who doesn't ALREADY have a compelling solution to what it offers.

Getters and setters are not just there to work around the visibility system. Just making everything public doesn't change the fact that C++ lacks properties, and you cannot change a concrete value into a calculated value without changing the API.

Even if you know the API perfectly, and who does these days, autocomplete is still very useful so you don't have to type out clang::AbstractConditionalOperator, just to take the first identifier to catch my eye, every time.

What project types are possible to add? I'd like to work on projects that doesn't have, say, a XCodeProj directory or CMakeLists.txt. Something like a Makefile would suffice. Is this technically impossible to do? Sorry in advance for my ignorance. (By the way, I love PyCharm).

For now only CMake is supported. After 1.0 release we'll consider more: http://youtrack.jetbrains.com/issue/CPP-274

I'd gladly queue around the block to get mine! Too bad it's somewhere in Central Europe.

More seriously, I have made my employers buy most of their products over the years, and when I have no job I pay with my own money for their products to do personal stuff.

This fails to launch with the 1.8.0_20 JRE installed on Yosemite (the only supported version, now that Apple Java 1.6 is gone). Fails with "No matching VM found." Anyone from JetBrains: how does this work with newer Java releases on OS X?

I had this problem with PyCharm. The solution was to edit Info.plist inside the executable pseudo-dir, and change the property inside JVMVersion to 1.8 from 1.6. This appeared to work totally fine for me w/ java 1.8 and osx 10.9.

> now that Apple Java 1.6 is gone

It's right here: http://support.apple.com/kb/DL1572

Installed on the latest Yosemite beta.

Looks promising, but disappointing it only supports the (more or less abandoned) official MinGW install [1].

[1]: http://youtrack.jetbrains.com/issue/CPP-668

This is really great! One of the interesting things to see is how well it will work with templates.

At any rate, given how happy I am with IntelliJ, I'll definitely buy it (if it won't be part of IntelliJ Ultimate).

Will this become the jetbrains product that also handles golang?

There are no such plans, at least for the time being.

Didn't they already have some kind of C++ IDE before? AppCode maybe - but that was OSX only I think.

Yeah, I've been using AppCode for C++ on OS X for a while, and switched to CLion a week or so ago. CLion doesn't provide much more on OS X other than native support for CMake projects, but unlike AppCode I can use it on Linux as well.

As I remember AppCode is a native (non-java) app, right? CLion requires Java/JDK which is a huge deal breaker for me, for things like IDE.

Seems a bit silly to exclude a project just because it's written in Java.

AppCode is a java app as well - it's built on the IntelliJ platform which is java based.

Curious why the requiring a Java runtime env for the IDE is a deal breaker?

No matter how time passes and how powerful desktop I use - java based software are just slow and bloat (especially IDEs). Even for some Java related work, I preferred to use JCreator (which is the only Java IDE purely written in C++ I believe).

I would say that's more down to IDE bloat, and nothing to do with Java. IDEs are often slow because they end up do huge amounts of indexing/static analysis, and/or have lots of plugins activated.

Well, I'm a heavy IDE user. On Linux I was on KDevelop (and now Qt Creator looks nice as well), on Windows mostly MSVC. I can't imagine working productively in vim and similar environments. But I still find Java based software/IDEs to be significantly slower and bloatware.

IDEs are resource hogs, not matter which language they are written in.

Notwithstanding, I have been an happy IDE user for multiple languages since the early 90's.

Programmer editors only can do so much.

I know right? That 85M is a real drain on my 16GB of memory on my macbook, amirite? What year are we living in when people nitpick over native performance. Is vim too heavy because pathogen takes ten fractions of a second to load more than pine?

its a shame this doesn't solve the real problem with lack of cross platform ide - which is targetting iOS or Android. the only reason i ever leave visual studio...

Urray! It is finally here.

Looking forward to the Android Studio integration.

I guess the AS team was waiting for this to get real NDK support on Android Studio.

Yes that is their standard answer.

When it happens and Gradle gets fixed, then I can finally ditch Eclipse for my Android hobby development (mostly NDK based).

Hopefully a JetBrains C# IDE is also on the way, then we can finally be rid of the pig in lipstick!


Give it a chance. Jetbrains products are nowhere near as slow as Eclipse.

Something does not match my experience. IntelliJ IDEA is significantly slower than Eclipse. There was a blog explaining how to increase memory allocated to it to make it faster, but IDEA crashed when I did this (I have 8 GB RAM). I have thereby had IDEA Ultimate stay unused on my machine for the last two years or so.

We pay attention to any performance related problem found by our users and try to fix them as soon as possible. If you ever face this experience again I strongly recommend you to report it immediately so we can reproduce it and provide a fix for you.

Please use this instruction on how to report such problems: https://intellij-support.jetbrains.com/entries/29983118-Repo...

Running IntelliJ 14EAP. Runs like a charm.

Edit: used Eclipse for 6 years, but forced to switch from Eclipse because project grown to a degree that Eclipse can't open it properly (lot of maven cross-dependencies). Another thing: Eclipse 4.x really dropped quality bar - performance is terrible, unstable (compared to 3.8.x).

is not possible to create a blank or c project?

Or I'm blind :)

Not now. Create a .cpp one and then rename file to .c, for example. We are planning more project- and file- templates in future.

Excellent, I have been waiting for this since it was announced.

Now I just wish there was an easy way to get it working with chromium. I can dream right?

Registration is open for Startup School 2019. Classes start July 22nd.

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