You are viewing a single thread.
View all comments
47 points

Obligatory, mutable global variables are evil.

permalink
report
reply
32 points

The definition of a variable is that it’s mutable. If it’s immutable it’s constant.

permalink
report
parent
reply
15 points

There’s no ISO standardized definition for variable. People use that word with all kinds of meaning.

permalink
report
parent
reply
11 points

This is needlessly obtuse. The definition of the word is that it’s non-constant. There isn’t an ISO definition of the word no, but there are many reputable dictionaries out there that will serve as an alternative.

permalink
report
parent
reply
18 points

Waaaait a minute… isn’t it called a variable because the contents are, you know, variable?

permalink
report
parent
reply
5 points
*

I feel like it’s like pointers.

“Variable” refers to the label, i.e. a box that can contain anything (like *ptr is a pointer to [something we dont know anything about])

Immutable describes the contents, i.e. the stuff in the box cant change. (like int* ptr describes that the pointer points to an int)

Rust makes it very obvious that there’s a difference between constants and immutable variables, mainly because constants must be compile time constants.

What do you call it when a variable cant change after its definition, but isnt guaranteed to be the same on each function call? (E.g. x is an array that’s passed in, and we’re just checking if element y exists)

It’s not a constant, the contents of that label are “changing”, but the label’s contents cant be modified inside the scope of that function. So it’s a variable, but immutable.

permalink
report
parent
reply
10 points

As opposed to immutable variables

*confused screaming*

permalink
report
parent
reply
5 points

Or mutable constants…

permalink
report
parent
reply
3 points
*
int const golden = 1.618;
int* non_constant = (int*)&golden;
golden = 1.61803399;

Casts are totally not a danger that should require a comment explaining safety…

permalink
report
parent
reply
2 points

And more generally mutable aliasing references of any sort are evil. Doesn’t mean they’re not useful, just that you need magic protection spells (mutexes, semaphores, fancy lock-free algorithms, atomics, etc) to use them safely. Skip the spell or use she wrong one, and the demon escapes and destroys all you hold dear.

permalink
report
parent
reply

Programmer Humor

!programmer_humor@programming.dev

Create post

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

  • Keep content in english
  • No advertisements
  • Posts must be related to programming or programmer topics

Community stats

  • 7.2K

    Monthly active users

  • 954

    Posts

  • 36K

    Comments