Dynamic programming languages
In dynamic programming languages, In Dynamic Language both types and values can be changed. Unlike static programming languages where types are fixed, In dynamic languages, we can modify types and values at runtime. This means that variables, initially assigned to one type, can be reassigned to a different type, such as from a string to an integer. The type-checking process occurs during the program execution time.
Dynamic programming languages are usually not compiled but interpreted. Due to the dynamic types, there might be increased chances of type errors. However, due to the absence of the compilation step, the development is fast.
Static programming languages
In Static programming languages, the type can not be changed once a variable is created. If a variable type is defined, then only the value of the variable can be modified, but the type is static and cannot be changed. This means that if we define an integer, we can only update its value of integer and no other data type can be assigned to it.
This makes the code powerful since type-checking is done during compile-time. Static programming languages might have a slow development cycle due to an extra step of compilation. Moreover, while accessing a variable, the data type is already known, which avoids the need for extra checks.
C++, Java, Go and C# are examples of Static programming languages.