CSC/ECE 517 Fall 2009/wiki1b 2 SD: Difference between revisions
Line 46: | Line 46: | ||
[2] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf | [2] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf | ||
[3] | [3] Martin Abadi et. al, Dynamic Typing in a Statically Typed Language, ACM Transactions on Programming Languages and Systems, Vol. 13, No, 2, April 1991. | ||
[4] http://gnuvince.wordpress.com/2008/02/15/static-typing-%E2%88%A7-dynamic-typing/ | [4] http://gnuvince.wordpress.com/2008/02/15/static-typing-%E2%88%A7-dynamic-typing/ | ||
[5] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf | [5] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf |
Revision as of 22:47, 20 September 2009
Advantages of statically typed vs. dynamically typed languages
Type System
The formal definition of a type system is[1]:
Type system is the study of types which defines the interaction between various types, the way in which a programming language assigns types. Type systems help detecting errors in the program, provide abstraction, improve the readability of the program, and improve the efficiency of the program [1],[2]. Detecting errors related to types in a program is called type checking.
Type Checking
In layman terms type checking is the process of determining errors related to types in the expressions and calculations of a program. There are a few programming languages which are typed and there are a few which are untyped. Among the typed programming languages, based on when the type checking happens, they are either dynamically typed or statically typed. There is another factor used to classify programming languages, that is, the level to which type checking is enforced. Based on the extent to which type checking is enforced, programming languages are either strongly typed or weakly typed.
Therefore, broadly we classify programming languages as:
- Statically typed: Statically typed languages are those languages in which type checking is done at the compile time as opposed to run time. A few examples of statically typed languages are C, C++, C#, Java, FORTRAN, and Pascal etc.
- Dynamically typed: Dynamically typed languages are those set of languages where type checking is done, unlike static typing, at run time. Examples of dynamically typed languages are Ruby, Prolog, Python, SNOBOL, and Smalltalk etc.
- Strongly typed: Those set of languages where type checking is strictly enforced are called strongly typed languages. Strongly typed languages guarantee type-safety [5]. Examples of strong typing are Lisp dialects, Python, Haskell etc.
- Weakly typed: Weak typing means that the language does implicit type casting. For e.g. consider the following operations:
var a = 5;
var b = “string”;
var c = a + b;
print c;
We know that 5 is an integer and the type of ‘a’ is integer, which is different from the type of ‘b’ which is a string. Therefore, the operation a + b, should not have any value. In a weakly typed programming language, the result might be ‘5string’; this is because ‘a’ is implicitly converted into a string. Examples of weakly typed languages are JavaScript, PHP, Perl etc.
Statically typed languages
The advantages of a statically-typed programming language are that they allow errors to be detected earlier at the compile time, enforce disciplined programming styles, and generate an efficient object code [3].
Dynamically typed languages
References:
[1] Pierce, B. C., & NetLibrary, I. (2002). Types and programming languages. Cambridge, Mass.: MIT Press.
[2] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf
[3] Martin Abadi et. al, Dynamic Typing in a Statically Typed Language, ACM Transactions on Programming Languages and Systems, Vol. 13, No, 2, April 1991.
[4] http://gnuvince.wordpress.com/2008/02/15/static-typing-%E2%88%A7-dynamic-typing/
[5] http://www.ljosa.com/~ljosa/teaching/cs162/lectures/L7%20-%20Types.pdf