Хөгжүүлэгч бол Үйлчлүүлэгч
Sun Microsystems компанийн Техникийн Захирал Tom Ball-тай хийсэн ярилцлага
Товчхон: Би бол Sun Microsystems компанийн Жава хөтөлбөрлөлийн хэлний багаж бүтээх ажлыг хариуцсан техникийн захирал хүн.
java.sun.com(JSC): Та бол Sun Microsystems компанид олон жил ажилласан хүн. Өнгөрсөн он жилүүдэд таны ажил хэрхэн өөрчлөгдсөн бэ?
Ball: Анх 1994 онд Sun компанид ажил, хөдөлмөрийн гараагаа эхэлснээс хойш Жава технологиор 12 жил дагнан ажиллажээ. Намайг JDK багт орох үед Жава хэл нь Oak нэрнээсээ ч салаагүй дөнгөж мэндэлж байсан бөгөөд миний бие 1.0 хувилбарт зориулсан анхны зүгшрүүлэгч ХХҮ /debugger API/ бүтээхийн зэрэгцээ AWT /Abstract Window Toolkit/ бүтээхэд ч өөрийн хувь нэмрээ оруулж явлаа. 1.1-ийн хувьд, Windows AWT хэрэгжилтийг /implementaion/ шинэчлэн бичиж AWT хөмрөгийн үзэгдлийн шинэ загвар зохиомжлоход оролцсон бөгөөд хожим үүнийгээ Swing болгон өргөтгөсөн юм. Хэрэглэгдэхүүний үйлчлэгч /application server/ багт зориулсан багаж хэрэгслэлийн архитектурчаар хэсэг зуур ажилласаны дараа Sun Laboratories дахь Jackpot төсөл дээр Жеймс Гослингтой /James Gosling/ дахин хамтран ажиллаж билээ.
Одоогоос гурван жилийн өмнө, Jackpot төслийн бүх гишүүд тухайн үедээ Хөгжүүлэгч Бүтээгдэхүүний Бүлэг /Developer Products Group/ хэмээн нэрлэгдэж байсан Хөгжүүлэгч Багажын Бүлэг /Developer Tools Group/ рүү шилжсэн түүхтэй. Тэнд байхдаа, javac эмхэтгүүрийг /compiler/ NetBeans Хөгжүүлэх орчинтой нэгтгэхээр бүтэн жил ноцолдсоны дараагаар, би Jackpot-ийн судалгааны үлгэр загвараа /research ptototype/ олон хэсэг NetBeans нэгтгэлүүд /module/ хэлбэрээр шинэчлэн бичсэн юм.
JSC: Sun компанид орохоосоо өмнө хаана, юу хийж байв?
Ball: Sun компанид орохоосоо өмнө, EO дахь PenPoint үйлдлийн систем хариуцсан системийн инженер, Metaphor дахь Patriot Partners төсөл болон Convergent Technologies дахь CTOS хариуцсан системийн инженерээр тус тус ажиллаж байлаа. Наяад оны дундуур Convergent нь Silicon Valley-ийн хувьд Тэнгисийн Хүчний үүрэг гүйцэтгэж байв, учир нь бид захиалагчиддаа зориулан шинэ тоноглол /hardware/, үйлдлийн систем, системийн болон сүлжээний туурвилыг /software/ зургаагаас есөн сарын дотор нийлүүлж байв.
Би тэнд ажиллаж байхдаа, үйлдлийн системийн бичил цөмийн /microkernel/ архитектур, үйлчилгээнд суурилсан /service-based/ олон зүтгүүртэй тархмал системд /multithreaded distributed system/ зориулсан асинхрон хэрэглэгдэхүүний зохиомж, Xerox PARC системийн MVC /Model-View-Controller/ зохиомж болон обьект хандлагат хөтөлбөрлөл зэргийг суралцсан юм. Энэ бол үнэхээрийн гайхалтай инженерийн баг байсан бөгөөд сургуульд сураад олж авахгүй олон зүйлийг би эндээс олж авсан бөлгөө. Би анхандаа мэргэжлийн хөгжимчин байсан нь надад тус болсон уу гэхээс ус болоогүй болов уу.
JSC: Jackpot төсөл гэж юу вэ?
Ball: Jackpot бол Жава эх код дотор ямар нэгэн байдлаар давтагдах хэв маяг /pattern/ хайж олоод олдсон хэвийн дагуу эх кодоо аль болох эвдэхгүйгээр үнэн зөв, найдвартай хувиргах зориулалттай технологи юм. Энэ нь шинэчилсэн javac ХХҮ /Хэрэглэгдэхүүн Хөтөлбөрийн Үүд - Application Programming Interface/, Жава эмхэтгүүрийн ХХҮ, JSR 269, Өргөмөл Товчлол Боловсруулах /Pluggable Annotation Processing/ ХХҮ, javac Tree ХХҮ, com.sun.source.tree болон com.sun.source.util зэрэг сан хөмрөгүүдийг өргөн ашигладаг.
Jackpot нь Жава 2, Стандарт Хувилгал 5.0 болон түүнээс дээш Хөрс дээр ажиллах хэдий ч эхийн бүх түвшинг дэмжинэ. Энэ бол жирийн нэг хувилгагч багаж /refactoring tool/ биш. Хувилгагч багажууд нь зөвхөн тухайлсан өөрчлөлт дээр төвлөрдөг. Jackpot нь төслийн хэмжээний хувиргалтууд дээр төвлөрдөг.
JSC: Jackpot Төсөл нь NetBeans Урланг нөхөн инженерчлэлийн гайхалтай боломжоор баяжуулсан нь дамжиггүй. Хөгжүүлэгчид энэ талаар юу ойлгох хэрэгтэй вэ?
Ball: Хамгийн гол нь Jackpot-ийн "хөдөлгүүр " нь хөгжүүлэгчдийн өмнө бүрэн нээлттэй, хүсвэл Жава хүсэлт болон хувилгалтыг /query and refactoring/ өөрөө хялбархан бичиж болно гэдгийг ойлгох хэрэгтэй. Хүмүүс зөвхөн бэлэн хүсэлтүүд болон нөхөн инженерийн бэлэн тушаалуудад анхаарлаа хандуулаад үүний цаана байгаа аварга том мөсөн уулыг анзаарахгүй орхигдуулах вий гэсэн болгоомжлол байна. Ер нь бол нөхөн инженерчлэлийн олон гайхалтай санаанууд бий. Тэдгээрийг бичих нь зугаатай төдийгүй ихээхэн цаг зав авдаггүй, тиймээс тун удахгүй бэлэн тушаалуудын багцаар үер буух болов уу.
Дүнсгэр Код Бичих нь
JSC: Сайн код бичих талаархи таны зөвлөмж?
Ball: Миний мөрдлөг болгохоор хичээдэг -- хамгийн сайн зөвлөмж гэвэл -- хэн нэг ухаантан хараад энд ямар ч тайлбар хэрэг алга, угаасаа л тодорхой гэж хэлэгдэхүйц тийм дүнсгэр код бичихийг аль болох чармайх хэрэгтэй. Зөвхөн ганц зүйл хийдэг, гэхдээ найдвартай, бичсэнийхээ дараа шууд мартлаа гэхэд хожим нь чимээгүй, нам гүм ажилладаг тийм код бичих хэрэгтэй.
Жишээлбэл, NetBeans урлан доторхи classfile нэгтгэл нь зөвхөн ганц л зүйл хийнэ: JVM .class файл уншаад JVM зүйлчлэлийн шаардлагад ойртуулсан ангиуд болгох явдал. Ийм ангиудад юуг ч өөрчлөх боломжгүй - тэд бол хувиршгүй ангиуд. Энд .class файлуудыг засварлах юмуу үүсгэх ямар ч боломж байхгүй бөгөөд түүний ямар ч анги нь JVM зүйлчлэлийг мэддэг дурын хүний хувьд учир битүүлэг оньсого төрүүлэх ёсгүй.
Уг нэгтгэл нь "дүнсгэр" учраас хэн нэгэн хүн зугаагаа гаргахаар эвдэх гэж оролдохгүй - зөвхөн JVM зүйлчлэл өөрчлөгдөх үед л шинэчлэгдэнэ - тиймээс олон жилийн турш тогтвортой байдлаа хадгалсаар ирсэн юм. Эгэл тулдаа маш хурдан бөгөөд ачаалал багатай, бас хувиршгүй /immutable/ учраас зүтгэх чадвартай /threadsafe/ болой. Тогтвортой бөгөөд дүнсгэр учраас түүнийг арчлах, сайжруулах гэж цаг заваа үрэх хэрэггүй, энэ хугацааг өөр төсөл дээр ажиллахад зарцуулах боломж олгосон явдал нь магадгүй хамгийн чухал чанар байх.
Өмнө бичсэн кодоо уншиж ажиллагааг нь ойлгохын тулд тодорхой хэмжээгээр төсөөлөл гаргах шаардлага гардаг нь олонтаа анзаарагддаг, тэгэхлээр тухайн код нэг л биш гэсэн үг. Чухам тийм учраас би хувилгагч багажны хэнээтэн болсон, учир нь тэдгээрийн зорилго нь кодын ажиллагааг өөрчлөхгүйгээр кодыг хялбарчлах, тодотгох явдал байдаг. Амьдралд ч тэр, хөтөлбөрлөлд ч тэр, цомхон байх нь илүү хэцүү. Би багаж ашиглахыг аль болох хичээдэг, тиймдээ ч багаж бүтээх асуудал миний санаанаас огт салдаггүй. Жишээлбэл, Sun Labs дахь Jackpot төсөл анхандаа нөхөн инженерчлэлийн багаж бүтээх зорилготой байгаагүй - түүний зорилго нь хөгжүүлэгчийн бүтээмжийг нэмэгдүүлэх чиглэлээр төрөл бүрийн жижиг туршилтууд хийх явдал байсан.
Жеймс Гослинг Хөгжүүлэгч Бүтээгдэхүүний Бүлгийн техникийн ерөнхий ажилтнаар томилогдож, харин би NetBeans Урлан төсөлд орсон, учир нь бидний хэн хэн маань нэг л дүгнэлтэнд хүрсэн: Хөгжүүлэгчийн бүтээмжийг хамгийн их нэмэгдүүлдэг зүйл бол сайн багаж. Jackpot бол гайхалтай метазагвар урлагч гэхээсээ илүү таны ажлын жагсаалт доторхи олон давтагддаг кодын өөрчлөлтийг арилгах багаж юм.
Тиймээс сайн Урлан олж ав -- миний хувьд эхлээд Emacs, дараа нь Visual C++ байв -- тэгээд хэрхэн ашиглахаа сайтар судал. Дараа нь долоо хоног тутам ч юмуу гарын авлагыг нь унших, эсвэл ХҮ (хэрэглэгчийн үүд - user interface)-ийг ухаад хэрэв сайн мэдэхгүй зүйл олдвол түүнийгээ нухаж өөрийн болгох хэрэгтэй. Хажуугаар нь өөр шинэ багаж юу байна гэдгийг эрэлхийлж байхад гэмгүй, магадгүй тушаалын мөрөөс ажилладаг, тэр ч байтугай таны сонгосон Урланг орлох илүү сайн багаж олдохыг үгүй гэх газаргүй. Сайн багаж нь таны олон хүнд хүчир ажлыг нугалахад үнэхээр тустай.
Жишээ нь бүх амьдралынхаа турш ХЗҮ (хэрэглэгчийн зурмал үүд - graphical user interface) хийж байсан хүний хувьд, маягт бүтээх, тэдэнтэй ноцолдож хамаг цагаа авахыг би үнэхээр их үзэн яддаг. Хэрвээ та миний өмнөөс маягт бичнэ гэвэл оронд нь танай байшингийн усны янданг цэвэрлэхээс би лав татгалзахгүй байлаа. Гэвч шинэчлэгдсэн Jackpot ХҮ нь богино хугацааны дотор олон тооны маягтууд хийх шаардлагыг миний өмнө тавив, тиймээс NetBeans доторхи шинэ маягт засварлагч болох Matisse-ийг ашиглахаас өөр зам олдоогүй юм. Түүнийг ашиглахад маш амар, хялбар байлаа. Одооноос та өөрийнхөө янданг цэвэрлэх боломжтой боллоо.
Эцэст нь, Урлангийнхаа зүгшрүүлэгч болон сувилагчийг /debugger and profiler/ тогтмол хэрэглэж занш - ямар ч print хэллэггүй, ямар ч учирлалгүй, зүгээр л хий. Нэг учраа олоод, хөтөлбөр чинь хэрхэн ажиллаж байгааг мэддэг болчихвол та илүү сайн хөтөлбөрлөгч боллоо гэсэн үг.
Jackpot-ийн хүчин чадалтай холбоотой хамаг бэрхшээлүүд нь оновчлолыг буруу хийснэээс үүдэлтэй болохыг олж тогтоосон юм. Хичнээн мундаг ухаантан байлаа ч гэсэн хөтөлбөрийг хэрхэн оновчлох бодлогыг гагцхүү хэмжилт хийж үзсэний дараа л шийднэ.
Кодын Хэмнэл Аялгуу
JSC: Та анхандаа мэргэжлийн хөгжимчин байсан гэсэн. Энэ нь таныг хөгжүүлэгч болоход нөлөөлөв үү? Код бичих, хөгжим тоглох хоёрын хооронд ижил төстэй зүйл бий юу?
Ball: Гарцаагүй бий, гэхдээ энэ бол зөвхөн миний бодол биш. Туурвилын инженерийн ямар ч байгууллагад ороод дурын хөгжүүлэгчээс хөгжмийн боловсролыг нь асуу. Бүтээлч баг дотор, ёс мэт ядаж гуравны нэг нь багадаа төгөлдөр хуур юмуу үлээвэр хөгжим тоглож сурсан, цөөн хэд нь олон хөгжим тоглож сурсан байдаг. Тоо, бичмэл аялгуу хоёр нь хоёулаа адилхан билэгдлийн хэл, аль аль нь тархины ойролцоо хэсгүүдийг хөгжүүлдэг.
Олон хүмүүс үүнийг мэддэггүй, гэхдээ JDK дахь Жава Sound-ийг хэрэгжүүлэгч нь хөгжимчин Thomas Dolby-ийн удирдсан жижиг компани байсан юм шүү. Тэр хэлэхдээ, "Тэр намайг Шинжлэх Ухаанаар Самууруулсан", гэхдээ JavaSoft-той ажиллахад гарсан инженерийн ярилцлагууд амжилттай болсоор ирсэн гэсэн юм.
Хөгжмийн аялгуу бичих, түүний бичлэг хийх нь хөгжим тоглох гэхээсээ илүү туурвил туурвихтай илүү их төстэй. Цаана нь ямар шинжлэх ухаан байгаагаас үл хамааран, энэ бүхэн бол нэг төрлийн дарханы ажил -- ихэнхи хүмүүс тодорхой хэмжээгээр эзэмшиж болно, гэхдээ зарим хүмүүс заяамал байдаг. Үзэмжтэй код бичиж болох уу гэдгийг би мэдэхгүй, харин код нь маш чамбай, цэвэрхэн байж болно. Ямар ч хэлбэртэй байлаа гэсэн, бичлэгийн ойлгомжтой байдал бол бүхнээс эрхэм нандин зүйл даруй мөн.
Туурвих үеийн хөгжилтэй явдлууд
JSC: Хөгжүүлэгч хүний тань хувьд тохиолдсон хамгийн хөгжилтэй зүйл юу вэ?
Ball: Би ч хүн даапаалахдаа адтай дамшиг шиг байгаа юм. Unisys компани Convergent Technologies (CT)-ийг худалдан авах үед, олон жилийн турш бидний дээр гарах гэж оролдоод бүтэлгүйтсэн, манай OEM бүтээгдэхүүнийг "сайжруулах" учиртай инженерийн багийн магнай тэнийсэн юм: Бид тэдний шууд удирдлага доор орчихов. Үүнээс болоод манай ихэнхи чадварлаг тоглогчид ажлаа орхин сэтгэл санаа ч шалдаа буув. Засварлуур нь миний мэдэлд байсан учир бяцхан эсэргүүцэл болгох үүднээс тодорхой товчны дарааллаар дэлгэц дээр гарах хувилбарын дугаарын араас "CT forever!" гэсэн үг нэмэгдэж байх Зул сарын өндгөөр засварлуураа мялаасан юм.
Энэ нь хүн бүрийн урмыг хөгжөөсөн бөгөөд Unisys-ийн хөгжүүлэгчид үүнийг олж мэдмэгцээ хамт олноо хамгаалсан сайхан санаа байна хэмээн үнэлсэн юм. Гэтэл гэнэт нэг сэнтэг зохицуулагч үүнийг шүүрэн авч даруй арилгах лүндэн буулгав. Unisys-ийн инженерүүд эх кодоо судлахад хэдэн долоо хоног зарцуулж байхад, нөгөө зохицуулагч маань товчлуурын бөөс гэгчдээ дэвшил гаргахыг өдөр бүр тэднээс шахаж шаардаж байв. Эцэст нь тэдний инженерийн багийн арга мухардмагц товчлуурын бөөсийг цэвэрлэж дөнгөх эсэхийг манай захирал надаас тун найрсгаар асуув. Би хэргээ хүлээгээд, дараа нь хүн бүрт захиа илгээхдээ энэ бол хамт олны зөрчлийг дэвэргэх гэсэн санаа огтхон ч биш, харин ч "СТ бол инженерийн гайхамшгийн биелэл, тэгээд ч манай бүтээгдэхүүнүүд дотроос СТ-ийг хайсан ямар ч хүн түүнийгээ түвэггүй олох болно" хэмээн бичсэн юм. Хэрэг хаагдав.
Өнөөдөр ч гэсэн, хэрэв та засварлуурын маань бичвэр-хайх диалогыг гарган СТ гэж оруулбал хувилбарын дугаар дотор CT forever! гэсэн үг гарахыг харах болно. Гагцхүү товчлуур дарахад идэвхиждэг байсан нь л больсон.
Oak дурсамж
JSC: Oak багийн анхны гишүүнийхээ хувьд, Жава хөтөлбөрлөлийн хэлийг үндэслэх их тулааны дурсамжаасаа бидэнтэй хуваалцахгүй юу?
Ball: Bill Joy шургуу хөөцөлдсөний хүчээр техникийн багийнхны дэндүү эрсдэлтэй, хугацаа их авах онцлог гэж үзсэн хяналттай-гажуудлыг (checked-exception) нэвтрүүлэхээр болсон гэсэн яриа байдгийг би хувьдаа үнэн гэж боддог, маргааш нь үнэхээр тийм зүйл болсныг санаж байна. Урьд нь бүх гажуудлууд өнөөгийн RuntimeException яаж ажилладагтай адилхан ажиллаж байлаа. Тэгтэл Bill JVM-ийн хоёр гол инженерийг маш үнэтэй ресторанд дайлж, тэд тэр шөнөдөө уг онцлогийг нэмсэн гэдэг.
Хэлний анхны хувилбартаа нотолгоо /assertion/ оруулсан боловч хүчин чадлын асуудлаас болоод багийн бусад хүмүүсийнхээ шахалтаар авч хаясан хэмээн James Gosling надад хуучилж байлаа. Энэ лав үнэн байх, учир нь өгөгдлийн зогсохцэг /data breakpoint/ бий болгохын тулд ухварлуурын давталт дотор Boolean шалгалт хийдэг байх ёстой, тэгвэл debug дарцаг тавиад л түүнийг ондоо давталт дотор ажиллаж буй маягтай болгож болно гэдгийг JVM инженерүүдэд ойлгуулах гэж хэдэн долоо хоног зарцуулсан юм. Бид ямагт хүчин чадлыг чиглэлээ болгож байв.
JSC: Сайн код урлах түлхүүр юу вэ?
Ball: Сулхан гагнагдсан энгийн, жижиг ангиуд. Хичнээн хичээгээд ч ингэж хийж тэр бүр чаддаггүй, гэхдээ хийж чадсан үедээ сэтгэлийн асар их таашаал авдаг.
JSC: Мухардалд орсон үедээ та яадаг вэ?
Ball: Цаг хугацаанд даатгана. Зохиомжоо гүйцэд ойлгоогүй юмуу асуудлаа бүрэн тодруулаагүй үедээ мухардалд орох явдал бий, тэгвэл асуудлыг хүчээр шийдэх гэж зүтгэхийн оронд хэсэг хугацаа өнгөрөхийг хүлээх аваас илүү сайн шийдэл олох магадлал ихтэй.
Багаж бүтээхүй -- Хөгжүүлэгч бол Үйлчлүүлэгч
JSC: Багаж бүтээх талаархи таны бодол?
Ball: Туурвилын ихэнхи төслүүдийн хувьд, хөгжүүлэгч бол үйлчлүүлэгч биш, үйлчлүүлэгчид маань хөгжүүлэгчид биш учраас тэдний юу хүсэж буй хэрэгцээ нь биднийхтэй адил биш гэдгийг анхаарах нь чухал байдаг. Харин хөгжүүлэх багаж, магадгүй тооцоолуурын тоглоомын хувьд бол хөгжүүлэгч бол үйлчлүүлэгч! Зах зээлийн юмуу удирдлагын ажилтнуудаа бодвол та хэрэглэгчийнхээ хэрэгцээг илүү сайн ойлгоно гэсэн үг. Үүний дээр, таны хийж буй ажил бусад хүмүүст чухал, тэгээд ч бид бүгдээрээ бие биендээ сайрхахыг эрмэлздэг нь үнэн.
JSC: Жава технологийн багажуудыг ойрын жилүүдэд юу хүлээж байна?
Ball: Миний мөрөөдөл олон жилийн тэртээ мөхсөн, гэсэн ч фрэймуорк, багаж хоёрын аль аль нь бидний хамаг цагийг үрж буй хэвшмэл код бичих нүсэр ажлаас чөлөөлөх чиглэлээр улам хүчтэй замнаасай гэж би хүсдэг. Одоохондоо хэвшмэл кодтой эвлэрэхээс аргагүй, гэхдээ бүтээмжид үнэхээр хорлонтой.
JSC: Хөтөлбөрлөлийн Жава хэлээр ажиллах явцаа ажигласан хамгийн гайхалтай үзэгдэл тань?
Ball: 12 жил өнгөрсөн хэдий ч өнөө хэр уйдаагүй байгаа маань сонин. Энэ бол миний ажилласан ихэнхи төслүүдийг өөд нь татах зөв "хөшүүрэг" болж чадсан анхны хэл байлаа.
JSC: Хөтөлбөрлөхүйн юу нь танд хамгийн их таалагддаг вэ?
Ball: Бараагаа нийлүүлэх. Жинхэнэ ажил хийхдээ ашиглах учиртай жинхэнэ хэрэглэгчдийнхээ гар дээр очсон хойноо л аливаа төсөл эцэслэн хүчин төгөлдөр болдог.
JSC: Таны таашаалд нийцсэн Жава технологийн ном бий юу?
Ball: Яг сэтгэлд хүрэх ном бол байхгүй, гэхдээ Роберт Симмонсын бичсэн HardCore Java болон Жош Мариначи, Крис Адамсон хоёрын бичсэн Swing Hacks бол үнэхээр сэтгэл сэргээх сайн ном.
JSC: Хамгийн сүүлд нэмэгдсэн хэлний боломжуудаас аль нь амьдралд илүү өгөөжтэй болсон гэж та боддог вэ?
Ball: "Өгүүлбэрзүйн хачир" төдий, гэхдээ хамгийн таалагдсан шинэ боломж бол өргөтгөсөн for давталт. Хэр барагтаа буруутахааргүй цэвэрхэн код -- сайхан биш гэж үү?
JSC: Туурвил бүтээх ажлыг хөнгөвчлөхөд нээлттэй-эхийн нийгэмлэгүүдийн гүйцэтгэж буй үүрэг, ролийн талаар таны хуримтлуулсан туршлага юу байна?
Ball: gcc-ийг хог цуглуулах боломжтой болгон өргөтгөх асуудлаар Cygnus нийгэмлэгт хандаж байсан маань нээлттэй-эхийн нийгэмлэгтэй хамтран ажиллах анхны тохиолдол байлаа. Тухайн ажлын чанар үнэхээр гайхалтай байсан бөгөөд GPL шаардлага ёсоор өргөтгөл маягаар хийх санаа нь надад маш их таалагдсан. Жава альфа хувилбар гарахын өмнөхөн, хожим JavaSoft болон өргөжсөн FirstPerson бүлэгт нэгдсэн маань гэртээ ирснээс ялгаагүй санагдаж байв, учир нь би дахиад л эх кодоо гишүүддээ нээлттэй хуваалцдаг багийн нэг гишүүн болсон юм. Мэдээж хэрэг, Netbeans IDE урлангийн багийн гишүүн болно гэдэг нь юуны өмнө нийгэмлэгтээ хүчээ өгнө гэсэн үг.
Шинэ Хөгжүүлэгчдэд өгөх зөвлөмж
JSC: Шинээр ажлаа эхэлж буй Жава Хөгжүүлэгчдэд та юу хэлэхсэн бол?
Ball: Хөтөлбөрлөл гэдэг нь дархан, мужааны ажил хэвээр байна, тиймээс ахлах мэргэжилтнүүдтэй хэдийчинээ хамтран ажиллана, сургуульд үздэггүй олон зүйлийг тэднээс төдийчинээ ихээр сурах болно. Боломжтой бол нээлттэй-эхийн төсөлд оролцож өөрийгөө бусдад нээж, сорих хэрэгтэй. Гэхдээ сонирхолтой санагдсан төсөл бүхэн рүүгээ зүтгэ гэсэн үг биш. Зарим залуус хэтэрхий олон юм рүү үсчээд эцэстээ нэр хүндээ алддаг тал олонтаа ажиглагддаг.
Эцэст нь захихад, Жавагийн ямар ямар хамтлагууд байна гэдгийг тэдний хэлэлцүүлэг, блогуудаар нь дамжуулан судалж танилцаж байгаад дараа нь элсдэг байх хэрэгтэй. Манай бүлэг үнэхээр дажгүй шүү!
http://java.sun.com/developer/Meet-Eng/ball/
Comments
Java saihan hel shuu. Gehdee l tahir dutuu hun shig udaan. Uneheer sain program bichie gevel C heliig songooroo. (medeej assembler deer bichvel mash ih tsag zarcuulah tul) Tom project bol C++ -g. Tegeed diilehgui bol hyalbar bogood saihan bolomjtoi Java, C#-g ashiglahad bolno doo. Huuhduuded bol VB.Net saihan shuu.
Posted by hacker on 09/25/2006 05:34:34 PM
Миний мэдэхээр, олон жил Си хэлээр ноцолдсон хэд хэдэн нэртэй инженер Жава хэл рүү "урвасныг" санаж байна. Тэдний бодлоор, өнөөгийн Жава систем Си хэлнээс илүү хурдан, илүү хүчтэй гэнэ. Системийн түвшинд авч үзвэл Жава хэл илүү хүчтэй, илүү хурдтай гэдэг дээр миний санал нийлнэ. Харин жижиг сажиг асуудал дээр Си нь илүү хурдан байж болно.
Posted by surgalt on 09/26/2006 05:52:21 AM
When I first read "Java faster than C++ benchmark", I was sure that there was something wrong with it. After all, Java couldn't be faster that C++, right? What would be next? C++ faster than C? C faster than Assembler? After quite a while I've found some time to update the results using brand new JVMs and GCC versions. Benchmark environment The tests were performed on Linux 2.6, AMD Athlon(tm) XP 2500+ (Barton). No other load was placed on the machine during tests, run level 1 (single user mode) had been used. GNU C Library had optimizations for i686 (standard Debian package, this should be of benefit for both Java and C++). I compiled GCC myself from the standard release. Please note that the result of this benchmark (I am talking about "C++ faster than Java" result) is valid for GCC 3.4.4 and 4.0.3 as well, but GCC series 4.1.x is even faster than earlier GCCs. Testing conditions I've kept the original number of repetitions in all tests. Time was measured in the same way as in the original results, with one exception: the time used as benchmark result was elapsed real (wall clock) time used by the process. If we stick to the original method of measurement, the results will be incorrect and biased towards Java - because of threads used by the JVM. Wall clock time is better and more accurate if the machine operates under no load - as was the case here. Java Java was compiled with standard settings, using Java compiler from Sun in the same version as the JVM that was used later to do the actual benchmark. To run hash, heapsort and strcat tests I had to increase the heap size. It's pretty much standard practice for enterprise software, so I do not see it as a drawback of Java. C++ When looking at C++ code, I've noticed many performance problems, which probably may go unnoticed for people with strong Java background. In other words, to make this benchmark fair, I had to make some modifications to the original code. In doing so, I tried to make the code as close to the original as possible, even if my personal coding style is completely different. For C++ compilation, I've used the following options: -O2 -fomit-frame-pointer -finline-functions -march=athlon-xp I consider the first two options standard for compilation (all major Linux distributions, Linux kernel and many others use these two for compilation). -finline-functions is used to tell the compiler to guess which functions should be inlined (Java Server VM also does that, that's one of the reasons for which it performs better than Client VM). Athlon-XP - well, that's my machine. I could use pentium instead (which could be considered more standard), but it would not change the overall result - that, is C++ being the clear winner. So, let's get down to business, shall we?
Posted by zalit test ee gej on 09/26/2006 03:32:00 PM
Нэг жишээ дурдахад Жава хэлээр бүтээсэн Н2 гэдэг нэртэй Өгөгдлийн Сан Удирдах Систем нь 1МБ орчим хэмжээтэй бөгөөд хүчин чадлаараа MySQL-ээс хоёр дахин өндөр. Ер нь дутуу юм гэж байхгүй, харин ч мониторинг, найдвартай байдал гээд олон үзүүлэлтээрээ илүү. Гэтэл MySQL хэр том хэмжээтэй билээ. Ер нь томоохон систем бүтээхэд Жава хэл ашиглахаас татгалзах хэрэггүй гэж үздэг хүмүүсийн тоо улам бүр нэмэгдсээр байна. GlassFish гэж нэрлэгдсэн, Жава хэлээр бүтээгдсэн Үйлдлийн Систем хариугүй мэндлэхээр дуншиж байгааг бас хэлэх хэрэгтэй болов уу.
Posted by surgalt on 09/30/2006 05:32:17 AM
Unshihad yamarch hetsuu yum dee. Mongol ugiig haraad Englishtei ni tulgahaar shal oor utgatai.
Posted by coder on 10/12/2006 10:57:34 AM
Мэргэжлийн нэр томъёог орчуулахад их түвэгтэй. Зарим нэр томъёог яаж орчуулбал эвтэйхэн болох бол гэдэг талаар бодож л байна. Нэр томъёо нь олон талаараа олон дахин хэрэглэж байж хэвшүүлэх ёстой хэвшмэл хэллэг байдаг. Жишээ нь interface, debugger, application, compiler гэх мэт үгсийг жирийн англи хүн уншаад огт ойлгохгүй. Мэргэжлийн сургуульд нь сурч олон жил ажиллаж байж эдгээр үг ямар утгатай болохыг мэднэ. Зарим нь сургуулиа төгссөн хэрнээ үгийнхээ утгыг ойлгодоггүй. Тийм болохоор ийм үгийг монголоор хэлэхэд шууд хараад ойлгоход түвэгтэй байж болно. Ер нь бол хугацаа хэрэгтэй.
Posted by surgalt on 10/12/2006 12:04:24 PM
Хамгийн дээр бичсэн хакерт зориулж бичлээ. Java-г удаан гэх юм бол энэ дэлхий дээр хурдан ажилладаг хэл байхгүй юм байна л даа. Нилээд дээр би нэг бацаантай ярилцсан юм. Тэр бацаан өөрийгөө нилээд том хөгжүүлэгч гээд бодчихож, delphi дээр odbc-гээр холбоод нэг программ бичсэн болтой, java дээр нэг вэб туурвил маягийн юм бичсэн болтой, тэр ямар ч загвар байхгүй servlet дээр бүгдийг нь хийсэн зүгээр л кодинг дотроо холион бантан, ярилцаад үзэхэд ерөөсөө хоосон хонгио. Тэр бацааны зарим ярисан яриаг сонсговол: Би МуSQL дээр ажилладаг, Microsoft SQL for babies, php бол миа, жава бол гоё гэх жишээ нь ий. Дээрхи хакерийн яриаг уншаад гэнэт тэр бацаан санаанд орчихлоо. Java, C, C++ хооронд харьцуулна гэдэг бол сумо, жүдо, үндэсний бөхийн хэн нь мундаг вэ гэж харьцуулж байгаатай адилхан. Яг с хэл дээр дангаар нь бичдэг ажил гэх юм бол одоо зөвхөн систем админстратор, сүлжээнийнхэн, мөн системийн жаахан юм хийвэл бичих ийм л ажил байгаа байх. C++ гэдгийн тухайд одоо C++ дээр ямарваа ажлыг дангаараа бичдэг үлгэрийн далай байхын болисон. Нэг бол microsoft ийн Visual C++ дагана, нэг бол Borland C builder ийг дага. VB.net хүүхдүүдэд гэдгийн хувьд хэрэглээний программ хангамж, ӨСУС-тэй ажиллахад VB.net шиг хүчтэй программчиллын хэл байхгүй гэж хэлэх байна. 1-рт. Өөр өөр зорилгоор ашиглагддаг хэлнүүдийг битгий хооронд нь хольж хутгаад, харьцуулаад тэнэгтээд бай, миний дүү нар за юу. 2-рт программчиллын хэлнээс болж удаан хурдан нь мэдэгддэг тийм том систем одоохондоо та нар бичих болоогүй за юу, харин системээ зөв зохион байгуулж чадахгүй, буруу ашигласанаас чинь болж л систем чинь удаан ажиллаж байгаа байх. Үлгэрлэвэлээс сайн эзэмшиж чадвал мончоог барисан Хишгээ, сайн буудаж чаддаггүй тэгсэн мөртлөө автомат буу барисан Японыг дийлж болно.
Posted by khishgee on 10/13/2006 12:40:16 AM
Арай хатуудуулчих боллоо. Тэгэхдээ хатуу үг сонсоход аягүй ч биенд тустай.
Posted by khishgee on 10/13/2006 09:03:07 AM
Dajgui orchuulga bna. Ingehed ene appication - hereglegdehuun, program - hotolbor g.m orchuulga hiih hereg bsan yumuu. Ehendee bur oilgohgui bailaa shuu :)
Posted by Ott on 02/28/2007 07:33:25 AM
Хөтөлбөр гэдэг үгийн тухайд - энэ бол ямар нэгэн шинэ үг биш. Зурагтын хөтөлбөр гэдэг ч юмуу эсвэл ямар нэгэн зүйлийг хөгжүүлэх хөтөлбөр гэх хэллэг байдаг. Энд ямар нэгэн ажлын дэс дарааллын тухай яригдаж байна. Жишээ нь Үндэсний телевизийн даваа гаригын хөтөлбөр гэхэд эхлээд ийм нэвтрүүлэг гараад дараа нь тийм нэвтрүүлэг гэж явсаар эцэстээ тэр нэвтрүүлгээр дуусна гэх мэт. Малжуулах хөтөлбөр гэхэд л эхний жилд тэр, тэр аймгийн тэр, тэр суманд төчнөөн айлыг малжуулна, дараагийн жилд өөр бусад аймгийн тэр, тэр суманд төчнөөн айлыг малжуулна, ингээд тэдэн жилийн дараа нийт төчнөөн айлыг малжуулахад жил бүр ийм хэмжээний зардал гарна гэх мэтээр хийх ажлуудаа дэс дараалан зохиож бичнэ. Тооцоолуурын хөтөлбөр бичнэ гэдэг нь үүнээс ямар ч ялгаа байхгүй. Тийм болохоор зарим тохиолдолд хөтөлбөр, зарим тохиолдолд программ гэж будлиантуулж байснаас нэг мөсөн хөтөлбөр гээд хаана, хаанаа хэлээд заншвал зүгээр мэт. Хэрэглэгдэхүүний хувьд ч ялгаагүй. Тооцоолуурын хөтөлбөр бүхэн хэрэглэгдэхүүн байх албагүй. Зарим хөтөлбөрийг обьект болгож болдог. Ийм хөтөлбөрийг шинээр бичиж буй ямар ч хөтөлбөр дотор өгөгдлийн төрөл маягаар шууд юмуу эсвэл дахин тодорхойлж сайжруулах замаар ашиглаж болдог. Онцлог нь хэрэглэгдэхүүн хөтөлбөрийг ингэж ашиглахын тулд эх кодыг нь үзэж, харах шаардлага гардаггүй. Нэг ёсондоо .exe файлыг шууд юмуу эсвэл өөрчлөн сайжруулаад ашиглана гэсэн үг. Гэхдээ иймэрхүү маягийн боломж зөвхөн Жава хэлэнд байдаг. Хэрэглэгдэхүүн хөтөлбөр буюу товчоор хэрэглэгдэхүүн гэдэг маань сургууль, соёлын газар хэрэглэгддэг сургалтын хэрэглэгдэхүүн гэдэгтэй агаар нэг. Ерөөс хэрэглэгдэхүүн гэдэг үгийн утга нь өөрөө ямар нэгэн юманд ашиглагддаг, хэрэглэгддэг зүйл гэсэн санаа илэрхийлнэ. Гэхдээ нэг удаа ашиглаад хаядаг зүйлийг биш олон удаа, олон янзаар ашигладаг зүйлийг хэрэглэгдэхүүн гэсэн үгээр хэлдэг. Мэдээж энэ бүхэн бол цэвэр мэргэжлийн үг хэллэг. Жирийн англи хүн мэргэжлийн хүнээр тайлбарлуулахгүй л бол ийм үгийн утгыг уншаад ойлгохгүй. computer program, application гэж юу яриад байгаа юм болдоо л гэж бодно. Хэрвээ ийм үгийг нийтээрээ хэлээд хэвшчихвэл өөр хэрэг. Монголд иймэрхүү үгийг анхнаас нь монголоор хэлээд хэвшүүлчихвэл таньж мэдэхгүй англи үгнээс арай илүү ойлгомжтой болов уу.
Posted by surgalt on 04/02/2007 10:31:19 AM
