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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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).
> 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().
>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).
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.
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.
[+] [-] gchp|11 years ago|reply
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.
[+] [-] tbrock|11 years ago|reply
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.
[+] [-] chii|11 years ago|reply
[+] [-] sitkack|11 years ago|reply
[+] [-] zaphar|11 years ago|reply
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.
[+] [-] pjmlp|11 years ago|reply
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.
[+] [-] nileshk|11 years ago|reply
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...
[+] [-] Jweb_Guru|11 years ago|reply
[+] [-] swah|11 years ago|reply
[+] [-] soAsian|11 years ago|reply
[deleted]
[+] [-] pdovy|11 years ago|reply
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.
[+] [-] anastasiak2512|11 years ago|reply
[+] [-] indeyets|11 years ago|reply
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
[+] [-] anastasiak2512|11 years ago|reply
As for the other build-systems: http://youtrack.jetbrains.com/issue/CPP-274
[+] [-] rpc_was_taken|11 years ago|reply
[+] [-] tux3|11 years ago|reply
Congrats, thought. C/C++ could use more powerful and cross platform IDEs.
[+] [-] pjmlp|11 years ago|reply
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.
[+] [-] bebna|11 years ago|reply
[+] [-] aespinoza|11 years ago|reply
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.
[+] [-] zura|11 years ago|reply
[+] [-] dnesteruk|11 years ago|reply
[+] [-] squeaky-clean|11 years ago|reply
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.
[+] [-] akavel|11 years ago|reply
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)
[+] [-] lemming|11 years ago|reply
[+] [-] shadowmint|11 years ago|reply
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...
[+] [-] ihnorton|11 years ago|reply
mingw-builds to install gcc:
http://sourceforge.net/projects/mingwbuilds/
msys2 to install the rest of the build environment:
http://msys2.github.io/
(as well as a growing number of packages, managed with a port of pacman from Arch)
[+] [-] anastasiak2512|11 years ago|reply
[+] [-] mlvljr|11 years ago|reply
[+] [-] beagle3|11 years ago|reply
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.
[+] [-] michaelx386|11 years ago|reply
It might be worth learning a new environment if it makes this easier.
[+] [-] advocaat23|11 years ago|reply
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?
[+] [-] shadowmint|11 years ago|reply
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).
[+] [-] pionar|11 years ago|reply
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?)
[+] [-] anastasiak2512|11 years ago|reply
[+] [-] squeaky-clean|11 years ago|reply
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().
[+] [-] coldtea|11 years ago|reply
Yeah, it's for people who doesn't ALREADY have a compelling solution to what it offers.
[+] [-] surye|11 years ago|reply
[+] [-] kryptiskt|11 years ago|reply
[+] [-] sedeki|11 years ago|reply
[+] [-] nraynaud|11 years ago|reply
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.
[+] [-] jrk|11 years ago|reply
[+] [-] x0x0|11 years ago|reply
[+] [-] orbitur|11 years ago|reply
It's right here: http://support.apple.com/kb/DL1572
Installed on the latest Yosemite beta.
[+] [-] jibsen|11 years ago|reply
[1]: http://youtrack.jetbrains.com/issue/CPP-668
[+] [-] microtonal|11 years ago|reply
At any rate, given how happy I am with IntelliJ, I'll definitely buy it (if it won't be part of IntelliJ Ultimate).
[+] [-] hit8run|11 years ago|reply
[+] [-] dnesteruk|11 years ago|reply
[+] [-] zura|11 years ago|reply
[+] [-] podgib|11 years ago|reply