10

I have heard before that many Python developers don't use an IDE like Eclipse because it is unnecessary with a language like Python.

What are the reasons people use to justify this claim?

Bain Markev
  • 2,935
  • 5
  • 29
  • 28
  • 5
    You don't *need* an IDE in any language (well most languages, certainly all the common ones), but I guess you're asking why some people say an IDE is less useful with Python than with other languages? – David Z Sep 09 '10 at 03:05
  • For me a good color scheme and nice text rendering are way more important for coding than code completion and such. It still hurts when I have to use Eclipse for Java Stuff... and yes most of the Python IDEs under Linux have either awful looking text rendering, or they don't have any good support for color schemes, I just cannot stand black text on white background for half a day... – Ivo Wetzel Sep 09 '10 at 03:45
  • Vim and the python console are all I've ever needed. I've never even learned to use a python debugger. Only things I've ever needed a debugger for are C/C++ extensions, which I end up using gdb for, anyway. – Nathan Ernst Sep 09 '10 at 03:57

11 Answers11

15

I'd say the main reason is because Python isn't horribly verbose like, e.g., Java. You don't need an IDE to generate 100s of lines of boilerplate because you don't need 100s of lines of boilerplate in Python. You tend to automate stuff within the language instead of further up the toolchain.

A second reason is that you don't need build process automation b/c there's no build process.

dsimcha
  • 67,514
  • 53
  • 213
  • 334
  • SO wouldn't need to have rule "not constructive" if we get more often questions like this being answered in a concise, rational, and pragmatic way like this one. – Andre Figueiredo Sep 13 '17 at 19:40
9

I'm going to risk offending some people and express something that I think a lot of python lovers will agree with: Java is so bloody cumbersome and verbose that one almost needs an IDE like Eclipse just to manage its unwieldy bloat.

With python, the main programming-specific features I want from my editor are syntax highlighting and a jump-to-definition command. Bonus points for a complementary return-from-jump command.

I find Geany does what I need, and is refreshingly light, quick, and stable compared to monster IDEs like Eclipse. For other suggestions, take a look at this question.

Community
  • 1
  • 1
ʇsәɹoɈ
  • 22,757
  • 7
  • 55
  • 61
  • I agree with you, not sure why you were voted down, I found myself wanting to do weird things in PHP, also, to automate the writing of bits of code that in Python isn't even given a second thought. – Rick Sep 09 '10 at 04:16
  • hey, thanks! I didn't know about Geany, I'm gonna try it out. – vitorbal Sep 09 '10 at 04:30
  • I find the Java + IDE combination much more productive than Editor + dynamic language! The IDE reports errors early with dynamic langauage you have to wait until a test hits the line in error. – James Anderson Sep 09 '10 at 04:48
  • There are other approaches to early error finding. I put `compiler=pylint --output-format=parseable "%f"` in geany's filetypes.python file, so Build->Compile brings up a list of errors and lets me jump to each one. Of course, pylint must be installed for this to work. – ʇsәɹoɈ Sep 09 '10 at 05:09
  • As stated below IDEs prevent the need to mode switch between different tools to complete a software development task. If you're stating that there are less modes required to develop Python then I think you'd have a point. However I do not believe that to be the case. – Christopher Hunt Sep 09 '10 at 05:36
  • I don't think I can agree with you, mostly because the vast majority of IDEs locate errors in the same way I described above: a keystroke/click runs a tool whose output is transfered back into the IDE. (Perhaps this is why they're called Integrated Development Environments: various tools are integrated into one UI.) Eclipse's continual automatic parsing is unusual. In any case, I probably should have mentioned that the approach I described above draws red squiggly lines under errors much like you see in Eclipse. All I have to do is press a key, which is hardly a mode switch at all. – ʇsәɹoɈ Sep 09 '10 at 05:46
  • (That is, I don't think I can agree that your comment refutes anything I wrote, or devalues my choice of editors.) – ʇsәɹoɈ Sep 09 '10 at 05:58
6

I know why you need (can benefit from) a good IDE - Rapid Application Development

Time is money :) And I'd much rather spend my time solving problems than typing every little piece of code in.

PostMan
  • 6,899
  • 1
  • 43
  • 51
2

Two Main Reasons


  1. Because of the dynamic typing and generally super-powerful functionality, there just isn't much extra typing that the IDE can do for you. Implementing a Java interface in a package is a lot of work and dozens of lines of boilerplate. In Python or Ruby it just doesn't have to be typed in the first place.

  2. Because of the dynamic typing, the fancy editor doesn't have nearly as much information at its fingertips, and so the capability is reduced as well.

So the squeeze is top-down from the reduced need and bottom-up from the reduced editor capability, the net result being a really small application area. The benefit of using a fast and familiar day-to-day editor ends up higher than the benefit of the mostly-pointless IDE.

I suppose it's also possible that the categories are a bit fuzzy now. Vi(1) is the lightest-weight and fastest "plain" editor around, and yet vim(1) can now colorize every language under the sun and TextMate is classified as "lightweight", so all of the categories have really begun to merge a bit.

DigitalRoss
  • 143,651
  • 25
  • 248
  • 329
  • Agreed. I come from Java world and IDE was giving me a lot of help with autocompletion and hints regarding API I use. With dynamic languages like Python this is harder. That's the price/trade-off for flexibility. – dzieciou May 30 '19 at 09:42
1

Python is dynamically typed and the way it handles modules as objects makes it impossible to determine what a name will resolve to at a certain time without actually running the code. Therefore, the 'tab completion' feature of IDEs is pretty useless.

Also, since Python doesn't have a build step, an IDE isn't needed to automate this. You can just fire up python app.py in a terminal and have much more control over how it runs.

Forrest Voight
  • 2,249
  • 16
  • 21
  • 4
    Actually, lots of editors have code completion for Python. See:http://stackoverflow.com/questions/698/is-there-an-ide-that-provides-code-completion-for-python . – slebetman Sep 09 '10 at 03:26
  • 1
    "impossible" is inaccurate. As has been stated many IDEs offer code completion. – Christopher Hunt Sep 09 '10 at 03:43
  • 1
    The IDE's that I've seen offer code completion are woefully incomplete. The code completion is there when you create an object, but once you use it out of that scope, there's no way to determine type without running the code. – ablerman Sep 09 '10 at 03:53
1

It sounds like 'You don't need vehicle to go to work' to me. It might be true or not, depends on how far your workplace is.

tia
  • 9,518
  • 1
  • 30
  • 44
1

IDE's assist in developer productivity and can equally apply to Python. The defining thing about an IDE is the ability to not have to "mode switch" between tasks such as editing, compiling, testing, running and debugging etc.

Christopher Hunt
  • 2,071
  • 1
  • 16
  • 20
1

Python uses dynamic typing and interpreting, rather than compiling. The interpreter itself will output comprehensive error messages, similar to Perl.

If you look at dynamically typed programming languages in general, you'll find that most of them are not really suitable for IDEs. RAD components (code completion, code generation, code templates, etc) can be included in almost any smart text editor, like Vim, Emacs, Gedit, or SciTE.

I use Vim and Gedit for most of my programming, and I find, that I don't need IDE-ish stuff other than that, what is already included in those text editors. When I program in Java, however, I use Eclipse most of the time, since keeping track of all those parts manually, would be too time consuming. I tend not to use IDE's for my C++ stuff, too, but when the projects grows beyond a certain size, I tend to use either Eclipse (CDT), NetBeans, Code::Blocks, or something like that.

So it's the family of languages itself, that make IDE's unnecessary, but it doesn't mean that working with IDE's with those languages, is bad practice.

Side Note: There's even a Lua environment for Eclipse. Out of all languages, Lua is probably one of the least that needs an IDE...

polemon
  • 4,722
  • 3
  • 37
  • 48
  • If a text editor has code completion, code generation, templates, etc, when does it become an IDE? – Falmarri Sep 09 '10 at 04:41
  • Well, I believe it's a grey area then. You've got you're plain text editors with no syntax highlighting, etc on one end, and IDE's on the other. An Editor can, but doesn't necessarily have to contain a debugger for instance, which is part of an IDE. – polemon Sep 09 '10 at 05:06
0

Well I use an IDE when programming in Python on my computer. Its easier that way . But when on the run or on university's terminal , I prefer terminal .

Muhammad Shahab
  • 4,187
  • 4
  • 34
  • 44
0

I'm still fairly new to Python and use an IDE with code completion but find myself rarely needing it, Python does a really good job of not having an uncessarily large number of verbose calls, as dsimcha pointed out above. I find that just using a basic IDE I can work efficiently in it and the fact that the code is a lot less cluttered without having brackets makes it easier to work with files that have a lot of lines of code (something that I found unbearable in PHP due to all its syntax clutter)

As far as @Postman's answer, I'm not sure that having an IDE makes RAD any faster, at least not in the case of python, its such a succinct language, the only thing that it would help in would be code completion, the way you answered it it sounds more like you are hinting at the use of a framework, which I believe is still very important in Python which does make RAD much more possible than otherwise.

Rick
  • 16,612
  • 34
  • 110
  • 163
0

The problems is IDEs dont work very well with dynamic languages.

The IDE cannot second guess runtime duck typing so other than some basic syntax checking and displaying the keywords in pretty colours they ar enot much help.

My personal experience is with groovy and eclipse where eclipse is actually pretty annoying. Method completion for a groovy object brings up about 200 posabilties, it constantly insert quotes and brackets exactly where you dont want them and messes up the syntax coloring whenever it encounters a reasonably complex regular expression. I would ditch eclipse except the majority of the code base is in Java where eclipse is useful.

James Anderson
  • 27,109
  • 7
  • 50
  • 78