2014/05/29

Компьютерын цагаан солиотнуудын өшөө авалт /Паул Грахам/

Паул Грахамын "Компьютерын цагаан солиотнуудын өшөө авалт" гэдэг эссэг уншаад таалагдав. Эхний хэсгээс нь орчуулан ядлаа.

Компьютерын Цагаан Солиотнуудын Өшөө Авалт


2002 оны 5-р сар


"Бид олон C++ хэлний програмистуудтай очиж уулзсан. Ихэнхийг нь Лисп хэл рүү оруулж чадсан."

- Жава хэл зохиолцсон Гаая Стийл.

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

Шовх үстэй дарга нарт хосгүй гайхамшигтай хоёр чанар байдаг. Гэхдээ хоёулаа байх нь ховор л доо. Тэдгээр нь: (а) технологийн тухай юу ч мэдэхгүй байх, (б) технологийн тухай туйлширсан бодолтой байх.



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


Яагаад ингэж бодож байгаа юм бол? Юу байх вэ, шууд шовх үстэй даргын тархи руу нэг өнгийгөөд үзье. Түүний бодож байгаа зүйл нь нэг иймэрхүү байна. Жава бол стандарт. Сонин, сэтгүүл унших бүрд энэ тухай бичсэн байдаг учраас ийм л байх ёстой юм байна гэдэг ойлголтыг авсан. Нэгэнт л стандарт юм чинь ашиглалаа гээд буруудахгүй. Дээр нь энэ чинь Жавагийн програмистууд олон болно гэсэн үг. Тийм болохоор юу хийж байгаа нь мэдэгдэхгүй байгаа програмистуудаа Жавагийн програмистуудаар төвөггүй сольж болно.


Яаж байна? Огт үндэслэлгүй дүгнэлт лав биш байгаа биз? Гэхдээ энэ бүх дүгнэлт нь бодит байдалд туйлын худал байдаг гайхамшигтай нэгэн ойлголтоос урган гардаг юм.  Тэр нь шовх үстэй дарга бүх хэлийг яг адилхан гэж боддог. Хэрэв энэ нь үнэн бол түүний түмэнтэй зөв. Хэрэв бүх хэл нь адилхан л юм бол ямар хэлээр хийлгэх нь ямар хамаа байна аа?
Харамсалтай нь бүх хэл ялгаатай бөгөөд би тэр олон хэлний онцлогуудын ялгааг огт тайлбарлахгүйгээр батлан харуулж чадна гэж бодож байна. Хэрвээ та шовх үстэй даргаас 1992 онд програмыг ямар хэлээр бичдэг байсан бэ? гэж асуувал тэр жаахан эргэлзэнгүйгээр хариулна. Програм хангамжийг С++ хэлээр бичдэг байсан. Тэгвэл бүх хэл адилхан л юм бол яагаад манай шовх үстэй даргын бодол нь өөрчлөгдсөн юм бол? Ер нь Жава гэдэг хэлийг зохиох шаардлагатай ч байсан юм уу даа?


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


Тэгэхээр хэнийх нь зөв юм бэ? Жеймс Гослин уу? эсвэл шовх үстэй дарга уу? Бодох зүйлгүйгээр Гослины зөв. Зарим хэлнүүд зарим бодлогуудад бусдаасаа илүү сайн байдаг. Эндээс зарим нэг сонирхолтой асуултууд гарч ирнэ. Жава нь зарим бодлогуудыг С++-ээс илүү боддог байхаар хийгдсэн нь гарцаагүй боллоо. Харин ямар бодлогууд байх уу? Ямард нь Жава илүү, ямард нь С++? Мөн бодлогыг энэ хоёроос илүү сайн боддог хэл байна уу?

Энэ асуултыг өөртөө тавьж эхэлснээр жинхэнэ өттэй лааз онгойлгож байгаа нь энэ дээ. Хэрэв өнөөх шовх үстэй дарга маань энэ тухай бодох юм бол тархи нь жинхэнэ дэлбэ үсэрнэ. Нэгэнт бүх хэлийг адилхан гэж боддог даргын маань хувьд хамгийн эрэлттэй нэг хэлийг сонгохоос өөр яалтай билээ? Технологиос илүүтэй хэлбэр хөөсөн тул манай дарга хүссэн сэтгэл ханамжаа авах биз. Харин эсрэгээр нь бүх хэл ялгаатай гэвэл манай дарга өөрөө огт мэдэхгүй хоёр тэнцэтгэлийг нэгэн зэрэг бодож энэ хоёрын хамгийн тэнцвэртэй зохицлыг эрэх байлаа. Тэр хоёр нь: 20-р зууныхантайгаа эвлэрэх, нөгөө нь өөртөө хэрэгтэй шинэ хэлийг сонгож, тохирох програмистууд, сан, гэх мэт, бүгдийг нь нэг бүрчлэн хайж олох. Лаазны дотор ийм зүйл байгаа гэдгийг мэдвэл шовх үстэй дарга маань онгойлгох нь юу л бол.


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


Би Жаваг дажгүй сайн гэдгийг мэднэ. Учир нь шинэ програмчлалын хэл, ёстой янзтай. Тийм биз дээ? Жаахан зайнаас програмчлалын хэлний ертөнцийг ажваас Жава нь хамгийн залуухан хар хүү харагдана. (Нэлээн холоос харах юм бол Сан (Sun) компанийн цацаж буй мөнгийг тод томруунаар харна.) Харин энэ ертөнцийг бүүр ойрхноос харах юм бол энэ галзуурлын халуун огт байхгүй байхыг олж харна.  Хакеруудын ертөнцөд Жавагаас илүү цоглог гэгддэг Перл хэл гэж байна. Жишээ нь http://slashdot.org/ Перл хэлээр хийгдсэн. Энэ сайтын залуус Java Server Pages-ийг ашиглаж чадахгүй дээ ингэж хийсэн гэж бодохгүй л байна. Бас үүнээс өөр Пайтон гэдэг шинэ хэлний нөхдүүд Перлийг басна.


Эдгээр хэлнүүдийг Жава, Перл, Пайтон гэж эрэмбэлэх юм бол их сонирхолтой зураг ажиглагдана. Хэрэв та Лисп хакер бол бүр сайн анзаарсан байх ёстой. Эдгээр хэл бүр эрчимтэйгээр Лисп хэл шиг болж байна. Пайтоны ингэж их хуулахыг олон Лисп хакерууд буруу гэж үздэг. Та энгийн Лисп програмуудын нэг мөрийг Пайтоны нэг мөр байхаар хөрвүүлж чадна. Энэ чинь 2002 он, 1958 оны хэлийг өнөөгийн програмчлалын хэлнүүд арай гэж гүйцэх гэж байна.


Математикаар гүйцэхүй


Миний хэлэх гэсэн санаа бол 1958 онд Жон Маккарти Лисп хэлийг зохиосон буюу өнөөгийн түгээмэл програмчлалын хэлнүүд маань дөнгөж одоо л Лиспийн түвшинд очих гэж байна.


Хүүеэ, яаж ийм байж болох юм бэ? Орчин цагт компьютерын технологи чинь үсрэнгүй хөгжөөгүйсэн билүү? 1958 онд компьютерууд чинь бугуйн цагийн төдий хүчин чадалтай хөргөгчний дайтай аварга байсан шүү дээ. Яаж нэг технологи сүүлийн үеийн хөгжлөөс хол илүү давсан хэвээрээ удаан байж болоод байна аа?

Яаж гэдгийг нь одоо хэлж өгье. Учир нь Лисп хэл зүгээр нэг програмчлалын хэл байхаар зохиогдоогүй, өнөөдөр бидний төсөөлж байгаагаар л лав биш. Бид програмчлалын хэл гэдгийг компьютерт юу хийхийг хэлж өгдөг зүйл гэж ойлгодог. Маккарти анх энэ утгаар нь л програмчлалын хэлээ зохиосон боловч түүний Турины Машинд нийцүүлэхээр зорьж хийсэн онолын ажил нь Лиспийг шал тусдаа зүйл болгон хувиргасан юм. Маккарти сүүлд хэлэхдээ:Лиспийг Турины машинаас илүү болсныг харуулах нэг зүйл нь ерөнхий Лиспийн функц буюу тэр нь ерөнхий Турины машины тодорхойлолтоос илүү энгийн, илүү нарийн гэдгээ харуулсан юм. Тэр Лиспийн функц нь Лиспийн илэрхийлэлийг боддог eval... байсан юм. eval-ийг бичихэд Лиспийн дата байхаар Лиспийн функцуудээр илэрхийлэх тэмдэглэгээг бий болгох хэрэгтэй болсон бөгөөд энэ тэмдэглэгээ нь Лиспийн програмуудыг цаасан дээр бичиж тэмдэглэх зорилгоор бүтээгдсэн юм.Дараа нь болсон зүйл нь, хэсэг хугацааны дараа буюу 1958 оны сүүлчээр Маккартигийн нэг оюутан Стив Рассел eval функцийг нь хараад, хэрэв үүнийг машины хэл рүү хөрвүүлчих юм бол үр дүнд нь Лиспийн хөрвүүлэгч бий болох юм байна гэдгийг олж харжээ.


Энэ бол тухайн үедээ ёстой гэнэтийн бэлэг болсон юм. Маккарти сүүлд энэ тухай ярилцлагадаа дурдахдаа:Стив Рассел хэлэхдээ, хардаа, энэ eval-ийг яагаад програмчлаж болохгүй гэж..., тэгэхэд би ингэж хариулсан юм, чи онол практикаа холиод байна, энэ eval бол цааснаас уншихад зориулсан болохоос тооцолоход биш. Гэвч тэр өөрийнхөөрөө хийсэн, хийж ч чадсан. Тэр миний эрдмийн ажлын цаасан дээрх eval-ийг [IBM] 704 машины код руу хөрвүүлж түүнийгээ Лиспийн хөрвүүлэгч гэж нэрлэж байлаа. Тэр нь үнэхээр тийм байсан юм. Тэндээс л Лиспийн өнөөгийн төрх бий болсон юм....Эндээс харахад гэнэт л Маккарти өөрийн онолын ажлаа жинхэнэ програмчлалын хэл болгосон. Тэр нь түүний зохиосноос илүү хүчирхэг болсон.


1950-аад оны хэл өдгөөг хүртэл хэрэглээнээс гарахгүй байгаагийн товч тайлбар нь энэ хэл бол технологи бус математик байсан юм. Математик хэзээ ч хуучирдаггүй юм. Лиспийг харьцуулж болох тохирох зүйл нь 1950-аад оны техник хангамж бус харин "Хурдан эрэмбэлэлт" алгоритм юм. 1960 онд зохиогдсон боловч одоо болтол хамгийн хурдан эрэмбэлэлт байсаар л байна.


1950 оныхноос бас ганц үлдсэн хэл нь Фортран юм байна. Лисп онол байж байгаад гэнэт програмчлалын хэл болсон. Фортран анхнаасаа програмчлалын хэл байгаад одоо доод түвшний програмчлалын хэл гэгддэг болсон.


Фортран I хэл 1956 онд бүтээгдэхдээ өнөөгийн Фортранаас шал өөр амьтан байсан юм. Фортран I бол математиктай ассемблер хэл шиг байсан. Зарим талаараа өнөөгийн ассемблер хэлнүүдээс ч муу байсан юм; дэд програм гэж байхгүй зөвхөн салаалах үйлдэлтэй байсан. Орчин цагийн Фортран маргаангүй Фортран I-ээсээ илүү Лисптэй адилхан болсон.
Лисп Фортран хоёр бол нэг математик суурь үндэстэй, нэг машины архитектур дээр бий болсон хоёр тусдаа хувьссан модны ишнүүд юм. Энэ хоёр ишнүүд улам ойртсоор л байна. Лисп улам хүчирхэг болсоор сүүлийн хорин жилд бүүр хурдан болсон. Мөнхүү бусад хэлүүд ч хурдан болсоор, сүүлийн дөчин жилд илүү хүчтэй болсоор зарим нь Лисп рүү бараг дөхөж очиж байна. Маш ойрхон очсон ч бас дутуу зүйлс байсаар л.... 


Үргэлжлэл бий....

Эх сурвалж: http://www.paulgraham.com/icad.html

No comments:

Post a Comment