Gjuha Programuese C Sharp

**C#**  (lexohet "si sharp") është gjuhë programuese moderne për zhvillimin e aplikacioneve softuerike. C# është gjuhe e thjeshtë cila orientohet në objekte dhe ka rrënjët në  familjen C të gjuhëve programuese, që do të thotë se kuptohet lehtë nga programerët e C , C++, dhe JAVA.   Kjo gjuhë bën pjesë te gjuhët e larta programuese dhe ka ngjashmëri të madhe me to. 
Është gjuhë e krijuar dhe zhvilluar nga kompania Microsoft së bashku me .NET platformën. **C#** është ndër gjuhët më të popullarizuara të përdorura në ditët e sotme, e përdorur nga miliona njerëz kjo për shkak së u zhvillua në kuadër të .NET platformës e cila ka gjetur përdorim të madh në shumë kompani,organizata dhe individ.

## Historia
Projekti për krijimin dhe zhvillimin e C# filloi në dhjetor të vitit 1998 nga Microsoft dhe u lansua në verë të vitit 2000.Zhvillues kryesor ishte Anders Hejlsberg së bashku me ekipin e tij të përbërë 
nga  Peter Golde, Peter Hallam, Shon Katzenberger, Todd Proebsting,Anson Horton dhe shumë të tjerë të cilët ndihmuan në dizajnimin e versioneve të mëvonshme.
Gjuha **C#** së pari u quajt COOL  (C Object Oriented Language) dhe u mendua të mbetet ky emër mirëpo nuk ishte e mundshme për shkak të prespektivës së markës tregtare. Për këtë gjuha **C#** mori emrin e saj duke u inspiruar nga muzika.Simboli **"#"** muzikor paraqet një notë për një semiton më lart, sikurse që C# është më lart se C dhe C++.Në fillim kësaj gjuhe i referoheshin edhe si D-flat (shqip Cis), që paraqet të njëtën notë por të shprehur ndryshe.

## C# kundrejt gjuhëve tjera
**C#** është gjuhë e popullarizuar dhe moderne e përdorur nga miliona njerëz dhe e përhapur në të gjithë botën.Është gjuhë e lehtë për t'u mësuar  (jo si C dhe C++) dhe ndër më të përshtatshme për fillestarë.Kjo gjuhë shpesh është në konkurrencë me gjuhët e tjera të nivelit të lartë siç janë C, C++, JAVA etj.

### C# kundrejt C/C++
Të gjitha këto gjuhë të larta programuese rrjedhin nga familja e njëjt e gjuhëve, për këtë aryse ka shumë debate se cila është më e përshtashme dhe më e lehtë për t'u përdorur.C++ është gjuhë më primitive, zakonisht e përshtatshme për programim në nivel më të ulët.Në dukje të parë mendohet se këto dy gjuhë janë shumë të ngjashmë dhe lehtë mund të behët tranzicioni nga njëra në tjetrën, mirëpo në fakt për shkak të dallimeve mes tyre kjo nuk është aq e lehtë sa mendohet.
C++ preferohet kur kemi të punojmë ngushtë me procese harduerike ose për të bërë kërkesa speciale të përformancës (lojërat 3D).Për qëllim të tjera si ueb aplikacione,softuare të biznesit C++ nuk është e përshtatshme.
Në C++ kemi kontroll të madh në krijimin e objekteve dhe ruajtjen e tyre në stack, heap apo në pjesë të tjera të memories duke përdorur fjalën new.
Kurse në C# ruajtja në momentin ë krijimit të objektit bëhet në mënyre implicite.Tipet e thjeshta (int, double,long ) ruhet në stack, kurse klasat ruhet në heap.Në të dy gjuhët ekzistojnë strukturat por implenetimet e tyre janë të ndryshme.Në C++ strukturat janë si klasat, përveç se trashëgimina dhe çasja janë publike dhe jo private.Në C# strukturat janë tipe numerike e jo refernciale prandaj të dhënat jipen me anë të vlerave.Në C++ programerët i krijojnë variablat private  që të bëjnë enkapsulimin e tyre, pa e prishur ndërfaqen e Përdoruesve.Kjo paraqet përdorimin e vetive.Në C# vetitë janë anëtarë të klasave, të cilët te përdoruesi duken si variabla kurse te zhvilluesi si metoda.Kjo ndihmon në enkapsulimin dhe fshehjen totale të të dhënave duke ju mundësuar përdoruesëv çasje të shpejtë në të njëjtën kohë.

### C# kundrejt JAVA
Java është ndër konkurrentët më serioz të C#.Këto dy gjuhë programuese kanë shumë dallime dha ngjashmëri mes tyre.Objektet e JAVA krijohen në heap duke përdorur fajlën neë, sikurse edhe në C#.Metodat që krijohen brenda klases duhet të jenë anëtarë të klasës apo metoda statike në të dy gjuhët.Të dyja përkrahin klasat abstrakte, trashëgiminë e shumëfishtë të ndërfaqeve, por lejojnë që një klasë të trashëgohet vetëm njëherë.Trajtimi i gabimeve gjithashtu është i ngjashëm, dhe bëhet me përdorimin e blloqeve try, catch, finally.Try shikon se a ka gabime, catch gjen gabimet dhe paralajmëron dhe finally bën lirimin e resurseve.Të gjitha gabimet (përjashtimet) rrjedhin nga klasa  Exception.Deklarimi i instancave dhe anëtarëve statik zakonisht ndodh para thirrjes se konstruktorit si te JAVA ashtu edhe te C#.
Përveq ngjashmërive këto dy gjuhë kanë edhe disa dallime.Për shembull të dyjat kanë Main metodën (metodën kryesore), por në C# main fillon me shkronjë të madhe kurse të JAVA me të vogël.Namespace në C# paraqesin një grup të koleksioneve të klasave të ngjashme me konstruktin e paketave te JAVA.Dallimi qëndron se te JAVA këto paketa diktojnë (tregojnë) strukturën e fajllave burimor, kurse në C# nuk e dallojnë pjesën fizike por vetëm strukturën logjike të fajllave.

## Përparësitë e C#
Gjuha C# mund të përdoret për shumë lloje të aplikacioneve si për uebsajt,desktop aplikacione, lojëra, aplikacione telefonike.Duke qenë se është punuar për rreth një dekade me të, me lansimin e Windows 8 me stil të ri duke optimizuar interaksionin me prekje në tableta, C# është një ndër gjuhët që ofroi përkrahje të plotë për këto ndryshime.
Edhe pse C# u krijua nga Microsoft, vetë gjuha dhe kohëzgjatja e startimit të programit (Runtime) janë të dokumentuara nga ECMA, duke i mundësuar të gjithëve të implementojnë C#. Mono Project me kod të hapur burimor, siguron veglat për krijimin e  aplikacioneve me C# që punojnë në Linux, Mac OS X, iOS, dhe Android.
Fuqia e C# qëndron se përkrah teknika të shumta programuese.Për shembull,veçori të objekt orientit, gjenerikët,pjesët dinamike dhe statike, dhe ka programim funksional.Gjithashtu përkrah listat, dhe shërbime të tjera si sandboxing, exception handling,thread management,garbage collector.
C# ka sistem të unifikuar, që do të thotë se tipet e të dhënave si int dhe double, trashëgohen nga një tip objekti rrënjë.Prandaj të gjitha tipet e të dhënave kanë një set të përbashkët të operatorëve që mundëson ruajtjen, transportimin dhe operimin në mënyrë konsistente.

## Programi i parë në C#
Sikurse në të gjitha gjuhët e larta programuese edhe në C# programi i parë titullohet  *"Hello World"*.Ky program zakonisht përdoret për prezantimin e një gjuhe të re programuese. Në C# ky program duket kësisoj:
```csharp
using System;

public class Test
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Pershendetje bote");
    }
}
```
Kodet burime në C# kanë shtesën .cs dhe kur kompajllohen prodhojnë një fajll ekzekutues .exe.

## Referimet
* C#/.NET History Lesson  
* The A-Z of Programming Languages: C#  
* C++ -> C#: What You Need to Know to Move from C++ to C#
* Fundamentals of Computer Programming with CSharp nga Nakov 
* A comparison of  Microsoft's C# programming language to Sun Microsystems Java programming language
* C# Programming Language, The, 4th Edition