2015/01/06

С ба Unix-ийн Yнэн түүх


Би анх энэ нийтлэлийг програмчлалын франц хэл дээрх сэтгүүлээс Pascal-н дурсгалд зориулж бичсэнийг уншиж байлаа. Сэтгүүлээс уг нийтлэлийг "from a US BBS" хэмээн тэмдэглэсэн байсан. Интернэтээс олох гэж нэлээн махран зүтгэсний хүчээр олж авсанаа мартахгүй гэж өөрийнхөө хуудсан дээр хадаж, жинхэнэ Yнэнийг ирээдүй үед хадгалж байхаар шийдлээ.

С ба Unix ийн үнэн түүх

Ken Thompson, Dennis Ritchie болон Brian Kernighan нарын зарласан Unix үйлдлийн систем болон C програмын хэл нь тухайн үедээ компьютер хэрэглэдэг үйлдвэр байгууллагуудыг цочоон гайхуулж, эдүгээ одоо болтол 20 гаран жил өнгөрчээ. Саяхны UnixWorld Development чуулган дээр Thompson дараах зүйлийг дэлгэж ярьсан юм:

1969 онд GE/Honeywell/AT&T Multics гэсэн төслөө AT&T дөнгөж дуусгаад байлаа. Brian бид хоёр Профессор Niklaus Wirth-н зохисон Pascal хэлний анхдагч хувилбарыг бүтээхэд туслахаар Швейцар улс дахь ETH лабораторд нь ажиллаж эхэлж байсан үе. Dennis тэр үед Tolkien-ий 'Lord of the Rings' хэмээх гурван ботийг элэглэж хошигносон 'Bored of the Rings' номыг дөнгөж дуусгасан байлаа. Ингээд зүгээр л зугаа болгож Multics систем болон Pascal хэлийг хошигносон юм бүтээхээр шийдэв. Dennis бид хоёр үйлдлийн систем орчныг нь хариуцаж авав. Бид хоёр Multics системийг судлаад хэрэглэгчийн уур уцаарыг дэд хэмжээнд тулгаж болохуйц төвөгтэй нууцлаг шинэ үйлдлийн систем бүтээж Multics нэрийг элэглэн Unix гэж нэрлэв. Туршин хэрэглэх сонирхолтой хүмүүсд цөөн хэдэн тушаал бэлдэж өгөөд үүнийгээ та нарыг удаан урт бичихээс чинь чөлөөлж байгаа юм хэмээн тайлбарладаг байв.

Дараа нь Dennis Brian хоёр Pascal-н нэлээн муу эвдэрхий хувилбарыг бэлдээд 'A' гэж нэр өглөө. 'A' хэл Pascal-тай нэлээн төстэй байлаа. Тухайн үедээ Pascal хэлний санах ой руу шууд ханддаг ( Wirth сүүлд нь энэ чанарыг нь хассан ) шинж чанарыг нь 'A' хэлний гол цөм ухагдахуун болгосон байсан. Үнэхээр аюултай муухай бүтэц бүтээх аргаа нууж 'pointer' хэмээх цэвэрхэн нэр томъёог бүтээж оруулсан хүн бол Dennis байв.

Ямар ч стандартад нийцэхгүй I/O оролт гаралтын журам гаргасан Brian-ыг бараг шагнахаар байв. Ингэснээр хэн нэгэн хэрэв төхөөрөмжөө солих тохиолдолд үйлдлийн системтэйгээ зохицуулахын тулд ердийн худалдаанд байдаг програмын бараг 50 хувийг нь шинээр кодлох ёстой болгосон юм. Ингэж I/O ийг нь үгүй болгосноо тухайн системийн шинж чанар болгож зарлахыг Brian сэдсэн бөгөөд энэ нь уг програмын хэлийг "truly portable" буюу ямар ч төхөөрөмж дээр ажилладаг хэмээн сурталчлахад хэрэгддэг болов. Өөр хүмүүс А хэлээр бүр жинхэнэ програм бичээд байгааг бид мэдэнгүүтээ функцийн аргументийн төрлийг шалгадаг (type-checking) нэн шаардлагатай байсан боломжийг хасаж хаяв. Сүүлд нь бид өөрсдөө "casting" гэж нэрлэдэг байсан тэмдэглэл шинээр нэмээд, энэ нь програм бичигч хүнд integer тоог 50kb хэмжээтэй хэрэглэгчид зориулсан зай мэт хандаж болдог болгов. Дараа нь зарим програм бичигч хүмүүс pointer ашиглахгүй програм бичээд байгааг бид мэдэнгүүтээ функц рүү энгийн дамжуулалт хийдэг байсан бүтцийг алга болгож энгийн програм бичихээр байсан ч pointer хэрэглэдэг болголоо. Энэ хэлээ бид зардаг байлаа. Хэлний үр бүтээмжийг сайжруулагч хэмээсэн янз бүрийн шинж чанаруудыг ч бас зардаг байлаа. Энэ замаар бидний хагас хугас хэл B, BCPL хэмээн нэрлэгдэж өөрчлөгдсөөр төгсгөлд нь С болсон юм. Ингэж нэрлэж өөрчлөх явцыг бид дараах бичлэгийг цэвэрхэн хөрвүүлж компайлдсан үед л зогсоосон:

for (;P("\n"),R-;P("|"))for(e=3DC;e-;P("_"+(*u++/8)%2))P("|"+(*u/4)%2);

Нэг удаа бид энэ хэлээрээ тохуу хийж Зөвлөлт улсын компьютерийн хөгжлийг 20, бүр түүнээс ч олон жилээр ухраахаар тэдэнд зарж байлаа.

Харамсалтай нь AT&T болон америкийн бусад корпорациуд Unix болон С хэлийг хэрэглэж эхлэв. Бид энэ тухай амаа хамхихаар шийдэж энэ бүх явцыг түр зуурынх болно тооцсон. Гэтэл үнэн хэрэгтээ 1960 аад оны элэглэж бүтээсэн технологиор хэрэглэж болохоор програм бичиж чаддаг хангалттай мэргэжлийн хүмүүсийг америкийн компаниуд 20 гаран жилд бүтээдэг болов. Ердийн Unix систем дээр C програм бичиж байгаа програмист хүмүүсийн шаргуу бууж өгөхгүй байгаа чанар биднийг гайхшруулж байлаа. Үнэнийг хэлэхэд Brian, Dennis бид хэд энэ үйлдлийн систем дээр хэзээ ч албан ёсны програм бичих оролдлого хийгээгүй.

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

Dennis Ritchie нэг удаа: "Bjarne Stroustrup бидний онигоог мэдсэн нь үнэхээр балиар юм болов (тэр үед дөнгөж AIDA үүсэж байх үе ). Цаадах чинь бүр өнөөх хошигнолыг цаашлуулаад Smalltalk бүтээчихлээ. Тэгээд хэн ч инээхгүй байхыг хараад их гайхаж байсан, яг бид нар шиг. Тэгэхээр нь цаадах чинь бүр multiple inheritance, virtual base classes мөн сүүлд нь templates хүртэл нэмчихсэн. Ерөөсөө хэн ч хэрэглэхээргүй болгох гэж. Одоо тэгээд бидэнд 100.000 мөртэй кодыг секундын дотор хөрвүүлчихдэг компайлер байгаа мөртлөө Hello World гэсэн үг гаргахын тулд header файлуудыг нь 25 минутын турш боловсруулж байна" гэж билээ.

Thompson-ы энэ Yнэнийг илчилсэн ярианы дараа гол гол Unix болон С хэл борлуулж түгээдэг байгууллагууд AT&T, Microsoft, Hewlett-Packard, GTE, NCR мөн DEC тэр үед ямар нэгэн тайлбар өгөхөөс татгалзсан юм. Харин алдарт Turbo Pascal болон Borland C++ хэмээх обьект хандалтад програмчлалаар тэргүүлэх байранд явдаг бүтээгдэхүүн зарагч Borland International байгууллага энэ бүхнийг нэлээн хэдэн жил сэжиглэж байсан хэмээн мэдэгдсэн. Үнэнийг хэлэхэд Windows дээр ажилладаг Quattro Pro програм анх C++ дээр бичигдсэн байлаа. Тэр үед хөгжүүлэгч байсан Phippe Kahn: "Хоёр жил хагас програмчилж, маш олон програмистууд burn-out болж мэдрэлтэх үед бид бүх юмаа Turbo Pascal дээр шинээр бичээд гуравхан сарын дотор дуусгаж байлаа. Turbo Pascal тэр үед бидний аминд орсон гэдгийг шударгаар хэлэх нь зүйтэй" гэж хэлж байсан. Бас Borland ийн хэвлэлийн төлөөлөгч нь Pascal бүтээгдэхүүнээ цаашид илүү сайжруулан хөгжүүлж C/C++ бүтээгдэхүүндээ хагас анхаарлаа хандуулах болно гэж мэдээлсэн.

Харин Pascal, Modula2 мөн Oberon гэх мэт хэлний эцэг болох ETH институтын профессор Wirth "P.T. Barnum-ын зөв байсан" гэсэн нууцлаг өгүүлбэрээс өөр ямар ч тайлбар тавиагүй билээ.

Эх хувилбарыг нь эндээс уншаарай.

6 comments:

  1. https://www.gnu.org/fun/jokes/unix-hoax.html

    ReplyDelete
  2. Google translate ashiglatsan yum shig hudlaa orchuulsan bn

    ReplyDelete
    Replies
    1. харин нэг л ойлгомжгүй байна.

      Delete
    2. @Anonymous, алдаа байвал залруулна уу.

      @Сониуч, Ken Thompson, Dennis Ritchie, Brian Kernighan гэдэг хүмүүсийг таньж мэдэхгүй бол энэ онигоог ойлгоход хэцүү л дээ :)

      Delete
  3. hi bugd yaagaad jiliin tursh bichleg oruulahgui baigaa yum be? huleeseer l baigaa shuu.

    ReplyDelete
  4. Би та бүхний мэддэггийг мэддэггүй болохоороо энд үргэлж зочилдог юм. Яагаад таг чиг болчихов оо? Надад нэг санаа байгаад байдаг. Та бүхэнтэй л ярилцах хэрэгтэй байна даа.

    ReplyDelete