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

Re: [extremeperl] Re: Better Development Tools for Perl

Expand Messages
  • Rob Nagler
    ... I don t see how this is possible. Perl has no interfaces like Java. We have a convention for interfaces, but before you have the foo , you can t know
    Message 1 of 107 , Jun 19, 2005
      J Matisse Enzer writes:
      > That's part of the problem with current tools. I want to see tools that
      > *can* figure out if $o->foo() is "my" foo, in most cases.

      I don't see how this is possible. Perl has no "interfaces" like
      Java. We have a convention for interfaces, but before you have the
      "foo", you can't know what $o is, if it was passed in, without some
      documentation. We could use our POD to find the $o, but then you know
      what $o is, and the method is short so you can see it. :-)

      > You guys have a particular approach that minimizes the problem, which
      > is good. Maybe the whole world will adopt your approach, or maybe not
      > :-)

      I don't want the whole world to adopt our approach. It would be too
      boring. Rather, I'd like to see more people figure out that the
      problem isn't tools but policy agreement to make the tools easy to
      write. Our additions to cperl are about 1,000 lines of code including
      comments. This is trivial in comparison to what we do for our

      > I'm certainly in favor of unit tests, and consistent coding style, in
      > no small part because they make many things easier, just as you are
      > experiencing.

      Yes, that's my experience. Something they don't teach you in school
      or in most jobs.

      > I think you are actually agreeing that it should be easy to access all
      > of the features we are discussing (not just running a profiler, or a
      > refactoring action, but all of them).If I'm correcting grasping your
      > position it is that it is *already* easy and that you are not motivated
      > to make these things any easier. I think *that* is where we might stand
      > differently at present.

      Yes. Emacs makes it trivial to add new features. Here's the code to
      fire off the right form of perl based on the file name:

      (defun b-compile-command-from-file-name (filename)
      "Returns a string compile-command. Appends 'env BCONF=...' for test files."
      (labels ((base () (file-name-nondirectory filename))
      (env () (let ((project (b-perl-which-project filename)))
      (concat "env BCONF=~/bconf/"
      (if (null project) "default" (cadr project))
      ".bconf "))))
      ((string-match "\.btest$" filename) (concat (env) "b-test acceptance "
      ((string-match "\.t$" filename) (concat (env) "perl -w " (base)))
      (t (concat "perl -w " (base))))))

      This note is far longer. :-)

      > Or perhaps were we depart is in the list of things that we feel should
      > be easier, and/or in our feelings about Perl's adoption by new
      > programmers and new projects - you might be happy with its adoption
      > rate and/or feel that the obstacles to Perl's adoption lie elsewhere.

      It's a YAGNI thing. I add what I need. You add what you need. We
      don't need the same thing, because our development
      approach/team/environment is quite different.

      > I agree. People gradually become senior, and expert, and experienced,
      > and no tool have replace experience. My position is that better tools
      > are, well, better, and even experts benefit from them, in fact they may
      > benefit more than novices or intermediate level folks, at least in some
      > situations.

      Is Word a better tool than LaTeX? Yes and no. I use Word for
      letters, proposals, and such. I would never use it for a manual or a
      book. :-) I wrote Extreme Perl in DocBook/XML in Emacs. I doubt I'd
      do that again. I prefer LaTeX, because it is extensible. It allows
      me to refactor my content. Here's a good example where DocBook/XML
      falls on its face:

      <b_include_file file="eg/its-a-smop/example.xml"/>

      I have another xml file I'd like to use as source data for my book. I
      want it escaped. I want it in a separate file so I can use it as test
      input. It's the FITness thing in reverse. I want the tests to be
      separate from the document, because there are syntax collisions, and
      I'd rather not escape every & and > in my perl source. :-)

      > Rembrandt did 700 years ago with burnt wood and paper.

      Indeed. Or what Paul Graham did with Lisp to produce Yahoo
      Stores. $-)

      > Are you certain you have no shared note-taking? I would argue that
      > http://www.bivio.biz/f/bOP/html/index.html is an example - the NAME
      > entries (and the full perldoc) from each module is in fact a note (it's
      > not executable code), it is meta-information that your whole team
      > contributes to.

      Agreed, but this isn't note taking, it's commenting working code. We
      have been having an internal argument about whether this stuff is
      really useful or not. Some people like our method sig documentation,
      because Perl is so terse in this regard. We filled in the DESCRIPTION
      and NAME sections in bOP, but rarely do in our apps.

      > That is great - that is the single most important thing in a team, I
      > think the "plays well with others" factor. It is not the only factor,
      > but I think if you have that, you can acquire any others.

      Exactly. That's why IDE discussions in general are besides the
      point. It's an easy topic to grasp, when the other parts of the
      problem are so looming.

      > I think that's a matter of personal preference. I and many other people
      > do like having a newly added file show up in a list of files instantly.

      Agreed. It's YAGNI to me, and a feature you need today.

      > So you would say that the people who wrote Komodo and EPIC, for
      > experts, are not experts?

      Hmmm... Muddy waters. I have no idea until I see the code. The folks
      at Netscape were definitely NOT experts, or they wouldn't have messed
      up so badly. Firefox is a rewrite of a rewrite of a rewrite. It's
      still got some rather silly bugs, but it is getting better. IE, OTOH,
      was superior to all but Firefox. Microsoft was able to evolve
      faster, because they put experts on the problem.

      > or do not enjoy using those tools?

      I can't say if they enjoy using these tools.

      > What about Eclipse and IntelliJ?

      IntelliJ is an oxymoron. :-) We don't need IntelliJ or Eclipse. They
      are needed, because most people don't know how to write robust code
      quickly. They don't value refactoring, unit testing, and acceptance

      Java is worse than useless; it's dangerous. I disagree with Richard
      Gabriel. You don't want to bring hundreds of thousands of bad
      programmers over to half-way to Lisp. You want to leave them on the
      Dark Side (C#, C++, whatever you want to call it), and instead, you
      want the best programmers to focus on solving real problems in OSS and
      earning good salaries.

      Take the average large software company. Get all the programmers to
      vote on who the best programmers are. Fire the bottom 90%. Throw the
      top 10% in the same building. Make them agree on what's right. Fire
      the programmers that don't willingly participate in the new approach
      (even if they were voted the top programmer). The company's
      productivity and software quality will undoubtedly improve.

      > What is your opinion of Martin Fowler's article "Crossing Refactoring's
      > Rubicon" http://www.martinfowler.com/articles/refactoringRubicon.html ?

      I let Martin speak for himself:

      This awesome tool makes refactoring much quicker and more
      pleasurable. The trouble is that it is a Smalltalk tool, and not
      many people are using Smalltalk. Indeed I've hardly ever used the
      Refactoring Browser because most of the work I've done in the last
      few years has been in Java.

      What does that say to you? Does Martin prefer SmallTalk? Why he
      coding in Java

      Why is that the original wiki, FIT, etc. were written in Perl?
      Because Ward could get the job done faster in Perl than any other
      language (and he knows quite a few). Why did it get rewritten in

      Why was nUnit written first in SmallTalk? Why was it rewritten in
      Java? Why do all the Perl test infrastructures copy these verbose
      testing structures?

      > Depending on what you mean by "proven" I think I agree with you. What
      > would you consider as "proof" ?

      When the people who are writing Java code in whatever tools can
      outcode the people who are writing Perl on a man-hour and quality

      > http://www.perl.com/pub/a/2005/06/09/ppi.html

      The problem of writing a document parser is done quite well in Emacs.
      I am not in the editor business. I'd rather leverage the 30 years of
      work that is known as Emacs than trust someone who thinks he can
      create a DOM for Perl. BTW, that's why I got out of the operating
      system and infrastructure business. It's a done problem to my mind.
      All problems now are application specific.

      > carpentry, a "speed square" is "better" for many things where we used
      > to use a "framing square", because in these cases the speed square is
      > easier to use - it might even be a bit less precise ion those cases,
      > but it's still a "better" tool.

      Carpenters don't build their own tools, because it is difficult to do
      in small quantities. Building integrated software tools is easy. The
      comparison is therefore irrelevant.

      > Of course you also need senior, more experience people. And why
      > automatically say that "intermediate" == "inexperienced"?

      I didn't. It's a continuum. However, you need to know what you don't
      know. If you have a senior person, s/he usually does. That person
      will point out things about what is unknown about the project while
      the less experienced folks will be arguing over which IDE to use. ;-)

      > Few people are experts, and all experts started as non-experts. I am
      > well aware of many of the values of experience and skill, and I hope
      > that 20 years from now I have learned even more, I certainly intend to
      > keep trying.

      We all learn and get better, if that is our goal. The key thing that
      I've learned over the years is how much I want to increase complexity
      when indeed I should be decreasing complexity. That's what it means
      to be an expert to me. I am still a long ways from reaching my goal.
      Fortunately, I've got several people in my office who like to nudge 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.