Type Systems Demystified

added by nikosv
3/22/2010 1:08:28 AM


As traditional static languages such as C# tend to become more dynamic, and dynamic languages tend to become more static, as Perl 6 will do, a deep understanding of the concepts attached to static and dynamic type systems becomes ever more important. Integrated platforms like .NET embrace many and diverse programming languages which allow a programmer or a team, to use more than a language depending on the situation and requirements of the project involved; i.e. use both VB.net and C# or even a static language (C#) and a dynamic one (JavaScript). In this scenario one potential pitfall is that in C# the Object acts differently than an Object in JavaScript , or could act differently than in VB.NET. Another more fundamental issue with type systems and constant/subtle source of mix ups, is the terminology used. For example the terms static and strong are used interchangeably as if they mean/are the same thing; the same holds true for dynamic and weak. For these reasons, it is essential to have a firm grasp on not only each system's shortcomings and particularities but also on their essential characteristics, so to enjoy maximum performance and potential by at the same time avoiding potential pitfalls presented by the type system. This article is intended to help to someone who has a dynamic language background and wants to jump into the .NET platform, someone with VB.NET experience that wants to know how things work in C#, the C# programmer interested in dynamic programming, and any programmer who wants to know how type systems work.