C#. The history of the emergence of the C# programming language and Microsoft .NET technology

The history of the emergence of the C# programming language and Microsoft .NET technology. Reasons for the emergence, advantages and disadvantages of Microsoft .NET


Search other resources:

1. Programming technologies based on C-oriented languages. History and stages of development. C programming language

C-oriented programming languages include such well-known languages as C++, C#, Java. Part of the language syntax has been used in many other languages such as Kotlin, JavaScript, PHP, Python.

The first language in the family of C-oriented languages was the C programming language. The language was developed in 1972 by renowned scientist Dennis Ritchie. The language was based on a structural approach to programming and solved the problems of the software crisis of those times. Thus, 1972 was the year of the beginning of the development of a large family of programming languages, the introduction of a new syntax compared to the Pascal language, the provision of more flexible structured code, and so on.

With a structural approach to programming, the program was divided into modules (parts) that interacted with each other. It was considered good practice that one module should contain the code for solving one task or subtasks in a common system of interaction between modules of the entire project. It is advisable to make the dimensions of the module limited, since with the growth of the number of functions in the module, its perception as a whole became more complicated, which led to an increase in errors.

The program was expanded by adding new modules with new functionality. For the correct construction of the program, the stages of design and development occupied a particularly important place. Mistakes made at these stages could significantly complicate the “maintenance” of the program and its further development in the future.

The main disadvantage of projects written in the C language was a significant complication with an increase in the size of software projects. This was a consequence of so-called imperative programming, in which the result was obtained by executing a sequence of instructions that changed the state of the program.

Basic elements were introduced in the C language, which were further developed in descendant languages (C++, C#, Java). These elements include structures, unions, enumerations, macros, and so on. In addition, compared to other languages in existence at the time, C combined flexibility, power, and convenience. This served as the key to the success of new programming languages.


2. Programming languages C++ and Java

C-oriented languages were further developed in 1979 with the advent of the C++ language developed by Bjarne Stroustrup. This language implemented the paradigm of the object-oriented approach in programming and became the development of the C language. In C++, the syntax was completely borrowed from C. The C++ language added new object-oriented features to the C language.

But over time, new requirements appeared in the field of software, requiring changes in technology and the emergence of new programming languages. These requirements have been influenced by the powerful development of networks, in particular the Internet. As a result, a modern program should have provided:

  • cross-platform software portability;
  • convenient transfer of projects over networks;
  • reduction of software development time, etc.

The software must work correctly on any platform (Windows, UNIX, Linux, Mac OS and others). The main thing here is the lack of conflicts with the operating system when transferring an application from one operating system to another.

As a consequence, in 1991, Sun Microsystems implemented a solution to this problem with the new “Oak” programming language, later called Java. James Gosling is considered to be the author of the Java language.

To ensure cross-platform, you need an integrated Java runtime environment. In order to run Java applications, the operating system must have the appropriate software installed to adapt the Java application to the needs of the specific operating system. For each operating system, Sun has developed an appropriate runtime environment. As a result, cross-platform portability for Java applications is one of the best known technologies.

However, the use of technologies based on the Java programming language did not solve all the problems. Examples of this can be the problem of cross-language interoperability, slow execution speed of Java applications (slow performance on low-performance platforms).

The syntax of the Java language complements the syntax of the C++ language with new keywords that expand its capabilities, and, in some cases, simplifies elements that make it difficult to understand the code and can be replaced by more simplified constructions. However, the developers of the Java language abandoned many modern language features. Examples of this are the absence of structures and properties, the possibility of operator overloading, changes in the management of function parameters, and so on.


3. C# programming language and .NET platform

After the appearance of the Java programming language, the creation of C-oriented languages continued. In 2000, Microsoft announced a new programming language called C#. The main architect of the language is Anders Hejlsberg, who is also the author of Turbo Pascal, Delphi, TypeScript. This language offered a richer set of language features and mechanisms than Java.

The C# language implements the positive aspects of the previous languages C, C++, Java. The syntax of C# has adopted the basis of C++ syntax. In addition, new elements are introduced here, in particular, properties, modifiers used in function parameters, indexers, and more.

The C# language is an integral part of the .NET platform and its link. The .NET platform is Microsoft’s vision for developing software development tools. The technology is based on a set of software modules included in a set of tools called the Microsoft .NET Framework. This software suite runs .NET applications on the Windows operating system.


4. Reasons for the emergence of the Microsoft .NET platform

The reasons for the emergence of .NET technology include:

  • ensuring cross-platform portability. The development of the global Internet and communication tools required the creation of applications (software solutions) that could be run on any computer, regardless of the architecture of the operating system;
  • the need to simplify the software deployment process. Modern software requires proper maintenance. This means that there are new versions of applications that should not conflict with previous versions. The maintenance process is quite frequent, and therefore requires maximum efficiency;
  • the need to create an execution environment for software solutions. Such an environment creates the necessary conditions for the safe execution of various applications, solves the problems of controlling the allocation of resources in the operating system;
  • providing the necessary communication capabilities in accordance with existing standards for the creation of an appropriate technology for developing software solutions;
  • ensuring cross-language integration. It involves the creation of such a program code that integrates with code created using other technologies.


5. Advantages and disadvantages of the Microsoft .NET platform

With the advent of Microsoft .NET technology, a number of topical problems have been solved. These problems are solved by the transfer of the application through communication systems and its deployment on the client machine, regardless of the distance of deployment.

The benefits of this technology include:

  • an effective solution to the problem of interlingual interaction. This is achieved by implementing mechanisms that allow you to import program modules from assemblies written in other programming languages. Also of note is the casting of “unknown” or “specific” types to the appropriate types in the .NET Framework’s common type system. All these possibilities are multiplied by the availability of appropriate specialized software;
  • solving the problem of application deployment. However, all applications are architecturally incorrect. The deployment process is achieved by compiling applications not into executable code, but into intermediate code. This intermediate code is called the Common Intermediate Language (CIL or IL). After the intermediate code is generated, the command to run the program causes the compilation of the intermediate code into an executable code, taking into account the architecture of the computer on which the compilation takes place. This process is provided by the so-called JIT compilation (Just In Time Compilation);
  • the size of .NET applications is small. This is because all the required Base Class Library is contained on each client computer. This assumes that the .NET Framework must be installed on the client computer for the .NET application to work correctly. Thus, a .NET application does not keep all the required libraries in its source code. These libraries are included at application startup, and as a result, the size of a .NET application is minimal;
  • use of a single application runtime environment – CLR (Common Language Runtime). Thanks to this environment, the use of secure (managed) program code (Managed Code) is possible. In secure code, the runtime manages the allocation of memory and various kinds of resources, as well as manages access to them. This reduces the developer’s headaches by avoiding additional programming for memory management, resource allocation, and so on. Thus, the programmer directly focuses on solving the problem.

However, not all problems have been solved by this technology. The disadvantages of Microsoft .NET technology are listed below:

  • cross-platform portability of .NET applications is well suited only for the Windows family of operating systems. For other operating systems (for example, Linux), the developed application requires modification, which will take into account differences in the architectures of these systems. This is the most significant shortcoming of the Microsoft .NET platform;
  • the first launch of the application is delayed. This is because the compilation happens after the application is launched. Here we consider the case when the application is already ready to run and does not contain syntax errors. However, the second, third and subsequent launches of the application are fast, because the executable file has already been generated (in the temporary directory) and recompilation is not required. If a new version of the application is being formed or the executable file is deleted, then a recompilation will occur, after which the first launch will again be slowed down;
  • relatively slow application execution. There are several reasons for this. First, it is an integrated runtime environment that takes some of the system resources for its own needs. The second is the use of the runtime as an intermediary between the resource and the application to provide security. The environment receives a reference to a resource from the application and returns that resource. If the application accessed the resource directly, then the execution would be faster.


Related topics