Hi Python Community… I have just started to walk along Python highway coming from MATLAB road… I’m very happy to start learning Python, but one of the first things that got me puzzled was the existence of many Python IDEs, and it seems that each one of them has a superior merit over the others. In contrast, MATLAB has a single IDE that is common for all MATLAB users. One idea I’m proposing is to develop a new IDE that gathers all the best merits of Python IDEs currently available in the market. For example, PyCharm appears to be the best IDE for script editing while Spyder seems better for variable explorer, etc. If some of you could come up with a single IDE that gathers all these beautiful pros, I think it will be just fantastic… For example, you may initiate a survey where Python users can vote for the best features in the Python IDEs they are using. You can then gather this information and design a brand new IDE with all pros recommended by Python users and experts. it’s just an idea anyway and being novice, I don’t know if this idea is feasible or not… But it just crossed my mind and I thought it is useful so I decided to share it with you here. Thanks in advance.
Python is open source, so nothing stops you from starting to develop a new IDE and trying to gather people around it. You will soon find that this is a massive undertaking though; if it were easy to create an IDE with the best features of each of the available options, don’t you think they would all have added features from other IDEs already?
And in contrast, MATLAB is not open source, and no one else is allowed to build an IDE for it (at least, not with language intergration). That’s why there’s only one choice–not because it’s the best of all the options, but because they control the language so tightly.
Regarding the proposal, programmers can’t even agree on which text editor is best, so I don’t think “the best IDE” could even be defined.
Thank you all for your nice feedback and special thanks to Stephan Pochmann for the diagram he shared. It is illustrative and funny at the same time, so I liked it so much… It made me laugh… However, still… I mean this should be a continuous project since nothing is absolute; right? For example, a team can design an IDE now with potentially some of the best features available in the market, and continuously update/upgrade the project once a new idea or useful feature pops up. Thanks again everyone… I’m already very delighted to be part of this amazing community.
You’re assuming that it’s possible to invent a single program that has every possible benefit that everyone wants. Here’s a selection of five.
- Low memory usage
- Integration (tab completion, syntax highlighting, etc) with every programming language that I use
- Inbuilt documentation for all installed Python packages
- Works offline
- Full history (from git/svn/hg/bzr/cvs) for all files, including showing how long since a line was edited
You can fairly straight-forwardly create any one of these features, and I know of plenty of IDEs that have each of them. But good luck getting all five into a single program. That’s why we have many different ones - because different people will place different emphasis on different features.
One approach, would be to design the IDE to be extendible, by way of plugins. I’m thinking here of the way in which Fabio Spampinato has developed Notable.
I think that such an IDE would be of interest to Python developers, especially if it was developed in Python, with Python developed plugins and it was all open source.
In that case, my IDE is Xfce - that is to say, my entire Linux desktop. It’s extensible by way of programs. I have a variety of “plugins” for it, including six text editors, three terminals, more language compilers than I can count, and even two image editors for good measure.
The ultimate in flexibility is an operating system. You’ll never make an IDE that’s as good at being flexible as something whose entire purpose is to run other programs!
To my mind, that seems like a ridiculous comparison.
From my point view it is worth programming without IDE once in a while, it teaches being comfortable with the low level tools, which can be useful in those emergency cases when the IDE is helpless but things still need to get done.
Is it? Why? What exactly IS an IDE? Quoting from Wikipedia:
An integrated development environment (IDE ) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger.
The boundary between an IDE and other parts of the broader software development environment is not well-defined; sometimes a version control system or various tools to simplify the construction of a graphical user interface (GUI) are integrated.
Or pick some other definition. Then tell me which of these counts as an IDE, and why you distinguish:
- VS Code
- VS Code, but in the cloud and accessed via your web browser
- A GitHub Codespace
- A cloud-based virtual machine that only runs a text editor and some compilers etc
- A local VM that runs the same as the above
- Running those same programs on your own desktop
- Emacs, but calling it an operating system this time
- An editor with a built-in terminal
- A terminal with a built-in editor
What precisely does it take for something to be an IDE, and why shouldn’t my desktop count as one? It’s integrated. It’s an environment. And it has been built with development in mind.
You might disagree with me about whether it counts or not, but is it really such a ridiculous comparison? At very least, it’s going to be extremely close to the category.
Only insofar as this development environment is not “integrated” in the same sense. I take the same approach myself, however, and have been quite satisfied with it, for many years.
The problem is that the definition of “best feature” is highly subjective, and at some point a decision will be made that some people will disagree with. At that point there is a chance for a bifurcation in the project, and so two different “best IDEs” are created. And then it happens again, and again… and eventually you get to where we are now.
The reason MATLAB has a single editor is because they own the language, not because they made all the best decisions. Having lots of choices is a good thing, in this situation.
I suggest to hold the stick from the middle. The development of a new IDE having many of the best features that the majority of Python users would agree upon is one approach that may suit a group of Python users, and at the same time, the development of separate IDEs as those already there in the market should continue as normal to suit the purposes of other Python users. I’d like again to thank everyone who contributed their thoughts in this thread. This discussion is fruitful and I’m excited to learn more about mighty Python in the near future…
Because Xface is a DTE, so it’s like comparing Apples to Oranges: yes, they’re both fruit, but they’re not the same thing.
Yes, there is some crossover, and one can get pedantic about the definitions, but I don’t use my DTE in the same way that I use any of my IDEs; be that Python, PHP, HTML, C, or whatever IDE I’m using for whatever I working on: each has its own environment, and yes they all share the same computer system and I can launch any one of them from my DTE, but I don’t see my DTE as a part of any of the IDEs, although they all rely on the computer OS and the DTE that I use.
I asked you to explain how it isn’t the same thing. You can’t answer that simply by reasserting that it isn’t.
So… you’ve never used a desktop as an IDE. That’s fine. But it doesn’t mean that the comparison is ridiculous. Like I said, I’m fine with you disagreeing whether it is one or not (there’s a grey area between “text editor” and “IDE”, too, and an editor with “press F7 to run your build” may or may not count as an IDE), but I do take offense with your statement that it was ridiculous for me to even suggest it. So far, all you’ve shown is that your personal view is too narrow to include this in the definition of an IDE.
You all know better than to start arguing about this stuff. This request is clearly not going to be implemented, and it’s ok to just acknowledge that and walk away rather than continuing to try to convince the OP otherwise when they’ll just continue adding “what about” responses.