Más contenido relacionado
Similar a Object oriented computing พยุหยาตราของเหล่า objects (20)
Object oriented computing พยุหยาตราของเหล่า objects
- 1. 1
Object-oriented computing ถึงคราวพยุหยาตราของเหลา objects
สุรพล ศรีบุญทรง
บทความ 1997
ภายในชวงหลายปที่ผานมานี้ เทคโนโลยีการประมวลผลแบบ Microkernel Technology นับ
ไดวาเปนรูปแบบการประมวลผลสําคัญซึ่งไดรับความนิยมยอมรับใชงานอยางกวางขวางมากที่สุดในหมูผูใชเครื่อง
คอมพิวเตอรสวนบุคคลทั่วๆ ไป ไมวาจะเปนเครื่องคอมพิวเตอรตระกูลพีซี หรือตระกูลแมคอินทอช และเปน
รูปแบบการประมวลผลซึ่งตอมาไดพัฒนาไปสูการจัดวาง
ระบบพื้นฐานแบบ modular system อันมีประสิทธิภาพ
และความยืดหยุนในการทํางานเปนอยางมาก
กระนั้น กระบวนการวิวัฒนาการของ
เทคโนโลยีการประมวลผลมิไดจบลงตรงที่ Micrkernel
modular system เทานั้น มันยังมีการพัฒนาสืบเนื่อง
ตอไปอีกเพื่อใหไดรุปแบบการประมวลที่มีประสิทธิภาพ
มากที่สุด ซึ่งรูปแบบการประมวลผลที่ดูเหมือนวากําลัง
มาแรงอยางมากในปจจุบัน และมีความเปนไปไดอยาง
มากที่จะกลายมาเปนรูปแบบการประมวลผลมาตรฐาน
สําหรับอนาคตอันใกลนี้ ก็คือ การประมวลผลแบบ
Object-oriented computing
วิวัฒนาการแหงระบบ Modular system
ภายใตระบบ modular system นั้น การทํางานตางๆ ภายในระบบคอมพิวเตอรจะถูกซอย
ออกเปนหลายๆ หนวยยอย (หรือที่เรียกวา module) ซึ่งแตละหนวยยอยนั้นตางมีความเปนอิสระในตัวของ
ตัวเอง สามารถดัดแปลงแกไข, ทดสอบ, และปรับปรุงไดตางหากกอนที่จะนํากลับมาประกอบกันเขาใหมเปน
ผลลัพธรวมไดในภายหลัง โดยมักจะมีระบบปฏิบัติการ อยางเชน MS-DOS เปนหนวยยอยหลักซึ่งทําตัวเหมือน
เปนแกนกลาง (microkernel) ของระบบ สําหรับใหหนวยยอยอื่นๆ เชน Windows หรือ networking ประกอบ
เขามา
อยางไรก็ตาม การใชระบบปฏิบัติการ DOS หรือ Macintosh เปนแกนกลางสําหรับติดตอกับ
ฮารดแวรคอมพิวเตอรใหกับหนวยยอยอื่นๆ ของระบบ Modular system ยุคตนๆ นั้น ก็ยังมิไดเปนรูปแบบการ
ประมวลผลที่ผสมผสานกลมกลืนเทาที่ควรนัก ยังคงมีความผิดพลาดอันเนื่องมาจากความไมมั่นคง (instability)
หรือความขัดแยงระหวางโปรแกรม (conflict) เกิดขึ้นใหเห็นไดบอยๆ ภายใตรูปแบบการประมวลผลดังกลาว
ซึ่งถาเปนเครื่องคอมพิวเตอรพีซีที่ใชระบบปฏิบัติการ MS-DOS เปน Microkernel ขอผิดพลาด
ที่วานั้นก็มักจะเกิดขึ้นเมื่อมีการเรียกโปรแกรมเขาไปจองพื้นที่ในหนวยความจํามากๆ โดยโปรแกรมที่วานั้น ก็
ไดแก โปรแกรมประเภท TSR (Terminate-and resident program), โปรแกรมพวก Device drivers, หรือ
- 2. 2
โปรแกรมพวก memory managers ฯลฯ แตถาเปนการประมวลผลแบบ Microkernel บนเครื่องคอมพิวเตอร
Macintosh ขอผิดพลาดดังกลาวก็มักจะมีสาเหตุมาจากการทํางานประเภท INITs* หรือพวก system
extensions ประเภทอื่นๆ
เพื่อแกไขปญหาขอผิดพลาดดังกลาว จึงไดมีความพยายามพัฒนาเทคนิคตางๆ เขามาใชประกอบ
ในระบบ modular system และเทคนิคการประมวลผลที่ดูเหมือนวานาจะเปนทางออกอยางดีของปญหาก็เห็น
จะไดแก การประมวลผลแบบ Object-oriented computing ซึ่งมุงเนนไปที่ตัว object ที่ถูกสรางขึ้นจาก
โปรแกรมหนวยยอยตางๆ และผลลัพธโดยรวมซึ่งประกอบขึ้นจาก object เหลานั้น มากกวาที่จะมุงเนนไปที่ตัว
โปรแกรมประยุกตเชนรูปแบบการประมวลผลเดิมๆ
ดังจะเห็นไดจากการที่เหลา
บริษัทผูผลิตระบบปฏิบัติการรายสําคัญๆ ตางพากันหัน
เหรูปแบบผลิตภัณฑของตนไปสูเทคโนโลยีการ
ประมวลผลแบบ object-oriented computing กัน
ตามๆ กัน ไมวาจะเปนบริษัท Microsoft
Corporation, Apple Computer Corporation,
IBM (International Business Machine) Corporation, Novell/USL (Unix Systems Laboratories), หรือ
Sun Microsystems Incorporated ฯลฯ
* INITs ความจริงก็จัดเปน System extensions หนึ่งเหมือนกัน โดยเฉพาะใน System 7
มักจะเรียกวา System extension รวมกันไปเลย เปนสวนการทํางานที่เกี่ยวของกับการติดตอกับผูใชอยาง
extra sounds, extra pictures, bizarre cursors, หรือ clocks ฯลฯ ซึ่งจะถูกโหลดเขาไปเก็บไวใน
หนวยความจํา RAM โดยอัตโนมัติเพื่อเตรียมพรอมสําหรับการทํางานทันทีเมื่อมีการเปดสวิทซเครื่องคอมพิวเตอร
แมคอินทอชขึ้นใชงาน (คลายๆ กับ Start up ของวินโดวสนั่นแหละ)
ตามปรกติ System extensions นับวาเปนสวนของโปรแกรมที่มีประโยชนเหลือคณา และชวย
อํานวยความสะดวกใหกับผูใชเครื่องคอมพิวเตอรแมคอินทอชเปนอยางมาก แตก็มีบางโปรแกรม System
extension เหมือนกัน ที่อาจจะกอใหเกิดปญหาใหกับการทํางานของเครื่องคอมพิวเตอรแมคอินทอชทั้งระบบ
อันเนื่องมาจากการเขาไปจับจองพื้นที่บนหนวยความจําใน RAM แลวไมยอมใหการทํางานที่สําคัญเขามาใช
หนวยความจําในตําแหนงดังกลาว โดยเฉพาะพวก System extension ของฟรีๆ ทั้งหลาย ไมวาจะเปน
freeware หรือ shareware
"Object-oriented computing" อยูใกลแคปลายจมูก
ผลิตภัณฑระบบปฏิบัติการประเภท object-oriented operating system ที่นับวาโดดเดนเปน
พิเศษก็เห็นไดแก ผลิตภัณฑ Taligent อันเปนผลิตผลที่เกิดขึ้นจากความรวมมือกัน (joint-venture) ระหวางสอง
บริษัทยักษใหญทางคอมพิวเตอร "IBM" และ "Apple" มีลักษณะเดนตรงที่ไดรับการออกแบบมาเพื่อการ
- 3. 3
ประมวลผลแบบ object-oriented โดยเฉพาะ ตั้งแตสวนพื้นฐานยอยที่สุดของระบบนั่นเลยทีเดียว (from-
scratch design)
แตถาจะถามวาผลิตภัณฑระบบปฏิบัติการ
แบบที่เปนทั้ง microkernel system และ object-oriented
system ชนิดใดที่นาจะมีความกาวล้ํานําสมัยมากที่สุดใน
ปจจุบัน คําตอบก็เห็นจะไดแก ผลิตภัณฑ NeXTStep จาก
บริษัท NeXT Computer Inc. เพราะถึงแมวาจะมิไดเปน
ระบบปฏิบัติการแบบ object ที่ถูกออกแบบจากสวนรากฐาน
ขึ้นมาเลยเชน Taligent แตมันก็เปนระบบปฏิบัติการแบบ
object รุนแรกที่มีใหผูใชคอมพิวเตอรไดใช ตั้งแตป ค.ศ. 1989 นั่นเลยทีเดียว (ในชวงแรกๆ นั้นผลิตภัณฑ
NeXTStep ยังคงจํากัดอยูเฉพาะกลุมเครื่องเวิรกสเตชั่นซึ่งทํางานภายใตระบบปฏิบัติการ Unix เทานั้น)
กระนั้น สําหรับผูใชคอมพิวเตอรที่คุนเคยกับระบบปฏิบัติการ Windows อยูเปนอยางดีแลว
รูปแบบการประมวลผลแบบ Object-oriented computing ที่พวกเขานาจะรูจักดีที่สุดนาจะเปนผลิตภัณฑ OLE
2.0 ซึ่งไดรับความนิยมสูงจนทางบริษัท Microsoft ตองรีบเข็นระบบปฏิบัติการ Cairo ออกมาอยางตอเนื่อง
อยางไรก็ตาม ระบบ OLE 2.0 หรือ Cairo ก็ยังจํากัดอยูเฉพาะกลุมผูใชวินโดวสเทานั้น ไมไดเปดกวางสําหรับผูใช
ระบบคอมพิวเตอรทั่วๆ ไปเชนผลิตภัณฑ OpenDoc
และสําหรับกลุมผูใชคอมพิวเตอรภายใตระบบปฏิบัติการตระกูล Unix ซึ่งเปนที่ยอมรับกันวามี
ความโดดเดนเปนพิเศษในเรื่องของการสื่อสารขอมูลภายในเครือขายเน็ตเวิรกแลว ปจจุบันก็มีโครงสรางทางส
ถาปตยสําหรับการประมวลผลแบบ Object-oriented computing ชื่อ "COBRA" ใหเลือกใชภายในกลุมไดอีก
เชนกัน จนนาจะเปนที่สังเกตไดวาปจจจุบันนี้ผูใชคอมพิวเตอรอยางเราๆ ทานๆ มีโอกาสที่จะตองเขาไป
เกี่ยวของสัมพันธกับการประมวลผลแบบ object นี้อยูแทบตลอดเวลา ไมวาจะรูตัวหรือไมก็ตาม เชน ผูใช
คอมพิวเตอรบางรายอาจจะเคยชินอยูกับการลากเอารูปตารางของ
Excel มาวางบนเอกสารของ Microsoft Word โดยที่ตัวเองไมทราบ
เสียดวยซ้ําวา ตัวเองกําลังใชการประมวลผลแบบ Object-oriented
computing อยู
คุณานูปการแหง Object-oriented OS
ระบบปฏิบัติการแบบ Fully object-oriented
operating systems ไดนําคุณประโยชนมาสูวงการคอมพิวเตอรคณา
นับประการ ประโยชนที่วานี้มิไดจํากัดเฉพาะเพียงเหลาโปรแกรมเมอร
ผูออกแบบและพัฒนาโปรแกรมระยุกตเทานั้น แตยังสงผลตอเนื่องไป
ยังเหลาผูใชโปรแกรมประยุกตทั่วๆ ไปอีกดวย
สําหรับเหลาโปรแกรมเมอรซึ่งติดตอกับคอมพิวเตอรใน
ระดับระบบปฏิบัติการ (system level) นั้นการประมวลผลแบบ
- 4. 4
object จะทําใหพวกเขาสามารถเจาะลึกลงไปในระบบปฏิบัติการเพื่อดัดแปลงแกไขรูปแบบการติดตอใหเหมาะสม
(customize) กับที่โปรแกรมประยุกตซึ่งตนพัฒนาขึ้นมาตองการโดยไมทําใหเกิดการสูญเสียความมั่นคงเชื่อถือได
(integrity) ของระบบคอมพิวเตอรโดยรวมไป
สวนในกลุมผูใชคอมพิวเตอรระดับทั่วๆ ไปซึ่งติดตอกับโปรแกรมประยุกต (application level)
การประมวลผลแบบ object จะทําใหผูใชคอมพิวเตอรผสมผสานการทํางานของโปรแกรมประยุกตชนิดตางๆ ไว
ภายในเอกสารไดอยางสะดวกสบาย สามารถนําสวนยอยๆ ของแตละโปรแกรมประยุกตในรูป object มา
ประกอบเขาดวยกันเปนผลิตภัณฑไดทันที ไมตองมานั่งเขียนโปรแกรมตั้งแตตนในทุกๆ สวน และหากตองการ
อัพเกรดผลิตภัณฑ ก็สามารถเลือกอัพเกรดไดเฉพาะเพียงบางสวนได
นอกจากนั้น การประมวลผลแบบ object ยังเปนแนวทางนําไปสูการพัฒนาระบบการ
ประมวลผลแบบกระจาย (Distributed computing) ที่มีประสิทธิภาพอีกดวย เนื่องจากแตละหนวย object
ประกอบไปดวยรหัสคําสั่ง และขอมูลอยูเปนกลุมๆ สามารถจัดสงไปมาระหวางเครือขายเน็ตเวิรกไดอยางสะดวก
(highly interchangeable) เวลาจะนําเอาการทํางานใดบนหนาจอไปทําบนเครื่องคอมพิวเตอรอีกเครื่องซึ่งอยู
หางออกไปในเน็ตเวิรก ก็ใชวิธีสง object ดังกลาวไปทั้ง object เลย
อยางไรก็ตาม สิ่งหนึ่งที่การประมวลผลแบบกระจายซึ่งสงผานขอมูลไปในรูป object นํามาสู
ผูใชคอมพิวเตอร ก็คือความไมแนนอนของตําแหนงสถานที่อยูของขอมูลซึ่งผูใชติดตออยู (จากเดิมที่ผูใชเคยทราบ
แนนอนวาขอมูลของตนถูกจัดเก็บบนสวนใดสวนหนึ่งของหนวยความจําสํารอง) เพราะขอมูลที่จัดเก็บไวภายใน
หนวย object นั้นสามารถที่จะเคลื่อนยายไปไหนตอไหนไดไมจํากัด
(roam) ขึ้นอยูกับวาในชวงเวลาขณะนั้นๆ สวนใดของระบบ
คอมพิวเตอรตองการใชขอมูลภายใน object ดังกลาวมากที่สุด
และดวยความไมแนนอนของตําแหนงที่อยูของขอมูลใน
รูป object นี่เอง ก็ทําใหเกิดความวิตกกังวลขึ้นในหมูผูใชคอมพิวเตอรที่
เกี่ยวของกับขอมูลอันเปนความลับคอนขางมาก เพราะมีความเปนไปได
ที่อาจจะมีผูไมประสงคดีตอเครื่องคอมพิวเตอรของตนเขากับระบบแลว
แอบลักเอา object ขอมูลอันเปนความลับไปเปดดู ดังนั้น ระบบปฏิบัติการ object-oriented Operating
System รุนหลังๆ จึงจําเปนตองเสริมการทํางานอยาง cryptographic protocol ซึ่งติดตอกันดวยรหัสลับ เพื่อ
จํากัดใหขอมูลใน object สามารถถูกเรียกดูไดเฉพาะผูใชที่ไดรับอนุญาตเทานั้น
แนนอน รูปแบบการทํางานตางๆ ที่กลาวมาจะยังคงไมปรากฏขึ้นเปนตัวตนที่แนนอนในขณะนี้
ยังตองไดรับการพัฒนาจากทีมงานผูออกแบบผลิตภัณฑระบบปฏิบัติการไปอีกสักระยะเวลาหนึ่ง แตก็คอนขาง
ชัดเจนแลววาผูใชคอมพิวเตอรอยางเราๆ ทานๆ คงไดมีโอกาสใชขอมูลในรูป object ผานทางเครือขายเน็ตเวิรก
ภายในอนาคตอันใกล โดยอาศัยผลิตภัณฑตอไปนี้| คือ ระบบ OLE (Object Linking & Embedding) ของ
บริษัท Microsoft; ระบบมาตรฐาน OpenDoc ซึ่งเกิดขึ้นจากความรวมมือกันระหวางบริษัทApple, IBM,
WordPerfect, Novell และ Borland; ระบบ DSOM (Distributed System Object Model) ของบริษัท IBM;
และระบบ frameworks ของบริษัท Taligent Inc., ฯลฯ
- 5. 5
"Microsoft's OLE" object บนวินโดวส
ในวงการโฆษณาประชาสัมพันธ
นั้นมีคํากลาววา "ประสบการณครั้งแรก มักจะ
เปนตัวบงชี้ถึงความนิยมในผลิตภัณฑ" ซึ่งนั่นก็เปน
ความจริง เพราะบอยครั้งที่ผูบริโภคมักจะปฏิเสธ
ผลิตภัณฑยี่หอใดยี่หอหนึ่งไปอยางตัดญาติขาดมิตร
ไปเลย หากวาการทดลองใชครั้งแรกนั้นไมเปนที่
นาประทับใจ หรือเปนความประทับใจในดานลบ
และผูบริโภคที่มีความซื่อสัตยตอชื่อยี่หอมากๆ
(brand loyalty) ก็อาจจะตกลงปลงใจกับ
ผลิตภัณฑใดผลิตภัณฑหนึ่งไปตลอดชีพเลยก็ได
หากวาการทดลองครั้งแรกนั้นใหประสบการณในทางที่ดีเปนอยางมาก
สําหรับในกลุมผูใชคอมพิวเตอรแลว ประสบการณครั้งแรกที่มีตอผลิตภัณฑ Microsoft's OLE
(Object Linking & Embedding) นั้นนาจะเปนไปในทางบวกเสียมากกวาที่จะเปนไปในทางลบ เพราะการ
เปดตัวครั้งแรกของผลิตภัณฑ OLE (version 1.0) ซึ่งติดตั้งมาในระบบปฏิบัติการ Windows 3.1 นั้นนับวา
สามารถสางความประทับใจใหกับผูใชวินโดวสอยางเหลือหลาย ดวยผลิตภัณฑ Microsoft's OLE ไดทําใหผูใช
วินโดวสสามารถสอดแทรก object จากโปรแกรมประยุกตตางๆ เขาไปในเอกสาร (client document) อยาง
สะดวกสบาย
โดยที่ object ซึ่งทํางานภายใตระบบ Microsoft's OLE จะยังคงความเชื่อมโยงสัมพันธกับ
โปรแกรมประยุกตซึ่งสรางมันขึ้นมา (server applications) อยูตลอดเวลา หากผูใชวินโดวสตองการดัดแปลง
รายละเอียดภายใน object การคลิ้กเมาสซ้ําๆ กันสองครั้ง (double clicks) ที่ตัว object ก็จะทําใหโปรแกรม
ประยุกตเจาของ object ดังกลาวถูกเปดขึ้นมาเพื่อการทํางานดัดแปลงแกไข object ไดโดยอัตโนมัต
อยางไรก็ตาม ผลิตภัณฑ Microsoft's OLE 1.0 ยังคงมีขอจํากัดในการทํางานหลายๆ ประการที่
ทําใหงานบนวินโดวสหลายๆ อยางดําเนินไปไมสะดวกเทาที่ควร ยกตัวอยางเชน การอางอิงสถานที่อยูของ
object แบบสัมบูรณ (absolute path) ของ OLE 1.0 นั้นมักจะทําใหความเชื่อมโยงระหวาง object และ
เอกสารถูกทําลายลงอยางสิ้นเชิง หากผูใชวินโดวสมีการเคลื่อนยายตําแหนงของไฟลลซึ่งรับผิดชอบ object
ออกไปจากตําแหนงไดเรกตอรี่เดิม
ขอจํากัดอีกอยางหนึ่งของผลิตภัณฑ OLE 1.0 ก็เห็นจะไดแกการที่ระบบใชวิธีเปดโปรแกรม
server applications ซึ่งเปนเจาของ object ขึ้นซอนทับอยูบนเอกสารหลักอีกทีหนึ่งนั้น ซึ่งอาจจะทําใหผูใช
วินโดวสถูกทําใหออกจากโปรแกรมที่ใชงานอยูโดยไมตั้งใจ หากเกิดไปคลิ้กเมาสในตําแหนงหนาจอที่อยูนอกเหนือ
ขอบเขตของหนาตางที่โปรแกรมประยุกตครอบครองอยู
นอกจากนั้น การจัดการหนวยความจําแบบเรียงตามลําดับของ OLE 1.0 (load from a
stream, or save to a stream) ก็ยังทําใหการทํางานโดยรวมของ OLE 1.0 เปนไปอยางเชื่องชาอยางมาก
เพราะจะตองเรียกเอา object ทั้ง object ขึ้นมาทุกครั้งที่มีการเรียกใช หรือถาตองการจะอัพเกรด object
- 6. 6
เพียงนิดๆ หนอย ระบบ OLE 1.0 ก็บังคับใหตองบันทึก object ลงไปใหมทั้ง object เลย แทนที่จะอัพเกรด
เฉพาะสวนที่มีการเปลี่นแปลงแกไขเทานั้น
"OLE 2.0" พัฒนาการอีกขั้นของ Microsoft's object
ดังนั้น หลังจากเปดตัวผลิตภัณฑ
Microsoft's OLE เวอรชั่น 1.0 ขึ้นมาไดระยะหนึ่ง บริษัท
Microsoft จึงตองออกผลิตภัณฑ OLE เวอรชั่น 2.0 ติดตามมา
ในรูปของโปรแกรมสวนขยายของ Windows 3.1 (Windows
3.1 extension) โดยใน OLE 2.0 นี้ไดมีการปรับปรุงแกไขขอจํากัดตางๆ ที่เคยปรากฏในผลิตภัณฑ OLE 1.0
ออกไปจนหมดสิ้น อยางเชน การอางอิงแบบสัมบูรณที่เคยเปนสาเหตุของการสูญเสียความเชื่อมโยงโดยถาวรของ
object ก็ถูกปรับเปลี่ยนไปใชการอางอิงตําแหนงที่อยูแบบสัมพัทธแทน ("moniker" adaptable link) ทําใหการ
เชื่อมโยงระหวางเอกสารยังคงสภาพเดิมตลอดไมวาจะมีการยายไฟลลขอมูลไปไหนตอไหน
สวนปญหาเรื่องการหลุดออกจากโปรแกรมโดยไมตั้งใจเพราะไปดับเบิ้ลคลิ้กเมาสนอกหนาตาง
ของโปรแกรมนั้น ผลิตภัณฑ OLE 2.0 ก็ปรับปรุงแกไขดวยการกําหนดรูปแบบเอกสารหลัก (container) เสีย
ใหม ทําใหเวลาที่ผูใชวินโดวสคลิ้กเมาสไปบน object โปรแกรมประยุกตซึ่งควบคุม object อยูก็จะถูกเปดขึ้น
แทนที่เอกสารหลักไปโดยอัตโนมัติ (in-place activation) มิใชการเปดหนาตางขึ้นมาซอนทับอยูบนเอกสารหลัก
เชนในผลิตภัณฑ OLE 1.0
ที่สําคัญ ในผลิตภัณฑ OLE 2.0 นั้น ยังขยายขอบเขตความสามารถในการจัดการ
หนวยความจําขึ้นไปจากเดิม ทําใหผูใชวินโดวสสามารถเรียกอาน หรือบันทึก object เฉพาะสวนที่ตองการ หรือ
เฉพาะสวนที่ถูกอัพเดทเพิ่มขึ้นจากเดิมได ไมตองบันทึก หรือเรียกขอมูลทั้งหมดภายใน object ในแตละครั้ง จึง
ทําใหการทํางานโดยรวมของของระบบ OLE 2.0 มีความสะดวกรวดเร็วกวาผลิตภัณฑ OLE 1.0 มากมายนัก
นอกจากนั้น บริษัทไมโครซอฟทยังไดเสริมการทํางานดานโปรแกรมตางๆ เพิ่มเขามาอีกมากมายภายในผลิตภัณฑ
OLE 2.0 ที่ออกมาใหมของตน
ฉนั้น เมื่อมองจากมุมองของผูใชคอมพิวเตอรทั่วไปที่มีการติดตอกับคอมพิวเตอรในระดับ
โปรแกรมประยุกต ผลิตภัณฑ OLE 2.0 จึงเปนรูปแบบการประมวลผลที่นาประทับใจเปนอยางมาก อยางไรก็
ตาม สําหรับผูใชคอมพิวเตอรอีกกลุมหนึ่ง คือ กลุมโปรแกรมเมอรผูออกแบบและพัฒนาผลิตภัณฑโปรแกรม
ประยุกตสําหรับใชงานกับระบบปฏิบัติการวินโดวสแลว ระบบ OLE 2.0 อาจจะเปนที่มาของความยุงยากใจบาง
ประการสําหรับเหลานักโปรแกรมเมอรทั้งหลาย
เพราะในการทํางานรวมกับระบบ OLE 2.0 นั้น โปรแกรมเมอรจําเปนตองปรับเปลี่ยนแนวคิด
ในการทํางานของตนไปจากเดิมคอนขางมาก จากที่เคยเขียนโปรแกรมใหครอบคลุมการทํางาน user interface
ซึ่งติดตอกับผูใชโปรแกรมประยุกตโดยตรง ก็ตองเปลี่ยนไปเขียนโปรแกรมประยุกตที่โอนออนผอนตามการทํางาน
ของระบบ OLE 2.0 ประดุจทาสผูภักดีคนหนึ่ง และปลอยการติดตอกับผูใชคอมพิวเตอรใหเปนหนาที่ของระบบ
OLE 2.0 แตเพียงผูเดียว
- 7. 7
ในขณะเดียวกัน ถึงแมวาจะสูญเสียอํานาจในการติดตอกับผูใชคอมพิวเตอรไปใหระบบ OLE
2.0 แลวแตโปรแกรมประยุกตที่ถูกออกแบบมาเพื่อการทํางานภายใต OLE 2.0 ก็ยังคงตองออกแบบการอิน
เทอรซเฟระหวางโปรแกรม (interface) ใหมีความมั่นคงเชื่อถือได เพื่อวาจะสามารถติดตอสัมพันธกับ object
ของโปรแกรมประยุกตอื่นๆ (object interaction) ไดอยางถูกตองมีประสิทธิภาพมากที่สุด
ความสัมพันธระหวาง OLE 2.0 และ C++
การทํางานที่ผสานสัมพันธระหวาง object หลายๆ object ของโปรแกรมประยุกตตางชนิดกัน
ภายใตระบบ OLE 2.0 นั้น
เปนไปโดยผานการทํางาน
QueryInterface ของสวน
เชื่อมโยงสัญญาณหลัก (root
interface) ของระบบ OLE 2.0
ซึ่งมีชื่อเรียกวา "IUnknown"
เวลาที่ตองมีการติดตอระหวาง
object เกิดขึ้น ตัวโปรแกรม
เจาของ object ก็จะติดตอไปยังการทํางาน QueryInterface เพื่อรองขอรูปแบบการอินเทอรเฟซที่เหมาะสม ซึ่ง
จัดเก็บไวในตารางระบุชนิดการทํางานเสมือน (virtual function table หรือเรียกสั้นๆ วา vtable)
ตาราง vtable ของระบบ OLE 2.0 นี้จะมีลักษณะคลายคลึงกับตาราง vtable ซึ่งถุกสรางขึ้น
โดยโปรแกรม C++ compiler แตจะไมจําเพาะกับชนิด และประเภทของของแพล็ตฟอรมคอมพิวเตอร หรือชนิด
ของโปรแกรมคอมไพลลเลอรเชน vtable ของ C++ compiler (โครงสรางตาราง vtable ซึ่งถูกสรางขึ้นโดย C++
compiler จะมีรูปแบบแตกตางกันไปตามชนิดของระบบคอมพิวเตอร หรือชนิดของโปรแกรมคอมไพลลเลอรที่ใช
แต vtable ของระบบ OLE 2.0 จะเปนมาตรฐานเดียวกันตลอดไมวาจะใชกับเครื่องคอมพิวเตอรแพล็ตฟอรมใด)
ความคลายคลึงกับโปรแกรม C++ นั้น สงผลใหระบบ OLE 2.0 สามารถใชรวมกับโปรแกรม
C++ ไดงายกวาการใชงานรวมกับโปรแกรมภาษาชนิดอื่นๆ ทําใหโปรแกรมเมอรที่มีความถนัดในภาษา C++
สามารถเรียกใช object ของระบบ OLE 2.0 โดยผานทางโปรแกรมภาษา C++ ไดอยางไมมีปญหาในขณะที่การ
เรียกใช object ของ OLE ผานทางโปรแกรมภาษา C ธรรมดานั้นผูใชโปรแกรม C จะตองใชความพยายามขึ้น
จากการใชโปรแกรม C++ อีกกวาเทาตัว เพราะจะตองมีการจัดสราง vtable และเรียกใชอยางถูกตองชัดเจน
ความโนมเอียงไปสัมพันธกับโปรแกรมภาษา C++(C++ bias) ของผลิตภัณฑ OLE 2.0 สงผล
ใหมันมีภาพลักษณที่แตกตางไปอยางเดนชัดเมื่อเทียบกับระบบ OpenDoc ซึ่งเปนรูปแบบการประมวลผล
object-oriented computing อีกชนิดที่ไดรับความนิยมไมยิ่งหยอนไปจาก OLE 2.0 เพราะหัวใจของระบบ
OpenDoc นั้น อยูที่ IBM's SOM (System Object Mode) ซึ่งใชภาษาคําสั่ง neutrality language ที่มีความ
เปนกลางมากที่สุดในหมูบริษัทผูผลิตคอมพิวเตอรทั่วๆ ไป (คลายๆ กับวา OLE 2.0 นั้นเปนระบบปด ในขณะที่
OpenDoc เปนระบบเปด)
- 8. 8
แตละหนวย object ภายใตระบบ OLE 2.0 นั้น สามารถรองรับการทํางานตางๆ ภายในระบบ
คอมพิวเตอรไดอยางหลากหลาย ไมวาจะเปน การจัดการหนวยความจํา (memory management), การ
เชื่อมโยงระหวางชื่อของ object (name binding), การสงผานขอมูลไปมา (data transfer), หรือการจัดเก็บ
ขอมูลในรูป object (object storage) ฯลฯ
ในหมูของการทํางานภายในระบบคอมพิวเตอรซึ่ง object สัมพันธเกี่ยวของอยูดวยนั้น สวนที่
นับวามีความสําคัญมากที่สุด เห็นจะไดแกการอินเทอรเฟซซึ่งระบุถึงวิธีการซึ่งแตละ object ใชการตกลง
แบงสรรปนสวนทรัพยากร (resource negotiation) กับเอกสารหลัก เชนวา จะใหภาพของเอกสารที่ประกอบ
ไปดวย object หลายๆ ชนิดนั้นปรากฏบนหนาจอมอนิเตอรนั้นมีลักษณะ
อยางไร, หรือจะจัดเก็บขอมูลไวในหนวยความจําในลักษณะใด ฯลฯ
กลาวไดวาผลิตภัณฑ " OLE 2.0" ของบริษัทไมโครซอฟท
นี้ เปนหนึ่งในสุดยอดระบบการประมวลผลแบบ object-oriented
computing ที่มีอยูในปจจุบัน เพราะเพรียบพรอมไปดวยการทํางานอันมี
ประสิทธิภาพแทบทุกอยางที่ผูใชคอมพิวเตอรจะคาดหวังไดจากผลิตภัณฑ
ประเภทนี้ จะขาดไปบางก็เพียงความสามารถในการทํางานดานเน็ตเวิรก
(networking) เทานั้น ซึ่งทางบริษัทไมโครซอฟทเองก็กําลังมีแผนที่จะ
ออกผลิตภัณฑระบบปฏิบัติการ distributed, object-oriented
Windows ใหมของตนออกสูตลาดในชื่อ "Cairo" ภายในไมเกินป ค.ศ.
1995 ที่กําลังจะมาถึงนี้
"OpenDoc" มาตรฐาน object ที่เปนกลาง
เมื่อบริษัทไมโครซอฟทมีการพัฒนาระบบการประมวลผล object-orient computing "OLE"
ออกสูตลาด และไดรับความนิยมจากเหลาผูใชคอมพิวเตอรอยางกวางขวางดังที่กลาวมาแลวนั้น มีหรือที่บริษัท
ยักษใหญทางคอมพิวเตอรอยาง บริษัท Apple Computer จะยอมนอยหนา จึงไดรวมมืออีกเจ็ดบริษัท
คอมพิวเตอร อันไดแก IBM, WordPerfect, Novell, Sun, Xerox, Oracle และ Taligent จัดตั้งหนวยงานกลาง
ขึ้นมาในชื่อ the Component Integration laboratories (CIL) เพื่อออกแบบผลิตภัณฑ OpenDoc อันเปน
โครงสรางทางสถาปตยกลางสําหรับการประมวลผลแบบ object-oriented computing โดยเฉพาะ
ระบบ OpenDoc นี้เปนโครงสถาปตยแบบ object-oriented compound document
architecture ซึ่งถูกออกแบบมาอยางเปดกวางและเปนกลางไมขึ้นกับรูปแบบการทํางานของระบบคอมพิวเตอร
ยี่หอใดยี่หอหนึ่ง (vendor neutral) สามารถใชไดกับโปรแกรมประยุกตที่ถูกออกแบบมาใหทํางานตางระบบกันได
(cross-platform architecture) ไมวาโปรแกรมประยุกตดังกลาวนั้นจะถูกออกแบบมาเพื่อใชงานบนแพล็ตฟอรม
ระบบ PC-compatible, ระบบ Macintosh, ระบบ Unix หรือ ระบบ Netware ฯลฯ
อยางไรก็ตาม ระบบ OpenDoc ที่วานี้ยังคงเชื่องชาลาหลังไปจากผลิตภัณฑ OLE 2.0 ของ
ไมโครซอฟทอยูคอนขางมาก เพราะจนแมกระทั่งบัดนี้ผูใชคอมพิวเตอรอยางเราๆ ทานๆ ก็ยังไมมีโอกสาใช
ผลิตภัณฑ OpenDoc ที่วานี้กันเสียที เทาที่มีอยูก็ยังคงเปนผลิตภัณฑ Alpha version สําหรับทดสอบลองใชกัน
- 9. 9
เฉพาะในหมูผูพัฒนาระบบเทานั้น และกวาจะถึงขั้นการทดสอบแบบ Beta test ก็คงจะตองลวงเขาชวงซัมเมอร
ของฝรั่ง ซึ่งเปนชวงของการประชุมใหญประจําปเหลาผูพัฒนาโปรแกรมประยุกตของบริษัทแอปเปล (the Apple
Worldwide Develoer's Conference) พอดี
รายละเอียดพื้นฐานของ OpenDoc
แกนหลักในการทํางานของระบบ OpenDoc อยูที่เทคนิคการจัดเก็บขอมูลในหนวยความจําแบบ
"Bento storage mechenism" ซึ่งมีชื่อแปลกๆ เพราะตั้งชื่อตามชุดอาหาร
ญี่ปุน Bento plates โดยอางอิงจากความหลากหลายของชนิดอาหารที่
ประกอบอยูบนชุดอาหาร Bento ที่วานั้น, เทคนิคการจัดสรางชุดคําสั่ง
script (Scripting technology) ที่สวนใหญถูกหยิบยืมมาจากชุดคําสั่ง
AppleScript, และแบบจําลองระบบ IBM's SOM (System Object
Model)
การจัดวางหนวย object ตางๆ บนเอกสารภายใตการ
ทํางานของ Bento storage mechanism นั้น แตละหนวย object จะมี
หมายเลขรหัสประจําตัวที่ชัดเจนแนนอน (persistent ID) ไมเปลี่ยนแปลง
ไมวา object ดังกลาวนั้นจะถูกเคลื่อนยายไปไหนตอไหนภายในระบบ
คอมพิวเตอร หรือขามระบบคอมพิวเตอร ทําใหผูใชคอมพิวเตอรสามารถเรียกใช object ที่ตองการกลับมาใชได
อยางสะดวกสบาย ไมตางไปจากการติดตอกับ object ในระบบ OLE 2.0
แตที่การทํางาน Bento storage mechanism ของระบบ OpenDoc แตกตางไปจากระบบ
OLE 2.0 อยางชัดเจนเห็นจะไดแกวิธีการจัดการกับหนวยความจํา เพราะมันมิไดจัดเก็บไวเฉพาะขอมูลทราน
แซกชั่นที่ระบุวามีการดําเนินการอะไรกับ object บนเอกสารบางเหมือนในผลิตภัณฑ OLE 2.0 แตสามารถจัดเก็บ
และเรียกคนรายการปรับปรุงแกไขที่มีตอ object แตละ object ตั้งแตตนจนจบออกมาดูไดดวย (multiple
revision storing & tracking)
นอกจากนั้น หากมีการดัดแปลงแกไขรูปแบบเอกสารโดยรวม (Compound document) ไป
จากเดิมหลายๆ แบบราง (several drafts) ระบบการจัดเก็บขออมูลบนหนวยความจําของ OpenDoc ก็จะเลือก
เก็บเฉพาะสวนที่ไดรับการเปลี่ยนแปลงแกไขเพิ่มขึ้นจากเดิมเทานั้น (incremental changes) มิไดจัดเก็บแบบราง
ทั้งแบบราง ทําใหสามารถลดพื้นที่จัดเก็บขอมูลบนหนวยความจําลงไปไดอยางมาก รวมทั้งยังทําใหการเรียกดู
ขอมูลเอกสารแบบรางเปนไปอยางสะดวกรวดเร็วอีกดวย
ความสามารถในการจัดการเอกสารที่ไดรับการปรับเปลี่ยนไปในหลายๆ แบบราง (revision
control) นี่เองที่ทําใหระบบ OpenDoc ดูเหมือนวาจะมีภาษีเหนือกวาผลิตภัณฑ OLE 2.0 ของบริษัท
ไมโครซอฟทอยูคอนขางมาก (บริษัทไมโครซอฟทยืนยันวาจะมีการเสริมความสามารถในการทํางานแบบ revision
control ใหกับผลิตภัณฑ Object-oriented Operating system ของตนเหมือนกัน แตคงตองรอใชในผลิตภัณฑ
ระบบปฏิบัติการ cairo ที่กําลังจะออกสูตลาดนั่นแหละ)
- 10. 10
ชุดคําสั่ง Scripting ของ OpenDoc
สวนชุดคําสั่ง Scripting ของระบบ OpenDoc นั้นก็ดังที่กลาวมาแลวขางตนวาจําลองมาจาก
ชุดคําสั่ง AppleScript ของระบบปฏิบัติการ Macintosh เปนสวนใหญ จะมีปรับปรุงเพิ่มเติมบางก็ในสวนของ
ความพยายามติดตั้งชุดคํากริยามาตรฐานใหอยูในรูปแบบ polymorphism อันนาจะเปนที่ยอมรับโดยทั่วไปมาก
ที่สุดเทาที่จะมากได (as general as possible verbs) โดยเฉพาะกับกลุมของโปรแกรมประยุกตที่ถูกออกแบบมา
เพื่อรองรับการทํางานของระบบ OpenDoc
ตัวอยางที่แสดงใหเห็นการครอบคลุมความหมายอยางกวางๆ ของคํากริยาในชุดคําสั่ง
OpenDoc's Scripting ก็ไดแก คําสั่งที่บอกวา "move to next item" นั้น หากเปนคําสั่งที่ใชกับเอกสารประเภท
เวิรด ก็จะหมายความถึงการเคลื่อนไปยังคําถัดไป (move to next word) แตถาเปนการทํางานบนเอกสารตาราง
สเปรดชีต คําสั่งดังกลาวก็จะหมายถึงการเคลื่อนที่ไปยังชองตารางถัดไป (move to next cell)
การตกลงใจใชเทคนิค Polymorphism กับชุดคําสั่ง OpenDoc Scripting language ของ
บริษัท Appleนี้ เปนผลสืบเนื่องมาจากประสบการณของบริษัทที่มีมาอยางยาวนานในผลิตภัณฑ HyperCard และ
เชื่อมั่นในกลไกการทํางาน XCMD (ยอจาก external command) mechanism ของ HyperCard จะอนุญาตให
นักโปรแกรมเมอรที่ตองการเสริมการทํางานของตนเขามาในระบบ HyperCard สามารถสอดแทรกคําสั่ง
arbitrary commands เขาไวภายในชุดคําสั่ง HyperCard's Scripting language ได
อยางไรก็ตาม การที่จะทําอยางวานั้นได นักโปรแกรมเมอรผูออกแบบโปรแกรมประยุกตสําหรับ
ทํางานรวมกับผลิตภัณฑ HyperCard จําเปนตองอาศัยลูกไม และเทคนิคพลิกแพลงหลายๆ ประการมาประกอบ
เขากับการทํางาน XCMD ดวย (ความลําบากเล็กๆ นอยๆ เหลานี้เปนสิ่งนาจะหลีกเลี่ยงได หากวาแบบจําลอง
ชุดคําสั่ง HyperCard Language's model ไดรับการออกแบบโดยมีการคํานึงถึงจุดนี้ไวตั้งแตแรก)
ดังนั้น เพื่อใหชุดคําสั่ง Scripting ของผลิตภัณฑ
OpenDoc มีความสละสลวยหมดจดงดงามมากขึ้น ทีมงาน
ผูออกแบบผลิตภัณฑจึงตกลงใจที่จะใชแบบจําลอง IBM's SOM
แทนที่จะเปน HyperCard Scripting เพราะชุดคําสั่ง IBM's SOM
Scripting นั้นไมขึ้นกับภาษาคอมพิวเตอรประเภทใดประเภทหนึ่ง
(language-independent engine) ทั้งยังเพียบพรอมไปดวย
ความสามารถในการทํางานแบบ Inheritance และ Method-
dispatching ทําใหนักโปรแกรมเมอรตางๆ สามารถรวมเอา
โปรแกรมประยุกตที่แตกตางกันมากๆ เขามาไวดวยกันภายในระบบเดียวกันได
ยิ่งไปกวานั้น ทีมงานผูออกแบบผลิตภัณฑ OpenDoc ของบริษัท Apple ยังมีแผนที่จะ
ออกแบบใหระบบ OpenDoc สามารถทํางานรวมกับระบบ OLE ของไมโครซอฟทได (OLE's compatible) อีก
ดวย ซึ่งถาแผนดังกลาวประสบความสําเร็จตามที่ทีมผูออกแบบมุงมายไว มันก็หมายความวาตอไปผูใชระบบ
OpenDoc จะสามารถนําเอาขอมูลในรูป object จากระบบ OLE เขามาประกอบ และใชงานภายในเอกสารของ
OpenDoc ไดดุจดังวา object ดังกลาวนั้น เปน object ที่ถุกสรางขึ้นโดยตัวระบบ OpenDoc เองเลย และตัว
- 11. 11
object ที่ถูกเขามาวางไวในเอกสาร Compound document ของระบบ OpenDoc ก็จะรับรูถึงตัวเอกสารใน
รูปแบบเดียวกับเอกสาร Container* ที่มันติดตออยูตามปรกติออยางไรอยางนั้น
ในทางกลับกัน ผูใชผลิตภัณฑ OLE 2.0 ก็สามารถจะดึงเอาขอมูลใน รูป object ซึ่งสรางขึ้น
โดยระบบ OpenDoc เขาไปใชในเอกสาร container ของตนในรูปลักษณแนวทางเดียวกัน เพียงแตตองผานการ
แปลงรูปแบบฟอรแมทของ object (reverse translation) สักเล็กนอย โดยอาศัยการทํางาน Application
layer ซึ่งกําลังอยูระหวางการดําเนินการพัฒนาโดยบริษัท WordPerfect (เปนความรวมมือระหวางบริษัท
WordPerfect, Borland, Claris, Lotus และบริษัทผูผลิตซอฟทแวรคอมพิวเตอรอื่นๆ )
* ระบบ OpenDoc และ OLE 2.0 มีวิธีการเรียกเอกสารซึ่งประกอบไปดวย object ตางๆ ของตนที่แตกตางกัน
ขณะที่ผลิตภัณฑ OpenDoc เรียกเอกสารดังกลาววา "Compound document" ผลิตภัณฑ OLE 2.0 กลับ
เรียกวา "Container"
ซึ่งหากจะถามวา การพัฒนาใหผลิตภัณฑ object-oriented operating system ทั้งสองระบบ
สามารถทํางานรวมกัน และสามารถเคลื่อนยาย object ไปมาระหวางระบบไดนี้ มีโอกาสเกิดขึ้นจริงมากนอย
เพียงไร คําตอบในขณะนี้ก็ยังคงตองบอกวามันไมใชเรื่องที่จะกระทําไดอยางงายๆ นัก กระนั้น มันก็มีลูทางและ
แนวโนมที่จะเกิดขึ้นไดคอนขางมากอยู เพราะอยางนอยแนวคิดพื้นฐานเรื่อง object ของผลิตภัณฑทั้งสองระบบนี้
ก็เปนไปในทิศทางเดียวกัน, มีรูปแบบการทํางานพื้นฐานอยาง save และ delete เหมือนๆ กัน และมีรูปแบบการ
อินเทอรเฟซที่คลายคลึงกันอยางมาก ฯลฯ
"SOM & COM modeling" ใครจะเปนหมู ใครจะเปนจา ?
สวนสําคัญที่รองรับระบบ OpenDoc และ OLE 2.0 อยู คือแบบจําลองของการประมวลผล
แบบ object สองชนิดที่ดูเหมือนวาจะแขงขันกันอยางเอาเปนเอาตายอยูในขณะนี้ คือ แบบจําลอง IBM's SOM
(System Oboject Model) และแบบจําลอง
Microsoft's COM (Component Object Model)
ซึ่งแตละแบบจําลองก็ตางมีรูปแบบโปรโตคอลซึ่งใช
สําหรับการติดตอระหวาง object ที่มีลักษณะเฉพาะตัว
แตกตางกันออกไป
ความแตกตางที่เห็นไดชัดระหวาง
แบบจําลอง SOM และ แบบจําลอง COM คือในขณะที่
แบบจําลอง SOM ของบริษัท IBM ใชภาษาคําสั่งที่
คอนขางเปนกลางสําหรับเหลาบริษัทผูผลิตผลิตภัณฑ
ทางคอมพิวเตอรทั่วๆ ไป (language-neutral) และมี
การสนับสนุนการทํางานแบบ Inheritance ซึ่งอนุญาต
- 12. 12
ใหแตละโปรแกรมประยุกตสามารถถายทอดคุณลักษณะไปยัง object ยอยๆ ที่มันเปนผูใหกําเนิดขึ้นมาได
(คลายๆ กับการถายทอดพันธุกรรมจากพอแมปูยาตายายไปยังลูกหลานนั่นแหละ)
แตแบบจําลอง COM ของบริษัทไมโครซอฟทกลับใชภาษาซึ่งคอนขางมุงเนนไปในลักษณะของ
ภาษา C++ เสียสวนมาก และแทนที่จะใชวิธีการสืบทอดคุณลักษณะตางๆ ของตัวโปรแกรมประยุกตไปยัง object
ซึ่งมันสรางขึ้นแบบแบบ Inheritance แบบจําลอง COM ก็เลี่ยงไปใชวิธีการเชื่อมโยงความสัมพันธระหวาง
โปรแกรมประยุกตและ object กันแบบ aggregation แทน
แบบจําลอง SOM ถูกนําออกสูตลาดคอมพิวเตอรครั้งแรกโดยบริษัท IBM ดวยการติดตั้งมากับ
ระบบปฏิบัติการ OS/2 2.0 เพื่อใชสนับสนุนการทํางาน class hierachy ในสวน WorkPlace Shell ของ
ระบบปฏิบัติการ OS/2 2.0 แตรูปแบบของแบบจําลอง SOM ในขณะนั้นยังมีสภาพเปนเพียงโปรแกรมประยุกต
ที่ใชสําหรับกําหนดลําดับชั้นของ object (object heirachies defining) และกระตุนเรียกเอา object ขึ้นมา
ทํางาน (object invoking) โปรแกรมหนึ่งเทานั้น
ภายใตการทํางานของแบบจําลอง SOM รุนแรกที่วานั้น เมื่อ SOM object หนึ่งเรียกกระตุนไป
ยังอีก SOM object หนึ่ง โปรแกรมการทํางาน SOM run-time engine จะทําหนาที่ขัดจังหวะการเรียก แลว
จัดการกําหนดตําแหนงเปาหมายของ object ที่ถูกเรียก, และกระตุนเอา object เปาหมายดังกลาวขึ้นมาทํางาน
พรอมกับที่จัดสงเอาคาพารามิเตอรตางๆ ที่เกี่ยวของกับการทํางานไปยัง object เปาหมาย ในรูปของขอมูลฐาน
สองมาตรฐาน (standard binary format parameter)
ดวยรูปแบบ
การทํางานดังกลาวของ
แบบจําลอง SOM ไดชวย
แกปญหาความไมผสมผสาน
ระหวางภาษา (poorly
interoperate) ที่เคยเปน
อุปสรรคสําหรับเหลา
โปรแกรมเมอรผูใชโปรแกรม
ภาษา OOP (Object-
oriented programing) language มาอยางเนิ่นนานลงได โดยปญหาความไมผสมผสานลงตัวระหวางภาษานี้
เดิมเกิดขึ้นเพราะยังไมมีมาตรฐานขอมูลฐานสอง (binary standard) ที่จะใชสนับสนุนการทํางานแบบ
inheritance และ Method dispatching ระหวางโปรแกรมที่ผานการคอมไพลลมาโดยโปรแกรมคอมไพลลเลอร
ที่ตางกันได
ตัวอยางของความไมผสมผสานระหวางโปรแกรมภาษาก็ไดแก การที่เราไมสามารถนําเอากลุม
โปรแกรม class libraries ซึ่งถูกเขียนขึ้นดวยโปรแกรมภาษา Borland C++ มาดัดแปลงงาน (extend) ดวย
โปรแกรมภาษา Microsoft C++ ได, หรืออีกกรณีหนึ่งก็ไดแกการที่เราไมสามารถจะนําเอากลุมโปรแกรม class
libraries ที่สรางขึ้นโดยโปรแกรม Microsoft C++ หรือ Borland C++ มาใชงาน (inherit) หรือดัดแปลง
(extend) ดวยโปรแกรมภาษา COBOL, C, หรือ Smalltalk ได ฯลฯ
- 13. 13
อยางไรก็ตาม ปญหาความไมผสมผสานระหวางโปรแกรมภาษาตางๆ เหลานี้จะสามารถกําจัดให
หมดสิ้นไปได หากปลอยใหโปรแกรม SOM เปนผูรับผิดชอบตอการทํางานสวน inheritance และ method
dispatching แทนที่จะปลอยใหเปนการทํางานของโปรแกรมภาษา Borand C++, Microsoft C++ หรือ
โปรแกรมภาษา Object-oriented programming language ประเภทอื่นๆ
นอกจากนี้ แบบจําลอง SOM ยังนํามาซึ่งคุณประโยชนอื่นๆ อีกหลายอยาง ที่เห็นไดชัดๆ ก็คือ
เรื่องความสะดวกรวดเร็วในการพัฒนาโปรแกรม (rapid development) อันเปนเรื่องที่ผูพัฒนาโปรแกรมสวน
ใหญมักจะใหความสําคัญกับมันเปนอยางมาก บางคนถึงกับเลิกใชโปรแกรมบางภาษาไปเลยเพราะความชักชา
เสียเวลา โดยเฉพาะกลุมโปรแกรมประเภทที่ตองมีการคอมไพลลโปรแกรมทั้งโปรแกรมใหมหมด (recompile)
ทุกครั้งมีการดัดแปลงแกไขอะไรเพียงนิดหนอยในโปรแกรม
ความรวดเร็วในการทํางานของแบบจําลอง SOM เปนผลมาจากการที่มันถูกออกแบบมาใหไม
จําเปนตองมีการคอมไพลลโปรแกรมใหม (recompile) ทุกครั้งที่การดัดแปลงแกไขโปรแกรม ผูใชแบบจําลอง
SOM สามารถเสริมรูปแบบการทํางานใหมๆ (new method) หรือคาตัวแปรจําเพาะที่ (local variables) เขาไป
ในโปรแกรมหลัก (base class) ไดโดยไมจําเปนตองคอมไพลลโปรแกรมดังกลาวเสียใหม ในขณะที่โปรแกรมซึ่ง
ผานการดัดแปลงแกไขจากเดิมไปแลวนั้นก็ยังคงความสามารถในการเรียกใชการทํางานเดิมๆ ที่เคยมีอยูใน
โปรแกรมหลัก (base class's method) ไดอยางไมมีปญหา
ความยืดหยุนของโปรแกรมดังกลาวมีความสําคัญอยางมาก หากวาเราตองการใหระบบ
คอมพิวเตอรสามารถพัฒนาขอบเขตความสามารถการทํางานขึ้นไปจากเดิมไดอยางไมมีปญหา ยกตัวอยางเชน
ถาเรามีการจัดสรางหนาตาง object สําคัญๆ ขึ้นมาหนาตางหนึ่ง โดยภายในหนาตางนั้นเกี่ยวของสัมพันธกับ
โปรแกรมประยุกตหลายๆ โปรแกรม เราก็คงไมคาดหวังวาจะตองกลับมานั่งคอมไพลลหนาตางดังกลาวใหมหมด
เมื่ออยูๆ วันดีคืนดีทางบริษัท IBM มีการอัพเดทระบบซี่งรองรับหนาตางดังกลาวเสียใหม
ตรงนี้เองที่แบบจําลอง SOM เปนเสมือนอัศวินขี่มาขาวเขามา เพราะมันทําใหผูใชไมตองคอม
ไพลลโปรแกรมเสียใหมทุกครั้งที่มีการเปลี่ยนแปลงของระบบหลัก (base system) อยางไรก็ตาม ความยืดหยุน
ดังกลาวของระบบก็มิไดเปนสิ่งจะไดมาฟรีๆ ตองแลกมาดวยขอจํากัดบางอยาง เพราะการติดตั้งแบบจําลอง
SOM เขามานั้นหมายถึงวาตัวโปรแกรมคอมไพลลเลอรจะไมสามารถปรับเปลี่ยนรูปแบบการสื่อสารระหวาง
object (interobject communication optimize) เชนเคยทําได
นอกจากนั้น เมื่อไมนานมานี้ทางบริษัท IBM ยังมี
การจะพัฒนาขีดความสามารถของแบบจําลอง SOM ใหขึ้นไปเลนบน
ระบบการประมวลผลบนเครือขายเน็ตเวิรกคอมพิวเตอรอยาง
IPX/SPX, TCP/IP, และ NetBIOS networks ภายใตชื่อ DSOM
(Distributed SOM) อีกดวย โดยแบบจําลอง DSOM ซึ่งไดรับการ
พัฒนาขึ้นมาใหมนี้ จะมีรูปลักษณที่ไทแตกตางไปจากแบบจําลอง
SOM เลยในสายตาของโปรแกรมเมอรทั่วๆ ไป เพียงแตวา
- 14. 14
แบบจําลอง DSOM นั้นจะมีโปรแกรม run-time engine ที่สามารถจับคู object เขากับคําสั่งรองขอ (request)
ตางๆ ไดอยางเหมาะสม ไมจํากัดวาคํารองขอดังกลาวนั้นจะมาจากกระบวนการทํางานประเภทใด หรืออยูภายใต
การทํางานของคอมพิวเตอรประเภทใด
แบบจําลอง COM
แบบจําลอง COM (Compound Object Model) ไดรับการพัฒนาขึ้นโดยบริษัทไมโครซอฟทไว
เพื่อใชงานกับผลิตภัณฑ OLE 2.0 ของตนโดยเฉพาะ มีเปาหมายในการทํางานไมตางไปจากแบบจําลอง SOM
ของบริษัทไอบีเอ็มสักเทาใดนัก เพียงแตใชรูปแบบวิธีการที่ตางออกไปเทานั้น ความแตกตางสําคัญอยูตรงที่
บริษัทไมโครซอฟทเลือกที่จะใชเทคนิค aggregation ในการเชื่อมโยงความสัมพันธระหวางโปรแกรมประยุกตกับ
object ที่มันสรางขึ้น แทนที่จะเปนเทคนิค inheritance เชนในแบบจําลอง SOM
การทํางานของเทคนิค aggregation ของแบบจําลอง COM นั้น จําเปนที่แตละ object จะตอง
ประกอบไวดวยคาตัวชี้ (pointer) ซึ่งระบุไปยัง object ที่อยูลําดับสูงขึ้นไป (higher hierachy) เชน สมมติวา
เรามีการจัดสราง object ในรูปตารางสเปรดชีตขึ้นมาสัก object หนึ่ง โดยตารางที่สรางขึ้นนี้มีขอพิเศษจาก
ตารางสเปรดชีตทั่วๆ ไปหนอยตรงที่ตองการใหขนาดความกวางคอลัมนของตารางสามารถปรับขยายไดตาม
ตองการ(flexible columns width) ไมจํากัดที่ขนาดความกวางขนาดใดขนาดหนึ่ง (fixed columns)
หากเปนการทํางานของโปรแกรมภาษา OOPs รุนเกาๆ ทั่วๆ ไป ก็คงจะตองมีการถายทอด
คุณสมบัติตางๆ ดานตารางตามที่กําหนดไปยัง object จากโปรแกรมพื้นฐาน (capabilties inherit) จากนั้นก็
จัดการครอบงําสวนการทํางาน display function ที่เกี่ยวของการแสดงภาพบนหนาจอ ใหจัดสรางตารางสเปรด
ชีตที่มีชองคอลัมนซึ่งสามารถปรับขยายขนาดได แลวตัวโปรแกรมคอมไพลลเลอรภาษา C++ หรือโปรแกรม SOM
run-time machine จะเปนตัวกําหนดสงคําสั่งการแสดงออกบนหนาจอมอนิเตอร (display call) ที่วานั้นไปยัง
object สเปรดชีตที่เราสราง พรอมๆ กับที่มีการสรางเสนทางการเดินทางของคําสั่งดังกลาวอีกสายหนึ่งไปยัง
object เดิมซึ่งเปนตนกําเนิดของตารางสเปรดชีต
แตสําหรับเทคนิค
aggregation ของแบบจําลอง COM แลว
มันจะไมมีการกําหนดทิศทางคําสั่งแสดงออก
บนหนาจอใหมโดยอัตโนมัติ (automatic
redirection) เชนแบบจําลอง SOM ผูใช
แบบจําลอง COM ตองระบุรายละเอียด
คาตัวชี้ซึ่งอางอิงไปยัง object ลําดับสูงขึ้น
ไป (upper class reference pointer)
เพิ่มใหกับตาราง vtable ของ object สเป
ปรดชีตที่ไดรับการดัดแปลงแกไขดวยตนเอง
ซึ่งการรวมเอา pointer เขากับ object นี้
เองที่ทางบริษัทไมโครซอฟทเรียกวาการ aggregate
- 15. 15
การ aggregrate หรือการผนึกคา pointer เขากับ object นี้มีความสําคัญอยางมากสําหรับ
แบบจําลอง COM เพราะการทํางาน QueryInterface ในแตละ object ของ OLE จะรูจักวาตองติดตอกับ
object อื่นๆ อยางไรบางก็อาศัยขอมูลภายในตาราง vtable (virtual function table) เทานั้น มันไมสามารถ
สืบคนกลับไปยัง object อื่นๆ ไดดวยตัวของมันเอง แมวา object นั้นจะเปนตนกําเนิดและเทือกเถาเหลากอของ
มันเองก็ตาม (ancestor objects)
ที่ทีมงานวิศวกรผูออกแบบโครงสรางทางสถาปตยของไมโครซอฟทเลือกตกลงใจที่จะใชเทคนิค
การ aggregation กับแบบจําลอง COM ของตนก็เนื่องมาจากเหตุผลวาตองการปกปองตัวโปรแกรมอันเปนตน
กําเนิดดั้งเดิมของ object จากขอผิดพลาดที่คาดไมถึง (fragile base class) อันเนื่องมาจากการดัดแปลงแกไข
รายละเอียดไปจากเดิม แตในขณะเดียวกันพวกเขาก็ไมตองการตัดขาดความสัมพันธระหวาง object กับรากฐาน
เดิมที่สรางมันขึ้นมา จึงใชวิธีเพิ่มคาตัวชี้ (pointers) เขาไปในตาราง vtable ของ object แทน
การปฏิวัติครั้งสําคัญของ Taligent
ระบบปฏิบัติการ Taligent นั้นนับวาเปนปรากฏการณที่คอนขางใหมในหมูระบบปฏิบัติการ
object-oriented operating system เพราะแทนที่จะไปนําเอาแบบจําลอง และโครงสรางทางสถาปตยที่มีๆ
อยูมาดัดแปลงแกไขใหมใหเปนการประมวลผลในแบบ object เชนผลิตภัณฑ object-oriented OS รายอื่นๆ
ทางบริษัท
Taligent กลับ
เลือกจัดสราง
ระบบปฏิบัติการใน
แนว object-
oriented ขึ้นมา
จากรากฐานเลย
ทีเดียว
ทําใหทุกๆ สวนของระบบปฏิบัติการ Taligent ไมวาจะเปนสวนโปรแกรมขับอุปกรณ (device drivers)
หรือสวนของโปรแกรมประยุกต (applications) ตางก็ลวนอางอิงถึงแบบจําลอง object เดียวกันทั้งสิ้น
(common object model) โดยทางบริษัท Taligent เชื่อวาดวยรูปแบบการพัฒนาบริษัทระบบปฏิบัติการแนวนี้
เทานั้น จึงจะทําใหระบบปฏิบัติการที่ไดมามีความบริสุทธผุดผอง ไมมีขอติดขัดขัดแยงอันเนื่องจากการผสม
กลมกลืนระหวางผลิตภัณฑตางระบบ และสามารถพัฒนาขยับขยายตอไปไดอยางไมจํากัด (completly
extensible)
พื้นฐานโครงสรางหลักของระบบปฏิบัติการ Taligent อยูที่สวนการทํางานที่เรียกวา
"framework" อันเปรียบเสมือนบังเหียนที่คอยควบคุมบังคับกลุมของ object ตางๆ ที่เขามาประกอบในระบบให
ดําเนินไปในิศทางเดียวกัน อยางไรก็ตาม คําวา Framework ของระบบปฏิบัติการ Taligent นี้จะแตกตางไปจาก
ความหมายของคําวา Framework เดิมๆ(conventional framework) ที่เคยรูจักกันมา
- 16. 16
โดยในความหมายของ Framework แบบเกาๆ ซึ่งประกอบไปดวยกลุมโปรแกรม Object
Windows Library (OWL) ของบริษัท Borland และกลุมโปรแกรม MacApp ของบริษัท Apple นั้น จะ
ครอบคลุมเฉพาะในระดับของการจัดสรางโปรแกรมประยุกตซึ่งทํางานภายใตระบบปฏิบัติการ Windows หรือ
Macintosh อันประกอบไปดวยกลุมโปรแกรม classes for Windows, controls, menus และรูปแบบการ
ทํางานของโปรแกรมประเภท GUI (Graphic User Interface) ประเภทตางๆ เทานั้น
ซึ่งการทํางานของ Framework แบบเดิมๆ หรือ Conventional framework นี้ จะมุงเนนไป
ที่ความสะดวกสบายและความเปนมาตรฐานในการติดตอกับผูใชคอมพิวเตอร ทําใหเหลาโปรแกรมเมอรทั้งหลาย
สามารถทุมเทเวลาสวนใหญไปมุงเนนไปที่การออกแบบโปรแกรมประยุกตของตนไดอยางลึกซึ้ง และมี
ประสิทธิภาพมากยิ่งขึ้น โดยปลอยใหสวนของการติดตอกับผูใชกลายเปนอํานาจหนาที่ของสวนการทํางาน
Framework ไป
แตสําหรับสวนการทํางาน Framework ของระบบปฏิบัติการ Taligent แลว มันจะลงลึกไปกวา
การทํางาน Framework แบบเดิมๆ มากมายนัก เพราะไดมีการเจาะลึกลงไปถึงกนบึ้งของระบบปฏิบัติการนั่น
เลยทีเดียว ซึ่งนั่นก็ยอมทําใหโปรแกรมประยุกตตางๆ ที่ถูกเขียนขึ้นเพื่อการทํางานรวมกับระบบปฏิบัติการ
Taligent มีอิสระในการทํางานไดมากยิ่งขึ้น แตก็อีกนั่นแหละ เสรีภาพในการออกแบบโปรแกรมประยุกตของ
โปรแกรมเมอรนั้นก็หมายถึงวาเหลาโปรแกรมเมอรจะตองมีความระมัดระวัง และความรับผิดชอบในการเขียน
โปรแกรมมากยิ่งขึ้นตามไปดวย จะตองระมัดระวังวาการดัดแปลงปรับรูปแบบการทํางานตางๆ ของตนจะตองไม
ไปรบกวนกับการทํางานของระบบปฏิบัติการโดยรวมดวย
กลาวโดยรวมๆ แลว ระบบปฏิบัติการ Taligent นี้ก็นับไดวาเปนระบบปฏิบัติการแบบ Object-
oriented OS ที่นาสนใจเปนอยางมาก เพราะเปนผลิตภัณฑที่ไดรับการออกแบบขึ้นเพื่องานประมวลผลแบบ
object ตั้งแตสวนรากฐานขึ้นมาเลยทีเดียว จะมีปญหาอยูบางก็เฉพาะเรื่องความไมแนนอนในนโยบายของ
บริษัทเทานั้น เพราะบริษัท Taligent นั้นเปนผลิตผลรวมระหวางบริษัท Apple และบริษัท IBM ดังนั้นจะทํา
อะไรสักอยางก็ติดขัดวาทางบริษัทแมของตนจะวาอยางไร (คลายๆ กับรัฐบาลผสมหาพรรคของไทยเรานั่นๆ แหละ
จะทําอะไรก็ดูเหมือนยึกยักเอาแนนอนไมคอยไดเหมือนกัน)
"NeXTStep" ผูมากอนกาล
ความฮือฮาในเทคโนโลยีการประมวลผลแบบ object-oriented computing ที่เกิดขึ้นภายใน
ชวงสองสามปที่ผานมา รวมทั้งขาวสารขอมูลที่ออกมาจากเหลาบริษัทผูผลิตผลิตภัณฑคอมพิวเตอรรายสําคัญๆ
เชน Apple, IBM, Microsoft และ Taligent ที่ปรากฏออกสูสายตาผูคนในวงการคอมพิวเตอรอยางตอเนื่อง
อาจจะทําใหผูใชคอมพิวเตอรอยางเราๆ ทานๆ หลงประเด็นไปไดเหมือนกันวา บริษัทเหลานี้นี่แหละที่เปนผูให
กําเนิดเทคโนโลยีการประมวลผลแบบ object-oriented ทั้งที่จริงๆ แลวพวกเขาเปนเพียงผูที่เขามาเก็บเกี่ยว
ผลประโยชนจากสิ่งที่บริษัท Next เขามาบุกเบิกหักรางถางพงแตแรกดวยผลิตภัณฑระบบปฏิบัติการ NeXTStep
ระบบปฏิบัติการ NeXTStep ซึ่งนับไดวาเปนผูเปดศักราชแหงเทคโนโลยีการประมวลผลแบบ
object-oriented ที่วานี้ไดเปนที่ปรากฏตอสายตาผูใชคอมพิวเตอรครั้งแรกก็ตั้งแตหาปที่แลว (ค.ศ. 1989) โดย
ถูกติดตั้งมากับผลิตภัณฑเครื่องคอมพิวเตอร Personal workstation ของบริษัท Next ประกอบไปดวย