Facebook posting tomorrow



  • @morbiuswilters said:

     

    I take umbrage at that.  I never once tried to justify your existence and if you recall, I actually voted to take care of you with retroactive abortion, but was defeated by a slim Defeatocrat majority.

    Was the retroactive abortion going to be done by having somebody travel west until they went back in time to his conception, at which point they'd force the morning after pill down his mother's throat?


  • @bstorer said:

    @morbiuswilters said:

     

    I take umbrage at that.  I never once tried to justify your existence and if you recall, I actually voted to take care of you with retroactive abortion, but was defeated by a slim Defeatocrat majority.

    Was the retroactive abortion going to be done by having somebody travel west until they went back in time to his conception, at which point they'd force the morning after pill down his mother's throat?
    That's not how I would do it.  I would go back far enough that I can convince them to let me watch, then I would take over, shoving his dad out of the way.  Then I would travel East long enough that I was back in the present time.  This way he's stuck raising my bastard child.


  • @morbiuswilters said:

    @destriaero said:

    0 indices do make sense, if they don't to you, something is wrong with you.

    No, they do not.  Starting counting from zero is counter-intuitive and retarded.  "I have 20 items, numbered 0 through 19" is way sillier than "I have 20 items, numbered 1 through 20."

     

    How about, "I am standing at the first item and I wish to move down the list, how many times do I have to move from the beginning to get to each item?"

    So the first item is 0 "moves" and the 20th item is 19 "moves". Makes perfect sense to me.



  • @Zemm said:

    How about, "I am standing at the first item and I wish to move down the list, how many times do I have to move from the beginning to get to each item?"

    So the first item is 0 "moves" and the 20th item is 19 "moves". Makes perfect sense to me.


    Agreed, morbiuswilters' logic is rather flawed here.

    There are some good reasons to not use zero based indexing, but he has not hit upon a single one.



  • @Zemm said:

    How about, "I am standing at the first item and I wish to move down the list, how many times do I have to move from the beginning to get to each item?"

    So the first item is 0 "moves" and the 20th item is 19 "moves". Makes perfect sense to me.

    I've never understood this, why do you want to quantify the hypothetical space between the two items instead of simply quantifying the items themselves.  Has C so warped your mind that you disregard discrete mathematics?


  • Why are we having this discussion again? We've had it a brazillion times before. The conclusion is always the same: in a high-level language you should be using enumeration and iteration abstractions instead of arrays for collections of objects, so you never have need of numeric indexes in the first place. If you're not using these abstractions in a language that has them, then you are the real WTF. In a low-level language that doesn't have such fancy abstractions, you can have this argument, but the fact is if the language is low-level, then it sometimes makes more sense for arrays to be closer to the low-level offset structures in memory that they represent, and it sometimes doesn't. It depends on the language and application. Notwithstanding in the majority of modern languages with zero-based indexing, you can make abstractions yourself to have libraries with structures with 1-based indexing.



  • @Welbog said:

    Why are we having this discussion again? We've had it a brazillion times before. The conclusion is always the same: in a high-level language you should be using enumeration and iteration abstractions instead of arrays for collections of objects, so you never have need of numeric indexes in the first place. If you're not using these abstractions in a language that has them, then you are the real WTF. In a low-level language that doesn't have such fancy abstractions, you can have this argument, but the fact is if the language is low-level, then it sometimes makes more sense for arrays to be closer to the low-level offset structures in memory that they represent, and it sometimes doesn't. It depends on the language and application. Notwithstanding in the majority of modern languages with zero-based indexing, you can make abstractions yourself to have libraries with structures with 1-based indexing.

    And there is the simple truth that I was waiting for.


    Nice job.



  • @Welbog said:

    he conclusion is always the same: in a high-level language you should be using enumeration and iteration abstractions instead of arrays for collections of objects, so you never have need of numeric indexes in the first place. If you're not using these abstractions in a language that has them, then you are the real WTF.
    The day I use iterators for a simple substring or array slicing operation is the day I go on a murderous rampage through your workplace, home, and place of worship.



  • @bstorer said:

    The day I use iterators for a simple substring or array slicing operation is the day I go on a murderous rampage through your workplace, home, and place of worship.
    Substrings I understand, fine. Zero-based indexing there comes from the fact that strings are implemented as arrays of characters, which basically means that zero-based indexing is a poor abstraction. But what kinds of array slices do you do?



  • @Welbog said:

    Zero-based indexing there comes from the fact that strings are implemented as arrays of characters, which basically means that zero-based indexing is a poor abstraction.
    QFThat's been our point all along.



  • I always thought you guys were just whining about arrays as collections of objects. String manipulation is a whole pile of WTFs unto itself. There's never a consistent implementation of .substring across languages, and it's always so damned annoying to figure out which parameters you need to subtract 1 from, and as soon as you master it in one language, the next one does it ever so slightly differently. The zero-based indexing is just a small part of that horror.



  • @Welbog said:

    Why are we having this discussion again? We've had it a brazillion times before. The conclusion is always the same: in a high-level language you should be using enumeration and iteration abstractions instead of arrays for collections of objects, so you never have need of numeric indexes in the first place. If you're not using these abstractions in a language that has them, then you are the real WTF. In a low-level language that doesn't have such fancy abstractions, you can have this argument, but the fact is if the language is low-level, then it sometimes makes more sense for arrays to be closer to the low-level offset structures in memory that they represent, and it sometimes doesn't. It depends on the language and application. Notwithstanding in the majority of modern languages with zero-based indexing, you can make abstractions yourself to have libraries with structures with 1-based indexing.

    If that's the conclusion you draw, you are wrong.  pesto's string example is good, but there are plenty of times you need an ordered collection with incremental, numerical indexes for random access, even in high-level languages.  What's more, iteration abstractions are sometimes more painful than a simple for loop, like if you need every 3rd element.  Please engage brain before you start typing.  The fact that MasterPlanSoftware agreed with you should have been enough of a warning that you were hideously wrong. 



  • You're right. I was just unhappy at the fact that we are once again having this conversation, so I just wrote a lot of crap.

    Using the "every third" example, having a 1-based index is just as confusing as zero-based, though, since you have to be referencing elements 1, 4, 7 instead of a more intuitive 0, 3, 6, 9. But on the gripping hand that's only simpler when the first element you want is the first element in your list. Just stop reading things I write. That should help everyone involved.



  • @Welbog said:

    You're right. I was just unhappy at the fact that we are once again having this conversation, so I just wrote a lot of crap.

    You are a laser man for admitting it.

     

    @Welbog said:

    Using the "every third" example, having a 1-based index is just as confusing as zero-based, though, since you have to be referencing elements 1, 4, 7 instead of a more intuitive 0, 3, 6, 9. But on the gripping hand that's only simpler when the first element you want is the first element in your list.

    for (i = 1; i <= length; i += 3)

     

    Change "i = 1" to whatever for the proper effect.  Of course you can do this with 0-based indexes, but it's still the weird "i <= length - 1" nonsense. 



  • @Welbog said:

    Just stop reading things I write.
    Oh, sorry.  were you posting?



  • @morbiuswilters said:

    "i <= length - 1" nonsense
    Why wouldn't you use "i < length" instead of what you've put there.



  • @morbiuswilters said:

    You are a laser man for admitting it.
    I am laser than all! Indeed, I am the lasest!

    @morbiuswilters said:

    for (i = 1; i <= length; i += 3)
    If you're doing that kind of iteration a lot, wouldn't it be worthwhile to store pointers to every third object in some other collection for more straightforward access? Then you'd only have the every-third loop in one place and so it would be simpler to move to an every-fourth structure if the need ever arose. I'm not saying that you shouldn't be iterating like this, I'm just saying that if you're doing it a lot you shouldn't be. You can agree to that at least, right?



  • @Welbog said:

    If you're doing that kind of iteration a lot, wouldn't it be worthwhile to store pointers to every third object in some other collection for more straightforward access? Then you'd only have the every-third loop in one place and so it would be simpler to move to an every-fourth structure if the need ever arose. I'm not saying that you shouldn't be iterating like this, I'm just saying that if you're doing it a lot you shouldn't be. You can agree to that at least, right?

    I agree. 



  • @belgariontheking said:

    @morbiuswilters said:

    "i <= length - 1" nonsense
    Why wouldn't you use "i < length" instead of what you've put there.

    Obviously, but the "length - 1" better illustrates the absurdity of 0-based indexes.



  • @morbiuswilters said:

    I agree.
    Then I see no reason to discuss this any more.

    I can't connect to SlashNet from home ;_; Which one of you is hacking my ISP?



  • @Welbog said:

    @morbiuswilters said:
    I agree.
    Then I see no reason to discuss this any more.

    I can't connect to SlashNet from home ;_; Which one of you is hacking my ISP?

    We replaced you with a bot written in prolog. 



  • @morbiuswilters said:

    We replaced you with a poorly-written bot written in prolog. 
    FTFY



  • @Welbog said:

    You're right. I was just unhappy at the fact that we are once again having this conversation, so I just wrote a lot of crap.

    Using the "every third" example, having a 1-based index is just as confusing as zero-based, though, since you have to be referencing elements 1, 4, 7 instead of a more intuitive 0, 3, 6, 9. But on the gripping hand that's only simpler when the first element you want is the first element in your list. Just stop reading things I write. That should help everyone involved.

    Yep. The funny thing is that it started with someone going for the "2001 is teh noo meelenioom!" argument that has tired off everyone as much as the 0-based index thread.

    The funny thing is that in that case, 0-based calendar years make sense! In fact, astronomers who require to do complex math with dates have to use the proleptic Gregorian calendar with a year zero added to it, because BC years introduce a 1-year error on the numbering for negative count years. So does floor numbering; most numbering schemes already substitute some letter for the "Ground Floor": PB, G, L, whatever; so it isn't like you're going to find a "Floor 0" there, though office or apartment numbering might reflect that. (Example: my apartment building has apts numbered B-002, B-004.) It also makes more sense if you have more than one "basement" level: B3,B2,B1,L,1,2,3 for example.



  • @danixdefcon5 said:

    So does floor numbering; most numbering schemes already substitute some letter for the "Ground Floor": PB, G, L, whatever; so it isn't like you're going to find a "Floor 0" there, though office or apartment numbering might reflect that. (Example: my apartment building has apts numbered B-002, B-004.) It also makes more sense if you have more than one "basement" level: B3,B2,B1,L,1,2,3 for example.
    In Canada and the US, we number floors ordinally: First, second, third, etc. Elevators are numbered accordingly, sometimes with G or L substituted for 1. You won't find a zero-based-equivalent floor numbering in any but the most pretentious buildings in these countries.

    Other countries have a "ground, first, second" scheme, which doesn't make any sense to us.



  • @Welbog said:

    Other countries have a "ground, first, second" scheme, which doesn't make any sense to us anybody with a shred of intelligence.

    FTFY. 



  • @morbiuswilters said:

    @Welbog said:
    Other countries have a "ground, first, second" scheme, which doesn't make any sense to us anybody with a shred of intelligence.
    FTFY.
    Well, yeah. There are situations in which zero-based indexing makes sense, specifically when you're dealing with spans or relative positions instead of absolutes such as "0 minutes into the future" or "0 meters away", but floors aren't spans. They aren't intuitively zero-able, especially in English in which the terminology is "first floor" rather than "floor 1". But then again they do the same weird shit in Germany and they use ordinals instead of cardinals, too, so who knows?



  • The [ first-floor = 0 OR 1 ] and how the concept of "ground floor" fits into that is fairly moot, since from within most hallways and elevators, any floor can be directly referenced using the list of floor numbers, which list of course is consecutive only because it facilitates locating one such number, not out of systematic necessity.

    In other words, I advise people visiting me for the first time to press 3, and leave out all the n-th floor crap.



  • @danixdefcon5 said:

    The funny thing is that in that case, 0-based calendar years make sense!
     

    Because time, for all practical purposes, is non-discrete. Years are not like indexed lists.


  • :belt_onion:

    @morbiuswilters said:

    @Welbog said:

    Other countries have a "ground, first, second" scheme, which doesn't make any sense to us anybody with a shred of intelligence.

    FTFY. 

     

    I don't see what this has to do with intelligence. I guess your confusion arises from the fact that information gets lost in translation. 

    The word "verdieping" (Dutch) or "étage" (French) specifically means "a floor that is not a ground floor". I don't think there is an English equivalent word for this. Our "verdiepingen" or "étages" use a 1-based indexing system just like your floors. You cannot have a 0th étage just like you cannot have a 0th floor, therefore we call the ground floor "gelijkvloers" or "rez de chaussée".


Log in to reply