![]() ![]() ![]() |
|
![]() ![]() โปรแกรมใหม่ๆ ที่เป็น Native สำหรับ osX เกิดขึ้นไม่เว้นแต่ละวัน โปรแกรมบางตัวก็ระบุว่าเป็น Cocoa-Based และบางตัวก็ระบุว่าเป็น Carbon-Based แต่ก็มีผู้พัฒนาซอพท์แวร์บางรายก็ฉลาดพอที่จะไม่เอ่ยถึงสิ่งที่ว่านี้แต่ ประการใดเพราะรู้ว่าผู้ใช้แมคส่วนใหญ่ไม่รู้หรือไม่ค่อยสนใจกับทั้งสองสิ่งที่กล่าวมาเลยก็ว่าได้ ตลอดเวลาทาง แอปเปิ้ลหมั่นบอกกล่าวกับบรรดาผู้พัฒนาซอพท์แวร์เกี่ยวกับประโยชน์ที่จะได้รับจาก Cocoa อยู่เสมอ ดังนั้นจึง ทำให้เหล่าผู้ใช้แมคหลงคิดไปว่าโปรแกรมที่เป็น Cocoa-Based นั้นเหนือกว่าโปรแกรมที่เป็น Carbon-Based โดยไม่ทราบข้อเท็จจริงเท่าที่ควร ทั้งๆ ที่การเลือก API หรือ Framework ซึ่งก็คือ Carbon และ Cocoa นั้น จะให้ผลดีผลเสียต่อผู้พัฒนาโปรแกรมมากกว่าผู้ใช้เป็นอย่างมาก สำหรับบทความชิ้นนี้ ซึ่งต้องขอขอบคุณ REAL Software อันเป็นที่มาของข้อมูล ซึ่งจะได้อธิบายถึง Carbon และ Cocoa ว่ามันคืออะไรกันแน่ มีความ แตกต่างกันอย่างไร และมีผลกระทบอะไรกับผู้ใช้บ้าง มารำลึกถึงประวัติศาสตร์กันเล็กน้อย ![]() อันน่าพิศวงด้วยเช่นกัน ในปีต่อๆ มาระบบปฏิบัติการสำหรับคอมพิวเตอร์แพลทฟอร์มอื่นๆ ต่างก็ได้พัฒนาขีด ความสามารถใหม่ๆ เรื่อยๆ อย่างเช่น Protected Memory หรือ Preemptive Multi-Tasking โดยคุณสมบัติ ดังกล่าวทำให้ระบบปฏิบัติการเหล่านี้มีการทำงานที่น่าเชื่อถือกว่าเดิมมาก แต่ทว่าทางแอปเปิ้ลเองกลับมิได้บรรจุ ความสามารถดังกล่าวใส่ในระบบปฏิบัติการของตนเลย โดยแอปเปิ้ลให้เหตุผลง่ายๆ ว่า ตัวโปรเซสเซอร์ในสมัย นั้นยังมิได้มีพัฒนาการให้มีความเร็วอย่างเพียงพอ ดังนั้นการบรรจุคุณสมบัติที่ว่านี้ลงใน Mac OS จึงเป็นงาน ใหญ่และยากลำบากอย่างสาหัสพอสมควร เนื่องจากต้องรื้อออกมาแก้ไขที่แกนของตัวระบบปฏิบัติการโดยตรง ซึ่งทางแอปเปิ้ลเองก็ได้พยายามลองมาหลายครั้งแล้วเช่นกัน แต่ก็ไม่ประสพผลสำเร็จ ในท้ายที่สุดแอปเปิ้ลจึงคิด ได้ว่า บริษัทควรจะซื้อระบบปฏิบัติการตัวใหม่แล้วนำมาประยุกต์ใช้บนแมคโดยตรงเลยจะเป็นวิธีง่ายกว่า ![]() ของ Sun ก็เคยเป็นทางเลือกหนึ่งของแอปเปิ้ล สุดท้ายก็ต้องมาลงเอยที่ระบบปฏิบัตการ NEXTSTEP จาก NeXT อันเป็นบริษัทที่ สตีพ จอปส์ ก่อตั้งขึ้นเมื่อครั้งถูกอัปเปหิออกจากแอปเปิ้ล จึงส่งผลให้ จอปส์ ได้กลับคืนสู่บ้าน หลังเก่าอีกครั้ง ระบบปฏิบัติการ NEXTSTEP นั้นมีคุณสมบัติต่างๆ เพียงพอตามที่แอปเปิ้ลต้องการ แต่ GUI หรือ หน้าตาของมันแตกต่างจาก Mac OS อย่างสิ้นเชิง ดังนั้นทางแอปเปิ้ลจึงได้จัดการดัดแปลงแต่งหน้าเสียใหม่ ให้มันมีหน้าตาเหมือน Mac OS ที่เราคุ้นเคยกันมากยิ่งขึ้น แอปเปิ้ลเรียกผลลัพท์ที่ออกนี้ว่า Rhapsody ตั้งแต่นั้น เป็นต้นมา Rhapsody ก็ได้กลายเป็นระบบปฏิบัติการใหม่เอี่ยมอ่องของชาวแมคที่มีหน้าตาใกล้เคียงกับ MacOS แต่ซอพท์แวร์ต่างๆ ที่มีอยู่แล้วอย่าง Photoshop หรือ MS Office ไม่สามารถรันบน Rhapsody ได้ ซึ่งแอปเปิ้ล จำเป็นต้องทำให้ซอพท์แวร์เหล่านี้ใช้กับ Rhapsody ให้ได้ เพื่อหวังจะให้ชาวแมคเปลี่ยนมาใช้ระบบปฏิบัติการใหม่ ตามที่แอปเปิ้ลต้องการ ![]() คนละภาษา ระบบปฏิบัติการทั้งสองนี้สามารถทำงานชิ้นเดียวกันให้บรรลุผลได้แต่จะทำในวิถีที่ต่างกัน ดังนั้นการ ที่จะนำเอาแอพพลิเคชั่นสำหรับ Mac OS มารันบน Rhapsody ให้ได้นั้น เราจำเป็นต้องเปลี่ยนโค้ดทุกบรรทัดของ แอพพลิเคชั่นนั้นๆ เป็นภาษาใหม่ทั้งหมดเพื่อให้ Rhapsody สามารถเข้าใจได้ แต่ปัญหาติดอยู่ที่ว่า แอพพลิเคชั่น เดิมส่วนใหญ่ของแมคนั้นเขียนมักจะขึ้นมาด้วยภาษา Pascal, C และ C++ ในขณะเดียวกันถ้าคุณต้องสื่อสารกับ Rhapsody ภาษาเดียวที่คุณจะใช้ได้ก็คือ Objective-C เท่านั้น อันภาษา Objective-C นี้เป็นภาษาใหม่ที่ NeXT พัฒนาขึ้นมาใช้เอง บรรดาผู้พัฒนาทั้งหลายที่ต้องการพัฒนาซอพท์แวร์ของตนให้สามารถรันบน Rhapsody นั้น นอกจากจะต้องเรียนรู้ภาษาใหม่แล้ว ยังต้องเขียนโปรแกรมขึ้นมาใหม่ทั้งหมดด้วยภาษานี้อีกด้วย แอพพลิเคชั่น แต่ละตัวมีโค้ดตั้งแต่หลายพันบรรทัดไปจนถึงหลายล้านบรรทัด จึงไม่แปลกที่บรรดาผู้พัฒนาซอพท์แวร์ทั้งหลาย ต่างก็รีรอไม่มีการตอบรับระบบปฏิบัติการตัวนี้ ดังนั้นจึงเป็นเรื่องเร่งด่วนสำหรับแอปเปิ้ล ที่จะทำให้ผู้พัฒนาเหล่า นี้สามารถโยกย้ายผ่องถ่ายซอพท์แวร์ของตนไปยัง Rhapsody ได้ง่ายขึ้น ก่อนที่ทุกอย่างจะสายไป API คืออะไร ![]() Application Programming Interface นั่นเอง โดย API จะเป็นตัวบอกระบบปฏิบัติการให้ทำงานชนิดต่างๆ ตั้งแต่งานง่ายๆ อย่างเช่น ให้ส่งเสียง Beep ไปจนถึงงานที่ซับซ้อนขึ้น เช่น การ Drag & Drop เป็นต้น ขอยก ตัวอย่าง เช่น ถ้าเราสั่งให้ Mac OS ส่งเสียง Beep ตัวแอพพลิเคชั่นก็ต้องเรียกใช้ฟังค์ชั่นจาก API ของ Mac OS ที่ชื่อว่า SysBeep() แต่ถ้าเป็น Rhapsody ต้องเรียกฟังค์ชั่น NSBeep ซึ่งฟังค์ชั่นทั้งสองจะให้ผลการทำงานที่ เหมือนกัน เพียงแต่จะมีรูปแบบการเขียนที่ต่างกันเท่านั้น Cocoa คืออะไรกันแน่ ![]() ต่างๆ ที่เขียนบนระบบปฏิบัติการ NEXTSTEP นั้น มักจะเขียนด้วยภาษา Objective-C ซึ่งใช้ฟังค์ชั่นจาก Cocoa APIs เป็นหลัก คุณจะเห็นได้ว่า มีแอพพลิเคชั่นบางตัวที่ติดมากับ Mac OS X เช่น Mail และ Chess ได้ถูกพัฒนา มาก่อนอยู่แล้วบน NEXTSTEP ดังนั้นมันจึงเป็น Cocoa-Based นั่นเอง นอกจากนี้แล้วยังมีแอพพลิเคชั่นจากค่าย อื่นๆ อีกหลายตัวที่เดิมเขียนขึ้นสำหรับระบบปฏิบัติการ NEXTSTEP แต่ต่อมาถูกอัพเดทให้รันบน Mac OS X ได้ แอพพลิเคชั่นเหล่านี้ก็ใช้ Cocoa APIs หรือเป็น Cocoa-Based เช่นกัน Carbon คืออะไร ![]() Mac OS ให้กลายเป็น Native OS X โดยการเพิ่ม APIs ชุดใหม่เข้าไปอีกชุดหนึ่ง อันมีนามว่า "Carbon" โดยที่ APIs ชุดนี้ จะมีชื่อฟังค์ชั่นและพารามิเตอร์ส่วนใหญ่เหมือนกับ APIs ของ Mac OS ซึ่งเป็นชุด APIs ที่บรรดานัก พัฒนาซอพท์แวร์แมคคุ้นเคยกันอยู่แล้ว ดังนั้นการแปลงแอพพลิเคชั่น จึงต้องการเพียงแค่การแก้ไขโค้ดหรือ อัพเดทโค้ดเพียงบางส่วนเท่านั้น ก็จะได้แอพพลิเคชั่นที่เป็น Native OS X อย่างสมบูรณ์แบบ กระนั้นถึงแม้ว่าจะ เป็นการแก้ไขโค้ดบางส่วนก็ตาม แต่มันก็ยังเป็นงานที่หนักหนาอยู่พอสมควรอย่างไรก็ดี วิธีนี้ถ้าเปรียบแล้วก็ยัง สบายกว่าการเขียนแอพพลิเคชั่นขึ้นมาใหม่ทั้งหมดอย่างแน่นอน Cocoa ดีกว่า Carbon จริงหรือเปล่า ![]() และ Core Services Layers ของ OS X ซึ่งตรงกันข้ามกับที่คนทั่วไปคิด เนื่องจาก Carbon APIs มิได้เรียก ฟังค์ชั่นผ่าน Cocoa APIs อีกทอดหนึ่ง จึงไม่มีการเสียเวลาใดๆ มากไปกว่า Cocoa APIs เมื่อใช้ Carbon APIs สรุปว่า ถ้าคุณต้องการเขียนแอพพลิเคชั่นขึ้นมาใหม่ซักตัวหนึ่ง ซึ่งรันบน OS X เท่านั้น คุณควรจะเลือกเรียนรู้ Cocoa APIs จะเหมาะสมกว่า เนื่องจากเป็น APIs ระดับสูงกว่า Carbon APIs แต่เท่าที่ทราบนักเขียนโปรแกรม บนแมครุ่นดั้งเดิมส่วนใหญ่ มักจะเขียนโค้ดที่มีอัลกอริทึ่มดีๆ เก็บสะสมใน Library มาเป็นระยะเวลาหลายปี เพราะ สามารถหยิบมาใช้ได้ตามที่ต้องการ บวกกับความรู้ที่ฝังรากลึกในภาษา C หรือ C++ จึงทำให้พวกเขาเลือกที่จะ ใช้ Carbon มากกว่าการที่จะต้องมาเริ่มต้นเรียนรู้ภาษา Objective-C อีกหนึ่งภาษา มิหนำซ้ำยังต้องเขียนโค้ด สำหรับซอพท์แวร์ที่ตนเคยเขียนมาแล้วอีกครั้งหนึ่ง จริงหรือที่แอพพลิเคชั่นที่เป็น Cocoa สามารถทำสิ่งต่างๆ ได้มากกว่าแอพพลิเคชั่นที่เป็น Carbon ![]() กันใน OS X อย่างไรก็ตามยังมีฟังค์ชั่นชุดย่อยๆ บางชุด ที่ทางแอปเปิ้ลเปิ้ลยังมิได้บรรจุลงไปใน Carbon ด้วย เหตุผลง่ายๆ เพียงเพราะว่า มันไม่มีจำเป็นใดๆ สำหรับแอพพลิเคชั่นที่ต้องถูกสร้างให้เป็น Native OS X แต่ใน ทางกลับกัน Carbon เองก็มีชุดฟังค์ชั่นย่อยซึ่งแอพพลิเคชั่นที่ใช้ Cocoa ไม่มีเช่นกัน ด้วยเหตุผลอย่างเดียวกัน นั่นก็คือ แอพพลิเคชั่นที่ใช้ Cocoa นั้น ไม่มีความจำเป็นต้องใช้ฟังค์ชั่นชุดนี้แต่ประการใด ซึ่งทางแอปเปิ้ลเองก็ ได้ทำงานเพื่อลดความแตกต่างของ APIs ทั้งสองให้เหลือน้อยที่สุดอยู่แล้ว แอพพลิเคชั่นที่เป็น Carbon-Based ที่ความเป็น Native OS X น้อยกว่า Cocoa-Based หรือเปล่า ![]() ดังนั้น แอพพลิเคชั่นที่เป็น Cocoa-Based จึงมีความเป็น Native OS X ไม่มากไม่น้อยไปกว่าแอพพลิเคชั่นที่เป็น Carbon-Based แต่อย่างไร จะมีปัญหาก็ตรงที่ Carbon APIs นั้นใหม่กว่า Cocoa APIs เพราะเพิ่งพัฒนาขึ้นมา ทีหลัง จึงอาจส่งผลให้มีบั้กต่างๆ บ้างในระยะแรกๆ แต่ปัญหาดังกล่าวจะค่อยๆ ถูกแก้ไขจากแอปเปิ้ลในอนาคต อย่างแน่นอน Cocoa จะเป็นอนาคตของ Mac OS X หรือเปล่า แล้ว Carbon จะถูกหมางเมินหรือไม่ ![]() แอพพลิเคชั่นสำหรับ OS X เท่านั้น Cocoa และ Objective-C อาจจะเป็นทางเลือกที่ถูกต้องสำหรับคุณ การเขียน โปรแกรมโดยใช้ Cocoa และ Objective-C อาจจะใช้โค้ดในการเขียนน้อยกว่า C/C++ และ Carbon APIs ในงานชิ้นเดียวกันก็จริง แต่บรรดานักพัฒนาซอพท์แวร์ที่มีอยู่ในขณะนี้ ดูเหมือนว่าจะเลือกใช้ C/C++ และ Carbon APIs อย่างนี้ไปต่อไปเรื่อยๆ อาจจะเป็นเพราะว่าพวกเขาได้ลงทุนไปกับซอพท์แวร์ที่เขียนด้วย C/C++ และ Carbon APIs ไปมากแล้ว อีกทั้งยังสะดวกในการแปลงโค้ดไปยังแพลทฟอร์มอื่นๆ ได้คล่องตัวกว่า ส่วน แอพพลิเคชั่นที่เขียนขึ้นมาด้วยภาษา Objective-C และ Cocoa APIs นั้นไม่สามารถแปลงไปยังแพลทฟอร์ม อื่นๆ ได้ และบรรดานักพัฒนาซอพท์แวร์ทั้งหลายก็ต้องการขายซอพท์แวร์ของตนในหลายๆ แพลทฟอร์มอยู่ แล้ว ซึ่งแอปเปิ้ลตระหนักดีในข้อนี้ ดังนั้นแอปเปิ้ลจะยังคงดำเนินการปรับปรุงทั้ง Cocoa และ Carbon APIs อีก ต่อไปอย่างแน่นอน เพราะว่าแอพพลิเคชั่นตัวหลักๆ อย่าง Photoshop และ MS Office นั้น ถูกเขียนขึ้นมาด้วย Carbon APIs ถ้าแอปเปิ้ลต้องการให้แอพพลิเคชั่นเหล่านี้ใช้เทคโนโลยี่ใหม่ๆ จาก OS X แล้วละก็ ทางบริษัทต้อง ทำให้เทคโนโลยี่ดังกล่าวสามารถถูกเรียกใช้ได้ผ่านทาง Carbon อย่างแน่นอน
|