Компьютерийн шинжлэх ухааны боловсрол нь XXI зууны иргэнд байх хамгийн гол чадвараар (literacy for the 21st century) нэрлэгдэж байна. Та бид өдөр тутам программ хангамжийг ямар нэг хэлбэрээр хэрэглэж байдаг бөгөөд яг одоо таны цүнхэнд, халаасанд, бугуйнд яваа компьютерийг удирдаж буй тэрхүү биет бус виртуаль зүйл яг юу болох, хэрхэн ажилладгийг мэдэж авцгаая. Та бүхэнд хүүхдэд зориулсан Монголын анхны кодинг сургалтын “Codecub” төвийн үүсгэн байгуулагч М.Золбаярын хичээлийг хүргэж байна.
КОМПЬЮТЕР
Компьютер нь программын дагуу арифметик, эсвэл логик үйлдлүүдийг өндөр хурдтайгаар гүйцэтгэж тооцоолол хийдэг машин юм. Ямар нэгэн байдлаар программчлах боломжтой техник болгоныг компьютер гэж хэлж болно. Компьютер тухайн агшинд хийж буй үйлдэл нь маш энгийн арифметик, эсвэл логик үйлдэл байдаг. Тиймээс угтаа бол компьютерийн хийх нэгж тооцоолол (computation) бүрийг та үзэг цаас ашиглан амархан хийж чадна. Харин секундэд хэдэн тэрбум удаа гэвэл яах бол? Тэрбум тэрбумаар тоологдох бичил тооцооллууд өнөөдрийн бидний хэрэглэж байгаа ухаалаг тоон технологиудыг бий болгодог.
Компьютер нь техник хангамж (hardware) гэсэн биет хэсэг, программ хангамж (software) гэсэн виртуаль хэсгүүдээс бүрдэх ба аль нэг нь дангаараа ажиллах боломжгүй. Техник хангамж нь өөрөө computer organization гэдэг маш том сэдэв ба эндээс бидэнд яг одоо хэрэг болох ганц зүйл нь процессор юм. Процессорыг бид CPU (Central Processing Unit) гэдэг нэрээр нь мэдэх ба энэхүү эд анги бол дээр дурдсан олон тэрбум тооцооллыг гардан хийдэг уураг тархи юм. Харин бидний цаашаа дэлгэрүүлж үзэх сэдэв бол программ хангамж.
КОДБА ПРОГРАММ
Эдгээр нь ижил төстэй ойлголтууд ба программ зохиох гэдэг нь харьцангуй том дүр зургаар бөгөөд код бичих гэдэг нь тухайн программыг зохиохын тулд программист компьютерт мөр мөрөөр нь зааварчилгаа өгч буй үйл явц юм. Өнөө цагт программыг ихэвчлэн программистуудын баг ажиллаж зохиодог болсон ба программист болгон өөр өөрсдийн хөгжүүлэх хэсгийнхээ кодыг бичнэ гэвэл эдгээр ойлголтуудын ялгаа илүү тодорхой болох байх.
Программыг хамгийн энгийн үгээр тодорхойлбол, ердөө зааварчилгаануудын бүрдэл (set of instructions) гэж хэлж болно. Үүнд зааварчилгаа буюу instruction гэдэг нь тодорхой нэгж үйлдлийг хийлгэхийн тулд процессорт өгч буй комманд юм. Нэгж үйлдэл нь харин ямар ч үйлдэл байж болно. Жишээ нь, ямар нэг өгөгдлийг (data) санах ойд хадгалах, хадгалсан өгөгдлүүд дээр тооцоолол хийх, эсвэл үр дүнг гаргаж харуулах гэх мэт. Программ болгон тодорхой алгоритмд захирагдана.
ПРОГРАММЧЛАЛЫН ХЭЛ
Маш чухал бас сонирхолтой сэдэв рүү орцгооё. Энгийн үгээр хэлэхэд программчлалын хэл гэдэг нь компьютерийн ойлгодог хэл юм. Программчлалын хэлийг ерөнхийд нь доод түвшний хэл (low-level language) ба дээд түвшний хэл (high-level language) гэж хоёр ангилдаг. Доод түвшний хэлэнд машины хэл (machine language) болон ассемблей хэл (assembly language) багтана. Үүнээс машины хэл нь компьютерийн процессорыг шууд удирддаг цорын ганц хэл юм. Өөрөөр хэлбэл, таны компьютерт байгаа Intel Core i7 зөвхөн өөрийн машины хэлээр зааравчилгааг авч ажилладаг гэсэн үг юм. Дээд түвшний хэл дээр бичсэн код процессорыг шууд удирдаж чадахгүй ба замдаа хэд хэдэн дамжлагат хувиргалтаар орж машины хэл болж ажилладаг.
ПРОГРАММЧЛАЛЫН ХЭЛНИЙ ТҮВШИН. ЭДГЭЭРИЙН ДЭЭР ХЭН БАЙХ БОЛ?
Машины хэлээр машины кодыг (machine code) бүтээх ба уг код нь шууд процессор уншаад ажиллуулахад бэлэн хоёртын (binary -компьютерын тооллын систем) хэлбэртэй сигнал байдаг. Онолын хувьд хүн машины хэл дээр шууд код бичиж болох ч практикийн хувьд бүтэхгүйгээс гадна процессорын загвар (ISA-Instruction Set Architecture) болгон өөр өөр хэлтэй.
Дараахь жишээг харцгаая (эх сурвалж: Wikipedia):
00000101
Дээрх найман цифр машин код Zilog Z80 загварын процессорын B регистерт (register-процессорын өөрийнх нь бичил санах ой) хадгалагдсан утгыг нэгээр багасгаж байна. Ийм байдлаар код бичих амаргүй л байх болов уу. Хэрэв магадгүй энэ таны сонирхлыг үнэхээр татаж байвал микропроцессорын программ хангамжийг (microprocessor programming) судалж үзээрэй. Машины код ажиллахад хамгийн сонирхолтой нь яг тухайн агшинд компьютер ямар нэгж үйлдэл хийж буй нь шууд харагдана, ямар нэг хийсвэрлэл, халхавч байхгүй.
Дараагийн түвшний хэл болох ассемблей хэлийг (asm гэж хочилдог) авч үзье. Ассемблей хэл нь машины хэлийг хүн уншихад арай дөхөм болгох үүднээс үсгээр төлөөлүүлсэн mnemonic code юм. Дээрх жишээ кодыг ассемблей хэлээр бичвэл:
DEC B
Ассемблей хэлний гол зорилго нь машины хэлийг хийсвэрлэн хялбарчлах ба үүгээр маш үр ашигтай программуудыг бичдэг.
Одоо харин түвшин ахиж хэлэлцүүлэг хамгийн ихээр өрнөдөг дээд түвшин рүү орцгооё. Дээд түвшний хэлнүүд нь англи хэл дээр үндэслэн зохиогдсон хүн код унших, бичих, сурахад хялбар байхаар бүтээгдсэн хэлнүүд юм. Мөн хийсвэрлэлийг ашигласнаар таны дээд түвшний хэл ашиглан бичсэн код доор нь ямар загвартай процессор ажиллаж байгаагаас үл хамааран хаана ч ажиллана гэсэн үг юм.
Хэрвээ та анзаарсан бол дээрх зурганд дээд түвшний хэл гээд гурван хэл байна. Үүнээс Fortran нь хамгийн анхны дээд түвшний хэл гэгдэх ба 1950-иад онд IBM компани бүтээсэн байна. Pascal нь 1970-аад онд хүчээ авч байсан ба тэр үедээ Америкийн их сургуулиудад анх код зааж эхэлсэн хэл гэгддэг. 90-ээд онд Монголын зарим сургуулиудад мэдээлэл зүйн хичээл дээр ч заадаг байсан.
Голынх нь харин домогт C хэл бөгөөд анх Unix үйлдлийн системд зориулж бүтээгдээд 80-аад оноос ерөнхий программчлалын хэл (general-purpose language) болж тархсан байна. C бол маш хүчирхэг хэл ба өөр бусад дээд түвшний хэлнүүдийг ч C ашиглан бүтээх нь элбэг.
Код сурч буй хүн болгоны хамгийн анх бичдэг Hello, World! (зүгээр л дэлгэцэн дээр эдгээр үгсийг хэвлэх) программыг C дээр бичвэл:
#include <stdio.h>
int main(void)
{printf(“Hello, World!\n”);}
C хэлний амжилт уг хэлэнд тулгуурласан олон төстэй хэлүүд гарч ирэх суурь болсон ба томоохон жишээ гэвэл C++ хэл байна. С++-ыг C хэлний объект-хандалтат (object-oriented programming- программ зохиох нэгэн төрлийн загвар) хувилбар гэж бас ярьдаг боловч хоёр тусдаа хэлнүүд юм. Play Station, Xbox-г программчлахад C++ ашиглана.
Дээд түвшин дотроо бүр өндөр түвшний хэлүүд рүү орцгооё. Эхнийх нь Java гэж 90-ээд онд гарч ирсэн түгээмэл хэл (Sun Microsystems-д бүтээгдэж дараа нь Oracle-ынх болсон) байна. Java ашиглан хийхгүй зүйл гэж үгүй бөгөөд та бидний өдөр тутам хэрэглэдэг Android аппуудыг хүртэл Java дээр бичнэ. Hello, World!-г Java-гаар бичье:
public class HelloWorldApp {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
Харин өнөөдөр дэлхий даяар бүх салбарт хэрэглээ нь хамгийн хурдацтай өсч буй нэгэн дээд түвшний хэл бол Python билээ. Python нь өнөө цагийн #1 хэл гэдгийг хэн хүнгүй хүлээн зөвшөөрөх ба энэхүү хэл нь хиймэл оюун, өгөгдлийн шинжлэх ухаан, вэб хөгжүүлэлт, автоматжуулалт гээд орчин үеийн чухал салбаруудад өргөн хэрэглэгдэж байна. Уншихад ойлгомжтой, энгийн бөгөөд товчхон бичиглэлтэй байдал нь анхлан суралцагсад код бичиж эхлэхэд нэн тохиромжтой хэл юм. Hello, World!-г Python-оор бичвэл ердөө ганц л мөр код болох юм:
print (“Hello, World!”)
Цаашилбал, өөр мянга мянган программчлалын хэлүүд байх ба бусад түгээмэл хэрэглэгдэх ерөнхий программчлалын хэлүүдээс дурдвал JavaScript, C#, PHP, Ruby, Perl, R, Swift, Go, Kotlin, Julia гээд программистуудын сонголт арвин. Гагцхүү хэр ирээдүйтэй хэлийг сонгож цаг заваа гарган сурах вэ гэдэг л чухал юм.