Ted Leung on the air: Open Source, Java, Python, and ...
In the middle of his essay about why getters and setters are evil, Ryan Tomakyo took a swipe at IDE's:
In Java, the tool (IDE) is the brush and the code is the canvas. In Python, the language is the brush and the machine is the canvas - the language and the tool are the same thing. In Java you enhance the IDE, in Python you enhance the language.
This is the primary reason why there is little serious demand for Python IDEs. Many people coming to Python can't believe no one uses IDEs. The automatic assumption is that Python is for old grey beards who are comfortable with vi and Emacs and refuse to accept breakthroughs in programming productivity like IDEs. Then they write a little Python code and realize that an IDE would just get in their way.
Actually, I think that the real grey beards here would be the folks that came from Lisp Machines or Smalltalk. These languages are like Python -- if you want to enhance the language, you can. In fact in Lisp, you even have support in the language for metalinguistic abstraction. Even so, the inventors of the Lisp Machine and the Smalltalk environment did not eschew powerful tools simply because they had languages for stratified design.
Notice that I did not say IDE. IDE has become one of those words like "apple pie", except instead of meaning goodness, it means badness. What I am interested in are tools that work on the deep structure of code, as Jon Udell recently wrote. I want to have tools that understand what a program means, not merely its textual representation. I'm definitely an Emacs partisan -- I've been using GNU Emacs since version 17 and I used the Gosling Emacs on BSD 4.1 before that. I've hacked the keybindings on OS X to include a large number of keys. But I would sorely love to get off of Emacs for programming, because Emacs doesn't really understand what a program means. (Yes, I know, there's elisp, so I could make Emacs understand what my program means -- an elisp is one of the reasons that I continue to use emacs -- I can mould its behavior to match my preferences).
When I do Java, I do Eclipse, although before that I was an Emacs and Java on the command line kind of guy. It was only when I could get refactoring, and the ability to see all the callers of a method that I was finally pushed over the edge. The Eclipse guys are still at the beginning of what they could do with the information that they have about Java programs. Imagine a rendering of source code that just doesn't display the type declarations. That would be one way to solve the "type declarations are annoyingly in my face problem". Just treat the source code presentation as a view on the static structure of the program and allow multiple presentations. In one presentation, you see regular Java. In another presentation you see Java without the declarations.
With Python, the tools are different. Right now I use a combination of Emacs and ipython for much of my work. When I start having to interact with code in the application layer of Chandler, then I find it useful to have Wing in order to present a usable debugger interface (I can hear James Robertson cringing all the way from the other side of the country). But none of these tools really understand what a Python program means either.
Having a good language doesn't mean that you won't get more leverage from good tools.
I frankly can see the point in dynamic typing and lots of other nice features in Python and other languages. However, many of these can kill IDE-ability.
While Eclipse can be a dog sometimes, the fact that JDT "understands" Java is great. In fact, it's greater the bigger your program is.
The anti-Java-like crowd will say that the Java-like languages provoke big programs and the associated problems but... well, I kinda think that big complex programs are unavoidable in a lot of areas, and then, you'll need an IDE, a simple language and lots of patience :-b
Posted by Alex at Tue Jan 25 12:57:06 2005
Posted by Ted Leung at Tue Jan 25 23:00:59 2005
One would hope this is a language maturity issue as opposed to a developer mindset.
I'd be interested in hearing your opinion on what IPython needs in order to understand what a python program means.
Posted by Dolapo Falola at Wed Jan 26 06:18:05 2005
http://xref-tech.com/xrefactory-java/main.html
It isn't as nice as idea, eclipse, ect, but it has all
the basics and you can always break out the elisp for the rest...
-m
Posted by morganhankins at Wed Jan 26 09:29:22 2005
http://jde-usages.sourceforge.net
It's a plugin to the Java Development Environment for Emacs (JDEE) http://jdee.sunsite.dk/.
Posted by Suraj Acharya at Wed Jan 26 09:55:58 2005
Posted by J Moore at Wed Jan 26 14:42:45 2005
looking at files gives me a better 'visual' idea of what my software 'looks like' (and my fingers get tired using a mouse). That way I can 'handle' it more easily (in my mind).
However, I would LOVE to have a decent refactoring tool: I'm jealous of Eclipse and Java. We have the Bicycle Repair Man project, but whenever I've dipped in to see where it's at it's 'not yet ready'. The last version I tried was 0.8, so it might work now, but it has been a while. I find this in general in the python community: great ideas get going, but often fall by the wayside before they reach fruition (AnyGui was another project that comes to mind). Oh, and by the way, whenever I've tried out Chandler it has crashed and I've given up..in my experience another great project that isn't (yet) delivering (I do realise that it's early days! :) - all I ask is for a release to minimally work (but thanks for making the effort - I really respect that!)
http://bicyclerepair.sourceforge.net/
Posted by Tushar at Wed Jan 26 15:03:47 2005
http://leo.sf.net
<quote>
Leo is...
* A general data management environment.
Leo shows user-created relationships among any kind data:
computer programs, web sites, etc.
* An outlining editor for programmers.
Leo embeds the noweb and CWEB markup languages in an outline context.
* A flexible browser for projects, programs, classes or any other data.
* A project manager.
Leo provides multiple views of a project within a single outline.
Leo naturally represents tasks that remain up-to-date.
* Portable. Leo runs on Windows, Linux and MacOS X.
* 100% pure Python. Leo uses Tk/tcl to draw the screen.
* Fully scriptable using Python. Leo's outline files are XML format.
* Open Software, distributed under the Python License.
Please use Leo's SourceForge forums to ask questions and make suggestions.
Leo's author is Edward K. Ream
</quote>
Posted by Jason Cunliffe at Thu Jan 27 04:51:09 2005
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
<a href>
, <em>
, <i>
, <b>
, <blockquote>
, <br/>
, <p>
, <code>
, <pre>
, <cite>
, <sub>
and <sup>
.You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk