In programming language theory, there are operations which are distinguished between static and dynamic, e.g. static/dynamic scoping, static/dynamic typing, ....
Does "static" or "dynamic" imply a compiler or interpreter implementation of a programming language?
Let me explain the above question and my thoughts and confusions about it.
- Is it correct that a static operation means the operation is performed at compilation time, and a dynamic operation means it is performed at run time?
When an operation is performed by an interpreter, is it at compilation time or run time?
It seems to me that people often says it is at run time.
But if I am correct, an interpreter first translates and then executes a program, so to answer the question, do we need to specify whether the operation is performed when the interpreter translates or executes a program?
- Does a static operation imply that the language under consideration is implemented by a compiler but not by an interpreter?
- Does a dynamic operation imply that the language under consideration is implemented by an interpreter but not a compiler?