07 January 2014

Программчлалын хэлний тухай

Би блогд өөрийн мэргэжилтэй холбоотой пост төдийлөн их нийтэлдэггүй. Уг нь санал асуулгаар мэргэжил нэгт уншигч цөөнгүй бий.

Намайг их сургууль төгсөж байхад "программ" гэдгийг "програм" болгож өөрчилж баталсан юм. Үндэслэл нь инээдтэй: программчлал гэдэг үгэнд 4 гийгүүлэгч дарааллан орж буй нь зүй бус гаж үзэгдэл юм байх. Би хоёр "м"-тэй бичээд сурчихсан. Тиймээс одоо албан ёсны бичиг баримт дээр ганц "м"-тэй, бусал үед өөрт амар, дассанаараа бичдэг. За үндсэн сэдэвтээ шилжье.

Программистуудын форум, сайтуудаар жаахан тэнэх юм бол программчлалын хэлний маргаан их таардаг. Delphi үхэж байна, C# нь Java-гаас дээр, Python хамгийн чадалтай г.м. хязгааргүй үргэлжилнэ. Зарим нь улаан галзуу өөрийн эзэмшсэн хэлээ өмөөрнө, бусад нь няцаана, янз бүрийн рейтинг, үзүүлэлтүүдийг иш татна. Аль хэлээр хэдэн хүн бичиж байгаа, ямар хэлтэй хүний ажлын байр хэр их зарлагдаж байна гээд алж өгнө.
Программчлалын хэл үнэхээр чухал уу? гэдэг асуултыг тавьж үзэх хэрэгтэй байх. Ирээдүйгээ төсөөлье. Тэтгэвэрт суутлаа юу хийхийг хүсэж байна? Өөрөө одоо хэдэн настай вэ? Нээх их тоо байх нь юу л бол, харьцангуй залуу салбар шүү дэ. Гэхдээ өнөөдөр ч гэсэн тэтгэвэрт гарч буй программистууд цөөхөн ч гэсэн бий. 31 жилийн өмнөх үйл явдалруу өнгийж үзье. 1983 онд Алгол 68-ыг олон хүн голж Smalltalk-руу шилжиж байж. Ийм хэл ер нь байсныг дуулсан уу? Cobol-ыг цөм үхсэн хэл гэх боловч тус хэл дээр бичдэг хүнд ажил асуудалгүй олдож л байв. За тэгээд яг энэ онд Turbo Pascal, C++, Ada болон GW-Basic (анхны үзсэн хэл маань гэдгийг дурдах хэрэгтэй байх) хорвоод мэндэлсэн юм. Анхны MS-DOS үйлдлийн систем жилийн өмнөхөн гарсан байв. Тэр үеийн ямарч программист энэ бүхэн түр зүйл үү, удаан оршин тогтнох уу гэдгийг мэдэхгүй байсан нь тодорхой. Харин бид өнөөдрөөс харж буй болохоор мэдэж байгаа. Тэгээд тэр үед хэн нэгнийх нь зөв байсан нь өнөөдрийн хувьд чухал байна уу? 
Үүний адил 31 жилийн дараа буюу 2045 оноос өнөөдөрлүү харах юм бол энэ маргаан онц ач холбогдолгүй зүйл мэт харагдна. Тэр үед C++, Java, Delphi, C# байлаа ч гэсэн танигдахын аргагүй өөрчлөгдсөн байх нь ойлгомжтой. Нодинон жил оюутан зохиосон, өнөөдөр хэнч мэддэггүй программчлалын хэл 10 жилийн дотор хөгжсөөр дээрх бүх хэлийг үгүй хийхийг ч байг гэхгүй шүү дэ.
Миний хэлэх гээд байгаа гол санаа - программ зохиогч нь хэлнээс хамаарах ёсгүй. Программист чи Delphi ч юмуу Java Developer биш инженер гэдгийгээ ойлгох хэрэгтэй. Software Engineer. Гоё дуулддаг юм шүү, хэ-хэ. Ингэж дуудуулахын тулд их хөдөлмөрлөх хэрэгтэй. Манай төгсөлтөөс л гэхэд өнөөдөр код бичиж буй нь хуруу дарам цөөн. Зарим нь мулгуу минь, код одоо болтол бичээд явж байгаа юмуу? гэх байх. Яахвээ дэ, чаддаг чаддагаараа л хоолойгоо норгож хошногоо царддагаас хойно.
Хэл бол ирдэг, хөгжидөг, эргээд унтардаг технологи. Гэхдээ өөрчлөгддөггүй үнэт зүйлс бас байгааг мартаж болохгүй. Программчлал гэдэг нь өөрөө жижиг хэсгүүдийг эвлүүлж нэг цогц том зүйл бүтээхтэй адил процесс. Том Lego тоглоом угсарч буй мэт гэхүү дэ. Цаг хугацаа өнгөрнө, арга зам нь солигдно, мөн чанар нь хэвээрээ үлднэ. Хоёрдахь чухал зүйл - алгоритмууд. Классика хуучирдаггүй юм. Тооцолон бодох хурд, санах ойн хэрэглээ зэргийг тооцож код бичдэг бол сайн. Хүчингийн хэрэг үйлддэг бол хүчиндэгчээрээ л дуусна (шууд утгаар нь ойлговоо!). Гуравдугаарт, цагийн аяс хааш салхилж буйг мэдэрч байх хэрэгтэй. Жишээ нь: олон жилийн өмнө объект хандалтат программчлалыг тоогоогүй орхисон нөхдүүд бусдыгаа сүүлд нь гүйцэх л хэрэгтэй болсон.
Тиймээс янз бүрийн зүйл оролдож байхад буруудахгүй. Хэл чухал биш, санаа чухал. Microsoft-ын шинэ API-г сайн мэддэг, эсвэл моод-онд орж буй программчлалын хэлний синтаксийг мэддэгээрээ сайн программист болохгүй. Маргааш нэг технологи гарч ирэхэд барьц алдахаар байгаа бол "би зөв чиглэлд хөгжиж байна уу?" гэж өөрөөсөө асуух хэрэгтэй.
За тэгээд төгсгөлд нь: а) Мэдэж буй зүйлээ харамгүй бусадтайгаа хуваалц. б) Сайн программист гэж кодыг нь хэнч хараад ойлгохооргүй бичдэг хүнийг хэлдэггүй юм. Эсрэгээр, өөр программист хараад ойлгохоор эмх замбараатай, тайлбартай бичдэг хүнийг хэлдэг. Харин ингэж бичсэн кодыг хараад хараад ойлгохгүй бол уучлаарай - та имбецил! мэргэжлээ буруу сонгож.

No comments:

Post a Comment