As the English is not my native language I would like to know the exact semantic of words Common Type System (CTS)
. Can they be interpretated as a system of common types or as a type system that is common for .NET Framework? That is whether the system is common or the types are common.:)
That's the second option, it's a "type system" (the way you define classes, methods, attributes, ..) that is "common" to all languages on the .Net platform (C#, VB, F#, ...). Of course, I may remember wrong, but I'm pretty sure that the term 'CTS' refers explicitely to the way the CLR*) stores and uses the metadata that describe how everything is structured.
*) you've probably also seen the CLR term already. It's Common Lnguage Runtime. Its "common"-ness is liguistically structed in the same way. It is not a "common lanuage" runtime, but it's common "language runtime", it's an execution platform common to all.
However -- actually -- there is also some slight meaning in the "second way" you proposed. There are some types that are actually common, for example the most basic collections (ArrayList, Collection, HashSet, ...) or interfaces (IEnumerable, IList, ...). However they are called BCL, the Base Class Library.
From his book (Pro C# 2008 and the .NET 3.5 Platform) , Andrew Troelsen says under the headline:
Introducing the Building Blocks of the .NET Platform (the CLR,CTS,and CLS)
Another building block of the .NET platform is the Common Type System,or CTS.The CTS specification fully describes all possible data types and programming constructs supported by the runtime, specifies how these entities can interact with each other, and details how they are repre- sented in the .NET metadata format (more information on metadata later in this chapter; see Chapter 16 for complete details). Understand that a given .NET-aware language might not support each and every feature defined by the CTS. The Common Language Specification(CLS)is a related specification that defines a subset of common types and programming constructs that all .NET programming lan- guages can agree on. Thus, if you build .NET types that only expose CLS-compliant features, you can rest assured that all .NET-aware languages can consume them. Conversely, if you make use of a data type or programming construct that is outside of the bounds of the CLS, you cannot guarantee that every .NET programming language can interact with your .NET code library
then comes this beautiful figure that sums it all up:
I hope that help :)
It is a 'type system' that is 'common'. I think Wikipedia explains CTS best:
Common Type System (CTS) is a standard that specifies how type definitions and specific values of types are represented in computer memory.
The latter.
From the MSDN article on CTS:
Establishes a framework that helps enable cross-language integration, type safety, and high-performance code execution.
(emphasis mine)
Microsoft is using "common" to mean "mutual; shared by more than one" (first adjective definition from Wiktionary). That is, a type system shared by more than one language.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With