Програмчлалын хэлний тухай.
Програм, програмчлал, програмчлалын хэл гэж юу вэ?
Бодит ертөнцийн бодит компьютерууд мэдээллийг бидний өгсөн зааврын дагуу боловсруулдаг. Ийм заавруудын цогцыг компьютерын програм (computer programm) гэнэ. Програм зохиох процессыг програмчлал (computer programming) гэнэ. Програмчлал үйлдэхдээ ашигладаг логик “хэрэгсэл” бол програмчлалын хэл (programming language) юм. Програмчлал үйлдэхдээ ашигладаг физик “хэрэгсэл” бол компьютер юм.
Програмчлалын мөн чанаруудыг дурдъя.
· Програмчлал бол удирдан жолоодох процесс: (Програмистын юу хий гэж заасныг компьютер ёсчлон биелүүлнэ.)
· Програмчлал бол зааж, сургах процесс: (Зөвхөн програмист л компьютерт шинэ юмыг зааж, сургана.)
· Програмчлал бол асуудал шийдвэрлэх процесс: (Компьютерээр үргэлж ямар нэг ашигтай зүйлийг хийлгэнэ. Ж.нь хамгийн тохиромжит аяллын маршрутыг олох г.м.)
· Програмчлал бол бүтээлч үйл ажиллагаа: (Олон боломжуудаас хамгийн сайныг олж тогтоох.)
· Програмчлал бол загварчлал: (Шийдвэрлэх гэж буй асуудлыг дүрслэнэ, ө.х. түүний загварыг (model) байгуулна.)
· Програмчлал бол хийсвэрлэл (abstraction): (Асуудлын загварыг байгуулахдаа хийсвэрлэнэ, ө.х. асуудлын мөн чанарыг алдагдуулахгүйгээр чухал бус хэсгүүдийг нь хаяна.)
· Програмчлал бол оновчтой бөгөөд ойлгомжтой байдал: (Даалгаврыг хэрхэн гүйцэтгэх вэ гэдгийг оновчтой бөгөөд ойлгомжтойгоор илэрхийлнэ.)
Дээрх олон талт үйл ажиллагааны дүнд үүсч буй бүтээгдэхүүн бол програм юм.
Програм ч гэсэн өөрөө олон мөн чанартай. Тухайлбал:
· Програм бол загвар.
· Програм бол програмистын бичсэн заавруудын цогц дараалал (sequence of instructions).
· Компьютер програмыг заавар заавраар нь цувуулж биелүүлнэ.
· Зааврууд нь компьютерт ойлгомжтойгоор илэрхийлэгдсэн байна.
г.м.
Машины хэл
Орчин үеийн компьютерын мэдээлэл боловсруулах үйл ажиллагаа дотор талын логик элементүүдэд (схемүүдэд) өгөгдсөн хүчдэлээр зохицуулагддаг. Логик элемент нь “асаалттай”/ “унтраалттай” (эсвэл “үнэн”/“худал” буюу “хүчдэл байна”/“хүчдэл байхгүй”) гэсэн хоёр тогтвортой логик төлвийн аль нэгд оршдог. Ө.х. компьютер хоёр ялгаатай төлвийг л мэдэрдэг байна. Тиймээс компьютерт орж буй аливаа мэдээлэл нь ийм хоёр ялгаатай төлвүүдийн комбинациар, ө.х. логик элементүүдийн дарааллаар дүрслэгдэх ёстой болно. Эс тэгвээс компьютер тухайн мэдээллийг ойлгохгүй. Энэ бол компьютерын “төрөлх хэл” юм. Үүнийг машины хэл (machine language) гэдэг. Харин хүн логик элементүүдийн төлвийг тоогоор дүрсэлж ойлгоно. Тухайлбал “асаалттай” төлвийг 1, “унтраалттай” төлвийг 0-ээр кодлоно. Ө.х. хүний хувьд машины хэл гэдэг нь ...0101011010... гэсэн тоон дараалал байдаг бол компьютерын хувьд
гэсэн цахилгаан дохионуудын дараалал байна.
Машины хэл нь урьдчилан тодорхойлогдсон бүлэг командуудаас тогтдог. Эдгээр командуудыг машины командууд (machine commands) гэнэ. Урьдчилан тодорхойлогдсон гэдэг нь, команд бүр өөрийн гэсэн тоон кодтой гэсэн үг. Энэ кодоороо санах ойд хадгалагдаж байдаг. Өөр өөр төрлийн компьютерын машины командууд, ө.х. машины хэлүүд нь өөр өөр байна. Тэгэхээр програм гэдэг бол үнэн хэрэгтээ машины хэлээр илэрхийлэгдсэн заавруудын (машины командуудын) дараалал болж таарч байна. Машины хэлээр програм бичих үед санах ой, регистр, процессорын командууд гээд компьютерын бүх нөөц, бололцоог хэрэглэгч бүрэн хянах боломжтой. Мэдээж шууд “төрөлх хэлээр” нь бичигдсэн байх тул програм компьютерт туйлын ойлгомжтой, нийцтэй байна. Гэтэл ийм програмыг хүн уншиж ойлгох, бас бичихэд маш төвөгтэй болно. Тухайн нэг машины команд ямар кодтой байдгийг сайн мэдэх хэрэгтэй болно. Энэ нь машины хэлээр томоохон програм бичих боломжийг үгүй болгодог.
Програмчлалын хэл
Үүний улмаас, компьютерт зориулж програм бичих үйл ажиллагааг хөнгөвчлөхийн тулд програмчлалын хэл (programming language) хэмээх “логик хэрэгсэл“ 1950-иад оноос бий болсон байна. Програмчлалын хэлийг, програм зохиож буй хүндээ хэр ойлгомжтой байна вэ, эсрэгээр, бүтцийн хувьд машины хэлээс хэр ялгаатай байна вэ гэдгээр нь:
· Доод төвшний програмчлалын хэл (Low-level programming language)
· Дээд төвшний програмчлалын хэл (High-level programming language)
гэж ангилдаг.
Доод төвшний хэл
Доод төвшний програмчлалын хэлний жишээ бол 1950-иад оноос боловсруулагдан ашиглагдаж ирсэн ассемблерын хэл (assembler language) юм. Ассемблер хэлийн онцлог нь машины командуудыг богино англи маягийн үгээр төлөөлүүлэн сольсон явдал юм. Ингэснээр, машины хэлээр бол учиргүй тоон дараалал болох байсан програм уншиж ойлгоход дөхөмтэй, тодорхой үгнүүдээс тогтсон текст болж хувирдаг. Ө.х. ассемблерын програмын мөр болгон цаанаа машины нэг командад харгалзах боломжтой. Гэхдээ ассемблерын хэлээр бичсэн програмыг машины хэл рүү хөрвүүлээгүй цагт компьютерт ойлгомжгүй хэвээр байх болно. Хөрвүүлэхийн тулд ассемблер (assemblers) хэмээх тусгай хөрвүүлэгч програмыг ашиглана. Ассемблерын хэл бол нэг ёсондоо машины хэлний “үгчилсэн” хувилбар юм. Тиймээс хэрэв процессорууд хоорондоо ялгаатай бол тэдгээрийн хувьд ассемблерын хэлээр бичигдсэн програм мөн өөр өөр байдаг. Доорхи жишээнд, a=5 ба b=3 байхад c=a+b үйлдлийг хийж, үр дүнг дэлгэцэнд хэвлэх програм машины болон ассемблерын хэл дээр хэрхэн бичигдсэнийг харуулжээ. Ассемблерын текст хүн харахад арай ойлгомжтой байгаа нь илт. Энд үзүүлсэн жишээ IBM PC төрлийн компьютерт тохирно.
Дээд төвшний хэл
Компьютерын техник хөгжихийн хэрээр түүнийг хэрэглэх хүрээ улам л өргөжиж, олон ажил мэргэжлийн хүмүүс програм бичих хэрэгтэй болсон. Гэтэл эдгээр хүмүүс ассемблерын хэлээр програм бичихийн тулд компьютерын архитектур, ажиллах зарчимыг маш сайн мэдэх шаардлагатай болно. Ийм “дарамтаас” програмистыг чөлөөлөхийн тулд дээд төвшний програмчлалын хэлүүд бий болсон. Эдгээр хэлүүд нь хүний хэл ярианд (ихэвчлэн англи хэлд) илүү ойр, уншиж ойлгоход хялбар, математикийн стандарт тэмдэглэгээнүүдийг өргөн ашигладаг г.м. шалтгаанаар хүн хэрэглэхэд илүү тохиромжтой тул их биш хугацаанд нүсэр хөдөлмөр зарцуулахгүйгээр програм бичихэд тохиромжтой юм. Мөн сурахад хамаагүй хялбар ажээ. Ийм хэлээр бичсэн програм жирийн л текст байдаг. Тиймээс компьютерийн төрлөөс үл хамааран нэгээс нөгөө рүү амархан зөөгддөг юм. Текстийг мөр мөрөөр (lines) бичигдсэн бүтэцтэй гэж ойлгох хэрэгтэй. Нэг ийм мөрийг илэрхийлэл (expression) эсвэл оператор (statement) хэмээн нэрийднэ. Ямар нэг утга илэрхийлсэн мөрийг илэрхийлэл гэнэ. Ямар нэг үйлдлийг илэрхийлсэн мөрийг оператор гэнэ. Операторыг биелэх (executable), үл биелэх (non-executable) гэж ангилдаг. Биелэх оператор нь ямар нэг машины командыг төлөөлнө.
Хөрвүүлэлт
Програмчлалын хэлээр бичсэн текстийг машины хэл рүү хөрвүүлээгүй цагт компьютерт ойлгомжгүй хэвээрээ байх болно. Хөрвүүлэлтийн үр дүнд биелэх файл (execution file) үүснэ. Энэ нь програмчлалын эцсийн бүттээгдэхүүн бөгөөд 100% машины хэлээр дүрслэгдсэн, жинхэнэ процессорын биелүүлэх ёстой заавруудыг агуулсан тэр хэлбэр юм. Биелэх файлыг ачаалснаар програм биелэгдэж эхлэнэ. Хөрвүүлэлтийн (translation) хоёр хэлбэр бий:
· Компиляци (compilation)
· Интерпретаци (interpretation)
Компиляци бол текстийг бүхлээр нь нэг удаа хөрвүүлэх хэлбэр юм. Бүрэн хөрвүүлэгдсэнийхээ дараа програм биелж эхлэнэ.
Интерпретаци бол текстийг бүхлээр нь нэг удаа биш харин мөр мөрөөр хөрвүүлэх хэлбэр юм. Хөрвүүлэгдсэн мөр тэр дороо биелэнэ. Ө.х. хөрвүүлэлт, биелэлт хоёр зэрэгцэн явагдана.
Компиляцийг компилятор (compiler) хэмээх хөрвүүлэгч програмаар гүйцэтгэнэ.
Интерпретацийг интерпретатор (interpreter) хэмээх хөрвүүлэгч програмаар гүйцэтгэнэ.
Хэл болгон өөрийн гэсэн хөрвүүлэгчтэй байна. Хэл ба хөрвүүлэгч нь салшгүй ойлголтууд юм. Өнөө үед олон төрлийн компьютер, мөн тэдгээрт суух олон янзын үйлдлийн системүүд (платформууд) байгаагаас шалтгаалан нэг програмчлалын хэлний хэд хэдэн ялгаатай хөрвүүлэгч байх жишээтэй. Ж.нь UNIX/Linux-т зориулсан хөрвүүлэгч, MS-DOS үйлдлийн системд зориулсан хөрвүүлэгч, Windows-т зориулсан хөрвүүлэгч г.м. Хөрвүүлэгдээгүй байгаа текстийг эх код (source code), түүнийг бүхлээр нь хөрвүүлэхэд үүсэх машины кодыг объект код (object code) гэж нэрлэдэг. Програм бичихдээ бид эдгээр нэр томъёог байнга ашиглах болно. Зургийг харахад, эх код бол нэг платформаас нөгөө рүү хялбар зөөгдөх боломжтой байна. Гэтэл объект кодууд ингэх боломжгүй. Учир нь өөр өөр хөрвүүлэгчээр үүсгэгдсэн байна. Дээд төвшний хэл болгон өөрийн гэсэн “зөв бичих” (Syntax) дүрэмтэй. Хэрэв хөрвүүлж буй эх кодонд дүрэм зөрчсөн алдаанууд байвал хөрвүүлэгч “энд ийм ийм алдаа байна” гэсэн мэдээлэл гаргаад, хөрвүүлэлт тасалдана. Эдгээр алдааг арилгасан тохиолдолд л хөрвүүлэлт амжилттай болдог.
Програмчлалын технологиуд
Нэгэнт дээд төвшний програмчлалын хэлүүд нь хүний хэл ярианд ойр бүтэцтэй учраас эсрэгээр машины хэлээс хол ялгаатай болж ирэх нь зүй. Ийм нөхцөлд, түүнийг машины хэлэнд хөрвүүлэх процесс удааширч ирдэг. Үүнээс болоод програмын биелэгдэх хурд доод төвшний хэл дээр үүсгэсэн програмыг бодвол харьцангуй удаан, санах ойд эзлэх зай их болно. Гэхдээ үүнийг үл тооцон, өнөөдөр буй ихэнх хэрэглээний програмыг өндөр төвшний хэлүүдээр зохиодог. Дээд төвшний хэл дээр програм бичихдээ тодорхой хэв маягийг (стиль) баримтлах ёстой. Үүнийг програмчлалын технологи эсвэл програмчлах техник (programming technique) гэнэ.
Програмчлалын үндсэн технологиуд:
· Процедурт програмчлал (Procedural programming)
· Модульт програмчлал (Modular programming)
· Объект хандлагат програмчлал (Object-Oriented Programming)
г.м.
Процедурт програмчлал
Процедурт програмчлал (Procedure-Oriented programming - POP) гэдэг нь, аливаа програмыг өөр хоорондоо холбоотой хэд хэдэн бие даасан жижиг хэсгүүд - дэд програмуудаас тогтсон, нарийн эмх журамтай цогц мэтээр авч үздэг технологи.
Дэд програм гэдэг нь тодорхой нэрээр нэрлэгдсэн хэсэг бүлэг үйлдэл юм. Ингэснээр аливаа том бодлого түүний зөвхөн тодорхой жижиг хэсгийг бодох үүрэгтэй олон дэд бодлогод хуваагддаг. Ө.х. ямар ч бодлогыг олон дэд бодлогод хувааж, тэдгээрийг алхам алхамаар шийдэх замаар зорилгодоо хүрэх зарчмыг хэрэгжүүлдэг ажээ. Дэд програмыг дахиад дэд програмуудад хуваах боломжтой. Нэгэнт програм нь ингэж олон дэд програмд хуваагддаг бол тухайн програм биелж эхлэхийн тулд дэд програмуудын аль нэг нь бусдаасаа түрүүлж биелж эхлэх ёстой. Ө.х. аль нэг дэд програм бусдаасаа давуу эрхтэй байх ёстой. Энэхүү давуу эрхтэй дэд програм хамгийн түрүүнд ажиллаж эхлээд, дараа нь бусад дэд програмуудаа дуудан ажиллуулах ёстой. Түүнийг үндсэн дэд програм буюу үндсэн програм (main program) хэмээн нэрийддэг. Тиймээс:
Процедурт програм = Үндсэн програм + Дэд програмууд гэж томъёолж болно.
Дараах зураг дээр, үндсэн програм (ҮП) нэг дэд програмыг (ДП) тодорхой интервалтайгаар хоёр удаа дуудаж буй процессыг схемчлэн үзүүлжээ.
ҮП нь A хүртэл биелээд ДП-ыг дуудаж байна. ДП нь B-ээс C хүртэл биелж дуусаад ҮП-д удирдлагаа шилжүүлнэ. ҮП удирдлага хүлээж авсан газраасаа D хүртэл биелээд дахиад ДП-ыг дуудаж байна. ДП биелж дуусаад удирдлагаа дахиад ҮП-д шилжүүлж байна. ҮП цааш үргэжлэн биелэнэ.
Дэд програм нь:
· процедур (procedure)
· функц (function) гэсэн хэлбэрүүдтэй байна.
Функц, процедур болгон өөрийн гэсэн оролт/гаралт буюу эхлэл/төгсгөлтэй байна. Тэдгээр нь үндсэн програм болон өөр хоорондоо оролт/гаралтанд илгээгдсэн өгөгдлүүдээр холбогдоно. Функц хэлбэрийн дэд програм нь утгатай (хариутай) байна. Процедур төрлийн дэд програмд ийм утга гэж байхгүй.
Дэд програмыг гарал үүслийн хувьд:
· стандарт (standard)
· хэрэглэгчийн (user-defined) гэж ангилдаг.
Програмчлалын хэлэнд урьдаас тодорхойлогдож, түүний хөрвүүлэгчийн бүрдэлд орсон байдаг дэд програмыг стандарт дэд програм гэнэ. Байнга хийгдэж байдаг үйлдлүүдийг ингэж стандарт дэд програм болгодог. Ө.х. хэрэглэгч нь стандарт дэд програмыг бэлнээр нь шууд ашиглана. Олон тооны стандарт дэд програмууд нийлээд тухайн хэлний стандарт санг (standard library) бүрдүүлнэ.
Процедурт програмчлалын хэлүүд
Процедурт програмчлалын хэлийг заримдаа алгоритмын хэл (algorithmic languages) гэдэг. Учир нь алгоритмыг ихэвчлэн ийм хэлээр програмчилдаг. Хамгийн түгээмэл тархсан ямар алгоритмын хэлүүд байдаг вэ? Цөөн хэдийг дурдъя.
FORTRAN - FORmula TRANslator
Хамгийн анхны бүрэн хэмжээний алгоритмын хэл. 1954-1957 онд IBM (International Business Machines, АНУ) компанид, гарамгай эрдэмтэн Жон Бэкусын (John Backus) удирдсан ЭШ-ний баг физик, математик, инженерийн шинжлэх ухааны тооцоо хийх зориулалтаар бүтээсэн. Ассемблерын хэлтэй ширүүн өрсөлдөөн хийж, ялагч болон гарсан энэ хэл эрдэмтэд төдийгүй аж үйлдвэрийнхэн, цэргийнхний талархлыг зүй ёсоор хүлээжээ. Ялангуяа 20-р зууны хоёрдогч хагасаас эхэлсэн сансрын судалгааг компьютерын техникээр “зэвсэглэхэд” үнэлж баршгүй хувь нэмэр оруулсан байна. Хэдийгээр хагас зуун жилийн настай боловч эрдэм шинжилгээний давхаргад одоо ч өргөн хэрэглэгдэж байгаа. Жишээ болгож, a=5 ба b=3 байхад c=a+b гэсэн үйлдлийг гүйцэтгээд үр дүнг дэлгэцэнд хэвлэх фортран-програмын эх кодыг үзүүлэв.
BASIC - Beginner’s All Purpose Symbolic Instruction Code
“Эхлэн суралцагчид зориулсан универсал тэмдэгтүүд” хэмээн энэ програмын хэлний нэрийг орчуулж болно. 1965 онд Дартмудын коллежийн (Dartmouth College, АНУ) математикчид Жон Кемени (John Kemeny), Томас Курц (Thomas Kurtz) нар зохиосон. Уг хэл нь сурахад хялбар, компьютерын бус мэргэжилтэй хүн ч ажиллах боломжтой байдлаараа олны анхаарлыг татаж, өргөн хэрэглэгдэх болсон байна. Интерпретатор төрлийн хөрвүүлэгчтэй. Тиймээс програм анхлан сурч буй хүмүүст их тохиромжтой байдаг. Орчин үед BASIC гэхийн оронд ихэвчлэн Basic гэж бичих болсон. Энэ нь англи хэлний basic (үндсэн, анхдагч) гэсэн үгийг илэрхийлж буй юм. Жишээ болгож, a=5 ба b=3 байхад c=a+b гэсэн үйлдлийг гүйцэтгээд үр дүнг дэлгэцэнд хэвлэх бейсик-програмын эх кодыг үзүүллээ.
Pascal
Францын математикч Паскалийн нэрээр нэрлэгдсэн энэ хэлийг Цюрихын технологийн дээд сургуулийн (Щвейцар) эрдэмтэн Никлаус Вирт (Nicklaus Wirth) 1970-аад онд оюутнуудыг програмчлалд сургах зориулалтаар бүтээсэн. Эхлээд Вирт, ФОРТРАН болон тухайн үед өргөн тархсан байсан Алгол (Algol) хэлийг оюутнуудад заадаг байжээ. Энэ хоёр хэл хоёулаа оюутныг програмчлалд сургахад тохиромжгүй мэт түүнд санагддаг байсан тул тэрээр шинэ хэл зохиож, 17-р зууны францын алдарт эрдэмтэн Блез Паскалийн нэрээр нэрлэсэн байна. Учир нь 1640 онд Паскаль хамгийн анхны тооцоолох машин-арифмометрыг зохион бүтээсэн гэж үздэг. Програмчлалын Паскаль хэл маш амжилттай зохиогдсон учраас сургалтын хүрээнээс халин гарч, түгээмэл хэрэглэгдэгч алгоритмын хэл болсон. Одоо ч гэсэн сургалтанд өргөн хэрэглэгддэг.
C
1970-аад онд AT&T компанийн Беллийн лабораторийн (Bell Laboratories, АНУ) э.ш.а. Деннис Ритчи (Dennis Ritchie) Unix үйлдлийн системд програмчлах зорилгоор бүтээсэн байна. Си хэл нь, доод төвшний програмчлал болон дээд төвшний програмчлалын давуу талуудыг жигд агуулсан учраас заримдаа дунд төвшний програмчлалын хэл гэдэг. Алгоритмын хэлүүд дундаас хамгийн өргөн тархсан, хүчирхэг хэл. Програмчлалд эхлэн суралцаж буй хүн судлахад жаал төвөгтэй гэж ярьдаг боловч бид энэ хэлийг үзэх болно. Жишээ болгож, a=5 ба b=3 байхад c=a+b гэсэн үйлдлийг гүйцэтгээд үр дүнг дэлгэцэнд хэвлэх си-програмын эх кодыг үзүүллээ.
Модульт програмчлал
Програмд хийгдэх үйлдлүүдийг хэд хэдээр нь бүлэглээд дэд програмуудад хувааж болдог (процедурт програмчлал) бол дараагийн алхамд тэдгээр дэд програмуудыг ямар нэг нийтлэг байдлаар хэд хэдэн бүлэгт хувааж болно. Ийм хэсэг бүлэг дэд програмыг модуль (module) гэнэ. Програмыг модулиудад хуваах технологийг модульт програмчлал гэнэ. Модулиуд харьцангуй бие даасан шинжтэй байх бөгөөд үндсэн програм дотор бүхэлд нь эргэлдэж байх өгөгдлүүдээс (data) гадна өөрсдийн гэсэн дотоод өгөгдлүүдтэй (data1, data2) байж болно.
Объект хандлагат програмчлал
Бид материаллаг ертөнцөд амьдардаг. Материаллаг ертөнц объектуудаас тогтоно. Объект болгон ямар нэг мэдээллийн эх үүсвэр байдаг. Объектын тухай мэдээлэл нь үндсэндээ хоёр янз:
· Properties: объектын шинж чанарын тухай өгөгдлүүд (эзэлхүүн, масс, өнгө, талбай, хэлбэр дүрс, шатах температур г.м. - дандаа нэр үгнүүд!)
· Methods: объектын шинж чанарыг өөрчлөх аргууд (шахах/тэлэх, ихэсгэх/багасгах, будах, хуваах, шатаах г.м – дандаа үйл үгнүүд!).
Эндээс дараах дүгнэлтийг хийж болно. Том жижиг ямар ч програм зохиолоо гэсэн түүндээ ашиглаж буй өгөгдлийг ямар нэг объектын шинж чанарын тухай өгөгдөл мэтээр төсөөлж болно. Ж.нь 2 тоог хооронд нь нэмдэг програм бичлээ гэхэд тэр хоёр тоог ямар нэг биеийн (бие бол объект) массыг илэрхийлнэ гэж төсөөлж болно. Хэрэглэгчтэй хялбар диалог үүсгэдэг програм бичлээ гэхэд тэр програмыг өөр нэг хүн (хүн бол объект ☺) байна гэж төсөөлж болно.
Эндээс дараагийн дүгнэлтийг хийж болно. Програмд ашиглагдаж буй өгөгдлийг ямар нэг объектын шинж чанарын өгөгдөл гэж үзэх аваас тэр өгөгдөлтэй ажиллана гэдэг нь тухайн шинж чанарыг өөрчлөх аргыг хэрэгжүүлж байна гэсэн үг болно. Энэ арга ч гэсэн бас объектынх. Тиймээс ерөөсөө объектыг өөрийг нь програм дотор дүрслэвэл бүр тохиромжтой юм биш үү? Ингэсэн тохиолдолд програм нь өөртөө ямар нэг объектын дүрслэлийг агуулсан, тэгээд түүнтэйгээ ажилладаг байна гэсэн үг. Объектын дүрслэл гэдэг бол объектын загвар. Ө.х. програм бол объектын загварыг агуулсан, тэгээд тэр загвартай ажилладаг байна гэсэн үг. Нэг програм нэгээс олон объекттын загвартай ажилладаг байж болно. Сэтгэлгээний ийм арга барил нь илүү нарийн, илүү том програм, тухайлбал бодит ертөнцийн юмс үзэгдлийг загварчилсан програм бичихэд их тохиромжтой байдаг ажээ. Ийм сэтгэлгээг Объект Хандлагат зарчим (Object Oriented principle) гэдэг. Энэ зарчимд тулгуурласан програмчлалын технологийг Объект Хандлагат Програмчлал (Object Oriented Programming -OOP) гэдэг. ОХ технологийг хэрэгжүүлэх хэрэгслүүдийг өөртөө агуулсан програмчлалын хэлийг ОХ хэл (OO language) гэнэ. ОХ зарчим нь бүр 1960-аад оны сүүлээр Simula-67, Smalltalk г.м. програмчлалын хэлэнд тусгалаа олсон байжээ. Гэхдээ тодорхой шалтгаанаар эдгээр хэлүүд өргөн дэлгэрч чадаагүй. Харин 80-аад онд зохиогдсон C++ хэлэнд ОХ зарчмууд ямар нэг зөрчилгүйгээр үр дүнтэй нэвтэрч чадсан байна. Энэ нь:
· C++ хэлийг өргөнөөр хэрэглэгдэгч програмчлалын хэл болоход,
· ОХ технологийг өнөө үеийн давамгайлагч програмчлалын технологи болоход түлхэц
болсон байна.
Эдүгээ ОХП-д C++ хэлээс гадна Java хэмээх хэл түгээмэл хэрэглэгдэж байгаа. Эдгээр нь дээд төвшний програмчлалын хэлүүд юм.
Тодорхой нэг програмчлалын хэл дээр програм бичих ажлыг хөнгөвчлөх зорилгоор програм хангамж үйлдвэрлэгч фирмүүд, мэргэжилтнүүдийн бүтээсэн тусгай програмыг програмчлалын орчин буюу програмчлалын систем (programming system) хэмээн нэрийднэ. Тиймээс програмчлалын хэл болон програмчлалын орчин гэдэг нь ялгаатай ойлголтууд юм. Програмчлалын орчин нь:
· Хэрэглэгчтэй харьцах “тохилог” интерфейс (user-friendly interface)
· Хөрвүүлэгч (компилятор юм уу интерпретатор, эсвэл хоёулаа) програм
· Debugger буюу “Бөөс түүгч” програм (заримдаа Зүгшрүүлэгч гэнэ)
· Програмын текст бичих талбар буюу ажлын талбар (Source editor)
· Олон цонхны горим (Multiple Document Interface - MDI)
· Ассемблерын хэл дээр програм бичих боломж (Built-in assembler)
· Тусламжийн буюу Лавлах систем (Help)
· Бусад туслах чанарын програмууд
г.м.ийг өөртөө нэгтгэсэн байдаг.
Програм зохиогч хүн ажлын талбарт ажиллан програмын эх кодоо програмчлалын хэл дээр бичээд, хөрвүүлэгч програмаар хөрвүүлнэ. Хэрэв програм бичих явцад хэл болон системийн талаарх ямар нэг мэдээлэл хэрэгтэй болвол түүнийг Лавлах системээс авч болно. Түүнчлэн нэг зэрэг хэд хэдэн ажлын талбарыг нээгээд, тус бүрд нь өөр өөр програмын текстийг бичих боломжтой. Тухайн агшинд чухам аль талбар идэвхтэй байна, түүнд агуулагдах текстийг хөрвүүлэгч хөрвүүлнэ. Ийм ажлын горимыг Олон цонхны горим хэмээн нэрийддэг. Заримдаа хэрэглэгчийн зохиосон програмын текстэнд дүрмийн хувьд (хөрвүүлэгчийн “нүдээр харахад”) алдаагүй боловч логикийн хувьд (програмыг биелүүлэхэд илэрдэг) алдаатай хэсгүүд агуулагдсан байж болно. Ж.нь тоог 0-д хуваах, сөрөг тооноос квадрат язгуур авах г.м. үйлдлүүдийг хөрвүүлэгч “олж харалгүй” хөрвүүлж болно. Тэгвэл хөрвүүлээд гарсан програмыг компьютер биелүүлэх явцдаа дээрх үйлдлүүдийг хийх заавартай тулгармагц алдаа үүсгэн зогсдог. Ийм логикийн алдаануудыг “Bug” буюу “Бөөс” хэмээн нэрийдэх ба тэдгээрийг илрүүлэн арилгах үндсэн үүрэгтэй туслах програмыг Debugger буюу махчилан орчуулваас “Бөөс түүгч” гэдэг. Орчин үеийн програмчлалын системүүд бүгд ийм Debugger-тай байна. Манайд өргөн хэрэглэгдэж ирсэн системүүд гэвэл Microsoft Quick Basic, Turbo/Borland Pascal, Borland Turbo C++, Microsoft Fortran PowerStation зэрэг DOS орчны програмчлалын системүүд болно.
90-ээд оны дунд үеэс хойш, Windows үйлдлийн систем эрчимтэй хөгжиж хэрэглэгчдийг өөртөө татах болсон, ОХП хүчтэй нэвтэрч эхэлсэн зэрэг шалтгаанаар Windows орчны програмчлалын системүүд буюу Windows-ийн орчинд ажиллах зориулалттай програм бүтээх хэрэгслүүд өргөн тархсан байна. Ж.нь Borland International-ийн Delphi, C++ Builder, Microsoft-ийн Visual C++, Visual Basic, Compaq-ийн Visual Fortran г.м. Сүүлийн үед Java хэлний програмчлалын системүүд бас хэрэглээнд түгээмэл нэвтэрч байна. Ж.нь NetBeans, Eclipse, VisualCafe г.м.