1. I agree with all those points except the code completion one. True, in the example you give, code completion is useless. But, in cases where you are working with builtin libraries and methods, code completion can save you time from digging through docs.
      posted by matt at 05:43:16 AM on July 22, 2004  
  2. well... I would like those things :)
    Code completion: altho with python dot completition is almost imposible I would still like to have some key words at my disposal, words like SetBackgroundColour ;) Autocomplition like in SciTE *IS* usefull and not a resource hog.
    Debugger: I don't use it either but I would like to have support for the logging api built into IDE, maybe this will encourage the use of that module by more people.
    Projects: I would love a little window placed in a SplitterWindow with quick access to the file system, .py files from the same directory, favorite directories, stuff like that. Projects have meaning even for python, even if instead of using project files we simply place the scripts in a directory.
    Version Control One of the best VC systems I've used is the Eclipse CVS module. I would love something like that built in a Python IDE.
    GUI designer here I agree :) Gui Designers sucks, BUT with a good GUI toolkit behind, a GUI Designer could prove a very useful tool for prototyping.
      posted by Peter Damoc at 05:46:23 AM on July 22, 2004  
  3. Now download a evaluation copy of Wing2 (wingware.com) and start working with an IDE specifically designed for Python. The code completion rocks, for example, and the source analyzer will tell you beforehand wether or not itl be able to expand x. for you as it tells you what it guess is going to be.

    It's all about expectations; I know the code completion doesn always work in Python, but when it does it is so worth it. I certainly miss it in ither editors.

    And sometimes you *do* need a debugger, and I have yet to find one that beats the one in Wing, especially when dealing with remote code or a Zope product.

    As for projects, any large coding project involves a whole slew of files. Wing's project manager certainly has its limitations, but I can live with them. However, it enables me to switch projects very easily and quickly, something I make grateful use of.

    Which leaves me with agreeing on the version control and GUI designer points.
      posted by Martijn Pieters at 05:52:59 AM on July 22, 2004  
  4. Perhaps you should look into emacs. If you haven't used it before, it takes some dedication to get started, but is well worth it.

    As a bonus, it works well with all kinds of other documents to (e.g. shell scripts, HTML, etc.).

    Make sure you learn the emacs key bindings. If you change them around to your own, you'll miss a huge part of its benefit. Your goal should be to not have to use the arrow keys, end, home, etc.
      posted by an anonymous coward at 09:34:20 AM on July 22, 2004  
  5. Am I to take it that a newer version of Charm is coming out?
      posted by Sean at 10:58:35 AM on July 22, 2004  
  6. Have to agree. I notice that the fairly recent trend in Java to wrap code at 80 chars is mostly due to Eclipse having millions of windows. On a decent screen I end up editing a column of code that takes up a couple of inches width which single lines wrapped to take up 5 - 6 real lines. I am quite pleased that python makes this kind of behaviour difficult
      posted by mark at 11:29:58 AM on July 22, 2004  
  7. """Am I to take it that a newer version of Charm is coming out?"""

    Gueoa... I'm not sure... I've been thinking about extending Charm, or starting from scratch with a simpler but more Python-oriented editor... But I'm not sure if it's worthwile to write Yet Another Editor these days.
      posted by Hans Nowak at 12:14:58 PM on July 22, 2004  
  8. Good points,

    to further the
    """ program (class, module, etc) should do one thing """
    argument, read chapter #3 of the pragmatic programmer which makes a good case for using vim or emacs (powerful text editors) over an IDE, which by the way is pretty much what you are left with once you strip away all the IDE features that you "don't want"...

    as a previous comment mentioned vim and/or emacs do take a little getting used to but once you do get good at using things like marks, registers, regex's, macros and such you will find yourself in a position where you wondered how you ever got along without these features...

    my $0.02,
    Courtney

      posted by courtney at 12:55:06 PM on July 22, 2004  
  9. Actually, I find all the features you mentioned very useful to me. Decent code completion is something I miss a LOT in Python. I know the issues of a dynamic language but there are things that can be improved.

    For GUIs, did you consider Python for Delphi? It is a great way to leverage a mature GUI tool like Delphi and plug the dialogs effortlessly into Python programs. Pity the deployment is a pain. I don't have a stock method to hunt down module dependencies yet.
      posted by Ravi Teja at 01:02:28 PM on July 22, 2004  
  10. Wow... I think I disagree with each and every point you made! Let's see...

    Code Completion: It's silly for the human being to have to go look up whether that method is called "doit" or "doIt" or perhaps "do_it" *IF* the machine can tell. You say "if a feature doesn't always work, it might as well be absent", but I disagree completely. In a case like you provided, where the system can't guess what type x is, it simply shouldn't provide code completion for that case!

    Debugger: I hardly ever use a debugger myself, I just get by with "print" statements. But many, many people whose opinions I trust have said "to do a really good job you need a debugger". Actually, I'd *LIKE* to use a debugger, it's just always too much trouble. So what I *really* want is a debugger that's super-easy to use. Like perhaps one built into my IDE.

    Projects: I could wander all over my hard drive trying to find the files I need, or I could define some sort of a "project". IMHO, the most important features of "projects" in a good IDE are (1) list of files so I don't have to wander all over in an "Open File" dialog, (2) a handy way to execute the "build" (often not needed with Python), (3) a handy way to execute the unit tests.

    Version Control: Sure, the version control should be separate. But I've been using IDEA lately, and it has a *really cool feature(tm)*. It's got a version control built into the IDE (and SEPARATE from your real VC system) that performs a commit each time you save. It uses this to provide unlimited undo, along with the ability to tag or even branch while still playing around in your sandbox, before committing to the "real" VC.

    GUI Designer: I usually dislike "GUI Designer languages". But sometimes they're really useful (usually when designing GUIs!). I'd be perfectly happy with a GUI designer that's separate from the IDE.

    Oh, and one more feature that I want. I hardly ever wind up using just one language in a project. So I want an IDE that can be configured to work with LOTS of different languages and will be smart about each of them. When my Python code invokes a SQL stored procedure, I'd like to be able to click on the SP name and jump to the (properly hilighted) SQL source for the procedure. When I've written an extension in C++ it should open right up in a C++-aware editor. And so on. But unfortunately, I'm dreaming.

    -- Michael Chermside
      posted by Michael Chermside at 01:05:31 PM on July 22, 2004  
  11. I'm so glade to read that I'm not the only somewhat senior python programmer who never uses the debugger. I use only emacs and jed. Stopped using Wing when I realised that it has nothing to offer **me** that emacs doesn't have.
      posted by Peter Bengtsson at 01:25:01 PM on July 22, 2004  
  12. I don't like code completion in Delphi and Visual Studio because (1) it always stops working when i need it most (i.e. in complicated cases) and (2) it slows down the IDE when i already know the name of the methods (i.e., the simple cases). So, it's almost useless. The same happens with class browsers... :-(

    What i really like is Vim's CTRL-P and CTRL-N completion. (1) It only happens when you ask for it, (2) it searches the current document (backwards or forwards), so it's *very* fast when the word is already somewhere in your program (it may seem a naive feature, but it works!)

    As for GUI builders, i would happily use any builder that is easy and practical to use (explaining what is easy and practical would take too much time :-) ).
      posted by eu at 01:31:50 PM on July 23, 2004  
  13. Full code completion is demonstrably very difficult (if not impossible) for Python, agreed, yet for known modules and the like, it's extremely useful. But where I really do agree with you is on the subject of extra windows - I want to see the code damnit, not a bunch of other stuff.
    An interactive Python window is also pretty useful, for testing out expressions as you write.
      posted by Ben at 03:40:20 PM on July 23, 2004