Rather than just tell the compiler to not allow me to modify a variable (like I don't know what I'm doing with my program), are there any reason to use "const" variables?

Other than out of curiosity, I'm actually asking because I'm writing a transpiler and I want to know if I should support "const" (or the concept of immutability in general) or not. To me, "const" has a lot of burdens like:

"should we use it all the time if we don't want to be sure that we won't modify a variable or only for critical ones?"

"Then in this case, why not make "const" the default and use another word to allow a variable to be mutable (just like Rust and other languages)?"

Also another problem is that I don't like the way "const" is treated in functions. For example, you cannot past "const" variables to functions that take non-const parameters even if we are using variables which are ALWAYS copied (which means than modifying them will not modify the original value). This is stupid because if I want to support "const" for a function, I need to make an extra instruction to copy the value to a new non-const variable that is created inside the function and make an extra instruction. Copying a value is not a slow operation but it can be for a big struct. And in any case, it is stupid and it ........es me off....

So yeah, I would like to know as soon as possible if there are any real reasons to support something like that so I can implement it.