2010/04/27

Угз тайлах

Өмнө бичигдсэн Логик програмчлалын жишээг туршиж үзэж байгаад мэдэхгүй хүнд жаахан амтлуулах, өөртөө жаахан сэргээх зорилгоор үүнийг тэрлэе гэж шийдэв.
Би өөртөө энэ логик програмчлалыг эх хэлээрээ Утга Учрын Уялдаа Холбооны Зангилааг Тайлах гэж нэрийдэв (УУУХЗТайлах). "Угз тайлах" гэж байгаа юм шиг уншигдаж байгаа биз?

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

  • эхлээд хөдлөшгүй баримтуудаар юмсын хоорондох уялдааг бэлдэж өгнө. (facts)
  • бэлдсэн баримтуудаараа хооронд нь холбож дүрэм үүсгэнэ ( rules )
  • өгөгдлийн баазаасаа лавлаж асууна ( query)
эхний хоёрыг нь ерөнхийд нь өгөгдлийн бааз гэж нэрлэдэг. Жижиг анхаарах зүйл бол:
  • хувьсагч нар том үсгээр эхэлж бусад нь жижиг үсгээр бичигддэг.
  • лавласан асуулт болон баримтын бичиглэлт бүгд ЦЭГЭЭР дууссан байх ёстой
  • хоёр үнэн юмны хооронд нь таслал тавьсан бол бөгөөд гэсэн утга илэрхийлдэг.
  • аль нэг нь үнэн байхад болно гэсэн бол ; гэсэн цэг таслалаар илэрхийлдэг.

Жишээ авалгүйгээр юм тайлбарлах шиг хэрэггүй юм гэж үгүй бил ээ. Эхлээд хэдэн хөдлөшгүй баримтууд бэлдэе:


Энд би гурван хөдлөшгүй баримт бэлдэж тавив. Энгийн үгээр үүнийг дараах маягаар тайлан уншиж болох юм:
юндэн нансалмаад хайртай.
нансалмаа юндэнд хайртай.
хоролмаа юндэнд хайртай.
уг нотолгоон дээр тулгуурлаад журамт эрийн дүрэм босгоё:


Энэ бичлэгийг тайлбарлахдаа :- гэснээс нь эхлэе. ХЭРЭВ баруун гар тал нь үнэн бол зүүн гар тал нь үнэн гэж тайлж уншиж болно. Тэгэхээр:
ХЭРЭВ юндэн нансалмаад хайртай БӨГӨӨД хуурдаггүй БОЛ юндэн журамтай эр гэж нийтэд нь тайлж унших хэрэгтэй.
not(хуурдаг) гэсэн бичлэгээс та, not гэсэн англи тушаалаар хуурдаг гэсэн дүрмийн эсрэг утгыг нь хэрэглэнэ гэж ойлгоно уу. Мөн хоёр үнэн гэсэн бичлэгийг дунд нь , гэсэн таслалаар тасалж БӨГӨӨД болж байгааг та ойлгосон буй заа.
Мэдээж л дээ, юндэн нансалмаад хайр зарлаж гүйж байснаа гэнэт хоролмаад хайр зарлаад унавал ямар юмных нь журамт эр байхав дээ. За тэгвэл үүнийгээ энэ хэл дээр илэрхийлэх хэрэгтэй болно.


энэ хуурагчийн дүрмийг та бараг надгүйгээр тайлан уншиж байгаа байлгүй дээ: юндэн Х хүнд хайртай БӨГӨӨД тэр Х нь нансалмаа БИШ бол хууралт юм.
Энд Х гэгч тэр нууц амрагийг нь том үсгээр бичсэнийг нь та анзаарч байгаа биз? Яагаад гэдгийг нь та мэдэж байгаа биз дээ? Мэдээж шүү дээ, ийм бузар булай юмыг олны өмнө илчилж дурайтал харуулах гэж том үсгээр тэмдэглэж байхгүй юу.

Тэр Х бол хувьсагч. Пролог ажиллахдаа бэлдэж өгөгдсөн өгөгдлийн баазаас хайртай(юндэн, Х)-д таарах бүх баримт нотолгооноос хайгаад Х-д тэр таарсан нотолгоог нь оноож өгдөг. Жишээ нь та баазаас дараах маягаар лавлаж асууж болно. Эхлээд юуны өмнө ямар ямар хөдлөшгүй баримт болон дүрэмнүүд баазад байгааг хардаг тушаалтай танилцана уу.



эндээс жишээ нь хайртай(юндэн, Х) гэсэн асуултад таарах баримт байвал харуул гэсэн асуулт асууя:


харж байна уу? Х-н оронд нансалмаа гэсэн бичлэг олдож байгааг харуулж байна.
Ингээд одоо байгаа баримт нотолгоон дээрээ тулгуурлаад юндэнг хэр журамтай эр вэ гээд асуугаад үзье.


Асуулт маань "Юндэн журамтай юу?" гэсэн чинь өөдөөс "true" гэж авч байна даа харин ч нэг. Сонин юм даа, юндэнгийн талаар энэ гадаад нөхөр юугаа хийгээд мэдчихсэн бас баталчихсан явж байдаг байна вэ? Юндэн гуайг хилийн чанадад цагаачилж юмуу хараар ажиллаж байгааг нь утга учрын нарийн зангилааг тайлдаг уг програм харь улс уруу нь утасдаж лавлаад уг хэлээр нь хариулж байгаа юм болов уу. За бүү мэд. Ямар ч байсан журамтай гэдгийг нь баттай хэлж байх шиг байна.

Одоо хэдүүлээ хөдлөшгүй хүчтэй үндсэн хуулиа хүртэл хувийн шуналд автаж өөрчилдөг "монгол" "хэнэггүй" "уужим" "балиар бүдүүн" зангаараа түрий барин энд байгаа хөдлөшгүй баримтуудыг өөрчилж нэг үзэх үү? Магадгүй юндэн маань хүний газар хар ажил хийж хоол нойргүй ажиллаж байхдаа эх орондоо үлдсэн хайрт нансалмаагаа хоосон ходоодыг нь тэтгэж хоёр мөөмөөрөө даллан дуудсан хоролмаатай сольж, хормойд шургалсан явдлыг уг нутгийн ардууд нь шөнөөр шургалан гүйж, шуухитнан уухилан, угз тайлах чимээгээр нь мэдээд хайртай(юндэн, хоролмаа) гэсэн sms ч явуулсан байж бас болох юм. За ямар ч байсан



гээд мэдээлэл баттай болсон байг гэж үзье. Ингэхээр журамт эрийн асуудал юрамт эрийн асуудал болон хувирах ёстой доо:


Ааа, ха хаха, ичих нүүрээ элгэндээ наасан юндэн ингэж олны өмнө онигоо болж баригдлаа даа. Энэ гадаад нөхөр шууд хэлж байна ш дээ. FALSE гэж. Би бас муу ч гэсэн худлаа гэдгийг нь ойлгоод байгаа юмаа бас.

За галзуурсан биш ингэж гажиж яанам билээ. Эмакс хэрэглэдэг нөхөр байвал бичсэн файл дээрээ M-x prolog-mode гэж горимыг нь солиод C-c C-l гэж уг файлаа пролог дээр дуудаж хөрвүүлэхээр прологийн асуух самбарыг харуулдаг. Тэндээс та юндэнг журамтай эсэхийг нь асуугаад үз л дээ.

2 comments:

  1. аймаар ойлгодог байна шдээ

    иймэрхүү маягаар тайлбарлаад байвал би удахгүй бест программер болох юм байна даа
    хэхэхэ

    ReplyDelete