digitalmars.D - Phango
- Janice Caron (9/9) Nov 15 2007 I've started to like Tango, now that I've got bits of it working with Ph...
- Jarrett Billingsley (4/14) Nov 15 2007 http://www.dsource.org/projects/tango/docs/current/ is useful indeed. Y...
- Janice Caron (4/9) Nov 15 2007 I don't want docs, I want example source code. I want something I can
- Frank Benoit (3/6) Nov 15 2007 http://www.dsource.org/projects/tango/wiki/ChapterStorage
- Janice Caron (4/6) Nov 15 2007 That's what I was looking for! Great! :-)
- Janice Caron (7/11) Nov 16 2007 That was easy!
- Alexander Panek (8/10) Nov 16 2007 As you might know already or at least have guessed - since there's an
- Janice Caron (37/37) Nov 16 2007 I dunno if you'd consider this a bug in tango.io.filepath.parse(), but
- Steven Schveighoffer (5/8) Nov 16 2007 Register at dsource: http://www.dsource.org/forums/profile.php?mode=regi...
- Steven Schveighoffer (8/14) Nov 15 2007 Just an FYI, some of us are working on a D 2.x compatible version of Tan...
- Janice Caron (16/21) Nov 15 2007 Yeah, well that's kind of what I did. I took the source in the "tango"
- Alexander Panek (12/17) Nov 15 2007 Actually, the core of Tango is in tango.core - the std/ folder is just
- Janice Caron (19/24) Nov 16 2007 I didn't understand that, but hey ho. In any case, the original Phobos
- Bill Baxter (2/2) Nov 16 2007 I thought we agreed that this should be called "Phandango". :-)
- Janice Caron (9/10) Nov 16 2007 Well, there isn't really an "it". I was actually getting this working
- Alexander Panek (14/41) Nov 16 2007 My apologies - ... tweaked?
- Janice Caron (21/32) Nov 16 2007 Well yeah. As I said at the start of this thread, what I did was:
- Sean Kelly (6/13) Nov 16 2007 So do you have a /std directory at all? I would hope so, or some
- Janice Caron (8/15) Nov 16 2007 I have Phobos's std directory. It is completely unchanged and intact.
- Sean Kelly (4/12) Nov 16 2007 Oh, that's fine then. The /std directory included with Tango just
- Sean Kelly (17/38) Nov 16 2007 Not to plug the Tango engine, but it does actually fix a number of bugs
- Walter Bright (5/12) Nov 18 2007 Mixed case package/module names are avoided because there needs to be a
- Lars Ivar Igesund (13/26) Nov 18 2007 As I said elsewhere in the thread, other FS _are_ case sensitive, and th...
- torhu (8/20) Nov 18 2007 I believe Walter's point is that "all package and module names are lower...
- Lars Ivar Igesund (9/31) Nov 18 2007 Yes, I see his point. My point is that there is no difference from havin...
- Bill Baxter (10/33) Nov 18 2007 There is another issue. Often a module has basically only one main
- Lars Ivar Igesund (20/56) Nov 18 2007 Using fully qualified class names are very seldom necessary in D, I find
- Bill Baxter (37/91) Nov 18 2007 Ok, but then the most obvious name for the renamed import is the last
- Lars Ivar Igesund (17/82) Nov 18 2007 Never liked static imports :P The static keyword is probably part of tha...
- Oskar Linde (76/85) Nov 18 2007 It is interesting to see how such a trivial thing as the capitalization
- Walter Bright (5/7) Nov 19 2007 It's normal for easily understood issues to get a lot more comments than...
- David Wilson (2/9) Nov 19 2007
- Walter Bright (2/10) Nov 19 2007 Spot on.
- Matti Niemenmaa (20/35) Nov 20 2007 One problem with shoving all iterators into one module is the way the pr...
- John Reimer (20/55) Nov 18 2007 I actually think both package.foo.Foo and package.Foo.Foo look bizarre.
- Don Clugston (3/4) Nov 20 2007 John, it's great to see you back! I feared you were gone forever.
- John Reimer (20/25) Nov 20 2007 Don,
- John Reimer (6/40) Nov 21 2007 *sigh*
- Don Clugston (7/51) Nov 21 2007 Indeed.
- Sean Kelly (5/16) Nov 21 2007 Yup. John has always been a valuable member of the D community. I was
- Kris (2/17) Nov 21 2007 Yeah, I fully agree. Good to see him back here!
- Sean Kelly (4/12) Nov 21 2007 Fortunately, with usenet, not being a part of the discussion is as
- Christopher Wright (14/27) Nov 18 2007 The only way to solve this is to have the DMD frontend do
- Matti Niemenmaa (6/26) Nov 18 2007 import StD.sTdIo;
- Walter Bright (5/24) Nov 18 2007 The const stuff is changing significantly (for the much better, I hope),...
- Jason House (3/4) Nov 16 2007 This reminds me... Walter and the Tango team agreed to make their librar...
- Sean Kelly (9/17) Nov 16 2007 D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change
- Jason House (3/13) Nov 16 2007 I translate that to mean that the merge of Tango and Phobos relies on th...
- Janice Caron (2/3) Nov 16 2007 I surely hope so. ++myVote
- Lars Ivar Igesund (7/12) Nov 17 2007 You understand that that would mean Phobos gaining Tango's style?
- Janice Caron (17/22) Nov 17 2007 Oh I don't think so. Walter is quite clear that module names should be
- Sean Kelly (8/26) Nov 17 2007 This seems a bit extreme. The only variables I can think of in Tango
- Derek Parnell (7/18) Nov 17 2007 Windows file system is case insensitive therefore it is easy to cause
- Lars Ivar Igesund (10/27) Nov 17 2007 When one thinks the file system is case insensitive, it is easy creating
- Kris (7/25) Nov 17 2007 Hiya Derek,
- Walter Bright (15/20) Nov 18 2007 The compiler will distinguish modules Foo and foo as being different,
- renoX (7/41) Nov 17 2007 Easy: when in Romes do like Romans i.e. coherency beats 'invent your own...
- Sean Kelly (4/21) Nov 17 2007 What if that convention proves insufficient for a library that is much
- Kris (23/28) Nov 17 2007 No problem, renoX, but there's at least two strawmen in your post. Maybe...
- Alix Pexton (3/45) Nov 18 2007 All I'm going to say to respond to that is that you have done a very goo...
- Kris (11/12) Nov 18 2007 Thanks Alix.
- Alix Pexton (11/31) Nov 18 2007 I can only assume that there is a red mist that is stopping you from see...
- Kris (8/59) Nov 18 2007 Wow ... I really have no idea of what you're talking about Alix. Honestl...
- Alix Pexton (3/76) Nov 18 2007 Nope, tat is not what I want at all...
- Kris (5/6) Nov 18 2007 Then, it not yet clear what it is that you want. I suggest you start a
- Alix Pexton (6/28) Nov 18 2007 I agree, I don't know where it started, but I got used to the convention...
- Sean Kelly (4/6) Nov 18 2007 Tango's naming convention isn't consistent with my own style either, but...
- Kris (6/47) Nov 18 2007 Alix;
- Lars Ivar Igesund (15/42) Nov 17 2007 Well, there are many using this style because W says/said it's standard.
- Kris (17/23) Nov 17 2007 knew you'd find a way to dredge this up again :)
- phango (3/30) Nov 17 2007 i love that - please release it to us all!
- Kris (22/24) Nov 17 2007 There's a fair chance the poster below is actually Janice, but just in c...
- Janice Caron (5/6) Nov 17 2007 Who? What?
- Lars Ivar Igesund (10/19) Nov 17 2007 FWIW, you can't call a distinction on you as a person and your opinions ...
- Janice Caron (10/24) Nov 17 2007 Kris made a false accusation. That was unwarranted. You can't go
- Kris (11/35) Nov 17 2007 Nonsense. I made an interesting parapraxes in conjuction with a speculat...
- Bruce Adams (2/31) Nov 17 2007 Are you sure you aren't jumping the gun. I read Kris's post as meaning y...
- James Dennett (7/22) Dec 12 2007 There's an interesting issue here. There are two ways of viewing
- Kris (12/18) Nov 17 2007 Dash it all. This is what I meant to write:
- Janice Caron (3/4) Nov 17 2007 Phew! OK, I'm happy now. :-)
- Kris (10/22) Nov 18 2007 Sure, no problem. Now, perhaps you will address the questions asked
- Janice Caron (15/21) Nov 18 2007 Module name components: likethis
- Kris (5/9) Nov 18 2007 LOL -- it was the last time you were being shrill about this very topic
- Janice Caron (10/15) Nov 18 2007 shrill - adj - said of a voice, sound, etc: high-pitched and piercing.
- Regan Heath (22/27) Nov 19 2007 Don't hold your breath. Many a poster has been in your shoes, myself
- Kris (34/36) Nov 19 2007 He is? I don't recall saying anything particularly negative to Alix. Tri...
- Regan Heath (15/26) Nov 19 2007 Must be the cynic in me, I try to keep him locked up but sometimes he
- Bill Baxter (7/41) Nov 19 2007 What about the pen island module problem? Underscores? Do you have any...
- Regan Heath (18/27) Nov 19 2007 I don't really like underscores either. Is the "pen island" problem
- Jeff Nowakowski (17/25) Nov 18 2007 For the record, what you said was in this posting:
- Janice Caron (20/32) Nov 18 2007 Ooh thank you. Well, that clarifies it.
- Jeff Nowakowski (16/18) Nov 18 2007 The problem is you presented your argument as either they did something
- Jeff Nowakowski (8/14) Nov 18 2007 By the way, that Jeff fellow is absolutely BRILLIANT and INSIGHTFUL with...
- Jeff Nowakowski (6/23) Nov 18 2007 The below forgery was posted by David B. Held. I must say I'm very
- David B. Held (10/15) Nov 19 2007 I had a lot of help from my friends who led the way. Obviously, I'm not...
- Jeff Nowakowski (12/18) Nov 20 2007 What was your point? That you are willing to post personal attacks
- Regan Heath (7/10) Nov 20 2007 Your use of the word "charge" in this sentence:
- Jeff Nowakowski (9/17) Nov 20 2007 Ok, I can see how that can be misconstrued, but I tried to make it clear...
- David B. Held (77/92) Nov 20 2007 Yes, to make a point, I was willing to do that. And if you weren't
- Kris (56/146) Nov 21 2007 Excellent! I don't spend much time on this ng anymore, but recently it's...
- David B. Held (103/124) Nov 23 2007 Well, the double-standard here is quite amusing. Both of you accused
- Kris (90/210) Nov 23 2007 Which obvious reading? Can you be more specific about that?
- Janice Caron (6/9) Nov 23 2007 Because I have stated that fact loudly and clearly. Once again, I,
- Kris (9/18) Nov 24 2007 Oh, you make that claim, and that's fine. But the point is that David ca...
- David B. Held (56/105) Nov 24 2007 I believe I spelled it out in my last response to Jeff. Since you seem
- Kris (34/69) Nov 24 2007 I asked a simply question, and there's really no need to take this attit...
- David B. Held (106/153) Nov 25 2007 You asked a simple question, but I didn't see one ounce of sincerity in
- Kris (51/182) Nov 25 2007 Huh? Perhaps you should remind yourself that you are the one who's been
- Regan Heath (12/24) Nov 26 2007 I think you must have missunderstood something here Kris, or perhaps I
- Daniel Keep (4/4) Nov 25 2007 It's a month until Christmas, and I think this thread isn't doing anyone
- Kris (3/7) Nov 25 2007 Gladly. No further comment.
- Bill Baxter (3/8) Nov 25 2007 Here here! /Raises glass of eggnog/
- Clay Smith (2/7) Nov 25 2007 Please, just let it rest in peace.
- Jeff Nowakowski (17/43) Nov 21 2007 Your posts are almost always thoughtful and refraining from animosity.
- David B. Held (32/65) Nov 23 2007 No matter how wrong you think I was, you have no excuse for claiming my
- Jeff Nowakowski (83/99) Nov 24 2007 You crossed the line from debate to taking an underhanded action. You
- David B. Held (35/75) Nov 25 2007 From my perspective, the thread had left the realm of "debate" long
- Regan Heath (10/13) Nov 19 2007 I prefer to assume the best of people, it generally turns out to be true...
- Jeff Nowakowski (6/10) Nov 19 2007 I agree, and that was my point. Calling somebody a sock puppet in
- Tom S (45/49) Nov 18 2007 And you realize that by stating that the decision was amateurish, you
- Frank Benoit (3/6) Nov 18 2007 very well said tom
- Bill Baxter (14/34) Nov 18 2007 It seems to me the burden should be on the Tango developers here, as the...
- Kris (8/12) Nov 18 2007 Newcomers? Tango has been in development for almost 4 years, Bill. As fo...
- Bill Baxter (20/35) Nov 18 2007 Yes, newcomers. 4 is less than 10. That makes you newcomers relative
- Kris (23/40) Nov 18 2007 Oh that's easy to answer: we understood those to be guidelines only, and...
- Alix Pexton (3/54) Nov 18 2007 Why aren't you listening? it's not "simply stylistic"!
- Kris (3/4) Nov 18 2007 Then I suggest you hop onto IRC and explain it better, please Alix, beca...
- Alix Pexton (4/11) Nov 18 2007 I think it would be better if you just answered your critics concerns op...
- Kris (4/20) Nov 18 2007 Er, why don't you give us some examples, Alix? That's what we'd be askin...
- Christopher Wright (11/34) Nov 19 2007 I'll bite. Why do you use mixedCamelCase for both member variables and
- Sean Kelly (8/22) Nov 19 2007 For member variables, I personally prefix the non-public variables with
- Christopher Wright (2/31) Nov 19 2007 Groovy, thanks.
- Bill Baxter (16/33) Nov 19 2007 I used to be a big 'm_' guy, but I recently started using trailing
- Robert Fraser (2/39) Nov 19 2007 Why do private members need to be differentiated typographically?
- Christopher Wright (13/51) Nov 19 2007 More that they should be differentiated from locals. It's a reminder
- Sean Kelly (7/9) Nov 19 2007 It can increase the clarity of member functions, as a variable prefix
- Walter Bright (4/5) Nov 20 2007 I kinda wonder the same thing. Private members are limited in scope,
- Bill Baxter (7/13) Nov 20 2007 Yes they're limited in scope, but that scope can be pretty much an
- Sean Kelly (8/14) Nov 20 2007 Class implementations occupy more than one screen's worth of text, while...
- =?ISO-8859-1?Q?Julio_C=E9sar_Carrascal_Urquijo?= (13/19) Nov 20 2007 I'm in the m_ camp but I use it to flag the intent not the scope. I want...
- Sean Kelly (7/22) Nov 19 2007 I prefer the "m_" prefix specifically because it is more visible than a
- Bill Baxter (13/35) Nov 19 2007 That's exactly why it's so great. It feels like you're using regular
- Brian Hay (7/12) Nov 19 2007 FWIW I've grown to appreciate the "my" prefix for member variables.
- Bill Baxter (46/76) Nov 18 2007 Yes, I agree. But if the established guidelines work, you might as well...
- Kris (17/54) Nov 18 2007 Tired of it, Bill. Some people will always latch onto something because
- Bill Baxter (5/20) Nov 18 2007 Yep. There are those. But every cogent, well-reasoned argument you
- Kris (6/8) Nov 18 2007 Reply to Bill:
- Bill Baxter (7/21) Nov 18 2007 Look for a thread called "Module naming conventions".
- Kris (4/25) Nov 18 2007 Hrm ... I did look and, apart from some very recent ones from Sean, they...
- Bill Baxter (3/29) Nov 18 2007 So would you like for me to spell it out for you line by line, then?
- Kris (6/36) Nov 18 2007 Please do, Bill. Frankly, I'm tired and weary, and it's entirely possibl...
- Bill Baxter (8/50) Nov 18 2007 Ok. Will do. Maybe part of what you're not getting is that I'm trying
- Kris (6/13) Nov 18 2007 Thanks! I see your list, Bill, and I'll just keep my opinion to myself.
- Don Clugston (17/66) Nov 19 2007 Kris -
- Kris (6/11) Nov 19 2007 Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pas...
- Regan Heath (13/27) Nov 19 2007 You may recall I made the same assumption a few years back until you put...
- Don Clugston (12/25) Nov 19 2007 Perhaps it's not Java at all, but rather "curly brace languages other th...
- Lars Ivar Igesund (8/31) Nov 19 2007 I used to be a C++ programmer, and based on the styles I used then (not
- Kris (27/53) Nov 19 2007 FWIW, I have written mountains of C, so it's not at all unfamiliar to me...
- Kris (3/5) Nov 19 2007 Pardon, Don ... I switched subject lines on you. Replied under "Tango
- Sean Kelly (7/17) Nov 19 2007 I think this is probably true. I am a C++ person myself, and required
- Walter Bright (13/17) Nov 19 2007 I think you've touched on a larger issue. Languages tend to have a look
- Lars Ivar Igesund (9/30) Nov 19 2007 And I have to say again - the C++ libraries I have used all make me more
- Christopher Wright (21/97) Nov 19 2007 Why is that?
- Sean Kelly (5/22) Nov 19 2007 This is why I like deeper hierarchies. I tend to look at the code
- Walter Bright (3/6) Nov 20 2007 I like flatter ones, probably because I'm too lazy to type out the long
- Christopher Wright (20/43) Nov 20 2007 One could argue that you just need better documentation.
- Lars Ivar Igesund (10/38) Nov 20 2007 I think an open source project have it's code browsed very often, and ev...
- Matti Niemenmaa (12/16) Nov 20 2007 Ah, but consider the task of finding the right part of the module. :-)
- Sean Kelly (7/19) Nov 20 2007 I just woke up and your math is confusing me :-) I like two things
- Christopher Wright (4/23) Nov 20 2007 You're saying that having fewer large modules is a direct consequence of...
- Matti Niemenmaa (8/11) Nov 20 2007 You're right, of course. Sorry, don't know where I got that from.
- Sean Kelly (5/31) Nov 20 2007 Certainly. But I've come to accept that the existence of any
- Don Clugston (15/28) Nov 26 2007 Actually, I agree. I advocate shallow heirachies, not deep ones. But a
- Aarti_pl (11/18) Nov 26 2007 Yup. First one is definitely too deep.
- Aarti_pl (10/30) Nov 26 2007 And:
- darrylb (5/25) Nov 26 2007 Ok, I usually just lurk and sit back and eat popcorn while reading the f...
- David Wilson (15/23) Nov 26 2007 I doubt this has anything to do with number of characters typed, at
- darrylb (5/20) Nov 26 2007 Ok, I hear what you're saying, but I think it becomes much less relevant...
- Oskar Linde (26/54) Nov 26 2007 You are probably 100 % right that for a fully rational person those few
- Sean Kelly (44/53) Nov 18 2007 I think some of the reasons may be there already, but the page is broken...
- Bill Baxter (50/104) Nov 18 2007 I agree that deviceconduit is atrocious.
- Sean Kelly (55/104) Nov 18 2007 It's not true of every module, because as you say, not every module
- Bill Baxter (35/59) Nov 18 2007 Asking for a feature where class package.Options.Options can be accessed...
- Walter Bright (18/21) Nov 19 2007 You're right, templates do that, but it's a risky feature because it's
- Jari-Matti =?ISO-8859-1?Q?M=E4kel=E4?= (17/44) Nov 19 2007 You could have made class Foo(T) {} a synonym for anonym template + clas...
- Don Clugston (6/24) Nov 19 2007 Quite true -- the fact that D allows free functions means that Java styl...
- Bill Baxter (4/31) Nov 19 2007 Oh dang, I've been using dsss for so long now that I had blissfully
- Sean Kelly (5/12) Nov 19 2007 Technically, you can, so long as the files are not in the same
- Alix Pexton (6/15) Nov 18 2007 I'll say this here, for want of a better place.
- Janice Caron (13/14) Nov 18 2007 To be honest, I never actually intended to make this version public -
- Janice Caron (10/16) Nov 18 2007 In fact, to be absolutely clear, I didn't start doing this because I
- Alix Pexton (3/22) Nov 18 2007 Regardless of your motivations, I'm sill interested in the results.
- Phango (2/22) Nov 18 2007
- Christopher Wright (23/48) Nov 18 2007 I think it shouldn't be too difficult to arrange an automated system for...
- renoX (11/44) Nov 18 2007 Uh? That's my honest opinion: when contributors add new code in a
- Lars Ivar Igesund (8/15) Nov 18 2007 Indeed, and Tango is quite a different project from Phobos (not counting...
- renoX (16/27) Nov 18 2007 *Sigh*, would you have a look at the big picture please?
- Alix Pexton (3/40) Nov 18 2007 I've not used every part of Phobos, and some parts of it do grate a litt...
- Janice Caron (11/12) Nov 18 2007 I thought camel case was when every word /except/ the first was
- Alix Pexton (3/18) Nov 18 2007 It was my understanding that CamelCase was the catch all term for all sp...
- Janice Caron (3/4) Nov 18 2007 Hey, according to Wikipedia, you're right! Well, you live and learn. I
- Don Clugston (5/10) Nov 19 2007 Yes. It's really unfortunate, because it means that CamelCase = union{
- Robert DaSilva (2/16) Nov 19 2007 How about camelCase?
- Matti Niemenmaa (4/19) Nov 20 2007 The terms I've heard and use are lowerCamelCase and UpperCamelCase.
- Oskar Linde (4/21) Nov 20 2007 Or CamelCase and dromedarCase :)
- Matti Niemenmaa (5/27) Nov 20 2007 Yes, that's another (although isn't it dromedaryCase?). But I don't like...
- Lars Ivar Igesund (15/47) Nov 18 2007 I think it was already said, but we think that for any larger project
- Alix Pexton (7/51) Nov 18 2007 Firstly, I think it quite rude to refer to me by my surname alone, even ...
- Lars Ivar Igesund (13/76) Nov 18 2007 Deeply sorry for this Alix, I usually get such things right, and I don't
- Kris (16/23) Nov 18 2007 Thanks, Alix, for offering an honest perspective. It's a shame that it
- Alix Pexton (21/55) Nov 18 2007 Its not as simple as personal preference, my preferences nor anyone else...
- Kris (23/156) Nov 18 2007 Thanks for your considerable treatment of the subject Alix, but I can't
- Kris (4/6) Nov 18 2007 I suggest you try to answer sean's questions early on in this thread? Th...
- Kris (39/42) Nov 18 2007 Sure, RenoX. I agree completely. But the thing is, Tango was never inten...
- David B. Held (77/90) Nov 18 2007 I think it's always worthwhile to look back on the work of others who
- Kris (9/34) Nov 18 2007 Appreciate the insights, Dave, and respect your opinion. However, you'r...
- Alix Pexton (5/41) Nov 18 2007 Well, I went on IRC, through a sleepy haze I think I managed to get my c...
- Lutger (15/15) Nov 19 2007 David B. Held wrote:
- Sean Kelly (7/18) Nov 16 2007 Andrei and Brad Roberts are working on Phobos 2.0 in various capacities....
I've started to like Tango, now that I've got bits of it working with Phobos :-) With a bit of kludging, I've persuaded all of the examples in the "console" and "text" directories to build with Phobos using DMD 2.007. Of the examples files, only "properties.d" needed to be tweaked slightly - and that was just to replace "char[]" with "string". I think I'll attack the "conduits" folder next. Anyway, someone tell me - does Tango have containers? If so, are there any examples of use in the "examples" folder of the Tango download? I couldn't find any.
Nov 15 2007
"Janice Caron" <caron800 googlemail.com> wrote in message news:mailman.70.1195164582.2338.digitalmars-d puremagic.com...I've started to like Tango, now that I've got bits of it working with Phobos :-) With a bit of kludging, I've persuaded all of the examples in the "console" and "text" directories to build with Phobos using DMD 2.007. Of the examples files, only "properties.d" needed to be tweaked slightly - and that was just to replace "char[]" with "string". I think I'll attack the "conduits" folder next. Anyway, someone tell me - does Tango have containers? If so, are there any examples of use in the "examples" folder of the Tango download? I couldn't find any.http://www.dsource.org/projects/tango/docs/current/ is useful indeed. Yes, there are containers, in tango.util.collection.
Nov 15 2007
On 11/15/07, Jarrett Billingsley <kb3ctd2 yahoo.com> wrote:I don't want docs, I want example source code. I want something I can compile, with tests to prove it's all working. Is there not a test-suite handy?Anyway, someone tell me - does Tango have containers? If so, are there any examples of use in the "examples" folder of the Tango download? I couldn't find any.http://www.dsource.org/projects/tango/docs/current/ is useful indeed. Yes, there are containers, in tango.util.collection.
Nov 15 2007
I don't want docs, I want example source code. I want something I can compile, with tests to prove it's all working. Is there not a test-suite handy?http://www.dsource.org/projects/tango/wiki/ChapterStorage and all the snippets are here examples/manual/chapterStorage.d
Nov 15 2007
On 11/15/07, Frank Benoit <keinfarbton googlemail.com> wrote:and all the snippets are here examples/manual/chapterStorage.dThat's what I was looking for! Great! :-) The folder name ("manual") didn't really make it obvious what was in it. Guess I'll attack that one next.
Nov 15 2007
On 11/15/07, Janice Caron <caron800 googlemail.com> wrote:That was easy! Obviously, chapterstorage.d was not written for D2+, so I had to change all the char[]s into strings in that file. Anyway, all I had to do was change char[] into string in the source files, except in toUpper and toLower, and guess what - it compiled without complaint, and runs perfectly. Woo hoo!examples/manual/chapterStorage.dThat's what I was looking for! Great! :-) The folder name ("manual") didn't really make it obvious what was in it. Guess I'll attack that one next.
Nov 16 2007
On Fri, 16 Nov 2007 12:46:24 +0000 "Janice Caron" <caron800 googlemail.com> wrote:Obviously, chapterstorage.d was not written for D2+, so I had to change all the char[]s into strings in that file.As you might know already or at least have guessed - since there's an experimental Tango /branch/ for D 2.x -, Tango is D 1.x only, right now. So it'd be pretty weird to write the reference manual of Tango for D 2.x. :) -- Alexander Panek <alexander.panek brainsware.org>
Nov 16 2007
I dunno if you'd consider this a bug in tango.io.filepath.parse(), but the example program filepathname.d looks like this: void main(){ Cout ((new FilePath(r"d:\path\foo.bat")).name).newline; Cout ((new FilePath(r"d:\path.two\bar")).name).newline; Cout ((new FilePath("/home/user.name/bar.")).name).newline; Cout ((new FilePath(r"d:\path.two\bar")).name).newline; Cout ((new FilePath("/home/user/.resource")).name).newline; } And (on Windows) emits the following output - at least, on my ported version: foo bar /home/user.name/bar bar /home/user/ I think I understand what's going on here. The slash in the third and fifth examples is being (incorrectly) regarded as a component character, instead of a path separator, so it thinks "/home/user/" is the file part and "resource" the extension. Yes, I know there's a flag in the constructor which converts "\" to "/", and that that flag wasn't set in this example, BUT... In Windows, "\" and "/" are BOTH acceptable as file separators. As far as fopen() is concerned, they are interchangable. If you open "/home/user/.resource" you'll get exactly the same file as had you opened "\home\user\.resource". This isn't true in a Windows (Command Prompt) shell, however, even there, "/" is not a valid character for use in filenames. In fact, all of the characters \ / : * ? " < > and | are prohibited from being used in filenames. I feel that the filepath.parse routine really should understand how pathnames actually work on Windows. Sure, if the native flag is set, then convert / to \. But even if that doesn't happen, parse() should recognise both \ and / as pathname separators, and should throw an exception if an illegal character is used in a pathname. If there are no objections, I plan to "fix" this in my local copy, and I can certainly post the fix for you, in case you should want to incorporate it into the real Tango.
Nov 16 2007
"Janice Caron" wroteI dunno if you'd consider this a bug in tango.io.filepath.parse(), but the example program filepathname.d looks like this: ...Register at dsource: http://www.dsource.org/forums/profile.php?mode=register File a ticket on tango: http://www.dsource.org/projects/tango/newticket. It's actually a pretty nice system, and the developers are very responsive. -Steve
Nov 16 2007
"Janice Caron" wroteI've started to like Tango, now that I've got bits of it working with Phobos :-) With a bit of kludging, I've persuaded all of the examples in the "console" and "text" directories to build with Phobos using DMD 2.007. Of the examples files, only "properties.d" needed to be tweaked slightly - and that was just to replace "char[]" with "string".Just an FYI, some of us are working on a D 2.x compatible version of Tango. Basically the hard part is adding const. It's not release-ready yet, but I'm hoping once Walter has fixed const, we should be able to finish the port. Of course, it does not use Phobos... But hopefully that problem will be solved soon also. -Steve
Nov 15 2007
On 11/15/07, Steven Schveighoffer <schveiguy yahoo.com> wrote:Just an FYI, some of us are working on a D 2.x compatible version of Tango.Yeah, well that's kind of what I did. I took the source in the "tango" dir (i.e. not the "std" dir, not "object.d"), and then did foreach(example) while(does not compile) fix_first_error()Basically the hard part is adding const.I noticed. I liberally added const and invariant everywhere I could get away with it. It takes some fine tuning to get it right. D strings are invariant now, so I had to throw in some idups in places where I couldn't prove to myself that the original was actually unique. I also changed toUtf to toString, and changed all the module names to lowercase.It's not release-ready yet, but I'm hoping once Walter has fixed const, we should be able to finish the port.I'm working with 2.007. I assume it will be not too hard to upgrade.Of course, it does not use Phobos...Mine does. I specifically do not use Tango's object.d, nor anything in Tango's std. I'm importing phobos and my bastardised version of Tango simultaneously. It's actually quite fun.
Nov 15 2007
On Thu, 15 Nov 2007 23:09:55 +0000 "Janice Caron" <caron800 googlemail.com> wrote:Actually, the core of Tango is in tango.core - the std/ folder is just there because DMD requires the intrinsic module to be there, IIRC. Just curious: why don't you use Tango and the freestanding functions of Phobos (AFAIK most of them interface with C, anyways - which can be done in Tango, too, of course)? I suppose that would be less work to achieve the same goal (oh, and btw, you'll have a less buggy runtime.. /me hides.) Kind regards -- Alexander Panek <alexander.panek brainsware.org>Of course, it does not use Phobos...Mine does. I specifically do not use Tango's object.d, nor anything in Tango's std. I'm importing phobos and my bastardised version of Tango simultaneously.
Nov 15 2007
On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:Actually, the core of Tango is in tango.coreYeah, I've tweaked my copies of several of files in core already.- the std/ folder is just there because DMD requires the intrinsic module to be there, IIRC.I didn't understand that, but hey ho. In any case, the original Phobos std is still there in my case.Just curious: why don't you use Tango and the freestanding functions of PhobosLot of reasons. (1) If an engine ain't broke, don't fix it. (2) I like D2.007, and I'll be switching to D2.008 the day it comes out. (3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos. (4) Walter has been doing this for seven years or whatever, and has earned my greatest respect. Ripping out the innards of D scares the shit out of me - and not only that, I see no reason why I should have to. This way, I get to use the latest cutting-edge version of D, I can make all the module names lowercase (yes, that matters!), and though things like Stdout(x).newline compile and run, I don't have to use them - I'll be able to throw in nicer looking functions that do the same thing.
Nov 16 2007
I thought we agreed that this should be called "Phandango". :-) --bb
Nov 16 2007
On 11/16/07, Bill Baxter <dnewsgroup billbaxter.com> wrote:I thought we agreed that this should be called "Phandango". :-)Well, there isn't really an "it". I was actually getting this working just for me. I wasn't planning on uploading it anywhere because the /real/ Tango is being made Phobos compatible, as I understand it, and we should all just wait for that. Anyone who's impatient could do what I did, I guess, or maybe I could show my source anyway, but I make no claims that it's in any way "official". As for the name, it is the work of /seconds/ to search and replace, and name it anything you want.
Nov 16 2007
On Fri, 16 Nov 2007 08:17:42 +0000 "Janice Caron" <caron800 googlemail.com> wrote:On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:My apologies - ... tweaked?Actually, the core of Tango is in tango.coreYeah, I've tweaked my copies of several of files in core already.As said - you could as well put the Phobos sources into Tango's std folder and *tweak* those.- the std/ folder is just there because DMD requires the intrinsic module to be there, IIRC.I didn't understand that, but hey ho. In any case, the original Phobos std is still there in my case.I think there are people who definitely wouldn't agree on that. But I am not in the qualified position to argue about that.Just curious: why don't you use Tango and the freestanding functions of PhobosLot of reasons. (1) If an engine ain't broke, don't fix it.(3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos.No comment on that.(4) Walter has been doing this for seven years or whatever, and has earned my greatest respect. Ripping out the innards of D scares the shit out of me - and not only that, I see no reason why I should have to.It scares you? Why?This way, I get to use the latest cutting-edge version of D, I can make all the module names lowercase (yes, that matters!), and though things like Stdout(x).newline compile and run, I don't have to use them - I'll be able to throw in nicer looking functions that do the same thing.You know, there's still printf in tango.stdc.stdio ..... just in case. :P -- Alexander Panek <alexander.panek brainsware.org>
Nov 16 2007
On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:On Fri, 16 Nov 2007 08:17:42 +0000 "Janice Caron" <caron800 googlemail.com> wrote:Well yeah. As I said at the start of this thread, what I did was: foreach(example) while(does not compile) fix_first_error() So if the compiler tells me that A won't cast to B because of some invariant issue or some-such, then I modified the source in the offending file. If that happened to be tango.core (actually I renamed it phango.core to avoid confusion) then so be it.On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:My apologies - ... tweaked?Actually, the core of Tango is in tango.coreYeah, I've tweaked my copies of several of files in core already.As said - you could as well put the Phobos sources into Tango's std folder and *tweak* those.As I mentioned, I did not copy tango's std folder at all. I am doing without it. I am not interested in messing around with D's standard library (Phobos) in any way. In fact, I sometimes have had to call on its services (e.g. std.contracts.assumeUnique()) to get things to compile.It scares you? Why?Because it might stop something upon which I already rely from workingYou know, there's still printf in tango.stdc.stdio ..... just inTrue. But that's not really an issue for what I'm doing. If I can be bothered, I might find a way to add cout.writefln() and stdout.writefln() or whatever, to give me Phobos syntax with Tango's streams. But right now I've still got Phobos's writef() and writefln() functions at my disposal, so I'm perfectly happy. Besides ... printf()? Now there's a function that really should be deprecated!
Nov 16 2007
Janice Caron wrote:On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:So do you have a /std directory at all? I would hope so, or some portions of Tango won't work. The instrinsic functions, for example, must have a mangled name that begins with "std". This is unfortunate, but what can you do. SeanAs said - you could as well put the Phobos sources into Tango's std folder and *tweak* those.As I mentioned, I did not copy tango's std folder at all. I am doing without it.
Nov 16 2007
On 11/16/07, Sean Kelly <sean f4.ca> wrote:I have Phobos's std directory. It is completely unchanged and intact. (And obviously it will be updated the moment D2.008 comes along).As I mentioned, I did not copy tango's std folder at all. I am doing without it.So do you have a /std directory at all?I would hope so, or some portions of Tango won't work.Given that I have (a now modified copy of) the source code, and the power and ability to change it. I can make anything work.The instrinsic functions, for example, must have a mangled name that begins with "std".None of the examples I've got working have given me this problem so far, but I'm fair sure that if something doesn't work, I can just change the source until it does.
Nov 16 2007
Janice Caron wrote:On 11/16/07, Sean Kelly <sean f4.ca> wrote:Oh, that's fine then. The /std directory included with Tango just contains cleaned-up copies of the Phobos files Tango needs. SeanI have Phobos's std directory. It is completely unchanged and intact. (And obviously it will be updated the moment D2.008 comes along).As I mentioned, I did not copy tango's std folder at all. I am doing without it.So do you have a /std directory at all?
Nov 16 2007
Janice Caron wrote:On 11/16/07, Alexander Panek <alexander.panek brainsware.org> wrote:Not to plug the Tango engine, but it does actually fix a number of bugs which are listed in the D bug tracker and have not been fixed in Phobos.Just curious: why don't you use Tango and the freestanding functions of PhobosLot of reasons. (1) If an engine ain't broke, don't fix it.(2) I like D2.007, and I'll be switching to D2.008 the day it comes out. (3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos.I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point. The mixed case module names help make multi-word names more readable and also help distinguish from directories, which is an advantage in such a large library. The C module names have been left lowercase to match the original C names and to provide a visual distinction between the API layer and Tango.(4) Walter has been doing this for seven years or whatever, and has earned my greatest respect. Ripping out the innards of D scares the shit out of me - and not only that, I see no reason why I should have to.For what it's worth, the Tango core is based on Ares, which began as a project perhaps four years ago (I've lost track). So the Tango runtime isn't perhaps quite as new as it may seem.This way, I get to use the latest cutting-edge version of D, I can make all the module names lowercase (yes, that matters!), and though things like Stdout(x).newline compile and run, I don't have to use them - I'll be able to throw in nicer looking functions that do the same thing.This is what wrapper functions are for, in my opinion. But then Tango was created because of a dissatisfaction with Phobos, so I can't really object to a dissatisfaction with Tango ;-) Sean
Nov 16 2007
Sean Kelly wrote:Janice Caron wrote:Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).(3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos.I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Nov 18 2007
Walter Bright wrote:Sean Kelly wrote:As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoJanice Caron wrote:Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).(3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos.I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Nov 18 2007
Lars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be aI believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
Nov 18 2007
torhu wrote:Lars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be >> aYes, I see his point. My point is that there is no difference from having that as a rule, and CamelCased module names as a rule :) In both cases you need to adhere to it. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoI believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
Nov 18 2007
torhu wrote:Lars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be aThere is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bbI believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
Nov 18 2007
Bill Baxter wrote:torhu wrote:Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful. I'd like to turn your argument the other way round: If you do import package.Foo; then it make a lot of sense that you can just use your class Foo. I understand that this may have been uncommon for those coming from C, but I know of several C++ libraries (Object oriented) using header files with capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't always this way, but changed with version 4. OI I think always did this, and it is 15+ years old. Indeed, its top level package is "Inventor"! FWIW, I think SGI and TrollTech is two of very few companies that have created truly good library API's in C++. weirdly enough disregarded in this debate. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoLars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be >> aThere is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bbI believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
Nov 18 2007
Lars Ivar Igesund wrote:Bill Baxter wrote:Ok, but then the most obvious name for the renamed import is the last component of the dot-separated module name: import Foo = Package.Name.Too.Long.Foo; ... Foo.Foo Of course you could rename the module lower-case 'foo', but you could also just have named it in lowercase from the beginning. Or you could come up with some other convention. But anyway, I agree that in Tango the package names are so long that static import is impractical. But for other libraries that's not the case, and I think what a lot of people are after here is a convention that's universally applicable. I use static import all the time in my code because Phobos' flatter naming works well with that, and my own code also is usually only 1 or 2 levels deep. But I also use renamed and selective imports too, depending how much stuff I plan to use from the module. [As an aside I really wish I could do renamed and selective importing on one line, like import mod=some.long.module : Foo, Bar; ] Saying "don't use static import" isn't a very strong argument for the Tango naming convention in my opinion.torhu wrote:Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful.Lars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be >> aThere is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name. --bbI believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.I'd like to turn your argument the other way round: If you do import package.Foo; then it make a lot of sense that you can just use your class Foo.If that were the only way to do imports in D, then that would make a lot of sense. But we also have static, renamed, and selective imports and their use should be encouraged. They help keep the top-level namespace clean, and help make code more readable by specifying explicitly where symbols are coming from.I understand that this may have been uncommon for those coming from C, but I know of several C++ libraries (Object oriented) using header files with capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't always this way, but changed with version 4. OI I think always did this, and it is 15+ years old. Indeed, its top level package is "Inventor"! FWIW, I think SGI and TrollTech is two of very few companies that have created truly good library API's in C++.The comparison with C++ is not valid because in C++ namespaces and file names are decoupled. So in C++ something like #include<Package/SubPackage/ClassName.h> will generally put the ClassName into the Package::SubPackage namespace. Or sometimes just the Package namespace. I've never seen anyone create a Package::SubPackage::ClassName namespace to enclose a class called ClassName. But in D you don't have a choice. The full path always becomes part of the namespace.weirdly enough disregarded in this debate.I don't remember enough about how Java imports worked to comment, and --bb
Nov 18 2007
Bill Baxter wrote:Lars Ivar Igesund wrote:I think it does? At least I think the spec allows it.Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful.Ok, but then the most obvious name for the renamed import is the last component of the dot-separated module name: import Foo = Package.Name.Too.Long.Foo; ... Foo.Foo Of course you could rename the module lower-case 'foo', but you could also just have named it in lowercase from the beginning. Or you could come up with some other convention. But anyway, I agree that in Tango the package names are so long that static import is impractical. But for other libraries that's not the case, and I think what a lot of people are after here is a convention that's universally applicable. I use static import all the time in my code because Phobos' flatter naming works well with that, and my own code also is usually only 1 or 2 levels deep. But I also use renamed and selective imports too, depending how much stuff I plan to use from the module. [As an aside I really wish I could do renamed and selective importing on one line, like import mod=some.long.module : Foo, Bar; ]Saying "don't use static import" isn't a very strong argument for the Tango naming convention in my opinion.Never liked static imports :P The static keyword is probably part of that :)enough. Java however requires module names to equal class names, whether they are lowercased or CamelCased. I may agree that such comparisons possibly aren't entirely applicable though, considering modules in D are much more important than in those languages. They are encapsulated entities themselves after all. Which, if used as such, would imply that casing should be the same as for classes and structs. I'll accept this match to end with a remis though, so I can stop posting about this :) -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoI'd like to turn your argument the other way round: If you do import package.Foo; then it make a lot of sense that you can just use your class Foo.If that were the only way to do imports in D, then that would make a lot of sense. But we also have static, renamed, and selective imports and their use should be encouraged. They help keep the top-level namespace clean, and help make code more readable by specifying explicitly where symbols are coming from.I understand that this may have been uncommon for those coming from C, but I know of several C++ libraries (Object oriented) using header files with capitalized names, Qt and Coin3D (Open Inventor) comes to mind. Qt wasn't always this way, but changed with version 4. OI I think always did this, and it is 15+ years old. Indeed, its top level package is "Inventor"! FWIW, I think SGI and TrollTech is two of very few companies that have created truly good library API's in C++.The comparison with C++ is not valid because in C++ namespaces and file names are decoupled. So in C++ something like #include<Package/SubPackage/ClassName.h> will generally put the ClassName into the Package::SubPackage namespace. Or sometimes just the Package namespace. I've never seen anyone create a Package::SubPackage::ClassName namespace to enclose a class called ClassName. But in D you don't have a choice. The full path always becomes part of the namespace.weirdly enough disregarded in this debate.I don't remember enough about how Java imports worked to comment, and
Nov 18 2007
It is interesting to see how such a trivial thing as the capitalization of module names can lead to a much more involved discussion than any of Tango's technical merits ever have (possibly with one exception). It is somewhat like making a choice between two equipment manufacturers from the colors they use on the buttons. But form and style seems to be of undervalued importance, and maybe there is more to this issue than it appears. Either way, I cannot refrain from writing something about it too. :) Lars Ivar Igesund wrote:Using fully qualified class names are very seldom necessary in D, I find using renaming imports are much more useful. I'd like to turn your argument the other way round: If you do import package.Foo; then it make a lot of sense that you can just use your class Foo.What says that the module package.Foo contains a class named Foo? Most of my own modules contain no classes at all, and many that do contain more than one class. I know that (with different qualifiers), that is true for Tango as well. I wouldn't encourage module renaming, at least not without guidelines for how things should be renamed. Lots of people making up their own custom abbreviations for the same long module names can't lead to something good. I am personally quite fond of using FQN (fully qualified names) in certain situations, but names such as tango.util.collection.iterator.InterleavingIterator.InterleavingIterator make that a tad inconvenient. :) Three design choices in Tango seem to be: * deep rather than shallow package hierarchy * descriptive rather than abbreviated package names * highly fragmented modules In some ways, I tend to feel those three points are misdirected, or at least taken a bit too far. What are the reasons for dividing things into modules? First and foremost, functionally independent parts should be separated so that one can be replaced or used independent of the others. Secondly, there are some issues with compile times and object file sizes, and the third reason is convenience for the implementors. The reasons mentioned are in descending order of importance. A library should always be designed for its users, rather than for its implementers. We humans, psychologically, tend not to be very hierarchical in our categorization of the world. There is a basic level of categorization that is the one most readily named and first learned (bird, cat, car). The function of a categorization should be to provide the maximum amount of information with the least amount of cognitive effort. The more fine grained a categorization is, the more cognitive effort is needed. The conclusion is that it would be cognitively advantageous to only separate library entities into different modules if there is a relevant reason to do so (for the purposes at hand). I believe shallow hierarchies generally are better than deep, and also that there should be a functional rather than logical separation between packages. So, instead of: tango.util.collection.iterator.InterleavingIterator couldn't there just be: tango.collection.iterators or perhaps even: tango.collection An interesting parallel is the taxonomy of plants and animals from the 18th century. The Linnaean taxonomy is a highly hierarchical classification, where for instance the common snowdrop is classified as: Plantae.Magnoliophyta.Liliopsida.Asparagales.Amaryllidaceae. Galanthus.nivalis But such names were considered too unwieldy to use in full, so a concise binomial nomenclature was used as a supplement. The same snowdrop as above in binomials is just: Galanthus.nivalis Regarding capitalized module names: As far as I see it, there are entities (functions, classes, etc) and modules (std.string, tango.text.convert.Format). I don't really see the point of making a distinction between modules and packages, and therefore can't really see a point in capitalizing the last part of the module name only. But on the other hand, there is a precedent in the binomials above -- only the other way around. :)weirdly enough disregarded in this debate.Java (more or less) forces file names to be identical to the sole public class in them. There are no modules in java, just classes, and since classes are capitalized, so are the file names. To end, I think it speaks very highly of Tango that the only issues being actively debated are the purely stylistic ones. -- Oskar
Nov 18 2007
Oskar Linde wrote:To end, I think it speaks very highly of Tango that the only issues being actively debated are the purely stylistic ones.It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok. However, silence is the worst case <g>. It means nobody has even looked at it.
Nov 19 2007
On 11/19/07, Walter Bright <newshound1 digitalmars.com> wrote:Oskar Linde wrote:http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTINGTo end, I think it speaks very highly of Tango that the only issues being actively debated are the purely stylistic ones.It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok.However, silence is the worst case <g>. It means nobody has even looked at it.
Nov 19 2007
David Wilson wrote:On 11/19/07, Walter Bright <newshound1 digitalmars.com> wrote:Spot on.Oskar Linde wrote:http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTINGTo end, I think it speaks very highly of Tango that the only issues being actively debated are the purely stylistic ones.It's normal for easily understood issues to get a lot more comments than the ones that need more work to grok.
Nov 19 2007
Oskar Linde wrote:I believe shallow hierarchies generally are better than deep, and also that there should be a functional rather than logical separation between packages. So, instead of: tango.util.collection.iterator.InterleavingIterator couldn't there just be: tango.collection.iterators or perhaps even: tango.collectionOne problem with shoving all iterators into one module is the way the protection specifiers work in D. As you probably know, private and co are module-level. This means that InterleavingIterator and TropicalJungleIterator, while completely distinct, can access each other's privates! The fact that they are in different modules thus accentuates their independence of each other. If protection specifiers worked as they do in C++ (and, as a matter of fact, in just about every other language I know of that implements such a feature), then a "tango.collection.iterators" package would make more sense. As it is, putting two classes into the same module suggests that they are tightly coupled and, at least to me, that they do access each other's private members. Plus, especially a general-purpose module such as "tango.collection" would grow to thousands of lines in length. This would make it a pain to code in, but there are also issues for the user. For instance, the automatically generated DDoc would also be exceedingly long and would have to manually be separated into coherent parts. I do agree that the "tango.util.collection" package should be just "tango.collection", though. :-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
I actuallBill Baxter wrote:torhu wrote:I actually think both package.foo.Foo and package.Foo.Foo look bizarre. I've always disliked this part of D. In that light, I think it really is more a shortcoming of the way D does namespaces. Tango just tries to work around this (for good or bad... there's seems little choice in the matter: I believe tango developers and others haggled over this and other issues long and hard in the past: it wasn't an easy decision). I'm not sure what might be a good solution to these problems without "fixing" D. Maybe a more C++ style (horrors!! did I say that?!) would be useful in differentiating module namespace from class? I'm not sure... but that would mean a another D spec change: such as package.foo::Foo as a reference to class Foo (or whatever other symbol one wants to specify) or package.foo:: as an implied reference to whatever symbol has the same name as module name... in this case "foo". If module name "Foo" is capitalized, therefore, the class or symbol with "Foo" would be selected. Just some thoughts, JohnLars Ivar Igesund wrote: >> Mixed case package/module names are avoided because there needs to be aThere is another issue. Often a module has basically only one main class in it. If the main class is called Foo, and that's all that's in the module, some version of "Foo" is the logical name for the package too. But then if you use fully qualified names you end up with Package.Foo.Foo when referring to the class in the module, which just look *so* silly that it's easy to forget the second Foo. But package.foo.Foo looks more reasonable, since it's clear the second to last "foo" is not a class name.I believe Walter's point is that "all package and module names are lower case" is a simple rule that will help us avoid this problem, given that everyone does their best to adhere to the rule. I don't know how much it matters, since I've never run into the problem myself. But I just tried it, and it shouldn't be hard to track down the problem based on the compiler's error messages. Not a big deal either way, it seems.1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).As I said elsewhere in the thread, other FS _are_ case sensitive, and thus you need to be aware of which case you use in either case, rendering the argument moot. Early on in D history, I encountered several cases of modules being saved on Windows, then not working on Linux with their intended module names due to this. And this can only happen if the Windows programmer typed in a file name with upper case letters, even though the module name was all lower case.
Nov 18 2007
John Reimer wrote:John, it's great to see you back! I feared you were gone forever. - Don.
Nov 20 2007
Don Clugston wrote:John Reimer wrote:Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, JohnJohn, it's great to see you back! I feared you were gone forever. - Don.
Nov 20 2007
John Reimer wrote:Don Clugston wrote:*sigh* Looking over this thread, I am reminded of the major reason that I left in the first place (of course, I was partly responsible for it last time). :-( Human nature is so ugly.John Reimer wrote:Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, JohnJohn, it's great to see you back! I feared you were gone forever. - Don.
Nov 21 2007
John Reimer wrote:John Reimer wrote:Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here. -Don.Don Clugston wrote:*sigh* Looking over this thread, I am reminded of the major reason that I left in the first place (of course, I was partly responsible for it last time). :-( Human nature is so ugly.John Reimer wrote:Don, You are too kind. :-) I almost figured I was gone for good too, but it's hard to stay away from the techy side of life for too long... and D is smack in the center of it. Life has been very busy, especially because I'm now apprenticing in log home construction (www.pioneerloghomesofbc.com) ... a welcome change from paramedic work (yes, a very unusual change in employment yet fascinating, nonetheless; it's great to have the opportunity to pick up these kind of skills). Anyway, due to winter finally setting in, my work hours are shorter. Thus, I've managed a time-slice for D lurking again among other things (and hopefully a continuation of some documentation effort). :-D It's great to see the rapid growth that's been happening around D. Looks like you have been as creative and productive as ever. ;-) More exciting things to come from your end, I can only imagine. Great to hear from you too, Don. :-) Take care, JohnJohn, it's great to see you back! I feared you were gone forever. - Don.
Nov 21 2007
Don Clugston wrote:John Reimer wrote:Yup. John has always been a valuable member of the D community. I was very disappointed to see him leave, though I can understand why one would not want to deal with the drama. SeanHuman nature is so ugly.Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here.
Nov 21 2007
"Sean Kelly" <sean f4.ca> wrote in messageDon Clugston wrote:Yeah, I fully agree. Good to see him back here!John Reimer wrote:Yup. John has always been a valuable member of the D community. I was very disappointed to see him leave, though I can understand why one would not want to deal with the drama.Human nature is so ugly.Indeed. Your brief exit message on Tango was painful to read. "Bad advertisement for D" as you deleted your name. Ouch. Especially since it was a post by you (on a C++ ng I think) that made me give D a chance in the first place. That's why I'm here.
Nov 21 2007
John Reimer wrote:*sigh* Looking over this thread, I am reminded of the major reason that I left in the first place (of course, I was partly responsible for it last time). :-( Human nature is so ugly.Fortunately, with usenet, not being a part of the discussion is as simple as "mark all read." Sean
Nov 21 2007
Walter Bright wrote:Sean Kelly wrote:The only way to solve this is to have the DMD frontend do case-insensitive matching of imports. As it stands, I should be able to say 'import STD.STDIO;' on Windows/ntfs and have it work, but have it fail when using ext3. (I don't have a copy of Windows, so I can't check; and I don't feel like making a case-insensitive fs on my machine right now. I don't think you put in an explicit check for accurate case, since if you typed in a command line 'cd phobos/StD/', Windows might update the case of the folder name.) This would have a minor benefit of allowing people using tango to write 'import tango.io.stdout;', but using a standard convention also works decently. It's just that different projects use different conventions, and I can't use both in my project because of the case insensitive file systems.Janice Caron wrote:Mixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).(3) I hate Tango, stylisticly. I hate the mixed case module names, and the mixed case global variable names (e.g. Stdout). I want everything to look and feel like Phobos.I'm not a huge fan of the mixed case global variable names either, but it does help them stand out, which I think is the point.
Nov 18 2007
Christopher Wright wrote:Walter Bright wrote:import StD.sTdIo; void main() { writefln("hello world"); } Compiles and runs on Windows. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fiMixed case package/module names are avoided because there needs to be a 1:1 correspondence between file names and package/module names, and not all file systems are case sensitive (like FAT32 and NTFS, for a couple widely used examples).The only way to solve this is to have the DMD frontend do case-insensitive matching of imports. As it stands, I should be able to say 'import STD.STDIO;' on Windows/ntfs and have it work, but have it fail when using ext3. (I don't have a copy of Windows, so I can't check; and I don't feel like making a case-insensitive fs on my machine right now. I don't think you put in an explicit check for accurate case, since if you typed in a command line 'cd phobos/StD/', Windows might update the case of the folder name.) This would have a minor benefit of allowing people using tango to write 'import tango.io.stdout;', but using a standard convention also works decently. It's just that different projects use different conventions, and I can't use both in my project because of the case insensitive file systems.
Nov 18 2007
Steven Schveighoffer wrote:"Janice Caron" wroteThe const stuff is changing significantly (for the much better, I hope), so be prepared to do another pass over it if you are adapting it to const. I've found the necessary changes to the source to be simple to do (and they are flagged by the compiler), so it shouldn't be a problem.I've started to like Tango, now that I've got bits of it working with Phobos :-) With a bit of kludging, I've persuaded all of the examples in the "console" and "text" directories to build with Phobos using DMD 2.007. Of the examples files, only "properties.d" needed to be tweaked slightly - and that was just to replace "char[]" with "string".Just an FYI, some of us are working on a D 2.x compatible version of Tango. Basically the hard part is adding const. It's not release-ready yet, but I'm hoping once Walter has fixed const, we should be able to finish the port. Of course, it does not use Phobos... But hopefully that problem will be solved soon also.
Nov 18 2007
Janice Caron Wrote:I've started to like Tango, now that I've got bits of it working with Phobos :-)This reminds me... Walter and the Tango team agreed to make their libraries compatible with each other. Along those lines, what's the plans/status of that? I suspect there may even be different plans/status for D 1.x and D 2.x.
Nov 16 2007
Jason House wrote:Janice Caron Wrote:D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change much, if at all. D 2.0 is obviously still in flux, and Phobos 2.0 has already incorporated some of Tango's changes. It is uncertain what the final result of the merge will be for D 2.0, but from a code perspective it is more likely that Phobos 2.0 will end up effectively using the Tango runtime than vice-versa. This is because everyone seems to agree that the Tango runtime is a bit more robust. SeanI've started to like Tango, now that I've got bits of it working with Phobos :-)This reminds me... Walter and the Tango team agreed to make their libraries compatible with each other. Along those lines, what's the plans/status of that? I suspect there may even be different plans/status for D 1.x and D 2.x.
Nov 16 2007
Sean Kelly Wrote:D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change much, if at all. D 2.0 is obviously still in flux, and Phobos 2.0 has already incorporated some of Tango's changes. It is uncertain what the final result of the merge will be for D 2.0, but from a code perspective it is more likely that Phobos 2.0 will end up effectively using the Tango runtime than vice-versa. This is because everyone seems to agree that the Tango runtime is a bit more robust.I translate that to mean that the merge of Tango and Phobos relies on the Phobos developers to do the work. Is Phobos being actively matured? My previous impression is that Walter was doing both that and compiler internals... with most time dedicated to the latter. Is there a timeline when 2.0 versions of phobos and tango will be compatible? How will the pieces be partitioned? Will tango be released with new dmd versions? Will both libraries adopt the same style (naming conventions, capitalization, etc...)?Sean
Nov 16 2007
On 11/16/07, Jason House <jason.james.house gmail.com> wrote:Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 16 2007
Janice Caron wrote:On 11/16/07, Jason House <jason.james.house gmail.com> wrote:You understand that that would mean Phobos gaining Tango's style? -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoWill both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase. Tango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase. I kid you not - if Tango used "normal" case conventions, it would have a lot more adherents. In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.) Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
Janice Caron wrote:On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVoteI kid you not - if Tango used "normal" case conventions, it would have a lot more adherents.This seems a bit extreme. The only variables I can think of in Tango are Stdin, Stdout, and Stderr. And these could easily be aliased to something else if the user finds the names offensive.In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.)You may run into conflicts with the C file handle of the same name.Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.Please suggest an alternate formatting style and explain why it is better. Sean
Nov 17 2007
On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:Janice Caron wrote:Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists. -- Derek Parnell Melbourne, Australia skype: derek.j.parnellOn 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
Derek Parnell wrote:On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:When one thinks the file system is case insensitive, it is easy creating files that breaks the compile on a system where the FS is case sensitive, so IMO not a very strong argument. It can be equally useful to have the creators aware of the casing used. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoJanice Caron wrote:Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists.On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
Hiya Derek, It's probably worth pointing out that millions of Java developers don't have the issue you note? I mean, if it were an issue, we'd surely have heard about it years ago? - Kris "Derek Parnell" <derek psych.ward> wrote in message news:x2bmtq679an5$.1sopa9nv1qrgk$.dlg 40tude.net...On Sat, 17 Nov 2007 14:07:56 -0800, Sean Kelly wrote:Janice Caron wrote:Windows file system is case insensitive therefore it is easy to cause 'can't find module' type errors even though the file exists. -- Derek Parnell Melbourne, Australia skype: derek.j.parnellOn 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
Kris wrote:Hiya Derek, It's probably worth pointing out that millions of Java developers don't have the issue you note? I mean, if it were an issue, we'd surely have heard about it years ago?The compiler will distinguish modules Foo and foo as being different, but the filesystem won't. Does it cause problems? See http://mindprod.com/jgloss/casesensitive.html Evidently it does come up as an issue: http://gcc.gnu.org/ml/java/2002-03/msg00334.html As for me, I've routinely ported code between filesystems that had all kinds of varying support for case. What works best is naming files with all lower case - then things port smoothly without problems. Why have potential problems when they are so easily avoided? A further reason is that having case conventions for different kinds of symbols aids in reading the code (and even catching errors). Having module names use a different form than class names, for example, just helps. Not a whole lot, but why not take it? And in the end, the Tango team can use whatever conventions they want to.
Nov 18 2007
Sean Kelly a écrit :Janice Caron wrote:Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoXOn 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVoteI kid you not - if Tango used "normal" case conventions, it would have a lot more adherents.This seems a bit extreme. The only variables I can think of in Tango are Stdin, Stdout, and Stderr. And these could easily be aliased to something else if the user finds the names offensive.In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.)You may run into conflicts with the C file handle of the same name.Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.Please suggest an alternate formatting style and explain why it is better. Sean
Nov 17 2007
renoX wrote:Sean Kelly a écrit :What if that convention proves insufficient for a library that is much larger than Phobos? SeanJanice Caron wrote:Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos.On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
"renoX" <renosky free.fr> wrote in message news:fhnr42$1ego$1 digitalmars.com...Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view.No problem, renoX, but there's at least two strawmen in your post. Maybe three: 1) "big projects look ugly" -- unsustained nonsense :) 2) "convention used by Walter" -- phobos is a mix of all kinds of non-cohesive design and implementation. So much for convention :) 3) "amatuerish" because of a minor variation in style? Digging for mountainous molehills, my friend :) Further, there a vague implication that Tango is somehow non-coherent, and that we 'invented' our own style of using camelCase for global variables and module names. LOL! Well, we didn't invent anything new. Those idioms have been used very successfully by millions of programmers for decades. This is great! No offence taken, RenoX, and none intended toward you ... but you might as well say that "D sucks goat turds" because it changes how C programmers view the world. Yeah, I know people don't like change, but seriously. If you truly feel the use of CamelCase in global vars is just too distressing, please, see a doctor. Such things are /really/ not worth getting upset about, or bitching and moaning about. To quote yourself: "sorry for the harsh words, but that's my view" - Kris
Nov 17 2007
Kris wrote:"renoX" <renosky free.fr> wrote in message news:fhnr42$1ego$1 digitalmars.com...All I'm going to say to respond to that is that you have done a very good job of showing that you are much less mature than RenoX. A...Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view.No problem, renoX, but there's at least two strawmen in your post. Maybe three: 1) "big projects look ugly" -- unsustained nonsense :) 2) "convention used by Walter" -- phobos is a mix of all kinds of non-cohesive design and implementation. So much for convention :) 3) "amatuerish" because of a minor variation in style? Digging for mountainous molehills, my friend :) Further, there a vague implication that Tango is somehow non-coherent, and that we 'invented' our own style of using camelCase for global variables and module names. LOL! Well, we didn't invent anything new. Those idioms have been used very successfully by millions of programmers for decades. This is great! No offence taken, RenoX, and none intended toward you ... but you might as well say that "D sucks goat turds" because it changes how C programmers view the world. Yeah, I know people don't like change, but seriously. If you truly feel the use of CamelCase in global vars is just too distressing, please, see a doctor. Such things are /really/ not worth getting upset about, or bitching and moaning about. To quote yourself: "sorry for the harsh words, but that's my view" - Kris
Nov 18 2007
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_wrote in message you are much less mature than RenoX.Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
Nov 18 2007
Kris wrote:"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...wrote in message you are much less mature than RenoX.Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
Nov 18 2007
Wow ... I really have no idea of what you're talking about Alix. Honestly, I really don't. There is no strange red mist or anything else. Instead it is quite simple: You want something different from what other people want. That cannot be accomodated. - Kris "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhqee1$2sps$1 digitalmars.com...Kris wrote:"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...wrote in message you are much less mature than RenoX.Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
Nov 18 2007
Kris wrote:Wow ... I really have no idea of what you're talking about Alix. Honestly, I really don't. There is no strange red mist or anything else. Instead it is quite simple: You want something different from what other people want. That cannot be accomodated. - Kris "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhqee1$2sps$1 digitalmars.com...Nope, tat is not what I want at all... A...Kris wrote:"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_I can only assume that there is a red mist that is stopping you from seeing the points that pwople are trying to make, you are too protective of your precious. I have tried to be constructive and explain exactly my objections and why I find that one particular aspect of Tango, for me, makes code that uses it confusing to read, even if I myself follow your exact naming practices, and more so if I use my own. All you reply is that you have a choice, you do not try to explain why the system that you have chosen is better. Some might read into that you don't actually have a counter argument but are too stuborn to make any kind of address. If you were a professional contractor and I had hired you to implement a library, would you have the same responce, or would you just say "you have a choice" and forfeit your payment? I can understand that you perhaps feel that you have already covered this issue before and that you don't want to get drawn into it again, but your attitude just seems strange for someone who is creating a library for a community. And from your point of view as the writer of the library, the presence of some capitals might be a tiny detail, but the confusion that I have found when trying to use that library as a consumer are sufficient to deter me from adopting it. While there is no alternative, and the fledgeling D community is in effect your captured audience I believe Tango will do well, but if you ever find yourself with real competition, I think that you will have to change your attitude (and this effects way more than theis CamelCase issue) or see Tango's user base rapidly dwindle. You will never see any company advertise its products with the slogan "Well, you have a choice!" A...wrote in message you are much less mature than RenoX.Thanks Alix. I find serious immaturity surrounding this entire issue. It's seems to be about "I don't like Stdout because it should be stdout instead. Dammit!", or "I won't even use Tango just because the module names aren't lowercase!". I mean, seriously. What would you call that, Alix? I suspect most people would call it "petty beyond contemplation". You have a choice. Don't get hung up on the tiny details, when there's a whole treasure of functionality in Tango, plus an active and dedicted group of people to ensure it remains nurtured.
Nov 18 2007
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>Nope, tat is not what I want at all...Then, it not yet clear what it is that you want. I suggest you start a completely separate thread, or hook up on IRC where the conversation badwidth is a lot higher than here? - Kris
Nov 18 2007
renoX wrote:Sean Kelly a écrit :I agree, I don't know where it started, but I got used to the convention that IdentifiersLikeThis were classes onesLikeThis were instances and OTHERS_LIKE_THIS constants, leaveing alllowercase for modules/namespaces/short-term-variables. In an OO lang, its nice to look at an identifier and be able to consistently know if its a class or an instance or a module. I want "InitailUpper.foo()" to always be a call to a static method of a class and not be confused with the disambiguation of a funcion within a module. That initial capital shouts out to me to declare "I am a class", and in Tango, its not always the case. While you may be able to argue that modules are more important than classes, the link to the file system where rules over case may differ from those of the language, for me, take precidence, and wherever I have that issue, I resort to all lower-case. This is because it has been shown in experiments to be easier to read than all caps. Tango's wild departure from myown naming style is one of the reasons that I was not an early adopter. A...Janice Caron wrote:Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoXOn 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 18 2007
Alix Pexton wrote:Tango's wild departure from myown naming style is one of the reasons that I was not an early adopter.Tango's naming convention isn't consistent with my own style either, but I didn't find it terribly difficult to get used to. Sean
Nov 18 2007
Alix; You're certainly welcome to your opinion, just as we all are. There are many who disagree with you, and there's no way to resolve that dillema as I've already said. "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhp7v1$ff8$1 digitalmars.com...renoX wrote:Sean Kelly a écrit :I agree, I don't know where it started, but I got used to the convention that IdentifiersLikeThis were classes onesLikeThis were instances and OTHERS_LIKE_THIS constants, leaveing alllowercase for modules/namespaces/short-term-variables. In an OO lang, its nice to look at an identifier and be able to consistently know if its a class or an instance or a module. I want "InitailUpper.foo()" to always be a call to a static method of a class and not be confused with the disambiguation of a funcion within a module. That initial capital shouts out to me to declare "I am a class", and in Tango, its not always the case. While you may be able to argue that modules are more important than classes, the link to the file system where rules over case may differ from those of the language, for me, take precidence, and wherever I have that issue, I resort to all lower-case. This is because it has been shown in experiments to be easier to read than all caps. Tango's wild departure from myown naming style is one of the reasons that I was not an early adopter. A...Janice Caron wrote:Easy: when in Romes do like Romans i.e. coherency beats 'invent your own style' any time of the day, otherwise big projects looks ugly. So Tango should really follow convention used by Walter in Phobos. Not following this simple rule looks 'amateurish' from Tango's guys, sorry for the harsh word but that's my view. renoXOn 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:What is your objection to CamelCase module names?Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 18 2007
Janice Caron wrote:On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Well, there are many using this style because W says/said it's standard. That doesn't really mean it's the norm, neither that it is better than any other style.Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVoteTango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase.Are you sure you understand the meaning of the word weird?I kid you not - if Tango used "normal" case conventions, it would have a lot more adherents.Wow, you certainly know a lot.In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.)I am truly impressed at the effort you put into this.Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.Tango have very few stylistic issues, all of which should be gone pretty soon. Have a feeling those aren't the ones you mean though... Phobos have a few as it isn't entirely consistent with itself. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 17 2007
"Janice Caron" <caron800 googlemail.com> wrote in messageOh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase. Tango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase.knew you'd find a way to dredge this up again :) We've already discussed this Janice, and your position was shown to be somewhat more than dubious at that time. That hasn't changed, so it comes down purely to your 'personal' taste. You don't /have/ to use Tango if you find the use of distinguishing characters to be so bitterly offensive. Really, you don't. You swore it off before, and yet here you are ranting about this again. I don't get the issue. It's nothing but a storm in a teacup. Shrug And please, don't start again with the "it says in the D doc that ..." because we've already been there. Done that. Over. Finito. Or maybe you didn't read the responses the last time around? :) Still, thanks for your interest in Tango all the same. I'm really glad that you find the functionality worthwhile to be spending your time converting it. Best; - Kris
Nov 17 2007
i love that - please release it to us all! can't wait to get it for all the reasons you put forth. Janice Caron Wrote:On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Oh I don't think so. Walter is quite clear that module names should be lowercase, and I agree with him. And (apart from Tango) I think it is "the norm" to name classes in titlecase and variables in lowercase. Tango is just plain weird in giving variables names like "Stdout". That's just perverse. Just because it's a global variable doesn't mean you can go all titlecase. I kid you not - if Tango used "normal" case conventions, it would have a lot more adherents. In any case, I am currently crafting my own personally bastardised version of Tango. I've already got a significant fraction of it compiling under D2.007 (including Phobos), and yes I renamed all the module names to lowercase. And I'll probably make "Stdout" merely an alias for "stdout" too (etc.) Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.You understand that that would mean Phobos gaining Tango's style?Will both libraries adopt the same style (naming conventions, capitalization, etc...)?I surely hope so. ++myVote
Nov 17 2007
There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ... What many people fail to realize is that software doesn't survive without nurture. In fact, when you forcibly freeze software, it tends to die quite quickly (this is what happened to Simula, for those who follow language history, and it's somewhat relevant here since Simula is perhaps the closest relative to D). The take-home message is that Tango will continue to develop, grow, improve, mature, in a non-static fashion. If anyone wants to chase that with a redundant copy, that's their folly. Making a copy of Tango functionality is only inviting more work for yourselves, and generating out-of-date functionality for others to operate with. Isn't that obvious? The recommendation is this: if you'd like something changed within Tango, then request it. We can't always please everyone, but we do manage to make a lot of people happy with the (often real-time) changes we do make. Having said that, requesting sweeping stylistic changes, based purely upon personal preference, is likely to conflict with the personal preference of others. It's very hard to resolve such a dilemma, as I'm sure everyone can understand. - Kris "phango" <phango phangowant.com> wrote in message news:fhnplh$1cs3$1 digitalmars.com...i love that - please release it to us all! can't wait to get it for all the reasons you put forth.
Nov 17 2007
On 11/17/07, Kris <foo bar.com> wrote:There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
Janice Caron wrote:On 11/17/07, Kris <foo bar.com> wrote:FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoThere's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Janice Caron wrote:Kris made a false accusation. That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice. Kris accused me of making a post in another name, in support my actual posts. That, I did not do, and I resent the implication. That accusation is several orders magnitude worse than an criticisism of variable naming conventions, and it stinks. Kris, That wasn't me. Deal with it. And I hope you have the decency to retract the accuasion and apologise.On 11/17/07, Kris <foo bar.com> wrote:FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
"Janice Caron" <caron800 googlemail.com> wrote in message news:mailman.98.1195344174.2338.digitalmars-d puremagic.com...On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Nonsense. I made an interesting parapraxes in conjuction with a speculation :)Janice Caron wrote:Kris made a false accusation.On 11/17/07, Kris <foo bar.com> wrote:FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice.Melodramatic, yet perhaps true, Janice. But wait! I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?Kris, That wasn't me. Deal with it.Have nothing to "deal" with, Janice. This entire thread seems to be just more of the personal ranting we heard in the past.And I hope you have the decency to retractAlready posted
Nov 17 2007
Janice Caron Wrote:On 11/17/07, Lars Ivar Igesund <larsivar igesund.net> wrote:Are you sure you aren't jumping the gun. I read Kris's post as meaning you'd be the next person to reply, which funnily enough you were. You're quite prolific you know.Janice Caron wrote:Kris made a false accusation. That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice. Kris accused me of making a post in another name, in support my actual posts. That, I did not do, and I resent the implication. That accusation is several orders magnitude worse than an criticisism of variable naming conventions, and it stinks. Kris, That wasn't me. Deal with it. And I hope you have the decency to retract the accuasion and apologise.On 11/17/07, Kris <foo bar.com> wrote:FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
Lars Ivar Igesund wrote:Janice Caron wrote:There's an interesting issue here. There are two ways of viewing discussions. In one, people *do* distinguish between personal attacks and attacks on viewpoints; in the other, they do not. When those of either school encounter those of the other school, things tend to go badly. It's often a problem here on d.D. -- JamesOn 11/17/07, Kris <foo bar.com> wrote:FWIW, you can't call a distinction on you as a person and your opinions when it comes to insulting. So if you think you may have insulted my opinions (about Tango or any other subject), then you probably insulted /me/ instead.There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Dec 12 2007
"Janice Caron" <caron800 googlemail.com> wrote in messageOn 11/17/07, Kris <foo bar.com> wrote:Dash it all. This is what I meant to write: "There's a fair chance the poster below is actually trolling, but just in case there really is someone voicing an honest opinion there, read on ..." But somehow it came out as: "There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ..." Honest mistake, Janice. Really. When it comes to this topic perhaps you've made some kind of impression? I don't know how to explain it otherwise, except perhaps for senility on my part. Anyway, I suspect you'd agree that the rest of it is what's important ...There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 17 2007
On 11/18/07, Kris <foo bar.com> wrote:Dash it all. This is what I meant to write:Phew! OK, I'm happy now. :-) Thanks for clearing things up.
Nov 17 2007
"Janice Caron" <caron800 googlemail.com> wroteOn 11/18/07, Kris <foo bar.com> wrote:Sure, no problem. Now, perhaps you will address the questions asked previously? I'll list them here for your convenience:Dash it all. This is what I meant to write:Phew! OK, I'm happy now. :-) Thanks for clearing things up.Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.Please suggest an alternate formatting style and explain why it is better.So Tango should really follow convention used by Walter in Phobos.What if that convention proves insufficient for a library that is much larger than Phobos?Kris made a false accusation. That was unwarranted. You can't go around accusing people of things they didn't do. That is outrageous. Worse, it's injustice.Melodramatic, yet perhaps true, Janice. But wait! I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?
Nov 18 2007
On 11/18/07, Kris <foo bar.com> wrote:Please suggest an alternate formatting style and explain why it is better.Module name components: likethis Class names: LikeThis Variable names: likeThis; Constants: LIKETHIS or LIKE_THIS Consistency makes code easier to understand and maintain.What if that convention proves insufficient for a library that is much larger than Phobos?How can it be? You'd need an infinitely large library before you ran out of identifier names.But wait! I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that.Consider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever. All I can think of is I might have said that something or other seems amateurish. But even then, I also say that about some movie plots, but still think they're great movies. You may be reading too much into it.
Nov 18 2007
"Janice Caron" <caron800 googlemail.com> wroteConsider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever.LOL -- it was the last time you were being shrill about this very topic Janice, and you were perfectly clear at the time. I won't bother to dredge up your post, since you can do that yourself. However, it's vaguely amusing to see your hypocracy is without bounds :)
Nov 18 2007
On 11/18/07, Kris <foo bar.com> wrote:LOL -- it was the last time you were being shrill about this very topicshrill - adj - said of a voice, sound, etc: high-pitched and piercing. verb (shrilled, shrilling) to utter in such a high-pitched manner. shrilly adverb. shrillness noun. ETYMOLOGY: 14c: from German schrell. Excuse me!?I won't bother to dredge up your post, since you can do that yourself.I'm also capable of just speaking in words, and saying what I think, which is that Tango is a truly excellent body of work with some fantastic code in it. Perhaps you don't want to hear that?However, it's vaguely amusing to see your hypocracy is without bounds :)Again, excuse me? Any chance you could just scale down the discourtesy a tad?
Nov 18 2007
Janice Caron wrote:On 11/18/07, Kris <foo bar.com> wrote:Don't hold your breath. Many a poster has been in your shoes, myself included. Heck, Alix is in the same position right now. No doubt I'll get some of the same treatment shortly, I just wanted to let you know you're not alone. Kris, I wish you wouldn't take comments about Tango quite so personally, Sean and Lars are in the same boat and you don't see them responding with personal attacks. It's quite sad really because despite this you have a number of quite admirable qualities which I respect you for, but damn it if you don't make that hard sometimes. Anyway, for what it's worth you can chalk my name up on the list of people who haven't adopted Tango due to it's style, naming conventions included. Granted it's not the main reason, that being that I don't have a large enough project to need the many wonderful features Tango has. If I did I could probably get past the stlye of Tango if I needed to, I am a pragmatist at heart once I quell the perfectionist. As for a suggestion of naming and style, I like the one Janice posted: Module name components: likethis Class names: LikeThis Variable names: likeThis; Constants: LIKETHIS or LIKE_THIS Regan /dons flame retardant suit and leaves the building.However, it's vaguely amusing to see your hypocracy is without bounds :)Again, excuse me? Any chance you could just scale down the discourtesy a tad?
Nov 19 2007
"Regan Heath" <regan netmail.co.nz> wrote in messageHeck, Alix is in the same position right now.He is? I don't recall saying anything particularly negative to Alix. Tried to get him onto IRC instead, which he ultimately did (thank-you Alix) and we had a long and essentially productive discussion. It's quite unlike this environment, because you /have/ to interact with people instead of perhaps crouching behind a keyboard as some appear to do.No doubt I'll get some of the same treatment shortlyWhy Regan? If you were ranting about how Tango cannot be used because of some minor stylistic conventions, while advocated forking the library because of that, and at the same time had been happily discrediting the team (this is the second thread on this topic) .... well, you'd probably get some pushback also, Regan. You and I have been down that road, but we can still see eye-to-eye. I'm very happy to say. If this were a serious topic, then by all means let's talk seriously about stylistic changes. That might be a worthy reason to discuss the Tango style elements, and there might be something pertinent to debate or consider. But this thread? It's hard to pick out anything of value Regan. There's just too much misinformation and stylistic preference. I'd rather just get on and listen carefully to the people who are willing to post tickets or discuss things rationally. There's plenty of people who use tango and would prefer it had some different style here and there. Yet, they don't decry the package, or the people responsible. They post tickets, based upon real world use-cases. We make changes. These people are not the armchair quarterback types -- they make requests based upon their real experience with Tango. We make changes. Lot's of changes. We have to focus our limited energy somewhere, so that's where it is focused. When there are tangible concerns about Tango in this newsgroup, then they will warrant serious attention. That's not to dismiss out of hand the concerns a few people have, but we find the interactivity of the IRC channels to be far more conducive to progress than the misconduct shown throughout this thread (and the prior related one). I understand that may not be how you see things, and that's cool. There's also a thread called "Tango Development" that I'd like to hear your input on, if you'd be so kind?
Nov 19 2007
Kris wrote:"Regan Heath" <regan netmail.co.nz> wrote in messageMy apologies then, I must have confused replies somewhere along the way.Heck, Alix is in the same position right now.He is? I don't recall saying anything particularly negative to Alix.Must be the cynic in me, I try to keep him locked up but sometimes he escapes. In any case I am glad to be mistaken. <snip many good points>No doubt I'll get some of the same treatment shortlyWhy Regan?I understand that may not be how you see things, and that's cool. There's also a thread called "Tango Development" that I'd like to hear your input on, if you'd be so kind?To be honest I don't have a heck of a lot to say on the subject. Due to how little I use Tango (and therefore it's style) I don't feel qualified to pass judgement. All I can say at this stage is what I have already said, the style initially put me off, perhaps for the reasons Sean gave when he said: "I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background." in other words, it might just be my background. Regan
Nov 19 2007
Regan Heath wrote:Janice Caron wrote:What about the pen island module problem? Underscores? Do you have any comments to add to the pro column for 'likethis' over in the Module naming conventions thread? Or rebuttals to those in the pro column for LikeThis?On 11/18/07, Kris <foo bar.com> wrote:Don't hold your breath. Many a poster has been in your shoes, myself included. Heck, Alix is in the same position right now. No doubt I'll get some of the same treatment shortly, I just wanted to let you know you're not alone. Kris, I wish you wouldn't take comments about Tango quite so personally, Sean and Lars are in the same boat and you don't see them responding with personal attacks. It's quite sad really because despite this you have a number of quite admirable qualities which I respect you for, but damn it if you don't make that hard sometimes. Anyway, for what it's worth you can chalk my name up on the list of people who haven't adopted Tango due to it's style, naming conventions included. Granted it's not the main reason, that being that I don't have a large enough project to need the many wonderful features Tango has. If I did I could probably get past the stlye of Tango if I needed to, I am a pragmatist at heart once I quell the perfectionist. As for a suggestion of naming and style, I like the one Janice posted: Module name components: likethisHowever, it's vaguely amusing to see your hypocracy is without bounds :)Again, excuse me? Any chance you could just scale down the discourtesy a tad?Class names: LikeThis Variable names: likeThis; Constants: LIKETHIS or LIKE_THIS Regan /dons flame retardant suit and leaves the building.Wait! Come back! You haven't answered my questions! :-) --bb
Nov 19 2007
Bill Baxter wrote:Regan Heath wrote:I don't really like underscores either. Is the "pen island" problem really a problem? How often does that happen? I think the number of modules causes/increases the likelyhood. Sean made a good post describing the pro's/con's of having a large number of modules: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=61853 A weakness in the linker may have been a factor in some of the decisions and I wonder whether they would change if the weakness was fixed? Then I think, regardless of the number of modules and what you call them I'm still going to need searchable documentation to find the class/method/feature I want at any given time. So, while descriptive naming of modules etc may help a little they don't mean all that much to me. At the end of the day a decision has to be made and it won't make everyone happy (as both Sean and Kris have said a few times). Given that and provided there isn't an obvious flaw the system used I would simply get used to it. ReganAs for a suggestion of naming and style, I like the one Janice posted: Module name components: likethisWhat about the pen island module problem? Underscores? Do you have any comments to add to the pro column for 'likethis' over in the Module naming conventions thread? Or rebuttals to those in the pro column for LikeThis?
Nov 19 2007
Janice Caron wrote:Consider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever. All I can think of is I might have said that something or other seems amateurish. But even then, I also say that about some movie plots, but still think they're great movies. You may be reading too much into it.For the record, what you said was in this posting: http://www.digitalmars.com/d/archives/digitalmars/D/Re_D_Conference_Tango_Phobos_58225.html#N58577 "Module names in mixed case!? Did the Tango folk not read the D style guide where it says "Module and package names are all lower case, and only contain the characters [a..z][0..9][_]", or did they just purposefully decide to avoid it? If the former, that was amateurish; if the latter, it was petty." [...] "My apologies if I come across as contentious. I realise I'm a newbie in this group. But that is the first impression I get from looking at the Tango docs. I just ask myself over and over again, "Why did they do that?" (...which should be regarded as a rhetorical question which really means "I wish they hadn't done that")." But you guys already had this discussion in September. Can you stop trading barbs and agree that you both got overly personal? -Jeff
Nov 18 2007
On 11/18/07, Jeff Nowakowski <jeff dilacero.org> wrote:For the record, what you said was in this posting: http://www.digitalmars.com/d/archives/digitalmars/D/Re_D_Conference_Tango_Phobos_58225.html#N58577 "Module names in mixed case!? Did the Tango folk not read the D style guide where it says "Module and package names are all lower case, and only contain the characters [a..z][0..9][_]", or did they just purposefully decide to avoid it? If the former, that was amateurish; if the latter, it was petty."Ooh thank you. Well, that clarifies it. So yes, the core body of code in Tango is excellent. The engine that does all the work is a fantastic bit of software, and not in the least bit amateurish. So you'll notice that in the quote quoted above, the condition in the if statement is false, so in fact it's the else branch that runs. My statement boiled down to the opinion that the /decision/ to ignore the style guide was petty. Note that the criticism was of the decision, not the people making it. And actually, I do that to deliberately go against the style guide was somewhat petty. It's a rival product, after all."My apologies if I come across as contentious. I realise I'm a newbie in this group. But that is the first impression I get from looking at the Tango docs.Thanks also for including that bit. Yes we only talking about a first impression here anyway. But I understand now that weren't looking for first impressions.Can you stop trading barbs and agree that you both got overly personal?I think it's more that words were /taken/ personally when they were not intended as such. I know that I have never criticised any individual, and never would. I have only ever talked about software, and design decisions. I have too much respect for individuals ever to use "barbs".
Nov 18 2007
Janice Caron wrote:I think it's more that words were /taken/ personally when they were not intended as such.The problem is you presented your argument as either they did something amateurish or petty, without first asking if they had deeper reasons. It's clear from the responses they that had valid reasons that involved neither being petty nor amateurish, even if their decision can be debated. So I think if you changed your tone you could have had a much more civil and productive discussion. Even now you claim they are being petty with a rival product. There's a big distinction between "this way is better" and "let's be incompatible because we don't like the other guy". By the way, the charge that one of the posts following yours was a sock puppet was legitimate. It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion. If you think it's valid to point out motives as amateur or petty, then it should be equally valid to point out possible sock-puppetry. Maybe not so helpful in either case? -Jeff
Nov 18 2007
By the way, that Jeff fellow is absolutely BRILLIANT and INSIGHTFUL with PIERCING observations of HUMAN NATURE. Better pay attention to everything he says, because the man is a CERTIFIED GENIUS!!! Here's some more brilliance from the Mind of Jeff...whenever a sock puppet posts something favorable to an individual, THAT INDIVIDUAL IS THE SOCK PUPPET!! ALWAYS!!!! Yes, this means that I REALLY AM JEFF NOWAKOWSKI!!! Hahahahah!!! Fooled you suckas!!!! Boo-rah! Jeff Nowakowski wrote:By the way, the charge that one of the posts following yours was a sock puppet was legitimate. It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion. If you think it's valid to point out motives as amateur or petty, then it should be equally valid to point out possible sock-puppetry. Maybe not so helpful in either case?
Nov 18 2007
The below forgery was posted by David B. Held. I must say I'm very surprised by this childish behavior. To address David's point, I said there was cause for suspicion, not that there were any kind of certainties. Congratulations David B. Held on reaching new lows. -Jeff Jeff Nowakowski wrote:By the way, that Jeff fellow is absolutely BRILLIANT and INSIGHTFUL with PIERCING observations of HUMAN NATURE. Better pay attention to everything he says, because the man is a CERTIFIED GENIUS!!! Here's some more brilliance from the Mind of Jeff...whenever a sock puppet posts something favorable to an individual, THAT INDIVIDUAL IS THE SOCK PUPPET!! ALWAYS!!!! Yes, this means that I REALLY AM JEFF NOWAKOWSKI!!! Hahahahah!!! Fooled you suckas!!!! Boo-rah! Jeff Nowakowski wrote: > > By the way, the charge that one of the posts following yours was a sock > puppet was legitimate. It was the first thing that crossed my mind. > Doesn't mean you did it, but it's a valid suspicion. If you think it's > valid to point out motives as amateur or petty, then it should be > equally valid to point out possible sock-puppetry. Maybe not so helpful > in either case?
Nov 18 2007
Jeff Nowakowski wrote:The below forgery was posted by David B. Held. I must say I'm very surprised by this childish behavior. To address David's point, I said there was cause for suspicion, not that there were any kind of certainties. Congratulations David B. Held on reaching new lows.I had a lot of help from my friends who led the way. Obviously, I'm not as sophisticated as them...still, I hope I made my point. BTW, Obama made the same mistake when he accused Hillary of spreading the whispering campaign against him. Maybe she did, or maybe it was Republicans. In any event, it's dangerous to assume, or even suspect when anonymity is at play. For instance, I find it just as plausible that *you* are the "sock puppet" and set up the entire subthread as a basis to make false accusations. Is that "cause for suspicion"? Dave
Nov 19 2007
David B. Held wrote:I had a lot of help from my friends who led the way. Obviously, I'm not as sophisticated as them...still, I hope I made my point.What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else? "Reputations take a very long time to build, but are quite easily destroyed, and often by oneself"In any event, it's dangerous to assume, or even suspect when anonymity is at play. For instance, I find it just as plausible that *you* are the "sock puppet" and set up the entire subthread as a basis to make false accusations. Is that "cause for suspicion"?I've already discussed the issue in numerous times. I never endorsed any public accusation of sock puppetry -- quite the opposite. I'll only add here that *everything* is a matter of uncertainty. It's only a question of how much evidence you have. This entire newsgroup could be the fabrication of one person. Not very likely though. -Jeff
Nov 20 2007
Jeff Nowakowski wrote:David B. Held wrote: I've already discussed the issue in numerous times. I never endorsed any public accusation of sock puppetry -- quite the opposite.Your use of the word "charge" in this sentence: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Gave me the impression you endorsed the accusation (charge), which prompted my response and probably David's actions as well. Regan
Nov 20 2007
Regan Heath wrote:Your use of the word "charge" in this sentence: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Gave me the impression you endorsed the accusation (charge), which prompted my response and probably David's actions as well.Ok, I can see how that can be misconstrued, but I tried to make it clear in the rest of the paragraph that I did not support the accusation. In particular, the last sentence: "It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion. If you think it's valid to point out motives as amateur or petty, then it should be equally valid to point out possible sock-puppetry. Maybe not so helpful in either case?" -Jeff
Nov 20 2007
Jeff Nowakowski wrote:David B. Held wrote:Yes, to make a point, I was willing to do that. And if you weren't sophisticated enough to discover the real author for yourself, I was prepared to out myself. I was putting you in Janice's shoes, so you could try walking a mile in them. You only lasted about 5 minutes, so I fear the point was lost on you.I had a lot of help from my friends who led the way. Obviously, I'm not as sophisticated as them...still, I hope I made my point.What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else?"Reputations take a very long time to build, but are quite easily destroyed, and often by oneself"In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community. I've always been too loose with my tongue to be a respected expert like Andrei or Walter; but on the other hand, it gives me the freedom to say whatever I think is necessary, no matter how unpopular.[...] I've already discussed the issue in numerous times. I never endorsed any public accusation of sock puppetry -- quite the opposite. I'll only add here that *everything* is a matter of uncertainty. It's only a question of how much evidence you have. This entire newsgroup could be the fabrication of one person. Not very likely though.Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be. Then, you followed up with: "It was the first thing that crossed my mind." Here, you say: "And I tend to agree with the accuser." How do I draw that conclusion? Well, it's simple. The first thing that crossed *my* mind was: "Someone is playing a dirty trick on Janice, and then exploiting it." Which means that if you had a different first impression, it must have been because you had already decided that Janice was guilty until proven innocent. But you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion." And here, you make the weakest equivocation possible, with the way you followed up with a confirmation of your original claim: "Accusing Janice of making sock puppets is 'valid'. I declare so by fiat." Umm...you pretty much say: "I declare open season on Janice! Anyone who wants to accuse her of sock puppetry, lock & load your .30-06 and put on yer huntin' gear!" If you look at what the "sock puppet" said: "i love that - please release it to us all! can't wait to get it for all the reasons you put forth." and: "yup - i'd do that too" it seems just as likely, *if not more so*, that "Phango" was being sarcastic and mocking Janice, in just the same way that I was with you. Who in their right mind thinks we are gullible enough to buy the endorsement of an anonymous poster with the fake domain name "phangowant.com". I mean, seriously! The very idea that someone would sit down and say to themselves: "Oooh...I got a good idea...I'll post something flattering about myself via an anonymous alias...what email address should I make up? A real-sounding name? Nah, too obvious. Oh, oh, I know! Nobody will suspect a thing if I use the domain name 'phangowant.com'!!! Yes!!! It's a PERFECT PLAN!!!" Clearly the email address "phango phangowant.com" is transparent sarcasm. It's insult enough to Janice *all by itself*. What makes your attack particularly heinous is that this was not enough for you. You had to twist the blade the other way by *accusing Janice of the being the perpetrator of an anonymous attack on her*! You want to talk about low?!? *That's* what I say is low, and what justified pulling a little prank to make a dramatic point. The fact that I have to spell all this out is, frankly, quite tiresome and a little disturbing. I think Janice was treated particularly poorly by someone without the balls to use their real identity, and then others who happened to disagree with her smelled blood in the water and went in for the kill. If I have to make a fool of myself to point this out, so be it. I can live with that. But don't try to gloss over what you pretty clearly said by equivocating with your weasel words. You have no moral high ground here, despite the little escape route you think you made for yourself. It's about as legit as me saying: "I accuse Jeff of being a big fat nincompoop!!!...possibly. But there is some room for doubt, so don't get mad at me. Oh, and I don't endorse anyone calling Jeff a nincompoop, so that makes what I said before OK. This ad paid for by the committee to re-elect David B. Held. Hi, I'm David B. Held and I endorse this message...to the extent that it cannot be 'misconstrued' to mean something personally embarrassing." Umm...yeah. I'm not going to offer any apologies, because I don't care if people think I'm a jerk (and I fairly doubt that's a new sentiment, anyhow). But I do think Janice still deserves one more... Dave
Nov 20 2007
"David B. Held" <dheld codelogicconsulting.com> wrote in ...Jeff Nowakowski wrote:Excellent! I don't spend much time on this ng anymore, but recently it's been because someone or other has been generating or perpetrating inaccurate information about Tango, or has been deriding the library and/or authors over some questionable issue. Some of that has reached the dubious level of fud-mongering. You may well disagree, yet that's my opinion of it. Knowing nothing of value about a particular subject will never stop certain people from mouthing off about it, but when they do so over Tango, I'll have something to say. Yes, I'm personally tired of hearing that Tango is somehow 'amateurish' or 'petty' or whatever the other terms have been, since that reflects upon all the people involved (and there are many). Not to mention that the code and design itself is generally of exceptional quality and clarity -- notably more so than a number of well-known libraries. So, like you, I don't give a rats-ass if my "reputation" is somehow sullied, burned or lost over my responses to posts that are "loaded" in this manner -- "reputations" are the folly of political poseurs and ego-centric fools. Far better to be judged by one's work instead, and there's lots of that in Tango, by many people. I suggest those naysayers or armchair-quarterbacks with a disposition to rant might perhaps use Tango for a while, and ask us or tell us about it in a manner that we can presumably respond appropriately to (IRC and tickets). Of course, some people just want to vent and have no intent to ask for help at all. I recall one recent ranter who adamantly refused to write a ticket for Tango, or discuss it with us on IRC, and nor did they even try to or even want to use the library. In that particular instance, there wasn't /even/ a tangible problem. The instructions go like this: Open packet. Sprinkle fud-crystals into five gallon bucket of water, mix well and disperse liberally. As for this weird thing with the sock-puppet, I admit to being entirely bemused until you owned up to it. Then I wondered if that might be a double-blind post, but the one above does appear to be you. FWIW, it seems sad that anyone would attempt to manipulate or subvert the ng like that ... is it /really/ that important? You call that a 'prank', while I have to wonder if such behavior isn't grounded in malevolence instead. Trolling is bad enough, but what you claim to have done is surely several steps below? Yet, here you are chewing out Jeff N over some token semantic distinction. I don't get it. That does seem a bit hypocritical doesn't it? Why don't you have a go at me instead? Or, did you perhaps think JeffN was me? Also, I will admit that I have wondered why you made that analogy between Boost and Tango, since your message appeared to be saying "Hey, the Tango guys say Yo! Put up or Shutup!" which really couldn't be further from the truth. Heck, there's even a long recent thread on toString vs toUtf8 in this regard. As I pointed out in a reply to your post, Tango is changing in order to have some measure of compatibility with phobos (which you no doubt know of) and, as a library, it was never intended to be compatible in the first place. This aspect was clearly noted in the text immediately above your post, so you could hardly miss that either. Both these aspects would tend to render the specific analogy worthless. Yet, you didn't bother to respond to my query, in order to clarify whether the message you were sending could be misconstrued. Thus, your post could be seen as something of a sly strawman, with mucho negativity directed towards Tango. I sure hope it wasn't intended as such, but now that I'm seeing this weird sock-puppet thing ...... heck, I sure /hope/ that was not the case? To be clear: I'm not trying to take pot-shots at you, Dave. I'm just a bit concerned by these two things you're responsible for, and specifically because they are both related to Tango. Can you help me understand them better?David B. Held wrote:Yes, to make a point, I was willing to do that. And if you weren't sophisticated enough to discover the real author for yourself, I was prepared to out myself. I was putting you in Janice's shoes, so you could try walking a mile in them. You only lasted about 5 minutes, so I fear the point was lost on you.I had a lot of help from my friends who led the way. Obviously, I'm not as sophisticated as them...still, I hope I made my point.What was your point? That you are willing to post personal attacks using one of the lowest tricks in Usenet, forging your name as somebody else?"Reputations take a very long time to build, but are quite easily destroyed, and often by oneself"In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community. I've always been too loose with my tongue to be a respected expert like Andrei or Walter; but on the other hand, it gives me the freedom to say whatever I think is necessary, no matter how unpopular.[...] I've already discussed the issue in numerous times. I never endorsed any public accusation of sock puppetry -- quite the opposite. I'll only add here that *everything* is a matter of uncertainty. It's only a question of how much evidence you have. This entire newsgroup could be the fabrication of one person. Not very likely though.Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be. Then, you followed up with: "It was the first thing that crossed my mind." Here, you say: "And I tend to agree with the accuser." How do I draw that conclusion? Well, it's simple. The first thing that crossed *my* mind was: "Someone is playing a dirty trick on Janice, and then exploiting it." Which means that if you had a different first impression, it must have been because you had already decided that Janice was guilty until proven innocent. But you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion." And here, you make the weakest equivocation possible, with the way you followed up with a confirmation of your original claim: "Accusing Janice of making sock puppets is 'valid'. I declare so by fiat." Umm...you pretty much say: "I declare open season on Janice! Anyone who wants to accuse her of sock puppetry, lock & load your .30-06 and put on yer huntin' gear!" If you look at what the "sock puppet" said: "i love that - please release it to us all! can't wait to get it for all the reasons you put forth." and: "yup - i'd do that too" it seems just as likely, *if not more so*, that "Phango" was being sarcastic and mocking Janice, in just the same way that I was with you. Who in their right mind thinks we are gullible enough to buy the endorsement of an anonymous poster with the fake domain name "phangowant.com". I mean, seriously! The very idea that someone would sit down and say to themselves: "Oooh...I got a good idea...I'll post something flattering about myself via an anonymous alias...what email address should I make up? A real-sounding name? Nah, too obvious. Oh, oh, I know! Nobody will suspect a thing if I use the domain name 'phangowant.com'!!! Yes!!! It's a PERFECT PLAN!!!" Clearly the email address "phango phangowant.com" is transparent sarcasm. It's insult enough to Janice *all by itself*. What makes your attack particularly heinous is that this was not enough for you. You had to twist the blade the other way by *accusing Janice of the being the perpetrator of an anonymous attack on her*! You want to talk about low?!? *That's* what I say is low, and what justified pulling a little prank to make a dramatic point. The fact that I have to spell all this out is, frankly, quite tiresome and a little disturbing. I think Janice was treated particularly poorly by someone without the balls to use their real identity, and then others who happened to disagree with her smelled blood in the water and went in for the kill. If I have to make a fool of myself to point this out, so be it. I can live with that. But don't try to gloss over what you pretty clearly said by equivocating with your weasel words. You have no moral high ground here, despite the little escape route you think you made for yourself. It's about as legit as me saying: "I accuse Jeff of being a big fat nincompoop!!!...possibly. But there is some room for doubt, so don't get mad at me. Oh, and I don't endorse anyone calling Jeff a nincompoop, so that makes what I said before OK. This ad paid for by the committee to re-elect David B. Held. Hi, I'm David B. Held and I endorse this message...to the extent that it cannot be 'misconstrued' to mean something personally embarrassing." Umm...yeah. I'm not going to offer any apologies, because I don't care if people think I'm a jerk (and I fairly doubt that's a new sentiment, anyhow). But I do think Janice still deserves one more... Dave
Nov 21 2007
Kris wrote:[...] As for this weird thing with the sock-puppet, I admit to being entirely bemused until you owned up to it. Then I wondered if that might be a double-blind post, but the one above does appear to be you. FWIW, it seems sad that anyone would attempt to manipulate or subvert the ng like that ... is it /really/ that important? You call that a 'prank', while I have to wonder if such behavior isn't grounded in malevolence instead. Trolling is bad enough, but what you claim to have done is surely several steps below? Yet, here you are chewing out Jeff N over some token semantic distinction. I don't get it. That does seem a bit hypocritical doesn't it? Why don't you have a go at me instead? Or, did you perhaps think JeffN was me?Well, the double-standard here is quite amusing. Both of you accused someone else of deception and trickery when the most obvious reading of the "sock puppetry" does not lead to that conclusion. On the contrary, the puppeteer was most likely insulting Janice as well, which means that you two were feigning stupidity, adding insult to injury, and then making light of it by dismissing your claims as "speculation". Well, obviously, you haven't been a victim of such tricks yet, so it is easy for you to blame the victim (which is what you did, let's not mince words). However, I notice that once Jeff was a victim, he had a wholly different reaction to the situation and did not sit around waiting for someone to accuse *him* of sock puppetry (even though that would be just as silly as both of your accusations). In fact, Jeff highlighted with his strong words just how serious an offense it is, and now you, though not being a victim, are merely emphasizing Jeff's point: being the victim of an anonymous attack really sucks, in the way that a hit-n-run sucks...you can't even strike back at your attacker. How is it that an *anonymous* person can attack a member of the community, and you have the right to *accuse the victim of being the attacker*, but as soon as you have a suspect in sight, it's *obviously wrong to accuse the victim*. *That*, my friend, is a double-standard. Was it "malevolent" to demonstrate this point? No more so than it was for you two to blame the victim, which is an all-to-common sociological reaction to crimes in which the suspects have gotten away scot-free. The reason I targeted Jeff and not you is because you at least had the decency to retract your accusation after Janice protested innocence, but Jeff was not so forgiving, despite having not enough evidence to convict a squirrel of burying nuts. I have participated in enough electronic social media to know that false-flag operations are the dirtiest tricks of the game. It *really* sucks to be a victim; and thus, accusing the victim of being the perpetrator is what I consider to be particularly "malevolent". Since you seem to not have the taste of being a victim yet, I can still pull out my sock puppet; and this time I'll be clever enough to post through the web interface...then I'll lay an old blame-the-victim trick on you and let you decide which is more malevolent...blaming the victim or exposing the hypocrisy of doing so.Also, I will admit that I have wondered why you made that analogy between Boost and Tango, since your message appeared to be saying "Hey, the Tango guys say Yo! Put up or Shutup!" which really couldn't be further from the truth. Heck, there's even a long recent thread on toString vs toUtf8 in this regard.Obviously, Tango is written by more than one developer, not all of whom express the same attitude towards commentary on the library. The difference is in challenging critics vs. justifying your design decisions to critics. Good library authors can disarm their critics with a good explanation of the design decisions, while authors outside of that set don't feel that justification is necessary, because they are the ones who put their hard work into it. Not all criticism is justified, and some of it is simply bad, but the way it's responded to makes all the difference in the world. It reminds me of the interviewing process at work. Some candidates simply refuse to answer simple coding questions, because it is "beneath them". Well, maybe it is, but that's all the more reason to give a quick answer rather than rejecting the question on principle. Without any answer at all, it's impossible to tell whether the question really is beneath the candidate, or they are just stalling because they can't answer it. When a critic says: "You should change X", you can say: "No, you're wrong. That's a matter of taste and I can't please everybody" or you can say: "The reason I chose X was because given the alternatives, it gave us the most flexibility as library authors. Here is what I mean..." Maybe "You should change X" is a stupid criticism that isn't worth your time to respond to. Or maybe it's not. If you have a justification at the ready, it makes you look all the more knowledgeable than protesting artistic license. If you present the attitude that the criticism is worthless, then other users begin to wonder whether X was actually designed or was merely an accident. My point is not that Tango is bad (though perhaps your self-congratulation on it is a bit generous). I haven't seen enough of Tango to say whether it is or not, and the parts I have seen seemed reasonable to me. My point is that some of Tangos authors are more diplomatic than others; and whether you feel that is fair or not (to have to suffer fools, from your perspective), the reputation of Tango as a piece of work is affected by the attitudes of its contributors (the point I was trying to make, as delicately as possible). On the other hand, I don't have any user-visible contributions to D, so I'm not jeopardizing anything (the man who has nothing to lose is the most dangerous of all). I happen to think that Sean Kelly is a good ambassador of Tango, and if everything I knew about Tango came from things he said, I would be predisposed to think it's a pretty darned good library. I suspect a lot of other folks might say the same thing.As I pointed out in a reply to your post, Tango is changing in order to have some measure of compatibility with phobos (which you no doubt know of) and, as a library, it was never intended to be compatible in the first place. [...]That's not the point. The point is that it was clearly designed to be a standard library, or it would not have defined things like Object.d. So the whole "never intended to be Phobos-compatible" claim ignores the fact that users of Tango are necessarily going to expect a feature set similar to Phobos, if for no other reason than that Phobos is the official standard library. So whether that was an original design intent or not, the Tango developers would have had to be extremely short-sighted to not consider that such compatibility issues would eventually arise. I would like to give you that much credit, anyway. If Tango merely offered an alternative implementation to Phobos' features, then your claim would have merit (like OpenGL is an alternative to DirectX). But the fact that Tango offers a significantly *disjoint but overlapping* feature set from Phobos makes it inevitable that users would want to eat their cake and have it too (in the way that both Qt and OpenGL allow you to draw on the display, and thus both feature graphics primitives, but one is clearly more than an alternative to the other). Boost overlaps with but is disjoint from the Standard Library in that it offers smart pointers, binders, and numerics. It could easily have said: "Well, Boost wasn't designed to be compatible with the Standard Libray, so if you want to mix shared_ptr<> with auto_ptr<>, you're SOL." That would have been just as reasonable as Tango taking that position. But if you look at the interface of shared_ptr<>, you'll see that it accepts a std::auto_ptr<>. You're not telling me that the design of Tango wasn't forward-looking, are you? After all, as you say, Tango is now changing to *become* compatible with Phobos... Dave
Nov 23 2007
"David B. Held" <dheld codelogicconsulting.com> wrote in message news:fi87no$8h4$1 digitalmars.com...Kris wrote:Which obvious reading? Can you be more specific about that?[...] As for this weird thing with the sock-puppet, I admit to being entirely bemused until you owned up to it. Then I wondered if that might be a double-blind post, but the one above does appear to be you. FWIW, it seems sad that anyone would attempt to manipulate or subvert the ng like that ... is it /really/ that important? You call that a 'prank', while I have to wonder if such behavior isn't grounded in malevolence instead. Trolling is bad enough, but what you claim to have done is surely several steps below? Yet, here you are chewing out Jeff N over some token semantic distinction. I don't get it. That does seem a bit hypocritical doesn't it? Why don't you have a go at me instead? Or, did you perhaps think JeffN was me?Well, the double-standard here is quite amusing. Both of you accused someone else of deception and trickery when the most obvious reading of the "sock puppetry" does not lead to that conclusion.On the contrary, the puppeteer was most likely insulting Janice as well, which means that you two were feigning stupidity, adding insult to injury, and then making light of it by dismissing your claims as "speculation". Well,You say "most likely", and then draw an extensive conclusion from that. I didn't read the post in the manner you have suggested at all, so can happily and honestly disagree with your "assertions" in full.obviously, you haven't been a victim of such tricks yet, so it is easy for you to blame the victim (which is what you did, let's not minceVictim? Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave? The only way you could be /so/ sure is if you'd posted it yourself. Right? Let me ask you: Did you make that post, David? Be honest about it.words). However, I notice that once Jeff was a victim, he had a wholly different reaction to the situation and did not sit around waiting for someone to accuse *him* of sock puppetry (even though that would be just as silly as both of your accusations). In fact, Jeff highlighted with his strong words just how serious an offense it is, and now you, though not being a victim, are merely emphasizing Jeff's point: being the victim of an anonymous attack really sucks, in the way that a hit-n-run sucks...you can't even strike back at your attacker. How is it that anAgain, the only way you could be so sure is if you'd posted it yourself. Did you make that post, David? If you didn't, then your assertions are surely limited in extent and perhaps entirely baseless? If you did post as "wantphango" or whatever, then simply own up to it.*anonymous* person can attack a member of the community, and you have the right to *accuse the victim of being the attacker*, but as soon as you have a suspect in sight, it's *obviously wrong to accuse the victim*. *That*, my friend, is a double-standard.I really have no idea of what you're trying to say here. Sorry :)Was it "malevolent" to demonstrate this point? No more so than it was for you two to blame the victim, which is an all-to-common sociological reaction to crimes in which the suspects have gotten away scot-free.You're still discussing a 'victim', and it's not even clear of what. Are you saying that the troll post was somehow 'attacking' Janice? If so, how? I'd like to understand that aspect.The reason I targeted Jeff and not you is because you at least had the decency to retract your accusation after Janice protested innocence, but Jeff was not so forgiving, despite having not enough evidence to convict a squirrel of burying nuts. I have participated in enough electronic social media to know that false-flag operations are the dirtiest tricks of the game. It *really* sucks to be a victim; and thus, accusing the victim of being the perpetrator is what I consider to be particularlyFaceless conclusions based upon your own interprestions? You're projecting shared opinion and knowledge here (with yourself), which is certainly groundless. And again, how can you be so positive about this?"malevolent". Since you seem to not have the taste of being a victim yet, I can still pull out my sock puppet; and this time I'll be clever enough to post through the web interface...then I'll lay an old blame-the-victim trick on you and let you decide which is more malevolent...blaming the victim or exposing the hypocrisy of doing so.I see. So, you intend to run around posting under false names with the intend to cause some kind of malevolent damage within the NG? That really doesn't seem appropriate, but if it happens we can all point to this post and have a good idea of who is behind the scenes.The connotation here is that perhaps those who do not "disarm their critics" are not "good library authors". Thus, since you're implying elsewhere that Tango has at least some such people, then the library itself is somehow not "good". It's a silly, groundless, and vague accusation. Seems a bit like fud, actually. You don't say anything about trolls either :)Also, I will admit that I have wondered why you made that analogy between Boost and Tango, since your message appeared to be saying "Hey, the Tango guys say Yo! Put up or Shutup!" which really couldn't be further from the truth. Heck, there's even a long recent thread on toString vs toUtf8 in this regard.Good library authors can disarm their critics with a good explanation of the design decisions, while authors outside of that set don't feel that justification is necessary, because they are the ones who put their hard work into it.Not all criticism is justified, and some of it is simply bad, but the way it's responded to makes all the difference in the world.You're using the term 'criticism' as though we don't deal with it every single day. Perhaps you should hang out on IRC sometimes, and watch carefully how criticism is most often responded to ... the vast majority of such criticism results in a change to the codebase. There are exceptions to that rule, but that's generally how criticism is responded to. Go and look through the tickets also. Heck, log onto IRC and just ask - you couldn't ask for a faster way of getting a reality check :)It reminds me of the interviewing process at work. Some candidates simply refuse to answer simple coding questions, because it is "beneath them". Well, maybe it is, but that's all the more reason to give a quick answer rather than rejecting the question on principle. Without any answer at all, it's impossible to tell whether the question really is beneath the candidate, or they are just stalling because they can't answer it.That is indeed silly and, thankfully, I've never met such a person though I've interviewed hundreds. Do you refuse to answer code questions?When a critic says: "You should change X", you can say: "No, you're wrong. That's a matter of taste and I can't please everybody" or you can say: "The reason I chose X was because given the alternatives, it gave us the most flexibility as library authors. Here is what I mean..." Maybe "You should change X" is a stupid criticism that isn't worth your time to respond to. Or maybe it's not. If you have a justification at the ready, it makes you look all the more knowledgeable than protesting artistic license. If you present the attitude that the criticism is worthless, then other users begin to wonder whether X was actually designed or was merely an accident.Not all good engineers are good politicians. I imagine few good politicians make good engineers. That's the truth, and it's just fine.My point is not that Tango is bad (though perhaps your self-congratulation on it is a bit generous). I haven't seen enough of Tango to say whether it is or not, and the parts I have seen seemed reasonable to me. My point is that some of Tangos authors are more diplomatic than others; and whether you feel that is fair or not (to have to suffer fools, from your perspective), the reputation of Tango as a piece of work is affected by the attitudes of its contributors (the point I was trying to make, as delicately as possible). On the other hand, I don't have any user-visible contributions to D, so I'm not jeopardizing anything (the man who has nothing to lose is the mostTango does not rest upon all of us being diplomats (at all, or all the time), so let's stop pretending it matters nearly as much as you've been trying to make out.dangerous of all). I happen to think that Sean Kelly is a good ambassador of Tango, and if everything I knew about Tango came from things he said, I would be predisposed to think it's a pretty darned good library. I suspect a lot of other folks might say the same thing.Indeed, and good for Sean. Having people with different skill-sets is often crucial to the success of any project.Actually, it most certainly is the point, Dave. And it's not a "claim" (as you say) about "phobos compatability" -- it is a cold hard fact instead. Even if a handful of features *are* similar, the organization is entirely different, and is thus wholly incompatible at the package level. That decision, along with many others, was a concious and fully intentional one. Other details aside, we needed to scale the library beyond the stage where you can simply dump everything into one folder and call it good.As I pointed out in a reply to your post, Tango is changing in order to have some measure of compatibility with phobos (which you no doubt know of) and, as a library, it was never intended to be compatible in the first place. [...]That's not the point. The point is that it was clearly designed to be a standard library, or it would not have defined things like Object.d. So the whole "never intended to be Phobos-compatible" claim ignores the fact that users of Tango are necessarily going to expect a feature set similar to Phobos, if for no other reason than that Phobos is the official standard library. So whether that was an original designintent or not, the Tango developers would have had to be extremely short-sighted to not consider that such compatibility issues would eventually arise. I would like to give you that much credit, anyway.Please don't. We considered a slew of options and eventually decided that we'd have to be incompatible in a variety of ways in order to make the library operate the way we wanted it to. Again, there was no intent to be compatible, since it was not feasible to do so while at the same time meet the goals we had set. That was a choice we made. You can contuinue denying that all you like, but it really makes no difference whatsoever :)If Tango merely offered an alternative implementation to Phobos' features, then your claim would have merit (like OpenGL is an alternative to DirectX). But the fact that Tango offers a significantly *disjoint but overlapping* feature set from Phobos makes it inevitable that users would want to eat their cake and have it too (in the way that both Qt and OpenGL allow you to draw on the display, and thus both feature graphics primitives, but one is clearly more than an alternative to the other).Again, Tango very quickly gave up on all notion of full phobos compatability in the early stages.Boost overlaps with but is disjoint from the Standard Library in that it offers smart pointers, binders, and numerics. It could easily have said: "Well, Boost wasn't designed to be compatible with the Standard Libray, so if you want to mix shared_ptr<> with auto_ptr<>, you're SOL." That would have been just as reasonable as Tango taking that position. But if you look at the interface of shared_ptr<>, you'll see that it accepts a std::auto_ptr<>. You're not telling me that the design of Tango wasn't forward-looking, are you? After all, as you say, Tango is now changing to *become* compatible with Phobos...We're changing some trivial things to be compatible at the runtime layer. Things like toString() and so on. The upper layers, like I/O are incompatible, as is the structure of the library itself and the package layout. In fact, the phobos runtime is changing to look like Tango, since there is currently an effort under way to use the Tango runtime instead of the existing phobos one. Thus, as I already said, phobos is changing to look like Tango. You apparently cut that bit out of my post, because it blows huge holes in your entirely inaccurate analogy :) Specifically related to Tango, your analogy is based on entirely false assertions. I suspect you don't know much about the library, or the history behind it? If you did, then you'd understand how irrellevant the commentary really is. That's to be expected, but I'm surprised at just how many "concrete" conclusions you're managing to draw from thin air. I'd encourage you to use Tango and draw conclusions based on some solid experience instead? I'm sure people would be happy to answer any of those you may have once you dig deeper. In the end it comes down to a simple (reapeated) notion: we made an early decision not to conform with phobos in a manner that could be considered compatible. Phobos had frozen in time, and patches sent for the library lay languishing somewhere for months and even years. There was little point in sacrificing better approaches because of that, and we knew it. Those were difficult choices, but we made them and moved on. If you want to ignore that and draw your conclusions anyway, you are welcome to do so. Read the history, as I've suggested, and you'll perhaps get a better feel for how far off your analogy has actually been? - Kris p.s. Just out of interest, have you written or designed a library on a scale similar to Tango?
Nov 23 2007
On 11/24/07, Kris <foo bar.com> wrote:Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave?Because I have stated that fact loudly and clearly. Once again, I, Janice Caron, do hereby declare that I have made no posts on this group in any name other than Janice Caron. Can I possibly be more clear? Now stop making false accusations. I am /so/ looking forward to the moderated newsgroup!
Nov 23 2007
"Janice Caron" <caron800 googlemail.com> wrote in message news:mailman.123.1195890481.2338.digitalmars-d puremagic.com...On 11/24/07, Kris <foo bar.com> wrote:Oh, you make that claim, and that's fine. But the point is that David cannot know that for sure unless he made that post himself. David has attempted to create a notable level of 'fact' based upon knowing exactly who did what. He places so much emphasis on it, one surely has to ask the question posed above. I am simply asking that question.Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave?Because I have stated that fact loudly and clearly. Once again, I, Janice Caron, do hereby declare that I have made no posts on this group in any name other than Janice Caron. Can I possibly be more clear?Now stop making false accusations.There is no accusation there. Period. Instead, there is a question to Dave. Perhaps you should stop attempting to create issue where there is none.
Nov 24 2007
Kris wrote:"David B. Held" <dheld codelogicconsulting.com> wrote in message [...] Which obvious reading? Can you be more specific about that?I believe I spelled it out in my last response to Jeff. Since you seem to be following the thread, I don't really feel it's worth my while to repeat the argument in full.[...]Then I would say that either A) you didn't stop and think very carefully about the implications, or B) you wrote the posts and they didn't work out the way you had hoped.On the contrary, the puppeteer was most likely insulting Janice as well, which means that you two were feigning stupidity, adding insult to injury, and then making light of it by dismissing your claims as "speculation". Well,You say "most likely", and then draw an extensive conclusion from that. I didn't read the post in the manner you have suggested at all, so can happily and honestly disagree with your "assertions" in full.Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.obviously, you haven't been a victim of such tricks yet, so it is easy for you to blame the victim (which is what you did, let's not minceVictim? Surely you're making a rather grand assumption that the person you call the 'victim' could never have made that post at all? How do you actually know that, Dave? The only way you could be /so/ sure is if you'd posted it yourself. Right? Let me ask you: Did you make that post, David? Be honest about it.[...]Well, that's a non-sequitur. Someone who isn't a diplomatic representative of a library does not force the library itself to somehow be bad. And yet, that person can cause harm to the library by influencing the opinions of prospective users. However, if the author *is* the library, then I agree that bad author == bad library. Are you a D library?Good library authors can disarm their critics with a good explanation of the design decisions, while authors outside of that set don't feel that justification is necessary, because they are the ones who put their hard work into it.The connotation here is that perhaps those who do not "disarm their critics" are not "good library authors". Thus, since you're implying elsewhere that Tango has at least some such people, then the library itself is somehow not "good".It's a silly, groundless, and vague accusation.What's silly is the line of reasoning used to arrive at this putative "accusation".[...]Whether you like it or not, the NG is not some kind of static IRC channel. What you say on IRC is not recorded and archived and made public in the way this newsgroup is. It may well be that people who talk to you on IRC have a completely different experience than those who read this NG. Whether that is a good thing or a bad thing, I'll let you decide.Not all criticism is justified, and some of it is simply bad, but the way it's responded to makes all the difference in the world.You're using the term 'criticism' as though we don't deal with it every single day. Perhaps you should hang out on IRC sometimes, and watch carefully how criticism is most often responded to ...[...] Tango does not rest upon all of us being diplomats (at all, or all the time), so let's stop pretending it matters nearly as much as you've been trying to make out.I wonder if you've ever tried to commercialize anything you've written. I've sold software I wrote to put bread on the table, and the way you treat your customers, whether they are programmers or businesspeople, makes all the difference in the world. I can especially tell you that it makes a difference to companies like Borland, where I saw people complain about their products every day (because I was often one of them). Maybe Tango will always be a free product, and that would be great. But if you ever decide that you should get paid for your hard work (say, through a dual-licensing scheme, which seems rather popular these days), you might find that diplomacy hits the bottom line rather directly.[...] Again, Tango very quickly gave up on all notion of full phobos compatability in the early stages.There's a difference between full compatibility and gratuitous incompatibility. C++ isn't fully compatible with C, and obviously had to do things differently to do them better. On the other hand, Bjarne always had a good reason for doing things differently, and wasn't afraid to share it with users (and, I might add, he managed to do so without calling them idiots).[...] p.s. Just out of interest, have you written or designed a library on a scale similar to Tango?No, Kris, I haven't. I'm not a brilliant programmer who only writes amazing code like you are. I doubt I could write a 10 line program without introducing more than one bug per line. My judgment and opinion are absolutely worthless next to your shining intellect. May your wisdom bless the D community for all of its days! I've only ever worked on toy codebases of a few hundred lines, and never on something that was actually used by other people. Every night when I go to bed, I think to myself: "If only I could one day be as great a h X0r as Kris...that would be swell!" I feel stupid even replying to you, as if I have the right to challenge a man who has so profoundly changed the face of D! I'm sorry, I won't ever let it happen again. Dave
Nov 24 2007
"David B. Held" <dheld codelogicconsulting.com> wroteI asked a simply question, and there's really no need to take this attitude. I will admit to being saddened by the levels that you claim to stoop to, though I guess I should not be surprised given what you've previously claimed: 1) that you deliberately subverted the integrity of the ng via your sock-puppet spoof 2) that you'd be more than willing to do so again now you claim: 3) trolling against Tango is fair game for you (phangowant) 4) doing so with the intent to generate a flame fest was your goal ("baiting people ... exactly the way I predicted") Bring on those moderators ... Given those elements, one could be forgiven for concluding that your innacurate analogy regarding Boost and Tango was posted with similar malevolent intent. Too bad, since it made for an otherwise interesting read.Let me ask you: Did you make that post, David? Be honest about it.Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.Thanks. Well, given the claims you've made so far, I'd say the NG is an inappropriate place to conduct any kind of rational discourse. I mean, what's the point if people like you are more than willing to (as you've described) subvert and/or pervert the environment? I (perhaps ignorantly) thought it was a place for D enthusiasts to discuss related topics, rather than for those with some kind of twisted agenda. That's too bad.You're using the term 'criticism' as though we don't deal with it every single day. Perhaps you should hang out on IRC sometimes, and watch carefully how criticism is most often responded to ...Whether you like it or not, the NG is not some kind of static IRC channel. What you say on IRC is not recorded and archived and made public in the way this newsgroup is. It may well be that people who talk to you on IRC have a completely different experience than those who read this NG. Whether that is a good thing or a bad thing, I'll let you decide.Yes, I'm aware how the business environment operates. And yes, Tango will always be a free product as far as I'm concerned. Why would it not be? Tango exists because we are D enthusiasts.Tango does not rest upon all of us being diplomats (at all, or all the time), so let's stop pretending it matters nearly as much as you've been trying to make out.Maybe Tango will always be a free product, and that would be great. But if you ever decide that you should get paid for your hard work (say, through a dual-licensing scheme, which seems rather popular these days), you might find that diplomacy hits the bottom line rather directly.There's really no need to utterly wig-out, is there? I asked a perfectly innocent, and what I thought to be reasonable, question. I mean, you might have had far more experience in that arena than all of Tango put together, and could thus be in a position to offer lots of solid advice on technical concerns too. I asked only because you seemed to be hinting in that direction.. However, I'll take your reply to be an affirmation in the negative sense. Thank you for clarifying my original two questions regarding your posts over Tango.p.s. Just out of interest, have you written or designed a library on a scale similar to Tango?No, Kris, I haven't. I'm not a brilliant programmer who only writes amazing code like you are. I doubt I could write a 10 line program without introducing more than one bug per line. My judgment and opinion are absolutely worthless next to your shining intellect. May your wisdom bless the D community for all of its days! I've only ever worked on toy codebases of a few hundred lines, and never on something that was actually used by other people. Every night when I go to bed, I think to myself: "If only I could one day be as great a h X0r as Kris...that would be swell!" I feel stupid even replying to you, as if I have the right to challenge a man who has so profoundly changed the face of D! I'm sorry, I won't ever let it happen again.
Nov 24 2007
Kris wrote:"David B. Held" <dheld codelogicconsulting.com> wroteYou asked a simple question, but I didn't see one ounce of sincerity in it. I just got done writing several long posts about the evils of anonymous posting, and now you want to accuse *me* of being the poster?? Obviously, the original poster was far more sophisticated in the ways of evading detection than I was, so let me ask you this...what would be my reward for then making a clumsy *not-so-anonymous* post?? There are only two conclusions to be made here: 1) you didn't take 5 seconds to think this through and realize that only an utter moron would perform the sequence of events: a) post as phango b) post as dheld , "anonymously" c) admit that b) was a ruse 2) you were not being sincere Now, you are saying that 2) is not the case, so you are basically calling me a complete idiot for trying to pull off 1). Your faux "sincerity" is extremely annoying and does you no credit, and I take the insult quite personally.I asked a simply question, and there's really no need to take this attitude.Let me ask you: Did you make that post, David? Be honest about it.Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.I will admit to being saddened by the levels that you claim to stoop to, though I guess I should not be surprised given what you've previously claimed:You're "saddened"? Oh, poor, poor crocodile...look at those big tears...1) that you deliberately subverted the integrity of the ng via your sock-puppet spoof 2) that you'd be more than willing to do so againAt least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).now you claim: 3) trolling against Tango is fair game for you (phangowant)Ok, since you seem to lack the basic comprehension of literary devices, I'll spell this one out for you in excruciating detail: my "admission" above is something called "sarcasm". Here's a good reference: http://en.wikipedia.org/wiki/Sarcasm. I think it's ok for me to quote an excerpt: Sarcasm[A] is the sneering, sly, jesting, or mocking of a person, situation or thing. I felt that was all that your "sincere" query deserved as a response. So to be perfectly explicit (since that seems to be what you need, in your I'm-playing-literal-and-naive mode), this is a false conclusion because I am not phango , I do not endorse anything phango says, I am opposed to trolling, and I have nothing against Tango the library, nor do I endorse attacking the library. On the other hand, I think every piece of work is open for criticism (certainly including anything I've written), but that is different from an attack in that a criticism has technical merit and an attack does not.4) doing so with the intent to generate a flame fest was your goal ("baiting people ... exactly the way I predicted")Kris, if this is really a sincere interpretation of my words, I have to wonder if you simply have a hard time communicating with other people via idioms and expressions and forms of speech which are not literal? I understand that there are specific cognitive defects which can lead to this situation, but usually the are the result of some developmental disability that is more systemic in nature. You don't seem to merely be a high-functioning autistic or Aspberger's patient, but I don't get to see you in your normal milieu, so I can't make any kind of guess as to your condition.[...] Given those elements, one could be forgiven for concluding that your innacurate analogy regarding Boost and Tango was posted with similar malevolent intent. Too bad, since it made for an otherwise interesting read.Yes, by comparing Boost to Tango, I wanted to heap aspersions on Tango. Clearly, Boost is a simmering pile of dung, and by association, I'm saying that Tango is crap. It's a totally unflattering comparison, and one for which Tango is most undeserving. You have persuaded me to retract my comparison and say that Tango is nothing at all like Boost in any way, shape, or form. In fact, it's more like the opposite of Boost. Are you happy?[...] Thanks. Well, given the claims you've made so far, I'd say the NG is an inappropriate place to conduct any kind of rational discourse. I mean, what's the point if people like you are more than willing to (as you've described) subvert and/or pervert the environment? I (perhaps ignorantly) thought it was a place for D enthusiasts to discuss related topics, rather than for those with some kind of twisted agenda. That's too bad.Yes, it is too bad. Apparently, all the "rational" discourse goes on in IRC, which is clearly where the D newsgroup should migrate (not the least of all because *you* are there). If only the perverts and the subverts would go away, the D newsgroup would become a playground of rational discourse by D enthusiasts. My "twisted agenda" has rained down hellfire and brimstone on the face of D, and everything has come grinding to a halt. Oh, woe is we! Woe is we! Let us put on sackcloth and ashes and mourn for the death of our beloved newsgroup... Kris, let me remind you that the instigator of this thread was that anonymous coward posting as phango . And what fanned the flames was when you and Jeff accused Janice of being that coward (though you yourself still have not disclaimed being phango ). At that point, the thread left the realm of "rational discourse" and ceased being about D at all. Trying to impute the nature of the subsequent posts to the rest of the newsgroup is about as irrational as one can get (and you have shown me just how irrational one can get). For instance, I invite you to show how I have "subverted" or "perverted" the environment outside of this thread. Go ahead and try. I'm calling you out.[...] Yes, I'm aware how the business environment operates. And yes, Tango will always be a free product as far as I'm concerned. Why would it not be? Tango exists because we are D enthusiasts.Oh, that's interesting. Do all the other Tango contributors agree with you, or are you the official spokesman for the library? What if someone else tried to sell Tango with a license? What would you do?[...] There's really no need to utterly wig-out, is there? I asked a perfectly innocent, and what I thought to be reasonable, question.I'm sorry, Kris. I thought your question was as "sincere" as the others in your last post and I reacted accordingly. We obviously have a major disagreement over what constitutes "sincerity". Since your definition seems to flip-flop between reading sarcastic things literally and taking them as they were intended, it's very hard to tell which statements you make are sincere, and which are not. Perhaps you could do me a small favor and mark different passages that you write and respond to as [literal] or [figurative]. Then we would be on the same page.I mean, you might have had far more experience in that arena than all of Tango put together, and could thus be in a position to offer lots of solid advice on technical concerns too.I see...and you would accept my criticisms with the same level of respect you afford Janice? I'm not sure I know of any library author willing to take you up on your "offer".I asked only because you seemed to be hinting in that direction.. However, I'll take your reply to be an affirmation in the negative sense.Oh, interesting...here you seem to be able to read between the lines after all! Amazing!!! Mr. Literal was able to properly detect sarcasm! It's a miracle! Notice how selectively you do it, though. When you read one sarcastic passage literally and another figuratively, it casts serious doubts over your "sincerity". Unlike you, Kris, I feel no need to trumpet my credentials or declare how magnificent my work is. It's easy enough for someone to find different things that I've worked on, if for some reason that interests them. But you won't ever see me spell it out here, as a matter of principle. I've always felt that if you need to say how great your work is, it's because there aren't enough other people saying it for you.Thank you for clarifying my original two questions regarding your posts over Tango.Oh, you're most welcome, Mr. Literal-When-It's-Convenient. You think you are so clever what with your faux innocence and crocodile tears, and yet you freely admit that you are a prickly person that does not always play well with others. Why pretend some of the time and not others? I would respect you a lot more if you didn't play these "I'm going to be naive and innocent and literal now because it suits me" games and just stuck to your "I don't care what people think" line. Dave
Nov 25 2007
"David B. Held" <dheld codelogicconsulting.com> wrote in message news:fick79$u53$1 digitalmars.com...Kris wrote:Huh? Perhaps you should remind yourself that you are the one who's been playing sock-puppet games? As an anonymous poster?"David B. Held" <dheld codelogicconsulting.com> wroteYou asked a simple question, but I didn't see one ounce of sincerity in it. I just got done writing several long posts about the evils of anonymous posting, and now you want to accuse *me* of being the poster??I asked a simply question, and there's really no need to take this attitude.Let me ask you: Did you make that post, David? Be honest about it.Ok, ok, I admit it! I did all of it!!! I just wanted to stir the pot, so first, I wrote an anonymous post that I knew would bait people like you into responding in exactly the way I predicted. Then, to avert suspicion, I tried it again, but this time, did it in a clumsy way that was easily traceable! You figured it all out! You are so brilliant! A sincere question deserves a sincere answer.Obviously, the original poster was far more sophisticated in the ways of evading detection than I was, so let me ask you this...what would be my reward for then making a clumsy *not-so-anonymous* post?? There are only two conclusions to be made here:Oh, it was perfectly sincere. You made all the implications that you knew exactly who the poster was, and it seemed the only way you could know for sure is if it had been you. I noted that and thus asked the question, to which you appeared to answer honestly. Have you been digging a hole for yourself?1) you didn't take 5 seconds to think this through and realize that only an utter moron would perform the sequence of events: a) post as phango b) post as dheld , "anonymously" c) admit that b) was a ruseThere's little point in trying to second-guess you. Instead, I've merely been accepting what you admit to, or otherwise claim, as being the truth. You can't fault anyone for that.2) you were not being sincere Now, you are saying that 2) is not the case, so you are basically calling me a complete idiot for trying to pull off 1). Your faux "sincerity" is extremely annoying and does you no credit, and I take the insult quite personally.I asked a simple question and you answered it, noting it as being sincere. I can accept your answer or assume you are lying about it. I chose the former, since you had been honest about your sock-puppetry actions (though, in retrospect, perhaps your honesty there was due to being 'outed' ?). The rest has been entirely in your hands.Again, I chose to assume you were being honest. You specifically said you were being sincere.I will admit to being saddened by the levels that you claim to stoop to, though I guess I should not be surprised given what you've previously claimed:You're "saddened"? Oh, poor, poor crocodile...look at those big tears...You claimed earler that it was actually you, and there was no reason to assume you meant otherwise. No, it wasn't me who posted that, either. It would be great if Walter would check the logs and find out who it was.1) that you deliberately subverted the integrity of the ng via your sock-puppet spoof 2) that you'd be more than willing to do so againAt least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).Then you should drop the sarcasm?now you claim: 3) trolling against Tango is fair game for you (phangowant)Ok, since you seem to lack the basic comprehension of literary devices, I'll spell this one out for you in excruciating detail: my "admission" above is something called "sarcasm". Here's a good reference: http://en.wikipedia.org/wiki/Sarcasm. I think it's ok for me to quote an excerpt:I felt that was all that your "sincere" query deserved as a response. So to be perfectly explicit (since that seems to be what you need, in your I'm-playing-literal-and-naive mode), this is a false conclusion because I am not phango , I do not endorse anything phango says, I am opposed to trolling, and I have nothing against Tango the library, nor do I endorse attacking the library. On the other hand, I think every piece of work is open for criticism (certainly including anything I've written), but that is different from an attack in that a criticism has technical merit and an attack does not.We completely agree on the criticism aspect.Again, there was no reason to believe you were not being sincere. After all, you don't find sock-puppetry to be distasteful. Trolling is the lesser evil in my book.4) doing so with the intent to generate a flame fest was your goal ("baiting people ... exactly the way I predicted")Kris, if this is really a sincere interpretation of my words, I have to wonder if you simply have a hard time communicating with other people via idioms and expressions and forms of speech which are not literal? I understand that there are specific cognitive defects which can lead to this situation, but usually the are the result of some developmental disability that is more systemic in nature. You don't seem to merely be a high-functioning autistic or Aspberger's patient, but I don't get to see you in your normal milieu, so I can't make any kind of guess as to your condition.You had claimed to be both a puppeteer and a troll. I would say that represents a twisted agenda. The drama you're making out of this just makes you look a bit silly, imo[...] Thanks. Well, given the claims you've made so far, I'd say the NG is an inappropriate place to conduct any kind of rational discourse. I mean, what's the point if people like you are more than willing to (as you've described) subvert and/or pervert the environment? I (perhaps ignorantly) thought it was a place for D enthusiasts to discuss related topics, rather than for those with some kind of twisted agenda. That's too bad.Yes, it is too bad. Apparently, all the "rational" discourse goes on in IRC, which is clearly where the D newsgroup should migrate (not the least of all because *you* are there). If only the perverts and the subverts would go away, the D newsgroup would become a playground of rational discourse by D enthusiasts. My "twisted agenda" has rained down hellfire and brimstone on the face of D, and everything has come grinding to a halt. Oh, woe is we! Woe is we! Let us put on sackcloth and ashes and mourn for the death of our beloved newsgroup...Kris, let me remind you that the instigator of this thread was that anonymous coward posting as phango . And what fanned the flames wasTo which you had claimed was you.when you and Jeff accused Janice of being that coward (though you yourself still have not disclaimed being phango ). At that point, the thread left the realm of "rational discourse" and ceased being about D at all. Trying to impute the nature of the subsequent posts to the rest of the newsgroup is about as irrational as one can get (and you have shown me just how irrational one can get). For instance, I invite you to show how I have "subverted" or "perverted" the environment outside of this thread. Go ahead and try. I'm calling you out.Did I say you did? Instead, I've simply noted what you claimed to have done. You deliberately manipulated the ng with your sock-puppetry - that's subversion. You were quite explicit that you'd happily do so again (perhaps /threatened/ is more appropriate?). You then claimed to be the "phangowant" troll, and explicitly noted how you were trying to manipulate other posters. Did you expect a pat on the back for this?Did I say I was? You asked my opinon, and I replied "as far as I am concerned". End of story.[...] Yes, I'm aware how the business environment operates. And yes, Tango will always be a free product as far as I'm concerned. Why would it not be? Tango exists because we are D enthusiasts.Oh, that's interesting. Do all the other Tango contributors agree with you, or are you the official spokesman for the library?What if someone else tried to sell Tango with a license? What would you do?No idea. How is this relevant to your sock-puppetry?I've tried to be clear and sincere toward you. If you find you cannot respond in kind, that is your choice.[...] There's really no need to utterly wig-out, is there? I asked a perfectly innocent, and what I thought to be reasonable, question.I'm sorry, Kris. I thought your question was as "sincere" as the others in your last post and I reacted accordingly. We obviously have a major disagreement over what constitutes "sincerity".What I saw resembled a meltdown. I doubt anyone needed to read between any lines there?I asked only because you seemed to be hinting in that direction.. However, I'll take your reply to be an affirmation in the negative sense.Oh, interesting...here you seem to be able to read between the lines after all! Amazing!!! Mr. Literal was able to properly detect sarcasm! It's a miracle! Notice how selectively you do it, though. When you read one sarcastic passage literally and another figuratively, it casts serious doubts over your "sincerity".Unlike you, Kris, I feel no need to trumpet my credentials or declare how magnificent my work is. It's easy enough for someone to find different things that I've worked on, if for some reason that interests them. But you won't ever see me spell it out here, as a matter of principle. I've always felt that if you need to say how great your work is, it's because there aren't enough other people saying it for you.Strawman. I don't actually trumpet my own work. If you're talking about Tango, my contribution is just that: a contribution. As you know, there are lots of people involved, and it is that collection of skills and ideas that make Tango the great peice of work that it is. Even Tango detractors have nice things to say about it.Sad.Thank you for clarifying my original two questions regarding your posts over Tango.Oh, you're most welcome, Mr. Literal-When-It's-Convenient. You think you are so clever what with your faux innocence and crocodile tears, and yet you freely admit that you are a prickly person that does not always play well with others. Why pretend some of the time and not others? I would respect you a lot more if you didn't play these "I'm going to be naive and innocent and literal now because it suits me" games and just stuck to your "I don't care what people think" line.
Nov 25 2007
Kris wrote:I think you must have missunderstood something here Kris, or perhaps I did. David didn't claim the original phango posting was him, he claimed this one was: http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=61861 I don't know about you but when I read that it was pretty obvious that it wasn't Jeff but someone playing a prank. At least, that was my interpretation. I don't want to fan the flames which seem to have died down, just to point out there may be some areas where one or the other of you have missunderstood the situation somewhat. ReganYou claimed earler that it was actually you, and there was no reason to assume you meant otherwise. No, it wasn't me who posted that, either. It would be great if Walter would check the logs and find out who it was.1) that you deliberately subverted the integrity of the ng via your sock-puppet spoof 2) that you'd be more than willing to do so againAt least I'm honest. You've never disclaimed being phango . Since you seem to want a straight declaration, here it is: I AM NOT THE PERSON POSTING AS phango . Let me ask you: Did you make that post, Kris? Be honest about it (because if I didn't add this clause, you wouldn't be).
Nov 26 2007
It's a month until Christmas, and I think this thread isn't doing anyone any good. In the spirit of the season (forgiveness, good-will, etc.) how about we just let this thread die now? -- Daniel
Nov 25 2007
"Daniel Keep" <daniel.keep.lists gmail.com> wrote in message news:fidjbn$2ah2$1 digitalmars.com...It's a month until Christmas, and I think this thread isn't doing anyone any good. In the spirit of the season (forgiveness, good-will, etc.) how about we just let this thread die now? -- DanielGladly. No further comment.
Nov 25 2007
Daniel Keep wrote:It's a month until Christmas, and I think this thread isn't doing anyone any good. In the spirit of the season (forgiveness, good-will, etc.) how about we just let this thread die now? -- DanielHere here! /Raises glass of eggnog/ --bb
Nov 25 2007
Daniel Keep wrote:It's a month until Christmas, and I think this thread isn't doing anyone any good. In the spirit of the season (forgiveness, good-will, etc.) how about we just let this thread die now? -- DanielPlease, just let it rest in peace.
Nov 25 2007
David B. Held wrote:In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community.Your posts are almost always thoughtful and refraining from animosity. Numerous times you have implored others to do the same. Your personal attack/forgery was totally out of character. No matter how wrong you think I was, you have no excuse for acting worse.Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be.Your interpretation is wrong. When I said the charge was "legitimate", I meant as in http://dictionary.reference.com/browse/legitimate: 4. in accordance with the laws of reasoning; logically inferable; logical: a legitimate conclusion.Then, you followed up with: "It was the first thing that crossed my mind." Here, you say: "And I tend to agree with the accuser." How do I draw that conclusion? Well, it's simple. The first thing that crossed *my* mind was: "Someone is playing a dirty trick on Janice, and then exploiting it." Which means that if you had a different first impression, it must have been because you had already decided that Janice was guilty until proven innocent.Your analysis is wrong. It "crossed my mind". That's all. It looked fishy, and an obvious possibility was a sock puppet. There are other possibilities, and I reached no firm conclusions. I filed it away in the back of my mind and continued reading the newsgroup.But you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion."Wrong again, Mr. Holmes. I'm trying to make it clear that there is no confirmed guilt, only suspicion. I think I'll stop here. Believe what you want to believe. -Jeff
Nov 21 2007
Jeff Nowakowski wrote:David B. Held wrote:No matter how wrong you think I was, you have no excuse for claiming my actions were worse. If you feel strongly offended (and yes, that was the intent), then imagine how Janice felt 1) when some coward posted as "phango phangowant.com", and 2) when two other people then had the gall to accuse her of being the trickster. I didn't even get the luxury of calling you the perpetrator to complete the recreation, or justice would have truly been served. It's all about you, you, you, isn't it? My whole point here was about Janice, and that fact that *she* is the only true victim here. And yet you continue to insist that *you* are the only victim, even after personally experiencing a bit of the situation that Janice was placed in. I'm glad you got to sit in the victim-chair for a few minutes. It's too bad it didn't increase your empathy one iota.In case you haven't noticed, I haven't been working especially hard to win friends or standing in the D community.Your posts are almost always thoughtful and refraining from animosity. Numerous times you have implored others to do the same. Your personal attack/forgery was totally out of character. No matter how wrong you think I was, you have no excuse for acting worse.I already deconstructed this bit of hogwash. The only way for you to make this defense is to claim stupidity: "Yes, I really was swayed by the phango phangowant.com endorsement...until I realized it could only have been Janice in disguise!!!" Either that, or you are gravely insulting Janice's intelligence, which would be your third offence: "Yes, I really think Janice is stupid enough to post a sock puppet as phango phangowant.com...in fact, I think she's a blazing idiot!!!" Neither of those positions is particularly flattering.Well, your backpedaling and equivocation is pretty transparent, in my book. First you say: "By the way, the charge that one of the posts following yours was a sock puppet was legitimate." Here, there is no "misconstruing" going on. You clearly said: "Somebody accused you of creating a sock puppet, and that accusation was valid, not baseless." I don't think it takes a lawyer to read it that way. You made it about as unambiguous as could be.Your interpretation is wrong. When I said the charge was "legitimate", I meant as in http://dictionary.reference.com/browse/legitimate: 4. in accordance with the laws of reasoning; logically inferable; logical: a legitimate conclusion.[...]You know what's wrong with defence? If you had really stopped for two seconds to think about the implications of Janice writing those anonymous posts, you would have come to the same conclusion that I did: Completely bogus hypothesis. When *you* were the victim, all of the sudden is was worth your time to not only consider the implications of person X being the author, you made a concerted effort to find out who X was! And still, you lack the ability to put yourself in Janice's shoes and imagine that *perhaps she felt the same way you did when you accused her of being her own attacker*. This isn't about what I believe...it's about the behavior I observed. Actions speak louder than words. DaveBut you realized you had gone too far, so you decided to try to smooth things over with a CYA clause: "Doesn't mean you did it, but it's a valid suspicion."Wrong again, Mr. Holmes. I'm trying to make it clear that there is no confirmed guilt, only suspicion. I think I'll stop here. Believe what you want to believe.
Nov 23 2007
David B. Held wrote:No matter how wrong you think I was, you have no excuse for claiming my actions were worse.You crossed the line from debate to taking an underhanded action. You made a fraudulent post and used the opportunity to make a personal attack of a nature that I've never seen you do under your own name. The end does not justify the means. I wasn't going to continue this thread, but I have additional context to offer, and a response to the nature of the original anonymous poster. You seem to be coming at this from a Tango vs Phobos angle, to the point that you think I'm attacking Janice from the Tango side. That's not the case, and I hope you read the following with an open mind. First, what were my motives for entering this thread? Here's what happened. I saw the personal animosity between Kris and Janice go up a notch when Kris accused Janice of being a sock puppet ("There's a fair chance the poster below is actually Janice"). Kris later retracted his statement ("Honest mistake, Janice. Really."), but still felt upset about an "amateurish" charge that Janice made earlier ("I recall not so long ago you accused people involved with Tango as being "amateurs", or something like that. I'm not sure how that meshes with your sudden rash of indignation?") To which Janice replied "Consider the possibility that you may have misunderstood? Alas, I don't recall the quote you mention, but I'm sure that if you drag up exactly what I said word for word, I can either clarify the quote or change my mind or whatever." It seems better to argue about what was actually said if possible (as an aside, this is why I hate the idea of forums where you can edit your posts). After it was clear that neither Kris nor Janice would supply the quote and Janice didn't see any injustice, I found the quote and posted it. I even made sure to quote the part that softened Janice's statement in an effort to be fair, for which Janice thanked me. It was only after Janice still felt that nothing was wrong with the original "amateurish/petty" statement that I tried to convey that Kris was upset for the same underlying reason that upset Janice. It was not my intention at all to further the accusation against Janice, and that I did so I completely apologize for. I only meant to show it was a reasonable suspicion (not probable), and that it should not have been publically aired, and neither should have the "amateur/petty" charge. So, in light of all that, I never claimed that *I* was the only victim, nor do I agree that Janice is the only "true victim". As is usual in these kinds of disagreements, everybody involved is damaged in some respects.I already deconstructed this bit of hogwash. The only way for you to make this defense is to claim stupidity: "Yes, I really was swayed by the phango phangowant.com endorsement...until I realized it could only have been Janice in disguise!!!"You're exaggerating my position by saying "it could only have been". Personally, my Occam's razor point of view is that the post was made earnestly by somebody who chose to be anonymous. I don't see it as an attack against Janice at all -- if the very same post was made by a regular, you would have no problem with it. The "phango phangowant.com" identity is no worse than an "I <heart> New York" t-shirt. My "hmm" view is that *maybe* it was Janice. Now you claim that this is stupid. Your view, that this was an attack against Janice, I find just as unreasonable as you find mine. Asking for a fork of Tango that many might find appealing would be a really bad idea from Tango's perspective, one that nobody pro-Tango would ask for even as a false flag attack. Are you willing to admit to being wrong? Ask Walter to check the logs of the web forum. The date of the post was Sat, 17 Nov 2007 17:23:45 -0500. Find the IP address associated with that post and I bet you'll find the same IP belongs to a regular poster, either via the news server or via the web interface.Either that, or you are gravely insulting Janice's intelligence, which would be your third offence: "Yes, I really think Janice is stupid enough to post a sock puppet as phango phangowant.com...in fact, I think she's a blazing idiot!!!"As already stated, I don't see the email address as incriminating. It's only the fact that the poster is anonymous and not a regular that raised a flag for me. By the way, smart people do stupid things all the time. For reference, see the story of the CEO of Whole Foods, who posted under a pseudonym based on an anagram of his wife's name. He said things of himself like "I like Mackey's haircut. I think he looks cute!": http://valleywag.com/tech/john-mackey/whole-foods-ceo-proud-to-be-an-internet-blowhard-277793.phpWhen *you* were the victim, all of the sudden is was worth your time to not only consider the implications of person X being the author, you made a concerted effort to find out who X was!For the record, your outing is the 4th time I have uncovered an anonymous attacker. I find the practice despicable, to the point that the previous three times all involved an anonymous person attacking people I personally disliked. I'll provide archive references if you wish. I checked the original phango ... post and only saw that it came from the web, so I was blocked. So it wasn't that it was about me that got me upset. It was the action itself. It's totally out of bounds for newsgroup ethics, even given all the usual flamewars that go on.And still, you lack the ability to put yourself in Janice's shoes and imagine that *perhaps she felt the same way you did when you accused her of being her own attacker*.I completely understand and empathize with Janice's perspective, and your actions had nothing to do with it. I also understand Kris's perspective, and that's why I tried to relate the two to Janice. By the way, I've also been publically accused of making an anonymous attack before, and I responded calmly. I can provide an archival reference for that too. I'm not trying to toot my own horn, but to show that your portrayal of my motives and character is completely wrong. -Jeff
Nov 24 2007
Jeff Nowakowski wrote:David B. Held wrote:From my perspective, the thread had left the realm of "debate" long before I joined it. And as far as I'm concerned, taking something as dirty as an anonymous post and accusing the victim of being the perpetrator is as underhanded as it gets (in a way analogous to blaming rape victims, though I don't want to trivialize the issue of rape). So I didn't think I was muddying the waters any more than they already were.No matter how wrong you think I was, you have no excuse for claiming my actions were worse.You crossed the line from debate to taking an underhanded action.[...] You seem to be coming at this from a Tango vs Phobos angle, to the point that you think I'm attacking Janice from the Tango side.This isn't about Tango or Phobos at all, except to the extent that comments about those libraries happened to be at the beginning of the thread. This is about playing dirty tricks with anonymity (which is the double-edged sword of the internet).[...] You're exaggerating my position by saying "it could only have been". Personally, my Occam's razor point of view is that the post was made earnestly by somebody who chose to be anonymous. I don't see it as an attack against Janice at all -- if the very same post was made by a regular, you would have no problem with it.Right, because the poster would obviously not be afraid of putting their name on the idea. The fact that it was *anonymous* is what tips me off that it isn't sincere...and if we look at folks who are not always sincere...The "phango phangowant.com" identity is no worse than an "I <heart> New York" t-shirt. My "hmm" view is that *maybe* it was Janice.I think it's ridiculous, because if that were an honest sentiment, you wouldn't be afraid to put your name on it. You generally don't wear shirts with your name on them, but you regularly put your name on NG posts, so I don't buy the analogy.Now you claim that this is stupid. Your view, that this was an attack against Janice, I find just as unreasonable as you find mine. Asking for a fork of Tango that many might find appealing would be a really bad idea from Tango's perspective, one that nobody pro-Tango would ask for even as a false flag attack.It would make the perfect setup for an accusation of sock puppetry to discredit someone you disagree with and don't like.Are you willing to admit to being wrong? Ask Walter to check the logs of the web forum. The date of the post was Sat, 17 Nov 2007 17:23:45 -0500. Find the IP address associated with that post and I bet you'll find the same IP belongs to a regular poster, either via the news server or via the web interface.Oh, it seems almost certain that phango is a regular poster. I think it would be great if we knew who it was, and I wish we tried to do that before this thread went anywhere. I wish Walter had a policy of outing any anonymous posters, but he's a busy man and doesn't have the time for such petty things.[...] For the record, your outing is the 4th time I have uncovered an anonymous attacker. I find the practice despicable, to the point that the previous three times all involved an anonymous person attacking people I personally disliked. I'll provide archive references if you wish. I checked the original phango ... post and only saw that it came from the web, so I was blocked. So it wasn't that it was about me that got me upset. It was the action itself. It's totally out of bounds for newsgroup ethics, even given all the usual flamewars that go on.If you find it so despicable, why did you think it was ok to point fingers?[...] I'm not trying to toot my own horn, but to show that your portrayal of my motives and character is completely wrong.I'm willing to agree with that, and I think the context you provide is very helpful. I'm sorry I resorted to posting anonymously against you, and I won't do it again (for the obvious reason that I think one demonstration is well more than enough). I do find it incongruent that you seem to be so opposed to anonymous posting, but were willing to point fingers anyway; but I think we can agree that it's an ugly practice that ought not to be tolerated. Dave
Nov 25 2007
Jeff Nowakowski wrote:By the way, the charge that one of the posts following yours was a sock puppet was legitimate. It was the first thing that crossed my mind. Doesn't mean you did it, but it's a valid suspicion.I prefer to assume the best of people, it generally turns out to be true and it helps avoid things like this from happening. I would like to point out that there is a difference between thinking something might be the case and posting your suspician where it can be taken the wrong way (as an accusation) as I'm about to show... I've read Kris's explanation of what happened and I have formed my own thoughts/opinions as to his motives but I'm certainly not going to post them here. Regan
Nov 19 2007
Regan Heath wrote:I would like to point out that there is a difference between thinking something might be the case and posting your suspician where it can be taken the wrong way (as an accusation)I agree, and that was my point. Calling somebody a sock puppet in public, while a legitimate *suspicion*, is wrong if it's only based on superficial evidence. Same goes for calling somebody's design decisions amateurish or petty without first asking why they made the decision. -Jeff
Nov 19 2007
Janice Caron wrote:(...) the /decision/ to ignore the style guide was petty. Note that the criticism was of the decision, not the people making it. And actually, I do that to deliberately go against the style guide was somewhat petty. (...)And you realize that by stating that the decision was amateurish, you put yourself above the ones who made it? Thus, being a newbie, accused the Tango team of being amateurish. Tango is seen by most of its users as a replacement for Phobos, so it doesn't have to be compatible with it, or use its naming conventions. What Walter states in the 'official style guide' has to be taken with a grain of salt. With all due respect, Walter is a single programmer as well, not an oracle or a religious guru whose words have to be followed exactly. Someone creates another lib for D - they may use whatever they like. I recommend a shock therapy - looking at this code: http://dsource.org/projects/scrapple/browser/trunk/tools/tools ;) Anyway, as far as I remember, there was a deeper reason for having distinct casing conventions for module and package names. /* This might have been even before Tango (possibly in Mango) */ If lowercase was used for both module and package names, you could not have a module with the same (logical) name as a package. About two or three years ago, I still used alllowercase for modules and packages and ran into this problem a few times. I took the idea of using MixedCase for module names from Kris. And it works very well. For instance, I have a module 'OpenGL' in my code and a package 'opengl', which exist in the same directory. opengl/*.d are implementations of specific components of the OpenGL module. Had I used lowercase for everything, both would be just 'opengl' and 'opengl.foo' would be a conflict between a module in the 'opengl' package and a symbol in the 'opengl' module. See? A practical reason. Not to mention that MixedCaseNames are easier to read than mixedcasenames. On the other hand, there is no practical reason not to use MixedCase, except the dubious case sensitivity issue of certain file systems ( I use Windows and Linux / Solaris with D interchangeably and don't experience said problems with MixedCase ). If all it boils down to is personal preference and this is the main reason of this flamewar... Excuse me, but nothing is more amateurish or petty than that. But since we're all enjoying the party of expressing our preferences... I think that Tango's style is much better than the official guide, plus I consider the guide flawed for ever suggesting UPPER_CASE_NAMES for consts and enum values. I also know for a fact, that many Tango users simply agree with its design conventions, but find this entire discussion too silly and irrelevant to participate in. -- Tomasz Stachowiak http://h3.team0xf.com/ h3/h3r3tic on #D freenode
Nov 18 2007
Tom S schrieb:I also know for a fact, that many Tango users simply agree with its design conventions, but find this entire discussion too silly and irrelevant to participate in.very well said tom Frank
Nov 18 2007
Kris wrote:"Janice Caron" <caron800 googlemail.com> wroteIt seems to me the burden should be on the Tango developers here, as the newcomers, to explain to the world why the Tango convention is better, rather than asking everyone else to justify why the pre-existing and already established convention is better. The Tango convention may be better for all I know, but I don't recall hearing any compelling arguments in favor of why a change was needed. If they were given and I just forgot them, then sorry. I do recall hearing unsubstantiated claims like "we found it was better" or "we found the phobos convention to be insufficient" etc, but I don't recall any actual good arguments that made me go "hmm ah, yes indeed". Anyway given that this topic continues to come up, it seems it would be a good idea to collect all these reasons on a page over at tango.dsource.org. --bbOn 11/18/07, Kris <foo bar.com> wrote:Sure, no problem. Now, perhaps you will address the questions asked previously? I'll list them here for your convenience:Dash it all. This is what I meant to write:Phew! OK, I'm happy now. :-) Thanks for clearing things up.Seriously - Tango's stylistic issues are a big turn-off. Tango folk,when you complete your integration with Phobos, please, please fix them.Please suggest an alternate formatting style and explain why it is better.So Tango should really follow convention used by Walter in Phobos.What if that convention proves insufficient for a library that is much larger than Phobos?
Nov 18 2007
"Bill Baxter" <dnewsgroup billbaxter.com> wroteIt seems to me the burden should be on the Tango developers here, as the newcomers, to explain to the world why the Tango convention is better, rather than asking everyone else to justify why the pre-existing and already established convention is better.Newcomers? Tango has been in development for almost 4 years, Bill. As for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants. moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?
Nov 18 2007
Kris wrote:"Bill Baxter" <dnewsgroup billbaxter.com> wroteYes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.It seems to me the burden should be on the Tango developers here, as the newcomers, to explain to the world why the Tango convention is better, rather than asking everyone else to justify why the pre-existing and already established convention is better.Newcomers? Tango has been in development for almost 4 years, Bill.As for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases: In favor of lower case module names: * It's a de-facto standard established by Walter * OS Case sensitivity (or lack thereof) * Redundancy in fully qualified names (package.ClassName.ClassName) In favor of mixed case module names: * Easier to remember module names when there's a one-to-one correspondence with the class name. --bb
Nov 18 2007
"Bill Baxter" <dnewsgroup billbaxter.com>Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.Are you sure about that? :pAs for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
Nov 18 2007
Kris wrote:"Bill Baxter" <dnewsgroup billbaxter.com>Why aren't you listening? it's not "simply stylistic"! A...Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.Are you sure about that? :pAs for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
Nov 18 2007
"Alix Pexton" wrote in messageWhy aren't you listening? it's not "simply stylistic"!Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
Nov 18 2007
Kris wrote:"Alix Pexton" wrote in messageI think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...Why aren't you listening? it's not "simply stylistic"!Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
Nov 18 2007
Er, why don't you give us some examples, Alix? That's what we'd be asking you for on IRC. "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhqs6k$bi2$1 digitalmars.com...Kris wrote:"Alix Pexton" wrote in messageI think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...Why aren't you listening? it's not "simply stylistic"!Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
Nov 18 2007
Kris wrote:Er, why don't you give us some examples, Alix? That's what we'd be asking you for on IRC.I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields? This is a stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code. Just curious. I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up."Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhqs6k$bi2$1 digitalmars.com...Kris wrote:"Alix Pexton" wrote in messageI think it would be better if you just answered your critics concerns openly here where it is on record. Time and again you have been invited to explain exactly why you chose to adopt a new convention, what you believe the benefits are and enter a mature debate of its merits and flaws, but we hear again and again "sorry, don't get it", "try irc/our forum" and "well, you have a choice", and regretfully perhaps, personal attacks on the motives of other users. A...Why aren't you listening? it's not "simply stylistic"!Then I suggest you hop onto IRC and explain it better, please Alix, because I'm honestly not getting your point ,and neither are others :(
Nov 19 2007
Christopher Wright wrote:Kris wrote:This is what the D style guide suggests.Er, why don't you give us some examples, Alix? That's what we'd be asking you for on IRC.I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields?This is a stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code.For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision. Sean
Nov 19 2007
Sean Kelly wrote:Christopher Wright wrote:Groovy, thanks.Kris wrote:This is what the D style guide suggests. > This isEr, why don't you give us some examples, Alix? That's what we'd be asking you for on IRC.I'll bite. Why do you use mixedCamelCase for both member variables and methods, and the same style for both private and public fields?a stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code.For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision. Sean
Nov 19 2007
Sean Kelly wrote:Christopher Wright wrote: > This isI used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bba stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code.For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
Nov 19 2007
Bill Baxter Wrote:Sean Kelly wrote:Why do private members need to be differentiated typographically?Christopher Wright wrote: > This isI used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bba stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code.For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
Nov 19 2007
Robert Fraser wrote:Bill Baxter Wrote:More that they should be differentiated from locals. It's a reminder that you should be careful to modify the variable, and it means you don't have to read as much or search as much to find the scope of a variable. The extremes are Java and Hungarian notation. Hungarian, from the few examples I've seen, tends to be complex and opaque. Java style only takes a couple extra seconds to parse, but that's multiplied by the number of times you have to read the code. Using a prefix and associating it with a simple property is relatively clear and marks out those variables. The question is, does it actually improve readability to any appreciable degree?Sean Kelly wrote:Why do private members need to be differentiated typographically?Christopher Wright wrote: > This isI used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable. Just some food for thought. --bba stylistic topic that almost no one touches, probably because Tango conventions seem to be lifted wholesale from Java and that's how Java does it, but I find it a bit confusing and annoying when I'm reading someone else's code.For member variables, I personally prefix the non-public variables with "m_" and non-public static member variables with "sm_".I would at least prefix private variables with an underscore, if I were setting the style. But if I want to muck about with Tango's internals, I can suck it up.I avoid leading underscore prefixes because they are reserved for C/C++ standard library use. It's easiest to just avoid this format entirely than risk the rare chance of a collision.
Nov 19 2007
Robert Fraser wrote:Why do private members need to be differentiated typographically?It can increase the clarity of member functions, as a variable prefix avoids the need to place constraints on function parameter names. Also, I find it useful for operations on member data vs. local data to be obvious by inspection. I feel that doing so reduces the chance of bugs and improves readability for maintenance. Sean
Nov 19 2007
Robert Fraser wrote:Why do private members need to be differentiated typographically?I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Nov 20 2007
Walter Bright wrote:Robert Fraser wrote:Yes they're limited in scope, but that scope can be pretty much an entire file. If the scope of a class is bigger than one or two screenfuls, then flagging members can be helpful. If it's a tiny class where you can see the whole thing on one page, then I agree, differentiating members from parameters and locals is less useful. --bbWhy do private members need to be differentiated typographically?I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Nov 20 2007
Walter Bright wrote:Robert Fraser wrote:Class implementations occupy more than one screen's worth of text, while functions (typically) do not. Labeling member data indicates at a glance that the data is at class scope and not module or global scope. I find that doing so serves as a useful indicator for determining function side-effects and indicating whether mutexes and such are required. I label static members separately for the same reason. SeanWhy do private members need to be differentiated typographically?I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Nov 20 2007
Walter Bright wrote:Robert Fraser wrote:I'm in the m_ camp but I use it to flag the intent not the scope. I want a visual clue when I'm modifying the state of the object because I'm terrible at following state changes in my head (Specially with events and multi-threading). For static members I use g_ because they're simply global variables. Stating the scope is (IMHO) a pretty lame reason to add a prefix. The compiler is better at that than I am. It's the same difference between Apps Hungarian and Systems Hungarian: One it's quite useful the other is just silly. -- Julio César Carrascal Urquijo http://jcesar.artelogico.com/Why do private members need to be differentiated typographically?I kinda wonder the same thing. Private members are limited in scope, and the more limited in scope a name is, the less important it is to follow a special naming convention.
Nov 20 2007
Bill Baxter wrote:I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable.I prefer the "m_" prefix specifically because it is more visible than a suffix. Perhaps I simply haven't spent enough time with the suffix form, but I feel that it's easier to miss a trailing underscore. I am also not sure of how I would indicate static member data with a suffix... perhaps myVar_M and myVar_SM? Sean
Nov 19 2007
Sean Kelly wrote:Bill Baxter wrote:That's exactly why it's so great. It feels like you're using regular variables instead of ugly hungarian notation, but you still get the benefit of the notation when you're confused or trying to figure out what's what in a function.I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix. Apparently this style is used some by Boost as well as the ACE library. Trying to find out where it came from I ran across a quote from someone saying (in 2004) that it's "the de facto cool kids' C++ style". :-) http://discuss.joelonsoftware.com/default.asp?joel.3.49438.14 I asked the original OpenMesh devs about it and one responded that he used to be in typography before computer science, and from what he learned doing that about how humans read he could say the suffix version is definitely going to be more readable.I prefer the "m_" prefix specifically because it is more visible than a suffix. Perhaps I simply haven't spent enough time with the suffix form, but I feel that it's easier to miss a trailing underscore.I am also not sure of how I would indicate static member data with a suffix... perhaps myVar_M and myVar_SM?I guess. I used to do the ms_ for static variables but never found myself confused over whether a variable was static or not. So I dropped it. I guess I just don't use static variables enough or do enough multithreaded programming for it to be an important distinction. If I wasn't clear the convention I was talking about is to use "foo_" for private member vars. So if I wanted to annotate statics, I'd probably try "_s". --bb
Nov 19 2007
Bill Baxter wrote:I used to be a big 'm_' guy, but I recently started using trailing underscores for private members. Started doing that after porting OpenMesh from C++, which uses that convention. I was amazed at how much more readable all the code looked with the garbage characters appended as a suffix rather than a prefix.FWIW I've grown to appreciate the "my" prefix for member variables. There's simply nothing more readable and by that I mean that the ultimate test of code readability is being able to read it ALOUD and have it make perfect sense. Reading "m" or "underscore" or "member" in place of the former two just doesn't cut it for me. :-)
Nov 19 2007
Kris wrote:"Bill Baxter" <dnewsgroup billbaxter.com>Yes, I agree. But if the established guidelines work, you might as well use them...Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.Oh that's easy to answer: we understood those to be guidelines only,and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now... and if they don't work out then you should have some good reasons why. I just want to know what those reasons are so I can decide if I agree or not. And I think that's what others are really after too, even if they prefix their requests with "You silly tango developers! your keyboard was a hamster and your library smells of elderberries!".Well maybe downs would be if he were participating. :-) Personally, I'd really like to see Tango catch on in a big way. The more of a standard it becomes the more pressure there is on Walter to make sure DMD integrates with it well, and the less library writers have to worry about depending on it in their code. That being the case, I think every nay-sayer needs to have their concerns addressed in a convincing manner. Saying "we had our reasons but I don't recall right now -- and besides your concern is trivial" doesn't convince anyone. Here's another reason to spend some time convincing people to use Tango. My dad is in a much more sales-oriented field than I am and he told me one time about how there are different kinds of customers. Some customers walk in and will take anything you try to sell them. But they'll also just as happily go down the street next week to the other guy and buy from him instead. Other customers ask a lot of questions and require a lot of hand holding -- they're harder to get an initial sale out of, but once you've convinced them, often they're yours for life. They'll even go out of their way to convince *other* people to go to your shop, and ignore things like price differences, just because you've earned their trust. So, I think Sean's doing a good job building up that kind of trust for Tango. When I read his posts I think, "ok these guys have thought through these things, I see the reasoning, and I kind of agree with it. Hmm, maybe I can trust the other decisions Sean has been a part of as well."Are you sure about that? :pAs for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.That's cute. You re-post Sean's questions asking for arguments about why to change, then when you get an answer you say "actually we don't care what you answer, Tango's not changing". Well, I'd still like to suss out what the best practices are for D coding so that we can all use them and recommend them unequivocally and with solid reasons to all D coders. Those practices may precisely be the ones used in Tango already. I hope so. As has been noted several times prior, one personsThe effort is appreciated Bill, but realistically, Tango is not going to change in this manner.moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:stylistic meat is another's stylistic poison.The point here that you keep ignoring is that there's more involved than just style or personal preference. The tidbit about module/package name conflicts that Tom S brings up is another good objective reason for using Tango's convention. --bb
Nov 18 2007
"Bill Baxter" <dnewsgroup billbaxter.com> wrote ...See the post from h3 ...felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now... and if they don't work out then you should have some good reasons why. I just want to know what those reasons are so I can decide if I agree or not. And I think that's what others are really after too, even if they prefix their requests with "You silly tango developers! your keyboard was a hamster and your library smells of elderberries!".Tired of it, Bill. Some people will always latch onto something because that's just the way they are.Here's another reason to spend some time convincing people to use Tango. My dad is in a much more sales-oriented field than I am and he told me one time about how there are different kinds of customers. Some customers walk in and will take anything you try to sell them. But they'll also just as happily go down the street next week to the other guy and buy from him instead. Other customers ask a lot of questions and require a lot of hand holding -- they're harder to get an initial sale out of, but once you've convinced them, often they're yours for life. They'll even go out of their way to convince *other* people to go to your shop, and ignore things like price differences, just because you've earned their trust.There's perhaps also a case where some people are just not worth the trouble? Strangely enough, some people would prefer to have no choice, and for Tango to die a horrible death. There's little point in trying to reason with such people. I'm sure you'd agree?So, I think Sean's doing a good job building up that kind of trust for Tango. When I read his posts I think, "ok these guys have thought through these things, I see the reasoning, and I kind of agree with it. Hmm, maybe I can trust the other decisions Sean has been a part of as well."Good.For what is being asked and the reasons given, no. I explained why also (for the fourth time), but you chopped that part off :)The effort is appreciated Bill, but realistically, Tango is not going to change in this manner.That's cute. You re-post Sean's questions asking for arguments about why to change, then when you get an answer you say "actually we don't care what you answer, Tango's not changing".Well, I'd still like to suss out what the best practices are for D coding so that we can all use them and recommend them unequivocally and with solid reasons to all D coders. Those practices may precisely be the ones used in Tango already. I hope so.That's great! I certainly wish you well and would be mor than happy to participate. I'm not interested in using Tango as some kind of whipping-boy for this exercise though :)As has been noted several times prior, one personsPlease spell them out so that it's clear?stylistic meat is another's stylistic poison.The point here that you keep ignoring is that there's more involved than just style or personal preference.The tidbit about module/package name conflicts that Tom S brings up is another good objective reason for using Tango's convention.That's one of the reasons I noted at the beginning, but didn't recall the specifics of.
Nov 18 2007
Kris wrote:Yep. There are those. But every cogent, well-reasoned argument you make in the face of blustering just makes you and Tango look better to everyone watching from the sidelines. --bbHere's another reason to spend some time convincing people to use Tango. My dad is in a much more sales-oriented field than I am and he told me one time about how there are different kinds of customers. Some customers walk in and will take anything you try to sell them. But they'll also just as happily go down the street next week to the other guy and buy from him instead. Other customers ask a lot of questions and require a lot of hand holding -- they're harder to get an initial sale out of, but once you've convinced them, often they're yours for life. They'll even go out of their way to convince *other* people to go to your shop, and ignore things like price differences, just because you've earned their trust.There's perhaps also a case where some people are just not worth the trouble? Strangely enough, some people would prefer to have no choice, and for Tango to die a horrible death. There's little point in trying to reason with such people. I'm sure you'd agree?
Nov 18 2007
Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:The point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Kris wrote:Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bbThe point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Hrm ... I did look and, apart from some very recent ones from Sean, they seem to be style related? "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhra2o$rbf$1 digitalmars.com...Kris wrote:Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bbThe point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Kris wrote:Hrm ... I did look and, apart from some very recent ones from Sean, they seem to be style related?So would you like for me to spell it out for you line by line, then? --bb"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhra2o$rbf$1 digitalmars.com...Kris wrote:Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bbThe point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible that I've missed something really important. You'd be doing me a favour by spelling it out: - Kris "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhrbsb$td7$1 digitalmars.com...Kris wrote:Hrm ... I did look and, apart from some very recent ones from Sean, they seem to be style related?So would you like for me to spell it out for you line by line, then? --bb"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhra2o$rbf$1 digitalmars.com...Kris wrote:Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bbThe point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Kris wrote:Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible that I've missed something really important. You'd be doing me a favour by spelling it out: - KrisOk. Will do. Maybe part of what you're not getting is that I'm trying to be impartial here. I want the lowercase defenders to spell out their arguments just as much as I want Tango folks to. I made the list, so that everyone could see the actual arguments side by side, stripped of rhetoric and judge for themselves which convention makes the most sense for D. I tried to characterize both sides best I could. --bb"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhrbsb$td7$1 digitalmars.com...Kris wrote:Hrm ... I did look and, apart from some very recent ones from Sean, they seem to be style related?So would you like for me to spell it out for you line by line, then? --bb"Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhra2o$rbf$1 digitalmars.com...Kris wrote:Reply to Bill: "Bill Baxter" <dnewsgroup billbaxter.com> Bill, you may not have seen this response to one of your questions? I'd like to hear what it is that I'm supposed to be ignoring, so am copying it here again:Look for a thread called "Module naming conventions". There I tried to list the arguments for and against the two conventions that have nothing to do with style or personal preference. I listed all the arguments that I was able to pick out from the Phango thread and solicited for any further arguments if there were any. --bbThe point here that you keep ignoring is that there's more involved than just style or personal preference.Please spell them out so that it's clear?
Nov 18 2007
Thanks! I see your list, Bill, and I'll just keep my opinion to myself. After all, you're just trying to figure out the right style for you, as you had noted earlier. - Kris "Bill Baxter" <dnewsgroup billbaxter.com> wrote in message news:fhrdfv$vfh$1 digitalmars.com...Kris wrote:Please do, Bill. Frankly, I'm tired and weary, and it's entirely possible that I've missed something really important. You'd be doing me a favour by spelling it out: - KrisOk. Will do.
Nov 18 2007
Kris wrote:"Bill Baxter" <dnewsgroup billbaxter.com>Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background! Ultimately, I suspect that the underlying conflict arises because Tango has heavy Java influence, whereas Phobos is mostly modelled on the C standard library. Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior. As Andrei said before, D can expect a flood of refugees from C++ over the next couple of years. To be hospitable to them, we need to recognize that they'll be suffering from culture shock. This doesn't necessarily mean that Tango needs to change anything, but a more sympathetic attitude is really important. The major stumbling blocks deserve a little explanation. -Don.Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.Are you sure about that? :pAs for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:
Nov 19 2007
"Don Clugston" <dac nospam.com.au> wrote in messageKris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background!Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, being more than a tad superficial :) Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?
Nov 19 2007
Kris wrote:"Don Clugston" <dac nospam.com.au> wrote in messageYou may recall I made the same assumption a few years back until you put me right :) I think it's the (what I would call) heavy use of classes and interfaces, a very OO style if you will, which to my mind (and I may be strange) says "Java" to me. In actual fact C++ code can be written in the same fashion but it can also be written in what I would call a "C with classes" style. It's hard to put ones finger on the reasons but that is the impression I got and it seems Don had the same impression so there must be something to it... even if that something is that both of us had the same weird and random thought. ReganKris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background!Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, being more than a tad superficial :) Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?
Nov 19 2007
Kris wrote:"Don Clugston" <dac nospam.com.au> wrote in messagePerhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels much more familiar. (and similarly foreign). This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background!Sure I'm familiar with Java, Don. But I'm also familiar with Simula, Pascal, being more than a tad superficial :)Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
Nov 19 2007
Don Clugston wrote:Kris wrote:I used to be a C++ programmer, and based on the styles I used then (not invented by me, btw), would end up very close to what Tango has now. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango"Don Clugston" <dac nospam.com.au> wrote in messagePerhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels looks similar to Java (and similarly foreign). This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background!Sure I'm familiar with Java, Don. But I'm also familiar with Simula, background is being more than a tad superficial :)
Nov 19 2007
"Don Clugston" <dac nospam.com.au> wrote ...Kris wrote:FWIW, I have written mountains of C, so it's not at all unfamiliar to me. At the time I'd encourage people to write structs of pointers to encapsulate library functionality, and place those structs within other in order to gain some better degree of maintainability in very large systems (for 15 years. Actually more than that, but who's counting). It worked for us. Anyway, here's the thing: we decided that the style of Tango would have a somewhat OO flavour, rather than like a C library. This seems to be a common approach with 'modern' libraries so, as I recall, we were quite comfortable making that choice. Perhaps that's the aspect that you're seeing? I don't think it's a Java style per se, although the containers do originate there. Is it perhaps an OO style distinction?"Don Clugston" <dac nospam.com.au> wrote in messagePerhaps it's not Java at all, but rather "curly brace languages other than C/C++". For a C++ programmer, the Tango style looks very foreign, and (to me, a non-Java programmer) feels like Java. And the Phobos style feels much more familiar. Java (and similarly foreign).Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background!Sure I'm familiar with Java, Don. But I'm also familiar with Simula, background is being more than a tad superficial :)This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.(I'm an expat also, so may be used to "feeling foreign" also) You may well have a point there. Yet, this thread is not about the fact that Tango uses some decorator patterns here or there, or that the I/O system is different to C++ (phobos does that also, I expect?). Or that it has a Text class, or FilePath, or whatever. It's not about OO at all. Instead, it is about module names, of all things. I'd really like to say this is wholly relevant to being sympathetic to C++ developers, but it's hard to see the connection. Maybe you can help out there? Let me ask: how does the matter of module names significantly help a C or C++ programmer get used to all the differences in D and any D library? I would have though any significance would be in the language and library design, rather than whether the module names are lowercase, uppercase or camelcase? Isn't this a minor stylistic point instead?Ah, well the C++ part is true. It's related to why I've been such a D advocate.Now I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
Nov 19 2007
"Don Clugston" <dac nospam.com.au> wrote in message ...Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.Pardon, Don ... I switched subject lines on you. Replied under "Tango Influences" instead, since that seemed to be a more relevent heading.
Nov 19 2007
Don Clugston wrote:This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.I think this is probably true. I am a C++ person myself, and required some convincing before I accepted the Tango style being discussed.In all honesty, I've always felt Kris has a Java approach as well, and have said as much before. But that may simply be because I have little experience with Ada, Simula, etc. SeanNow I'm interested: where did you get that notion from, Don? Perhaps because I used it as an example at the conference?Long before that. You've mentioned Java a fair bit over the years. I remember that you didn't come from C++, anyway.
Nov 19 2007
Don Clugston wrote:This isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.I think you've touched on a larger issue. Languages tend to have a look and feel, and if a programmer doesn't like a particular language, they'll tend to associate those bad feelings with that look and feel. For example, in the 80's, the big divide was the C camp and the Pascal camp. The two groups were distinct, and they argued with each other a lot about which was better. Each had a distinct look and feel to their language (and their respective derivative languages). I don't like Pascal. I've deliberately resisted imbuing D with elements that resemble Pascal's look and feel, not only because of my own preference, but because I know that the C camp does not like Pascal and if D adopts a Pascal look, they will be turned off from D. D is deliberately designed so that C/C++ users will quickly feel at home with it.
Nov 19 2007
Walter Bright wrote:Don Clugston wrote:And I have to say again - the C++ libraries I have used all make me more comfortable with Tango's style than Phobos' style. And they are darn popular C++ libraries too. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoThis isn't a criticism in any way (as an expat, I spend most of my life feeling foreign!), just an observation. Most of the unfavourable comments about the Tango style seem to be coming from C++ programmers, and I think it's related to what they (we) are used to.I think you've touched on a larger issue. Languages tend to have a look and feel, and if a programmer doesn't like a particular language, they'll tend to associate those bad feelings with that look and feel. For example, in the 80's, the big divide was the C camp and the Pascal camp. The two groups were distinct, and they argued with each other a lot about which was better. Each had a distinct look and feel to their language (and their respective derivative languages). I don't like Pascal. I've deliberately resisted imbuing D with elements that resemble Pascal's look and feel, not only because of my own preference, but because I know that the C camp does not like Pascal and if D adopts a Pascal look, they will be turned off from D. D is deliberately designed so that C/C++ users will quickly feel at home with it.
Nov 19 2007
Don Clugston wrote:Kris wrote:Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily. I'm not so certain that encountering three nested packages before a module is an advantage in itself, even if those packages are well organized (for instance, NOT lumping collections in with a whole bunch of random date/time and logging stuff -- I think Tango might benefit from dumping all the packages under util into the tango package). You might be able to find the file you're working on more easily with deeper structure. It might be a frequent issue when you're working with a GUI that doesn't allow you to type a file name to select and open that file. That's the best argument I see at the moment. You've more experience than I, I'm sure, so you probably have good arguments in favor of a deeper hierarchy for your code. I'd like to hear them. And please, if I go on to argue with you about it, point me to this paragraph saying that I'm only looking for information, not a flamewar."Bill Baxter" <dnewsgroup billbaxter.com>Kris - I think there's a legitimate concern here which you've been ignoring. It would be helpful to give some background as to why Tango uses the conventions it does. And my guess is that the primary reason Tango uses the conventions it does, is that you have a Java background! Ultimately, I suspect that the underlying conflict arises because Tango has heavy Java influence, whereas Phobos is mostly modelled on the C standard library. Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Yes, newcomers. 4 is less than 10. That makes you newcomers relative to phobos and the D style guide Walter has had posted up on digitalmars.com that I presume is about as old as phobos. That's all I meant.Oh that's easy to answer: we understood those to be guidelines only, and felt that some minor details would need adjustment for our purposes. I recall there was some technical difficulty regarding module names at the time, but don't recall the specifics right now.Are you sure about that? :pAs for conventions, it is my opinion that Tango doesn't have to justify the choices made to anyone at this point. It's water under the bridge, just as the some minor stylistic choices in phobos or D are now just water under the bridge. As Walter already noted: Tango can use whatever style it wants.Yes, Tango can use whatever style it wants, but obviously some choices are better than others. Nobody here is arguing that RanDoM CaSE for module names would be a good thing, for instance.The effort is appreciated Bill, but realistically, Tango is not going to change in this manner. As has been noted several times prior, one persons stylistic meat is another's stylistic poison. There's no resolving that, and we have no wish to attempt to. It's a dilemma, and the kind of religious distinction that people would kill each other for in the past (and still do, actually). Certain individuals cannot see past that, and find bitter resentment in the use of the shift-key here and there. Yet, the same folks are staying quiet about toString() and so on. Let's face it, function/method names are used more often than import names for example. So, I feel (a) this issue is daft and/or myopic to begin with (b) there's nothing that could be done without upsetting the stylistic preferences of others (c) there's little value in paying heed to the opinion of those who "refuse" to use a library simply because it doesn't adhere to one tiny stylistic notion, which couldn't in practice be changed anyway. Better for us to listen to people who are willing to be a little flexible. Cheers;moving along, I believe Sean's two questions (posted much earlier, which I repeated on his behalf) were intended to elicit some positive feedback?Yes. I do wish certain parties would stick to the issues here. Elsewhere in this thread some constructive points have been mentioned pro and con lowercase module names. I'll try to summarize without injecting any biases:As Andrei said before, D can expect a flood of refugees from C++ over the next couple of years. To be hospitable to them, we need to recognize that they'll be suffering from culture shock. This doesn't necessarily mean that Tango needs to change anything, but a more sympathetic attitude is really important. The major stumbling blocks deserve a little explanation. -Don.
Nov 19 2007
Christopher Wright wrote:Don Clugston wrote:This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation. SeanIncidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
Nov 19 2007
Sean Kelly wrote:This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.I like flatter ones, probably because I'm too lazy to type out the long names.
Nov 20 2007
Sean Kelly wrote:Christopher Wright wrote:One could argue that you just need better documentation. Also, this hierarchical documentation could be as simple as "if you want to accomplish this task, you should look at this module", and then it's O(1) to get to the file in the flat structure, not O(log n) as with the hierarchical one. And again, you only have to write a module once, but you read it many times. When you're reading it, you know exactly which modules it references, so a flat structure is faster. Also, a documentation hierarchy can be entirely independent of the code hierarchy, so you would put your collection documentation in the collections folder, not util/collections, so it's more easily discovered. Or other things like that, where the structure of your packages is not desirable but you can't change it immediately due to legacy code. I don't recall ever having browsed through the source of a library in search of some functionality; it's always been a particular module. The documentation is where I search first. I guess I'll be using Tango more when it has a stable D2 release and I have a good IDE that can auto-import for me.Don Clugston wrote:This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
Nov 20 2007
Christopher Wright wrote:Sean Kelly wrote:Christopher Wright wrote:Don Clugston wrote:This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.And again, you only have to write a module once, but you read it many times. When you're reading it, you know exactly which modules it references, so a flat structure is faster.I think an open source project have it's code browsed very often, and even modified/mantained regularly - so I do think Sean has a point. As with everything else, there are many opinions though. I tend to like deep more than flat, even if I see pros for the flat hierarchy. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 20 2007
Christopher Wright wrote:Also, this hierarchical documentation could be as simple as "if you want to accomplish this task, you should look at this module", and then it's O(1) to get to the file in the flat structure, not O(log n) as with the hierarchical one.Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy. Taking L as the average length of a file in the hierarchical structure, it's l/n where n is the total number of modules into which the l-length module has been split. Thus the hierarchical one is O(l/n + d) where d is O(n), so it comes down to O(l) versus O(l/n + n), of which the former grows faster. And of course, you still need to find the documentation first, too... ;-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
Matti Niemenmaa wrote:Christopher Wright wrote:I just woke up and your math is confusing me :-) I like two things about hierarchical structures: first, logically grouped things are typically grouped in a directory, and second, if I have a rough idea where to look then I get fewer false hits with grep. In large code bases, this can be a real time-saver. SeanAlso, this hierarchical documentation could be as simple as "if you want to accomplish this task, you should look at this module", and then it's O(1) to get to the file in the flat structure, not O(log n) as with the hierarchical one.Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy.
Nov 20 2007
Matti Niemenmaa wrote:Christopher Wright wrote:You're saying that having fewer large modules is a direct consequence of having a flat structure and having many modules is a direct consequence of having a hierarchical structure. I disagree with that.Also, this hierarchical documentation could be as simple as "if you want to accomplish this task, you should look at this module", and then it's O(1) to get to the file in the flat structure, not O(log n) as with the hierarchical one.Ah, but consider the task of finding the right part of the module. :-) For the flat structure, it's O(l) where l is the length of the file. For the hierarchical structure, it's O(L + d) where L is the length of the right file in the hierarchy and d is the depth of the hierarchy. Taking L as the average length of a file in the hierarchical structure, it's l/n where n is the total number of modules into which the l-length module has been split. Thus the hierarchical one is O(l/n + d) where d is O(n), so it comes down to O(l) versus O(l/n + n), of which the former grows faster.And of course, you still need to find the documentation first, too... ;-)
Nov 20 2007
Christopher Wright wrote:You're saying that having fewer large modules is a direct consequence of having a flat structure and having many modules is a direct consequence of having a hierarchical structure. I disagree with that.You're right, of course. Sorry, don't know where I got that from. However, I still think the speed of finding a file given that you know where it is is at least approximately the same. Informally, I find it quicker to browse through 4 directories and then pick the right file out of 8, than to find the right file out of 32, for instance. YMMV. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fi
Nov 20 2007
Christopher Wright wrote:Sean Kelly wrote:Certainly. But I've come to accept that the existence of any documentation at all is a rare thing, and its accuracy is equally rare. Documentation also assumes the documented code is bug-free. SeanChristopher Wright wrote:One could argue that you just need better documentation.Don Clugston wrote:This is why I like deeper hierarchies. I tend to look at the code itself for reference more often than the documentation itself, so it's nice to have the code grouped in a manner that matches the documentation.Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? moving from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker. The documentation should be hierarchical or task-oriented, of course, so you can find what you're looking for easily.
Nov 20 2007
Christopher Wright wrote:Don Clugston wrote:Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. I think it's perfectly reasonable to have a fairly large number (say twenty, maybe many more) entries on each level. That gives 20*20*20 = 8000 modules with just a three-level structure. But 8000 modules in one directory would be insane. Pretty soon, all the good names are taken. For the more obscure things, you find yourself wanting to include the root name inside the module name. Two examples in Phobos are 'socketstream' and 'metastrings'. As Phobos expands, it will get worse. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep; I hope I never have to use tango.net.cluster.tina.util.model.IServer; I think tango.util.collection.HashMap is way too much to type for something so fundamental). But it has room to expand.Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Nov 26 2007
Don Clugston pisze:Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep; I hope I never have to use tango.net.cluster.tina.util.model.IServer; I think tango.util.collection.HashMap is way too much to type for something so fundamental). But it has room to expand.Yup. First one is definitely too deep. In case of second one I really don't like Java approach of putting collections into util package. IMHO collections are too fundamental in language for being threated just as part of util. It would be much nicer to have: tango.collection package instead. BR Marcin Kuszczak (aarti_pl)
Nov 26 2007
Aarti_pl pisze:Don Clugston pisze:And: tango.util.time --> tango.time tango.util.Convert --> tango.convert.Convert (after quick look into tango.util). Above are too fundamental to exist in util. These are basic concepts in every programming language. BR Marcin Kuszczak (aarti_pl)Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep; I hope I never have to use tango.net.cluster.tina.util.model.IServer; I think tango.util.collection.HashMap is way too much to type for something so fundamental). But it has room to expand.Yup. First one is definitely too deep. In case of second one I really don't like Java approach of putting collections into util package. IMHO collections are too fundamental in language for being threated just as part of util. It would be much nicer to have: tango.collection package instead.
Nov 26 2007
Don Clugston Wrote:Christopher Wright wrote:Ok, I usually just lurk and sit back and eat popcorn while reading the flames her e but I just had to comment... Are you serious? You're worried about typing out a few extra characters in your import? Seriously, how much extra time is typing out maybe 10-20 characters going to cost you, as compared to say, writing the actual code for the module? I'm not meaning to pick here but.. this just seems so inconsequential as to not even be worthy of mentioning. If a slightly deeper structure leads to all sorts of benefits (logical separation, better segmentation of generated documentation, future-proofing expansion, etc) I really don't mind the extra 5 seconds to type out a bit more at the top of a module that I'll probably be working on for _much_ longer. Less typing? Sure, but the act of physically pressing keys and getting characters on the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus 'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it works. After you're finished the 'pain' of typing that out once, you can always cut & paste it into other modules if it's that big of a deal :PDon Clugston wrote:Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep;Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Nov 26 2007
On 11/26/07, darrylb <noemail example.com> wrote:Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep;Are you serious? You're worried about typing out a few extra characters in your import? Seriously, how much extra time is typing out maybe 10-20 characters going to cost you, as compared to say, writing the actual code for the module?I'm not meaning to pick here but.. this just seems so inconsequential as to not even be worthy of mentioning.I doubt this has anything to do with number of characters typed, at least not in my case. My problem with deep nestings is that I simply do not remember them. When you have on average a single word per module ala. Python or Phobos, remembering where a class lives involves recalling a single english-sounding word, which my brain is excellently geared for. There are variations of this theme, but that is basically it. I know that any filesystem functions in Phobos lives in std.path, std.file, std.stream, std.stdio. If I had to guess the same about Tango, I might go searching the docs for words like "conduit" which bare no resemblance to what I'm actually trying to achieve. Just suggesting that for some people, this issue has more substance to it than merely a matter of style. David.If a slightly deeper structure leads to all sorts of benefits (logical separation, better segmentation of generated documentation, future-proofing expansion, etc) I really don't mind the extra 5 seconds to type out a bit more at the top of a module that I'll probably be working on for _much_ longer. Less typing? Sure, but the act of physically pressing keys and getting characters on the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus 'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it works. After you're finished the 'pain' of typing that out once, you can always cut & paste it into other modules if it's that big of a deal :P
Nov 26 2007
David Wilson Wrote:I doubt this has anything to do with number of characters typed, at least not in my case. My problem with deep nestings is that I simply do not remember them. When you have on average a single word per module ala. Python or Phobos, remembering where a class lives involves recalling a single english-sounding word, which my brain is excellently geared for. There are variations of this theme, but that is basically it. I know that any filesystem functions in Phobos lives in std.path, std.file, std.stream, std.stdio. If I had to guess the same about Tango, I might go searching the docs for words like "conduit" which bare no resemblance to what I'm actually trying to achieve. Just suggesting that for some people, this issue has more substance to it than merely a matter of style.Ok, I hear what you're saying, but I think it becomes much less relevant as the library grows. Memorizing a list of 10 items isn't so bad, but when that grows to 100, or 1000, there needs to be some sort of mechanism in place to make coherant sense of said items. That's mostly what the module pathing is for. So that, when you aren't sure exactly what you want, but you know that you need some sort of X that is itself some sort of Y, that you are likely to find it in library.Y.X, which you can look in (and look for the documentation in) rather than some libraryYX module that's mixed in with 900 others. For smaller libs that you are mostly going to keep in your head, then maybe a flatter structure would work. But I think it's forward-thinking of a lib that will become larger to be slighly extended. And the cluster example is very extreme, for the most part, we're talking about adding one layer, in rare cases, possibly two. I think that's a very acceptable trade off for being able to keep some semblance of sanity via logical separations. I suppose perhaps on another level, this discussion is more akin to, the more complex things get, the more complex they are. :). The (mildly) extended structure is in place simply to manage complexity, If it helps there, and the adversion to typing a few extra characters is only a psychological block to a solution for a real problem, while I agree that the imaginary issue can entirely be present (for some more than others), I don't think it should trump an otherwise fine solution to a very real problem (managing present and future complexity). I mean, I don't like dialing area codes for long distance either, but hey, it sure helps to manage the complexity of phone numbers, and my complaints about hitting a few extra buttons to call someplace are far outweighed by other benefits. :). Ok, it's a questionable analogy, but I just thought I'd throw it in anyway :). I still think 'tango.collection' versus 'tango.util.collection' is quite nitpicky.
Nov 26 2007
darrylb wrote:Don Clugston Wrote:You are probably 100 % right that for a fully rational person those few extra seconds you spend typing a longer module name won't make any difference at all in the long run when it comes to productivity, but we humans are irrational. I'd say there are at least three more or less rational reasons why excessively long names are bad: First, there is probably a psychological drive to minimize the effort we spend on doing things. We seem to have a bias towards overestimating the effort required for non-stimulating tasks while often underestimating the stimulating ones. Typing out a longer module name will feel like it would require much more effort than it actually would. For example, I'm betting that the number of uses for delegate literals in D increased quite tremendously when the short form (purely syntactical sugar) was introduced a while ago -- and that for very irrational reasons. Secondly, thinking about a longer and more complex name requires greater cognitive effort, wasting resources better spent elsewhere. There are actually very few things we (or at least I :) ) can keep in mind at the same time. Lowering the apparent complexity of something makes it more likely to be used. Thirdly, recalling a deeply nested name is much harder. Short names can be recalled as a single unit, while a name such as tango.net.cluster.tina.util.model.IServer probably requires several recursive memory fetch calls, flushing valuable caches in the process. :) -- OskarChristopher Wright wrote:Ok, I usually just lurk and sit back and eat popcorn while reading the flames her e but I just had to comment... Are you serious? You're worried about typing out a few extra characters in your import? Seriously, how much extra time is typing out maybe 10-20 characters going to cost you, as compared to say, writing the actual code for the module? I'm not meaning to pick here but.. this just seems so inconsequential as to not even be worthy of mentioning. If a slightly deeper structure leads to all sorts of benefits (logical separation, better segmentation of generated documentation, future-proofing expansion, etc) I really don't mind the extra 5 seconds to type out a bit more at the top of a module that I'll probably be working on for _much_ longer. Less typing? Sure, but the act of physically pressing keys and getting characters on the screen is _not_ the 'work' of the programmer... and 'tango.HashMap' versus 'tango.util.stuff.otherthings.collections.HashMap' .. who cares, as long as it works. After you're finished the 'pain' of typing that out once, you can always cut & paste it into other modules if it's that big of a deal :PDon Clugston wrote:Actually, I agree. I advocate shallow heirachies, not deep ones. But a completely flat heirarchy is not the same as a shallow one. Personally, parts of Tango's structure are a bit too deep for my liking. (I don't think frequently used stuff should be more that a couple of levels deep;Incidentally, one stylistic change between Phobos and Tango which hasn't been mentioned, is that Phobos uses a flat structure (except for a couple of things like std.c.windows.windows!). IMHO, the flat structure is decidedly inferior.Why is that? from a deep hierarchy to a shallow one -- it's less typing, and we don't see any advantages in the deeper structure. If you point out a reasonable advantage, then I can probably work quicker.
Nov 26 2007
Bill Baxter wrote:The Tango convention may be better for all I know, but I don't recall hearing any compelling arguments in favor of why a change was needed. If they were given and I just forgot them, then sorry. I do recall hearing unsubstantiated claims like "we found it was better" or "we found the phobos convention to be insufficient" etc, but I don't recall any actual good arguments that made me go "hmm ah, yes indeed". Anyway given that this topic continues to come up, it seems it would be a good idea to collect all these reasons on a page over at tango.dsource.org.I think some of the reasons may be there already, but the page is broken (for me anyway) so I can't tell you where to look. I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background. But as Tango has grown I've come to appreciate the readability that the scheme provides. For example, many of the module names in Tango are multi-word combinations: DeviceConduit, MemoryConduit, EndianProtocol, VirtualFolder, etc. I feel that eliminating the caps in these names would render them largely unreadable: deviceconduit, memoryconduit, endianprotocol, virtualfolder... The C/C++ way would be to find some abbreviated form instead, but I hesitate to think that such names would be more clear. I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead. As for capitalization being confusing for people using case-sensitive vs. case-insensitive filesystems, I suppose this is a problem I have simply never been exposed to. D is a case-sensitive language, so I would expect people using D to not make mistakes regarding capitalization, particularly when the capitalization in this case follows a simple and established convention (even if that convention doesn't match what is in the D style guide). Has this truly been a problem? Finally, I'll admit to being a bit baffled about what the big deal is anyway. The C/C++ standard library uses lowercase for /everything/, type names included, and I've yet to see someone complain to the various committees about this, even when third party libraries for the same language follow a different convention. And things are even worse in C++ because the library relies on specifically named typedefs to operate, so the convention there is viral by necessity. Regarding D, Phobos, and Tango, I think the differences between the Phobos and the Tango convention are small potatoes. Import lines may look a bit different, but /that's it/. The only other difference in style concerns global objects, of which Tango has perhaps 3-4, all of which could be aliased to something else or wrapped in about ten seconds. How can such an issue possibly be enough to discuss so much, let alone to use as grounds to reject a library entirely? Frankly, if this is the worst thing that people have to say about Tango then I think the project has succeeded beyond my wildest expectations. Sean
Nov 18 2007
Sean Kelly wrote:Bill Baxter wrote:Excellent flame-free technical post addressing the issues Sean. Thanks.I agree that deviceconduit is atrocious. But the official C++/STL/Boost way is to use underscores: #include <hash_map> #include <boost/shared_ptr.hpp> etc.. So it could be device_conduit. But then again as you mention below, in C++/STL/Boost the naming convention for files *and* classes *and* methods is lowercase w/ underscores. So you could say the file names are just being consistent with the class names.The Tango convention may be better for all I know, but I don't recall hearing any compelling arguments in favor of why a change was needed. If they were given and I just forgot them, then sorry. I do recall hearing unsubstantiated claims like "we found it was better" or "we found the phobos convention to be insufficient" etc, but I don't recall any actual good arguments that made me go "hmm ah, yes indeed". Anyway given that this topic continues to come up, it seems it would be a good idea to collect all these reasons on a page over at tango.dsource.org.I think some of the reasons may be there already, but the page is broken (for me anyway) so I can't tell you where to look. I'm not sure if it helps, but I resisted the idea of CamelCase module names when we began working on Tango, possibly because I come from a C/C++ background. But as Tango has grown I've come to appreciate the readability that the scheme provides. For example, many of the module names in Tango are multi-word combinations: DeviceConduit, MemoryConduit, EndianProtocol, VirtualFolder, etc. I feel that eliminating the caps in these names would render them largely unreadable: deviceconduit, memoryconduit, endianprotocol, virtualfolder... The C/C++ way would be to find some abbreviated form instead, but I hesitate to think that such names would be more clear.I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead.That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".As for capitalization being confusing for people using case-sensitive vs. case-insensitive filesystems, I suppose this is a problem I have simply never been exposed to. D is a case-sensitive language, so I would expect people using D to not make mistakes regarding capitalization, particularly when the capitalization in this case follows a simple and established convention (even if that convention doesn't match what is in the D style guide). Has this truly been a problem?Yeh, I don't really understand the fuss either. I use C++ libraries that have mixed case headers all the time on Windows, and the exact same issues apply as far as I know. A lot of big, well-respected libraries use this, such as Qt and OpenSceneGraph. On the other hand wxWidgets doesn't. They use the randomized compression algorithm you speak of to make a short name out of a long name. Oooh I hate that.Finally, I'll admit to being a bit baffled about what the big deal is anyway. The C/C++ standard library uses lowercase for /everything/, type names included, and I've yet to see someone complain to the various committees about this, even when third party libraries for the same language follow a different convention. And things are even worse in C++ because the library relies on specifically named typedefs to operate, so the convention there is viral by necessity.I've heard complaining. I've even been a complainer (before I started liking lower_case names :-P). But I never felt there was any hope in my complaints leading to a change. That's where D and Tango are different. :-)Regarding D, Phobos, and Tango, I think the differences between the Phobos and the Tango convention are small potatoes. Import lines may look a bit different, but /that's it/. The only other difference in style concerns global objects, of which Tango has perhaps 3-4, all of which could be aliased to something else or wrapped in about ten seconds. How can such an issue possibly be enough to discuss so much, let alone to use as grounds to reject a library entirely? Frankly, if this is the worst thing that people have to say about Tango then I think the project has succeeded beyond my wildest expectations.I agree with you there. I find that as long as something is consistent, you can get used to it, and maybe even like it after you get past your initial revulsion. But I don't actually find Tangos module naming disagreeable. I'd prefer coarser granularity than one-file-one-class, but that can be fixed easily with a few public import modules. I'm more interested in figuring what convention really makes the most sense for D overall. Since what ever it is I'd like to follow it in my own libraries too. I'm not sure what it is yet. But it doesn't seem to me that just using what language X uses turns out so well. C++ has a more flexible mapping of files to namespaces than D, so C++ conventions don't work so well. Java with one-file-per-class and every file named after the class doesn't work so well with D where there are legitimate reasons to put two major classes in one file (or maybe no classes at all). And there's also the redundancy issue with using the Java naming convention. Here's an example from my porting of OpenMesh from C++ to D. OpenMesh has a class OpenMesh::IO::Options defined in the file OpenMesh/Core/IO/Options.hh. Trying to make as few changes as possible, I named the module OpenMesh.Core.IO.Options. But it's been annoying me to no end because "Options" is such a generic name I never want to import that into my main namespace. But I think that as an FQN it's a great name, except that the actual class is called ...IO.Options.Options. --bb
Nov 18 2007
Bill Baxter wrote:Sean Kelly wrote:It's not true of every module, because as you say, not every module contains any classes at all. But for the classes that do exist in Tango, in the vast majority of cases they live in a module of the same name. The most obvious exception being modules with one 'primary' class and a number of related classes. tango.core.Thread, for example, contains Thread, ThreadLocal, and ThreadGroup. I'll admit that I find this correspondence most useful when dealing with Tango's IO package however, because it is so heavily modular. In fact, this modularity is the reason there are few aggregate modules. Tango is designed in a manner that largely avoids unused code being linked into an application by spreading it across multiple modules. One may argue that block-level linking would mostly solve this problem as well, but it currently does not work with D, and things like static data, module ctors, etc, would not be omitted even with this feature.I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead.That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".Touche. :-)Finally, I'll admit to being a bit baffled about what the big deal is anyway. The C/C++ standard library uses lowercase for /everything/, type names included, and I've yet to see someone complain to the various committees about this, even when third party libraries for the same language follow a different convention. And things are even worse in C++ because the library relies on specifically named typedefs to operate, so the convention there is viral by necessity.I've heard complaining. I've even been a complainer (before I started liking lower_case names :-P). But I never felt there was any hope in my complaints leading to a change. That's where D and Tango are different. :-)In my experience, nearly every project has slightly different demands and it is impossible for a single library to exactly meet all of those demands. However, I feel that it is the mark of a good library if it can be adapted to every project with little effort, little undesired overhead, and by not imposing design restrictions on the application by virtue of the library's own design. Tango is intended to provide a framework and style guide for application programming more than to include a tool for every job. This is the true reason for all the interface modules--they allow the user to build upon the library in a way which will most likely be portable to other applications. At the same time, Tango avoids hidden costs wherever possible. Almost no memory allocations are performed behind the scenes, exceptions are not used as a means of flow control, and so on. And finally, the library is divided into a very granular set of modules to allow the user to link only the code she actually intends to use. However, this aim towards customizability does increase the learning curve associated with Tango. Often it is not obvious just what to import to perform simple operations, and it is often necessary to import quite a few modules for an average task. Also, some users find the lack of convenience functions somewhat daunting. These are all areas where we are trying to improve Tango, but I personally feel that such an effort can only ever be moderately successful. This is because, as I said earlier, every application has slightly different requirements, and such convenience functions must necessarily assume a specific set of requirements. So I would expect such functions to be most useful to a novice programmer and for one-off projects rather than for industrial-grade applications. Sorry for being so long winded, but this is the basic rationale behind Tango's current design. Given this, I think our greatest challenge is probably making the library more accessible to new users. If you or anyone else has suggestions for this or anything else, then please let us know either here or in the Tango forums. I deal almost exclusively with rather obscure parts of the library, so I tend to forget about the high-level issues people face with Tango.Regarding D, Phobos, and Tango, I think the differences between the Phobos and the Tango convention are small potatoes. Import lines may look a bit different, but /that's it/. The only other difference in style concerns global objects, of which Tango has perhaps 3-4, all of which could be aliased to something else or wrapped in about ten seconds. How can such an issue possibly be enough to discuss so much, let alone to use as grounds to reject a library entirely? Frankly, if this is the worst thing that people have to say about Tango then I think the project has succeeded beyond my wildest expectations.I agree with you there. I find that as long as something is consistent, you can get used to it, and maybe even like it after you get past your initial revulsion. But I don't actually find Tangos module naming disagreeable. I'd prefer coarser granularity than one-file-one-class, but that can be fixed easily with a few public import modules.Here's an example from my porting of OpenMesh from C++ to D. OpenMesh has a class OpenMesh::IO::Options defined in the file OpenMesh/Core/IO/Options.hh. Trying to make as few changes as possible, I named the module OpenMesh.Core.IO.Options. But it's been annoying me to no end because "Options" is such a generic name I never want to import that into my main namespace. But I think that as an FQN it's a great name, except that the actual class is called ...IO.Options.Options.I'll admit that the double name "Options.Options" thing drives me crazy sometimes. But I haven't come up with any language feature to improve on that. So far, I just use selective imports, aliasing, etc, to make my code more compact. Sean
Nov 18 2007
Sean Kelly wrote:However, this aim towards customizability does increase the learning curve associated with Tango. Often it is not obvious just what to import to perform simple operations, and it is often necessary to import quite a few modules for an average task. Also, some users find the lack of convenience functions somewhat daunting. These are all areas where we are trying to improve Tango, but I personally feel that such an effort can only ever be moderately successful. This is because, as I said earlier, every application has slightly different requirements, and such convenience functions must necessarily assume a specific set of requirements. So I would expect such functions to be most useful to a novice programmer and for one-off projects rather than for industrial-grade applications. Sorry for being so long winded, but this is the basic rationale behind Tango's current design. Given this, I think our greatest challenge is probably making the library more accessible to new users. If you or anyone else has suggestions for this or anything else, then please let us know either here or in the Tango forums. I deal almost exclusively with rather obscure parts of the library, so I tend to forget about the high-level issues people face with Tango.I'll admit that the double name "Options.Options" thing drives me crazy sometimes. But I haven't come up with any language feature to improve on that. So far, I just use selective imports, aliasing, etc, to make my code more compact.Asking for a feature where class package.Options.Options can be accessed as just package.Options seems a decent idea at first -- the same trick works for templates after all -- but I don't think it would pan out. Other than that I don't see any other obvious language-level changes that would fix it. So maybe we're stuck with Options.Options. One thing that might help make long package names seem less annoying generally would be aliases for packages, or a package "with". alias tango.util.collection TUC; import TUC.ArrayBag; import TUC.LinkSeq; Or with (tango.util.collection) { import ArrayBag; import LinkSeq; } Or import tango.util.collection : ArrayBag, LinkSeq Given that you _can_ have "Net.d" and "net/" in the same directory, thanks to Tango's naming convention, maybe tango could provide some coarser granularity imports via up-cased directory names. So "import tango.Net" would give you all the commonly needed net stuff. "import tango.net.Cluster" would give you the important stuff from cluster/*.d I guess it's not so different from the "all.d" But I think it has more legs than all.d. With all.d you're pretty much promising that it's going to have everything, and it better be everything or people will be confused why "import tango.net.all" doesn't really import *everything* from tango.net. If you need variations, you're stuck. And making a convention of other "all"-like modules gets you into a wierd area of violating your own style conventions whereby modules should be uppercase. Whereas you could easily have variations with what I'm suggesting: "import tango.Net" -- all major tango.net stuff, "import tango.NetBase" just the fundamental net stuff without all the subdirs. Just an idea. Not sure how much I like it not having used Tango much. --bb
Nov 18 2007
Bill Baxter wrote:Asking for a feature where class package.Options.Options can be accessed as just package.Options seems a decent idea at first -- the same trick works for templates after all -- but I don't think it would pan out.You're right, templates do that, but it's a risky feature because it's essentially a special case hack. Anytime you do something like that, it can have subtle, unintended consequences. My dislike of it has been one of the motivators for changing the syntax: template Foo(T) { class Foo { ... } } has become: class Foo(T) { ... } where the hack is not necessary.
Nov 19 2007
Walter Bright wrote:Bill Baxter wrote:You could have made class Foo(T) {} a synonym for anonym template + class declaration. Still there's the problem that you may sometimes want to change the nested symbol type based on template parameters so the special case trick is still needed: template Sacrifice(int i) { static if (i == 666) class Virgin {} else class Goat {} } The c++ way would avoid the special case, but I guess the reason for static if was that it's "easier". What can you do, templates are damn verbose a language for doing functional stuff.. I personally don't like the static if since it tends to add redundancy - you need to write the same alias/const foo = blahblah several times. You could loan syntax from functional languages, but it might be hard to accommodate to a C-like language.Asking for a feature where class package.Options.Options can be accessed as just package.Options seems a decent idea at first -- the same trick works for templates after all -- but I don't think it would pan out.You're right, templates do that, but it's a risky feature because it's essentially a special case hack. Anytime you do something like that, it can have subtle, unintended consequences. My dislike of it has been one of the motivators for changing the syntax: template Foo(T) { class Foo { ... } } has become: class Foo(T) { ... } where the hack is not necessary.
Nov 19 2007
Bill Baxter wrote:Sean Kelly wrote:Quite true -- the fact that D allows free functions means that Java styles are not sufficient. BTW - it used to be called tango.math.Core, the idea being that any library could have its basic functions in a file called 'Core.d', but unfortunately there were linker issues (can't have two obj files both called core.obj).Bill Baxter wrote:Excellent flame-free technical post addressing the issues Sean. Thanks.I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead.That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
Nov 19 2007
Don Clugston wrote:Bill Baxter wrote:Oh dang, I've been using dsss for so long now that I had blissfully forgotten about that particular D issue. :-) --bbSean Kelly wrote:Quite true -- the fact that D allows free functions means that Java styles are not sufficient. BTW - it used to be called tango.math.Core, the idea being that any library could have its basic functions in a file called 'Core.d', but unfortunately there were linker issues (can't have two obj files both called core.obj).Bill Baxter wrote:Excellent flame-free technical post addressing the issues Sean. Thanks.I suppose one could argue that following the Java approach in Tango results in unneeded redundancies, such as the DeviceConduit module containing a DeviceConduit class, but again, I would argue that choosing an arbitrary name to avoid these redundancies would reduce clarity. As it is, I know that if I want to use a DeviceConduit in my app, I just have to import tango.io.DeviceConduit. There is no need to remember that the class actually lives in tango.io.blah instead.That does seem useful. But is that true for every public class? It may be working in Tango, but generally D doesn't really lend itself to Java's one-file==one-class. (because D's only way to achieve 'friends' is to put two classes in the same file). Also in Tango I see you have tango.math.Math which doesn't contain any class called "Math".
Nov 19 2007
Don Clugston wrote:Quite true -- the fact that D allows free functions means that Java styles are not sufficient. BTW - it used to be called tango.math.Core, the idea being that any library could have its basic functions in a file called 'Core.d', but unfortunately there were linker issues (can't have two obj files both called core.obj).Technically, you can, so long as the files are not in the same directory. But I'll grant that the errors can be confusing. It certainly complicated the Ares build process. Sean
Nov 19 2007
Janice Caron wrote:On 11/17/07, Kris <foo bar.com> wrote:I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development. I don't know how many people find the case issue a sticking point, but I do, and I am reluctant to use a library with such a different style not because it is ugly in its self, but because it clashes with my own style, making my code ugly and unreadable. Keep up the good work Janice! A...There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 18 2007
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:If there were 2 versions of Tango, the current "Offical" version and one like Janice'sTo be honest, I never actually intended to make this version public - I just wanted it for myself, so that I could use Tango's streams and collection classes and cryptographic hash functions, without having to ditch D2.007 or Phobos. So far I've got it working with about half of the examples that interest me, and it took three or four days, so give it another week and I'll be done. But that said, I guess I could let other people see it if they want. All the original copyright notices are still in there intact so the original programmers get their due credit. But my version isn't really "professional". I mean, it's not been tested on Mac or Linux, for a start. I also don't promise to maintain it, except to make it work with D2.008+ with the new const syntax.
Nov 18 2007
On 11/18/07, Janice Caron <caron800 googlemail.com> wrote:To be honest, I never actually intended to make this version public - I just wanted it for myself, so that I could use Tango's streams and collection classes and cryptographic hash functions, without having to ditch D2.007 or Phobos. So far I've got it working with about half of the examples that interest me, and it took three or four days, so give it another week and I'll be done.In fact, to be absolutely clear, I didn't start doing this because I didn't like the style stuff - I started this because I wanted to use it. Or at least, bits of it. (without having to give up D2.007 or Phobos). I changed the module names /because/ it was just for me. I figured, if no one else is ever going to see it, who was going to care? Might as well use a style I like. That's all. I posted about it here in the spirit of "Ooh this is cool. Look what you can do".
Nov 18 2007
Janice Caron wrote:On 11/18/07, Janice Caron <caron800 googlemail.com> wrote:Regardless of your motivations, I'm sill interested in the results. A...To be honest, I never actually intended to make this version public - I just wanted it for myself, so that I could use Tango's streams and collection classes and cryptographic hash functions, without having to ditch D2.007 or Phobos. So far I've got it working with about half of the examples that interest me, and it took three or four days, so give it another week and I'll be done.In fact, to be absolutely clear, I didn't start doing this because I didn't like the style stuff - I started this because I wanted to use it. Or at least, bits of it. (without having to give up D2.007 or Phobos). I changed the module names /because/ it was just for me. I figured, if no one else is ever going to see it, who was going to care? Might as well use a style I like. That's all. I posted about it here in the spirit of "Ooh this is cool. Look what you can do".
Nov 18 2007
yup - i'd do that too Alix Pexton Wrote:Janice Caron wrote:On 11/17/07, Kris <foo bar.com> wrote:I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development. I don't know how many people find the case issue a sticking point, but I do, and I am reluctant to use a library with such a different style not because it is ugly in its self, but because it clashes with my own style, making my code ugly and unreadable. Keep up the good work Janice! A...There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.
Nov 18 2007
Alix Pexton wrote:Janice Caron wrote:I think it shouldn't be too difficult to arrange an automated system for doing that. It could support any number of coding styles. The issue is fragmentation: you're using Tango-(phobos style), and I'm using compile each others' code. The solution would be using lots of aliases. To some extent, this can be accomplished via some CTFE/mixin-based plating, something like: string phobosAliases(T)() { string ret = ""; foreach (methodName; __traits(allMembers, T)) { ret ~= "alias " ~ methodName ~ " " ~ toPhobosCase(methodName) ~ ";\n" } return ret; } class HashMap { ... mixin phobosAliases!(HashMap); } Well, that would be if phobos didn't use the java style for class members. Given that the matter is just module-level variables, the aliasing will have to be manual. (And case-insensitive imports would beOn 11/17/07, Kris <foo bar.com> wrote:I'll say this here, for want of a better place. If there were 2 versions of Tango, the current "Offical" version and one like Janice's that comes closer to my own stylistic preferences, and that all the fuctionality was the same, only the identifiers changed, I'd use Janice's version, even if it was a few steps behind in development.There's a fair chance the poster below is actually Janice,Who? What? Don't insult me. My opinions - sure - you can insult those. Not a problem there. But don't insult /me/. Ad hominem is just downright offensive.I don't know how many people find the case issue a sticking point, but I do, and I am reluctant to use a library with such a different style not because it is ugly in its self, but because it clashes with my own style, making my code ugly and unreadable. Keep up the good work Janice! A...
Nov 18 2007
Kris a écrit :There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry) Linux kernel developers have even made a Perl script to ensure that new developers respect their "style".. The exception is some rare case where the style is truly stupid, in which case you should first convince the authors to change their style, but here for the module naming, this isn't the case: this change was a gratuitous one. renoXWhat many people fail to realize is that software doesn't survive without nurture. In fact, when you forcibly freeze software, it tends to die quite quickly (this is what happened to Simula, for those who follow language history, and it's somewhat relevant here since Simula is perhaps the closest relative to D). The take-home message is that Tango will continue to develop, grow, improve, mature, in a non-static fashion. If anyone wants to chase that with a redundant copy, that's their folly. Making a copy of Tango functionality is only inviting more work for yourselves, and generating out-of-date functionality for others to operate with. Isn't that obvious? The recommendation is this: if you'd like something changed within Tango, then request it. We can't always please everyone, but we do manage to make a lot of people happy with the (often real-time) changes we do make. Having said that, requesting sweeping stylistic changes, based purely upon personal preference, is likely to conflict with the personal preference of others. It's very hard to resolve such a dilemma, as I'm sure everyone can understand. - Kris "phango" <phango phangowant.com> wrote in message news:fhnplh$1cs3$1 digitalmars.com...i love that - please release it to us all! can't wait to get it for all the reasons you put forth.
Nov 18 2007
renoX wrote:Kris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime). -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangoThere's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Nov 18 2007
Lars Ivar Igesund a écrit :renoX wrote:*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is. Regards, renoXKris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime).There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Nov 18 2007
renoX wrote:Lars Ivar Igesund a écrit :I've not used every part of Phobos, and some parts of it do grate a little, but I do not find it confusing the way that I sometimes do with Tango. I have notthing at all against the use of CamelCase, but I think that it should be used in different ways in different places. I just feel that it is bad practice to have the same naming scheme for modules and classes. A...renoX wrote:*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is. Regards, renoXKris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime).There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Nov 18 2007
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:I have notthing at all against the use of CamelCaseI thought camel case was when every word /except/ the first was capitalised (because it's got humps in the middle, no?). likeThis. Examples are "opCall" and "toString". If the first word is also capitalised, I believe that's called titlecase (because that's what book titles do, more or less). Examples are "BufferedStream" and "DirIterator". I'm not sure what "Stdout" is. By my reckoning, stdout is two words - std (short for standard) and out (short for output). So I figure, camelcase would be "stdOut" and titlecase would be "StdOut". I guess some folk must just count it as one word.
Nov 18 2007
Janice Caron wrote:On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised. A...I have notthing at all against the use of CamelCaseI thought camel case was when every word /except/ the first was capitalised (because it's got humps in the middle, no?). likeThis. Examples are "opCall" and "toString". If the first word is also capitalised, I believe that's called titlecase (because that's what book titles do, more or less). Examples are "BufferedStream" and "DirIterator". I'm not sure what "Stdout" is. By my reckoning, stdout is two words - std (short for standard) and out (short for output). So I figure, camelcase would be "stdOut" and titlecase would be "StdOut". I guess some folk must just count it as one word.
Nov 18 2007
On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 18 2007
Janice Caron wrote:On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCa eIncludesPascalCase }.It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 19 2007
Don Clugston wrote:Janice Caron wrote:How about camelCase?On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 19 2007
Robert DaSilva wrote:Don Clugston wrote:The terms I've heard and use are lowerCamelCase and UpperCamelCase. -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fiJanice Caron wrote:How about camelCase?On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 20 2007
Matti Niemenmaa wrote:Robert DaSilva wrote:Or CamelCase and dromedarCase :) -- OskarDon Clugston wrote:The terms I've heard and use are lowerCamelCase and UpperCamelCase.Janice Caron wrote:How about camelCase?On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 20 2007
Oskar Linde wrote:Matti Niemenmaa wrote:Yes, that's another (although isn't it dromedaryCase?). But I don't like the term dromedaryCase since if it's gotMoreThanOneHump it's not a dromedary. :-) -- E-mail address: matti.niemenmaa+news, domain is iki (DOT) fiRobert DaSilva wrote:Or CamelCase and dromedarCase :)Don Clugston wrote:The terms I've heard and use are lowerCamelCase and UpperCamelCase.Janice Caron wrote:How about camelCase?On 11/18/07, Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote:Yes. It's really unfortunate, because it means that CamelCase = union{ PascalCase, theConventionThatShouldBeCalledCamelCaseButDoesntHaveANameBecauseCamelCaseIncludesPascalCase }.It was my understanding that CamelCase was the catch all term for all space-eliminating mechanisms that use capitals to denote the beginning of a new word, whether or not the first word is capitalised.Hey, according to Wikipedia, you're right! Well, you live and learn. I stand corrected.
Nov 20 2007
renoX wrote:Lars Ivar Igesund a écrit :I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though. -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the TangorenoX wrote:*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.Kris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime).There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Nov 18 2007
Lars Ivar Igesund wrote:renoX wrote:Firstly, I think it quite rude to refer to me by my surname alone, even if you are unsure if you are making the correct assumption it would be polite to prefix Mr. Secondly, my gripe has nothing to do with using Tango and Phobos together and I don't know where in what I have written I might have given that impression. I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake. All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force. I wish you all the best with your library... A...Lars Ivar Igesund a écrit :I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though.renoX wrote:*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.Kris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime).There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)
Nov 18 2007
Alix Pexton wrote:Lars Ivar Igesund wrote:Deeply sorry for this Alix, I usually get such things right, and I don't tend to use mother language as an excuse for such errors. So, sorry again.renoX wrote:Firstly, I think it quite rude to refer to me by my surname alone, even if you are unsure if you are making the correct assumption it would be polite to prefix Mr.Lars Ivar Igesund a écrit :I think it was already said, but we think that for any larger project CamelCase is more readable, something that also apply to module names. I also think it is a perfectly valid reason to distinguish a module name from the package it is in. Also note that (partially in reply to Pexton too) although someone wants to use both Tango and Phobos in the same project, there isn't any technical reason to do so beyond possibly some functionality not being present in both places. This tends to be fixed in Tango if there is a compelling reason to do so, though.renoX wrote:*Sigh*, would you have a look at the big picture please? People wants to use both Tango and Phobos, that's why there have been complaints of incompatibility between both. Tango will be made compatible with Phobos in D2.0, that's very nice but one step even better than compatibility is coherence. Phobos is the default standard library, so the true question is not "why project XXX should use the same way as Phobos?" but "why project XXX didn't use the 'Phobos way'?". A valid answer could be "this part of Phobos sucks because YYY", that would be okay: nobody claimed that Phobos is perfect, just that it is the default. So in this case, why Phobos convention of module naming isn't good enough? For me, it is.Kris a écrit :Indeed, and Tango is quite a different project from Phobos (not counting the runtime).There's a fair chance the poster below is actually Janice, but just in case there really is someone voicing an honest opinion there, read on ...Uh? That's my honest opinion: when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)Secondly, my gripe has nothing to do with using Tango and Phobos together and I don't know where in what I have written I might have given that impression.Right, misinterpreted the section where you said it conflicted with your style. I took this to mean that you followed Phobos' style, but apparently it did not.I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake. All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force.We're not immovable, we just don't understand the issue :)I wish you all the best with your library...Thanks! -- Lars Ivar Igesund blog at http://larsivi.net DSource, #d.tango & #D: larsivi Dancing the Tango
Nov 18 2007
"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake.Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this:All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force.That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Nov 18 2007
Kris wrote:"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>Its not as simple as personal preference, my preferences nor anyone elses are the issue here. I'm going to spell this out as carefully as I can even though I am quite tired, and I thought I had doneso several times already. As I understand it, your argument for using CamelCase for your module names is two fold. 1) Importing "tango.Foo" gives one access to the class within "Foo" called "Foo" 2) Using "PenIsland" (where Foo and Bar are real words with real meanings) instead of "penisland" means the meaning can not be mistaken for "penis land". (actual website btw) Now, by far the vast majority of module names that I have encountered outside of Tango are either abstract or a single word, and DO NOT share the name with any of the classes inside. This makes it a convention, and one that I believe has a very good track record for being easy to understand and with good reason. In D, I know I am importing modules, not individual classes, I expect a module that I have imported to have in it some related classes and functions, some of which I might not use and will be pruned by the linker, but that they will all have names that are unique identifiers. In Java, I know that I can import whole packages with .* (in which case I must take care within my own namespace not to shadow in imported class) or I can import an individual class and get just that class. When I first looked at Tango I though... "yay, they guys have given me a way of importing individual classes, albeit via a bit of a messy namespace kludge," but I began to realise that all was not quite as it seamed. Sometimes a Tango import brings along a bunch of other classes that I wasn't expecting, might have been added since I last looked at the library source and suddenly introduce identifiers that might be in my code. Thanks to D being D, my code at least does not compile, I hope! So you see, or I hope you do, that the CamelCase is just the tip of the issue as I see it, and that mixing up modules that are just modles, modules that are just classes and modules that are both, can create confusion and introduce errors. Maybe its not Tango's fault at all, maybe D is wrong about the correlation between namespaces, modules and classes and you are just doing the best you can within the system. I really don't like having to carefully alias module names and classes so that free functions and static methods don't look the same or having to be uber familiar with the source of the library to know which modules contain multiple classes and which contain none at all. In another language, your scheme might work fine, and this issue would not crop up, but this is D. If Walter had, despite his good intentions, implemented D so that it was more confusing to use than C++, its very unlikely that we'd discussing this at all. So it alarms me that Tango is promoted as THEE alternative library when the way it works and the way it is inflexibly conglomerated is so unlike the language itself. I know about wrapping and aliasing the imports and all that sort of thing, but I think you will agree that goes against one of the key principles that sits at the foundations of "the D mentality". That is, that the easiest way to do something should be the right way to do it, (or perhaps just conversely, that the hard way should be the wrong way.) It doesn't matter how politely you ask, the consumers are not always going to jump through hoops to make their code readable, and in the end all your suggested solution does is move the problem to another location, and in some cases actually hide it completely. On the occasions when I have used Tango, I feel like I am fighting it, where as Phobos, the Java runtime and maybe 75% of C++ libraries that I have used seem much more intuitive. Some of the libraries that I have found easiest to use, actually really sucked once you looked under the hood, but they had got the packaging right for their respective language. I'm not a professional developer, or even really more than just a passtime programmer, but I do know more than my fair share about marketing. I'm not trying to sell you my opinions, but with current first impression that I get of Tango, and the attidude that comes across (intended or otherwise) when I and others offer constructive feed back, I wonder if you actually want people to use it at all. It's as if you are writing a library simply for the sake of writing a library, of perhaps out of some sort of selfish passion to be a creator, expecting the end user to just use it and be thankful. You have given up all these ours to make the internals reliable and all those other things, don't you want people to use the damn thing? I hope that in all my input here I have at least come across as calm and respectful, but I'm begging to feel that I can only get my point across by deviating from that demeanor. I don't know what anyone else thinks, but each time I read a new anouncement or a developer's reply to a Tango related thread, the first thought that enters my head is "gah, that arogant committee of fools," but I know that you are not fools when it comes to the inner workings of your code, only where the way that you present it is concerned. And no I did not jst call you fools, for even the wisest of people can occasionally do foolish things, just as experts can make descisions that later make them appear to be amateurs. Its for this reason that most of the time I read the posts and not who has posted them, and when the topic is not Tango, why I am not surprised if I later find out where the smarter comments and suggestions come from. Metaphorically speaking, if Tango were a member of your preffered sex, they would probably be rather attractive, but I think it would be dressed in a flour sack, but pouting like it was Versace's finest, Ditch either the sack or the attitude, a shy smile and/or jeans and a tee will get you a lot further. I realise that this has been a rather rambling explanation of the issues as I see them, and that perhaps fatigue has tainted my logic with a little anger, but I only want to help you to realise that the very fastidiousness of the consistency that you have applied to your module naming scheme is the very thing that actually makes it inconsistent. And if you change nothing else, change the attitude with which you arrogantly dismiss the genuine concerns of people who want D as a whole to be a success. A...I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake.Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this:All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force.That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Nov 18 2007
Thanks for your considerable treatment of the subject Alix, but I can't agree with you because I haven't yet made /any/ statement about why Tango has the style that it does. So, your premise is incorrect to begin with? Also, you're assigning 'fault' or something to Tango, when in fact Tango has no choice in the matter. As to the whole thing about Tango modules importing others, that's just how D operates. Tango is actually very careful about what it imports: in fact, I've had lengthly and hard debates with people who want to mix functionality -- functionality that would cause more imports to be needed where they should be discrete instead. I'm /known/ for being careful about that, so you're kinda' hitting on the wrong guy here :) Also, I'm sad to hear you've felt like Tango has been fighting you. That may be a stylistic thing also, but I don't know. However, I would strongly encourage you to file tickets for such things since that's an important concern. Have you done so in the past? As for the lack of response to feedback: you are so completely wrong. I don't even know where to start, but instead I'll suggest that you spend some time on IRC, or simply look at the tickets we fix from the userbase. You know, maybe you get this idea from the ng? I mean, it seems like the only time anyone has anything to say about Tango on the ng is is topics like this - none of it particularly constructive, imo. All the action goes on over IRC and in dsource. Try it and see? "Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> wrote in message news:fhqnac$60r$1 digitalmars.com...Kris wrote:"Alix Pexton" <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_>Its not as simple as personal preference, my preferences nor anyone elses are the issue here. I'm going to spell this out as carefully as I can even though I am quite tired, and I thought I had doneso several times already. As I understand it, your argument for using CamelCase for your module names is two fold. 1) Importing "tango.Foo" gives one access to the class within "Foo" called "Foo" 2) Using "PenIsland" (where Foo and Bar are real words with real meanings) instead of "penisland" means the meaning can not be mistaken for "penis land". (actual website btw) Now, by far the vast majority of module names that I have encountered outside of Tango are either abstract or a single word, and DO NOT share the name with any of the classes inside. This makes it a convention, and one that I believe has a very good track record for being easy to understand and with good reason. In D, I know I am importing modules, not individual classes, I expect a module that I have imported to have in it some related classes and functions, some of which I might not use and will be pruned by the linker, but that they will all have names that are unique identifiers. In Java, I know that I can import whole packages with .* (in which case I must take care within my own namespace not to shadow in imported class) or I can import an individual class and get just that class. When I first looked at Tango I though... "yay, they guys have given me a way of importing individual classes, albeit via a bit of a messy namespace kludge," but I began to realise that all was not quite as it seamed. Sometimes a Tango import brings along a bunch of other classes that I wasn't expecting, might have been added since I last looked at the library source and suddenly introduce identifiers that might be in my code. Thanks to D being D, my code at least does not compile, I hope! So you see, or I hope you do, that the CamelCase is just the tip of the issue as I see it, and that mixing up modules that are just modles, modules that are just classes and modules that are both, can create confusion and introduce errors. Maybe its not Tango's fault at all, maybe D is wrong about the correlation between namespaces, modules and classes and you are just doing the best you can within the system. I really don't like having to carefully alias module names and classes so that free functions and static methods don't look the same or having to be uber familiar with the source of the library to know which modules contain multiple classes and which contain none at all. In another language, your scheme might work fine, and this issue would not crop up, but this is D. If Walter had, despite his good intentions, implemented D so that it was more confusing to use than C++, its very unlikely that we'd discussing this at all. So it alarms me that Tango is promoted as THEE alternative library when the way it works and the way it is inflexibly conglomerated is so unlike the language itself. I know about wrapping and aliasing the imports and all that sort of thing, but I think you will agree that goes against one of the key principles that sits at the foundations of "the D mentality". That is, that the easiest way to do something should be the right way to do it, (or perhaps just conversely, that the hard way should be the wrong way.) It doesn't matter how politely you ask, the consumers are not always going to jump through hoops to make their code readable, and in the end all your suggested solution does is move the problem to another location, and in some cases actually hide it completely. On the occasions when I have used Tango, I feel like I am fighting it, where as Phobos, the Java runtime and maybe 75% of C++ libraries that I have used seem much more intuitive. Some of the libraries that I have found easiest to use, actually really sucked once you looked under the hood, but they had got the packaging right for their respective language. I'm not a professional developer, or even really more than just a passtime programmer, but I do know more than my fair share about marketing. I'm not trying to sell you my opinions, but with current first impression that I get of Tango, and the attidude that comes across (intended or otherwise) when I and others offer constructive feed back, I wonder if you actually want people to use it at all. It's as if you are writing a library simply for the sake of writing a library, of perhaps out of some sort of selfish passion to be a creator, expecting the end user to just use it and be thankful. You have given up all these ours to make the internals reliable and all those other things, don't you want people to use the damn thing? I hope that in all my input here I have at least come across as calm and respectful, but I'm begging to feel that I can only get my point across by deviating from that demeanor. I don't know what anyone else thinks, but each time I read a new anouncement or a developer's reply to a Tango related thread, the first thought that enters my head is "gah, that arogant committee of fools," but I know that you are not fools when it comes to the inner workings of your code, only where the way that you present it is concerned. And no I did not jst call you fools, for even the wisest of people can occasionally do foolish things, just as experts can make descisions that later make them appear to be amateurs. Its for this reason that most of the time I read the posts and not who has posted them, and when the topic is not Tango, why I am not surprised if I later find out where the smarter comments and suggestions come from. Metaphorically speaking, if Tango were a member of your preffered sex, they would probably be rather attractive, but I think it would be dressed in a flour sack, but pouting like it was Versace's finest, Ditch either the sack or the attitude, a shy smile and/or jeans and a tee will get you a lot further. I realise that this has been a rather rambling explanation of the issues as I see them, and that perhaps fatigue has tainted my logic with a little anger, but I only want to help you to realise that the very fastidiousness of the consistency that you have applied to your module naming scheme is the very thing that actually makes it inconsistent. And if you change nothing else, change the attitude with which you arrogantly dismiss the genuine concerns of people who want D as a whole to be a success. A...I will give you credit, Tango is very consistent in its style and much of the code is very elegant, but I believe very strongly that the decision to use mixed case identifiers for BOTH module names AND classes was a mistake.Thanks, Alix, for offering an honest perspective. It's a shame that it conflicts so much with your personal preferences. However, fwiw, you'd only ever see that in the import section at the top of a module, so perhaps it's not so bad? You can also use import renaming, or you can group Tango package imports into a single wrapper import (which lots of people have already asked for). For example, other people have been asking for this:All the other issues I have with the layout of the library stem from this, but it seems that you are an immovable object, and alas I am not an unstoppable force.That's not the case at all. As I've said a couple of times in this thread: as much as we might like to, we can't go making sweeping changes to the library based upon a personal preference, because such changes would inevitably conflict with the personal preference of others. There's no way to resolve that dillema. Period. So, it's not that we're immovable at all. In fact, we're perhaps 'extremely' open to change, and often turn things around in real-time. Cheers;
Nov 18 2007
"renoX" <renosky free.fr> wrote in message news:fhpacc$jg3$1 digitalmars.com...So in this case, why Phobos convention of module naming isn't good enough? For me, it is.I suggest you try to answer sean's questions early on in this thread? That might be helpful?
Nov 18 2007
"renoX" <renosky free.fr> wrotewhen contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. So what is Tango? Why does it exist? This is my perspective only, so take it for what it is: Tango is designed to be a complete, robust, cohesive, mature and rational perhaps currently weaker in others. The goal of Tango has always been to help D get in the door of the commercial sector and, as such, it is surely a blessing for D? I mean, there's a /lot/ of work in there. And, regardless of your stylistic preferences over module names, it is a damn fine example of both solid D code and what this community is capable of when focused. It is a community effort after all. If you consider yourself to be a D enthusiast, then you perhaps ought to be thanking all those Tango folks for all their hard work instead of pissing on the communal kitchen floor :p I mean, there's no kickback for the Tango folks on this. It's not like the Tango folks will somehow retire off it (lol). Instead, there's a lot of altruism involved (you'd perhaps be shocked at the number of man-hours involved in Tango - I think it was calculated as ten man-years recently). Think about it. Yet, here we are bitching about minor stylistic issues instead. It's refreshing to hear an honest opinion from Alix (apparently a Tango detractor), about the coherency, clarity and quality of the code in Tango, because that is actually what /should/ be important. The library stands as much as an example of how to use D as anything else. It's free, it's innovative, and it includes some exemplary code from many of the best minds involved in this community. Look at the list of folks in the Tango contributor page, and you'll see what I mean. Basically, if you don't like Tango because it doesn't jive with your notion of style, that's fine.You really don't have to use it. If you don't like Tango because of some reason that we can remedy, then please hook up on IRC, or write a ticket or whatever. You'll find that the Tango folks are usually incredibly responsive ... even when their spouses would much rather the damn computer was switched off. If you're one of the many, many people who use already Tango, thanks for all the tickets you've been writing :) - Kris
Nov 18 2007
Kris wrote:"renoX" <renosky free.fr> wroteI think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!" Now, the folks who started Boost were no small fry. They weren't garage programmers fresh out of high school with a keyboard and a CRT and a ton of attitude. They were world-class, respected programmers with decades of experience and enough clout and political capital to say: "We're going to do things differently and we're right". But they didn't. They stuck with the established, standard C++ conventions, and that alone lends additional legitimacy to the effort. This is not to say that Tango made the wrong choice, or that camelCase is evil (I go both ways on the issue). However, the conceit that Tango is independent of Phobos, and that Phobos is borrowing from it, so it just has to put up or shut up is a very different reaction and attitude from Boost "lending" libraries to standard C++. One thing you learn very quickly when participating in the Boost community is that these people take C++ very seriously. If your library doesn't take into account every minute detail of the language, you are virtually guaranteed that some expert somewhere in the world is going to point this out and make a big deal about it. At first, it seems petty and overbearing. But after a while, you see that the scrutiny is a trial by fire, and that reviewed libraries themselves gain extra credibility by taking into account the criticisms and feedback of what are truly world-class experts (and sometimes you can't tell the experts from the non-experts, but usually that doesn't matter because the truth has a way of bubbling up rather quickly). What you especially learn is that there are definite best practices in the C++ community, and if you deviate from those, you had better have an excellent reason. Conformity is King. Your code had better *look* like Boost code, regardless of its quality otherwise. Your documentation had better *look* like Boost documentation if you want to be taken seriously. You had better have a full set of regression tests using the Boost.Test framework so your library will show up properly in the full regression results. Miss any of these details, or try to be an "innovator", and you risk having your library rejected. This isn't high school. This is conformity with a purpose. When a Boost reviewer says: "I think you choose a poor name for this function. Please explain why you made that choice or try this suggested name instead", the author does not say: "Hey, jump on my IRC channel and we can discuss it." That would be considered..."unprofessional"...to put it politely. At work, when people have problems with some tools, the tool authors say: "Well, just file a bug report on our forums." Unfortunately, that says: "I can't be bothered to file a bug report on your behalf, even though you spelled out the details in an email." That's not to say that IRC is a bad communications medium; merely that it has a certain barrier to entry (not everyone has an IRC client installed by default, or would know how to use one). At the end of the day, a Boost library author has to *defend* the library under review for it to be accepted. Even though the author is the one contributing free work, it is ultimately the clients who get to decide whether it meets the bar of quality. At no point would a Boost library author get away with saying: "No, you tell *me* why you think it's wrong. My library rocks. Capisce?" Rather, the reality is that authors are more likely to run to the standard and quote chapter and verse to demonstrate that they made the right choice. The onus is on the library writer to show that the library is well-designed. As Alex mentioned, it's about selling. Whether you like your customers or hate them, they are your customers, and will ultimately influence your success, even if they do nothing but elicit your unsavory side. The D community is not the Boost community, and has a long way to go to reach that level of experience (because D is a much younger language, to be sure). But that doesn't mean we can't get a head start and take the language and its users as seriously as if there were a million D programmers in the world, with users in major Fortune 500 companies, and that most of them read the D forums as religiously as c.l.c++.m. Reputations take a very long time to build, but are quite easily destroyed, and often by oneself (ask James Watson about that). Davewhen contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
Nov 18 2007
"David B. Held" <dheld codelogicconsulting.com> wrote in message news:fhr0at$g5a$1 digitalmars.com...Kris wrote:Appreciate the insights, Dave, and respect your opinion. However, you're assuming Tango was designed to be included in phobos, and that is not the case. You're also ignoring a number of important factors. For example, Tango will likely change toUtf8 -> toString in order to satisfy certain compatability desires. That wouldn't happen with the "put up or shuttup" notion you discuss. Thus, your premise appears based on something non-factual and perhaps does not apply here?"renoX" <renosky free.fr> wroteI think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!"when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
Nov 18 2007
Kris wrote:"David B. Held" <dheld codelogicconsulting.com> wrote in message news:fhr0at$g5a$1 digitalmars.com...Well, I went on IRC, through a sleepy haze I think I managed to get my concers somewhere closer to understood. I still think IRC is an appaling medium for debate, things can so get lost in the interrruption of another user joining the channel and too many people talking at once can cause more confussion than CamelCase module names, but for the time being my inner devil's advocate is sated. However... Tango definately still needs to go on a marketing course... A...Kris wrote:Appreciate the insights, Dave, and respect your opinion. However, you're assuming Tango was designed to be included in phobos, and that is not the case. You're also ignoring a number of important factors. For example, Tango will likely change toUtf8 -> toString in order to satisfy certain compatability desires. That wouldn't happen with the "put up or shuttup" notion you discuss. Thus, your premise appears based on something non-factual and perhaps does not apply here?"renoX" <renosky free.fr> wroteI think it's always worthwhile to look back on the work of others who have gone before. If I were to compare Tango to anything, I would compare it to Boost. In some ways, that is appropriate, and others, it is very generous. Like Tango, Boost was intended as a free, open-source, community-contributed library designed to improve the language community for which it was created. Unlike Tango, when Boost had to choose a naming convention, guess what they did? They said: "Ultimately, we have the ambition for this code to end up in the standard library. Thus, it must look like the standard library *now*." What they *didn't* say is: "Our code is so good, when the standard library includes it, it just better put up or shut up, yo!"when contributors add new code in a project, reusing the same style as the other code is a sign of professional/mature programmers (ok, amateurish was too strong sorry)Sure, RenoX. I agree completely. But the thing is, Tango was never intended to be a contribution to any other library. It is not a part of phobos. In fact, phobos is currently being reworked to have parts of Tango instead. So your point simply doesn't apply. You see the distinction? The outcome is that you're calling people "amateurish" and so on for no valid reason whatsoever. [...]
Nov 18 2007
David B. Held wrote: ... The Boost libraries are obviously an example of high quality design and development process. To be fair, I want to make some remarks about your analogy: The C++ standard library is more than conventions and functionality, it is a highly coherent suite of concepts. This is very different from Phobos. Boost is compatible with the C++ standard library in a way that Tango could never be, even if it was a goal from the beginning which it isn't. About the development process: Kris does have a record - on this newsgroup - of caring highly about the D language, and so do other Tango developers. I don't see how Tango is under review here, but I can confirm that when it is, or when you make tickets, posts, whatever, the responses are highly welcoming.
Nov 19 2007
Jason House wrote:Sean Kelly Wrote:Andrei and Brad Roberts are working on Phobos 2.0 in various capacities. Andrei is focusing on user-level changes, while Brad is looking at the runtime. So Phobos is still being actively matured, though likely not as quickly as Tango.D 1.0 is in maintenance mode now, so Phobos 1.0 isn't likely to change much, if at all. D 2.0 is obviously still in flux, and Phobos 2.0 has already incorporated some of Tango's changes. It is uncertain what the final result of the merge will be for D 2.0, but from a code perspective it is more likely that Phobos 2.0 will end up effectively using the Tango runtime than vice-versa. This is because everyone seems to agree that the Tango runtime is a bit more robust.I translate that to mean that the merge of Tango and Phobos relies on the Phobos developers to do the work. Is Phobos being actively matured? My previous impression is that Walter was doing both that and compiler internals... with most time dedicated to the latter.Is there a timeline when 2.0 versions of phobos and tango will be compatible? How will the pieces be partitioned? Will tango be released with new dmd versions? Will both libraries adopt the same style (naming conventions, capitalization, etc...)?All still yet to be decided, I'm afraid. Sean
Nov 16 2007