Програмчлалын хэл гэж юу вэ?

Орчин үеийн ихэнх автомат төхөөрөмж урьдчилан бэлдэж өгсөн зааврын дагуу уг төхөөрөмж дээр биелэгдэх боломжтой олон тооны эгэл үйлдлүүдийг дараалан биелүүлэх замаар илүү нарийн төвөгтэй үйлдлийг гүйцэлдүүлдэг. Ерөнхийд нь, ийм заавар бэлдэж өгөх үйл ажиллагааг програмчлал, уг төхөөрөмжид “ойлгогдохоор” заавар бэлдэх аргыг програмчлалын хэл гэнэ. Жишээлбэл, зарим тооны машин дээр дараах мөрийг шууд бичиж өгч бодуулж болно: “5*(2+3)“. Энд бид тооны машинд “2 дээр 3-ыг нэмээд үр дүнг нь 5-аар үржүүл” гэсэн заавар өгсөн хэрэг. Энэ жишээнд програмчлалын хэл маань тоонууд, арифметикийн үйлдлүүд ба хаалтуудыг ашиглаж зөв илэрхийлэл бичих дүрмүүдээс тогтоно гэсэн үг. Бидний бичсэн дээрх “програмыг” ажиллуулахын тулд “=” товчийг дарах шаардлагатай боловч хялбарчлах үүднээс энд үүнийг манай “програмын” хэсэг биш гэж үзэж байна.

Хамгийн анхны програмчлалын хэл Чарльз Баббажийн аналитик машинтай хамт үүссэн гэж үзэж болно. Аналитик машины үндэс нь механикийн араанууд байсан ба араануудыг том эсвэл жижиг араануудаар солих замаар програмчлах зарчимтай байжээ. 1942 онд бүтээгдсэн анхны электрон компьютер ENIAC үндсэндээ аналитик машины цахилгаан хувилбар нь байсан бөгөөд түүнийг програмчлах арга нь (програмчлалын хэл нь) одоогийн гэр ахуйн цахилгаан халаагуурын тохируулгыг санагдуулам олон тооны утаснуудын холболтыг өөрчлөх явдал байсан байна.

Жон фон Нейман 1945 онд Жон Маухли, Преспер Эккерт нартай хамтаар EDVAC компьютерийн дизайн дээр ажиллаж эхлэх үедээ компьютерийг програмчлахын тулд утаснуудыг сольж холбох нь бүдүүлэг хэрэг бөгөөд програм нь компьютерийн санах ойд хадгалагдаж, компьютер түүнийг уншиж зохих үйлдлүүдийг гүйцэтгэдэг байх боломжтой гэдгийг анх тоймлож үзүүлсэн. Түүнээс өмнө компьютерүүд оролтын ба гаралтын өгөгдөл болон тооцооны үед бий болсон завсрын үр дүнгүүдийг хадгалах санах ойтой байсан ба энэ санах ойд програмыг хадгалах, өөрөөр хэлбэл компьютер ямар ямар үйлдлийг гүйцэтгэх вэ гэсэн зааврыг оролтын өгөгдлийн нэг хэсэг мэтээр үзэх нь цоо шинэ санаа байжээ. Энэ арга нь юуны түрүүнд програмыг соронзон хальсан дээр хадгалах, дахин ачаалах боломжийг өгнө. Үүнтэй холбоотой өөр нэг боломж бол програм ажиллах явцад буй болсон завсрын үр дүнгээс хамаарч санах ойн хаана байрлаж буй зааврыг гүйцэтгэх вэ гэдгийг шийдэж болох боломж юм.

Фон Нейман ба түүний хамтрагчдын дэвшүүлсэн компьютерийн архитектурын бүдүүвч бүтцийг авч үзье (Зураг 1). Уг бүдүүвч ёсоор компьютер нь төв процессор (CPU), шуурхай санах ой (RAM) ба оролт гаралтын төхөөрөмжүүд гэсэн үндсэн хэсгүүдтэй. Шуурхай санах ойг дараалсан олон нүднүүдээс тогтох маш урт туузаар төсөөлж болно. Ихэнх компьютерийн хувьд санах ойн эдгээр нүд болгон 0-ээс 255-ын хооронд орших ямар ч бүхэл тоог хадгалах чадвартай бөгөөд нүд болгон өөрийн гэсэн дугаартай байдаг. Нэг ийм нүдийг нэг байт (byte) мэдээлэл хадгалах чадвартай гэж ярьна. Мэдээллийг хадгалах бусад байгууламжууд, жишээлбэл хатуу диск, оптик диск ба флаш-санах ой бүгд ийм байтуудын дарааллыг хадгалах зориулалттай, ер нь компьютер нь ийм байтуудын дарааллыг боловсруулах зориулалттай гэж үзэж болно. Ийм олон тоог хадгалах, боловсруулах ямар шаардлага байна, үүнээс гадна бид нар компьютерийн дэлгэц дээр дан тоо хардаггүй, гараас зөвхөн тоо оруулдаггүй шүү дээ гэж та эргэлзэж байж болох юм. Тэгэхээр санах ойд хадгалагдаж, компьютерээр боловсруулагдаж буй тоонууд ямар нэг мэдээллийг төлөөлж буйг үргэлж санах хэрэгтэй. Өөрөөр хэлбэл эдгээр тоонуудыг яаж тайлбарлах вэ гэдгийг компьютер ямар нэг хэлбэрээр “мэддэг” байх ёстой. Тухайлбал, текстийг компьютерээр боловсруулахын тулд үсэг, цэг, таслал гэх мэт тэмдэгт болгонд тоо харгалзуулсан дүрэм боловсруулж ашигладаг. Үүнд гараас текст оруулах, текстийг дэлгэц эсвэл цаасан дээр хэвлэх болгонд энэ дүрмээ ашиглан дотоод тоон дүрслэл ба хүний ойлгох дүрслэл хоёрын хооронд хөрвүүлэх ажиллагаа явагдана. Латин цагаан толгойн үсгүүд бусад олон туслах тэмдэгтүүдтэйгээ нийлээд 200 орчим тэмдэгт болох учир нэг тэмдэгтийг нэг байтаар дүрслэхэд хангалттай. Ингэж кодлох олон янзын стандарт байдгийн хамгийн өргөн тархсан нь ASCII кодчилол юм. Энд жишээ нь латин А үсгийн код 65, B үсгийн код 66 байдаг. Харин олон янзын бичгийг зэрэг хэрэглэх, ялангуяа ханз үсэг хэрэглэх тохиолдолд дор хаяж хоёр байтын комбинацаар нэг тэмдэгтийг кодлох шаардлага гарна. Ийм кодчиллын тоонд Unicode стандарт багтана.

Тэмдэгтийг ингэж кодчилохтой төстэйгээр төв процессорын гүйцэтгэх боломжтой коммандууд мөн тодорхой тоонуудаар кодчилогсон байдаг. Ийм коммандуудыг машины коммандууд (instructions) гэх бөгөөд төв процессор шуурхай санах ойн нүднүүдийг дэс дараалан уншиж тэнд бичигдсэн машины коммандуудыг гүйцэтгэх замаар компьютер ажилладаг. Энэ тоон кодуудын цогц нь тухайн процессорын хувьд програмчлалын хэл болох ба үүнийг машины хэл гэж ярьна. Машины хэл дээр программ бичихийн тулд ямар коммандыг ямар тоогоор дүрсэлдгийг (машины кодыг) мэдэх шаардлагатайн дээр том програмыг уншиж ойлгох болон засварлахад маш хүндрэлтэй байх нь ойлгомжтой. Жишээлбэл, 80×86 төрлийн (Pentium гэх мэт) процессоруудын хувьд, EAX регистрт (регистр гэдэг нь процессор дотор орших тусгай санах ойн нэр) буй тоог EBX регистр дэх тоон дээр нэмээд үр дүнг нь EAX регистрт хадгалах коммандын машины код нь

3 195

хэмээх хоёр байтаас тогтоно.

Програмд олон дахин ашиглагддаг хэсэг үйлдлийг санах ойд үндсэн програмаас тусдаа байрлуулаад хэрэгтэй үед хаягаар нь дуудаж ашиглаж болно. Ингэж үндсэн програмаас тусдаа байрласан, програмд шаардлагатай ямар нэг бодлогыг бие дааж шийдвэрлэх чадвартай бүлэг үйлдлийг дэд програм (subroutine) гэж ярьдаг. Дэлгэц дээр үсэг гаргах, дискний файлаас өгөгдөл унших гэх мэт маш ерөнхий зориулалттай дэд програмуудыг санах ойд байнга байрлуулж, тухайн үед ажиллаж буй програм нь шаардлагатай дэд програмаа сонгон авч хэрэглэдэг байвал эдгээр дэд програмуудыг програм болгон өөртөө “тээж” явах албагүй болно. Ийм дэд програмуудын сан нь програм зохиогчийн ажлыг маш ихээр хөнгөвчлөх ба ерөнхийдөө машины хэлийг өргөтгөж түүнд өргөн хэрэглэгддэг олон чухал коммандуудыг нэмсэн мэт үйлчлэл үзүүлдэг.

Програм бичих ажиллагааг ассемблер хэл (assembly language) ихээр хөнгөвчилдөг. Ассемблер хэл дээр бичигдсэн програм нь жирийн текст бөгөөд ассемблер програмын мөр болгон машины нэг коммандад харгалзана. Жишээ нь, дээрх машины коммандыг ассемблер хэл дээр бичвэл

add eax, ebx

болно (add – англиар “нэм” гэсэн үг). Бэлэн болсон ассемблер програмыг машины хэл рүү хөрвүүлэхийн тулд ассемблерийн хөрвүүлэгч (assembler) хэмээх тусгай програмыг ашигладаг. Ассемблерийн хөрвүүлэгчийг өөрийг нь бол шууд машины хэл дээр бичиж болно. Машины коммандуудын цогц тухайн процессорын төрлөөс хамааран янз бүр байдаг тул машины коммандуудын тоон кодчиллыг процессорын төрөл болгонд адилхан байхаар стандартчилах боломжгүй. Тэгэхээр ассемблер хэл мөн процессорын төрлөөс хамаарч өөр өөр байна гэсэн үг. Үүнтэй холбогдуулан машины хэл ба ассемблер хэлийг доод түвшний програмчлалын хэл гэх нь бий.

Тэмдэглэл. Зарчмын хувьд санах ойд тоог дүрслэх маш олон арга байж болох боловч одоо үеийн бараг бүх тоон төхөөрөмжид хоёртын системийг ашигладаг. Бидний сайн мэдэх аравтын системд дүрслэгдсэн тооны орон бүр 10-ын тодорхой зэрэг уг тоонд хэдэн удаа агуулагдсаныг заадаг билээ. Жишээ нь, 902.3 гэсэн тоонд 9 ширхэг 100; 0 ширхэг 10; 2 ширхэг 1; ба 3 ширхэг 0.1 агуулагдсан байна. Үүнтэй төстэйгээр, хоёртын системд дүрслэгдсэн тооны орон бүр 2-ын зэргүүд уг тоонд хэдэн удаа агуулагдсаныг заана. Жишээ нь, хоёртын дүрслэл нь 101 байх тоо аравтын системд 8 + 0 + 1 = 9 гэж бичигдэнэ. Хоёртын нэг оронг нэг бит хэмээдэг бөгөөд нэг бит нь 0 юм уу 1 утгын аль нэгийг авч болдог. Мөн нэг байт нь 8 биттэй тэнцүү болох нь тодорхой. Хоёртын тооллын систем нь техникийн үүднээс хялбар, 8 нь хоёрын бүхэл зэрэг бөгөөд бидний хэрэглэдэг ихэнх тэмдэгтүүдийг 8 битийн комбинацаар дүрсэлж болдог нь бит ба байтын үүсэлд нөлөөлсөн хэрэг.

Нэгэнт машины хэлийг стандартчилж болохгүй учир ямар ч програм зөвхөн тодорхой төрлийн компьютерт л зориулагдсан байх ёстой. Жишээлбэл, Микрософт Виндоус (Microsoft Windows) програмыг PowerPC процессортой Макинтош (Macintosh) компьютер дээр суулгаж ажиллуулах гэж оролдвол цагийн гарз болох вий. Цаашилбал, ямар ч програм зөвхөн тодорхой орчинд (platform) ажиллахаар зориулагдсан байдаг. Програмын ажиллах орчин гэдэгт компьютерийн төрөл, үйлдлийн систем (OS), түүнчлэн уг програмын ажиллагаанд зайлшгүй шаардлагатай төхөөрөмжүүд ба програмуудын цогцыг ойлгоно. Ажиллах орчны гол үзүүлэлт бол үйлдлийн систем мөн. Үйлдлийн систем нь програмд хатуу диск, дэлгэц, гар, хэвлэгч гэх мэт системийн төхөөрөмжүүдийг ашиглах, бусад програмуудтай харилцан үйлчлэх, хэрэглэгчтэй стандарт маягаар харьцах зэрэг боломжийг олгож, тусгай дэд програмуудын санг гаргаж өгдөг. Эдгээр дэд програмуудын сан үйлдлийн системээс хамааран өөрчлөгдөх тул програм нь зөвхөн нэг л үйлдлийн систем дээр ажиллаж чадна. Жишээлбэл, Виндоус системд зориулагдсан програмыг Линукс (Linux) систем дээр (шууд) ажиллуулж болохгүй. Линукс системд Виндоус орчинг зохиомлоор бүрдүүлж дотроо Виндоус програм ажиллуулдаг тийм програмууд байдаг. Энэ тохиолдолд манай програмын ажиллах орчин бүрэлдчихсэн байгаа нь илт бөгөөд түүнийг Линукс дээр ажиллаж байна гэж үзэх хэрэггүй юм.

Ассемблер нь машины хэлний “махчилсан” орчуулга учраас түүн дээр, ялангуяа том програм бичих нь маш төвөгтэй. Програмын текстэнд алдаа байвал түүнийг олоход үлэмж хэцүү болохоос гадна платформ болгонд тохируулж програмаа дахин дахин бичих шаардлагатай. Ассемблерын энэ дутагдлыг арилгахын тулд зохиогдсон илүү дээд түвшний програмчлалын хэлнүүд уншиж ойлгоход хялбар, баргийн санамсаргүй алдааг хэл нь өөрөө зааж өгөх механизмтай, платформоос хамааралгүй програм бичих боломжтой болсноороо компьютерийн програм хангамжийг шинэ шатанд гаргасан юм. Дээд түвшний хэл дээр бичигдсэн програм нь жирийн текст файл бөгөөд дээд түвшний хэлний нэг коммандад машины хэдэн арван комманд харгалзаж болно. Бэлэн болсон програмын текст файлыг хөрвүүлэгч буюу компилятор (compiler) хэмээх тусгай програмыг ашиглан машины хэлэнд хөрвүүлж бие даан ажиллах чадвартай програмын биелэх файл (executable) болгодог. Хөрвүүлэгдээгүй байгаа програмын текстийг мөн програмын эх код (source code) гэж нэрлэдэг. Програмын эх кодыг хэд хэдэн платформ дээр хөрвүүлж болдог байхаар бичиж болно. Ингэснээр бид зөвхөн нэг эх кодноос нэг програмын өөр өөр платформ дээр ажиллах чадвартай хувилбаруудыг гарган авна гэсэн үг.

Түүх сөхвөл. Хамгийн анхны дээд түвшний програмчлалын хэлийг Жон Маухли 1949 онд UNIVAC компьютерт зориулан зохиосон Богино Код (Short Code) хэмээх програмдаа хэрэгжүүлсэн гэж үздэг. Энэ програм нь өгөгдсөн алгебрын томъёонуудын дагуу тооцоо хийж үр дүнг нь гаргадаг програм ажээ. 1950 оноос фон Нейман АНУ-д шинээр дэвшигдэж байгаа болон дундаа явагдаж буй технологийн төслүүдийг хянах зөвлөгчөөр ажиллаж байв. 1954 оны нэгэн ийм “шүүх ажиллагаанд” дээд түвшний анхны хэлнүүдийн нэг болох Фортран хэлний төслийг IBM компанийн Жон Бакус авч оржээ. Фон Нейман үүнийг ямар ч шинэ зүйл гэж үзсэнгүй, “яагаад машины хэлнээс өөр юм чамд хэрэгтэй байгааг ойлгохгүй байна” хэмээсэн ба уг төслийг “үндсэндээ Жон Маухлийн Богино Код програмын санааг ашигласан энгийн зүйл байна” гэж үзээд хэрэгсэхгүй орхисон байна. Мөн түүний оюутнууд бүх програмыг машины хэл рүү гараараа хөрвүүлдэг байсан тухайгаа сүүлд дурдсан байдаг. Нэгэн оюутан ассемблерын хөрвүүлэгч бичиж энэ ажиллагааг автоматжуулах гэж оролдож байгааг фон Нейман мэдээд “шинжлэх ухааны үнэтэй цайтай төхөөрөмжийг бичиг цаасны ажилд хэрэглэж үрэн таран хийх нь” хэмээн маш ихээр хилэгнэж байжээ. Жон Бакус фон Нейманий энэ байр суурийг хайхралгүй ажилласаар 1957 онд Фортран хэлний анхны хувилбарыг гаргасан ба сүүлд 1970-аад оноос фон Нейманий архитектурыг ноцтойгоор шүүмжлэгчдийн нэг болсон юм. Жон Бакусийн хэлснээр Фон Нейманий архитектурын нэг гол дутагдал нь төв процессор ба шуурхай санах ойн хоорондох “нэг удаа хэдэн байт” дамжуулах боломжтой “фон Нейманий хүзүү” гэж нэрлэгддэг маш нарийн суваг бөгөөд энэ нарийн “хүзүү” нь зөвхөн тухайн нэг програмын өгөгдлийн чөлөөтэй урсгалыг хязгаарлаад зогсохгүй, өнөөгийн програм зохиогчдын оюун ухаанд нягт шингэж тэднийг “нэг удаа хэдэн байт” хэлбэрээр сэтгэхэд дасгадаг сэтгэхүйн өрөөсгөл хэв маяг юм. Анхны загваруудаас хойш компьютерын бүтцэд их бага олон төрлийн өөрчлөлт хийгдэж үйл ажиллагаа нь төсөөлшгүй ихээр сайжирсан боловч үндсэн бүтцэд нь фон Нейманий архитектур амь бөхтэй оршсоор байгаа болно. Техникийн түвшинд фон Нейманий хүзүүг “өргөсгөх” зорилгоор кэш санах ой, нөхцөлт коммандын үр дүнг машины түвшинд урьдчилан таах алгоритм зэргийг одоо ашиглаж байгаа. Сэтгэхүйн түвшинд бол объект хандалтат програмчлал, ялангуяа функциональ програмчлал бол ийм хүзүүг ор мөргүй арилгасан аргачлалууд юм.

Машины хэл болон ассемблер дээрх дээрх бидний жишээ програмчлалын Си хэл дээр яаж бичигдэж болохыг сонирхъё. Жирийн үед Си хэл процессорын регистрүүд болон санах ойтой шууд ажилладаггүй бөгөөд програмын өгөгдлүүдийг хувьсагчаар төлөөлүүлдэг. Хувьсагч гэдгийг санах ойн (дараалсан хэдэн байтаас тогтох) нэг хайрцагт өгсөн нэр гэж үзэж болно. Жишээ нь, a нэртэй хайрцагт буй тоон дээр b нэртэй хайрцагт буй тоог нэмээд гарсан үр дүнг нь a нэртэй хайрцагт хадгал гэхийг

a = a + b;

гэж бичнэ. Энэ бичлэг дунд сургуулийн алгебрын томъёотой төстэй боловч зарчмын хувьд ялгаатай гэдгийг анхаараарай. Хэрэв дээрх бичлэг ийм томъёо байсан бол b=0 гэж гаргах байсан. Гэвч энд “=” тэмдэгтийн баруун тал дахь (a+b) утгыг зүүн талд буй (a) хайрцагт хадгалах ажиллагаа явагдах ба a хайрцагт өмнө нь байсан утга арчигдаж хэрэгцээгүй болж байна. Үүнд a ба b нь санах ойн яг хаана байгаа хайрцгууд болох нь хөрвүүлэгч ба үйлдлийн системээс хамаарах бөгөөд энэ мэдээллийг Си хэл биднээс “нууж” компьютерийн физик бүтцээс илүү дээгүүр түвшний нэгэн хийсвэр давхарга оруулж ирж буй хэрэг.

Дээд түвшний програмчлалын хэлнүүд нь компьютерийн техник хангамж, үйлдлийн систем зэргээс хамаарахгүйгээр аливаа програмыг хялбархан бичих боломжийг бий болгох зорилготой. Энэ зорилгыг гүйцэлдүүлэхийн тулд програмчлалын хэл болгон өөрийн гэсэн хийсвэр ойлголтууд, эдгээр ойлголтуудыг ашиглан програмыг алдаагүй бичих дүрмүүдийг (ө.х. уг хэлний зөв бичих дүрмийг) оруулж ирдэг. Тэгэхээр ямар нэг програмчлалын хэл дээр програм бичих нь уг програмчлалын хэлийг шууд ойлгож биелүүлэх чадвартай хаа нэгтээ байгаа хийсвэр компьютерт зориулан програм бичиж байгаатай адил юм. Програм нь энэ хийсвэр машины шаардлагад зохицсон байх ёстой бөгөөд програм бичиж буй хүн уг хийсвэр машины боломжид тохируулан сэтгэх хэрэгтэй болно. Тэгвэл хөрвүүлэгч нь хийсвэр машины хэл дээрх програмыг бодит машины хэл рүү орчуулах үүрэгтэй болж таарна. Хэрэв хийсвэр машин нь бодит компьютерээс хэт их ялгаатай бол энэ орчуулах ажиллагаа хүндрэлд орж үр дүнд нь маш удаан програм гарч ирнэ. Нөгөө талаас хийсвэр машин нь бодит компьютерт хэт ойр бол програмчлалын хэл маань ассемблертэй улам бүр төстэй болж ирнэ. Энэ хоёр заагийн “алтан дундаж” болох платформоос хамааралгүй бөгөөд програм бичихэд хялбар, мөн хурдан ажилладаг програм боловсруулах боломжтой тийм програмчлалын хэл амжилт олох магадлал их. Ийм програмчлалын хэлнүүдийн нэг бол Си хэл юм. Үүнтэй холбоотойгоор Си хэлийг дунд түвшний хэл гэж ярих нь ч бий. Си хэл нь өнөөдөр манай гариг дээр хамгийн өргөн тархсан програмчлалын хэл бөгөөд Юникс (Unix), Виндоус, Макинтош (MacOS), ба Линукс үйлдлийн системүүд болон тэдгээр дээрх хэрэглээний програмуудын ихэнх хэсэг энэ хэл дээр бичигдсэн аж. 1970-аад оны сүүлчээр програмчлалын шинэ хүчирхэг технологи болох Объект Хандалтат Програмчлал (ОХП, OOP) боловсруулагдаж бий болсон. ОХП-ын технологи нь том хэмжээний програм бичих, бодит болон хийсвэр системүүдийг загварчлахад маш тохиромжтой. Энэ технологийг ашиглан Си хэлний унаган хүч чадлыг зөвөөр зохион байгуулж ашиглах зорилгоор Си++ (“си плас плас” эсвэл “си нэмэх нэмэх” гэж уншина) хэмээх хэл 1980-аад оны эхээр зохиогдсон. Си++ хэл нь үндсэндээ Си хэлний нэгэн өргөтгөл бөгөөд Си хэлний хурд, олон төрлийн компьютер дээр ажиллах чадварыг нь өвлөн авсан, ОХП-ын технологийг (хийсвэр биш) практик байдлаар хэрэгжүүлэх боломжоор дээд зэргээр хангагдсан орчин үеийн хамгийн боловсронгуй програмчлалын хэлнүүдийн нэг юм.

Advertisements
This entry was posted in C++ and tagged , , , , , , , , . Bookmark the permalink.

28 Responses to Програмчлалын хэл гэж юу вэ?

  1. T хэлдэг:

    mash oilgomjtoi todorhoi bichje.

    Zarim humus Fortraniig odoo hurtel heregled C-es iluu ged yriad yawj bdg, ene 2-iig shud utgar n hartsulah er n zuw/bolomjtoi yu?

    zarim harlulsan bolon busad todorhoi orchulgin helbergui ugnudin ard n englisher n haaltand bichij bwl humust iluu hurj magadgui bha.

  2. t8m8r хэлдэг:

    Фортраныг хэрэглэх хэд хэдэн шалтгаан байж болно. Нэгдүгээрт нүсэр их дэд програмын сангууд Фортран дээр бичигдсэн байдаг бөгөөд Фортран дээр програм бичвэл эдгээр санг шууд ашиглах боломжтой. Хоёрдугаарт зарим суперкомпьютер зөвхөн Фортраны хөрвүүлэгчтэй байдаг болохоор програм бичихийн тулд (ассемблер дээр бичихгүй гэвэл) заавал Фортран дээр бичих болдог. Гуравдугаарт Фортран нь эхнээсээ шинжлэх ухааны тооцоо хийхэд зориулагдан зохиогдсон учраас тоо “машиндахад” их хурдан. Дөрөвдүгээрт Фортран дээр амьдралынхаа ихэнхийг өнгөрөөсөн хүмүүс түүнтэйгээ хувийн холбоотой болчихоод үүнийгээ шавь нартаа тулгах гээд байдаг.

    Гэвч компьютерийн хүчин чадал, компиляторын технологийн хөгжил өнөө үед эхний гурван шалтгааныг нь бараг бүрэн арилгаснаар зогсохгүй Фортранаас өөр хэл хэрэглэх шалтгаануудыг ихэсгэсэн гэж хэлж болно. Жишээ нь Фортран хэл дээрх бараг бүх сан одоо Си хэл рүү (мөн нилээд хэсэг нь Си++ рүү) хөрвүүлэгдэж дууссан. Хөрвүүлэгдээгүй хэсгийг нь Фортранаар хөрвүүлж объект файл үүсгэж байгаад Си хөрвүүлэгчээс дуудаж холбож болно. Мөн хөрвүүлэгчийн оптимизаци хөгжсөний улмаас Си байтугай Си++ хэл дээр бичсэн сайн програмууд Фортран дээр бичсэн сайн програмаас дутахгүй хурдан ажиллаж байгаа. Си++ дээр бол объект хандалтат програмчлал эсвэл өргөтгөсөн програмчлал ашиглаад том програмыг маш сайн зохион байгуулах боломжтой. Тэгээд гоо сайхны талаасаа бол Фортран хэцүү шүү дээ 🙂

    Санал хэлсэнд баярлалаа. Олон хаалт, латин кирилл үсгүүдийг холихоор уншихад эвгүй байх байх гэж бодоод хаалт, латин үсэг аль болох цөөн хэрэглэхийг зорьсон юм. Гэхдээ шаардлагатай үгнүд дээр бол тайлбар оруулахаас өөр арга байхгүй юм шиг байна (мэддэг бол дээр нь хулганы заалтуур очихоор жижигхэн тайлбар гарч ирдэг байхаар хийвэл зүгээр юм шиг). Ямар ямар үгнүүд тайлбар хэрэгтэй байна энд бичээд үлдээчихээрэй.

  3. T хэлдэг:

    delgerengui hariult ugsund baerlalaa.

    Tani durdsan 2dah bolon 4deh shaltganud l onodor Fortranig ‘amd’ hewerei bailgdag gedegt sanal neg bn. Teher herwee orchulagdsan sangud n belen bj bga nohtsold Supercomputerudtai zaawal Fortranar hartsah albgui gesen ug uu? herw tim bol Performance-d ymar negen oorchlolt baih uu?

    —-

    ene niitlel ihenh humust shud oilgomjtoi bh bh. Gehde zarim humusin huwd, zarim neg ner tomyonudig latinar n awad, zarimig n mongol orchulgar n zereg awsan n ergelzetei sanagdaj magad:

    процессор, платформ, шуурхай санах ой, дэд програм, operating system.

    hulganaa awachhad latin ner/orchulga n garj bh n niled tsewerhen haragdulna bas unshihad amar bolgono gedgig demjij bn.

    mon suuleese 5dah paragraphin 2dah ogulbert “Windows-iin orchind ajillahar zoriulagdsan program n Macintosh computer der ajillahgui” gesen sanag gargah gej bsnu eswel oor yum bsnu?

  4. t8m8r хэлдэг:

    Одоо ямархуу болж байна? Тэр өгүүлбэрийг засаад илүү тодорхой болголоо.

    Ихэнх суперкомпьютер Си хэлний хөрвүүлэгчтэй байгаа. Бүр хуучны хэдээс бусдад нь заавал Фортран хэрэг болохгүй. Суперкомпьютер болгон өөр өөрийн архитектурт тохируулж програмчлалын хэлний хувьд ямар нэг “аялгатай” байдаг. Жишээ нь параллель програм бичихэд зориулсан тусгай коммандуудтай гэх мэт. Үүнийг нь стандарт болгох гэж оролдоод нилээд амжилттай байгаа юм байна (MPI, POSIX гэх мэт). Энэ стандартуудыг нь дагаад бичвэл баргийн програмыг компьютерээс хамааралгүй бичиж болно.

  5. T хэлдэг:

    odoo ooloh yum ystoi alga, ter ogulber mon todorhoi bolson bn!

    tailbarud bichij hariulsand baerlalaa. 🙂

  6. Munkhu хэлдэг:

    Sain bna uu,

    Programchlaliin helnii talaar uneheer todorhoi bichsen bna.Bayarlalaa.
    Java helnii talaar ene metchilen todorhoi bichij ugch blh uu,ingevel uneer ih tus blhr bna.

  7. Munkhu хэлдэг:

    Сайн байна уу,

    Би обьект хандалт хэл, java талаар их сонирхож судлах гэсэн юм аа. Тэгээд ямар вэб сайт, ном сурах бичиг ашиглавал зүгээр вэ, Та надад зөвлөөч. Болж өгвөл өөрийн блог дээр нийтлээд өгч болох уу?

    Хариу хүсье!

  8. Buyanaa хэлдэг:

    zaabal unshaarai

  9. Narankhuu хэлдэг:

    Goe medeelel baina.

  10. anhaa хэлдэг:

    nadadu gugdliin butets java helt mongol hel dr nom material heregt bnaaaaaaaa

    • Saruul хэлдэг:

      Монгол хэл дээр электрон хэлбэрээр гэвэл байхгүй болов уу.
      Монголоор шууд номоор авсан нь дээр биз.
      Англи хэл дээр гэвэл
      http://download.oracle.com/javase/tutorial/
      өөрсдийнх нь хичээл байна. Энийг шууд аваад үз. Нээх сүйдтэй
      хэлний мэдлэг шаардахгүй ээ.
      Ер нь суурийг нь мэдэж байх эсвэл ямар нэг ОХП хэл мэддэг бол
      өөр нэг хэл сурах тийм хэцүү биш. Шууд жишээ кодон
      дээр ажиллаад явах хэрэгтэй гэж бодож байна.
      Java-г бол API-нуудыг нь сайн мэдэж байхад л болно биз.
      http://download.oracle.com/javase/6/docs/api/index.html
      Амжилт хүсье.
      ПХэл сурахад 99хувийн суурь мэдлэг 1 хувийн тухайн хэлний
      мэдлэг хэрэгтэй. (Т.Эдисоны үгийг гуйвуулав)

      • Тулгаа хэлдэг:

        Саруул жава сайн мэддэг бололтой уул нь ийм нийтлэл бичвэл эхлэн суралцаж байгаа хүмүүс хэрэг блх блв уу…

      • Saruul хэлдэг:

        Би дэндүү мэдэмхий бардам бичжээ. Үүндээ гүнээ уучлал эрье. Би жаваг тийм сайн мэдэхгүй ээ. Одоо л сурч байгаа. Багш нар маань л хэл сурах гар хурууны үзүүрээр бүтэх юм. Харин цаад алгоритм, програмын логик бол програмчлалын гол зүйл гэж хэлдэг юм.
        Алгоритмын шийдэл гэдэг бол бүр том асуудал шинжлэх ухаан, уран яаруу гоо сайхан болоод явчих болов уу. Энэ талаар эрхэм t8m8r юу гэх юм бол?
        Үүнтэй холбоотой энийг уншаад үзээрэй.
        http://www.sodkhiimori.com/new/main/detail.php?page_id=12&main_id=32&menu_id=49

      • Saruul хэлдэг:

        Ер нь энгийн програм бичихэд тийм айхтар логикч байх, уран шийдэл энэ тэр тийм их ашиглагддаггүй бололтой шүү. Зүгээр алдаагүй зөв програм бичихэд л хангалттай даг шүү. Тийм болохоор сайн программист байхын тулд заавал сайн матч байх шаардлагагүй болов уу. Гэхдээ computer science гэдэг агуу зүйл. Аар саархан програм бичихээс ондоо асуудал гэж бодож байна.

  11. t8m8r хэлдэг:

    tiimuuuuuuuu

  12. Эрка хэлдэг:

    Си хэлний хадаглах ангилалийн тухай мэдэх хүн байвал туслаач

  13. Баярхүү хэлдэг:

    Энэ гоё бичсэн байна. HTML дээр ингэж бичдэг шиг санагдаж байна.
    За А байна

  14. Баярхүү хэлдэг:

    А дээр хулганаа аваачаарай
    За А байна

  15. Оюунаа хэлдэг:

    Хэрэгтэй мэдэээл тавьсанд баярлалаа
    Би С# дээр код бичиж сурах санаатай байгаа та С# ийн талаар мэдээлэл өгөөж энэ сурахад үнэхээр хэцүү юмаа
    хариу заавал бичээрэй

  16. selenge хэлдэг:

    hi ene vneheer goy heregtei medeelel tavisan bn aa. Tomor tanii tabisan medeelles bi unshaad ihiig oilgoloo.bi ongorson zun c++ halit biy daaj sudalsan. odoo harin java heliig ihed sonirhoj bgaa yumaa. oshoo iim olon goy medeelel tavij bgarai. tand bayarlalaa

  17. Jacksparrow хэлдэг:

    Hi heregtei medeelel tawisand bayarllaa. C++ helnii sanguud bolon tolgoi file.uudiin gariin awlaga maygiin zuil bdag bol niitled ogch bolno bizde C++ heliig bie daaj sudalj bga yumaa pls pls

  18. их хэрэгтэй мэдээлэл байнаа баяарлалаа

  19. Есентай хэлдэг:

    их хэрэгтэй мэдээлэл байнаа баяарлалаа

  20. Есентай хэлдэг:

    C# мэдэхгүй штээ. C++ эсвэл Java сайн мэддэг бол шилжихэд амар байж магад.

  21. AD1 хэлдэг:

    goy medeelel bailaa

Хариулт үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s