2 new comment-like characters in Python to aid development?
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. -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
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! -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
>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. -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
On Mar 9, 10:59 am, "BJörn Lindqvist" <[EMAIL PROTECTED]> wrote: > On 9 Mar 2007 02:31:14 -0800, [EMAIL PROTECTED] > > > > > > <[EMAIL PROTECTED]> 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! -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
> Yes, it has. It says "disregard the following characters until EOL". > If you remove it, the following code will be interpreted as ... > code (and not be disregarded). and ! would say "disregard the following characters until End Of Program". Is it really so different? > > Well I'm not a big fan of decorators so I know how you must feel. > > Mh, not sure -- why do you have decorators in mind? I don't dislike > them. Just because I remember reading similar aesthetic arguments against the @ syntax- that it looked alien, messy, unpythonic and obfuscating. I certainly agree with the latter point even if I find the former ones a little hand-wavey for my tastes. > I think it's much cleaner to have language and "fixme" levels > separate. "fixme" features can then depend fully on the editor/IDE > and don't have to be part of the source code (though they may). That's certainly a solid ideological argument against the "WIP character". Maybe I should just change my editor! It sounds like other Python users *do* like to do the kind of things I suggested, but seasoned users would rather rely on macros and features of specific editors. Unfortunately, to a newbie like myself, these seem like obscure 'tricks' to be mastered rather than simple built-in conveniences that any newbie can profit from. I suppose my ideology is that Python's greatest strength is (and focus should be) its visual simplicity and ease of learning, making programming more accessible to the masses. But hey I'm just a fresh- faced conscript. I guess I've got to leave the battle planning to the five-star generals on the hill! Thanks for all the comments and the spirit of tolerance. dave -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
On 9 Mar, 14:05, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: > But you _can't_ profit from these conveniences, at least not the ? > character. It's just garbage put in there for some others to interpret, > meaningless to the interpreter. So it _always_ boils down to > editor-support. I'm sorry I don't follow your logic. Meaningless to the interpreter, yes, meaningless to the IDE or to me, no. I "_can't_ profit from these conveniences"? Why ever not? -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
> > I'm sorry I don't follow your logic. Meaningless to the interpreter, > > yes, meaningless to the IDE or to me, no. I "_can't_ profit from these > > conveniences"? Why ever not? > > Exactly, the ? is meaningless to the language itself, it's only a comment > sign - ... > ... it has nothing to do with _python_ the language, so it doesn't > belong there. But # is 'only a comment sign' as well, and equally meaningless to the interpreter. But it's still part of the language, very very useful and I profit from its existence every day. > But for python itself, it has no meaning whatsoever, and would just be a > character to overread, introducing visual clutter. If you can highlight an entire block with a single character, won't there be _less_ visual clutter than the current way of achieving the same effect with # comments? > So - if you want that feature, patch your editor of choice to deal with that > comments, make them added and removed with a key stroke, whatever - be my > guest. Would if I could! > Besides, I don't see how "quick highlighting of text" is something that > needs to be persisted anyway - if it is quick, hightlight it within the > editor until the file is closed. If not, it might be well worth a comment > anyway why you think it needs special attention. What we're talking about here is a form of 'alternate commenting style'. With the IDE's cooperation it'd work on whole blocks at once, it would highlight without disrupting the code concerned (at least the way I'm envisaging it), it would be versatile (could probably be used for as big a variety of purposes as the # comment), and yes, it'd be persistent, which is how it would be different from any IDE-based highlighting. I think that'd be most useful. You don't. So far nobody else here does either, and I've not persuaded anybody differently. Fair enough! dave -- http://mail.python.org/mailman/listinfo/python-list
Re: 2 new comment-like characters in Python to aid development?
> But all of them are clear on how they work: they affect one line, or have a > bracket style like /* */ and thus demark clearly what they affect. Even > someone not fluent in the language in question will quickly grab what they > mean. There's nothing remotely fuzzy about how wip or halt comments would work, nor anything unclear about what they would affect. Nor are they remotely difficult to explain. They just haven't been employed before, to my knowledge, even though the underlying effects seem to be a reasonably common requirement. > But the key-difference is that the comment in python has a meaning for the > interpreter - ignore this. OK that is true. But it's true for the halt comment as well. > The ? has no meaning. It only has a meaning for an editor. So it _does_ have meaning! I'm sorry I just don't buy into this kind of abstract programming ideology, and I never really have. I don't care what the interpreter finds meaningful and neither, on a day to day basis, do most users, I'm sure. It seems like the same kind of aesthetic ideology that leads lots of programmers to feel repulsed by Python's whitespace block delimiting. There's a more important principle being missed by them: the human factor. The guy or gal who's actually _using_ this stuff. BTW I don't mean to imply that you're not thinking about human readability / useability, just that you don't seem to be arguing from that basis. > Not in my opinion - ;p > > Would if I could! > > Well, grab eric3, it's written in python, and teach it to do so! It's an > exercise in python then :) I may do that. Thanks for bringing it to my attention. > > What we're talking about here is a form of 'alternate commenting > > style'. With the IDE's cooperation it'd work on whole blocks at once, > > it would highlight without disrupting the code concerned (at least the > > way I'm envisaging it), it would be versatile (could probably be used > > for as big a variety of purposes as the # comment), and yes, it'd be > > persistent, which is how it would be different from any IDE-based > > highlighting. > > I think you contradict yourself here. On the one side, you want it not > disturbing to the eye, yet it should be highlighted, so it will be directly > noticed by that same eyes. You misread me. I wasn't talking about visual disturbance but 'code disturbance'. Let me rephrase.. "..it would highlight without causing the highlighted code to be ignored by the interpreter.." > it _is_ an disturbance. And with an IDE that stores such information in > e.g. project metainformation, you can even have the persistence, without > the disturbance and without altering python. So it's fine and wonderful to add a massive chunk of code to IDEs to introduce jargon-strewn behaviour that newbies have little hope of comprehending yet alone taking advantage of, and which will inevitably behave differently in any IDE that does get around to providing it? But adding two special characters to the core language is 'messy'? I can't argue with your aesthetic dislike of the proposed syntax, it's just the reasoning you use to support your stance that doesn't ring true to me! (I trust no offense is caused.) -- http://mail.python.org/mailman/listinfo/python-list