Ted Leung on the air
Ted Leung on the air: Open Source, Java, Python, and ...
Mon, 24 Jan 2005
Smart tools for programmers

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.

[23:29] | [computers/programming] | # | TB | F | G | 8 Comments | Other blogs commenting on this post



There is an emacs based refactoring tool for java:
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




Have you looked at Leo ??

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

You can subscribe to an RSS feed of the comments for this blog: RSS Feed for comments

Add a comment here:

You can use some HTML tags in the comment text:
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

Name:


E-mail:


URL:


Comment:


Remember my info?


twl JPG

About

Ted Leung FOAF Explorer

I work at the Open Source Applications Foundation (OSAF).
The opinions expressed here are entirely my own, not those of my employer.

Creative Commons License
This work is licensed under a Creative Commons License.

Now available!
Professional XML Development with Apache Tools : Xerces, Xalan, FOP, Cocoon, Axis, Xindice
Technorati Profile
PGP Key Fingerprint
My del.icio.us Bookmarks
My Flickr Photos


Syndicate
RSS 2.0 xml GIF
Comments (RSS 2.0) xml GIF
Atom 0.3 feed
Feedburner'ed RSS feed

< January 2005 >
SuMoTuWeThFrSa
       1
2 3 4 5 6 7 8
9101112131415
16171819202122
23242526272829
3031     

Archives
2006
2005
2004
2003

Articles
Macintosh Tips and Tricks

Search
Lucene
Blogs nearby
geourl PNG

Categories
/ (1567)
  books/ (33)
  computers/ (62)
    hardware/ (15)
    internet/ (58)
      mail/ (11)
      microcontent/ (58)
      weblogs/ (174)
        pyblosxom/ (36)
      www/ (25)
    open_source/ (145)
      asf/ (53)
      osaf/ (32)
        chandler/ (35)
        cosmo/ (1)
    operating_systems/ (16)
      linux/ (9)
        debian/ (15)
        ubuntu/ (2)
      macosx/ (101)
        tips/ (25)
      windows_xp/ (4)
    programming/ (156)
      clr/ (1)
      dotnet/ (13)
      java/ (71)
        eclipse/ (22)
      lisp/ (34)
      python/ (86)
      smalltalk/ (4)
      xml/ (18)
    research/ (1)
    security/ (4)
    wireless/ (1)
  culture/ (10)
    film/ (8)
    music/ (6)
  education/ (13)
  family/ (17)
  gadgets/ (24)
  misc/ (47)
  people/ (18)
  photography/ (25)
    pictures/ (12)
  places/ (3)
    us/ (0)
      wa/ (2)
        bainbridge_island/ (17)
        seattle/ (13)
  skating/ (6)
  society/ (20)



[Valid RSS]

del.icio.us linkblog

www.flickr.com

Blogroll

java.blogs
Listed on BlogShares

Locations of visitors to this page
Where are visitors to this page?


pyblosxom GIF