[Israel.pm] Editors as Power Tools [was Re: Variable Naming]

Shlomi Fish shlomif at iglu.org.il
Tue Jun 8 00:07:41 PDT 2004


On Monday 07 June 2004 23:47, Yuval Yaari wrote:
> Shlomi, I will do some heavy snipping, let me know if I skip anything.
>

OK.

> Shlomi Fish said:
> > auto-completion is a nice-to-have feature, which is useful, but still
> > not a  must. It was introduced rather lately in editors development. And
> > not  everybody use it.
>
> True - I just found it to cut my typing time (finger-pain? :p) without
> cutting my line of thinking.
> That's why I speak of it so highly (just like I do with Perl for the same
> reason) :p

OK. As long as you don't expect people to use it or even use an editor that 
can use it.

> > Seriously now, I think I'm using a very large subset of the features of
> > joe  when I use it. (or at least had when I seriously used it). So joe
> > doesn't  have so many features that I don't use. In the working
> > environments I grew up  with, auto-completion was not present, and so I
> > did not get used to using it.  Maybe now I will.
>
> Well, I didn't have syntax highlighting when I started to write in Perl
> (because my stupid editor didn't).
>

Neither did I. When I started to write in Perl, the only editor I knew was 
pico. I couldn't get used to vi, so I actually compiled Emacs from source on 
Cortext's FreeBSD workstation and tried to work in it. Then I noticed a 
co-worker using joe, tried it and was hooked. I worked with joe for a long 
time since then. joe does not have syntax highlighting or almost anything 
that would cause it to be anything more than a minimalistic but still usable 
editor.

Since then, I dabbled with NEdit (which isn't bad), used FTE for a while 
(which is nice, but idiosyncratic), until I got used to gvim and used it ever 
since. Note that I still use joe when working in terminals (as opposed to 
using X-Windows or MS-Windows), and I set the EDITOR and VISUAL env-vars to 
it.

Believe it or not, but some people still regularly use an editor which doesn't 
even have syntax highlighting. I also consider it a nice-to-have feature and 
not a necessary must in an editor. 

> >> I meant a power tool for programmers.
> >> I can't think of another way to program, please open my eyes to your
> >> telepathic way of programming :)
> >
> > I don't have one. At least not yet. What I meant was that one's editor
> > can be  very powerful, or it can be relatively limited. A text file is a
> > text file.  You can edit it with ed, pico or repetitive bash commands if
> > you want, and  gcc or the Perl interpreter will still be able to process
> > it and run it  correctly.
>
> Right but if it doesn't help you program more effeciently, you should just
> rm -f it.
> As I wrote before, what other tools do you use when programming Perl?

I use the shell (to run the programs, chmod them, etc), perl -d (to debug 
them); for serious things I also use Subversion with its svn client (to 
version control it). When writing CPAN modules, I use MakeMaker, make test, 
Test::Harness, Test::More, etc. There's one program I wrote in Perl and other 
technologies (Quad-Pres) that is auto-confisicated.

> I only use my editor and perl (not Perl).

Good for you. 

> My editor can do grep and cut and all the things I used to do from the
> command line before I started using it.
> It can also easily go into the background if I do need the command line.
> Debugging is done from inside, also Devel::SmallProf for tiny
> optimizations and debugging (oh, I find it as a great tool for debugging,
> but that's a different issue).
>
> Both perl and my editor are my power tools, if you see the situation.
>

I understand. I don't find keeping a few terminal windows open and invoking 
commands in them, to be a nuisance. I'm used to it, and that's how I like to 
work. I think I can do everything from within gvim, but I never tried to get 
used to doing it.

> > I was using the painter's as an analogy. I am very reluctant to call
> > some  editors "powertools", as they are nice, usable and bug-free, but
> > still quite  limited. But some poeple use them.
>
> I think you should consider your editor as your power tool.
> And use an editor which is a power tool.
> Most popular editors are power tools (think of all their features, and
> think of how many of them you know... I know maybe 1/1000th of them).
>

Well, among UNIX hackers the most popular are vi and Emacs. They are divided 
about 50%-50% and the percentage that use the rest is marginal. Note that I 
don't know if it is possible to call the non-vim vi-clones powertools. vi is 
quite feature-full and its macros (which are made of a sequence of individual 
keystrokes) are Turing Complete, but vim is much more powerful.

Nevertheless, while I'm using an editor that is a power-tool, (albeit not sure 
I can call my use of it a "power-use") I intend my code to be maintainable 
even by much less capable editors. Like I said a textfile is simply a 
textfile - a sequence of ASCII characters. The programming language just 
needs it to make sense. And fellow human programmers just want it to be 
readable even when using "less" or "more".

> > Indeed. Does your work start at 09:00.
>
> Basically.
> Working in a small company means you won't get fired for getting there at
> 11:00 one day if you had to go to the doctor or whatever.
> Such situations occur (when I moved to my own place for example) and your
> company shouldn't treat you like a robot :)
> Anyone considering me as a possible employee, cover your eyes:
> I used to exploit this and do some things before work like take mail (the
> physical kind), drink coffee, etc.
> I was nicely asked to come earlier and so I did.
> That's why I said "basically". 9:00 is when I want to be there.
>

OK. Are you sure the situation is any different in a large company? (i.e: that 
your supervisor won't give you some slack). 

> > Right. BTW, why are you using CamelCase for variable names? Most people
> > use words_separated_by_underscore. (and I personally find it much more
> > desirable).
>
> Why are you using words separated by underscore?
> Ok, not being a smart-ass: I don't care as long as I or anyone stick to
> their style for an entire project.
> Sometimes I use underscore separated names for variables and CamelCase for
> subroutines.
> Also sometimes it's camelCase.

Actually, that's javaCase. ;-)

> I do stick with it for an entire project though, so it wouldn't confuse
> anyone.
> Let me know about your style, I am constantly after a better one.
>

Well, I use $words_separated_by_underscore for variables. I don't capitalize 
them often, but sometimes do if they are important, or it otherwise seems 
sexy to capitalize them. Usually, they are just one word in this case, and 
they usually aren't scalars. (but like I said, I don't capitalize much)

Subroutines are also in lowercase separated by underscores. I don't write 
"write_HTML_file", but "write_html_file". 

Package names are in CamelCase. I use 4-whitespace tabs (without using any 
actual \t characters - these are Evil).

I think I'll stop now. If you want you can find examples of my style (some of 
them quite old and my style has changed somewhat since), here:

http://shlomif.il.eu.org/open-source/

And here:

http://search.cpan.org/~shlomif/

> > Notepad does not have auto-completion, or even auto-indentation, last
> > time I  checked. I installed gvim on Windows and consistently uses it
> > for everything  serious. It's funny that MSIE uses notepad to view the
> > source of the HTML.
>
> Funny? It's living hell!
> Can't they write something better or even steal some source code?
> It would be legitimate for this specific case...
>

LOL.

> I used Windows for some project where I wanted to use Win32::IE::Mechanize.
> I had a 6MB (read: small) log file.
> I tried notepad - crashed my computer.
> I tried wordpad - crashed my computer.
> I downloaded my editor (which you know what it is but I'll shut up) and it
> was really fast.
>

Hmmm... installing gvim on Windows is one of the first thing I do when I have 
to seriously work there. I even got used to gvim because it was installed on 
a network drive on the Windows computers of my Technion department. Funnily 
enough, gvim was not installed on the Linux computers back then. The only 
things there were Emacs, and some other crappy editors (CoolEdit, etc.). Even 
typing "vim" on the command line amounted to nothing (albeit "vi" was 
probably "vim").

> > Maybe it's possible to run the perl debugger from within gvim. I never
> > really  tried. I use either perl -d (on the command line) or sometimes
> > ddd (but  usually for C, and even there I mostly use plain gdb). ddd is
> > a very  impressive debugging front-end (for gdb, perl -d, and other
> > debuggers). But  it's quite heavyweight and written in Motif.
>
> I use ddd.
> Sometimes it shows a bad "dump" of weird data-structures.
> Maybe I used an old version.
>
> I was looking for a better debugging solution to be integrated into my
> editor.
> The reason is that I'm used to the keys/colors and ddd is different.

Yes, ddd seems to have a mind of his own regarding key-bindings. I keep 
pressing the wrong keys because I'm used to the keystrokes of MS DevStudio 
(which are different than those of Borland's IDEs, to which I was used 
beforehand)

> What I have comes with my editor and is nice - but it's just perl -d with
> highlighting, basically.
> What I'm missing is selecting a data-structure see it's "dump" on the side
> (or anywhere without losing my current view of the code).
>
> I think it's worth to explore how you can force perl -d to work from
> within your editor.
>

By "dump" do you mean a graphical display of it? That would be nice. 

> > One of the most irritating things about Visual C++ is that its debugger
> > does  not have a command prompt. gdb is so much faster and easier (and
> > more easily  automated and customized). GUIs can seriously suck in
> > comparison to CLIs some  times.
>
> I am a bit ashamed of it, and I should change this; I do not know C/C++.
> Compared to Perl, it's such a mess!
> Everything takes so long to write.

You are right a C code takes longer to write than the equivalent Perl code. 
However, people don't usually use C for things they can use Perl for. 

> Maybe it's because I never had to write something robust and/or serious
> GUI applications that I never learned these 2 languages.

Well, actually Perl code can be very robust. At least, unless we are talking 
about two different meanings of the word "robust". Also, I think Perl, Python 
and friends are much more suitable for writing GUI applications than C or 
C++. Writing GUI in ANSI C is painful. In C++ it's somewhat better. (if you 
have a decent GUI toolkit and not something crappy like MFC, which isn't much 
better than ANSI C). But then, naturally, you are frustrated that g++ is so 
damn slow. In Perl, it's just write and run.

Sometimes it makes sense to write the GUI in Perl/Python/etc. and the 
internals in a more low-level programming language. Sometimes, the amount of 
code in the internals overwhelms the GUI code, so it's a better idea to keep 
the GUI in C, as well.

Things one should use C for:

1. Stuff that works with hardware. (Embedded systems, device drivers, 
operating systems kernels, etc.)

2. Some programs that ought to be very fast and/or consume very little memory. 
These include some real-time programs (i.e programs that should respond to 
certain events within a limited timeframe), or just programs and frameworks 
that need to be very fast.

3. Generally, programs that involve a lot of data crunching, excessive amount 
of loops, conditionals, expressions, assignments and other program logic will 
perform much better in C.

I don't consider Perl and similar languages as such that are not "serious". 
You can perfectly write code that is either very reliable, very large-scale, 
very robust, very maintainable, or all of them in them. There is still a 
place for languages such as C or C++ (or Java - ?) and I expect that they 
will still remain important into the forseeable future. However, one should 
write what he can in Perl/Python/etc. because writing in C is painful and 
error-prone.

> Good sources for the C/C++ basics are welcome in private e-mail :)
>

I'll give you my thoughts here, if you don't mind. (I don't think it's 
off-topic here. As C is useful even for Perl programmers). While I learned C 
and what was then C++ from the Turbo C++ 3.0 manual (and some help from 
fellow programmers), you should probably get a better source. "The C 
Programming Language" by Kerninghan and Ritchie is highly praised, but I did 
not read it. I bought the book "A Book on C" which the Technion professor 
Yehi'el Kimchi (who teaches two introducory courses about C, C++ and UNIX to 
Technion stduents) recommends for my sisters. I don't know what they think of 
it. 

I think that an experienced Perl programmer can possibly learn from a lesser 
quality book.

It would be useful to learn ANSI C before learning C++. C++, especiallly in 
its recent STLish incarnations, can hide a lot of low-level nitty-gritty 
logic of ANSI C by tons of templates, references, inheritance, operator 
overloading and other abstractions. By learning ANSI C, one gets a lot of 
understanding on how a computer performs its operations and how to write 
efficient code.

In any case, one should be thankful if he had the opportunity to learn Perl 
before C and C++. Israeli university students are keep getting confused by 
the low-level gotchas of C.

As for C++, I think it supports Object-Oriented Programming roughly as much as 
COBOL supports Functional Programming. I'm not saying it isn't useful, but 
OOP is so much nicer and easier in higher-level languages.

> > I happen to like command line debuggers.
>
> I get along well with perl -d.
> Did I mention my Devel::SmallProf way for quick-n-dirty debugging?
> You just know what lines ran and how many times (you can also `sort` on it
> which is great) which usually explains a lot of things without going
> through the debugging process.
>

Interesting. I'll keep that in mind.

> > Hmmm... $laazazel_lekh_hapesh_mi_yenaanea_otkha ... ;-)
>
> Have you been watching the comedy store lately? :)
> Great show! Still funny after all those years.
>

They did not invent the term "lekh hapesh mi yenaanea otkha". The Comedy Store 
had some nice exits, but most of their material was relatively unamusing.

> >> I hope the interview went well, good luck.
> >
> > It went pretty well. It involved some discussion about Perl there, but
> > I'd  like to delay discussing it in public until I find out if I got the
> > job or  not. (they have other candidates)
>
> Ok - when you're rich, don't forget who told you "good luck".
>

Heh heh. Right.

Regards,

	Shlomi Fish

-- 

---------------------------------------------------------------------
Shlomi Fish      shlomif at iglu.org.il
Homepage:        http://shlomif.il.eu.org/

Quidquid latine dictum sit, altum viditur.
        [Whatever is said in Latin sounds profound.]



More information about the Perl mailing list