Номонд хорхойтой IT-ийнхэн болон хэвлэлийн бизнесийнхэн наашаа суугаарай ;) Та бидний сайн мэдэх "Прагматик номын сан" цувралыг эрхлэн гаргагчдын нэг Дэйв Томастай хийсэн нэн сонирхолтой ярилцлагыг чадлын хэмжээнд орчуулан хүргэж байна. Дэйв нь антрепренераас гадна програм хангамжийн ертөнц, тэр дундаа Руби болон Рэйлсийн бүлгэмд ихээхэн нэр нөлөөтэй нэгэн билээ. Бид түүнийг олон сайхан ном, нийтлэлээр нь эчнээ танина.
Сурвалжлагч буюу Сатиш Талим нь IT-ийн салбарт 32+ жилийн ажлын туршлагатай, Рубийн бүлгэмд ихээхэн нэр хүндтэй, програмч, лектор хүн юм байна. Руби програмчдад зориулсан rubylearning.com хэмээх маш сайхан сайт ажиллуулдаг. Мөн энэ сайтын блог буланд хэрэгтэй мэдээлэл олон байна билээ.
Ер нь эдгээр эрхмүүдийн үнэ цэнийн талаар workingwithrails.com-оос магадлан үзэх боломжтой. Ихээ дээгүүр давхидаг нөхдүүд бий ;) Орчуулгын хувьд санал хүсэлтийг дуртайяа хүлээн авна.
Мөн хэвлэлийн бизнес манайд ойрын ирээдүйд ямар өнгө төрхтэй болох бол? гэж дотроо олон янзаар төсөөлж суулаа. Хэвлэнэ гэдэг ч нарийн чимхлүүр, ажиллагаа ихтэй бизнес юм билээ. Харин автоматжуулчихвал?
Автоматжуулах зүйл байна уу? Хийгээд өгье ;)
Сатиш» Дэйв, өөрийнхөө тухай, хаана өсч төрсөн, одоо ямар алба хашиж байгаа талаараа бидэнд ярих уу?Дэйв
» Би Английн Чеширт[1] мэндэлсэн(Ливэрпүүлд өссөн). Бага байхад гэрийнхэн маань Канад, АНУ-д ажиллаж амьдарч байгаад, дунд сургуульд орохын минь үед эргээд Англи руу нүүсэн. Одоо санахнээ сургуульд шалтгалт авч, хүүхдүүдийг 2 бүлэгт (O бүлэг - 15/16 оноо, A бүлэг - 18 оноо) хуваан хичээл ордог байсан. Би нэлээд хэдэн хүүхдийн хамтаар O бүлэгт орчихлоо. Сургуулийн захиргаа ч маниудыг завгүй шамдуулахын төлөө олон зүйл сэддэг байжээ. Дүүргийн коллежд A түвшний(бүлэг) компьютерийн курс нээгдэх үест мань хэд ч далийж яваад, давхиад орлоо.
За тэгээд, долоо хоног өнгөрөв үү, гүй юу компьютерт дурлаж эхэлдэг юм байна. ASR-33 телетайпаар програмаа цаасан дээр цохиод, 110 бадын модемоор дүүргийн ICL мэйнфрэйм рүү илгээдэг байлаа шүү дэ, үнэхээр гайхалтай. Тухайн үед мэйнфрэйм дээр зөвхөн 5 хүртэлх тооны програм хадгалахыг зөвшөөрдөг байлаа. Ийм хязгаарлалттай болохоор явцын дунд өөр програмыг өөртөө агуулдаг, түүнийгээ гаргаад ажиллуулчихдаг нэг програм бичсэн, магадгүй энэ тухайн үедээ өөрөө
өөрийгөө програмчилдаг дэлхий дээрх цорын ганц BASIC програм байсан байх ;)
Дараа зун нь дүүргийн усны газарт програмын ажил хийлээ. Удалгүй мэргэжлээ математикаас компьютерийн ухаан руу сольё гэж бодох болсноор Лондоны Империал Коллежд элсэн суралцсан. Эргээд харахад тэнд өнгөрүүлсэн
хором бүр гайхалтай, өгөөжтэй байсан санагддаг юм(статистикийн хичээлээс бусдаар).
Сургуулиа төгсөөд дөнгөж байгуулагдсан жижиг компанид ажилд орлоо. Алба маань эхэн үес Англид төвлөрч байгаад, тун удалгүй дэлхийн улс орнуудаар явж ажилладаг болов. Бид нүсэр системийг хооронд нь, бас өөр бусад терминальтай(зарим нь веб толилуурын өмнөх хувилбар байсан байх) холбох шаггүй төвөгтэй ажил нэлээд хийсэн. Энэ бүхэн үнэхээр сонирхолтой. Мөн Британийн компьютер үйлдвэрлэдэг жижиг компанид янз бүрийн зүйл хийж өгч байлаа. Магадгүй энэ бүгдээс хамгийн сонирхолтой нь Халли сүүлт од руу илгээдэг Жиотто хиймэл дагуулын тоногт зориулж бүтээсэн жижиг интерфэйс байсан байх.
Нью-Иоркт төсөл дээр ажиллаж байгаад эхнэртэйгээ танилцсан. Удалгүй бид гэрлэж, эхнэр маань надтай цуг Англи явсан. Хүүтэй болоод Далласт(Техас муж, АНУ) ирж суурьшсанаас хойш даруй 15 жил өнгөрчээ.
Энди Хантын[2] хувьд бид 90-ээд оны дунд үест мөн төсөл дээр хамт ажиллаж байлаа, үүнээс хойш өнөөдрийг хүртэл мөр зэрэгцэн хөдөлмөрлөж явна. Хоёул нийлээд "Прагматик Програмч"[3] нэртэй ном бичсэн, компаниа ч мөн ингэж нэрлэсэн. Номыг бүтээх явцад боловсруулсан жор технологийг ашиглаад бид төд удалгүй, хэдхэн жилийн дараагаар хэвлэлийн бизнес эрхэлж эхэлсэн. Энэ маань яв явсаар, бидний
үндсэн ажил маань болж хувирч байх шиг байна. Гэхдээ яалтгүй хорхойтой болохоор програм бичихэд цаг зав бас гаргана аа.
Сатиш» "Programming Ruby 1.9"-г хэнд зориулсан бэ? Рубийн сурах бичиг үү, лавлах материал уу, энэ хоёрын аль нь вэ?Дэйв
» Өмнөх хэвлэлт болон бас бусад зүйлийн талаар жаахан түүх өгүүлье. Рубийн талаар олж мэдсэн маань
10 жилийн өмнөх. Тухайн үед Японоос өөр газар мэддэг, ядахнээ дуулсан хүн байгаагүй байх. Энди бид хоёр уул нь нэг ном эхлүүлээд, эх бэлтгэх, автоматжуулах ажилдаа Рубийг ашиглаж байлаа. Нэг харахнээ Рубийн талаар бичсэн, тэмдэглэсэн зүйлс маань яг номын дайны болоод ирсэн тул, өмнөх ажлаа түр хойш тавиад, тэмдэглэлээ үргэлжлүүлсэн. Ер нь бол Руби сурахаар эрмэлзэж буй програмч хүнд зориулж бичсэн л дэ. Бас өөрсдөө ашиглаж байхаар: гол онцлогуудыг гүйлгээд харахаар, доороос нь(хувьсагч, if нөхцөл г.м) бус дээрээс нь(класс, обьект г.м) эхлэхээр. Мөн Руби програмчлалын орчны талаар: ялангуяа бодит практик, өдөр тутмын амьдралд хэрхэн ашиглах талаар. Рубийн класс, методуудыг мөн баримтжуулсан гэхээр ном маань хэд хэдэн номны бүрдэл ч юм шиг. Ямартай ч програм бичиж байсан туршлагатай хүнд бол ойлгомжтой, өгөөжтэй байх нь гарцаагүй. Сурах бичиг ч болно, хавсралт материал ч болно гэсэн үг юм.
Сатиш» Энэ ном маань эхний хэвлэлтээс юугаараа онцлог вэ?Дэйв
» Маш их зүйлээр! 1.9 хувилбарт маш
олон сайхан боломж нэмэгдсэн шүү дэ, тэгэхээр яах аргагүй Рубийн болц байж таарна. Хуучин даяаршил(internationalization) гэдэг зүйлээр тун ядмаг байсан бол, одоо хавьгүй дээр болсон. Мундаг олон класс, методууд нэмэгдсэн. Би яс тоолж үзээгүй л дэ, багцаагаар заяамал(built-in) методууд өмнөхтэй харьцуулахад лавтай 2 дахин нэмэгдсэн байх.
Мөн түүнчлэн эхний хэвлэлээс хойш Рубийн бүлгэм, хэрэглэгчдийн далайц ихээ өөрчлөгдсөн. Ашигладаг хүн бараг байгаагүй үед, яаж хэргийг нь гаргах талаар бичнэ гэдэг ч бүрхэг байлаа шүү дэ. Ер нь бол мэдэх бүх зүйлээ л энэ номонд шингээхийг зорьсон. Одоо ч харьцангүй олон хүн мэддэг, хэрэглэдэг болж дэ.
Өнөөг хүртэл номтой холбоотой олон сайхан санал, зөвлөмж авсны дүнд аливааг тайлбарлах, таниулан бичих чадвар маань чамгүй дээшилсэн болов уу гэж хувьдаа их олзуурхаж сууна. Энэ удаагийн хэвлэлд хавсралт материалуудыг нэлээдгүй шинэчилж, бодит жишээгээр баяжуулж өгсөн. Ер нь бол чамлахааргүй сайн болсон гэж бодож байгаа шүү.
Нэг зүйлийг сонин болгож хэлэхэд "Programming Ruby 1.9" ном өмнөхийнхээ шинэ хэвлэлт нь бас биш ч юм шиг. Учрыг тайлбарлая. Рубийн шинэ хувилбар болох 1.9 нь 1.8-аа ерөнхийдөө шахах болов уу гэж бодож байлаа, гайхалтай нь одоо болтол 1.8 өргөнөөр ашиглагдаж байна. Номын шинэ хэвлэлт гарахад хуучныг нь лангуунаас татдаг, яалтгүй хэрэглээ байгаа учраас үлдээхээр болсон. Тэгэхээр "Programming Ruby 1.9"-ийг шинэ хэвлэлт гэхээсээ цоо шинэ тусдаа ном гэвэл болохоор байгаа биз?
Сатиш» "Прагматик номын сан"-гийн талаар?Дэйв
» "Addison Wesley" хэвлэлийн газартай гэрээтэйн үндсэн дээр "The Pragmatic Programmer" болон "Programming Ruby"-ийн анхны хэвлэлийг Дэйвийн хамтаар бичсэн. Бусад зохиогчоос ялгаатай нь фонт серифт, үлгэр, индеклэлт гэх мэт хэвлэлийн бүхий л ажлыг бид
өөрсдөө хийсэн.
Ерөнхийдөө энэ ажлаар ном боловсруулах системийн
ихэнхийг босгож авсан. Техникийн чиглэлийн ном зохиогчдын гаргадаг алдааг аль болох давтахгүйг хичээж байлаа. Номонд ашиглах соорс кодыг "copy+paste" хийгээд орхих бус жинхэнэ ажилладаг, тэр байтугай автомат тестээр
соригддог байлгахыг хүссэн. Мөн номын агуулгыг соорс контроль, grep, diff зэрэг програмчийн багажаар удирдахыг хүссэн, өөрөөр хэлбэл хэвлэлийн эх маань цэвэр текст хэлбэрээр хадгалагдана гэсэн үг. Үүний зэрэгцээ эвтэйхэн формат, өнгө будагтай байлгахыг ч бодолцсон.
Номоо дуусгаад бид консалтингийн ажилдаа эргэн орлоо. Ажиглаад байхад програм хангамжийн төслийг амжилттай дуусгахад зайлшгүй шаардлагатай хүчин зүйлс болох
нэгжийн сорил,
соорс кодын удирдлага,
автоматжуулалт зэрэг зүйлсийг ихэнх компаниуд хэрэгжүүлдэггүй нь гайхал төрүүлж байлаа. Ингээд эдгээрийг хөндсөн гурван ч ном бичиж эхэлсэн. "Addison Wesley"-тэй хамтарч гаргах байсан ч, бид бодлоо: Нэгэнт ном бүтээх технологи нь бидэнд байна, хэвлэлтэд өгөөд л, борлуулалтаа хийчихвэл болох юм биш үү гэж бодсон. Хэр хэцүү бол?
Ингээд л хийсэн дэ. Үнэндээ эдгээр ажилууд тийм ч зөөлөн боорцог биш болохыг одоо ч алхам тутамдаа мэдэрч байна ;)
Гэхдээ бид чадсан. "Прагматик номын сан" бусдаас ялгаатай. Эхнээсээ л бид
хөгжүүлэгчдэд чиглэсэн хэвлэлийн газар болохыг зорьсон. Бид хөгжүүлэгчийн багаж хэрэгслийг ашиглаж ном бүтээж байлаа. Зохиогчоор шинээр бүртгүүлэх тохиолдолд бид номоо бичих Subversion репо[4] үүсгэнэ. Текст засахдаа Word мэтийн програм хэрэглэхгүй шүү дэ. Үүний оронд эцсийн бүтээгдэхүүнийг бийлд хийх орц буюу маркап хэлээр шууд бичнэ. Зохиогчоос текстийг нь аваад, өөр хэн нэгнээр өрүүлэхээс энэ ихээхэн ялгаатай. Үүний ч үрээр манайхаар ном хэвлүүлэх нь өөр хаа ч байхгүй хурдан болсон. Хэрвээ зохиогч хүсвэл, хамгийн сүүлийн хувилбарыг дурын үедээ бийлд хийгээд л гаргаад авна, яг л принтерт комманд өгдөг шиг. Аль эсвэл автомат бийлдийн системээр тогтсон цагт гаргуулсан ч болох.
Бид ер нь автоматжуулах боломжтой юу байна вэ, бүгдийг автоматжуулсан. Жишээ нь зохиогч номынхоо сүүлийн хувилбарыг уншигчиддаа хүргэмээр байя гэж саная, тэгвэл ганцхан rake[5] комманд бичээд л номын pdf, mobi, epub[6] хувилбаруудыг интернэтэд байршуулах жишээтэй.
Эдгээр их олон
автоматжуулалт, багажийн хүчээр бид ажилчдыг цөөн тоонд барьж чадсан. Үүний дүнд ном зохиогчийн гар дээр бузгай мөнгө тавьж таарна. Ер нь бол бусад хэвлэлийн газартай харьцуулахад
3-4 дахин илүүг гээд бод до ;)
Магадгүй, бид хэвлэлийн бизнес эрхэлж байгаагүй, дээр нь юуг яаж хийх ёстойг тухайн үед түй ч мэдэхгүй байсан маань шинээр сэдэх, аливааг өөр өнцгөөс харахад ихээхэн дэм болсон байх. Миний санаж байгаагаар бид хамгийн анхлан бүх номоо PDF(мөн epub, mobi) хувилбараар худалдаанд гаргасан. Мөн анхны бета-ном програмыг амжилттай хэрэгжүүлэгчид: ном бүтээгдэж байх явц дунд хүмүүст унших бололцоог олгосон. Электрон номондоо DRM[7] хийгээгүй анхны эрхлэгчид мөн л бид байх,
үйлчлүүлэгчиддээ итгэх хэрэгтэй.
Миний бодоход одоо хийж байгаа бизнес маань үнэхээр сонирхолтой. Хүссэнээ сонгож, уншиж байгаад хэвлэнэ гэдэг үнэхээр супер биш гэж үү?
Сатиш» Магадгүй миний асуулт хэтэрхий эртдэж байж болох юм, гэхдээ эргээд харахад энэ номд нэмчихмээр, эсхүл хасвал дээр байж гэхээр зүйл байгаа юу?Дэйв
» Яг ч тэгж бодохгүй байна: Номыг дөнгөж сая бичиж дуусгасан, өмнөх хэвлэлтийн дутагдалтай зүйлсийг бүгдийг засч сайжруулсан болохоор тэр л дэ.
Номоо хоёр тусад нь салгадаг байж гэж хожуу бодож болох юм, гэхдээ нэг дороо байх нь дээр байх аа. Хэтэвчинд ч хэмнэлттэй.
Сатиш» Нэмж хэлэх ямар нэгэн зүйл?Дэйв
» Энд хэдийгээр зөвхөн номны тухай ярих ёстой ч Рубийн талаар бас дурьдмаар санагдлаа. Би энэ хэлэнд дуртай, хэдийгээр 10 гаруй жил ашиглаж байгаа ч одоо ч сонин сонирхолтой зүйлс гарч ирсээр л байна. Руби 1.9 олон сайхан боломжоор баяжсан шүү.
Мөн өдөр тутам хэрэглэдэг багаж, хэрэгслээ үнэлж, хүндэлж, ач холбогдол өгч байгаарай гэж танай бүлгэмийнхэнд захья. Програм бичнэ гэдэг яриангүй сайхан ажил да.
Баярлалаа, Дэйв.Хавсралт мэдээлэл:======================================
Сурвалжлагын
эхийг эндээс үзэх боломжтой. Эх материал нь доорхи нэмэлт тайлбарыг агуулаагүй болно.
[1] Сheshire - Английн баруун хойд зүгийн жижиг хот
[2]
Andy Hunt. Pragmatic Programmers LLC-ийг үүсгэн байгуулагчдын нэг.
[3] Програм хангамжийн чиглэлийн номууд дундаа классикт тооцогдох бүтээл. Энэ номын талаар Очко багшийн бичсэн
сайхан тэмдэглэл байдаг.
[4] Нэгэн үе өргөнөөр ашиглагдаж байсан соорс удирдлагын систем. Томоохон компаниуд өнөө ч түгээмэл ашигладаг юм билээ.
[5]
Rake - Ruby Make. Бийлд автоматжуулалтын багаж. C, C++ дээр бол make, Java дээр бол Ant гээд л бид мэднэ дэ?
[6] mobi, epub зэрэг файлыг гар утас, PDA мэтийн төхөөрөмж дээр өргөнөөр ашигладаг. Миний хувьд Metaprogramming Ruby номын электрон хувилбарыг худалдаж авч байлаа. Гар утсан дээр уншихээр жаахан тухгүй л юм билээ. Гэхдээ ч саяхнаас электрон ном физик номоосоо илүү тоогоор зарагдаж байна гэдуга шт.
[7] Digital rights management (DRM) is a generic term for access control technologies that can be used by hardware manufacturers, publishers, copyright holders and individuals to try to impose limitations on the usage of digital content and devices. Эх сурвалж:
Википедиа.