Iron Man is now powered by Oracle


  • ♿ (Parody)

    @serguey123 said:

    @TDWTF123 said:
    reduce the extent to which programming a computer is an exercise in applied mathematics.

    @boomzilla said:
    doesn't remove the exercise in applied mathematics

    You know that reduce and remove are not the same right?

    I do. When you zoom in on that bit of the argument, it looks like he's agreeing with me, even though he's missing the point.

    @serguey123 said:

    Yeah, but (to continue using Morbs analogy) you are using a car now instead of a burro

    Fine. But me talking about applied math is analogous here to Morbs talking about transportation.

    I guess we could argue about how simple a simple task is, and why it's better to have to only solve simple problems, but you and TDWTF123 seem to be arguing something like, "But figuring out 1+2 is easy, so it's not really applied math!" And I'm saying something like, "You still have to know that 1+2 is the right thing to do, and you still have to do it right." It's not my fault people think math is difficult or only about numbers.



  • @boomzilla said:

    "But figuring out 1+2 is easy, so it's not really applied math!"

    Again, reduce and remove are not the same thing, I'm not sure about TDWTF123, but at least I am talking about reducing the ammount of unnecesary applied math needed to do a task
    @boomzilla said:
    "You still have to know that 1+2 is the right thing to do, and you still have to do it right."

    That is true, but not what I'm talking about, is more like replacing a really complex equation with 1+2, again, reducing!=removing
    @boomzilla said:
    It's not my fault people think math is difficult or only about numbers.

    No, probably not but nobody is talking about that and besides hard is subjective, for me PE was the hardest subject at school


  • ♿ (Parody)

    @serguey123 said:

    again, reducing!=removing

    No shit. Why do you keep saying that?



  • @boomzilla said:

    @serguey123 said:
    again, reducing!=removing

    No shit. Why do you keep saying that?


    Because from your comments it seems that you think that we are talking about removing applied math from programming while I believe is about reducing the innecesary ammount of it so we can focus on better things and maybe if I repeat it enough times it will sink in.


  • ♿ (Parody)

    @serguey123 said:

    @boomzilla said:
    @serguey123 said:
    again, reducing!=removing

    No shit. Why do you keep saying that?

    Because from your comments it seems that you think that we are talking about removing applied math from programming while I believe is about reducing the innecesary ammount of it so we can focus on better things and maybe if I repeat it enough times it will sink in.

    No, you've read too much into TDWTF123's mixed use of remove / reduce.

    Here, let me FTFY:

    @serguey123 said:
    ...maybe if I repeat it my strawman enough times it will sink in you will think it was your idea.

    I'm not sure why you've convinced yourself that I don't think we should simplify or make things easier, because I don't think that. And I didn't say that.



  • @boomzilla said:

    No, you've read too much into TDWTF123's mixed use of remove / reduce.
    Perhaps@boomzilla said:
    I'm not sure why you've convinced yourself that I don't think we should simplify or make things easier

    I haven't, that is why I said "seems", because I'm not sure of whatever is that you are thinking
    @boomzilla said:
    I don't think that.

    Ok
    @boomzilla said:
    I didn't say that.

    I know that you didn't say so explicitly, it seemed that your comments implied this because of your responses to the other guy



  • @boomzilla said:

    Yes, programming is very creative work. So is doing mathematics (don't tell the precious flowers who like to call themselves artists). Of course, a big difference between throwing a ball and programming is that most of the mathematical work is being done consciously and explicitly.
    Exactly, I'm glad to see you get it and completely agree with me. Doing maths is creative, doing applied maths is just bean-counting. (Please note that when Newton formulated his laws, he was doing creative theoretical maths, not applied maths. Using the laws is doing applied maths.)
    @boomzilla said:
    It can change the level of abstraction and make certain things easier, but it definitely doesn't remove the exercise in applied mathematics. Reusing a solution to a known problem is generally a good thing, and a good language and set of tools and libraries does this. But it does not fundamentally change what I said. You, the programmer, still need to be able to determine that it actually solves what you're trying to solve.
    Wait. WTF? A minute ago you appeared to understand, and now this shit? That is the creative part, Charlie Dimwit.


  • ♿ (Parody)

    @TDWTF123 said:

    Doing maths is creative, doing applied maths is just bean-counting. (Please note that when Newton formulated his laws, he was doing creative theoretical maths, not applied maths. Using the laws is doing applied maths.)

    No, doing applied math is not necessarily bean counting, though bean counting is certainly applied math. If you can understand the difference between necessary and sufficient, you can grasp this.

    @TDWTF123 said:

    @boomzilla said:
    It can change the level of abstraction and make certain things easier, but it definitely doesn't remove the exercise in applied mathematics. Reusing a solution to a known problem is generally a good thing, and a good language and set of tools and libraries does this. But it does not fundamentally change what I said. You, the programmer, still need to be able to determine that it actually solves what you're trying to solve.

    Wait. WTF? A minute ago you appeared to understand, and now this shit? That is the creative part, Charlie Dimwit.

    TDEMSYR. So now you're contradicting yourself? Or just saying random things? Maybe you're just too focused on mechanical calculation or something in your understanding of applied math. Did you forget to type something?



  • @TDWTF123 said:

    Exactly, I'm glad to see you get it and completely agree with me. Doing maths is creative, doing applied maths is just bean-counting. (Please note that when Newton formulated his laws, he was doing creative theoretical maths, not applied maths. Using the laws is doing applied maths.)

    So is programming applied math? I work in the accounting industry. The programs I write are bean-counting.

    Are you saying that bean-counters shouldn't use accounting software to make the process more "mathematically pure"? Why don't we just go back to tabulating by hand instead of using calculators?

    In fact, let's make programming more mathematically pure: hand-assembled code worked out on paper and entered into the machine as hex.

     

    (Also note that whenever someone talks about "closer to the processor" what they really seem to be meaning is "closer to C". "Pointers are teh awezomez, but what's a register? What do you mean the CPU can't copy memory straight from one pointer to another?")



  • @MiffTheFox said:

    So is programming applied math? I work in the accounting industry. The programs I write are bean-counting.

    Wait.

    You have a job!?



  • @boomzilla said:

    No, doing applied math is not necessarily bean counting
    Since you get that wrong, it's easy to see why you're wrong on the rest. What do you think the 'applied' part means? Deciding which beans to count, or how to count them, is not applied, it's pure maths. Counting them according to the rules? That's applied. Solving applied maths problems generally involves doing pure maths too. Something as simple as algebraic rearrangement is a pure-math operation, let alone the complicated pure stuff like working out how to solve the problem.

    @boomzilla said:

    @TDWTF123 said:
    @boomzilla said:
    It can change the level of abstraction and make certain things easier, but it definitely doesn't remove the exercise in applied mathematics. Reusing a solution to a known problem is generally a good thing, and a good language and set of tools and libraries does this. But it does not fundamentally change what I said. You, the programmer, still need to be able to determine that it actually solves what you're trying to solve.

    Wait. WTF? A minute ago you appeared to understand, and now this shit? That is the creative part, Charlie Dimwit.

    TDEMSYR. So now you're contradicting yourself? Or just saying random things?

    I'm not sure what you found hard to follow, there. The part I highlighted is the creative part of programming. It's the part we can't get computers to do. The rest is drudge-work, ideally to be removed from the process as far as possible.



  • @boomzilla said:

    But to me, programming is just a branch of applied mathematics.

    Sure, but I don't think this really has much impact on writing high-level programs. Most high-level programs deal with business logic, not number-crunching.

    @boomzilla said:

    The sort of programmer who doesn't have a mathematical mind is the sort who cannot see any consequences from the code he writes until they happen and cannot even understand the meaning of the term edge case after you beat him over the head with it.

    I don't agree. I think having a mathematical mind can help, but I don't think it's a prerequisite to being a good programmer. Some of the better programmers I've known were bad at math, but they were good at logic, puzzle-solving and anticipating all possible outcomes of a particular action.

    @boomzilla said:

    And the sort of person who thinks mathematics dictates 0-based indexing has a very narrow understanding of mathematics, and has probably never studied much algebra, especially number theory.

    Yeah, exactly. Also, as is usually the case with people being pedantic dickweeds, they're not being pedantically dickweedish enough. For example, if you asked them to tell you what arr[4] does in C, they'd probably say it accesses the fifth element of the array, which just shows the inconsistency of their own practice, since that should be fourth element if we're being 0-indexing pedantic dickweeds about things.



  • @lucas said:

    Not the best way to start on the forums :D

    Eh, that's how stuff goes around here. Welcome, and all that.



  • @dhromed said:

    @boomzilla said:

    Welcome.
     

    There's also veal for people who are not funny.

    I hear it's really good.

    Try it.

    Be sure to beat your waiter vigorously about the testicles.


  • Considered Harmful

    @morbiuswilters said:

    For example, if you asked them to tell you what arr[4] does in C, they'd probably say it accesses the fifth element of the array, which just shows the inconsistency of their own practice, since that should be fourth element if we're being 0-indexing pedantic dickweeds about things.

    Didn't you already point out the difference between a quantity and an ordinal? I'm twenty-eight years old, I'm living my twenty-ninth year; likewise, when I was a newborn I was 0 years old but it was my first year. Array index 0 is the first element.



  • @Severity One said:

    A computer program is not a person. It's written by a person, sure, but that person should simply not look at an array as an abstraction of a stack of boxes, or something similar, because it isn't.

    No. One of the things that distinguishes a mediocre engineer from a good engineer is when they realize they are writing code for people, not computers. Sure, obviously we're also telling the computer what to do, but there are so many ways we can successfully abstract this away so it doesn't interfere with the development of good software.

    @Severity One said:

    Logic (a specialised branch of mathematics), programming and digital electronic circuits really don't differ that much. One of them you write on a blackboard, the second exists as a bunch of bytes on some sort of storage, and the third sits in little black boxes on a PCB, but essentially they're different representations of the same principles.

    What relevance does this have to anything I've said? By your reasoning, we might as well all toss software into the dustbin of history and go back to building specialized integrated circuits. But clearly, the last, what 50 years, of advancement in computer science has been the movement towards making better abstractions that let people do complex tasks more easily and more correctly.

    @Severity One said:

    For certain scenarios, zero-indexing makes perfect sense.

    Only in a low-level language where it translate directly into an address offset. And even there 1-indexing would work.

    @Severity One said:

    For other scenarios, n-indexing (why not abstract away the lower bound as well, as you can do in Pascal) makes perfect sense. To claim that one is superior to the other is like claiming that driving on one side of the road is clearly much better than driving on the other side.

    Wrong. One clearly is superior: the one people use on a daily basis, the one that is fundamentally embedded in our concept of enumeration. Sure, mathematicians and computer scientists might thing in terms of 0- and 1-indexing, but most people only think in terms of 1-indexing.

    @Severity One said:

    Why haven't you abstracted them away by using a string class or a collection class?

    Strings and collections (at least the list kind) still have indexes, and unfortunately most of those are still 0-based.

    @Severity One said:

    Why on earth are you doing boundary checks?

    Who said I was? But even in a language that does boundary checking for you, going beyond the end of the array/list/string/whatever is an exception.

    @Severity One said:

    Zero indexing is really the least of your problem when writing code. If it's causing you problems, you're using the wrong tools.

    I didn't say it was the biggest problem, it's not. Compared to most of the retarded shit that passes in the software industry today, it's very minor indeed. But things don't improve unless people think about them critically. And zero-indexing is great for getting people to do this because: 1) it is still a stupid anachronism in a modern, high-level language; and 2) established programmers are heavily biased in favor of it, because it's what they learned so it's "how computers work". It's a useful starting point for getting people to think about languages differently.



  • @joe.edwards said:

    @morbiuswilters said:
    For example, if you asked them to tell you what arr[4] does in C, they'd probably say it accesses the fifth element of the array, which just shows the inconsistency of their own practice, since that should be fourth element if we're being 0-indexing pedantic dickweeds about things.

    Didn't you already point out the difference between a quantity and an ordinal? I'm twenty-eight years old, I'm living my twenty-ninth year; likewise, when I was a newborn I was 0 years old but it was my first year. Array index 0 is the first element.

    Yes, but you're confusing matters. Indexes are ordinals. Index 0 is the zeroth element, and so on. That's how ordinals work. Honestly, isn't it stupider to say index 4 is the fifth element? Step back from your knowledge of software and think about what that even means.

    You have a quantity of 28 years (as do I!). Thus, in the idioms of our language, you are 28 years old. However, you are in the 29th year of your life (since you don't "get" a year until you finish it out). Just as a newborn is 0 years old (although we tend to give the number of days, weeks or months instead) but is in her first year of life.



  • @morbiuswilters said:

    Some of the better programmers I've known were bad at math, but they were good at logic, puzzle-solving and anticipating all possible outcomes of a particular action.

    Well, logic is a branch of math, maybe they were bad at Algebra or Calculus, but math is more than that. Granted most people only get those but maybe your friends would have rocked at Logic or Discrete Math, who knows? One of my personal pet peeves is how many people get turned off of learning at an early stage without discoverying how interesting this subjects can be if only they had better teachers



  • @serguey123 said:

    Well, logic is a branch of math

    Is it? Or is math a branch of logic?



  • @serguey123 said:

    Well, logic is a branch of math, maybe they were bad at Algebra or Calculus, but math is more than that.

    Yeah, but you could say this about damn-near anything, then. You could say good management of a company is about math skills, since it requires logical decision making.

    @serguey123 said:

    Granted most people only get those but maybe your friends would have rocked at Logic or Discrete Math, who knows?

    Maybe, I dunno. I think a lot of what makes good engineers is empathy; the ability to understand that you are writing code for other people and that it needs to be readable, maintainable and resistant to mistakes that others might make. For some people, it's not hard to write a 300-line long while loop that makes copious use of pointer arithmetic, goto statements and no variables longer than 2-characters. But what is hard for them is to see all the productive time that will be lost trying to debug, maintain and patch that turd.



  • @Ben L. said:

    @serguey123 said:
    Well, logic is a branch of math

    Is it? Or is math a branch of logic?

    Symbolic logic is usually considered a branch of mathematics.



  • @topspin said:

    Actually Morbs == Bridget100, because he uses one-based indexing.

    Actually, Morbs == Bridget10201 because Morbs++ only uses 1-indexing and because the only numeric literals permitted are ternary.


  • ♿ (Parody)

    @TDWTF123 said:

    @boomzilla said:
    No, doing applied math is not necessarily bean counting

    Since you get that wrong, it's easy to see why you're wrong on the rest. What do you think the 'applied' part means? Deciding which beans to count, or how to count them, is not applied, it's pure maths. Counting them according to the rules? That's applied. Solving applied maths problems generally involves doing pure maths too. Something as simple as algebraic rearrangement is a pure-math operation, let alone the complicated pure stuff like working out how to solve the problem.

    Eh...that's a retarded definition, so I'll just stop arguing with you now that I know that you agree with me except for your pedantic dickweedery.



  • @boomzilla said:

    Yes, programming is very creative work. So is doing mathematics (don't tell the precious flowers who like to call themselves artists).

    So is business. In fact, finding a way to create a wealth-generating enterprise out of thin air is probably the most creative endeavor known to our society. Art used to be creative, but it fell down the hole of being "creative". A lot of medieval art is tedious because it's just paintings of Madonna and child. But in 300 years people are going to look back on 20th and 21st century art and think the same thing, except it will be about shit-covered pictures of the Pope or a cage of baboons furiously ejaculating all over the American flag.


  • ♿ (Parody)

    @morbiuswilters said:

    @boomzilla said:
    But to me, programming is just a branch of applied mathematics.

    Sure, but I don't think this really has much impact on writing high-level programs. Most high-level programs deal with business logic, not number-crunching.

    Yes, and I'm saying that implementing the business logic in code is an exercise in applying mathematics.

    @morbiuswilters said:

    For example, if you asked them to tell you what arr[4] does in C, they'd probably say it accesses the fifth element of the array, which just shows the inconsistency of their own practice, since that should be fourth element if we're being 0-indexing pedantic dickweeds about things.

    And a true pedantic dickweed would point out that in C you're just doing pointer arithmetic, possibly past the end point of your "array," so it's not really an element of the array at all. But I don't know anyone like that.



  • @boomzilla said:

    Yes, and I'm saying that implementing the business logic in code is an exercise in applying mathematics.

    Now it's a semantic argument over whether we include business logic in the domain of math or not. Honestly, I can't stand semantic arguments.

    @boomzilla said:

    And a true pedantic dickweed would point out that in C you're just doing pointer arithmetic, possibly past the end point of your "array," so it's not really an element of the array at all. But I don't know anyone like that.

    Pedantic dickweed challenge accepeted!

    Well, technically you don't know that index 4 is beyond the bounds of the array, so it might be an element of the array, or it might be that the array was only declared to hold four-or-fewer items.



  • @boomzilla said:

    @TDWTF123 said:
    @boomzilla said:
    No, doing applied math is not necessarily bean counting

    Since you get that wrong, it's easy to see why you're wrong on the rest. What do you think the 'applied' part means? Deciding which beans to count, or how to count them, is not applied, it's pure maths. Counting them according to the rules? That's applied. Solving applied maths problems generally involves doing pure maths too. Something as simple as algebraic rearrangement is a pure-math operation, let alone the complicated pure stuff like working out how to solve the problem.

    Eh...that's a retarded definition, so I'll just stop arguing with you now that I know that you agree with me except for your pedantic dickweedery.

    I think you'll find you were agreeing with me, apart from your pedantic dickweedery. Sorry. I'll have to try harder to fit in.



  • @boomzilla said:

    I'm saying that implementing the business logic in code is an exercise in applying mathematics.
    I can go with that. It's a creative exercise. One in which we want to minimise the 'applying mathematics' part as far as possible, or at least make it as unconscious as that in throwing a ball.


  • ♿ (Parody)

    @morbiuswilters said:

    @boomzilla said:
    Yes, and I'm saying that implementing the business logic in code is an exercise in applying mathematics.

    Now it's a semantic argument over whether we include business logic in the domain of math or not. Honestly, I can't stand semantic arguments.

    I think it's a bit stronger than that. I'm talking about implementing them in code, which is a formal system. And ensuring that the system representation is an accurate representation of reality. I think most people wouldn't have a problem saying that implementing a physics engine is applying math. A system that follows business rules just has a different domain with different rules.


  • ♿ (Parody)

    @morbiuswilters said:

    @boomzilla said:
    And a true pedantic dickweed would point out that in C you're just doing pointer arithmetic, possibly past the end point of your "array," so it's not really an element of the array at all. But I don't know anyone like that.

    Pedantic dickweed challenge accepeted!

    Well, technically you don't know that index 4 is beyond the bounds of the array, so it might be an element of the array, or it might be that the array was only declared to hold four-or-fewer items.

    Yes, I covered that.



  • @boomzilla said:

    I think it's a bit stronger than that. I'm talking about implementing them in code, which is a formal system. And ensuring that the system representation is an accurate representation of reality. I think most people wouldn't have a problem saying that implementing a physics engine is applying math. A system that follows business rules just has a different domain with different rules.

    Regardless, we disagree on your fundamental statement that correctly implementing business logic requires more than a very, very basic understanding of math. I think most modern business programming is much more heavily-oriented towards simple logic and communication than it is strong, mathematical logic. Code is a formal system, true, but I don't think utilizing a formal system requires and understanding how formal systems are constructed. As I've said before, modern, high-level programming is much more about communicating with other people than it is about communicating with the computer.



  • @boomzilla said:

    @morbiuswilters said:
    @boomzilla said:
    And a true pedantic dickweed would point out that in C you're just doing pointer arithmetic, possibly past the end point of your "array," so it's not really an element of the array at all. But I don't know anyone like that.

    Pedantic dickweed challenge accepeted!

    Well, technically you don't know that index 4 is beyond the bounds of the array, so it might be an element of the array, or it might be that the array was only declared to hold four-or-fewer items.

    Yes, I covered that.

    I know, but it's only "not an element of the array" if it's past the end of the array. My point was you don't know if index 4 is or isn't past the end of the array, based on the code I provided.


  • ♿ (Parody)

    @morbiuswilters said:

    Regardless, we disagree on your fundamental statement that correctly implementing business logic requires more than a very, very basic understanding of math. I think most modern business programming is much more heavily-oriented towards simple logic and communication than it is strong, mathematical logic. Code is a formal system, true, but I don't think utilizing a formal system requires and understanding how formal systems are constructed.

    I'm not saying that you have prove Fermat's last theorem to process a sales discount. A person counting objects doesn't have to know about how the integers are constructed from axioms, either, but he's doing some applied math, whether or not he understands how to put it into precise formal mathematical terms. Mentally, when I approach a nontrivial coding problem, I approach it similarly to how I might approach proving some theorem. Others just use the first thing that google gives to them. I suppose they're just following a genetic algorithm approach to coding....

    @morbiuswilters said:
    As I've said before, modern, high-level programming is much more about communicating with other people than it is about communicating with the computer.

    Yes, to do a good job, you need to be a very good communicator, and be able to translate between what the people want and what the computer is capable of. I don't disagree with this at all.


  • Garbage Person

    @morbiuswilters said:

    Wait, where did you read that? I just said string handling wasn't stupid enough to require NUL-termination, not that it could handle NULs.
    I blame alcohol.

    @morbiuswilters said:

    What language are you using? Because, come to think of it, most of the (non-C) languages I work with handle NULs just fine. I don't remember if Java does, but PHP and JS do. I know this because I've used NUL as a delimiter for storing non-scalar datas in a text field in MySQL (yeah, yeah, I know..)

    Yeah, our programming toolchain handles it just fine, but we use a bunch of third party services, APIs and libraries to handle mundane don't-reinvent-the-wheel tasks like importing fixed width files into table structures. Nothing that we have that supports fixed width in any way, even the stuff that supports full-up unicode (lets not take the time to think about what 'fixed width unicode' is supposed to mean) handles NUL in any way. Which implies that there are a lot of someones dragging that stupid idiom into higher level languages.

     

     

    Oh, and while I'm here, we have a very expensive print design/production tool (seven figures to implement without counting the hardware it runs on or the training)  that has an internal scripting language. It's arrays are either zero-based or one-based depending on what the array contains. An array of fully rendered pages is 1-based. An array of anything else (including abstract, unrendered pages) is 0-based.



  • @boomzilla said:

    I'm not saying that you have prove Fermat's last theorem to process a sales discount.

    That is exactly what you said.

    @boomzilla said:

    Mentally, when I approach a nontrivial coding problem, I approach it similarly to how I might approach proving some theorem.

    I approach it like "Morbs has a kiddie pool of Thunderbird in the middle of his living room floor. He has a 5 gallon bucket and a 3 gallon bucket, and he wants to measure out precisely 4 gallons of Thunderbird. How does he do it?"


    Then I drink the 4 gallons of Thunderbird and email Nagesh to see if he's finished doing my work yet so I can wire over this week's $50.



  • @Weng said:

    I blame alcohol.

    That always works for me. Except when the judge is in a particularly bad mood or the kid I ran over is particularly cute.

    @Weng said:

    Nothing that we have that supports fixed width in any way, even the stuff that supports full-up unicode (lets not take the time to think about what 'fixed width unicode' is supposed to mean) handles NUL in any way.

    So you must only support UTF-8 then.

    @Weng said:

    Oh, and while I'm here, we have a very expensive print design/production tool (seven figures to implement without counting the hardware it runs on or the training)  that has an internal scripting language. It's arrays are either zero-based or one-based depending on what the array contains. An array of fully rendered pages is 1-based. An array of anything else (including abstract, unrendered pages) is 0-based.

    Dear God.



  • @morbiuswilters said:

    No. One of the things that distinguishes a mediocre engineer from a good engineer is when they realize they are writing code for people, not computers. Sure, obviously we're also telling the computer what to do, but there are so many ways we can successfully abstract this away so it doesn't interfere with the development of good software.
    You can't really compare a tool like Word to a tool like Visual Studio, or a programming language in general. So what you write has to be specific for your audience. People would likely complain if Word would start numbered lists counting at 0, but a programming language requires a mathematical way of looking at things: abstracting, seeing patterns (design patterns for example), that sort of thing. Just because Joe Sixpack starts counting from one (and probably up to six) doesn't mean that this paradigm should be used everywhere. It really depends.

    For some reason, some people assume that I'm defending zero-indexing because I like it, or because it's written in the constitution and you can't change it, or something of the sort. I'm not. What I'm doing is pointing out that the "zero indexing is ungood" mantra doesn't make an awful lot of sense once you start looking at it critically.

    @morbiuswilters said:

    What relevance does this have to anything I've said? By your reasoning, we might as well all toss software into the dustbin of history and go back to building specialized integrated circuits. But clearly, the last, what 50 years, of advancement in computer science has been the movement towards making better abstractions that let people do complex tasks more easily and more correctly.
    The relevance is that you were claiming that programming is not applied mathematics. Some people in this thread are still vehemently claiming that, and I seriously wonder if they ever went beyond third-grader maths.

    @morbiuswilters said:

    @Severity One said:
    For certain scenarios, zero-indexing makes perfect sense.

    Only in a low-level language where it translate directly into an address offset. And even there 1-indexing would work.

    Look at a matrix. Decide to store it in a one-dimensional array. Finding the location in the array based on coordinates, or vice versa, is a lot easier with zero-indexing. I could probably come up with a more meaningful example, but you get the idea.

    @morbiuswilters said:

    Wrong. One clearly is superior: the one people use on a daily basis, the one that is fundamentally embedded in our concept of enumeration. Sure, mathematicians and computer scientists might thing in terms of 0- and 1-indexing, but most people only think in terms of 1-indexing.
    Most people know jack shit about programming, which is the reason why we have TheDailyWTF in the first place. Just because "most people" use it doesn't make it automatically good. Just because most people in the US drive automatic transmission doesn't make it better; for one thing, it consumes more fuel. Just because most people in Europe drive manual transmission doesn't make it better, because it's damn difficult to master and it's not at all difficult to destroy your kludge and/or transmission.

    @morbiuswilters said:

    Strings and collections (at least the list kind) still have indexes, and unfortunately most of those are still 0-based.
    So use iterators. I hardly ever use indexes when traversing arrays or collections.

    @morbiuswilters said:

    @Severity One said:
    Why on earth are you doing boundary checks?
    Who said I was? But even in a language that does boundary checking for you, going beyond the end of the array/list/string/whatever is an exception.
    You mentioned boundary checks as a problem. But again, use iterators or some clever for-loop.

    @morbiuswilters said:

    I didn't say it was the biggest problem, it's not. Compared to most of the retarded shit that passes in the software industry today, it's very minor indeed. But things don't improve unless people think about them critically. And zero-indexing is great for getting people to do this because: 1) it is still a stupid anachronism in a modern, high-level language; and 2) established programmers are heavily biased in favor of it, because it's what they learned so it's "how computers work". It's a useful starting point for getting people to think about languages differently.
    I'd very much like to be able to decide from where to start counting, which, arguably, zero-indexing doesn't allow you to do. But similarly, if I want to use zero-indexing, I'll bloody well do so. That is, if I use indexes in the first place. Which is usually not the case.

    I see where you're coming from, seriously I do, and you bring up some good points; I just don't agree with the general idea. I'd say that n-indexing is probably the best choice, but the fact that most comtemporary programming languages haven't moved away from zero-indexing should give you an idea that most language designers don't really see it as a problem.



  • @Severity One said:

    Look at a matrix. Decide to store it in a one-dimensional array. Finding the location in the array based on coordinates, or vice versa, is a lot easier with zero-indexing. I could probably come up with a more meaningful example, but you get the idea.

    No, I really don't. Your reasoning is a single, obscure edge-case that only the designer of the matrix-to-one-dimensional-array code needs to deal with.
    But I'm glad you brought up matrices; are you aware that by convention, the indexes in a matrix start at one?


  • ♿ (Parody)

    @Severity One said:

    For some reason, some people assume that I'm defending zero-indexing because I like it, or because it's written in the constitution and you can't change it, or something of the sort. I'm not.

    But the Constitution has provisions for changing it!



  • @boomzilla said:

    But the Constitution has provisions for changing it!
    Which is why the Second Amendment is on its way out, right? ;)


  • ♿ (Parody)

    @Severity One said:

    @boomzilla said:
    But the Constitution has provisions for changing it!

    Which is why the Second Amendment is on its way out, right? ;)

    Μολὼν λαβέ, bitches.

    You know you're living in bizzaro world when clear language like "Congress shall make no law" has less force than penumbras and emanations.



  • @Severity One said:

    I'd very much like to be able to decide from where to start counting, which, arguably, zero-indexing doesn't allow you to do. But similarly, if I want to use zero-indexing, I'll bloody well do so. That is, if I use indexes in the first place. Which is usually not the case.

    Some languages like Pascal allow n-indexes@Severity One said:
    I'd say that n-indexing is probably the best choice
    Or something like Prolog, that doesn't have indexed lists?@Severity One said:
    the fact that most comtemporary programming languages haven't moved away from zero-indexing should give you an idea that most language designers don't really see it as a problem.

    And that is the real problem, this whole industry is stagnant, because if it was good enough for 1978 is certainly good enough for today... shit



  • @Severity One said:

    You can't really compare a tool like Word to a tool like Visual Studio, or a programming language in general.

    Why not?

    Are you going for the whole "it doesn't matter if it's easy-to-use if it's aimed at programmers" thing that has turned software development into such a waking nightmare these last 5 years, so that (ironically) the company that makes Word is literally the only company left making an effort at creating development tools that don't suck shit? Is that where you're going with this?

    Because if so fuck you.

    @Severity One said:

    Look at a matrix. Decide to store it in a one-dimensional array. Finding the location in the array based on coordinates, or vice versa, is a lot easier with zero-indexing. I could probably come up with a more meaningful example, but you get the idea.

    By convention, matrixes (matrices? matroroonies?) start at 1. So yes, you undoubtedly could come up with a more meaningful example, since that one has none meaningful.

    @Severity One said:

    I see where you're coming from, seriously I do, and you bring up some good points; I just don't agree with the general idea. I'd say that n-indexing is probably the best choice, but the fact that most comtemporary programming languages haven't moved away from zero-indexing should give you an idea that most language designers don't really see it as a problem.

    Language designers don't write programs. Generally-speaking. Languages designers only write boring bullshit like "linkers" and "compilers". Stuff so close to the metal they're probably not seeing the big picture at all. That's... pretty much exactly the problem we're talking about here: the people who build the language aren't the people who build programs using the language. Generally-speaking.

    Plus they seem to be an audience who either 1) doesn't really give a shit about quality development (the language designers or Ruby or Python seem to have put exactly zero effort into getting a decent IDE and debugger made for their languages, for example), and 2) are big proponents of "we've always done it that way" (I love C# to death guys, but why does it have to look EXACTLY LIKE C?



  • @blakeyrat said:

    (I love C# to death guys, but why does it have to look EXACTLY LIKE C?)

    Well, it didn't have to, but a design choice was made to do it that way presumably because the familiarity of syntax would be likely to pull in more developers to have a go at it, than a whole new unfamiliar syntax.

    It's also a lot quicker to use a readable syntax that exists already and is known to be coherent and unambiguous... actually designing a syntax structure that fulfils both of those requirements can be relatively hard, especially if your committee is still deciding what features are needed. Pulling a popular one off the shelf instead, and then extending it, is nice and easy.

    As a business decision it was a great one... directly challenging Java, and winning, was a bloody good idea. It is largely academic whether it makes the language any better or worse.



  • When do I have to use my own <br> tags around here, and when with CS handle it for me? I know you all know this, but CS is total bullshit.


  • Considered Harmful

    @eViLegion said:

    @blakeyrat said:
    (I love C# to death guys, but why does it have to look EXACTLY LIKE C?)

    Well, it didn't have to, but a design choice was made to do it that way presumably because the familiarity of syntax would be likely to pull in more developers to have a go at it, than a whole new unfamiliar syntax.


    So, in other words, your argument is: because we've always done it this way.


  • ♿ (Parody)

    @eViLegion said:

    When do I have to use my own <br> tags around here, and when with CS handle it for me? I know you all know this, but CS is total bullshit.

    Use the preview. I use chrome, which means I'm always writing html.


  • ♿ (Parody)

    @joe.edwards said:

    @eViLegion said:
    @blakeyrat said:
    (I love C# to death guys, but why does it have to look EXACTLY LIKE C?)

    Well, it didn't have to, but a design choice was made to do it that way presumably because the familiarity of syntax would be likely to pull in more developers to have a go at it, than a whole new unfamiliar syntax.

    So, in other words, your argument is: because we've always done it this way.

    It's legitimate to look at alternatives and decide that current familiarity and a mature tool set that is easy to update outweighs hypothetical benefits of changing. The question is, what was the alternative? It's probably just long familiarity, but C-style languages tend to look a lot cleaner to me than, say, python or perl. Especially for an imperative language. At least they didn't fuck up C# like Objective-C.



  • @joe.edwards said:

    @eViLegion said:
    @blakeyrat said:
    (I love C# to death guys, but why does it have to look EXACTLY LIKE C?)

    Well, it didn't have to, but a design choice was made to do it that way presumably because the familiarity of syntax would be likely to pull in more developers to have a go at it, than a whole new unfamiliar syntax.


    So, in other words, your argument is: because we've always done it this way.

    I suppose it is kinda my argument... although I would reword it as "because THEY'VE always done it this way", where 'they' are all the c/c++/java people that MS was trying to capture.


  • Considered Harmful

    I wasn't disagreeing.


Log in to reply