C# Language Specification and CLI Specification ECMA Standards
Have you ever wonder how some intrinsic mechanisms of the C# language actually work, i.e, generics, iterators and delegates?
What about the different syntax and constraints of the C# language?
Do you want to know more about the CLI, the CTS and the CLS, and how they participate in the .NET Framework, than just being satisfied with what their acronyms stand for?
Did you know that you can learn more about the C# programming language and the Common Language Infrastructure for free?
As a matter of fact, both the C# programming language and the Common Language Infrastructure are ECMA standards which are publicly available for anyone to download free of charge. ECMA, which stands for European Computer Manufacturers Association, is an international, private standards organization for the Information and Communication Technology and the Consumer Electronics. As stated in their website,
The aims of ECMA are:
- To develop, in co-operation with the appropriate National, European and International organizations Standards and Technical Reports in order to facilitate and standardize the use of Information Communication Technology (ICT) and Consumer Electronics (CE).
- To encourage the correct use of Standards by influencing the environment in which they are applied.
- To publish these Standards and Technical Reports in electronic and printed form; the publications can be freely copied by all interested parties without restrictions.
The C# Language Specification standard (ECMA-334) is currently in its 4th edition, and "specifies the form and establishes the interpretation of programs written in the C# programming language". It emphasizes on:
- The representation of C# programs;
- The syntax and constraints of the C# language;
- The semantic rules for interpreting C# programs;
- The restrictions and limits imposed by a conforming implementation of C#.
Click here to download the C# Language Specification standard as a PDF (553 pages, 2.6MB)
The Common Language Infrastructure standard (ECMA-335) is also in its 4th edition. It consists of the following parts:
- Partition I: Concepts and Architecture – Describes the overall architecture of the CLI, and provides the normative description of the Common Type System (CTS), the Virtual Execution System (VES), and the Common Language Specification (CLS). It also provides an informative description of the metadata.
- Partition II: Metadata Definition and Semantics – Provides the normative description of the metadata: its physical layout (as a file format), its logical contents (as a set of tables and their relationships), and its semantics (as seen from a hypothetical assembler, ilasm).
- Partition III: CIL Instruction Set – Describes the Common Intermediate Language (CIL) instruction set.
- Partition IV: Profiles and Libraries – Provides an overview of the CLI Libraries, and a specification of their factoring into Profiles and Libraries. A companion file, CLILibrary.xml, considered to be part of this Partition, but distributed in XML format, provides details of each class, value type, and interface in the CLI Libraries.
- Partition V: Debug Interchange Format.
- Partition VI: Annexes – Contains some sample programs written in CIL Assembly Language (ILAsm), information about a particular implementation of an assembler, a machine-readable description of the CIL instruction set which can be used to derive parts of the grammar used by this assembler as well as other tools that manipulate CIL, a set of guidelines used in the design of the libraries of Partition IV , and portability considerations.
Click here to download the CLI standard as a PDF (556 pages, 3.2MB)
Other noteworthy standards that might be of interest are:
- The C++/CLI Language Specification (ECMA-372). This Standard specifies requirements for implementations of the C++/CLI binding. The first such requirement is that they implement the binding, and so this Standard also defines C++/CLI. Other requirements and relaxations of the first requirement appear at various places within this Standard. Click here to download the C++/CLI Language Specification as a PDF (304 pages, 1.57MB)
- The Eiffel Programming Language (ECMA-367). This document provides the full reference for the Eiffel language. This Standard covers only the language, with an emphasis on the implementation aspects. Click here to download the Eiffel Programming Language standard as a PDF (194 pages, 3.4MB)
- The Microsoft Office Open XML File Formats (ECMA-376). This Standard defines Office Open XML’s vocabularies and document representation and packaging. It also specifies requirements for consumers and producers of Office Open XML. The standard is available as a 5-part series and there’s also an Office Open XML overview document available on the ECMA website.
For a more detailed list of the available standards published by ECMA, check out the ECMA Standards List section.
Next time you have a job interview, a research project or a commercial project to deliver and you need to know more about the C# language and the CLI, save yourself the money and download the standards free of charge.
Similar posts you might be interested in reading:
- Null Coalescing Operator
- SE-Radio interviews Anders Hejlsberg
- Installing Linux Ubuntu as a Windows Application with Wubi
- Calling Native Win32 Functions in .NET? PInvoke.NET to the Rescue!
- A Paper About Recommendations for Improving the ISO 14764 Standard
- Microsoft releases .NET 3.5 SP1, SQL Server 2008 RTM and Entity Framework/Data Services
- Better Modelling with the Visual Studio Class Designer
Leave a comment