my greatest character flaw is that I think ++ and -- is good syntax

@wallhackio It is an amazing syntax! Makes programs so much more concise... (Who ever said otherwise? :blobcatknife: )

@vaporeon_ To quote Douglas Crockford in his 2018 book How JavaScript Works:

"I do not recommend use of the increment operators ++ or --. They were created in antiquity for doing pointer arithmetic. We have since discovered that pointer arithmetic is harmful, so modern languages no longer allow it. The last popular language to boast of having pointer arithmetic was C++, a language so bad that it was named after ++."

I don't agree with it but I also appreciate C++ slander so I will permit it.

@wallhackio This isn't C++ slander, this is C slander, and I will not allow it :blobcatknife:

@wallhackio Also: you can increment any variable with ++, it doesn't need to be a pointer, you can just grab an integer variable and increment/decrement it, why does this guy think that they're only for pointer? :psyduck:

@vaporeon_ continuing the quote:

"We got rid of pointer arithmetic, but we are still stuck with ++. Now it adds 1 to something. Why do we need a different syntactic form to add 1 than to add every other value? How does that make any sense?

The answer is: It does not make any sense.

Making matters worse, ++ has a pre-increment form and a post-increment form. It is very easy to get them reversed, and that can be very difficult to debug. And ++ has been implicated in buffer overrun errors and other security failures. We should discard features that are unnecessary and hazardous."

@wallhackio :blobcatknife:

"Why do we need a different syntactic form to add 1 than to add every other value?"

Because 1 is a value that gets added much more frequently than any other number? To the extent that lost of instruction sets (including x86) even have a special instruction for adding/subtracting 1 instead of any other number? It is extremely annoying in Python to have to type (x+=1) instead of x++...

"It is very easy to get them reversed, and that can be very difficult to debug."

Skill issue

Sorry, this is genuinely a skill issue

I've never had trouble distinguishing ++x from x++

"And ++ has been implicated in buffer overrun errors and other security failures."

That's... not the fault of the ++ operator? Array boundaries are hard and it's easy to make off-by-one errors in your mental model. Being forced to write x+=1 instead would not fix the buffer overflow...

Follow

@vaporeon_ specifically in the case of javascript it's possible, and quite easy, to iterate over data without explicitly writing array boundaries at all. For example, the two snippets

for (let i = 0; i < arr.length; ++i) console.log(arr[i]);

and

arr.forEach((x) => console.log(x));

do the exact same thing

Sign in to participate in the conversation
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.