C# хэлний тухай

Өнөө үед мэдээллийн технологийн салбарт эрэлттэй, эрчимтэй хөгжүүлэлттэй, хамгийн хүчирхэг хэлүүдийн нэг бол програмчлалын 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 -ээс машиний код руу хөрвүүлнэ. Гэхдээ нэгэнт хөрвүүлэгдсэн кодийн хэсэг програмийн ажиллагааг дуустал хадгалагдах тул энэ нь бүтээмжийг /хурд/ дээшлүүлдэг.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 225 Төлбөртэй

Боловсруулагчид C# дээр програм зохиохдоо голдуу Visual Studio эсхүл ямар нэгэн JetBrains компаний Rider мэтийн IDE (integrated development environment) боловсруулалтын хэрэгслийг ашигладаг. Гэхдээ бүхий л IDE -нууд боловсруулалтын ажиллагааг хөнгөвчилж өгдөг ч програм үүсгэх ажиллагааны олон жижиг зүйлүүдийг цаанаа хийдэг. Үнэн хэрэгтэй бид зөвхөн .NET CLI -ийн боломжийг ашиглан боловсруулалтын орчингүйгээр ажиллах боломжтой.

  Нээгдсэн тоо: 1354 Төлбөртэй

Онолын хувьд обьект хандлагат програмчлал гурван үндсэн зарчим дээр суурилдаг. Үүнд

  1. encapsulation - хайрцаглалт
  2. inheritance - удамшилт
  3. polymorphism - полиморфизм

ордог. Хайрцаглалт гэдгийг классын ажиллагааны логикийг бусад классуудаас хандалтын хэлбэрээр зохицуулан хаах гэж ойлгож болно. Өөрөөр хэлбэл бусад классуудад ашиглаж болох арга, шинжүүдийг public төрлийнх харин шинжид утга олгох, арга өөрөө ашиглах хувьсагчид гэх мэт бусад аргууд ашиглах шаардлагагүй хэсгүүдэд хандалтын private төрлийг тавих юм. Энэ тухай бид C# төрлийн бүрэлдхүүн хичээлд арга private төрлийн хувьсагчид хэрхэн хандахыг ойлгохдоо авч үзсэн.

  Нээгдсэн тоо: 1067 Бүртгүүлэх

Entity Framework сэдвийн хүрээнд нийтлэгдэж буй энэхүү хичээлд бид Linq технологид хүсэлтийг sql төрлийн бичлэгтэй төстэй байдлаар бичин ашиглах боломжийн тухай үзнэ. Өмнөх хичээлүүдэд ашиглаж байсан програмын кодын харилцагчдын мэдээллийг авах GetCustomersEF() аргыг доорх байдлаар өөрчлөн өгье.

  Нээгдсэн тоо: 2575 Төлбөртэй

Энэ хичээлээр бол C# хэл дээр програм зохиох жишээ хичээлийн үргэлжлэл юм. Програм зохиох жишээ 1 хичээлд бид програм юу хийх тухай техникийн даалгавар, бизнес логикийн кодыг бичсэн. 

Хэрэглэгчийн интерфейс

Одоо хэрэглэгчийн интерфейсээ хийцгээе. Үүний тулд TextEditor төслийн Form1.cs файлыг нээнэ. Файлыг Visual Studio төслийг үүсгэхдээ автоматаар оруулан ирдэг. Формын нэрийг ойлгомжтой болгох үүднээс MainForm.cs болгон өөрчилье. Visual Studio хувилбараас хамаараад TextEditor төслийн Program.cs файлын Program класст Application.Run(new MainForm()); өөрчлөлтийг хийх хэрэгтэй болж мэднэ. Интерфейстэй ажиллахын тулд ажлын хэсгийг доорх зурагт үзүүлснээр зохион байгуулъя.

Класс ба структурт ердийн талбар, арга, шинжүүдээс гадна статик талбар, арга, шинжүүд байж болдог. Статик талбар, арга, шинжүүд…

Нээгдсэн тоо : 150

 

Хичээлээр useState -тэй тун төстэй useRef хукийн талаар авч үзье. useRef хукийн онцлог ашиглалтыг компонент хэдэн удаа дахин…

Нээгдсэн тоо : 123

 

Хүүхдүүд тооны хичээлийг анхнаасаа зөв ойлгон сураагүйгээс анги ахих тусмаа математикийн хичээлийнн хоцрогдолоос болоод дургүй болох тал байдаг.…

Нээгдсэн тоо : 312

 

Нийтлэлээр графикийн хэвүүдийн /GUI pattern/ түүхийг авч үзье. Боловсруулалтын графикийн хэвүүдийг 30 гаруй жилийн туршид боловсруулж байгаа бөгөөд…

Нээгдсэн тоо : 167

 

Хааяа өөр өөр параметрүүдийн багцтай нэг аргыг үүсгэх шаардлага гардаг. Ирсэн параметрүүдээс хамааран аргын тодорхой хэрэгжүүлэлтийг хэрэглэнэ. Ийм…

Нээгдсэн тоо : 196

 

Ямарч програмын ажиллагааны чухал хэсэг бол төрөл бүрийн мэдээллийн боловсруулалт, тэдгээртэй ажиллахтай холбоотой байдаг. Иймээс энэ хичээлээс vuejs

Нээгдсэн тоо : 139

 

Хичээлээр react -ийн хукуудаас их өргөн ашиглагддаг useEffect -ийн талаар авч үзье. useEffect -ийн ажиллагааг судлах хуудасны кодийг

Нээгдсэн тоо : 138

 

Илэрхийлэл бол математикийн хэлний үндэс болсон суурь ойлголтуудын нэг. Математикийн илэрхийллийг тооцооны алгоритм, аксиом, теорем, бодлогын нөхцлүүд гээд…

Нээгдсэн тоо : 264

 

Програм зохиох бол нарийн төвөгтэй ажил. Ямар ч програмын хувьд өөрийн хийх ажлаа гүйцэтгэхийн чацуу цаашдаа хөгжих, ажлын…

Нээгдсэн тоо : 189

 
Энэ долоо хоногт

тэгшитгэлийг бод.

Нээгдсэн тоо : 1140

 

хязгаарыг бодоорой.

Нээгдсэн тоо : 720

 

Ангийн нийт сурагчдын 60% нь эмэгтэй сурагчид байдаг. Ангиас санамсаргүйгээр нэг сурагч сонгоход эрэгтэй сурагч байх магадлалыг ол.

Нээгдсэн тоо : 1124