Q: "How does PyCharm Edu differ from PyCharm Professional Edition or PyCharm Community Edition?"
A: "PyCharm Edu is based on the Community Edition and comprises all of its functionality. Additionally, it installs and detects Python during installation. It has a simpler UI (adjustable in settings) and adds a new "Educational" project type.
PyCharm Professional Edition additionally supports different web development technologies, has remote development capabilities and additional languages, and supports working with databases."
As someone who's written / taught a CS intro class in Python. This is a nice addition to my tool belt. When I taught labs, we used a really crappy Python IDE that consistently froze and would delete student's code.
I'm pretty partial to the VS Code and command line approach, myself. It teaches you basic command line stuff, which is good for anyone learning CS in the long run, and it teaches you how to NOT rely on an IDE for most of your syntax and semantics which is enormously helpful for those starting out (even though the learning curve is a bit steep).
For Java I'd agree, but for Python I've always preferred a good programmer's editor. I tend to use either Vim or Kate, depending on whether I'm in a CLI or a GUI mood.
IDEs are so bulky and heavyweight, they just feel like they'd get in the way for Python. Especially JetBrains IDEs... they're just so slow and bloated (back when I did Java, I always preferred NetBeans over IntelliJ).
For me the path has mostly been BlueJ (Java) to Eclipse (Java) to Visual Studio (C#) to Eclipse (Android) to Intellij (Python/Android/JavaScript) to vim (JavaScript/Python).
Some people try to turn vim into an IDE. Personally I like to use a real IDE when I feel like I need it (when I'm working in an unfamiliar codebase or when I need to debug).
I love vim for writing small programs (command line utilities and client side JavaScript) and editing code (such as HTML, CSS, LaTeX). For single page web applications the best IDE for me is the browser in combination with a simple text editor.
I write python professionally and I use vim exclusively, but I have pylint + jedi plugins and could not imagine working without them.
I'm also not convinced that depriving new programmers of real-time syntax checking actually helps them learn. Wouldn't immediate feedback help them memorize the correct syntax?
I learned working with Visual Studio and, yes, I think that helped. Even jsut being able to press "." and see what methods and properties were publicly available on something was helpful
Unfortunately, PyCharm does not (by default) encourage the wonderfully productive development pattern of ``python -i`` -- running the script and breaking into the interactive prompt afterwards. IDLE does this and it's excellent for teaching. Any other technique and the students are much less likely to develop the habit of testing/debugging code interactively in the REPL.
Even if you do invoke the interactive mode in PyCharm, each execution creates a separate prompt, causing confusion. I'll admit I'm not the most skilled PyCharm-user. Perhaps there's a way to make it work like IDLE?
I think I tend to agree here. I've taught a few terms of the Python courses through @codeclub to primary school children in the UK (aged 10-11) using IDLE and it works well. It's also worth considering that IDLE is a relatively lightweight install and on the network at the school that I teach at, everything is extremely locked down and installing anything causes an amount of pain. That said I think I'll still investigate.....
This is a bit different but in PyCharm you can set a breakpoint and then in the debugger open up a window where you can evaluate arbitrary expressions with that context before continuing.
I like to introduce debuggers/breakpoints after teaching functions and classes. That way I can explain the purpose of a debugger as bringing back the interactivity of the REPL despite hiding variables in local scopes.
The run configurations let you check a box that drops you into the interpreter console afterwards. If you install iPython, it will be used. Is that describing what you're looking for?
Not quite. If you re-run the script it creates a new console rather than restarting in the current. That leads to an awkward proliferation of consoles with no keyboard shortcut to close them. I encourage my students to run code very frequently.
I like this a lot. My uni just switched to Python from IDLE a few years ago. While its nicer than IDLE, the complexity of the IDE can be a bit much for novices. Heaven help you if you accidentally select the wrong python interpreter at project startup, for instance.
The other thing I'd like to see is more intelligent defaults for project location. On Windows, it defaults to the C drive, which is fine except for when students don't know where their documents folder is buried. Putting a git repo in a system folder breaks git because of permissions, but the UI will never tell you that.
I disagree. Misspelling symbols and forgetting function names and signatures is a waste of time that distracts from what you're really learning.
I was dismayed to see the amount of time my first-time-programmer CS classmates had to spend navigating directories to locate functions and dealing with typo-based compile errors that would have been fixed immediately with an IDE. We should not be teaching new programmers that this is normal. Language and type aware autocomplete, inline syntax error and undefined symbol highlighing, and go-to-definition are things you should always expect from your programming environment.
Sure you can set up an editor to do these things, but that's a project in itself, and the results tend not to be nearly as good as "just use the JetBrains product."
IDLE has pretty decent auto-complete. I've found that teaching with IDLE first, then switching to PyCharm (or other more full-featured environments) after they've learned the basics produces better programmers.
Python also has the built-in ``help`` and ``dir`` for reminding yourself about features. No need to rely on the IDE when the language has you covered.
I agree. When I'm tutoring students and they have a problem I point out things like 'Find Usages' and the 'go to' menus. Those things are useful.
Unfortunately with Python, for to the nature of the language, there are often things pycharm can't call out. There are other times where pycharm says it won't work, but in fact it will (happens a lot with turtle, but imports in general are challenging). This isn't a criticism of pycharm so much as a challenge for any IDE with Python; VS Code gets it wrong more often than not as well.
(I'm the PyCharm Developer advocate.) You're right, we need to do some thinking regarding a project's "environment". It's something we're talking about now.
I wouldn't call that a low powered machine. I started learning to program with a Gateway Netbook (sub 1ghz single core processor with 1gb ram) just a few years ago. It was so painfully slow to load anything other than a REPL and Vim (with no plugins - I tried compiling YouCompleteMe but all 3 times the machine ran out of memory). That's what I stuck with, and I'm glad :D
I wouldn't have bought an i5 with 4 GB of RAM and 128 SSD for my sw development job in 2013. I had a Core Duo 2 with that much RAM from 2006 at the time (well past its end of life). That was still pretty ok CPU wise but the memory became really tight. I could make it faster with a SSD but it wasn't worth it.
I bought an i7, 16 GB (up to 32 GB) laptop at the beginning of 2014, with a 750 HDD that I swapped with a 1 TB SSD an year later.
The Air is my private machine and I bought for size/form factor (aka travel).
I had a MacBook Pro 15" (far better spec'd) at the time, but left it at home/work due to size and weight.
The 11" Air fits "everywhere" and still has a full size keyboard and a good trackpad.
My Late 2013 MacBook Pro (bought early 2014) is a 2,3GhZ i7, 16GB memory and 500GB SSD.
Compiling, VirtualBox/Parallels and Docker is less painful, but 99% of the time the old 11" Air is good enough.
Yeah, definitely not high powered, I just wanted to highlight that it's also not low powered compared to what others may be try to use PyCharm on, such as myself
It was considered slow 4 years ago, but I bought it for the form factor (and still use it daily).
PyCharm, Django and PostgreSQL runs ok, but it's too slow for docker.
Anything slower is useless for (modern) development and if you're a student on a budget there's loads of used or refurbished PCs on ebay costing $100 or even less.
A <$250 laptop purchased today is more powerful than the Air mentioned above. I think it's a reasonable baseline. It's still possible to get a 2GB laptop today, but it's becoming more rare, and the CPUs are very much more powerful than your old netbook.
Fair point. Most of my experience goes back to the "pre-macbook" stage of my life where I was running windows 7 on whatever hunk-of-junk laptop I could afford in college.
I have a lot of respect for the iterative improvements they make on all their products (I've use nearly all of them).
What JetBrains needs to do is create a good series of instructional videos to show how they intend these products to be used. They are excellent and very powerful but you are left to peek and poke around to figure out how they intended you to use and configure them. The various videos available, last time I looked, are seriously outdated. For example, there are a bunch of different ways to work with PyCharm and Django.
The other thing they need to do is improve their customer service. The couple of times I needed an answer not found on sites like SO it took something like 3 to 5 days to get an answer from them.
Yes! Looks very nice. I can now point people to an easy set of videos to understand how to use PyCharm to develop Python products. I will watch them all when I have some time.
Do you cover Django integration at all?
Subjects such as remote development (You sit at your windows machine while developing and running code on a Linux server elsewhere or on a local VM) and deployment under various scenarios would be useful (for example, best way to deal with deployment to separate application and database servers).
In general terms, a bunch of IDE's can provide a project tree on the left and code completion. In the course of easy-to-follow tutorials it would be great to highlight and teach how to use benefits PyCharm offers that add value to the product.
Without this guidance people are left to poke around and sometimes fail to get it.
A few years ago I had a situation where I wanted a client to switch from SublimeText (an excellent product) to PyCharm. Probably a hundred seats or more. A lot of resistance to IDE's in general. Three hour videos from PyCon are deal-breakers, nobody but the most interested are going to watch them. And JetBrains didn't have anything I could use. It looks like things might be different now.
Along the same lines, there is the awesome Python Tools for Visual Studio plug-in that turns Visual Studio into full fledged Python IDE: https://microsoft.github.io/PTVS/
It supports CPython, IronPython, IPython, IntelliSense, mixed Python/C++ debugging, remote debugging, profiling, etc. And best of all? It's also open source.
> PyCharm Educational Edition is completely Free and Open Source. Novice programmers can download and use it for educational or any other purposes for free. Instructors and course authors can use it to create, modify and share their own courses.
I dug around the site a bit and found the quote above, but didn't find a link to the source. Anyone find one?
I use pycharm at work every day. Tried showing a teacher friend some stuff, but got confused as half the options seemed to be missing in the Edu version.
Q: "How does PyCharm Edu differ from PyCharm Professional Edition or PyCharm Community Edition?"
A: "PyCharm Edu is based on the Community Edition and comprises all of its functionality. Additionally, it installs and detects Python during installation. It has a simpler UI (adjustable in settings) and adds a new "Educational" project type.
PyCharm Professional Edition additionally supports different web development technologies, has remote development capabilities and additional languages, and supports working with databases."