I can't see the point of constants. For example I can use the famous example of PI:PI = float(3.14) Here I get the job done without a constant. Who cares if the value never changes during the lifetime of the program or if it's best practise. I can define PI as a variable and get the same task done just as well. 
Why can't we just use variables instead of constants?
c#;programming languages
Conceptually, the options to assign a value to a variable or a constant differ only in one way : A compiler would give a warning when you attempt to reassign a constantYou are correct. If you assign the value to a variable instead of a constant, it would get the job done as long as you are taking care to not change the value assigned to it.It may seem redundant to you, for example if you're making a program to find area of a circle of a given radius, you may writefloat pi =  3.14float area (float r) :     return pi*r*rand think to yourself that if someone were to change the value of pi to something else like 2.5, then they are really the victims of their own stupidity.And no one wants to burden themselves with an unneeded feature.However, programmers tend to eliminate as many possible future problems as they can. It may happen that if the program is large and has many programmers working on it, someone may redefine your variable (to make it work for them) but then the next call to your function that depended on the correct value of your variable would then return erroneous results.Now there are two ways to eliminate this possibility, either you could make your variable local to the function itself, but that results in redundancy because you would have to do so for each function that refers to it.Or you could use the nifty feature that's provided by the programming language and declare your value a constant so that the compiler would give a warning if the value of constant is tried to be reassigned. 