What is your favourite IDE?

C

Chad Perrin

Compared to what? Emacs? Vim has come a long way, and I must confess I
never learned Emacs, but if I had to do serious Lisp programming, I'd
for sure bite the bullet and immerse myself in Emacs. Actually, the
reason I learned "vi" instead of "emacs" to begin with is that the
system folks told us not to use "emacs" because it was a memory hog. :)

Yes, compared to Lisp in emacs.
 
C

Chad Perrin

Initially, I did the same and largely for the same reasons. I also agree 'vi'
clones have come a long way. There has been a long vi <-> emacs debate which
I've found myself confronted by many times. The problem is I tend to agree with
arguments on both sides. Many vi users will say that vi fits better with the
Unix tradition of lots of basic utilities that all do one thing well and which
can be connected or combined to do more complex things. There are many times
I've been able to create a very functional solution that has consisted of a
shell script calling various utilities and even vi to edit some data that the
utilities will work on etc. This sort of functionality would be difficult but
not impossible with emacs. However, either it would be slow or all your users
would need to be configured to use emacs.

Emacs certainly works
against that philosophy as it is nearly a complete OS (or at least an OS shell)
in and of itself. However, now after 11 years of emacs, I've certainly begun to
appreciate the benefits of an editor that allows you to also integrate into it
all the common tasks you need to do. I've noticed significant productivity
gains from the ability to run emacs and get high functioning support for
reading mail and newsgroups, editing files on remote systems via ssh or some
multi-hop system that passes through multiple remote hosts, yet, functionallly
is no different to editing a local file, integration with compilers and
debuggers, and ability
to jump to source code locations of errors with a keystroke (for mulitple
different languages), basic web surfing (though w3m doesn't handle javascript
and other more modern web stuff), ability to heavily customize things, cut and
paste data between all these applications in a powerful and consistent way and
pretty much configure the whole thing to suit my needs rather than change my
way of working to fit the tools. Most of my interaction with the filesystem and
basic utilities is now done either through 'dired' (emacs directory/file
manipulation facility) or eshell (an emacs lisp shell). Its quite nice being
able to execute lisp expressions to do things in a shell. I also love the fact I can have all
functionality via the keyboard and don't have to use the mouse at all if I
don't want to.

You can have instant, automatic integration of tools providing much the
same benefits you ascribe to emacs without using emacs, just by learning
to use screen. In fact, screen is one of two ways to pretty much prove
that a free unix system is its own IDE (the other being the X Window
System with terminal emulators and workspaces). One of the benefits of
using screen as your world/IDE rather than emacs is that you don't have
to do everything the Emacs Way if you don't want to. That can be very
important, considering issues like repetitive stress injuries and a need
for specific functionality that may not be easily coaxed out of emacs.

I've always found it a touch amusing that RMS, the inventor of emacs,
suffered for so long with debilitating RSI. It seems almost like poetic
justice.

However, at the same time, when doing simple jobs or a basic sys admin config
change etc, more often than not, I will just use vi because it is quick to
start, plus I can fit it on a rescue disk (which I am unlikely to be able to do
with emacs!). I would have also admit many of the advantages of emacs that
originally got me using it are now available in vim et. al. - especially
programming tasks.

I've also found it amusing that while I might carry around vi, with all
custom configs, on a 1.44MB floppy, emacs users can only carry around a
configuration file. The editor itself needs to be on the machine
already if they're going to use it.

I'm not a huge fan of editor-knows-best IDEs. That applies not only to
emacs, but to apps like Visual Studio and Eclipse, too. Others may like
that sort of thing, and they're welcome to it, but I'll probably stick
with Vim (or, in a pinch, vi) for quite a while to come. I'm likely to
change editors about the time I create my own.
 
C

Chad Perrin

There have been some lisp dialects that combined the IDE with the language
similar to what smalltalk does.

With respect to coding in lisp, the combination of emacs and SLIME is a very
nice environment. I believe there is also a project that is developing
integration with SWANK (the lisp side of the emacs/slime combination) to VI, so
that you can get a similar integration, but with VI as the front end
editor/driver

If that's Vim, and not just vi, I'm sure I'll be all over it.
 
C

Chad Perrin

Dr. Scheme comes to mind ... an IDE *and* a language tutorial. And for
Forth, there's the non-free and Windows-ia32-only SwiftForth package
from Forth, Inc. It's not as tutorial as Dr. Scheme, but it does come
with an excellent tutorial in PDF.

I've seen Dr. Scheme, and it's a really nice idea. One of these days,
I'll actually spend some quality time with it.
 
M

M. Edward (Ed) Borasky

Chad said:
I've seen Dr. Scheme, and it's a really nice idea. One of these days,
I'll actually spend some quality time with it.
SwiftForth is a lot more fun. :)
 
M

M. Edward (Ed) Borasky

Chad said:
If that's Vim, and not just vi, I'm sure I'll be all over it.
Does anyone actually use (or even know where to find) "just vi" any more?
 
M

Martin DeMello

Hello all,

A journey that has taken me from developing in Filemaker through the
self study of Ruby, Rails, and regular expressions has led me to
begin looking at algorithms and data structures. Though I don't have
a traditional computer science background, I am trying to educate
myself as best I can.

http://www.brpreiss.com/books/opus8/ is worth a look. However, if your
goal is to teach yourself about algorithms and data structures, I'd
suggest working your way through How to Design Programs (download
DrScheme as the recommended scheme implementation), and then proceed
with Structure and Interpretation of Computer Programs, the classic
text on the subject.

martin
 
E

Eleanor McHugh

http://www.brpreiss.com/books/opus8/ is worth a look. However, if your
goal is to teach yourself about algorithms and data structures, I'd
suggest working your way through How to Design Programs (download
DrScheme as the recommended scheme implementation), and then proceed
with Structure and Interpretation of Computer Programs, the classic
text on the subject.

I'd also recommend "Data Structures: An Advanced Approach Using C" by
Esakov and Weiss.


Ellie

Eleanor McHugh
Games With Brains
 
R

Rick DeNatale

Isn't that what Smalltalk does? It combines the language and the IDE in
one convenient package.

Most, but maybe not all, Smalltalk implementations combine the
language, the run-time and the development environment. In typical
Smalltalk implementation:

* The compiler is written in Smalltalk, methods are compiled to
objects (usually instances of a class called something like
CompiledMethod which contains a reference to the compiled byte codes,
and information about the bindings of references to local variables
and the like.

* The tools run in the same execution environment as the application.
The information needed by the compiler and other development tools is
kept by Smalltalk objects which model the code (Classes, Metaclasses,
Behavior, CompiledMethods). The IDE can do things like get a list of
all implementors of a particular method selector, or all the methods
which invoke that selector by querying the run-time environment. The
source code is located through these objects as well. One of the
things which newbies to Smalltalk find strange is that there are no
explicitly edited source files. In the original Smalltalk-80
implementation, source code was kept in a changes-log file and methods
had a pointer into that file so that they could find their source.
Often this is supplanted by a shared source database which provides
SVN like function. EnvyDeveloper which worked with a variety of
Smalltalk implementations including (Smalltalk/V, VisualWorks (later
merged), and IBM Smalltalk) was the most popular implementation of
this.

* Another thing which some find strange is that the run-time state is
persistent and is saved as an image. You can terminate Smalltalk,
restart it and you're right back where you were, complete with any
existing instances of objects, suspended threads (Smalltalk calls them
Processes) etc.

* The reflection capabilities in Smalltalk are more powerful than in
Ruby, this enables quite a few of the tools. Smalltalk programs can
reflect not only on the class definitions and other semi-static
properties, but can also reflect on and manipulate the run-time
execution state. As an example of the difference, in Ruby, although
one can access a representation of the current process stack frame
using Kernel#caller, this representation is textual and only really
describes which methods are on the stack. In Smalltalk the process
stack can be examined in detail, and manipulated (usually by the
debugger, which like all of the other Smalltalk development tools is
written in Smalltalk). In the Smalltalk debugger you can do things
like change the values variables, or even change the source of a
method and recompile it, then resume execution from the point of
change. For efficiency the VM only reifies stack information as
objects when it is needed, but the key is that a rich set of
information about the run-time is available as objects.

This approach has it's plusses and minuses, but for many it's the
sine-qua-non of what constitutes an INTEGRATED Development
Environment.
 
M

Michael W. Ryder

Rick said:
Most, but maybe not all, Smalltalk implementations combine the
language, the run-time and the development environment. In typical
Smalltalk implementation:

* The compiler is written in Smalltalk, methods are compiled to
objects (usually instances of a class called something like
CompiledMethod which contains a reference to the compiled byte codes,
and information about the bindings of references to local variables
and the like.

* The tools run in the same execution environment as the application.
The information needed by the compiler and other development tools is
kept by Smalltalk objects which model the code (Classes, Metaclasses,
Behavior, CompiledMethods). The IDE can do things like get a list of
all implementors of a particular method selector, or all the methods
which invoke that selector by querying the run-time environment. The
source code is located through these objects as well. One of the
things which newbies to Smalltalk find strange is that there are no
explicitly edited source files. In the original Smalltalk-80
implementation, source code was kept in a changes-log file and methods
had a pointer into that file so that they could find their source.
Often this is supplanted by a shared source database which provides
SVN like function. EnvyDeveloper which worked with a variety of
Smalltalk implementations including (Smalltalk/V, VisualWorks (later
merged), and IBM Smalltalk) was the most popular implementation of
this.

* Another thing which some find strange is that the run-time state is
persistent and is saved as an image. You can terminate Smalltalk,
restart it and you're right back where you were, complete with any
existing instances of objects, suspended threads (Smalltalk calls them
Processes) etc.

* The reflection capabilities in Smalltalk are more powerful than in
Ruby, this enables quite a few of the tools. Smalltalk programs can
reflect not only on the class definitions and other semi-static
properties, but can also reflect on and manipulate the run-time
execution state. As an example of the difference, in Ruby, although
one can access a representation of the current process stack frame
using Kernel#caller, this representation is textual and only really
describes which methods are on the stack. In Smalltalk the process
stack can be examined in detail, and manipulated (usually by the
debugger, which like all of the other Smalltalk development tools is
written in Smalltalk). In the Smalltalk debugger you can do things
like change the values variables, or even change the source of a
method and recompile it, then resume execution from the point of
change. For efficiency the VM only reifies stack information as
objects when it is needed, but the key is that a rich set of
information about the run-time is available as objects.

A lot of this sounds like what Business Basic has been doing for over 20
years. Along with being able to modify code and variables while running
a program you can also tell the program to go back to an earlier
statement before continuing, this makes it very easy to debug a program
and make sure that any changes you make work.
Another thing that I really like about Business Basic is that it has
screen handling for normal 80 character by 24 character displays built
in so that you don't have to work with a third-party add-in like curses.
It also has integrated flat file handling built in, again obviating
the need for add-ins like C-Tree.
 
C

Chad Perrin

Getting back to Ruby, I have to say, the more I use this language the more I
like it. I got into a bit of perl's OO some years back, which at the time, I
liked in preference to using Java. However, I really do think ruby has gotten
the whole OO stuff nailed, particularly from the perspective of a scripting
language. Despite my contributions to threads on IDEs etc, I have to say that
using ruby and emacs is for me a nice environment. I can see potential for an
even more powerful integrated emacs+ruby environment and once I get a better
appreciation of the language, may even try and see about using my emacs
knowledge/experience to contribute to the ruby mode for emacs.

That's really saying some awful things about Java -- not that I'm
all that surprised. Perl's OO is ugly as sin (and I'm a fan of Perl,
saying this). Sure, it's not as awful as PHP's and VB's OOP features,
but it's not exactly elegant by any stretch.

I must agree that, judging by my own experience, Ruby really does get
object oriented programming substantially "right".
 
J

Jeremy Tregunna

That's really saying some awful things about Java -- not that I'm
all that surprised. Perl's OO is ugly as sin (and I'm a fan of Perl,
saying this). Sure, it's not as awful as PHP's and VB's OOP features,
but it's not exactly elegant by any stretch.

I must agree that, judging by my own experience, Ruby really does get
object oriented programming substantially "right".

Without hijacking this thread and making it about prototype
languages, I really do find statements like this cute (not
necessarily funny, but cute). While Ruby's Classes (and Smalltalk's
too) are just objects, it seems weird to me to separate the two
concepts. So any statement like that makes me wonder what kind of
exposure to object-oriented languages one has--or rather, lack of
exposure to many.
 
E

Eric Promislow

We use the ruby-debug-base.rb and ruby-debug.so, and call it like any
other Ruby
library. This way people can install an upgrade and Komodo should
just work
with the new .so, assuming no compatibility breakage. I wouldn't say
there's too much
duplication -- you just have to implement a callback class to handle
the ruby-debug
events.

- Eric
 
M

Martin Krauskopf

Eric said:
We use the ruby-debug-base.rb and ruby-debug.so, and call it like any
other Ruby library. This way people can install an upgrade and Komodo
should just work with the new .so, assuming no compatibility breakage.
I wouldn't say there's too much duplication -- you just have to
implement a callback class to handle the ruby-debug events.

By duplication I meant several different extensions for ruby-debug-base
with the same aim.

I would like to implement DBGp (ruby-debug-dbgp?) extension for
ruby-debug-base in the future if nobody else do so in the meantime. That
would be easily utilized by any frontend then. Currently Markus
Barchfeld implemented ruby-debug-special_xml_based_protocol extension
for ruby-debug-base which is also pretty frontend-independent.

I think that ideal state would be to have one debugger backends central
utilized by all frontends and all peoples from frontends would work
together on those backends. E.g. in the Rubyforge's debug-commons project ;)

m.
 
C

Chad Perrin

Without hijacking this thread and making it about prototype
languages, I really do find statements like this cute (not
necessarily funny, but cute). While Ruby's Classes (and Smalltalk's
too) are just objects, it seems weird to me to separate the two
concepts. So any statement like that makes me wonder what kind of
exposure to object-oriented languages one has--or rather, lack of
exposure to many.

That sounds slightly condescending.

I haven't dealt with object oriented programming in a great many
languages. I've run up against it in C++, Object Pascal, Objective C,
PHP, Perl, Python, Ruby, and VB, at least. I may have forgotten a
couple. I happen to like Ruby's more than Obj-C's, which I tend to like
more than that of any of the rest of the languages I've mentioned (as
far as I recall -- I don't remember OOP in Object Pascal much, for
instance). I like the general structure of OOP in Python more than any
of the rest of them except Ruby, but I dislike Python in general, so it
loses out.

Does that give you a clearer idea of where my comments are arising?
 

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

Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top