ในช่วงที่ผมเริ่มต้นศึกษา C# ครั้งแรกประมาณปี 2000 ผมจะเจอคำว่า UnManaged code กับ Managed code เยอะมาก ในตอนนั้นยอมรับเลยว่าไม่เข้าใจความหมายของสองคำนี้เลยจริงๆ ตอนนี้พอจะเข้าใจบ้างเลยอยากอธิบายให้สำหรับคนที่ยัง งงๆ เหมือนกับผมในสมัยนั้นได้ทำความเข้าใจได้ดียิ่งขึ้น
ถ้าผู้อ่านเคย compile code ด้วยภาษา C++ หรือ Visual Basic จะทราบว่าหลังจาก compile code เสร็จ ตัว compiler จะสร้าง file ขึ้นมาใหม่มา 1 file ที่มีนามสกุล .exe โดยเนื้อหาภายใน file เราหรือมนุษย์ทั่วไปจะไม่สามารถอ่านและทำความเข้าใจกับมันได้ เพราะเนื้อหาภายใน file เป็นสิ่งที่ CPU อ่านและทำความเข้าใจได้คนเดียว เนื้อหา file นามสกุล exe นี้เราจะเรียกมันว่าเป็นภาษา Native CPU หรือภาษาพื้นฐานสำหรับ CPU เท่านั้น
File นามสกุล .exe ที่มนุษย์ไม่สามารถอ่านได้นี้แหละครับ เราเรียกว่า UnManaged Code หมายถึงหลังจาก compiler compile code ไปแล้ว เราไม่สามารถแก้ไขหรือดูเนื้อหาอะไรภายใน file นั้นได้อีก (แต่จริงๆ แล้วก็สามารถแก้ได้โดยใช้ โปรแกรม Hex Editor คนที่ใช้ tool พวกนี้ส่วนใหญ่เป็น cracker ครับและต้องเป็นผู้มีความชำนาญ assembly language เป็นอย่างสูง)
ด้วยข้อจำกัดของ UnManaged code ข้อนี้ล่ะครับทำให้การทำ code sharing มีความยุ่งยากมาก ผมขอยกตัวอย่างจากประสบการณ์ ตรงเลยครับ :)
ในบริษัทหนึ่งมีทีมงานอยู่ 2 ทีมคือทีมที่เชี่ยวชาญภาษา VC++ กับอีกทีมที่เชี่ยวชาญภาษา Visual Basic ทั้งสองทีมต่างมีการพัฒนา library เป็นของตัวเอง วันหนึ่งทั้งสองทีมจะต้องทำงานร่วมกัน เอาล่ะสิครับปัญหาแรกเลยคือเขาจะตัดสินใจใช้ภาษาอะไรเป็นภาษาหลัก เพราะทั้ง VC++ และ Visual Basic ต่างก็มีข้อดีและข้อจำกัด รวมถึงการดึง library ที่เคยพัฒนาแล้วมาใช้ข้าม platform (Visual Basic เรียกใช้ dll ที่ถูกเขียนด้วยภาษา VC++ หรือ VC++ เรียกใช้ dll ที่ถูกเขียนด้วยภาษา Visual Basic)
นี้แหละปัญหาของ UnManged code นี้ขนาดพัฒนาโปรแกรมภายใต้ระบบปฏิบัติการเดียวกันน่ะครับ ลองนึกดูว่าถ้าบริษัทตัวอย่างข้างบนมีลูกค้าที่ใช้ทั้งระบบปฏิบัติการ Windows และลูกค้าที่ใช้ระบบปฏิบัติการ Linux บริษัทจะต้องมีทีมงานหรือ software engineer จำนวนเท่าไรเพื่อพัฒนาโปรแกรมเดียวกันแต่ใช้งานได้ทั้ง Windows และ Linux
ด้วยข้อจำกัดของ UnManged code นี้แหละครับทางบริษัท Sun Microsystem จึงได้พัฒนาภาษาคอมพิวเตอร์ภาษาใหม่ที่ชื่อว่า Java ซึ่งเป็นภาษาที่เป็น Managed code ภาษาแรกบนโลกในปี 1996 จุดประสงค์ของภาษา Java คือต้องการให้นักพัฒนาโปรแกรมเขียนโปรแกรมครั้งเดียวแต่สามารถนำไปใช้ได้ทั้งระบบปฏิบัติการ Windows และ ระบบปฏิบัติการ Linux แต่ก็นั้นแหละครับมันเป็นภาษาใหม่ซึ่งในสมัยนั้นมันเป็นภาษาที่ค่อนข้างทำความเข้าใจได้ยากรวมถึง editor ในสมัยนั้นก็ยังไม่ดีพอ ดังนั้นในช่วงแรกๆ ของภาษา Java จึงเน้นไปที่นักศึกษาส่ะมากกว่า
หลังจากนั้น Microsoft ก็ได้เปิดตัวภาษาใหม่ที่เป็น Managed code ภายใต้ชุดพัฒนา Microsoft .Net Framework ในปี 2002 จุดเด่นหลักๆ ของ Microsoft .Net Framework คือ CLR (Common Language Runtime) ซึ่งรายละเอียดของ Managed code ในรูปแบบของ Microsoft สามารถติดตามต่อได้ที่ภาคสองเลยครับ
ขอบคุณสำหรับการติดตามครับ
TuChay
ไม่มีความคิดเห็น:
แสดงความคิดเห็น