Re: [U2] Program Comments/Documentation/Notes/Revision History
With other words nothing I really need like manipulating a U2 database. Does it make cups of tea too? Well, I don't like cups of tea, so why should I change? Steve Romanow wrote: Mecki Foerthmann wrote: It really boils down to this. What can you do with Python in a U2 database that I can't do with Pick Basic? Umm, real unit testing ala nosetest real exception handling, umm, real inline documentation (the topic of this thread) Umm, access to thousands of trained developers all over the world. lets see, point 5, joining this decade with a modern toolkit. cross platform capability built in (python runs everywhere, everywhere I care about at least.) Great UI toolkits gtk, Qt, Tcl, (for free) integration with everything under the sun (except U2) jython, ipython, .NET, Anyone think of anything else? And do I really need to be able to do that to do my job improving and maintaining commercial software in an SB+ Unidata environment any better? If you limit youself to what SB+ can do, wow. I am coding around SB+ as much as possible. Do I get paid more if I write code in Python instead of Basic? Doesnt matter. You will have a better chance of being employable with your next job by learning python (or anything else). I doubt it. The hardest bit is not the coding but figuring out the business logic, and no language nor fancy tool can do that for you. It is also hard to graft policies and processes onto a toolkit that was never made for it. SB+ and Unibasic are very dated and are showing there age more and more every year. I bet there are a lot of things I can do with Pick Basic and multi-value that you can't (or at least not as easily) do with Python. Please name some. I would really like to know. Basic has nothing to do with MV, nor does python. Unibasic is merely the language chosen to manipulate data objects. What I propose is no different that what Tony G does with .NET, or what the java bindings for mv are. For a db to remain relevant, it needs hooks and GOOD, FREE bindings to as many technologies as possible. If IBM wants a license for every single thing related to U2, its growth and uptake will remain stunted. Things could be a lot different in our marketplace. We should charge for services, not connections. If you give away the connections, we have larger installs, which give more opportunity for consulting and getting money into peoples pockets. So in the end would it really benefit me in what I am doing for a living every day if I would learn yet another new language? I am going to be learning a new language every day that I continue to work. I am not going to hang my whole career on Unibasic. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
All, Please keep it polite. This is a civilized list. - Charles Barouch resu...@keyally.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Mecki, My apologies for being confrontational. This is a subject I care deeply about. I have worked in mv shops exclusively since 1994 (not bragging) and my point was primarily that the IT world has surpassed our tools by a large margin. I have written my last complicated F-correlative and also my last prestore in ED. I don't save the brain cycles to remember their syntax. I am also tired of apologizing to programmers who come to my company for how archaic U2 FEELS. I know how nice Unidata is, but I feel like the country cousin come to town, marveling at the tools available to my team mates working next to me with other db's. No I don't want to join them in MSSQL. Further from the truth. I really want to see a mv db that I does what I want. If I say I one more time, I'm going to be sick. :) Regards, Steve ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Hi I thought about adding code folding to mvDeveloper, but with Pick/Basic it doesn't really work in the same way. If you have a language that is function or member based, there is a very clear boundary for each function, e.g. private void doSomething{ code in here } which makes it easy to collapse. The problem with Pick/Basic is that there isn't always a clear boundary. If your subroutines are all like this, it will work: GoSub MySubroutine MySubroutine: code here Return But an IDE or editor has to be able to cope with bad style/design as well as good, so you may have the following: If SomeTest Then GoSub MySubroutine End Else GoSub JumpIntoTheMiddle End MySubroutine: If SomeTest Then Return End (code) (falls down into...) JumpIntoTheMiddle: (some more code) Return Here you have overlapping labels, and more than one return. Which means that the boundary isn't clear. It can be done, but it makes it more complicated. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Brian Leach wrote: Hi I thought about adding code folding to mvDeveloper, but with Pick/Basic it doesn't really work in the same way. If you have a language that is function or member based, there is a very clear boundary for each function, e.g. Could a mild folding (fold the ones there is no dispute about) work? If it worked 90% of the time (but 100% correct) I would use it. Just leave the indeterminate ones un-folded. I have tinkered some with folding in vim with U2, but I have not worked it into my workflow yet. Good examples Brian. private void doSomething{ code in here } which makes it easy to collapse. The problem with Pick/Basic is that there isn't always a clear boundary. If your subroutines are all like this, it will work: GoSub MySubroutine MySubroutine: code here Return But an IDE or editor has to be able to cope with bad style/design as well as good, so you may have the following: If SomeTest Then GoSub MySubroutine End Else GoSub JumpIntoTheMiddle End MySubroutine: If SomeTest Then Return End (code) (falls down into...) JumpIntoTheMiddle: (some more code) Return Here you have overlapping labels, and more than one return. Which means that the boundary isn't clear. It can be done, but it makes it more complicated. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Steve I think you're possibly out of date in your view of the database - again, not wanting to be confrontational but this is an important point that you raise. I've also used MV for many years, but for the vast majority of that it has been as part of a client/server or similar platform. If you're using MSSQL, you still end up coding stored procedures in TSQL - which is truly archaic. The only difference is that you *have* to use other languages on the client side to make up for the lack of inherent functionality. Over the years I've used UniVerse with VB, ASP, Java, Delphi, PHP, VB.net, C#, ASP.Net and I'm now journeying into Silverlight. There is, and for the last 20 years has been, no good reason to limit the database by your choice of language. With the APIs available, you can code in whatever you like. BTW I gave up F correlatives as soon as I moved to UniVerse - that's what I descriptors are for .. and I haven't used ED for serious development for almost 20 years. I use my own autodoc style, and have a parser that uses that to assemble documentation. These things are not platform limitations. On another specific point, I actually prefer the fact that Universe and UniData statements support Else and On Error as opposed to exception handling. I've seen too many C# projects where exception handling was - pardon the pun - very badly handled, bubbling exceptions up but not finally treating them correctly. java may be retentive in the extreme, but at least it forces you to handle exceptions - just about the only thing in that language I wish would be added to C# (even as an option). The language syntax hasn't evolved on the U2 platforms, but the functionality avilable has, which is the important thing. There are other interesting moves with Pick/Basic outside the U2 space - take a look at what is happening with QM, for example. They have added some OO features to the language that seem genuinely useful. Perhaps we should petition IBM to add something similar, but I don't think a rewrite of the language is necessary so long as the hooks are in place to call into UniVerse or UniData from the outside world. No, the reason why so many UniVerse and UniData sites look and feel archaic is because they are. People simply haven't taken full advantage of the features, and developers keep within their comfort zone. And management sees a working system and rarely spends the money. It's not the database that is limited, it's the imagination of those who pay for it. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Here Here Brian - I was about to say something on the same lines... -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Leach Sent: 29 June 2009 10:12 To: u2-users@listserver.u2ug.org Subject: Re: [U2] Program Comments/Documentation/Notes/Revision History Steve I think you're possibly out of date in your view of the database - again, not wanting to be confrontational but this is an important point that you raise. I've also used MV for many years, but for the vast majority of that it has been as part of a client/server or similar platform. If you're using MSSQL, you still end up coding stored procedures in TSQL - which is truly archaic. The only difference is that you *have* to use other languages on the client side to make up for the lack of inherent functionality. Over the years I've used UniVerse with VB, ASP, Java, Delphi, PHP, VB.net, C#, ASP.Net and I'm now journeying into Silverlight. There is, and for the last 20 years has been, no good reason to limit the database by your choice of language. With the APIs available, you can code in whatever you like. BTW I gave up F correlatives as soon as I moved to UniVerse - that's what I descriptors are for .. and I haven't used ED for serious development for almost 20 years. I use my own autodoc style, and have a parser that uses that to assemble documentation. These things are not platform limitations. On another specific point, I actually prefer the fact that Universe and UniData statements support Else and On Error as opposed to exception handling. I've seen too many C# projects where exception handling was - pardon the pun - very badly handled, bubbling exceptions up but not finally treating them correctly. java may be retentive in the extreme, but at least it forces you to handle exceptions - just about the only thing in that language I wish would be added to C# (even as an option). The language syntax hasn't evolved on the U2 platforms, but the functionality avilable has, which is the important thing. There are other interesting moves with Pick/Basic outside the U2 space - take a look at what is happening with QM, for example. They have added some OO features to the language that seem genuinely useful. Perhaps we should petition IBM to add something similar, but I don't think a rewrite of the language is necessary so long as the hooks are in place to call into UniVerse or UniData from the outside world. No, the reason why so many UniVerse and UniData sites look and feel archaic is because they are. People simply haven't taken full advantage of the features, and developers keep within their comfort zone. And management sees a working system and rarely spends the money. It's not the database that is limited, it's the imagination of those who pay for it. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Hi Brian, How about adding a folding option that you can manually set the start and end points and add your comments for the fold? I use mvDeveloper for U2 development and textpad for other MV databases. Kishor Quoting Brian Leach br...@brianleach.co.uk: Hi I thought about adding code folding to mvDeveloper, but with Pick/Basic it doesn't really work in the same way. If you have a language that is function or member based, there is a very clear boundary for each function, e.g. private void doSomething{ code in here } which makes it easy to collapse. The problem with Pick/Basic is that there isn't always a clear boundary. If your subroutines are all like this, it will work: GoSub MySubroutine MySubroutine: code here Return But an IDE or editor has to be able to cope with bad style/design as well as good, so you may have the following: If SomeTest Then GoSub MySubroutine End Else GoSub JumpIntoTheMiddle End MySubroutine: If SomeTest Then Return End (code) (falls down into...) JumpIntoTheMiddle: (some more code) Return Here you have overlapping labels, and more than one return. Which means that the boundary isn't clear. It can be done, but it makes it more complicated. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
On Sun, Jun 28, 2009 at 4:32 PM, Steve Romanowslestak...@gmail.com wrote: Mecki Foerthmann wrote: It really boils down to this. What can you do with Python in a U2 database that I can't do with Pick Basic? Umm, real unit testing ala nosetest I realize this is the U2 list, but I thought I would note that at least one implementation of mvbasic is enhanced for OO and does have a unit test framework (like junit). I will state up front that I'm using Cache' then just refer to it with other terms such as our MV toolset as this is not intended to be a sales pitch. real exception handling, it has this too umm, real inline documentation (the topic of this thread) Available in the OO classes, so you can put a /// comment, for example, in front of any mvbasic method and these work with html, this is not available within mvbasic code itself, however Umm, access to thousands of trained developers all over the world. To a great extent, you have to train those who work on any project in the specifics of whatever platform you are using anyway. BASIC is one of the easiest languages to learn, so I'll agree this is an advantage, but not as big as one might think. lets see, point 5, joining this decade with a modern toolkit. On the flip side of this one, you get developers who do not feel a need to chase every shiny object (so to speak) that comes along if they are writing mvbasic. Coding with today's most current tools pretty much implies you will be behind on some front next year, at which point you will either stop and revise your code for the new stuff or lose your most work with shiny objects developers. cross platform capability built in (python runs everywhere, everywhere I care about at least.) I have only read a few pieces of python and was not overly impressed with the whole white space approach, for example, but there are many who love it, so I'll assume it is a nice language. It is just a language, however, and I already have plenty of those, with javascript and mvbasic along with markup like html, xml, css. I can see no good reason to swap out any of those for python. Great UI toolkits gtk, Qt, Tcl, (for free) We are using an AJAX framework for mvbasic and it works well (although I'm a bit slow to catch on at times). There definitely are plenty of toolkits out there and most do not integrate mvbasic, but the fact that some do is encouraging. integration with everything under the sun (except U2) jython, ipython, .NET, This hasn't been a problem either. So, python is fine, but so is mvbasic. They can both be used to get the job done, with an exception that you note that python doesn't work natively with U2, while mvbasic does. There are many variations and nothing works with everything. Anyone think of anything else? And do I really need to be able to do that to do my job improving and maintaining commercial software in an SB+ Unidata environment any better? If you limit youself to what SB+ can do, wow. I am coding around SB+ as much as possible. I think there are tools out now or there will be that convert SB+ to something newer too (I think our MV implementation has or will have a tool for that) Do I get paid more if I write code in Python instead of Basic? Doesnt matter. You will have a better chance of being employable with your next job by learning python (or anything else). If a particular employer is looking for specific toolset skills, it is not hard to teach yourself new tools if you understand your profession to begin with, enough to get your foot in the door of an interview. I will grant that at first it will be like picking up a saxophone when you are a flutist (not trying to get into the flutist vs flautist discussion) where you can perform the fingerings but surely are not as ept at the instrument at the outset. This is where my statement that you end up having to learn any environment these days comes in. It is not as if a person is likely to know the precise full suite of tools in the platform of any company when they arrive. I doubt it. The hardest bit is not the coding but figuring out the business logic, and no language nor fancy tool can do that for you. It is also hard to graft policies and processes onto a toolkit that was never made for it. SB+ and Unibasic are very dated and are showing there age more and more every year. The data model for U2 has really made a comeback this century with XML and JSON being much more like PICK than RDBMS's data structures. Most RDBMS's have enhanced their toolset for newer SQL standards so they can handle nested structures even if inelegantly. So in some ways there is a movement back to MV, even if not typically in the form of MV databases (somewhat unfortunately, I think). I bet there are a lot of things I can do with Pick Basic and multi-value that you can't (or at least not as easily) do with Python. Please name some. I would really like to know. Basic has nothing to do with MV, nor does
Re: [U2] Program Comments/Documentation/Notes/Revision History
TY Dawn, Very cool post. You laid it out there very nicely. I hope to avoid the shiny new thing syndrome. I need to look up the book reference you made. WRT to the resurgence of mv-like data structures, no one will care that we've been mv when mv wasn't cool. Thanks guys for engaging me in this exercise. I'm usually not this outspoken. Steve ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Thanks guys for engaging me in this exercise. I'm usually not this outspoken. We *like* outspoken. It's better than leaving things unsaid grin. Brian ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Brian Leach wrote: Thanks guys for engaging me in this exercise. I'm usually not this outspoken. Look at the times of my posts. I should use Google's Beer Goggles. No posts over 5 lines between 2am and 7am. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
In message 1fdb619c0906290746n2d553c0ao867cb5d64327b...@mail.gmail.com, Dawn Wolthuis dawnwolth...@gmail.com writes On Sun, Jun 28, 2009 at 4:32 PM, Steve Romanowslestak...@gmail.com wrote: Mecki Foerthmann wrote: It really boils down to this. What can you do with Python in a U2 database that I can't do with Pick Basic? Umm, real unit testing ala nosetest I realize this is the U2 list, but I thought I would note that at least one implementation of mvbasic is enhanced for OO and does have a unit test framework (like junit). I will state up front that I'm using Cache' then just refer to it with other terms such as our MV toolset as this is not intended to be a sales pitch. Many of you will know this, I expect, but Jim Idle (of jBase fame) worked for Cache for a while. I meet him every now and then on a compiler-compiler mailing list. So I would guess he was rather involved in writing a lot of this stuff for Cache :-) Cheers, Wol -- Anthony W. Youngman pi...@thewolery.demon.co.uk 'Yings, yow graley yin! Suz ae rikt dheu,' said the blue man, taking the thimble. 'What *is* he?' said Magrat. 'They're gnomes,' said Nanny. The man lowered the thimble. 'Pictsies!' Carpe Jugulum, Terry Pratchett 1998 Visit the MaVerick web-site - http://www.maverick-dbms.org Open Source Pick ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Dawn Wolthuis wrote: Just my two cents. cheers! --dawn How come Dawn's two cents are always worth more than my two cents? Don't answer that. All, I've found lurking on this whole thread informative thought-provoking. Thanks. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Hey David, Why not just write a program to flip them back and forth between commented and decommented? *#*comment 1 code code code *#*comment 2 Is what it would look like until you re-ran it to restore the comments or you could write it so that after comment 1 it would have 40 chars of the original comment, or something to that effect... Allen -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org]on Behalf Of David A. Green Sent: Friday, June 26, 2009 9:50 AM To: 'U2 Users List' Subject: [U2] Program Comments/Documentation/Notes/Revision History I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? Thanks, David A. Green www.dagconsulting.com (480) 813-1725 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
-Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users- boun...@listserver.u2ug.org] On Behalf Of Tony G Sent: Sunday, 28 June 2009 6:26 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Program Comments/Documentation/Notes/Revision History But then there is the next step. There is a major difference between folding code exclusively based on syntactical stuctures and folding based on logical/functional components. In BASIC we can have several labelled, internal subroutines, and UV Functions, that are a part of a functional set. But, we can't put those into a block to get them out of our way while we're working on other sections. At a higher level though these subroutines would (should) probably be called in sequence from (yet another) internal subroutine corresponding to the higher level functional unit ... 'least that is the way I'd tackle it (not strictly true, as I tend to use our snippet technology inside Visage, so by default I already have code compressed to a single line ... double click on a snippet or external subroutine name you can edit/examine that. Not the same I know, but it works for me :-) Err, except for our (n)ever evolving Pick BASIC. As you pointed out, the functionality you are talking about becomes a function/feature of the IDE or editing tool you are using, rather than Pick Basic itself -- when I call up Javascript in Notepad I get to see it all, but the same code viewed from another can be collapsed nicely. Ross Ferris Stamina Software Visage Better by Design! ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Talking about never evolving pick basic. Can you imagine the posibilities if we just abandoned pick basic and used something like python as the data modeling language. It would be unstoppable. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
It really boils down to this. What can you do with Python in a U2 database that I can't do with Pick Basic? And do I really need to be able to do that to do my job improving and maintaining commercial software in an SB+ Unidata environment any better? Do I get paid more if I write code in Python instead of Basic? I doubt it. The hardest bit is not the coding but figuring out the business logic, and no language nor fancy tool can do that for you. I bet there are a lot of things I can do with Pick Basic and multi-value that you can't (or at least not as easily) do with Python. So in the end would it really benefit me in what I am doing for a living every day if I would learn yet another new language? Steve Romanow wrote: Talking about never evolving pick basic. Can you imagine the posibilities if we just abandoned pick basic and used something like python as the data modeling language. It would be unstoppable. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Mecki Foerthmann wrote: It really boils down to this. What can you do with Python in a U2 database that I can't do with Pick Basic? Umm, real unit testing ala nosetest real exception handling, umm, real inline documentation (the topic of this thread) Umm, access to thousands of trained developers all over the world. lets see, point 5, joining this decade with a modern toolkit. cross platform capability built in (python runs everywhere, everywhere I care about at least.) Great UI toolkits gtk, Qt, Tcl, (for free) integration with everything under the sun (except U2) jython, ipython, .NET, Anyone think of anything else? And do I really need to be able to do that to do my job improving and maintaining commercial software in an SB+ Unidata environment any better? If you limit youself to what SB+ can do, wow. I am coding around SB+ as much as possible. Do I get paid more if I write code in Python instead of Basic? Doesnt matter. You will have a better chance of being employable with your next job by learning python (or anything else). I doubt it. The hardest bit is not the coding but figuring out the business logic, and no language nor fancy tool can do that for you. It is also hard to graft policies and processes onto a toolkit that was never made for it. SB+ and Unibasic are very dated and are showing there age more and more every year. I bet there are a lot of things I can do with Pick Basic and multi-value that you can't (or at least not as easily) do with Python. Please name some. I would really like to know. Basic has nothing to do with MV, nor does python. Unibasic is merely the language chosen to manipulate data objects. What I propose is no different that what Tony G does with .NET, or what the java bindings for mv are. For a db to remain relevant, it needs hooks and GOOD, FREE bindings to as many technologies as possible. If IBM wants a license for every single thing related to U2, its growth and uptake will remain stunted. Things could be a lot different in our marketplace. We should charge for services, not connections. If you give away the connections, we have larger installs, which give more opportunity for consulting and getting money into peoples pockets. So in the end would it really benefit me in what I am doing for a living every day if I would learn yet another new language? I am going to be learning a new language every day that I continue to work. I am not going to hang my whole career on Unibasic. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
By the way, if you use Edit Plus it can fold code based on indent. A little more primative than VS but can be useful anyway. From: u2-users-boun...@listserver.u2ug.org on behalf of Tony G Sent: Sat 27/06/2009 08:26 To: u2-users@listserver.u2ug.org Subject: Re: [U2] Program Comments/Documentation/Notes/Revision History From: David A. Green I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? I've often thought of this as being a problem with both the language and the editors that we commonly use. Typical MV editors show all code. There is no provision for folding content or outlining. For example, in C# we can do this: #region Initialization // lots of comment lines here // variable definitions, code, etc #endregion In Visual Studio that collapses to a single line: +Initialization We can click the plus sign to open it up and see the entire section. Other editors support this feature for different languages. Code can be nested: #region Main Section #region Define Variables // definitions here #endregion vars #region Major Function 1 // code here #endregion functions #endregion main Again, that collapses to something like this: #region Main Section + Define Variables + Major Function 1 + Major Function 2 #endregion main Or collapses entirely to: + Main Section But with MV BASIC the language doesn't support this unless we use a pre-processor, and even then we don't have editors that recognize the constructs. The best we can do is to use something like this: *!+ This starts a region * code here *!- This ends the region But then we need an editor to support it. And that brings me to... a minor rant I was writing a new MV Editor to support this and many other features highly desirable to MV developers. But as with many projects where people would inevitably demand a free solution I decided to put this project on the shelf indefinitely. It's just not worth it to try to improve our lot here. Since people are so fond of open source freeware I'll suggest that the source code is available for people to enhance to recognize code as defined above. That's the spirit of open source - we're supposed to give as much as take. If no one wants to enhance one of the fine FOSS utilities out there, then it seems we'll simply never have the functionality. People all too often confuse free=liberty with free=beer. They want the software to be free-of-charge but we rarely see people publishing MV-specific enhancements to open source code as a contribution to the community. It's this condition that causes us to continually lose sites to the mainstream world as people wonder why our development practices are so primitive. C'est la vie. / Tony Gravagno Nebula Research and Development TG@ remove.pleaseNebula-RnD.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ** This email message and any files transmitted with it are confidential and intended solely for the use of addressed recipient(s). If you have received this communication in error, please reply to this e-mail to notify the sender of its incorrect delivery and then delete it and your reply. It is your responsibility to check this email and any attachments for viruses and defects before opening or sending them on. Spotless collects information about you to provide and market our services. For information about use, disclosure and access, see our privacy policy at http://www.spotless.com.au Please consider our environment before printing this email. ** ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
David I have an auto-doc style of comment that defines what the program does, and version stamps that are compiled into the object code that include a short description alongside other information, similar to the Windows version resource. But I would suggest that modification logs really belong outside the source code and should be in your source code control system (e.g. subversion). That way, you can match the modification log with fetching the actual versions of the source code as it was at that point, and use the tools provided (e.g. TortoiseSVN) to do visual diffs across versions if you need to see what changed. Regards Brian -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of David A. Green Sent: 26 June 2009 17:50 To: 'U2 Users List' Subject: [U2] Program Comments/Documentation/Notes/Revision History I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? Thanks, David A. Green www.dagconsulting.com (480) 813-1725 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Another option is to have an accompanying wiki/vcs setup where a lot of metadata about why and what can be stored outside of the code. With version control, you fight the need to comment out old code and leave it in. And the wiki can be as verbose as you want. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Ross - Your suggestion for folding on syntax is fine but it doesn't go far enough. The mainstream development world recognized what you're saying long ago, did it, and then improved upon it again. We're sort of two generations behind in this discussion. Yes, Visual Studio folds C++, C#, and VB.NET on language structures. NetBeans, Eclipse, and other IDEs fold Java, PHP, and other languages like that too. They all fold comments as described in the OP. But then there is the next step. There is a major difference between folding code exclusively based on syntactical stuctures and folding based on logical/functional components. In BASIC we can have several labelled, internal subroutines, and UV Functions, that are a part of a functional set. But, we can't put those into a block to get them out of our way while we're working on other sections. The way I've done this is by INCLUDING code and then using a utility that imports and exports all included code when I need to see it all in one block or for editing. The mvToolBox editing software from DM Consulting is the only product I know that does this sort of visual hydration and dehydration of code stored in different modules. Your faith in programmers following standards is amusing. There are no standards to be followed here. This is just a function of the development environment, like comments. Use it or don't as it's convenient. Other languages and IDEs support folding and developers use this stuff every day - it's unnatural Not to have it anymore. Err, except for our (n)ever evolving Pick BASIC. Tony Gravagno Nebula Research and Development TG@ remove.pleaseNebula-RnD.com Visit PickWiki.com! Contribute! From:Ross Ferris Whilst I appreciate the structural tags I'd suggest that they are not needed. It doesn't take too much thought to recognise the self-bounding regions Label: -- return For -- next If -- else -- end Loop -- repeat Begin case -- case -- end case There are some funny possibilities with read/locked|then|else Whilst I appreciate the fine grained control your suggestion provides, my faith in programmers generally following this standard is low, and providing people haven't employed a single, linear top-down approach to their programming, I think most (all) of the collapsible regions could be derived directly from the code with minimal effort ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] Program Comments/Documentation/Notes/Revision History
I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? Thanks, David A. Green www.dagconsulting.com (480) 813-1725 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
That might cause you problems if you use the u2 debugger. ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
The notes for the changes are in the source control repo so the comments in the code are more to do with what it does rather than how it changed . -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of David A. Green Sent: 26 June 2009 17:50 To: 'U2 Users List' Subject: [U2] Program Comments/Documentation/Notes/Revision History I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? Thanks, David A. Green www.dagconsulting.com (480) 813-1725 ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Think about using xml for documentation in the source code, then some external tools can be used for documentation. *subRoutine to * modAdded to * mod Date . * mod Author Regards David Jordan ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
From: David A. Green I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? I've often thought of this as being a problem with both the language and the editors that we commonly use. Typical MV editors show all code. There is no provision for folding content or outlining. For example, in C# we can do this: #region Initialization // lots of comment lines here // variable definitions, code, etc #endregion In Visual Studio that collapses to a single line: +Initialization We can click the plus sign to open it up and see the entire section. Other editors support this feature for different languages. Code can be nested: #region Main Section #region Define Variables // definitions here #endregion vars #region Major Function 1 // code here #endregion functions #endregion main Again, that collapses to something like this: #region Main Section + Define Variables + Major Function 1 + Major Function 2 #endregion main Or collapses entirely to: + Main Section But with MV BASIC the language doesn't support this unless we use a pre-processor, and even then we don't have editors that recognize the constructs. The best we can do is to use something like this: *!+ This starts a region * code here *!- This ends the region But then we need an editor to support it. And that brings me to... a minor rant I was writing a new MV Editor to support this and many other features highly desirable to MV developers. But as with many projects where people would inevitably demand a free solution I decided to put this project on the shelf indefinitely. It's just not worth it to try to improve our lot here. Since people are so fond of open source freeware I'll suggest that the source code is available for people to enhance to recognize code as defined above. That's the spirit of open source - we're supposed to give as much as take. If no one wants to enhance one of the fine FOSS utilities out there, then it seems we'll simply never have the functionality. People all too often confuse free=liberty with free=beer. They want the software to be free-of-charge but we rarely see people publishing MV-specific enhancements to open source code as a contribution to the community. It's this condition that causes us to continually lose sites to the mainstream world as people wonder why our development practices are so primitive. C'est la vie. / Tony Gravagno Nebula Research and Development TG@ remove.pleaseNebula-RnD.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Program Comments/Documentation/Notes/Revision History
Tony, Whilst I appreciate the structural tags I'd suggest that they are not needed. It doesn't take too much thought to recognise the self-bounding regions Label: -- return For -- next If -- else -- end Loop -- repeat Begin case -- case -- end case There are some funny possibilities with read/locked|then|else Whilst I appreciate the fine grained control your suggestion provides, my faith in programmers generally following this standard is low, and providing people haven't employed a single, linear top-down approach to their programming, I think most (all) of the collapsible regions could be derived directly from the code with minimal effort Ross Ferris Stamina Software Visage Better by Design! -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users- boun...@listserver.u2ug.org] On Behalf Of Tony G Sent: Saturday, 27 June 2009 8:27 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] Program Comments/Documentation/Notes/Revision History From: David A. Green I've always commented my program at the beginning, but some programs have many changes and when we have 300+ lines of comments it gets a little tedious to deal with embedded in the source code. I'm think of placing them in an external file and then doing a $INSERT in the source code in order to tie them together. How do you handle the long comments? I've often thought of this as being a problem with both the language and the editors that we commonly use. Typical MV editors show all code. There is no provision for folding content or outlining. For example, in C# we can do this: #region Initialization // lots of comment lines here // variable definitions, code, etc #endregion In Visual Studio that collapses to a single line: +Initialization We can click the plus sign to open it up and see the entire section. Other editors support this feature for different languages. Code can be nested: #region Main Section #region Define Variables // definitions here #endregion vars #region Major Function 1 // code here #endregion functions #endregion main Again, that collapses to something like this: #region Main Section + Define Variables + Major Function 1 + Major Function 2 #endregion main Or collapses entirely to: + Main Section But with MV BASIC the language doesn't support this unless we use a pre-processor, and even then we don't have editors that recognize the constructs. The best we can do is to use something like this: *!+ This starts a region * code here *!- This ends the region But then we need an editor to support it. And that brings me to... a minor rant I was writing a new MV Editor to support this and many other features highly desirable to MV developers. But as with many projects where people would inevitably demand a free solution I decided to put this project on the shelf indefinitely. It's just not worth it to try to improve our lot here. Since people are so fond of open source freeware I'll suggest that the source code is available for people to enhance to recognize code as defined above. That's the spirit of open source - we're supposed to give as much as take. If no one wants to enhance one of the fine FOSS utilities out there, then it seems we'll simply never have the functionality. People all too often confuse free=liberty with free=beer. They want the software to be free-of-charge but we rarely see people publishing MV-specific enhancements to open source code as a contribution to the community. It's this condition that causes us to continually lose sites to the mainstream world as people wonder why our development practices are so primitive. C'est la vie. / Tony Gravagno Nebula Research and Development TG@ remove.pleaseNebula-RnD.com ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users