I'm fairly new to the Python world but I've been using PyCharm for a couple months now and it is absolutely amazing. JetBrains makes really great products, I've been a huge fan of IntelliJ IDEA (Java) for a few years now - converted many die hard Eclipse users over to it, and they never looked back.
For what it's worth, I used Eclipse for 3-4 years before Intellij (it was what my university introduced students to for programming in C++ and Java). Switching to Intellij was pretty painless other than initial configuration overload (since there's so much more built into it by default than Eclipse). Having to switch back to Eclipse at times for a few things since was not so much.
Intellij just as a much more intuitive UI and layout. Eclipse is fine if you're used to it, but it's much more dissociative by design when switching languages or usages than Intellij.
IntelliJ has such an ugly font rendering system on Windows that it makes it very hard for me to dump Eclipse. This prolly has to do with Eclipse's native font rendering.
Yeah, it's not too great due to relying on the JVM for rendering. I use Liberation Mono with it and it looks pretty good (even with anti-aliasing set to off). Everything else, not so much.
The top image[1] at the Slant programming font rank list[2] was a screenshot I took of Liberation Mono when using Intellij on Windows, just to give an example. I miss having bitmap fonts (which Eclipse does allow), but Liberation looks close enough to my favorite bitmap font (Dina), that I don't mind anymore.
But the Intellij editor has some noticeable deficiencies. You cannot tab out of auto-completed text (parenthesis, quotes, etc). This feature is a major time-saver and if you are familiar with this feature in eclipse/visual studio/sublime text, you can find yourself handicapped in Intellij.
Too late to edit my post, but you can complete the current line (in quotes or parentheses) by pressing ctrl+shift+enter, which jumps the cursor to the next line below. Works for Intellij or Visual Studio with Resharper.
"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. Of course, you also would be able to review them in a bulk mode."
I use QT Creator for C++ authoring today primarily because of the Clang integration. Pretty excited to see it well-implemented by JetBrains.
There's a difference between using Clang (Analyzer) to provide error reporting and using it for their own internal parsing (for refactorings, cross references, etc.). I suspect their internal parsers are all written in Java, but let's hope in this case the parser is just a thin wrapper over Clang!
I recently started trying to learn some basic C/C++. My usual initial step in setting up an environment for a new language is to google "intellij plugin for X", so I was very disappointed to find that C/C++ is very poorly supported with respect to most other mainstream languages.
I ended up having to go with Visual Studio, which is also impressive, but there are features I miss coming from the Jetbrains world.
Using C++ professionally for a while now (College, grad school, embedded sw) the best two complete IDEs I've found are SlickEdit (Cross platform) and Visual studio. If you've not tried SlickEdit I definitely suggest it (They have a trial).
Additionally, they have an interesting blog post here describing whether they are an IDE or editor here:
tl;dr SlickEdit has no built in compiler or debugger. It's other IDE level support is fantastic though and it was perfect for embedded development work where you're building from the command line (Which you can connect to the SlickEdit Project) and debugging using GDB.
With this new JetBrains IDE, Unix toolset, Xcode, etc, OS X might finally become a strictly better C++ development environment than Windows. One can hope...
Main things for me are the refactoring, code navigation (find usages is awesome!), and coding assistance. Check those out here : http://www.jetbrains.com/objc/features/
does this mean that it will be an intellij plugin (similar to the way pycharm is - as far as i can tell - intellij + the python plugin)? i hope so - it's frustrating being a (paid!) intellij user without c support.
google changed from eclipse to intellij IDEA because it just supported android so much better (imho), even before the switch!
I m constantly amazed at the quality and integration IDEA has for everything - from google appengine, gwt, spring/javascript/css/html, to heaps of templating languages…the list is endless….
I've been using the Anki[1] spaced repetition system to quickly get up to speed with the PyCharm key bindings.
I've been using the JetBrains screencasts[2] to get up to speed with the IDEs features. Although these are too thin on the ground currently and i confess that i keep getting distracted by the JavaScript / AngularJS videos! The presenter on those i find draws me in more. Some of the PyCharm videos don't even have narration.
I have explored the Flask integration which was better than i expected but not life changing for me.
VirtualEnv integration is well enough, but PyCharm <--> command line <--> virtualenv integration is not ideal yet. Getting virtualenvwrapper and PyCharm playing nicely together was more work than i anticipated. PyCharm doesn't make it easy to be notified about newly created virtualenvs.
I feel all the default templates for modules and test files are not ideal for me, i ended up replacing them with my own templates. The only reason this even registers with me is because some less experienced Python developers persevere with the default PyCharm templates and end up with __author__ and other cruft in their modules.
The internal jetbrains supplied static validation (Pep8 / PyLint) functionality doesn't appear to be vanilla pep8 / pylint. This is only a minor issue but i don't like that there are potential violations i don't see until i've pushed to Jenkins and viewed the reports there.
I intend to push further with PyCharm, i'm open to the idea that there's productivity benefits to be had with python from an IDE that are not available to me in vim - although i strongly advocate the JEDI plugin with VIM, it's leaps and bounds over the old ROPE system IMO!
> The internal jetbrains supplied static validation (Pep8 / PyLint) functionality doesn't appear to be vanilla pep8 / pylint.
It's a completely separate system (which also supports quick fixes and suggestions). PyCharm has built-in support for running pep8.py (though not pylint apparently, you'll have to do that yourself)
I'm a fussy bugger sometimes :-) Over the years I've learned to shy away from vim plugins.
In my experience they're always missing a crucial motion or two and it just becomes counter productive for me to keep stumbling into the missing command. I think it's the curse of vim, we all use different subsets of its abilities!
Another factor is the vim layer tends to be incomplete in terms of functionality exposed by the host application. ST2's Vintage mode (which i did play with) is a good example of this problem.
This is a known problem. The multiple undo actions per single 'u' command bug has been fixed recently. The updated version of IdeaVim will be released soon. We have been working on making IdeaVim more stable, see the changelog https://github.com/JetBrains/ideavim/blob/master/CHANGES.md.
I'll happily continue to pay for PyCharm even now that it's open-sourced (I re-upped for another year last week, and don't feel like I missed anything by not waiting for this). Aside from the fact that the Pro version has some killer features - Django support, remote interpreters, diagramming, and a .less editor - these guys deserve to be paid for an outstanding product.
I'm sure I could assemble a tool chain that does 90% of what I love about PyCharm in vi, but I'm a-OK with having my company pay $200 to have someone assemble that for me (or $100, if they didn't pay for it). In the same way that some people - but not me and my Lenovo - will pay extra for a shiny metal computer that just works, I'll pay extra for an IDE that gets out of the way when it should, and gets in the way it needs to.
Speaking of linux, has the 64bit version improved at all? Everytime I try it out I can't stand it more than a few minutes and revert to Eclipse. (previous discussion: https://news.ycombinator.com/item?id=5201366).
First, with PyCharm there is a possibility to have both a community edition which covers a sufficient breadth of scenarios and a good value-add for the professional version to make it commercially attractive. This wouldn't work for other products.
Second, we're specifically mentioning that we want people who first start to learn programming to have access to our products. And a lot of learning these days happens with Python specifically.
Awesome! I think you guys are going to be for Python what Eclipse was for Java about a decade ago. I'm a paying PyCharm customer, and I absolutely love it. The pace of development is excellent too.
I was wondering how it's possible that IntelliJ is free for Android development? What drives the decision making to make one product free and the other paid? In a way I like paying for RubyMine, hoping that it won't be discontinued in the long run, although I'm guessing IntelliJ has a much larger user base.
The reasons for the decisions are different each time. As for Android, we felt that IntelliJ IDEA Community Edition didn't have as much uptake was we had expected, and we thought that adding Android support to CE would be a great way to make it more attractive without endangering the revenue that we get from selling IntelliJ IDEA Ultimate to enterprise customers.
Of course, with the Google partnership that came later, the decision turned out far better that we had originally expected. :)
Google is not paying anything for the development of Android Studio. Instead, they've put their own development team to work on the Android features in Android Studio, which we then integrate into our distribution of IntelliJ IDEA.
The link wasn't posted by anyone from JetBrains as far as I can see. But we do always watch comments on Reddit and HN for the discussions of our stuff.
Love your products! Love them! I buy WebStorm and IntelliJ IDEA whenever you release a new version. I'm using EAPs for both and while there are some slightly rough edges here and there the products are stable and much better than the already great previous versions. I follow Kotlin and when I have time intend to use it... point is y'all do really great work. Thank you!
They provide an edition comparison matrix[1] that mentions the only languages supported in the open-source version are:
Java,
Scala,
Groovy,
Clojure,
XML, XSD, DTD and
Regular Expressions.
So unfortunately not. They do offer free open source project licenses though if you're working on an opensource project, or even 50% off of commercial licenses to startups.
The link that you provided is for IntelliJ and not for the separate products that the GP is referring to (AppCode for ObjC, RubyMine for Ruby and PhpStorm for PHP).
Does it support multi-selection, Sublime style? I just can't use an editor without it anymore.
This is a bit OT, but Komodo got an update some days ago with multi-selection support, which I was quite excited to try. Only to find out their implementation is quite frankly useless.
'Right-click in the editor and choose "Select --> Multiple Selection --> Add", then use Ctrl+Click (Cmd+Click on Mac) to quickly make additional selections.'
I just created a model from a table with over 20 columns. A few days ago I had to hardcode a list of settings I screenscraped into a JS array in the Chrome console. You can't refactor things like that.
For those sorts of things I think it's completely reasonable to drop into emacs, vim or sublime and then just copy paste back into your primary IDE.
When it's a text editing operation that you're trying to do (as opposed to a defined transformation on valid source) then it makes sense to use a text editor.
A sibling mentioned refactoring, but one thing I also use a lot is column-mode editing. It's something you can toggle just like you can in Eclipse, and can be very useful. Not quote as useful as selecting multiple regions to edit, I agree, but still very good.
For me, the killer things in PyCharm are the excellent Python library support, and the fact that it indexes my codebase so that "Where is this defined?" is extremely fast. That is the feature I use all the time which is less convenient to do with many other editors.
By multi-selection do you mean putting multiple things in the buffer? Because you can do that if you use Vim mode (using the standard multiple buffers of vim).
Excuse me if I'm being naive, but does Python development need an IDE? In what ways could it be helpful? I'm under the impression that Python is not compiled generally.
> I'm under the impression that Python is not compiled generally.
The direct ancestor to today's IDEs are Smalltalk environments. Smalltalk is about as un-compiled as you can get. This and that are completely orthogonal concerns.
> In what ways could it be helpful?
Navigation across projects (via structural searches or hyperlinking), static analysis (including library- or framework-specific e.g. PyCharm knows some strings have specific meaning in django projects and can check that there's no mismatch), refactorings, documentation, visual debugging, ...
Some of it can be replicated with extensively customized editor and a multitude of external tools, others not really.
IDE's are used for more than just building the code; they provide UIs for debugging capabilities, code completion, syntax highlighting, refactoring support, VCS integrations, and much, much more. That said, I do my python development in Sublime Text using the Jedi autocomplete library (https://github.com/davidhalter/jedi).
I've tried a lot of IDE's for python development in the past and always went back to a basic text editor; the extra features never outweighed the bloat.
But then i found PyCharm and never looked back. I feel i develop at least 50% faster with any serious project; i still use Sublime for the one-off scripts, but everything else i find the introspection, code completion and refactoring just so good its now hard to go without.
Props to Jetbrains, and I look forward to v3 pro! (my 2.7 isn't yet telling me i have an upgrade... i'm hoping this is coming soon!)
Same boat here. I got PyCharm when it was on sale last year. Never looked back. I enjoyed setting up my viertualenvs, having multiple projects open, source code navigation. And then to top it off, all the Javascript/Html/css editing stuff as well. All in an easy to setup package. Rich set of plug-ins, too.
Note: I still use my other text editors for one-off file editing and such, but PyCharm is my control center for the projects...
See my question above. You don't need your 2.7 to tell you anything. If you've got a license you can simply install the 3, import the settings and use the same license.
IDEs allow you to treat your entire project scope as one big ass open file. You can refactor, autocomplete, click-through, etc. in an entirely natural way that text editors cannot do (out-of-the-box).
This is a gross oversimplification, but it's how I sold a few of my friends on Jetbrains during their Apocalypse sale :)
PyCharm can show color your code based on style checks (pep8) or compatibility with python 3. This helps me notice typos and mistakes more easily, as well.
It is overkill until you start to build something like http://gridspy.com (entire web stack in python)
I find it extremely helpful to have symbol lookup in my own codebase, suggestions, fast file opening and the ability to have useful highlights in Python, Html, coffeescript, javascript, css, et al.
b/c type hinting in PHP is a wishy-washy half feature typical of the language. Python engineers don't understand type hinting either -- and we like it that way. Because if it walks like a duck and quacks like a duck, treat it like a duck.
It's not a half feature. But yeah, I can see that "engineers" like you don't understand it. The same duck metaphor is stupidly used to criticize interfaces. And then you have everyone trying to use hacks to get around this issue, usually people who do understand what "design by contract" is, but for some reason don't want to leave Ruby. Just google "ruby interface" and see for yourself. This problem won't go away until people like you stop spreading lies to justify the lack of features (eg: "Hurr durr, Java needs interfaces because it's too rigid, Ruby doesn't need that, lol!").
I've bought the 2.7 version a couple of months ago and I don't regret it, but does anyone know if the 3 (pro edition) will be available as a free update for people like me ?
I've read on the site that people like me are supposed to receive a free update by email, but i didn't see anything... Anyone in my case ?
From the site: "PyCharm license is permanent and includes one year of free product upgrades since the purchase date, including even major version upgrades."
You won't get any mail, there is no reason for one. If you license is less than 12 months old, download PyCharm 3, enter your license again and off you go.
What exactly do you expect to get in your mail? Just install the new version and import the settings from the previous one, and it'll work with your current license.
Ok, cool.. I read this line wrong apparently :
"PyCharm license includes the initial 1-year upgrade subscription qualifying you for the receipt of the new product releases and technical support (available via email only) free of charge"
Didn't realize the "via email only" concerned the support only. (non-native english speaker here).
Is there any point in owning a license for IntelliJ and RubyMine/PyCharm? I thought that IntelliJ Ultimate had all the features of RubyMine and PyCharm but I haven't used them so I could be mistaken.
You are correct, Ruby and Python plugins add most of RubyMine/PyCharm features to IntelliJ IDEA Ultimate. You may want to have separate IDEs if you need more lightweight environment. RubyMine & PyCharm are in general updated more frequently too.
For exploratory interactive programming and shorter scripts, not really. For building larger more complicated systems, very much so.
Personally I use both, continuously switching between the two. I play around in ipython/pylab until I've gotten all the algorithms and details worked out, and then use Pycharm to add that code to the larger library or application which those algorithms will be a part of.
I feel like IPython is better for sharing your final analysis but I do all of my coding/development in Emacs + python-mode and haven't been able to figure out all the hype around IPython. And once you start with Pylab it becomes difficult to map your functions back to their original namespaces (especially since many are redundant between numpy and scipy) in a bigger project, so I stopped using it altogether. Could you explain a bit if I'm missing the point?
What entrypoint are you using to run your programs? REPL function calls / test runners / main methods from the CLI / local web server w/browser? I think understanding that matters the most.
If you do a lot of development in the REPL (i.e. exploration), then that is where iPython (in a notebook, or a shell) really is nice. If you don't, then you may not see the benefit.
I primarily program with python for shell scripting/text processing, or data analysis/simulation with numpy/scipy/pandas.
I do a lot of exploration, I rarely ever type anything directly in the REPL/interpreter - I write all my code in scripts and send them to the REPL with emacs keystrokes. Afterwards, I'm left with a script that contains my analysis/processing method. (never had a local web server running except when playing with emacs ipython notebook).
I find ipython with its magic commands and ability to directly call shell commands more handy than the standard REPL for interactive shell type scripting.
Other than that, not really. Inline graphs are nice if you like that sort of thing, and some of the magic commands are occasionally useful. But beyond that I don't think you'll gain much if you have a approach that works for you.
I also gather that ipython's parallel processing tools are pretty powerful, but I've never really played with them.
Are direct shell commands that useful...? I either have a shell running in emacs or in a separate terminal that I can quickly switch to. I've heard about the parallel processing tools, but sounds like I'm doing alright with emacs. Thanks much.
Is it a multi-language editor? I.e. can I switch between html, javascript and python and expect to have a similar interface, commands, API, etc. ? If so, it looks like a strong contender against Sublime IMHO.
PyCharm Community Edition does support HTML but does not support JavaScript or CSS. PyCharm Professional Edition does support HTML, JS and CSS (and many dialects thereof).
It's just that the term "Professional Version" is used to differentiate it from the "Community Edition" on all the informational pages and then the terms are not used anywhere on the Buy page.
bin/pycharm.sh
ERROR: Cannot start PyCharm
No JDK found. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.
I wish this had been mentioned up front, before I spent all that time watching videos and such. :/ Nothing against java per se, just that it's a giant runtime/security-surface that has no bearing on my Python work.
I'm still happy with Geany, gvfs, meld, and terminal, etc... though they might not be as flashy. :)
JVM security concerns are irrelevant when you are running a desktop application. You aren't running it as root, and you aren't executing arbitrary code as if you were running applets.
If arbitrary code is able to access the JVM on your computer, then you already have arbitrary code running on your computer.
If you're truly worried about the second point, to run JetBrains software all you need is to download the jvm somewhere on your system (it's just a directory) and set the JAVA_HOME variable before starting it:
export JAVA_HOME=/my/install/dir; bin/pycharm.sh
There is really no conceivable way that your browser would be scanning your operating system looking for a downloaded JVM (if it does that, it's not a browser, it's a virus.)
If you truly are religiously against jvm it's w/e to me, but the security concerns are not valid.
Sorry, not going to set up a custom runtime for an editor. Note the "giant runtime" concern I put first.
I'd use the system java/browser which has an extension available, no need to scan. FF just enabled javascript for everyone without their permission, and Chrome does plenty of shady things. The fewer software installed, the better. I prefer to stay far away from potential security problems, with multiple hurdles whenever possible. If it makes you feel better I don't install flash or ruby either unless the situation calls for it.
imo you are making huge tradeoffs for very little benefit, as there is no such thing as a 100% secure system anyway.
But still its your decision, to each their own.
I learned this paranoia while running Windows XP through the 2000's and I can tell you it served me very well. While others were rebuilding their systems I was working.
I realize Linux in 2013 is not so dangerous, but take a gander at recent java security bulletins when you get a chance anyway. Steve Gibson recommends not even having it installed if you don't need it (I don't) and that's good enough for me.
Also, I think you may be overselling the trade-offs. I've not been inconvenienced in the last decade of avoiding java, as far as I can remember. On occasion I will install random things into a VM for temporary experimentation.
> I realize Linux in 2013 is not so dangerous, but take a gander at recent java security bulletins when you get a chance anyway.
Off the top of my head, all of the recent serious vulnerabilities were applet related. The JRE doesn't require a Java plugin for your browser, no plugin, no applets.
>I'd use the system java/browser which has an extension available, no need to scan.
System java? Which OS (barring Oracle Linux) ships with JRE pre-installed? Browser extension for Java? I assume your familiarity about the Java ecosystem has not been updated since HotJava (or whatever it was called).
There is no way they would 'port' away from Java. JetBrains has been building this platform for more than a decade. This is what has allowed them to support many operating systems concurrently and with great results. No need for the FUD on Java. Java is really what they excel at.
Why does it matter? You can't even notice it's java except having to have it on your system. And why is having it a bad thing? The security issues are the browser plugin, not the JVM.
On the other hand I love using Pycharm on Windows and Linux. I also love the fact that should I choose to use a Mac, Pyharm would be working just the same.
IntelliJ IDEA product familly is really well done. They do not feel javan at all.
Am I the only person thinking that any Java-based IDE demos have been sped up by the magic of editing by at least 200% and all the SBBOD-ing has been trimmed out?
Hm, so I just tried it. I have the latest Mac mini (i5 8GB RAM), and it was slow. Switching between files, highlighting lagged. Typing was stuttery. Next, I couldn't change the font, it was just not selecting. So, looks like cool software, but I went back to Sublime Text 3 with lint extension.
PyCharm is amazing, and it can only get better with this announcement. The only issue I have with it is the huge amount of memory it uses. It uses >1GB of ram on my macbook air, and using pycharm for extended amount of time makes it sluggish.
It requires the Oracle JRE, so I don't see how Debian could provide packages for it without a ton of weird hoops to jump through. I tried it on OpenJDK and it chokes.
Considering the growing number of coders out there that usually start with a language like python or js, this is kind of an obvious thing to do. (more so than trying to compete with netbeans/eclipse)
What an amazing coincidence, I started learning Python last week and was trying my hands on PyDev. Yesterday when I saw this news, I immediately downloaded PyCharm and now I am loving it.
Adding PyCharm to the collection of products is awesome. I do wish JetBrains would offer some combined licensing. Since I have a tendency to use quite a few of their products.
There doesn't appear to be a .zip version. They have zip versions of the Intellij so they may add it if you do a feature request. The installer only requires admin to install to the Program Files. If you say no, it installs to your local user location (in Roaming).
Well, It's a multi-threaded program, and when you create a project it will start out by indexing everything. So while it's doing that, it can spend quite a lot of CPU time -- "top" etc. typically show the CPU time spent by all the threads in a process, so you can easily see it go up to N * 100% based on your cores.
That can get occasionally annoying, if you drop in a a bunch of 1mb text files in your repository and it insists of examining them.
But, introspection and refactoring capabilities are great.
> That can get occasionally annoying, if you drop in a a bunch of 1mb text files in your repository and it insists of examining them.
You can right click the directory and mark it as excluded from the project. We have an integration test suite that likes to emit gigabytes of XML into its local directory - which IDEA happily tries to index. Excluding it saves me a lot of CPU time.
Does it stay there all the time? CPU going above 100% during indexing and inspections is normal; we use multiple cores to complete the operations faster.
If you look at the feature comparison matrix, you'll see that the Community edition specifically excludes the features which are part of WebStorm. So no, don't hold your breath.
First of all, the team being young could refer to the age of the team and not the employees' ages. Either way, are you seriously that uncomfortable about your current age that this stands out to you?
Have we become so PC that noticing that your company is young and then saying your observation out loud or typing it with your keyboard is now discrimination?
So, would calling it a "friendly, white team" be merely an observation and only a problem for PC people who were seriously uncomfortable about their own race?
Yes, but that's not the most likely interpretation. Teams are new, people are young. Of course, it's possible that "new" was meant, but it's a lot more likely that they were describing the attractions of the people on the team, not the organization's friendly newness.
It's a description of a given situation, not a requirement for the job. If this is discrimination, then also the fact that the job is in Russia is discriminating the US job seekers.
Unfortunately, PyCharm's pyconsole is a copy-and-paste job of Eclipse PyDev's pyconsole, and it is quite buggy and lacking in features. This is quite disappointing since I have high expectations for any JetBrains product. I was hoping that JetBrains had the effort to properly implement REPL work flow in their IDE instead of copying the code from its competitor (heck, I just took a look at PyCharm's pyconsole code, and the code still mentions Eclipse)
The above probably is not a deal breaker for many people, but just as many people indeed use Python as REPL, so I would like to see more improvement.
Otherwise, no problem with the software so far that I have tried. Thanks, JetBrains.
Our code is a fork of pydev's implementation on the back-end and our own implementation on the front-end, and we've made many improvements to pydev's code since the fork. If you find anything lacking, please file feature requests to our issue tracker.
And, this is true whether the Core is GPL'd or permissively licensed. In both cases, the final story is the same: take a proprietary license or be stuck with cripple-ware.
Except that IntelliJ Community Edition is a perfectly usable and able IDE already. In fact, Android Studio is based on it. Certainly not crippleware.
And in this case I very much like this model. InteliJ CE is open source software under the Apache License version 2.0. If JetBrains would disappear tomorrow (hopefully not!). A non-profit project or another company could continue where they left off.
That said, I am a very happy user of the Ultimate Edition :).