Tuesday, February 21, 2012

Монгол хэлний дүрмийн өөрчлөлт

Би бээр Монгол хэл судлаач хүн биш боловч хааяа баримт бичиг бэлтгэдэг, цөөн хэдэн ном бичсэн хүн юм. Юм бичих үед крилл монгол бичгийн дүрэмд өөрчлөлт оруулмаар зүйл олон ажиглагддаг. Энд санаж байгаа хэдийгээ бичиж үлдээе гэж бодлоо.

ь,ъ тэмдэгүүд

Эдгээр тэмдэгтүүдийг (үсэг биш) цагаан толгойноос хасаж болмоор санагддаг юм. Шинэ крилл үсгийн дүрэмтэй хамт эдгээр тэмдэгт Монгол хэлэнд бараг хүчээр орж ирсэн санагддаг. Хуучин монгол бичгийн дүрмээс шинэ дүрэм рүү шилжихэд энэ хоёр тэмдэгтийн хэрэгцээ байгаагүй нь тодорхой байсан.


Энэ хоёр тэмдэгт хасагдвал дараах байдлаар үгс өөрчлөгдөх болно:
явах - явая
бодох - бодоё
Сумъяа  (бүр сүүлийн дүрмээр Сумьяа гэж бичих ёстой бололтой)  - Сумияа
объект - обект


Нэг удаа хүүхдийнхээ хичээлд суухад багш нь 'болох', 'болих' гэсэн 2 үгэнд 'ё' үсгийг хэрхэн залгах тухай тайлбар хийсэн юм. Тэрээр "би эд нарт маш олон удаа хэлсэн ерөөсөө тогтоохгүй, шалгалтан дээр байнга алдах юм" хэмээн арга цөхөрсөн байртай их л бухимдангуй тайлбарлаж байна. Дунд сургуульд үзэж байгаа дүрмээр бол 'болох' нь 'болъё', болих нь 'болье' гэж бичих ёстой бололтой. Хүүхдүүд нэг бол хэллэгээрээ бичдэг, эсвэл эр, эмийг нь ялгахгүй бичиж алдаа гаргадаг бололтой.

Уг нь бол болох, болих гэсэн үндсэн үгүүд дээр зүгээр л 'х' үсгийг нь хасаад 'ё' залгавал болмоор юм. Ө.х болоё, болиё гэж тайлбарлавал хүүхэд маш хурдан сурна, дараа нь бараг алдахгүй биз.


'ь' тэмдэгийг хасвал 'нь' дагаварыг хэрхэн бичих нь хамгийн сонин байж магадгүй. Хуучин монгол бичигт -ину, -ану гэсэн дагаваруудыг хэрэглэж байсан. Үүнийг орчин цагийн өгүүлбэрт арай товчлоод шууд  'ин' эсвэл 'ни' болгон хэрэглэж болно гэж бодож байна.


Щ үсэг

Энэ үсгийг ямар ч эргэлзээгүйгээр шууд хасах нь зөв. Щорс гэсэн нэг орос хүний нэрнээс өөр үгэнд хэрэглэдэггүй санагдаж байна. Бас 'щааваас' гэсэн үгэнд хэрэглэж магадгүй :)). За энэ твиттер дээрээс харсан тоглоом шүү.

Үг таслах

Орчин үед үг таслах дүрэм хэрэглээгүй болсон шиг санагддаг. Дунд сургуулд дэвтэрийн хажуугийн улаан шугаманд хүрээд үг багтахгүй бол тасалж бай гэж заадаг байсан. Сургуул төгссөнөөс хойш би л лав гараар тэмдэгдэл бичих үедээ дэвтэр дээр үгээ тасалж байгаагүй, багтахгүй бол зүгээр л шинэ мөрөөс эхлүүлээд бичдэг. Компютер дээр бичвэл таслахгүй нь бүр ойлгомжтой.

Гэтэл энэ дүрмийг заах гэж дунд сургуулийн хөтөлбөрт нэлээд цаг авдаг бололтой юм. Заримдаа манай хүүхэд хэцүү хэцүү үгүүдийг яаж таслах вэ гэж асуудаг, надад хэлэх үг олддоггүй юм.

Эр, эм үгийн 'ы', 'ий' 

Үгийн эр эсвэл эмээс нь хамаараад 'ы' эсвэл 'ий' залгана гэж дунд сургуулд заадаг. Энэ дүрэм нь хүүхдийн толгойг их эргүүлдэг дүрмийн нэг. Ер нь эр, эмээс нь үл хамааран нэг л дагавар залгадаг байхад болмоор юм. Зүйрлэвэл япон хэлэнд ямар ч үгэн дээр 'но'  гэж залгаад л болдог шиг хялбар дүрэм байх хэрэгтэй.

Гээгдэх, гээгдэхгүй эгшиг

Эгшиг гээх дүрэм нь хамгийн толгой эргүүлсэн дүрмүүдийн нэг. Ер нь бол ямар ч юм 'гээхгүйгээр' шууд дагавар залгаад бичмээр санагддаг.
Жишээлбэл, ялгуусан баатар болон Баатар гэсэн хүний нэр дээр 'н' дагавар залгах бол баатар+н = баатарын, Баатарын гээд бичиж болно. Энд эхний 'б' үсэг жижиг том байгаагаар нь хүний нэр эсвэл тэмдэг үг байна гэдэг нь хэнд ч ойлгомжтой харагдана.


Дүгнэлт

Хамгийн гол асуудал нь бага ангийн хүүхдэд эдгээр хэрэгцээгүй болсон дүрмийг тайлбарлах гэж 4-5 жил цаг барж багш, хүүхэд аль алийг  нь залхааж байна. Монгол хэлний дүрэм бол монгол хүүхэд ойлгоход хялбар, энгийн байх хэрэгтэй.

Ерөнхийдөө орчин цагийн хэрэглээгээ дагаад хэрэггүй болсон зүйлсийг нь хасаад дүрмээ шинэчилэх хэрэгтэй болсон санагдаж байна.



Tuesday, March 29, 2011

Оффлайнаар андройд хөгжүүлэлтийн орчин бэлтгэх

Гэрт интернэтгүй үед Андройд SDK-г суулгах шаардлага хэд хэдэн удаа гарсан юм. Энэ асуудлыг хүмүүс дараах байдлаар шийдсэн байна.


Алхам1. Шаардлагатай файлуудыг интернэттэй ямар нэг компютерээр татаж авна. Үүнд:

- ADT Plugin:
Eclipse-н ADT plugin (http://dl.google.com/android/ADT-10.0.1.zip)


- Android SDK:
http://dl.google.com/android/android-sdk_r10-linux_x86.tgz (өөрийн үйлдлийн системд тохируулж сонгоно)


- Android Platform 2.1:
http://dl-ssl.google.com/android/repository/android-2.1_r02-linux.zip файлыг татна.
Үйлдлийн систем, андройд платформоос хамаараад энэ хаягын төгсгөл хэсэг ялгаатай байж болно. Тиймээс http://dl-ssl.google.com/android/repository/repository.xml хаягаар орж өөрийн сонголтоо хийгээрэй. Энэ xml-н төгсгөл орчимд платформын нэрс байгаа бөгөөд сонирхож байгаа нэрээ олоод дээрх холбоосын "android-2.1_r02-linux.zip" нэрний оронд бичээд татаж авна.


Энэ дашрамд хэрэв Eclipse болон Жава байхгүй бол интернэттэй байгаа дээрээ татаад авах хэрэгтэй.

Алхам2. ADT plugin-г Eclipse дээр суулгана.

Eclipse дээр Help -> Install new software гэж ороод Add товчийг дарна.Гарч ирсэн Add repository цонхон дээр Name=ADT, Location=ADT-10.0.1.zip файлын замыг заана. Ингээд суулгана.

Алхам3. Android SDK суулгах

Татаж авсан Android SDK файлаа нэг газар задлана. Дараа нь Eclipse дээрээ Window -> Preference -> Android гэж ороод SDK асуусан хэсэгт нь задласан хавтасаа заана.

Алхам4. Android Platform нэмэх

Android SDK байрлаж байгаа хавтасны platforms хавтас дотор татаж авсан android-2.1_r02-linux.zip файлын агуулгыг задлаж хуулна.



Ингээд дууслаа.

Wednesday, October 7, 2009

Ерланг: Морины нүүдэл

Шатрын хөлгийг морины нүүдлээр дүүргэх бүх боломжуудыг олох бодлого хамгийн анх рекурсивыг ойлгоход тусалж байсан санагдаж байна. Энэ бодлогын шийдлийг Ерланг дээр хийж үзэв.


-module(horse_move).

-export([start/0, move/1]).

start() ->
move([{1,1}]).

move(Path) when length(Path)==64 ->
io:format("~w~n", [Path]), % display the result
ok;
move([{X,Y}|_]) when X < 1; X > 8; Y < 1; Y > 8 ->
ko;
move([{X,Y}|T]=Path) ->
Dup = lists:member({X,Y},T), % өмнө нүүсэн эсэх
if
Dup -> ko;
true ->
% io:format("~w, len=~w~n", [{X,Y}, length(Path)]),
move([{X-2,Y-1}|Path]),
move([{X-1,Y-2}|Path]),
move([{X+1,Y-2}|Path]),
move([{X+2,Y-1}|Path]),
move([{X+2,Y+1}|Path]),
move([{X+1,Y+2}|Path]),
move([{X-1,Y+2}|Path]),
move([{X-2,Y+1}|Path])
end.


Си кодтой харьцуулахад гайгүй товчхон, цэгцтэй харагдаж байна шүү.

Дараагийн алхамд тооцооллыг яаж параллель болгох вэ гэж эргэцүүлэв. Олон салаагаар орж нүүдлүүдийг шалгах үйлдлийг зэрэг/параллель хийвэл үр дүнтэй байх болов уу. Гэхдээ салаа зам олох үйлдэл нь их энгийн товч болохоор параллель ажиллуулах нь үр дүнтэй байж чадах уу. Процессыг эхлүүлэхэд Ерланг маш богино хугацаа зарцуулдаг гэж байгаа боловч тодорхой хэмжээгээр хугацаа орох л байх.

Нэг завандаа параллель хувилбарыг хийж үзнэ дээ.

Tuesday, September 22, 2009

Бидний хүүхдэд хэн, юу заагаад байна вэ?

Дунд сургуульд худлаа ярьж, мэлзэхийг багш нь биеэр үзүүлж байна.

Өнөөдөр нэг ийм явдал болов. Охиныг (манай охин энэ жил 2-р ангид сурч байгаа) сургуулиас нь авахаар очиход ангийнхаа нэг охинтой хамт гарч ирсэн гэнэ. Хацар дээр нь гурван том хурууны мөр гарчихсан улаан болсон байхаар нь эгч нь яасан бэ гэж асуухад хамт явсан охин нь ангийн багш алгадсан гэсэн байна.

Гэртээ ирэхэд би гэрт байсан тул бас юу болсныг асуув. Тэгээд ээжид нь хэлсэнд ээж нь ангийн багш руу нь ярьж энэ тухай асуужээ. Гэтэл багш хүүхэн "Ёстой тийм юм байхгүй, би зүгээр л куртикнээс нь угзарсан, би тийм хүн биш" гэж мэлзсэн байна.

Харахад илэрхий байхад ингэж хэлсэнд гэнэт миний уур хүрэв. Багш руу нь залгасанд би тэгээгүй гэж бас л мэлзэж байна, тэгснээ бас за яахав алгадсан болог, тийм зүйл байдаг л биз дээ гэж байна, бас дараа нь алгадаагүй гэж хэлж үзэж байна.

Яахав дунд сургуульд байхад багш нар алгадаж л байсан, тоохгүй өнгөрдөг л байсан. Манай эрэгтэй дүүд яг тийм юм тохиолдсон юм. Эрэгтэй багш нь чих рүү нь алгадаад хэнгэрэгийг нь хагалсан. Ээж, аав хоёр өөрөө дүрсгүй юм болохоор нь юм хэлэлгүй өнгөрөөсөн юмдаг. Гэхдээ одоо чихнээс нь идээ бээр гоождог зовлонтой хүн.

Багштай нь утсаар ярьсны дараа нь би мэдэж байсан ч охиноосоо зориуд багш чинь чамайг алгадаагүй л гэж байна ш дэ. Чи худлаа яриад байгаа юм уу гэж асуулаа. Охин түрүүнээс хойш намайг ээж рүү, багш руу нь ярихад цааргалаад битгий гээд байсанд би дээрээс нь ингэж асуусанд тэссэнгүй нүдэнд нь нулимс цийлэгнээд хөшигний цаагуур орчихов.

Аргагүй л дээ, багш нь яаж худлаа ярьж, мэлзэж болдогыг 6, 7 настай хүүхдүүдэд өөрийн биеэр үзүүлж байхад. Ирээдүйн Монголын залгамж халааг бэлдэж байгаа сургууль гэдэг байгууллага нэг иймэрхүү. Сургууль юм заахаа больсон гэж хүмүүс ярьдаг л юм. Боловсон хүчин дутмаг зэргээс болоод чадвар хир тааруу хүмүүс ордог л байх (бүх багш нар тийм биш л дээ). Гэхдээ балчир хүүхдүүдэд манай нийгмийн муу, муухай болгоныг ингэж биеэр зааж яах нь вэ. Ямар ухамсарын дорой түвшинтэй хүмүүс бидний үр хүүхдэд юм заагаад байнаа.

Би алгадсанд нь биш худлаа ярисанд нь бачимдсан гэдгээ ойлгуулах гэсэн боловч багш нь ойлгох шинжгүй байсан. Маргааш ирж уулз гэж даналзаж байна. Маргааш охиныг ховлолоо гэж дарамталж мэдэх хүн байна, тэр багш нь. Очиж уулзах хэрэгтэй болох нь. Уулзаад ч үр дүн нь хэр байх юм болдоо. Аймаар юм.

Tuesday, September 15, 2009

Ерланг: Дараалсан болон Зэрэгцээ кодын ажиллагааны харьцуулалт

Сонин болгоод өгөгдсөн N тоо хүртэлх төгс тоог олох програмыг шугаман байдлаар Ерланг дээр хийж үзэв.

-module(perfect_number).
-export([gen/1]).

gen(N) when N<6 -> [];
gen(N) ->
[P || P <-lists:seq(6,N,1), P=:=lists:sum([E || E <-lists:seq(1,P-1,1), P rem E == 0])].


Дараа нь энэ алгоритм дээр ямар ч өөрчлөлт хийлгүйгээр зөвхөн параллель ажиллагаатай болгов. Ө.х жагсаалт дэх нэг элементийг төгс тоо эсэхийг шалгаж байхтай зэрэгцэн дараагийн элементийг төгс эсэхийг шалгана гэсэн үг.

-module(perfect_number).
-export([gen_para/1]).

gen_para(N) when N<6 -> [];
gen_para(N) ->
lists:filter(fun(E) -> {X,Y}=E, X=:=Y end,
parmap(fun(P) -> {P, lists:sum([E || E <-lists:seq(1,P-1,1), P rem E == 0])} end, lists:seq(6,N))).

%% Map function F over list L in parallel.
parmap(F, L) ->
Parent = self(),
[receive {Pid, Result} -> Result end
|| Pid <- [spawn(fun() -> Parent ! {self(), F(X)} end) || X <- L]].



Хоёр цөмтэй процессор дээр бага тоо өгч ажиллуулахад энэ хоёрын хооронд бараг ялгаа харагдахгүй байна. Тоог ихэсгэхэд ажиллах хугацаа нь мэдэгдэхүйц ялгаатай болж байв.

Ямар ч гэсэн Ерланг нь олон процессоруудын хувьд давуу тал бий болгож байна. Диск төхөөрөмжийн хурдыг сайжруулчихвал олон цөмт процессор хүчтэй юмаа.

Monday, September 14, 2009

Multi core processor

Нэлээд их хэмжээний өгөгдөл дээр боловсруулалт хийдэг биллинг зэрэг системүүд дээр "хурд хурд бас дахин хурд" гэсэн зарчмыг барихаас өөр аргагүй болдог. Системийнхээ бүхий л эд эсүүдийг максимум хурд гаргахын тулд зохиомжлоно. Өгөгдлийн сан дээр оновчлолт хийнэ, алгоритмаа сайжруулна, илүү санагдсан бүх кодыг танана. Гэлээ гээд НЭГ КОМПЬЮТЕР-н хийж чадах ажлын хэр хэмжээ хязгаартай байдгийг ойлгосон юм.

Гэтэл байдал өөр болж байнаа... Нэг процессор дотор бүхэл бүтэн процессоруудын сүлжээ бий болгоод даалгаврыг нэгэн зэрэг гүйцэтгэж чадах олон цөмт процессорууд гарч ирсэн байна.

Dual core (2 core), Quad (4 core) гээд олон цөмтэй процессерууд зах зээл дээр аль хэдийн гарч ирсэн байна. Цаашлаад яаж хөгжих юм бол гээд нэт ухсан чинь 80 цөмтэй процессорын тухай бүр 2006 онд ярьж байсан байх юм.

Гэтэл бидний програмчлах хэв маяг дараалсан хандлагатай (sequential) байсаар л байна. Сүүлийн үеийн програмчлалын хэлүүдэд трэд зэрэг кодыг параллелиар (concurrent) ажиллуулах боломжууд байгаа боловч "санаанд хүрэхгүй" байна. Учир нь олон трэдүүд параллелиар ажилладаг гэх боловч цаана нь тэдгээрийн дунд нөөцийг эвдэхээргүй зохицуулалт хийх гэх мэтийн шалтгаанаас болоод дахиад "оочер" үүсгэнэ. Энэ "оочер" нь дахиад л нөгөө уламжлалт дараалсан кодоос илүү гарахгүй нөхцөл байдалд оруулна.

Аз болоход үүнийг эртээ мэдэж байсан хүмүүс олон цөмт процессоруудад зориулсан Ерланг нэртэй програмчлалын хэлийг гаргасан байх юм. Судлаад үзсэн чинь маш их таалагдав. Нэг л өөр юмаа. RAISE хэл дээр формаль код бичиж байсан маань санагдав. "Бүх зүйл бол процесс, Чиний амьдрал ч процесс, ОХП гэж байхгүй, Хувьсагч гэж байхгүй, Дундын санах ой гэж байхгүй, Яг бодит амьдрал дээр процесс яаж өрнөдөг, түүнийг дууриаж бод" гэнэ. Бүх зүйлийг процессоор сэтгээд бодсон чинь болж байнаа. Давгүй санагдаж байна. Зарим шугаман кодуудаа багахан өөрчлөлт хийгээд параллель ажилладаг болгон хурдыг нь харьцуулж үзэхэд илэрхий хурдтай ажиллаж байна.

Програмчлалын хандлага нэлээд өөр болох нээ...

C# .NET II Ном


C#.NET II номоо өнөөдрөөс худалдаанд гаргалаа. Номоо одоогоор Интерном, Билэг их дэлгүүр, Ачлал дэлгүүрүүд дээр тависан байгаа.

Энэ хоёрдугаар номонд ADO.NET, .NET Remoting, ASP.NET, Web service технологиудын талаар тайрбарласан. Виндоус, Линакс аль ч орчинд байсан ялгаагүй програмчлалын тулгуур ойлголтуудыг сайтар ойлгох нь чухал юм. Тэр утгаараа вэб програм, вэб үйлчилгээ, трэд, параллель програмчлал, өгөгдлийн сантай ажиллах тулгуур ойлголтуудыг энэ номоос мэдэж болно.