Өнөө үед мэдээллийн технологийн салбарт эрэлттэй, эрчимтэй хөгжүүлэлттэй, хамгийн хүчирхэг хэлүүдийн нэг бол програмчлалын C# хэл юм. Хэл дээр десктопийн жижигхэн програмаас эхлээд өдөрт сая сая хэрэглэгчид үйлчлүүлдэг том хэмжээний веб портал, сервисүүд гээд маш олон төрлийн програмуудыг боловсруулж байна.
C# залуу хэл биш бөгөөд .NET платформ хөгжлийн урт замыг туулсан. 2002 оны 2-р сард Microsoft Visual Studio .NET -тэй зэрэг хэлний анхны хувилбар гарсан.
C# нь С -тэй төрлийн буюу C++, Java -тай төстэй бичлэгийн дүрэмтэй. Иймээс та эдгээр хэлүүдийн нэгийг мэддэг бол C# -ийг сурахад төвөггүй.
C# обьект хандлагат хэл бөгөөд энэ чиглэлд C++, Java -аас олон зүйлийг авсан. Жишээ нь C# полиморфизм, удамшилт, статик төрөлжүүлэлтийг дэмждэг. ОХ аргачлал том хэмжээний асуудлыг шийдэхийн зэрэгцээ уян хатан, өргөтгөн хөгжүүлэх боломжтой програмыг болосруулах боломжийг олгодог. C# -ийг идэвхтэй хөгжүүлж байгаа бөгөөд шинэ хувилбар бүрд сонирхолтой боломжууд ихээр бий болсоор байгаа.
.NET платформийн үүрэг.
C# -ийг ярихад .NET платформийн (Windows Forms, WPF /Windows Presentation Foundation/, ASP.NET, Xamarin) технологи гэж үзэх нь цөөнгүй ба эсрэгээрээ .NET -ийн тухай ярихад түүнийг C# гэж үзэх гээд байдаг. Эдгээр ойлголтууд холбоотой хэдий ч тэдгээрийг адилтган үзэх нь буруу. C# -хэлийг .NET фреймворктой ажиллахад зориулан тусгайлан болосруулсан ч .NET ойлголт бол нилээд өргөн.
.NET платфоормийг Билл Гейтс Microsoft компаний бүтээгдхүүнүүдийн хамгийн сайн нь гэж хэлсэн байдаг. Үнэхээр ч .NET фреймворк програм боловсруулах хүчирхэг хэрэгсэл. Түүний дараах үндсэн шинжүүдийг онцолж болохоор.
- Олон хэлүүдийг дэмждэг. Платформийн суурь Common Language Runtime (CLR) буюу хэлний ерөнхий орчин учраас үүний ачаар .NET фреймворк C# -аас гадна VB.NET, C++, F# зэрэг хэлүүд болон .NET -тэй холбоотой бусад хэлүүдийн төрөл бүрийн ажиллагааг дэмждэг. Жишээ нь Delphi.NET. Компиляц хийгдэхэд эдгээр хэлүүд дээрх код .NET платформийн ассемблер маягийн CIL (Common Intermediate Language) гэх ерөнхий хэлээр багцлагддаг. Иймээс тодорхой нөхцөлд нэг програмийн модулиудийг тусдаа хэлүүд дээр боловсруулж болно.
- Платформ хоорондын зохицол. .NET нь платформын шилжилттэй. (зарим нэгэн хязгаарлалт бий.) Жишээ нь платформийн сүүлийн хувилбар одоогоор .NET 6 орчин үеийн ихэнх Windows, MacOS, Linux үйлдлийн системийг дэмждэг. .NET дээр төрөл бүрийн технологийг хослуулан ашиглан C# хэл дээр Windows, MacOS, Linux, Android, iOS үйлдлийн сисийн програмийг боловсруулж болно.
- Классуудын хүчирхэг сантай. .NET дэмждэг бүх хэлүүдэд нэгдсэн классуудын сантай. C# хэлээр текст засварлагч, чат эсхүл нарийн веб сайт гээд ямарч програмийг боловсруулахдаа бид .NET -ийн классуудын сантай харьцана.
- Төрөл бүрийн технологиуд. Хэлний ерөнхий орчин CLR, классуудын суурь сан нь боловсруулагчид ямар нэгэн програмыг боловсруулахдаа ашиглаж болох бүхэл бүтэн технолгийн суурь болдог. Жишээ нь, өгөгдлийн сантай ажиллахад ADO.NET , Entity Framework Core, баялаг интерфейстэй график програм зохиоход WPF, WinUI харин энгийн график програмд Windows Forms технологиуд зорилагдсан байхад үйлдлийн систем хоорондын мобил болон декстопийн програмд Xamarin/MAUI харин веб сайт болон веб програмд ASP.NET гэх мэтээр байх жишээтэй.
- Бүтээмж. .NET 6 дээрх веб програм олон тооны тестийн хэрэгслүүдийн үзүүлэлтээр бусад технологиудаар боловсруулсан веб програмуудаас олон төрөлд тасархай түрүүлж байгаа нь батлагдсан. .NET 6 -ийн програмууд өндөр бүтээмжээрээ ялгардаг.
Үүнээс гадна .NET фреймворк, C# хэлний автомат хог цэвэрлэлтийг дурдах хэрэгтэй. Энэ нь ихэнх тохиолдолд бид санах ойн чөлөөлөлтөд санаа зовох хэрэггүй гэсэн үг. Хэлний ерөнхий орчин CLR өөрөө хог цэвэрлэгчийг дуудан санах ойг цэвэрлэнэ.
.NET фреймворк /Framework/ .NET 6
.NET удаан хугацаанд .NET Framework нэрээр голдуу Windows -д зориулагдан хөгжиж байсан. Энэ платформийн сүүлийн .NET Framework 4.8 хувилбар 2019 онд гараад хөгжүүлэлт зогссон.
2014 оноос Microsoft төрөл бүрийн үйлдлийн системд зориулагдсан .NET Core платформийг хөгжүүлж эхэлсэн. .NET Core платформ өөртөө .NET Framework -ийн бүх боломжуудыг агуулан шинэ функционалуудтай болох ёстой байсан. Энэ платформийн .NET Core 1, .NET Core 2, .NET Core 3, .NET 5 хувилбаруудыг Microsoft гаргаж байгаад одоогоор сүүлийн хувилбар нь .NET 6 байгаа. Иймээс .NET Framework нь голлон Windows -д зориулагдсан бол .NET 6 олон үйлдлийн системд зориулагдсан гэдгийг ялган ойлгох хэрэгтэй.
Удирлагатай ба удирлагагүй код.
C# дээр боловсруулагдсан програмыг удирдлагатай код (managed code) гэж нэрлэх нь элбэг. Энэ юу гэсэн үг вэ? гэвэл тухайн програмыг .NET платформ дээр суурилан үүсгэсэн тул програмыг ачааллах, шаардлагатай бол санах ойг цэвэрлэдэг ажиллагаанууд хэлний ерөнхий орчноор /CLR/ удирдагдана гэсэн үг. Гэхдээ C#, VB.NET эсхүл F# шиг CIL (Common Intermediate Language) ерөнхий хэл рүү биш ердийн машиний код руу хөрвүүлэгддэг жишээ нь C++ хэл дээр зохиогдсон програмууд бий. Энэ тохиолдолд .NET програмыг удирдахгүй. Гэсэн хэдий ч .NET платформ удирдлагагүй кодтой харилцан ажиллах боломжийг өгдөг.
JIT-компиляц
C# -ийн код CIL (Common Intermediate Language) ерөнхий хэл рүү exe эсхүл dll өргөтгөлтэй файлд багцлагдан хөрвүүлэгдэнэ. CIL бол .NET -ийн виртуал машиний "дээд түвшингийн ассемблер" хэл юм. Ийм програмуудыг ажиллуулахаар ачааллахад JIT компиляц (Just-In-Time) хийгдэн машиний код руу шилжүүлэн дараа нь ажиллуулдаг. Програм олон тооны бүтцийг агуулсан том хэмжээний байж болох ч тухайн үед хандаж байгаа хэсгийг л машиний код руу хөрвүүлдэг. Хэрэглэгч програмын өөр хэсэгт хандахад тэр хэсгийн кодийг CIL -ээс машиний код руу хөрвүүлнэ. Гэхдээ нэгэнт хөрвүүлэгдсэн кодийн хэсэг програмийн ажиллагааг дуустал хадгалагдах тул энэ нь бүтээмжийг /хурд/ дээшлүүлдэг.