Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > 2 new comment-like characters in Python to aid development?

Reply
Thread Tools

2 new comment-like characters in Python to aid development?

 
 
dbhbarton@googlemail.com
Guest
Posts: n/a
 
      03-09-2007
Had a thought that's grown on me. No idea if it's original or not- too
inexperienced in programming- but I guess there's no harm floating it
out there.

Python wins big on readability, and there's no doubt that context-
dependent text formatting in IDEs (keywords, strings, comments etc) is
a massive help too, therefore benefitting development and maintenance.
This idea is in a similar vein, especially for when scripts grow
large.

What if 2 new 'special' comment-like characters were added to Python?:


1. The WIP (Work In Progress) comment:

A '?' placed in the preceding whitespace of a line as a means of
quickly highlighting a line or block of code for special attention.
The interpreter simply ignores these characters, and executes the code
as if each WIP character wasn't there. The value-added comes from how
IDEs can exploit this to color the line or code block (in a
customisable fashion as with other context-dependent IDE formatting).

Thus...
?a=6 #This line gets highlighted.
?class MyClass: #This entire class gets highlighted.
def __init__(self):
self.val=3
?def MyFn(): #This entire function gets highlighted.
return 'x'
?for each in range(9): #This entire block gets highlighted.
print each

Simply delete the ? and the associated highlighting vanishes
immediately.
Indeed if the interpreter can tolerate one '?' then perhaps it can
also allow '??' and '???', letting the IDE color each differently for
some additional flexibility.

Applications...
Lets you highlight / un-highlight entire blocks with a single
keystroke: to record which part of a long script you're working on, or
which part needs development or optimization. IDEs could add
additional functionality if they chose: options to remove all wip
comments, or step through them, or even to automatically add WIP
comments (to highlight syntax errors, potentially infinite loops, or
rate-limiting code blocks, perhaps?)


2. The HALT comment:

A '!' at the start of a line, indicating the end of the script proper.
The interpreter would register this one, and ignore everything after
it, a bit like a sys.exit() call but also stopping it from picking
syntax errors after the HALT. IDEs could then 'grey out' (or 'yellow
out' or whatever) all following characters, including later HALT
comments.

Applications...
Lets you mask / unmask the tailing parts of a py script with a single
keystroke: potentially quite useful during the writing / testing phase
of coding when you might not want to run the whole thing, or as
another means of adding extensive comments to the end of a file. Could
also be rather handy in 'tutorial scripts' and the like...

E.g...
# Welcome to my Python Tutorial Script
my_string="Hello World"
print my_string
! # Everything after this '!' is ignored and greyed out for now, but
when you're ready to move on to the next part of the tutorial script
just delete the '!' and run it again.
my_list=list(my_string)
print my_list
! # <-- delete '!' when ready, etc etc
my_list_reversed=my_list[::-1]
print my_list_reversed


As far as I can see, neither of these would break backwards
compatibility and, like the @ decorator, if you don't like it, you
wouldn't have to use it. I don't know enough about the guts of Python
to say much about ease of implementation, but it doesn't seem like it
would be too hard.

Personally I'd use these a lot, but I'm a rank amateur so maybe I just
don't develop code properly.
That's it. Useful? Pointless? Dangerous? Stupid?


Dave.

 
Reply With Quote
 
 
 
 
Gabriel Genellina
Guest
Posts: n/a
 
      03-09-2007
En Fri, 09 Mar 2007 06:14:46 -0300, <(E-Mail Removed)> escribió:

> A '?' placed in the preceding whitespace of a line as a means of
> quickly highlighting a line or block of code for special attention.
> The interpreter simply ignores these characters, and executes the code
> as if each WIP character wasn't there. The value-added comes from how
> IDEs can exploit this to color the line or code block (in a
> customisable fashion as with other context-dependent IDE formatting).


This could be implemented without new syntax: just make your editor
recognize some special comments, and apply the highlighting to the
following block. By example,

# XXX Remove this when FuruFaifa is fixed to always provide
# XXX the names in the same order
names.sort()
names.reverse()

if names==oldnames:
...

would highlight the first 4 lines (let's say, up to the next blank line or
dedent).

> 2. The HALT comment:
>
> A '!' at the start of a line, indicating the end of the script proper.
> The interpreter would register this one, and ignore everything after
> it, a bit like a sys.exit() call but also stopping it from picking
> syntax errors after the HALT. IDEs could then 'grey out' (or 'yellow
> out' or whatever) all following characters, including later HALT
> comments.


You accidentally type a ! somewhere, and your module stops working - not
so good and worse, hard to find.

I sometimes use '''this string marks''' to ignore whole blocks of code. It
works fine unless the block already contains the same kind of
triple-quoted string...

> As far as I can see, neither of these would break backwards
> compatibility and, like the @ decorator, if you don't like it, you
> wouldn't have to use it. I don't know enough about the guts of Python
> to say much about ease of implementation, but it doesn't seem like it
> would be too hard.


The main problem with new syntax is breaking compatibility with older
versions, and I doubt it's worth the pain just for highlighting or playing
interactively, so you don't have a great chance of them being
implemented...

--
Gabriel Genellina

 
Reply With Quote
 
 
 
 
Nick Craig-Wood
Guest
Posts: n/a
 
      03-09-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) <(E-Mail Removed)> wrote:
> What if 2 new 'special' comment-like characters were added to Python?:
>
>
> 1. The WIP (Work In Progress) comment:


I use # FIXME for this purpose or /* FIXME */ in C etc.

I have an emacs macro which shows it up in bright red / yellow text so
it is easy to see and the company has a system which makes a web page
with a list of all the FIXMEs on.

FIXME is easy to grep for, language neutral and a lot of people use
something similar (eg XXX or TODO).

> 2. The HALT comment:


You can so this with triple quotes. ''' and ''' (if you normally use
""" """ for docstrings)

Python just ignores strings that lie around.

--
Nick Craig-Wood <(E-Mail Removed)> -- http://www.craig-wood.com/nick
 
Reply With Quote
 
dbhbarton@googlemail.com
Guest
Posts: n/a
 
      03-09-2007
Thanks for the thoughts.

> This could be implemented without new syntax: just make your editor
> recognize some special comments, and apply the highlighting to the
> following block. By example,
>
> # XXX Remove this when FuruFaifa is fixed to always provide
> # XXX the names in the same order
> names.sort()
> names.reverse()


Yes I recognise that we can use existing comments for this purpose,
and if I was suitably gifted I guess I could try to make the IDE
recognise these 'special comments', and maybe even work out what block
they're meant to apply to. Of course I'll still argue that the WIP
character would be a more elegant, speedy and versatile alternative.


> You accidentally type a ! somewhere, and your module stops working - not
> so good and worse, hard to find.


By my reckoning it would be very very easy to find. Even if the IDE
wasn't greying out everything after it. And how often do you
accidentally mistype a ! at the beginning of a line?


> I sometimes use '''this string marks''' to ignore whole blocks of code. It
> works fine unless the block already contains the same kind of
> triple-quoted string...


Indeed. Moreover those quotes have to be in pairs, so it's not exactly
a quick and dandy way of doing what I'd like.


> The main problem with new syntax is breaking compatibility with older
> versions...


Agreed. But both characters are currently disallowed in the positions
concerned, and in the proposal they're optional extras. This can't
stop old scripts from working, it can only stop new scripts from
working on old installations- just like any new feature.

>, and I doubt it's worth the pain just for highlighting or playing
> interactively


Ah well there's the issue!

>, so you don't have a great chance of them being
> implemented...


Obviously I like the idea, but I never hold out much hope that people
will agree with me!

 
Reply With Quote
 
Bruno Desthuilliers
Guest
Posts: n/a
 
      03-09-2007
Nick Craig-Wood a écrit :
> (E-Mail Removed) <(E-Mail Removed)> wrote:
>> What if 2 new 'special' comment-like characters were added to Python?:
>>
>>
>> 1. The WIP (Work In Progress) comment:

>
> I use # FIXME for this purpose or /* FIXME */ in C etc.
>
> I have an emacs macro which shows it up in bright red / yellow text so
> it is easy to see


<ot>
Care to share this macro ?
</ot>
 
Reply With Quote
 
Bjoern Schliessmann
Guest
Posts: n/a
 
      03-09-2007
(E-Mail Removed) wrote:

> Of course I'll still argue that the WIP character would be a more
> elegant, speedy and versatile alternative.


I don't think so. Those characters have no syntactical meaning and
would, IMHO, make the language "dirty".

Regards,


Björn

--
BOFH excuse #73:

Daemons did it

 
Reply With Quote
 
=?ISO-8859-1?Q?BJ=F6rn_Lindqvist?=
Guest
Posts: n/a
 
      03-09-2007
On 9 Mar 2007 02:31:14 -0800, (E-Mail Removed)
<(E-Mail Removed)> wrote:
> Thanks for the thoughts.
>
> > This could be implemented without new syntax: just make your editor
> > recognize some special comments, and apply the highlighting to the
> > following block. By example,
> >
> > # XXX Remove this when FuruFaifa is fixed to always provide
> > # XXX the names in the same order
> > names.sort()
> > names.reverse()

>
> Yes I recognise that we can use existing comments for this purpose,
> and if I was suitably gifted I guess I could try to make the IDE
> recognise these 'special comments', and maybe even work out what block
> they're meant to apply to. Of course I'll still argue that the WIP
> character would be a more elegant, speedy and versatile alternative.


But you are overloading the ? character for a purpose which it totally
was not meant for. What the character means really depends on what
person you are asking. To me, it means that what precedes it is
something someone or something does not know and wants to know the
answer to. To me, it really does not mean that what follows it is work
in progress.

Even if I could intuitively tell that a question mark represents a
work in progress, that information is not very useful. Similarly to
the "under construction" animated gifs that were popular on the web in
the mid 90-ties, the symbol does not convey any useful information.
WHY is it a work in progress? Is there something wrong with it?

?def foobar():
do stuff

The question mark does not leave me any the wiser. Now if you replace
that question mark with a comment:

# foobar() is buggy because it throws weird exceptions when x = 42.
def foobar():
do stuff

That gives me some useful information.

--
mvh Björn
 
Reply With Quote
 
dbhbarton@googlemail.com
Guest
Posts: n/a
 
      03-09-2007
>Those characters have no syntactical meaning...

?
Neither does # until you give it syntactical meaning. I must be
missing what you mean.

> would, IMHO, make the language "dirty".


Well I'm not a big fan of decorators so I know how you must feel. But
# FIXME + a hack doesn't seem clean to me. And commenting off the
bottom half of a long script with triple quotes is ugly and a pain and
you can't indicate multiple alternate halt points as in the 'tutorial
script' example I gave.

 
Reply With Quote
 
Diez B. Roggisch
Guest
Posts: n/a
 
      03-09-2007
>
> Well I'm not a big fan of decorators so I know how you must feel. But
> # FIXME + a hack doesn't seem clean to me. And commenting off the
> bottom half of a long script with triple quotes is ugly and a pain and
> you can't indicate multiple alternate halt points as in the 'tutorial
> script' example I gave.


It's not a hack. Without an IDE, there won't be support for that anyway -
after all, you're about to highlight blocks and the like, how is that
supposed to work?

And besides that - you might not _like_ decorators, but they do have a
semantic. Just inserting "random" characters into the source code that one
has to overread doesn't make any sense, it just clutters the code.

With an proper IDE, you could make that tagging of yours bound to a simple
keystroke, and the IDE could store the tagging information separately. E.g.
eric3 offers some bookmark features, I presume something like your proposal
would be possible, too.


Diez



 
Reply With Quote
 
dbhbarton@googlemail.com
Guest
Posts: n/a
 
      03-09-2007
On Mar 9, 10:59 am, "BJörn Lindqvist" <(E-Mail Removed)> wrote:
> On 9 Mar 2007 02:31:14 -0800, (E-Mail Removed)
>
>
>
>
>
> <(E-Mail Removed)> wrote:
> > Thanks for the thoughts.

>
> > > This could be implemented without new syntax: just make your editor
> > > recognize some special comments, and apply the highlighting to the
> > > following block. By example,

>
> > > # XXX Remove this when FuruFaifa is fixed to always provide
> > > # XXX the names in the same order
> > > names.sort()
> > > names.reverse()

>
> > Yes I recognise that we can use existing comments for this purpose,
> > and if I was suitably gifted I guess I could try to make the IDE
> > recognise these 'special comments', and maybe even work out what block
> > they're meant to apply to. Of course I'll still argue that the WIP
> > character would be a more elegant, speedy and versatile alternative.

>
> But you are overloading the ? character for a purpose which it totally
> was not meant for. What the character means really depends on what
> person you are asking. To me, it means that what precedes it is
> something someone or something does not know and wants to know the
> answer to. To me, it really does not mean that what follows it is work
> in progress.
>
> Even if I could intuitively tell that a question mark represents a
> work in progress, that information is not very useful. Similarly to
> the "under construction" animated gifs that were popular on the web in
> the mid 90-ties, the symbol does not convey any useful information.
> WHY is it a work in progress? Is there something wrong with it?
>
> ?def foobar():
> do stuff
>
> The question mark does not leave me any the wiser. Now if you replace
> that question mark with a comment:
>
> # foobar() is buggy because it throws weird exceptions when x = 42.
> def foobar():
> do stuff
>
> That gives me some useful information.
>
> --
> mvh Björn- Hide quoted text -
>
> - Show quoted text -


perhaps another character would be preferable. '~' perhaps. As to what
you use the WIP character for- in my mind the purpose is to allow an
extra type/level of commenting over and above #, which is inherently
flexible. I could for example choose to use ? (or ~) for blocks I'm
still writing, ?? (or ~~) for blocks that are buggy, and ??? (or ~~~)
for blocks that work but could use optimization. It's a commenting
shortcut for me as the script's developer and its advantage over #
comments are speed or insertion/removal.
Ah but I can see I'm not winning anybody over. I shall graciously
retire!

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Request for feedback: proposed new Perl modules to aid VHDL projects Michael Attenborough VHDL 22 03-13-2006 04:36 PM
graphical or flow charting design aid for python class development? William Gill Python 10 09-01-2005 05:03 PM
Financial Aid Nathaniel Bethel MCSE 1 11-27-2004 06:49 PM
anything in python to aid generation of html for CGI? Alex Hunsley Python 2 06-04-2004 01:13 PM
using training aid Roy Lawson MCSD 1 09-10-2003 01:22 PM



Advertisments