MAGA - Make Assembly Great Again
Arrays not starting at 1 bother me. I think the entrenched 0-based index is more important than any major push to use 1 instead, but if I could go back in time and change it I would.
It really doesn’t make sense to start at 1 as the value is really the distance from the start and would screw up other parts of indexing and counters.
It doesn’t make sense that the fourth element is element number 3 either.
Ultimately it’s just about you being used to it.
Yeah, but if we went back and time and changed it then there wouldn’t be other stuff relying on it being 0-based.
It was not randomly decided. Even before arrays as a language concept existed, you would just store objects in continuous memory.
To access you would do $addr+0, $addr+1 etc. The index had to be zero-based or you would simply waste the first address.
Then in languages like C that just got a little bit of syntactic sugar where the ‘[]’ operator is a shorthand for that offset. An array is still just a memory address (i.e. a pointer).
I know. But in the alternate reality where we’d been using 1-based indices forever you’d be telling me how useful it is that the first element is “1” instead of zero and I’d be saying there are some benefits to using zero based index because it’s more like an offset than an index.
A lot of mathematical languages start from 1: R, Julia, Mathematica (and also Lua and Fish).
I don’t know why, but in, e.g. R, it doesn’t bother me, I get caught by it in Lua all the time.
I suppose it’s a function of how far the array is abstracted from being pointers to an address that makes it easier to mentally switch.
It would screw up existing code but doing [array.length() -1] is pretty stupid.
A lot of languages have a
.last()or negative indexer ([-1]) to get the last item though.For i = 0; I <= array.length; i++
i < array.lengthor else you overflow.Casually throws in capitals as well.
My post is a work of fiction
Also remove null reference
this is what messed me up with ZSH for a bit, having a shell default to 1 instead of 0 was weird
From this point on, all arrays are reverse-indexed.
♾️-0 ♾️-1 …
Hey now, you know that according to the Bible the biggest number is a million. Anything larger than that including infinity is some of that “woke shit”.
Your array will be 999,999, 999,998, 999,997 …
Git default branch renamed back from main to master
and all the others start with “slave/”
Merge me senpai
deleted by creator
That one actually seems plausible, if he ever learns about that whole thing
Would be the most sane thing he’s ever done.
(Someone else made it but I can’t find the source)
GTFOH with that. 1-indexed arrays?! You monster.
(Mostly joking… Ok, somewhat joking :P )
Visual Basic used to let you choose if you wanted to start arrays at 0 or 1. It was an app-wide setting, so that was fun.
I’ve not heard that name in a long time…
It’s how I got into programming, so I’ll always have a soft spot for it. Now it’s over 20 years later and I’m still coding.
Lua has entered the chat
Writing Lua code that also interacts with C code that uses 0 indexing is an awful experience. Annoys me to this day even though haven’t used it for 2 years
and MATLAB, Visual Basic (with
Option Base 1), and SQL.Lua had been banned from the chat
In Lua all arrays are just dictionaries with integer keys, a[0] will work just fine. It’s just that all built-in functions will expect arrays that start with index 1.
That’s slightly misleading, I think. There are no arrays in Lua, every Lua data structure is a table (sometimes pretending to be something else) and you can have anything as a key as long as it’s not nil. There’s also no integers, Lua only has a single number type which is floating point. This is perfectly valid:
local tbl = {} local f = function() error(":(") end tbl[tbl] = tbl tbl[f] = tbl tbl["tbl"] = tbl print(tbl) -- table: 0x557a907f0f40 print(tbl[tbl], tbl[f], tbl["tbl"]) -- table: 0x557a907f0f40 table: 0x557a907f0f40 table: 0x557a907f0f40 for key,value in pairs(tbl) do print(key, "=", value) end -- tbl = table: 0x557a907f0f40 -- function: 0x557a907edff0 = table: 0x557a907f0f40 -- table: 0x557a907f0f40 = table: 0x557a907f0f40 print(type(1), type(-0.5), type(math.pi), type(math.maxinteger)) -- number number number numberPHP did that same thing. It was a big problem when algorithmic complexity attacks were discovered. It took PHP years to integrate an effective solution that didn’t break everything.
Your argument isn’t making me any happier - it just fills me with more rage.
Don’t do my boy Lua dirty like that >:(
I always felt that Lua was a girl
Lua - Portuguese feminine noun for “moon”, coming from the Latin “luna”
Luna - Latin, feminine noun (coincidentally identical to the Italian noun, also feminine)Yup, Lua is a girl.
Luna is also same as the spanish noun, also feminine
Fortran angrily starts typing…
How is arrays starting at 1 still a controversial take. Arrays should start at 1 and offsets at 0.
Arrays are address offsets.
Not in languages where you don’t manually handle memory, such as PHP, SQL, Python… Higher-level languages using 0-indexed arrays are letting the abstraction leak.
So what’s 0 do then? I’m okay with wacky indexes (I’ve used something with negative indexes for a end-index shorthand) but 0 has to mean something that’s actually useful. Using the index as the offset into the array seems to be the most useful way to index them.
I’d say the index is actually an offset is a reasoning for explaining why it should start at 1. If index was an index, I’d just start at 1.
I don’t think any one is better than the other, but history chose 0.
That you can choose it in VB is probably the worst option :D
- Push directly to master, not main
- No command line args, just change the global const and recompile
- No env vars either
- Port numbers only go up to 5280, the number of feet in a mile
- All auth is just a password; tokens are minority developers, not auth, and usernames are identity politics
- No hashes – it’s the gateway drug to fentanyl
- No imports. PROTECT INTERNAL DEVELOPMENT
- Exceptions are now illegal and therefore won’t occur, so no need to check for them
- SOAP/XML APIs only
Exceptions are now illegal and therefore won’t occur, so no need to check for them
Ah, I see you’ve met C++ developers.
- Port numbers only go up to 5280, the number of feet in a mile
What about internationalization – do the European port numbers go up to the cm or only meter count within a kilometer?
No command line args, just change the global const and recompile
Nah, don’t use global variables, magic values everywhere. And don’t use const whatsoever, we need to move fast and break things, we can’t let something immutable stop us
NGL, this kind of form of putting the decisions the monkey-in-charge is making in a way experts in a field will understand, is a very good way to showcase the absurdity.
Are there really people capable of understanding this who aren’t capable of understanding, for example, “tariffs increase inflation”?
Halfway to Lua lol
didn’t know donny was a forth programmer
I started reading that from the top and got increasingly angry on the way down. That creature is a monster.
Error handling should only be with “if”
Variable names must be generic and similar to each-other
Debugging is only done with prints
Version numbers must be incoherent, hard to order correctly, contain letters and jump in ways that don’t align with the updates done.
Single letters or UTF8 symbols only. Emojis are encouraged.
Variable names should be var{n} where n = 0, 1, 2…
Pff, just use the numbers directly:
${1} = "value"; ${2} = "DOGE";That makes it possible to do stuff like:
for (${152} = 1; ${152} <= 2; ${152}++) { ${666} = $${152}; print(${666}); }This is a valid code, btw.
Main branches will be renamed Master
Nope Main branches will be renamed Daddy
More like Grandwizard
Elon Musk will fund the development of KKK++, a programming language that will bring us back to the good old times before “GOTOs considered harmful” dropped, because real programmers not only do away with memory safety, but structured programming too.
I don’t get why only four of these are jokes
Am I The only one that sees the tie as yellow in this photo?
I see it as blue
I see sprinkles of orange.
Yes. It’s clearly red.
NOT AGAIN
Haven’t heard of the stack address thing, anyone got a TLDR on the topic?
Dynamic stacks are pretty common in the most popular scripting languages, but considered bad practice from folks who use systems languages
TL;DR: For historical reasons stacks growing down is defined in hardware on some CPUs (notably x86). On other CPUs like some ARM chips for example you (or more likely your compiler’s developer) can technically choose which direction stacks go but not conforming to the historical standard is the choice of a madman.
Pretty sure that it’s something a long the lines of “stack begins high, grows down, while heap behind low grows high” when they meet, it’s a stack overflow
They don’t have to meet, the max stack size is defined at compile time





















