Loading ...
Sorry, an error occurred while loading the content.

Re: [extremeperl] Better Development Tools for Perl

Expand Messages
  • Rob Kinyon
    ... First off, I m a Vi-er, not an Emacs-er. Calling one the other is fighting words! :-) What I m trying to get at is that I have never come across a project
    Message 1 of 107 , Jun 8, 2005
      On 6/8/05, J Matisse Enzer <matisse@...> wrote:
      > On Jun 8, 2005, at 10:33 AM, Rob Kinyon wrote:
      > > ... I rise in support for XP, which I use in my projects. My
      > > concern is that IDE's are actually anti-XP, not pro-XP. XP, imho,
      > > requires a holistic view of the project. The layers of code that an
      > > IDE promote are antithetical to this holistic view. You simply cannot
      > > get the big picture without some sort of UML/RUP type of
      > > meta-development.
      > That is a fascinating proposition - that IDE's are "anti-XP", and that
      > IDE's are antithetical to having a holistic view of a project. I'd like
      > to understand this point of view better.
      > Does not using Emacs that disqualify me from understanding your point
      > of view? Is Emacs is the only way to have a holistic view of a large
      > Perl project?

      First off, I'm a Vi-er, not an Emacs-er. Calling one the other is
      fighting words! :-)

      What I'm trying to get at is that I have never come across a project
      that needed to be so complex that it would require an IDE to
      understand it. It is a mantra of mine that, with the proper
      infrastructure, any project can be reduced to 7 +/- 2 items at a given
      abstraction level. You should be able to hold the entire subsystem
      you're working on in your head.

      > I find that when I am working in Eclipse I have a much *better*
      > overview of my project than when I am working at the command line.
      > When I'm using the IDE I feel *more connected* to the code:
      > - Syntax (compile-time) errors show up with red bullet right away.
      > Let's say I have a variable declared with on line 23, e.g. "our
      > $DEBUG_LEVEL;"
      > It's used on lines 50,51,200, and 300.
      > So if I delete or rename the variable on line 23, as soon as I save,
      > I see
      > red bullets next to lines 50 & 51 (which happen to be visible in the
      > editor at
      > that moment) and I also see red marks in the editor scroll-bar
      > indicating the
      > problems on lines 200 and 300. Click on the marks in the scroll-bar
      > and I
      > jump there.

      I find it very hard to believe that Eclipse gets this right when doing
      dynamic redefinitions of what a given piece of code means. And, this
      example actually highlights what I'm getting at - you're defining a
      variable far removed from where it's used. Up to 277 lines apart, by
      your reckoning. I'm not surprised you NEED an IDE to keep track of
      that for you. The tools are an enabler for poor coding practices.

      Plus, I have syntax coloring. If "my $foo" is in the wrong color, I
      know I did something wrong somewhere. Since I (try to) only work in a
      50-line scope, the mistake has to be on my screen, and the coloring
      will make it apparent very quickly.

      > - TODO and FIXME comments show up as "tasks" in the task list.
      > Click-to navigate.

      Those should be failing tests marked as TODO or user stories that
      haven't been scheduled yet. The code should be in as perfect a state
      as it can be at all times. The IDE is an enabler.

      > - I can see a list of all the files in the project - double-click to
      > open, or
      > use keyboard commands to open, with type-ahead and pattern matching.

      How many files are you using in a subsystem?? I think I once hit 80,
      but 70 of them were end-level specializations of a given base class
      (reports, each of which was a class). My average is about 4-8 source
      files, twice that in test files, and the various EU::MM trappings.
      When I build an application, I have one more subsystem that pulls
      together all the relevant subsystems and that's the application.

      > - Always see a list of all the subroutines and use'd modules in the
      > file
      > that has focus.

      Why do you need to know this? Why aren't you focusing on the 50-line
      scope you're working in?

      > - Jump to a subroutine declaration by clicking on it in the list or
      > from where it is used in the source code (although in
      > Eclipse/EPIC that last feature only works for subroutines
      > defined in the same file, for java it'll open
      > the appropriate source file in needed.)

      Again, why do you need to do this? What's wrong with "/sub foo" (in
      Vi)? What happens with subroutines that are dynamically defined? What
      about subroutines that are dynamically REdefined (a la
      Class::LazyLoad)? What about overloaded operators?

      > - One-click or keyboard command to run my unit tests, without
      > switching windows.

      In Vi, mine is ",t" ... I compile-check with ",c" (which I trust more
      than any IDE because perl is doing my compile checking). I toggle
      verbosity with ",sv", tainting with ",st", and between single-file and
      complete suite with ",sf".

      > And about the "layers of code that and IDE" promotes - I don't
      > understand - have I created more layers of code in my project when I
      > use an IDE than without? And do you mean more layers of abstraction?

      Actually, the problem is that you have LESS layers of abstraction. You
      have more code piled atop itself, but you haven't taken the design
      time to build your system from the ground up. You haven't redefined
      the language to meet your business need.

      All the IDE code I have ever seen has reminded me of spaghetti code
      written in BASIC by highschoolers. I'm not saying that your code looks
      like this ... I'm speaking from my experience. I once had to edit
      IDE-supported code where I didn't have access to the IDE. It wasn't

      > > I agree that we code differently. For me, the dynamic aspects of Perl
      > > are the reason I don't code in Java or MSVC. And, if an IDE cannot
      > > keep up with the reason I'm using that language, then I cannot use
      > > that IDE - no matter how much I may want to.
      > >
      > So maybe you are arguing in favor of better IDE's instead of against
      > them altogether? I certainly agree that there is *much* room for
      > improvement.

      You give me the Lisp machine for Perl and we can start talking. I can
      see building on that and adding all the GUI goodness you love.
      Otherwise, everything else is a port of a tool built for static
      languages, and thus useless.

      Note: I'm not saying that Eclipse and similar tools aren't good. I'm
      not saying they aren't beneficial. I'm saying that I will not be able
      to ever use one, because of the programming techniques I employ. I am
      one of those "wizards" that Perrin referred to disparagingly; I'm one
      of those people whose code, when written from scratch, requires
      another wizard to understand, let alone modify. (Maintenance is
      another discussion altogether, as is contract work.)

      I also generate working applications in less time than the average
      bear and which will run faster than the average application. The
      choice is yours as to whether you want to hire me.

    • Siegfried Heintze
      Since there was a helpful discussion some time ago on USB keyboards and mice for pair programming that was not specific to perl, I wanted to solicit the group
      Message 107 of 107 , Feb 13, 2006
        Since there was a helpful discussion some time ago on USB keyboards and mice
        for pair programming that was not specific to perl, I wanted to solicit the
        group for information on network software (also not specific to perl).

        I just set up openVPN on my openwrt/WRT54G router for pair programming with
        a headset and skype.

        (1) Can any point me to the documentation on sharing desktops on windows? I
        need to create accounts on Win2003 XP Server. When I created an account
        belonging only to the user group, my partner could not log in. He was
        receiving some error message about not being permitted to log in
        interactively. However, when I added the administrator group (reluctantly)
        to his account, he could log in. Is there a tutorial somewhere on the web
        for creating user accounts in windows for use with remote desktop logins on

        (2) How do I share my remote desktop setting with a programming pair

        (3) What about sharing sessions when I'm booted with linux? I think there is
        a vnc program out there, but I don't know how to use it. I'll need to learn
        how to create accounts and share linux desktops with remote VPN users. Is
        there a tutorial on this?

        (4) Are video cams very helpful for pair programming?

        It seems that this kind of knowledge would be very common for pair



        [Non-text portions of this message have been removed]
      Your message has been successfully submitted and would be delivered to recipients shortly.