Monday, June 7, 2010

Програм бичихдээ ямар хэл сонгох вэ?

Програм бичихдээ ямар хэл сонгох вэ? гэдэг асуулт маш түгээмэл тавигддаг. Энэ асуултанд хариулах гэж оролдъё.
Компьютерийн систем нь техник хангамж ба програм хангамж гэсэн 2 үндсэн зүйлээс бүрддэг. Техник хангамж нь нүдэнд үзэгдэж гарт баригддаг бодитой эд зүйлс. Харин програм хангамж нь компьютерт зориулагдаж бичигдсэн програмыг хэлдэг. Програм бичихдээ техникийн талын зүйлийг мэдэхгүй юм уу, чухалчилахгүйгээр бичиж болох ба мөн компьютерийн эд анги буюу техник хангамжийг бүтээхдээ програм хангамжийн мэдлэггүй байж болно. Гэвч энэ 2 зүйл нь салшгүй нягт холбоотой ба бие биедээ нөлөөлдөг зүйлүүд.
Ямар ч програм бичсэн тэр нь нэг бол өөр ямар нэг програмаас хараат, эсвэл техник хангамжаас хараат байдаг. Жишээ нь Фортран гэж програмчлалын хэл дээр програм бичлээ гэхэд энэ нь өөр програм хангамжаас буюу компьютерийн хэл рүү хөрвүүлэгчээс хараат байна. Харин тэр хөрвүүлэгч нь өөрөө техник хангамжаас хараат. Учир нь компьютер 2-тын тооллын систем буюу 0,1-ээс бүтсэн тоон дарааллыг л ойлгодог. Ингэхээр дам дамаар яалт ч үгүй програм хангамж нь техник хангамжаас хараат болдог.
Хүний бичсэн програм хангамж 2-тын тооллын код, 8 эсвэл 16-тын тоолол, эсвэл компьютерийн хэл буюу assembly хэл рүү хөрвүүлэгдэж байж компьютерийн instruction ойлгож ажиллуулдаг.
Одоо бүгдээрээ 2 тоог хооронд нь нэмэх програм бичиж үзье.
2тын тооллын програм:
Location . Instruction code
0 . 0010 0000 0000 0100
1 . 0001 0000 0000 0101
10 . 0011 0000 0000 0110
11 . 0111 0000 0000 0001
100 . 0000 0000 0101 0011
101 . 1111 1111 1110 1001
110 . 0000 0000 0000 0000

16-тын тоололд
Location . Instruction
000 . 2004
001 . 1005
002 . 3006
003 . 7001
004 . 0053
005 . FFE9
006 . 0000

/Цэгүүдийг зөвхөн тусгаарлах зорилгоор бичив/

Assembly хэл дээр
ORG 0
LDA A
ADD B
STA C
HLT
A, DEC 27
B, DEC 52
C, DEC 0
END

Дээрх бичсэн програмуудыг бүр нарийн тайлбарлах нь хэцүү. Үүний тулд бүр компьютерийн бүтцийг эхнээс нь тайлбарлах хэрэг гарна. Бидний дээд түвшний програмчлалын хэл дээр бичсэн програм эдгээр лүү хувиргагддаг. Тэр хувиргалт хийгдэж байгааг нь compile гэж нэрлэдэг. Програм бичсэний дараа compile хийхэд алдаа заадаг нь бидний бичсэн кодыг хувиргасныг нь компьютер ойлгохгүй байгаа гэсэн үг.
Ингэж хувиргалт хийж дахин өөр програм ажиллуулах нь шууд компьютерийн хэл дээр бичсэнээс удаан уу гэвэл удаан. Гэвч дээрх кодуудыг бичсэн шалтгаан маань бидэнд шууд дээрх шиг код бичээд суух нь маш хүнд. Их цаг хугацаа, бага бүтээмж бий болгоно. Мэдээж assembly хэл дээр програм бичдэг үү гэвэл бичдэг.
Харин одоо дээр дурьдагдсан дээд түвшний хэлний тухай авч үзье. 2 тоо нэмэх програмыг Fortran гэж хэл дээр яаж бичигдэхийг харцгаая.

INTEGER A,B,C
DATA A,27 B,52
C=A+B
END

Энийг харахад ойлгомжтой байгаа байх. Integer төрлийн А, В гэсэн 2 тооны нийлбэрийг олж байна.
Өөр програмчлалын хэл мэддэг хүмүүс яг ижил програмыг яаж бичихийг бодоод харьцуулж үзээрэй. Яагаад харьцуулж үзээрэй гэж байгаа юм бэ гэхээр, тухайн програмнаасаа шалтгаалаад хэл болгон дээр өөрөөр бичигдэнэ.
Энд л миний хэлэх гээд байгаа санаа байгаа юм. Програмчлалын хэлний сонголт нь юунд зориулсан, юу хийдэг програм бичих гээд байгаагаас шалтгаална. 500 метрийн цаана байгаа ажил руугаа онгоцонд суугаад очдоггүй. Далайн цаана байгаа арал руу машинаар явна гэж байхгүй. Ер нь бол муу сайн хэл гэж байхгүй, юунд зориулагдсан хэл вэ гэдэгт л байгаа юм.
Хэрвээ хэн нэгэн зөвхөн гар утасны тоглоом бичдэг болно гэж байгаа бол Java л сурсан нь дээр. Хакер болох гэсэн хүн C,C++, Assembly л хамгийн тохиромжтой. Гэхдээ нэг чухал зүйл байдаг нь, огт програмчлал мэдэхгүй хүн, програмчлал ойлгохын тулд эхлээд ямар хэл сурах хэрэгтэй вэ гэдэг асуулт байдаг.
Мэргэжилтнүүд янз бүрийн хэл санал болгодог ба хамгийн түгээмэл санал болгодог 3 хэлийг хэлье.
1. Fortran - Энэ хэлийг санал болгодог шалтгаан нь сүрхий том програм бичиж болдогтоо биш. Хэл нь өөрөө уншихад маш амархан. Pseudocode буюу бид алгоритм бичихдээ англиар бичдэг. Фортран хэл нь яг англи хэлээр шууд бичиж байгаа юм шиг маш ойлгомжтой байдаг болохоор ихэнх сайн програмчлалын багш нар үргэлж энэ хэлийг эхлээд сурвал зүгээр гэж хэлдэг.
2. Pascal - Үүнийг бас л дээрхтэй адил шалтгаанаар санал болгодог. Фортран шиг бүтэн англи үгээр бичээд байдаггүй боловч бусад хэлтэй харьцуулахад бас л нилээн ойлгомжтой хэл. Миний хувьд бол процедур хандалтат програмчлалыг нилээн сайн ойлгож болох хэл. Үүнийг сурчих нэг давуу тал нь: Microsoft Dynamics Navision гэж ERP системийн configuration-ийг хийхэд C/AL editor гэж юман дээр хийдэг. C/AL editor нь Pascal дээр суурилж бий болсон хэл. Ялгаа нь объект хандалтат.
3. С - С is a Sea гэж үг байдаг. Хэтэрхий их зүйлийг агуулсан энэ хэлний талаар хаанаас нь юу гэж хэлэхээ мэдэхгүй юм. Ямартай ч нэг юмыг хэлэхэд Java java гэдэг хүмүүс эхлээд энэ хэлийг сурчихвал java шиг амархан хэл байхгүй болно. Ер нь ч тэгээд java-г хэл гэхээсээ илүү технологи гэдэгдээ.
Миний блогийн нэг бичлэгт энэ талаар гүйцэд бичиж хүрэлцэхгүй учир ингээд өндөрлөе. Бага зэргийн ойлголт өгч чадсан байх аа гэж найдаж байна.

Sunday, June 6, 2010

Blender

Бараг жилийн өмнө эндхийн Linux user group-ийн mailing list-эд орсон юм. Анх бүртгүүлсний дараа нэг уулзалт зарлагдсан боловч жижигхээн шалтгаанаас болж очоогүй юм. Гэтэл түүнээс хойш нэг ч уулзалт зарлагддаггүй өмнөх дээр нь очоогүйдээ харамсаж байтал харин сарын өмнө нэг уулзалт болсон юм.
Уулзалтын сэдэв нь "Blender". IT-ийн төв, бараг хот гэж болохоор газар, нэг компаний байранд болсон юм. Linux user group-ийг компанийх нь сүлжээний админ анх санаачлан бий болгож, дизайнер нь түүнд тусалдаг, яг ажлыг нь 2хон хүн хийдэг цомхон груп болохыг нь мэдэж авлаа. Гэхдээ гишүүд нь бол маш олон. Уулзалтанд 10хан ирсэн нь, уулзалт болсон компаний байр дэндүү холтой холбоотой болов уу гэж бодлоо.
За эргээд компаний талаарх яриа руу оръё. Тус компани нь лайнукс үйлдлийн систем хэрэглэдэг, нийт ажлын 90 гаруй хувь нь лайнукс дээр, тодорхой тооны цөөхөн хэдэн ажил виндовс үйлдлийн систем дээр хийгддэг гэж хэлж байсан. Нэг сонирхолтой нь монгол уран бүтээлчидтэй хамтарч ажилладаг гэж хэлж байсан. Энэ талаар нэмж асуугаагүйдээ сүүлд нь их харамссанаа хэлэх нь зөв болов уу.
Дизайнер залуу нь өөрөө Blender дээр 10аад жил ажилласан ба энэ програмыг танилцуулсан юм. Миний хувьд 3 хэмжээст програмуудаас 3D's MAX бага зэрэг мэддэг боловч, хойшид Blender гэж уг програмыг судалж 3 хэмжээст ямар нэг юм хийх хэрэг гарвал үүнийг л нээнэ гэж бодож байгаа.
Тийм ч учраас энэ талаарх олж авсан энэхүү жоохон мэдээллийг хуваалцаж байгаа юм. Мэдлэг биш мэдээлэл хуваалцаж байгаадаа хүлцэл өчье.
Яагаад энэ тэгж их таалагдсан бэ? гэвэл:
- Opensource, татаж аваад хэрэглэхэд үнэ төлбөргүй. Хүмүүсийн хийсэн зүйлүүд нь интернэтэд байж байгаа. Нийт 200GB байсан байхаа.Энд дараад сайт руу нь орж үзэж болно.
- Хэмжээ нь маш жижиг. Миний татсан нь 15MB байсан. Энд дараад татаж авч болно.
- Миний мэдэх л бүх үйлдлийн систем дээр ажиллах юм байна лээ.
- Асуухад тодорхой хариулт өгөөгүй боловч, ямартай ч одоогийн байдлаар хамгийн хурдан рендэрлэдэг програм хангамж юм шиг байсан. Дашрамд дурьдахад дэлхий дээр одоогийн байдлаар нийт 200аад 3 хэмжээст програм хангамж байдаг шиг санаж байна.
- Уг програм нь 3 хэмжээст модель, анимейшн хийхээс гадна тоглоом хийж болдог нь маш том давуу тал шиг санагдсан. C,C++, python хэл дэмждэг нь бүр их аятайхан. Дээр нь хийж байгаа тоглоомоо рендэрлэхээсээ өмнө, өөрөөр хэлбэл хийж байхдаа тоглож болж байсан. Гэхдээ үүнд бас тийм ч итгэлтэй биш байна. Өмнө нь compileдчихсан юм уу рендэрлэсэн байж магадгүй.

Заза ямартай ч 3 хэмжээст сонирхдог, юм хийж сурах хүсэлтэй хүмүүст энэ програм хангамжийг санал болгож байна. Crackдчихсан нэг юм суулгах гэж, нөгөөхийнхөө install-ийг олох гэж янз бүр болж байхаар, май энийг хэрэглэ гээд байж байгаа үнэгүй, бас их давуу талтай уг програм хангамжийг хэрэглэх нь илүү дээр болов уу гэж бодож байна.

Thursday, June 3, 2010

Амьдралд хар цагаанаас өөр өнгө бий

Хэдэн юм хэлье гэж бодлоо. Юуны өмнө цөөхөн хэдэн бичлэгтэй блог руу маань тодорхой тооны хүмүүс хандаж орж ирж байгаад баяртай байгаагаа хэлэх нь зөв болов уу. Цаашдаа ер нь тогтмол бичнэ.
Орчуулгын тухай бичсэн маань их олон хүний уур ундууцлыг хүргэж байх шиг байна. Бодвол тэр орчуулагчид болон, орчуулагчдын хамаатан садан болов уу. Үгүй бол хөөрхий уул нь юу гэж тийм хачин үг хэллэгээр хүн доромжилж сэтгэгдэл бичихэв дээ. Эсвэл энэ компьютер гээч юмны ард суугаад удчихсан мэргэжил ойролцоо нөхөд маань ийм гаж сонин харьцааны "соёл"-той юм болов уу? Мэдэх юм алга.
Нөхдөө амьдралд хар цагаанаас өөр өнгө байдаг гэдгийг санацгаая аа. Хүмүүсийн сэтгэгдлийг уншихаар англиар баая гээд уриалчихсан юм шиг санагдаад бичсэнээ дахин дахин уншлаа. Тийм юм алгаа уул нь. Таны жорлондоо ороод хаанахаар дүлэх надад хамаагүй, зөвхөн англиар ярьцгаая гэж мээкээтээд байгаа ч юм биш.
do{ Унш;
}while(Ойлгохгүй байна)
гэсэн зарчимтайгаар бичсэн юмыг маань уншчих.
Энэ блогийн зорилгыг хүмүүст хэлэхэд:
Би өөрөө тийм лут амьтан юм биш. Компьютер гэж юмыг ойлгох гэж оролдож яваа л залуу. Зарим нэгний чинь хувьд бацаан, заримынх нь хувьд давсаг бололтой.
Лут юм мэддэг та нөхдөд зориулсан эд биш ээ. Харин Мэдээллийн Технологи гэж салбар луу орж яваа, эхлэн суралцаж байгаа, суралцахыг хүссэн бүх хүнд зориулж нээсэн юм. Мөн тодорхой мэдлэг чадвартай хүмүүстэй санал бодлоо солилцож хамтдаа хөгжих санаатай.
Ямартай ч одоогийн байдлаар олон юм бичээгүй ч цаашид тогтмол, анхан шатны зүйлүүдээс эхлээд бодол саналаа хуваалцах болно.
Харин тэр лут мэдлэгтэй, хүн амьтны ах болчихсон, бас ахыгаа балиашиглаж орж ирж үзсэн порноныхоо нервийг гаргадаг хүмүүс бол харин хэрэггүй. Та нарыг уншаач гэж би гуйхгүй, та нараас хойшид ч юу ч гуйхгүй.
Харин өөрийгөө хөгжүүлэх сонирхолтой, эрүүл сэтгэлгээтэй залуустай санал бодлоо солилцоход хэзээд бэлэн.
Эцэст нь, Миний энэ бичиж байгаа хэл бол Монголчууд бидний бие биетэйгээ ойлголцдог, биднийг бусдаас ялгадаг чухал соёл юм шүү,бүгдэд нь амжилт хүсье.