Ачааллж байна...
Өмнөх хичээлд бид Python бол компьютерт зааварчилгаа бичиж өгөхөд ашигладаг хэл гэж хэлсэн. Гэхдээ тэр өгүүлбэрийн цаана хоёр том асуулт нуугдаж байгаа: "зааварчилгаа" гэж чухам юу юм бэ, тэгээд компьютер тэр зааварчилгааг яаж "биелүүлдэг" юм бэ? Энэ хичээлд бид яг эдгээр асуултад хариулна. Энэ бол код бичихээс өмнөх сүүлчийн, хамгийн суурь ойлголтын хичээл бөгөөд магадгүй бүхэл сургалтын хамгийн чухал хичээлүүдийн нэг юм. Учир нь программ гэж юу болохыг зөв ойлгочихсон хүнд цаашдын бүх зүйл логиктой, тайлбарлагдахуйц харагддаг бол энэ суурьгүй хүнд код бичих нь ойлгомжгүй ид шидийн ёслол шиг санагдаж эхэлдэг. Бид ид шид биш, ойлголт дээр байшингаа барина.
Эхлээд нэг зүйлийг хүлээн зөвшөөрье: "компьютер хэрхэн ажилладаг вэ" гэдэг асуулт айдас төрүүлмээр сонсогддог. Компьютер дотор сая сая нарийн эд анги байдаг нь үнэн бөгөөд тэдгээрийг бүгдийг нь ойлгох шаардлага танд огт байхгүй — жолооч хүн машины хөдөлгүүрийн доторх бүх эд ангийг мэдэх албагүйтэй адил. Программист хүнд хэрэгтэй ойлголт нь үнэндээ ганцхан бөгөөд гайхмаар энгийн. Энэ хичээл бүхэлдээ тэр нэг ойлголтыг таны сэтгэлгээнд бат суулгахад зориулагдана.
Тэр ганц ойлголт нь энэ: компьютер бол юу ч ойлгодоггүй, юуг ч өөрөө шийддэггүй, зөвхөн өгсөн зааврыг биелүүлдэг машин юм. Энэ өгүүлбэрийг дахин нэг уншаарай, учир нь энэ бол программчлалын бүх ертөнцийн суурь чулуу. Бид өдөр тутамдаа "компьютер бодож байна", "утас минь намайг ойлгоод санал болгочихлоо" гэж ярьдаг ч энэ бол зүгээр л ярианы хэллэг. Бодит байдал дээр компьютерт бодол, ойлголт, санаа, хүсэл гэж огт байхгүй. Компьютер бол асар хурдтай, туйлын дуулгавартай, гэхдээ огтхон ч "ухаангүй" гүйцэтгэгч юм. Түүний хийж чаддаг цорын ганц зүйл бол хүний урьдчилан бичиж өгсөн зааврыг нэг нэгээр нь, бичсэн дарааллаар нь, асар хурдтайгаар биелүүлэх явдал билээ.
Тэгвэл программ гэж юу вэ гэдэг асуултын хариулт эндээс өөрөө урган гарна: программ бол компьютерт зориулж урьдчилан бичсэн, нарийн тодорхой зааварчилгааны цуврал юм. Өөр юу ч биш. Таны утсан дээрх аппликейшн бүр, тоглоом бүр, вэбсайт бүр — бүгд л хэн нэгэн хүний хаа нэгтээ суугаад бичсэн зааварчилгааны цуглуулга. Тоглоом "танд хариу үйлдэл үзүүлж байгаа" мэт харагдах нь тоглоом ухаантайдаа биш — түүнийг бичсэн хүн "хэрэв тоглогч энэ товчийг дарвал ингэ, хэрэв дүр хана мөргөвөл тэг" гэсэн мянга мянган нөхцөл байдлыг урьдчилан бодож, заавар болгон бичиж өгсөнд байгаа юм. Программист болно гэдэг нь яг ийм зааварчилгаа бичдэг хүн болно гэсэн үг.
Энэ ойлголтыг амьдралын хамгийн танил зүйлээр тайлбарлая: хоолны жор. Жор гэдэг бол хоол хийх зааварчилгааны цуврал — "гурил 200 грамм ав, ус 100 мл нэм, сайтар хутга, 20 минут жигнэ" гэх мэт алхмууд дараалсан бичвэр юм. Одоо төсөөлөөрэй: таны өмнө нэг тогооч байна. Тэр тогооч гайхалтай хурдан, хэзээ ч ядардаггүй, жорд бичсэн бүхнийг үг үсэгчлэн, яг таг биелүүлдэг. Гэхдээ тэр тогоочид нэг онцлог бий: тэр хоолны талаар өөрийн гэсэн ямар ч ойлголтгүй, ямар ч туршлагагүй, "эрүүл саруул ухаан" гэж нэрлэдэг зүйл огт байхгүй. Тэр зөвхөн жорд бичсэнийг л хийнэ — түүнээс илүү ч үгүй, дутуу ч үгүй. Энэ тогооч бол компьютер, жор бол программ, харин жор бичдэг хүн бол программист буюу удахгүй та өөрөө юм.
Энэ зүйрлэлийг жаахан цааш сунгая, учир нь хамгийн чухал сургамж нь яг энд байгаа. Хүн тогоочид "давс нэм" гэж бичихэд хангалттай — хүн тогооч хэр их давс болохыг туршлагаараа мэдэж, амталж үзээд тохируулна. Харин бидний ухаангүй тогоочид "давс нэм" гэж бичвэл юу болох вэ? Тэр гацна, эсвэл бүр аймшигтай нь — бүтэн уут давс хийчихэж магадгүй. Түүнд "давс 5 грамм нэм" гэж хэлэх ёстой. "Зуухнаас гарга" гэхэд хүн тогооч бээлий өмсөнө; ухаангүй тогооч нүцгэн гараараа халуун тавгийг барина, учир нь бээлийний тухай жорд бичээгүй байсан. Хүнд зориулсан зааварчилгаа дутуу байж болдог, учир нь хүн дутууг нь өөрийн ухаанаар нөхдөг. Компьютерт зориулсан зааварчилгаа бүрэн бөгөөд туйлын тодорхой байх ёстой, учир нь компьютерт нөхөх ухаан гэж байхгүй. Программчлал сурна гэдэг нь үнэндээ шинэ хэл цээжлэхээс илүүтэй, ийм бүрэн, тодорхой зааварчилгаа бичиж сурах сэтгэлгээний дасгал юм.
Энэ шинжийг эхэндээ компьютерын "тэнэглэл" гэж хүлээж авах хүн олон байдаг ч үнэндээ энэ бол компьютерын хамгийн том давуу тал гэдгийг хэлмээр байна. Компьютер таны зааврыг өөрийнхөөрөө "сайжруулдаггүй", таамагладаггүй, дур мэдэн өөрчилдөггүй учраас түүний үйлдэл зуун хувь урьдчилан таамаглагдахуйц байдаг. Зөв заавар өгвөл зөв үр дүн гарна — өнөөдөр ч, маргааш ч, сая дахь удаагаа ч мөн адил. Хэрэв үр дүн буруу гарвал шалтгаан нь үргэлж нэг газар байдаг: зааварчилгаанд. Энэ бол сайн мэдээ, учир нь зааварчилгааг бичсэн хүн нь та өөрөө тул засах эрх мэдэл бүхэлдээ таны гарт байна гэсэн үг. Өмнөх хичээлд "алдаа бол таны багш" гэж хэлсэн шалтгаан яг энд: алдаа гарлаа гэдэг нь компьютер эвдэрсэн ч гэсэн үг биш, та муу хүн гэсэн ч үг биш — зүгээр л зааварчилгааны хаа нэгтээ тодорхой бус, дутуу зүйл байна гэсэн мэдээлэл юм.
Одоо энэ ойлголтоо бодит амьдрал дээрээ тавьж үзье. Та өглөө сэрэхдээ утасныхаа сэрүүлгээр сэрдэг бол тэр сэрүүлэг бол программ: "цаг 07:00 болмогц энэ дууг тогтоосон чангаралтайгаар тогл, дэлгэц дээр унтраах товч харуул, товч дарагдвал дууг зогсоо" гэсэн зааврын цуврал хэн нэгний бичсэнээр ажиллаж байна. Та банкны аппликейшнээр мөнгө шилжүүлэхэд программ таны үлдэгдлийг шалгаж, хүрэлцэхгүй бол татгалзаж, хүрэлцвэл хоёр дансны тоог өөрчилж, танд баталгаажуулах мэдэгдэл илгээдэг — алхам бүр нь урьдчилан бичигдсэн заавар. Гэрлэн дохио солигдох, дэлгүүрийн касс үнэ нэмэх, автобусны хуваарь харуулах апп, таны дуртай тоглоом — эдгээр нь бүгд өөр өөр хүмүүсийн бичсэн зааварчилгааны цуврал бөгөөд та программын ертөнц дотор аль хэдийн амьдарч байгаа юм. Өөрчлөгдөх гэж буй ганц зүйл бол таны байр суурь: та зөвхөн хэрэглэгч байснаа, заавар бичдэг талд нь орж ирнэ.
Энд нэг урам өгөх ажиглалт бий. Та эдгээр программуудыг хэрэглэж байхдаа "энэ яаж ажилладаг бол" гэж гайхаж байсан бол одооноос тэр асуултын хариулт танд аажмаар ил болж эхэлнэ. Сургалт ахих тусам та утсан дээрх апп-уудыг хараад "аан, энд нөхцөл шалгаж байна", "энд жагсаалт дотор давталт хийж байна" гэж таньдаг болно. Энэ бол жинхэнэ программистын нүд бөгөөд тэр нүд код бичихээс өмнө, яг одоо, энэ ойлголтоос эхэлж тэлдэг юм.
Одоо сүүлчийн хэсгийг холбоё. Компьютер зааврыг биелүүлдэг гэж бид ярилаа — гэхдээ компьютерын "төрөлх хэл" нь үнэндээ хүний уншихад бараг боломжгүй зүйл юм. Компьютерын хамгийн гүнд бүх зүйл зөвхөн хоёрхон тэмдэгтээр — нэг ба тэгээр — илэрхийлэгддэг бөгөөд жинхэнэ "машины заавар" гэдэг бол 10110100 маягийн эцэс төгсгөлгүй урсгал билээ. Хэрэв хүн бүр программаа шууд ийм хэлбэрээр бичих ёстой байсан бол программист гэдэг мэргэжил дэлхий дээрх хамгийн ховор мэргэжил хэвээр үлдэх байсан биз. Азаар бичих шаардлагагүй.
Яг энд программчлалын хэлүүд, тэр дундаа Python бидэнд туслахаар орж ирдэг. Python бол хүн ба машины дунд зогсдог орчуулагч юм. Та зааврaa Python хэлээр — өмнөх хичээлд ярьсанчлан энгийн англи өгүүлбэртэй ойролцоо, хүний уншиж ойлгохуйц хэлбэрээр — бичнэ. Дараа нь Python таны бичсэнийг компьютерын ойлгодог түвшин рүү хөрвүүлж, биелүүлүүлдэг. Өөрөөр хэлбэл та монгол хэлтэй, компьютер зөвхөн "нэг-тэгийн" хэлтэй бол Python бол хоёулангийнх нь хэлийг гаргууд мэддэг, дундаж зогсож бүх яриаг дамжуулж өгдөг орчуулагч гэсэн үг. Программист хүн машины хэлийг мэдэх шаардлагагүй болдгийн нууц энэ — орчуулагч нь тэр ажлыг бүрэн хариуцдаг.
Ингээд өнгөрсөн гурван хичээлийн зураглал бүрэн холбогдлоо. Компьютер бол зааврыг ухаангүй боловч төгс биелүүлдэг гүйцэтгэгч. Программ бол түүнд зориулсан бүрэн, тодорхой зааварчилгааны цуврал. Python бол тэр зааврыг хүнд ойлгомжтой хэлбэрээр бичих боломж олгодог орчуулагч хэл. Харин та бол удахгүй тэр зааврыг бичиж эхлэх хүн. Танд одоо дутаад байгаа цорын ганц зүйл бол зааврaa бичээд туршиж үздэг ажлын талбай — яг үүнийг л дараагийн бүлэгт бэлдэнэ.
Компьютер юу ч ойлгодоггүй, юуг ч өөрөө шийддэггүй — зөвхөн өгсөн зааврыг дарааллаар нь, асар хурдтай биелүүлдэг.
Программ гэдэг бол компьютерт зориулж урьдчилан бичсэн, бүрэн бөгөөд туйлын тодорхой зааварчилгааны цуврал юм.
Хүнд зориулсан заавар дутуу байж болдог бол компьютерт зориулсан заавар бүрэн байх ёстой — учир нь компьютерт дутууг нөхөх ухаан байхгүй.
Таны утас, банк, тоглоом, сэрүүлэг — өдөр тутмын амьдрал тань хүмүүсийн бичсэн программуудаар дүүрэн.
Python бол хүний бичсэн зааврыг компьютерын ойлгох түвшин рүү хөрвүүлдэг "орчуулагч" хэл юм.
Дараагийн бүлэгт бид онолоос практик руу шилжинэ: юу ч суулгалгүйгээр, шууд browser дотроо анхны Python кодоо бичиж ажиллуулна. Тийм ээ — таны анхны код дараагийн хичээлд л бичигдэнэ.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.