SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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
โปรแกรมพวก 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
ประมวลผลแบบ 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
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
"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
เพียงนิดๆ หนอย ระบบ 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
ในขณะเดียวกัน ถึงแมวาจะสูญเสียอํานาจในการติดตอกับผูใชคอมพิวเตอรไปใหระบบ 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
แตละหนวย 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
เฉพาะในหมูผูพัฒนาระบบเทานั้น และกวาจะถึงขั้นการทดสอบแบบ 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
ชุดคําสั่ง 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
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
ใหแตละโปรแกรมประยุกตสามารถถายทอดคุณลักษณะไปยัง 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
อยางไรก็ตาม ปญหาความไมผสมผสานระหวางโปรแกรมภาษาตางๆ เหลานี้จะสามารถกําจัดให
หมดสิ้นไปได หากปลอยใหโปรแกรม 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
แบบจําลอง 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
การ 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
โดยในความหมายของ 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 ประกอบไปดวย
Object oriented computing พยุหยาตราของเหล่า objects
Object oriented computing พยุหยาตราของเหล่า objects
Object oriented computing พยุหยาตราของเหล่า objects
Object oriented computing พยุหยาตราของเหล่า objects
Object oriented computing พยุหยาตราของเหล่า objects

Más contenido relacionado

Similar a Object oriented computing พยุหยาตราของเหล่า objects

ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
Nattapon
 
คอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้นคอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้น
Tonic Junk
 
คอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้นคอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้น
Tonic Junk
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
Buslike Year
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
karakas55
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
karakas14
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
karakas14
 
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
Da Arsisa
 
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
konkamon
 

Similar a Object oriented computing พยุหยาตราของเหล่า objects (20)

Ch1 com tech
Ch1 com techCh1 com tech
Ch1 com tech
 
ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
ใบความรู้ที่ 2 ส่วนประกอบของระบบคอมพิวเตอร์
 
คอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้นคอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้น
 
คอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้นคอมพิวเตอรเบื้องต้น
คอมพิวเตอรเบื้องต้น
 
Learnning01
Learnning01Learnning01
Learnning01
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
 
โครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการโครงงาน ระบบปฏิบัติการ
โครงงาน ระบบปฏิบัติการ
 
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
 
โครงงานคอม
โครงงานคอมโครงงานคอม
โครงงานคอม
 
คอมพิวเตอร์เบื้องต้น
คอมพิวเตอร์เบื้องต้นคอมพิวเตอร์เบื้องต้น
คอมพิวเตอร์เบื้องต้น
 
คอมพิวเตอร์เบื้อนต้น
คอมพิวเตอร์เบื้อนต้นคอมพิวเตอร์เบื้อนต้น
คอมพิวเตอร์เบื้อนต้น
 
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
บทที่ 1 ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
 
Chepter1
Chepter1Chepter1
Chepter1
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 

Más de Surapol Imi

การประมาณราคาก่อสร้างและดูแลห้องสะอาด
การประมาณราคาก่อสร้างและดูแลห้องสะอาดการประมาณราคาก่อสร้างและดูแลห้องสะอาด
การประมาณราคาก่อสร้างและดูแลห้องสะอาด
Surapol Imi
 
1ก่อกำเนิดมนุษย์
1ก่อกำเนิดมนุษย์1ก่อกำเนิดมนุษย์
1ก่อกำเนิดมนุษย์
Surapol Imi
 
การเปลี่ยนแปลงหลังการตาย
การเปลี่ยนแปลงหลังการตายการเปลี่ยนแปลงหลังการตาย
การเปลี่ยนแปลงหลังการตาย
Surapol Imi
 
เคล็ดลับวินโดวส์ ไอทีซอฟต์ ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
เคล็ดลับวินโดวส์  ไอทีซอฟต์   ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102 เคล็ดลับวินโดวส์  ไอทีซอฟต์   ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
เคล็ดลับวินโดวส์ ไอทีซอฟต์ ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
Surapol Imi
 
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
Surapol Imi
 
แนะวิธีเปิดร้านบนอินเทอร์เน็ต
แนะวิธีเปิดร้านบนอินเทอร์เน็ตแนะวิธีเปิดร้านบนอินเทอร์เน็ต
แนะวิธีเปิดร้านบนอินเทอร์เน็ต
Surapol Imi
 
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียงระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
Surapol Imi
 
ศึกหลายด้านของไมโครซอฟท์
ศึกหลายด้านของไมโครซอฟท์ศึกหลายด้านของไมโครซอฟท์
ศึกหลายด้านของไมโครซอฟท์
Surapol Imi
 

Más de Surapol Imi (20)

ตำแหน่งทางวิชาการกับคุณภาพอุดมศึกษา
ตำแหน่งทางวิชาการกับคุณภาพอุดมศึกษาตำแหน่งทางวิชาการกับคุณภาพอุดมศึกษา
ตำแหน่งทางวิชาการกับคุณภาพอุดมศึกษา
 
แนวทางสำหรับผู้ต้องการลดฝุ่นในห้องสะอาด
แนวทางสำหรับผู้ต้องการลดฝุ่นในห้องสะอาดแนวทางสำหรับผู้ต้องการลดฝุ่นในห้องสะอาด
แนวทางสำหรับผู้ต้องการลดฝุ่นในห้องสะอาด
 
การประมาณราคาก่อสร้างและดูแลห้องสะอาด
การประมาณราคาก่อสร้างและดูแลห้องสะอาดการประมาณราคาก่อสร้างและดูแลห้องสะอาด
การประมาณราคาก่อสร้างและดูแลห้องสะอาด
 
1ก่อกำเนิดมนุษย์
1ก่อกำเนิดมนุษย์1ก่อกำเนิดมนุษย์
1ก่อกำเนิดมนุษย์
 
การเปลี่ยนแปลงหลังการตาย
การเปลี่ยนแปลงหลังการตายการเปลี่ยนแปลงหลังการตาย
การเปลี่ยนแปลงหลังการตาย
 
เคล็ดลับวินโดวส์ ตอน เก็บเบี้ยใต้ถุนร้าน
เคล็ดลับวินโดวส์ ตอน เก็บเบี้ยใต้ถุนร้านเคล็ดลับวินโดวส์ ตอน เก็บเบี้ยใต้ถุนร้าน
เคล็ดลับวินโดวส์ ตอน เก็บเบี้ยใต้ถุนร้าน
 
เคล็ดลับวินโดวส์ ไอทีซอฟต์ ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
เคล็ดลับวินโดวส์  ไอทีซอฟต์   ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102 เคล็ดลับวินโดวส์  ไอทีซอฟต์   ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
เคล็ดลับวินโดวส์ ไอทีซอฟต์ ปีที่ 7 ฉบับที่ 81 ธ.ค. 2541 87-102
 
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
เมื่อต้องใช้เครื่องแมคอินทอชรันวินโดวส์
 
แนะวิธีเปิดร้านบนอินเทอร์เน็ต
แนะวิธีเปิดร้านบนอินเทอร์เน็ตแนะวิธีเปิดร้านบนอินเทอร์เน็ต
แนะวิธีเปิดร้านบนอินเทอร์เน็ต
 
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียงระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
ระบบสั่งงานคอมพิวเตอร์ด้วยเสียง
 
Personal videoconference system
Personal videoconference systemPersonal videoconference system
Personal videoconference system
 
ปกิณกะคดีในแวดวงพีซีปี1998
ปกิณกะคดีในแวดวงพีซีปี1998ปกิณกะคดีในแวดวงพีซีปี1998
ปกิณกะคดีในแวดวงพีซีปี1998
 
Van หนึ่งในธุรกิจมาแรงของสหรัฐ
Van  หนึ่งในธุรกิจมาแรงของสหรัฐVan  หนึ่งในธุรกิจมาแรงของสหรัฐ
Van หนึ่งในธุรกิจมาแรงของสหรัฐ
 
ศึกหลายด้านของไมโครซอฟท์
ศึกหลายด้านของไมโครซอฟท์ศึกหลายด้านของไมโครซอฟท์
ศึกหลายด้านของไมโครซอฟท์
 
Telecommuting เมื่อออฟฟิซเป็นฝ่ายวิ่งมาหาคน
Telecommuting เมื่อออฟฟิซเป็นฝ่ายวิ่งมาหาคนTelecommuting เมื่อออฟฟิซเป็นฝ่ายวิ่งมาหาคน
Telecommuting เมื่อออฟฟิซเป็นฝ่ายวิ่งมาหาคน
 
Realtime computing
Realtime computingRealtime computing
Realtime computing
 
Psion vs win ce
Psion vs  win ce Psion vs  win ce
Psion vs win ce
 
สุดยอดประดิษฐกรรมและการค้นพบแห่งปี 96
สุดยอดประดิษฐกรรมและการค้นพบแห่งปี 96สุดยอดประดิษฐกรรมและการค้นพบแห่งปี 96
สุดยอดประดิษฐกรรมและการค้นพบแห่งปี 96
 
อุปกรณ์ลูกผสมPctv
อุปกรณ์ลูกผสมPctvอุปกรณ์ลูกผสมPctv
อุปกรณ์ลูกผสมPctv
 
PCI local bus
PCI  local busPCI  local bus
PCI local bus
 

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 ประกอบไปดวย