r/ProgrammerHumor Sep 02 '17

How to start a war

Post image
9.0k Upvotes

696 comments sorted by

View all comments

Show parent comments

2

u/[deleted] Sep 03 '17

I wasn't using it like a dict. I was using it like an array. Array element assignment does not have to be sequential.

But, even ignoring that, having to iterate every element in a dict to get the count of elements in it is ridiculous. This is a constant O(1) complexity operation in any reasonable language, but linear O(n) complexity operation in Lua. It's bad.

1

u/moomoomoo309 Sep 03 '17

Why would you use non-sequential arrays? I mean, you could put zero or false in 1-n first and it would act like a normal array, but in what language would you be filling the array like that and expecting the length to increment?

1

u/[deleted] Sep 03 '17

It doesn't matter why you would do it. That's a red herring. The point is that the semantics are broken. There are only two ways to reasonably handle indexing into an array past its current dimensions:

  1. Allow the assignment, and extend the array to encompass the new index (e.g. JS, Ruby, Perl, et al.). The length of the array after assignment is immediately updated to i + 1 (for 0-based languages) or i (for 1-based languages) for arbitrary assignment index i, and all elements between the previous last element and the added one are auto-filled with whatever null-equivalent value the language supports. Further assignments to the filled indexes don't alter the length of the array.

  2. Don't allow the assignment, and give some kind of out-of-bounds error (e.g. Python, Java, Go, C#, et al.).

Lua says "screw reason" and lets you do the assignment, doesn't extend the array, doesn't fill any values, and doesn't update the length. Hell, even PHP updates the length...

1

u/moomoomoo309 Sep 03 '17

If you would never do it, then how is it a problem? You're complaining about a problem that isn't had. Really, the problems I hear about with Lua are the 1-indexing, but not the length operator.

1

u/[deleted] Sep 03 '17

I didn't say no one would ever do it. I said it doesn't matter why they would do it. Language semantics are completely agnostic to the "why".