Dreaming of new generation IDE

  • Thread starter Vladimir Ignatov
  • Start date
C

catonano

Vladimir,

Hello,

I am sitting here for quite some time, but usually keep silent ;-) I

Finally I develop a feeling that strong instrumentation / tools can
bring us the best of two worlds. That I am dreaming on is an absolute
new type/class of IDE suitable for Python and potentially for other
dynamic-type languages. Instead of current text-oriented IDEs, it
should be a database-centric and resemble current CAD systems instead
of being just "fancy text editor". Source text should be an output
product of that CAD and not a "source material" itself.

I don't know CAD systems, but I want to share my comments about this.

I self learned to program with Squeak Smalltalk at 17. Later, I worked
with VisualAge for Java, that was a Smalltalk IDE applied to Java.

Now, I can tell you that in Smalltalk IDEs the code is not written in
files. It's stored in a thing called "image".

You have these frames, in the first frame you have the classes, in the
second frame you have the child classes and in the third frame you
have the methods of the child class you selected.

A bigger frame showed the code of the single method you had selected.

You modified the method, hit ctrl-s and it was COMPILED and saved in
the image.

You had a frame in which you could interactively call your objects,
some of them represented things that were "showable" on the monitor
and you could see these things pop up as you instantiated them.

Then, you had some specialized browsers in which you could search, for
example, all the places a method was called in (a thing I have
difficulties with, in python, today)

VisualAge had its own management version system such that EVERY TIME I
saved a method, it became a VERSION and there was a specialized
browser for browsing the versions (the image tended to grow, that's
it) while the regular browser defaulted on the last version and there
was a tool for freezing a version as a milestone.


Today, I tried to understand the twisted.web.client code and I found 3
methods I couldn't find by who were called.

I asked on the mailing list and they suggested me where they were
called and that the tool for such thing is "grep".

So, you grep, you get a list of files, you open each one of them and
keep scrolling and switching from one file to another... endlessly.
Maybe I'm getting old, but I tend to get lost in the process.

I can't believe the code editing situation today is in a such sorry
state.

Is this what you meant ?

If it's this, then it's not experimental at all, it's been done
already and been put apart.

Crap won :-(

You write:
Instead of current text-oriented IDEs, it
should be a database-centric

well, it seems you agree with Alan Kay, (the Smalltalk inventor) when
he wrote that programming is NOT glorified text editing.

He called it "direct manipulation" every method was a live thing you
could send messages to and the source code that implemented it was
just an attribute of the method.

So you could have had a World Of Warcraft like interface, to
manipulate your methods.

You know what I'm doing now ? I'm drawing the map of
twisted.web.client on a paper with a pencil :-(

Bye
Catonano
 
S

Steve Holden

catonano wrote:
[... much wishing for the "good old day" of SmallTalk ...]
Today, I tried to understand the twisted.web.client code and I found 3
methods I couldn't find by who were called.

I asked on the mailing list and they suggested me where they were
called and that the tool for such thing is "grep".

So, you grep, you get a list of files, you open each one of them and
keep scrolling and switching from one file to another... endlessly.
Maybe I'm getting old, but I tend to get lost in the process.
Maybe you are getting old. Or maybe you didn't realise that the advice
was given you so that it would be useful whether or not you were using
an IDE.
I can't believe the code editing situation today is in a such sorry
state.
It isn't. There are many IDEs that will allow you to easily locate the
calls of specific methods.
Is this what you meant ?

If it's this, then it's not experimental at all, it's been done
already and been put apart.

Crap won :-(
It seems you yearn for the days of the SmallTalk image. Unfortunately
this didn't allow for conveniences like using external data stored in
files whose contents persisted and which could be transferred between
different machines.

I would never call SmallTalk "crap": it was a ground-breaking system
almost 40 yers ago. But the environment suffered from many limitations
of which you appear to be entirely unaware.
You write:


well, it seems you agree with Alan Kay, (the Smalltalk inventor) when
he wrote that programming is NOT glorified text editing.

He called it "direct manipulation" every method was a live thing you
could send messages to and the source code that implemented it was
just an attribute of the method.
This aspect of SmallTalk was one of the things that made software
engineering rather difficult. Everything could be changed on the fly.
So you could have had a World Of Warcraft like interface, to
manipulate your methods.

You know what I'm doing now ? I'm drawing the map of
twisted.web.client on a paper with a pencil :-(
Well why don't you get yourself a sensible tool like Wing IDE or Komodo?
They at least will let you solve the problem you currently face without
having to poke around in the innards of a running virtual machine the
way we used to in SmallTalk.

regards
Steve
 
A

alex23

catonano said:
You know what I'm doing now ? I'm drawing the map of
twisted.web.client on a paper with a pencil :-(

You're a programmer. Why are you complaining about the problem instead
of endeavouring to solve it?
 
B

Bruno Desthuilliers

catonano a écrit :
(snip)
Today, I tried to understand the twisted.web.client code and I found 3
methods I couldn't find by who were called.

I asked on the mailing list and they suggested me where they were
called and that the tool for such thing is "grep".

So, you grep, you get a list of files, you open each one of them and
keep scrolling

May I suggest reading grep's FineManual ? with proper options, you'll
get not only the file, but also the exact lines (and lineno) where the
expression appears.
If it's this, then it's not experimental at all, it's been done
already and been put apart.

Crap won :-(

Ever read "worst is better" ?-)

Now, image-based systems like Smalltalk do have their share of quirks
and drawbacks too.

Also, Smalltalk's toolbox can only be used by and for Smalltalk. A bit
autistic, he ?

I'm doing mostly web development nowadays. That means that I'm
constantly switching between server-side code (mostly Python or PHP but
can be almost any other language), shell scripts, SQL, html + whatever
templating language is used by this project, javascript and css. And of
course quite a few configuration file formats...

So well, as far as I'm concerned, not having to learn 42+ different
toolboxes is a big plus (having to remember 42+ different languages is
already hard enough) - I can use a same code editor (Emacs) and standard
unix/linux text-handling tools on all my codebase.
 
F

Francis Carr

I can't believe the code editing situation today is in a such sorry
I can't believe an old coder is feeling so sorry for himself.

Today, I tried to understand the twisted.web.client code and I found 3
methods I couldn't find by who were called.

I asked on the mailing list and they suggested me where they were
called and that the tool for such thing is "grep".

So, you grep, you get a list of files, you open each one of them and
keep scrolling and switching from one file to another... endlessly.
Maybe I'm getting old, but I tend to get lost in the process.

Maybe the relevant lesson to be taken from Smalltalk is *not*
"put it all in one image"
but instead
"write code to solve problems, e.g., reading code"


I suggest defining a few shell functions to *automate* the search, for
example in zsh

function allf () {
# Recursively find files with suffix matching comma-separated list
in $1.
# For example, "allf cpp,hpp" finds all "*.cpp" and "*.hpp".
find . -type f | grep -E "\.(${1//,/|})$"
}

function src () {
# Similar to "allf", then search for a regex among the results.
find . -type f -print0 | grep -zE "\.(${1//,/|})$" | xargs -0 grep -
lE $2
}

function srcl () {
# Similar to "src" (see above),
# then search for a pattern among the results,
# and pass matching files to "less".
src $1 $2 | xargs less -p $2
}


Smalltalk's images are cool. But they are such a huge hammer, and
they impose so many additional requirements! The costs outweigh the
cool.

-- FC
 
C

catonano

Hello again, people

I can't believe an old coder is feeling so sorry for himself.

Ok, I'm feeling sorry; still, I think I made a point.

Maybe the relevant lesson to be taken from Smalltalk is *not*
  "put it all in one image"
but instead
  "write code to solve problems, e.g., reading code"

I suggest defining a few shell functions to *automate* the search, for
example in zsh

function allf () {
Smalltalk's images are cool.  But they are such a huge hammer, and
they impose so many additional requirements!  The costs outweigh the
cool.

Francis, I disagree on the final balance statement about the Smalltalk
images and I thank you for your suggestions on how to use grep and
shell scripting.

I also have no problem to admit I was feeling sorry for myself.

But today I found something I think is relevant to this thread.

It's here:
http://www.cs.brown.edu/people/acb/codebubbles_site.htm

it's about a IDE for Java called Bubbles.

It sports a zooming interface and the MAIN idea it proposes, in my
opinion, is that the code is NOT thought as files content, rather as
fragments, called bubbles.

And then you arrange your bubbles in a 2d space a little bit like in a
videogame.

I think it's very similar to the Smalltalk image thing (as a concept,
if not as an implementation), with its live things and direct
manipulation.

If you open the footage directly in youtube, you can go to some
"related" footages about a similar thing made by Microsoft that of
course ditches the main idea retaining the concept of files and
directories, overlapping the concept of files and classes (sigh).

I didn't imagine such a research existed and the discovery confirms to
me that the bother I indicated in this thread is somewhat shared by
someone, around the world.

As for my feelings, I swear I'm taking care of them in a way that
doesn't involve bothering anyone on any newsgroup ;-)

Steve, does Bubble gets any closer to your vision than the "ugly"
Smalltalk thing ?

Bye
Catonano
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,152
Latest member
LorettaGur
Top