C# гэж чухам юу вэ ? Бидний мэдэх өнөөгийн Програмчлалын арга технологи ,хэлүүд үүсэхээс өмнө маш удаан цаг хугацаа, техник болон програм хангамжийн олон үе шатуудыг дамжин хөгжсөөр ирсэн билээ. Цаасан дээр цэгэн хэлбэрээр бичиж уншуулах болхи аргаар програмчлалаас эхлээд техник хөгжихийн хэрээр програм хангамж зэрэгцэн хөгжиж түүнийг зохиох арга технологиудыг шинээр бий болгон хэрэглэсээр өнөө хүрлээ. Зөвхөн програмчлалын хэлүүд гэхэд өдөр болгон шинэ шинэ хэлүүд бий болж хувийн болон нийтийн дунд хэрэглэгдэж байна. Үүнээс тархалт сайтай стандарт болж чадсан хөгжлийнхөө төвшингөөр сайн бөгөөд үр дүнтэй гэж хэлж болох технологи бол object oriented technology(progpamming) юм. Уг технологи гарснаар програмчлалын хувьсал гарсан бөгөөд уг технологит тулгуурласан олон програмчлалын хэлүүд гараад байна. Бидний мэдэх түгээмэл хэлүүдээс дурдвал: COBOL, Java, C# …. Зэрэг хэлүүд уг технологийг дэмждэг бөгөөд эдгээр хэлээс C# хэлийг майкрософт компани .NET FRAMEWORK –Т зориулж бий болгон хөгжүүлсээр одоо 3.0 хувилбараа гаргаад байна. C# гэдэг нэр нь c++++ бөгөөд c хэлний гуравдагч үе гэж хэлж болох юм. .NET FRAMEWORK –ийн хувьд одоогоор 3.5 sp1 хувилбар гарсан.C -> c++ -> c# . C# хэл нь цэвэр oop технологит суурилж хийгдсэн бөгөөд .NET FRAMEWORK –ийг дэмждэг хэлүүдийн нэг юм. Нэн ялангуяа энэ хэл нь .NET FRAMEWORK -ийн class, data type , method …. Уудийг ашиглан програмчлах боломжийг олгодог дээд төвшний хэл юм. Мөн C# нь visual windows орчны хэл бөгөөд visual studio tool тэй хослосноороо хүчирхэг програмчлалын орчинг бүрдүүлж чадсан. Эдгээрээс дурьдвал: Програмын код бэлэнчлэл-үүсгэлт, код гүйцээлт, Ойлгоход хялбар хүчирхэг Interface, бичдэс автоматаар хөрвүүлж стандарт хэлбэрт оруулах чадвар, .net framework –д үндэслэсэн асар их байнгын шинэчлэгдэж байдаг бэлэн сангууд .... C# хэл нь өмнөх C, C++ хэлний үндсэн элемэнтүүдийг агуулсан бөгөөд нэмж Namespace болон class ийн method болон variable уудтай дээрээс доош задрах байдлаар(hierarchy) цэгээр зааглан хандах боломжийг олгосон ж нь: nameSpace.class.subClass.derivedClass.methodOrVariable…. гэсэн ерөнхий зарчмаар програмчлах боломжийг олгосон. Энэ хэлбэр нь .NET FRAMEWORK ийг OOP той хамтатган ашиглаж байгаа хялбар бөгөөд үр дүнтэй арга юм. Мөн indexer, interface, delegate, property гэсэн цоо шинэ ойлголтуудыг оруулж ирсэн юм.
Property
Property бол классийн өгөгдөлд утга оноох авах (set; get;) ерөнхий хандах арга, багц үйлдэл юм. Property –г ашигласнаар тусгай функц эсвэл оператор дахин зарлахгүйгээр класс, обьектед нэвтрэх боломжтой болж байна.
Ж нь:
class Proper
{
int Value;
public int access
{
set
{
Value = value;
//value – set багц дуудагдах үед утга дамжуулан оноох
}
get
{
return Value;
}
}
}
Proper example=new Proper();
// set багц команд ажиллаж классын гишүүн өгөгдөлд утга онооно
example.access =15;
// get багц команд ажиллан классын гишүүн өгөгдөлөөс утгыг хэвлэж байна
Console.WriteLine( example.access);
Delegate
Delegate – үгийн утга нь эрх мэдлийг төлөөлөн эдлэх гэж хэлж болно. Delegate бол функцуудыг заалт хэлбэрээр хадгалах боломж олгодог өгөдлийн төрөл юм. Хэдийгээр ойлгоход хэцүү юм шиг боловч ажиллах хэлбэр маш энгийн юм. Ерөнхийдөө програмд төстэй үйлдлүүдийг сонгох байдлаар хэрэглэгддэг. Delegate нь функц шиг зарлагдана гэхдээ тодорхойлох их бие байхгүй бөгөөд зөвхөн параметрүүдийн олонлог буцаах утгыг зарлаж өгнө. Тэгээд хэрэглэхдээ зарласан Delegate төрлөөрөө хувьсагч байгуулна. Ингээд тухайн хувьсагчаа ижил буцаах утга, параметрүүд бүхий функцийн заалтыг оноож утга олгох маягаар ашиглана. Үүний дараагаар тухайн Delegate хувьсагчаа функц шиг дуудаж хэрэглэж болно.
Ингээд функц заах хувьсагчаа ашиглаад бусад функцд параметр болгон дамжуулаад тэр авсан функц нь delegate ийг ашиглаад тухайн нөхцөл байдалд өөр өөр харгалзах функцыг нь дуудах боломжтой.
Ж нь:
class Program
{
//delegate төрөл зарлалт
delegate double ProcessDelegate(double param1, double param2);
static double Multiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 / param2;
}
static void Main(string[] args)
{
//тухайн delegate төрлийн хувьсагчийг зарлаж байна
ProcessDelegate process;
Console.WriteLine("Enter 2 numbers separated with a comma:");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos + 1,
input.Length - commaPos - 1));
Console.WriteLine("Enter M to multiply or D to divide:");
input = Console.ReadLine();
//нөхцөл шалгах байдлаар delegate хувьсагчдаа функцын заалтыг өгч байна
if (input == "M")
process = new ProcessDelegate(Multiply);
else
process = new ProcessDelegate(Divide);
//хэрэглэгчийн сонголтоос хамаараад process хувьсагч фунццийг дуудах
Console.WriteLine("Result: {0}", process(param1, param2));}}
Interface
Interface -ийг public хэлбэрийн функц, өгөгдлийн цуглуулга, багц гэж хэлж болно.
Өөрөөр хэлбэл классд зориулж үүсгэсэн ноорог, хэв юм. Үндсэн санаагаа оруулж өгөөд түүнийг өөрөө болон бусад програмчлалд үндэс болгон дахин тодорхойлж гүйцээн стандарт хэлбэрээр ашиглах боломжтой. Зүйрлүүлбэл бэлэн гаргасан арга хэлбэрийн дагуу явж зорилгодоо хүрэхтэй адил юм. Энэ хэлбэр буюу санаа нь кодонд буухаараа тухайн асуудалыг шийдэх бэлэн загвар болдог. C# -ийн Interface ийг шууд дуудах, ашиглах боломжгүй. Програмчлал талаас нь тодорхойлбол interface нь хийсвэр эх класстай төстэй гэхдээ бодитоор програмд дуудан ашиглах боломжгүй зүйл юм.
Ойлгомжтой байх үүднээсээ жишээ аван тайлбарлая. Эхлээд Interface түлхүүр үг ашиглан IExample нэртэй жишээ interface тодорхойлоё.
interface IExample { } //- interface –ийн бичдэс
Бичдэсийн нь класстай төстэй. Хүсвэл public үйлчлэх хүрээний түлхүүр үг бичиж болно. Interface нь удамших классдаа тодорхойлуулах зорилгоор функц болон properties –ийн зарлалтыг агуулна. Өмнөх Interface –ийг нэг функц болон properties тэйгээр тодорхойлбол:
interface IExample {
void Method();
int Property { get; set; }
}
Interface –ийн нэрний араас долгионтой хаалтны дунд функц болон property –г зарлана.
Уг зарлалтын дагуу хэрвээ класс interface –ийг удамшуулж хэрэглэвэл бүх зарлалт, бичлэгийг зайлшгүй гүйцээн тодорхойлох ёстой.
Abstract keyword
Abstract Түлхүүр үгийг классд хэрэглэвэл, тухайн классыг шууд хэрэглэхгүй холбох байдлаар хэрэглэнэ. Мөн тодорхойлох шаардлагатай функцын зарлалтыг хийж болно.
Функцд abstract түлхүүр үгийг хэрэглэснээр эх классийн санаа буюу функцын зарлалтыг удамшсан класст тодорхойлох юм.
UNIX үйлдлийн системийн талаархи товч түүх
1960-иад оны эхэн үед компьютерүүд batch горимд зөвхөн ганцхан программ ажиллуулдаг байсан. Энэ үед программ зохиогчид перфеид (punch card- энэ нь 16-ийн тоололын системд цоолсон карт ойролцоогоор 5x25см ойролцоогоор) карт уншуулж программа оруулаад үр дүнг нь зүүн хэвлэх төхөөрөмж дээр хэвэлж авна. Хэрэв янз бүрийн алдаа гарвал тэр алдааны тухай хэвлэдэг. Ингээд 1969 оны үед UNIX үйлдлийн систем гарсан. Велл лабораторийн 2 инженер Ken Thompson , Dennis Ritchie нар үйлдлийн системийн ерөнхий бүтэцийг гаргасан. Энэ үед Ken Thompson-ны нарны системийн талаар симулашин хийдэг программ дээр ажиллаж байсан. Энэ програмийн нэр нь Space Travel. Энэ программ нь Multics үйлдлийн системийн орчинд хөгжүүлж байсан. Энэ нь анхны олон хэрэглэгчийн үйлдлийн систем байсан ба үүнийг General Electric 6000 Series компьютер дээр ажилуулж байсан. Гэвч энэ үйлдлйин систем нь маш том, удаан, бас маш их компьютерийн нөөц шаардаг байсан. Ken Thompson жижиг компьютер олж өөрийн Space Travel гэсэн нарны системийн симулашин хийдэг программа энэ компьютер уу хөрвүүлсэн. Энэ жижиг компьютер нь Digital Equipment Corporation (DEC) компаний PDP-7 төрлийнх байсан. Ken Thompson энэ компьютерт зориулж анхы UNIX үйлдлйин системийг боловсруулсан. Энэ нь Multics үйлдлйин системээс зарим талаараа давуу байсан.
Энэ UNIX үйлдлйин системийг 1970 онд анх PDP-11/20 болон PDP-11/40, PDP-11/45, PDP-11/70 мини компюьтер руу хөрвүүлсэн. Эдгээр төрлүүд бүр янз бүрийн нэмэгдэл эд ангиуд байсан боловч , UNIX төрлийн үйлдлийн систем нь энэ бүгдийг дэмжиж байсан. Dennis Ritchie болон Велл лабораторийн зарим гишүүд UNIX үйлдлйин системийг цааш хөгжүүлсэн. Энд зарим текст боловсруулах программ зохиосон болон зарим хэрэглэгээний программуудыг боловсруулж байсан. Анхны UNIX системийг Ассемблер хэл дээр бичсэн. Гэвч энэ Ассемблер хэл нь ашиглах компьютерийн төв боловсруулах төхөөрөмжийн (CPU) төрөл болон компьютерийн дотоод бүтцээс хамаардаг. Энэ нь өөр төрлийн компьютер дээр ашиглах болбол дахин тэр компьютерт зориулж бичих шаарладагтай болдог өөрөөр хэлбэл машины хамааралтай үйлдлйин систем юм. Иймд Thompson болон Ritchie нь Multics үйлдлйин систем дээр өндөр төвшины хэл PL/1 дээр янз бүрийн хэрэглэгээний программууд бичдэг маш их туршилагтай инженерүүд байсан. Ингээд тэд дахин өндөр гөвшины хэл дээр UNIX үйлдлийн системийг бичиж эхэлсэн ба энэ хэл нь одоогийн С хэл байсан. С хэл дээр UNIX үйлдлийн системийг бичихэд маш олон давуу талууд байсан. Thompson болон Ritchie нар 1973 онд анх UNIX үйлдлийн системийг С хэл дээр бүрэн бичиж дуусгасан. Заримдаа Dennis Ritchie-ийг С хэлний залгамлалсан эцэг ч гэж нэрлэдэг. Ер нь UNIX үйлдлийн системийн 95%-ийг нь С хэл дээр бичсэн байдаг, үлдсэн 5% нь Ассемблер хэл дээр бичсэн байдаг. Энэ 5% нь ерөнхийдөө UNIX үйлдлийн системийн цөмд бичигдсэн байх ба тэр хэсэг нь техник хангамж руу хандахад ашиглагдаг байна. Америкийн нэгдсэн улсын их дээд сургууль коллеж болон том эрдэм шинжилгээний төвүүд нь UNIX үйлдлийн системийг өргөн ашигладаг. 1975 онд Велл лаборатори UNIX үйлдлийн системийн хамгийн доод үнээр нь санал болгож байсан. Их дээд сургуулийн хичээлд UNIX талаар хичээл орсноор , оюутнууд UNIX-ийн орчинд янз бүрийн программ бичих боломж бүрдсэн. Дараахь 2 төрлийн UNIX системийг нилэээн өргөн ашигладаг.
1. AT&T UNIX version V
2. Berkeley Unix
Бусад UNIX системүүд ихэвчлэн энэ 2 төрөл дээр суурилсан байдаг. Одоо UNIX үйлдлийн системийг (micros, minis, mainframes, and supercomputers) энэ төрлийн компьютерүүд дээр өргөн ашиглаж байна. UNIX үйлдлийн систем дээр суурилсан стандартууд гарсан энэ нь тодорхой чиглээр зөв системтэй хөгжих боломжтой болж байгаа юм. AT&T –гээс system V Interface Definition (SVID) стандартыг гаргасан бол бусад UNIX-ийг хөгжүүлэгч компаниудаас Portable Operating System Interface for Computer Environments (POSIX).
No comments:
Post a Comment