Problem
1. Some programmers assert that side effects in expressions are a useful feature of a programming language. Develop arguments both for and against this assertion.
2. Non-void functions in C and C++, and ADA function procedures, not only return results but also may have side effects. Formulate restrictions on such functions that would eliminate side effects. Bear in mind that any such restrictions should, ideally, be enforceable by the compiler. Do your restrictions significantly reduce the language's expressive power?