C# is High-Level programming language, more specifically C# is a strongly typed, object orientated programming language. This means that the programming language has many abstractions versus it’s lower level counter parts (Machine and Assembly language).
The language is designed and maintained by Microsoft and is currently on it’s 8th version as of June 2020. C# can be used to create a variety of things such as web applications, desktop applications, games and mobile apps.
A strongly typed programming language is one that requires all of its data to be predefined as to what the nature of the data is. For example if you wished to store the title of a book you would define that data as a string of characters and not as a number.
This is important as certain operations may only work with some types of data. For example you cannot add one to the title of a book.
Object orientated programming is a software methodology where properties and behaviours associated with an object are stored together. The object will have multiple properties which are referred to as attributes and actions which are referred to as methods. In the case of a car it might have a colour attribute set to blue and a method called sound horn.
This grouping of related properties and actions is referred to as encapsulation and prevents code from becoming too intertwined.
Abstraction is the next concept included in object orientated design. Abstraction hides certain properties and methods from other elements of the program. This means that other parts of the code do not need to know the internal implementation details of your object.
Using the analogy of driving a car, you only need to know how the steering wheel, gas, brakes and gears work in order to drive – you are not required to know every detail of the engine.
Inheritance is a fundamental concept of object orientated programming. Using inheritance the programmer can reuse functionality from a more generalised class thus eliminating reusing code. A car can be classified as a type of vehicle and therefore it may make sense to have the car class inherit from the vehicle class. The vehicle class is referred to as being the superclass of car and car is the subclass of vehicle.
Polymorphism is the last core concept of Object Oriented Programming. Polymorphism refers to the ability to process objects differently depending on their class type.
You can identify a polymorphic object by a is-a test where you read the name of the objects in the form “is x a y?” and if the sentence is satisfied then the object is polymorphic. For example the sentence “is a cat an animal?” meaning the animal type is polymorphic. An Example of a sentence that isn’t satisfied is “is a cat a dog?”.
Website development. C# can be used alongside ASP .NET (or ASP .NET Core) Web frameworks to develop powerful and dynamic sites. Some notable sites that use ASP .NET include StackOverflow, GoDaddy, DELL and Taco Bell.
Partly thanks to the success of the Unity game Engine, C# has become a highly sought after programming language in the last few years. Unity can be used to create a whole range of game types like platform games, FPS games and games that implement virtual reality.
Due to Microsoft having created both C# and Windows, it is natural for C# to have deep support to create native windows applications. Some Windows applications created in C# include Paint.NET, Banshee media player and Handbrake video transcoder.
In the late 1990’s Oracle had seen huge success with their Java programming language, particularly it’s Write Once Run Anywhere feature. This was thanks to the Java Virtual Machine and Java Byte code.
Microsoft had decided that they wanted to develop a direct competitor to Java, as a result of this C# was launched in 2000. The release of C# proved to be a worthwhile venture for Microsoft as it launched with more modern functionalities than Java had at the time.
The C# project was initially led by Anders Hejlsberg who had developed languages such as Turbo Pascal and Embarcadero Delphi. At this time C# was intended to be called COOL for C-Like object orientated Language)