วันที่: 18/06/2015 | หมวด: Apple, Featured, iOS, News | แท็ก: , , , , ,

bitcode-technology

iOS 9 รอบนี้ไม่มีเน้นเรื่องการปรับปรุงฟีเจอร์อะไรใหม่ แต่เน้นปรับปรุงด้านการพัฒนา ซึ่งหนึ่งในสิ่งที่น่าสนใจอย่างหนึ่งในงานแต่กลับไม่ค่อยมีใครพูดถึงคือ Bitcode

Bitcode คือการที่ App Store จะทำการ optimize โค้ดของแอพเพื่อให้เหมาะกับอุปกรณ์ก่อนที่จะดาวน์โหลดแอพมาลงที่เครื่อง

แต่ Bitcode มีบทบาทสำคัญมากในอนาคตของ Apple ซึ่งก่อนเราจะทำความรู้จัก Bitcode เราจะต้องรู้จักกับสิ่งที่เรียกว่า LLVM คร่าวๆ ก่อน

เนื่องจากบทความนี้ เนื้อหาค่อนข้างเป็นทางด้านเทคนิค หากใครไม่อยากอ่านขนาดเต็มเลื่อนลงไปสรุปได้เลยครับ

LLVM หรือ Low Level Virtual Machine เป็นคอมไพเลอร์แปลงโค้ดภาษาระดับสูงเป็น intermediate code หรือ machine code (ภาษาที่คอมพิวเตอร์เข้าใจได้) ปัจจุบันได้ใช้ในหลายภาษา และ Apple ก็ใช้เป็นคอมไพเลอร์หลักของ Xcode โดย LLVM จะมี 2 ส่วนคือ front-end เช่น โค้ดภาษาระดับสูงอย่าง Objective-C หรือ Swift และ back-end คือส่วนการแปลงโค้ดเป็น machine code

ผู้สนใจข้อมูลเกี่ยวกับ LLVM เต็มๆ อ่านเพิ่มเติมได้จาก LLVM.org

ส่วน Bitcode คือโค้ดที่ถูกคอมไพล์มาจากภาษาระดับสูงมาเป็น intermediate code และพร้อมคอมไพล์ต่อไปเป็น machine code ซึ่ง machine code จะแตกต่างกันไปตามสถาปัตยกรรม หากสถาปัตยกรรมต่างกันจะรันได้ไม่สมบูรณ์หรืออาจรันไม่ได้เลย

ปัจจุบัน App Store เก็บแอพไว้แบบ machine code เมื่อมีการเปลี่ยนสถาปัตยกรรม Apple ต้องให้นักพัฒนาคอมไพล์แอพใหม่ แต่เมื่อ App Store เก็บแอพเป็น Bitcode ซึ่งเป็น intermediate code แล้ว หากมีสถาปัตยกรรมใหม่ๆ Apple สามารถใส่ back-end ไว้ใน App Store เพื่อคอมไพล์จาก Bitcode เป็น machine code ก่อนดาวน์โหลดลงอุปกรณ์

transitioning-to-intel

Apple ไม่เคยกลัวการเปลี่ยนสถาปัตยกรรม

ในอดีต Apple เปลี่ยนสถาปัตยกรรมมาหลายรอบแล้ว โดยรอบใหญ่ครั้งล่าสุดคือตอนเปลี่ยนจาก PowerPC เป็น Intel เมื่อปี 2005 และออกเครื่องมือช่วยนักพัฒนา ส่วนการเปลี่ยนสถาปัตยกรรมครั้งย่อยล่าสุดคือ iPhone 5s เปลี่ยนไปใช้ CPU แบบ 64-bit

ตอน iPhone 5s ออก นักพัฒนาที่จะทดสอบแอพ 64-bit ต้องรอเครื่องจริงเพื่อทดสอบว่าแอพรันได้สมบูรณ์ ซึ่งอาจต้องใช้เวลาหลายสัปดาห์ และต้องคอมไพล์แอพใหม่ส่งไปยัง App Store

Bitcode จะมาช่วยเติมเต็มส่วนนี้ เพราะการแปลงเป็น intermediate code ก่อน จะทำให้นักพัฒนาไม่ต้องหาเครื่องจริงมาทดสอบ ยกตัวอย่าง หาก Apple เปิดตัวอุปกรณ์​ iOS ที่ใช้ชิพ Intel แบบปุบปับ ถ้าแอพบน App Store เป็น Bitcode จะใช้ได้ตั้งแต่วันแรก แต่ถ้าแอพบน App Store เป็น machine code อาจรันแล้วมีปัญหาได้

เนื่องจากการเปลี่ยนสถาปัตยกรรมแต่ละครั้งถือเป็นเรื่องใหญ่ Apple จึงจำเป็นต้องเตือนนักพัฒนาก่อน แต่หากมี Bitcode เข้ามาช่วย นอกจากจะเป็นประโยชน์ต่อนักพัฒนา ก็ยังเป็นประโยชน์ต่อ Apple ที่จะสามารถเก็บความลับได้ดียิ่งขึ้นด้วย เพราะไม่จำเป็นต้องเตือนนักพัฒนาก่อนเปิดตัว

Bitcode แม้จะดูสมบูรณ์ในทางทฤษฎี แต่ตอนนี้ Apple ยังไม่เปิดเผยรายละเอียดออกมามากพอ ฉะนั้น Framework ภายนอกที่ไม่ใช่ open-source อย่าง CocoaPods จะมีปัญหาเมื่อแปลงเป็น Bitcode

ทั้งนี้ Bitcode ยังไม่ได้รองรับ OS X รองรับเฉพาะ iOS เท่านั้น

สรุปแล้ว Apple กำลังทำอะไร

การที่ Bitcode ทำให้โค้ดเดิมใช้ได้บนอุปกรณ์สถาปัตยกรรมใหม่โดยไม่ต้องใช้เครื่องทดสอบใดๆ ทำให้เราอดคิดไม่ได้ว่า Apple อาจกำลังพัฒนาผลิตภัณฑ์ที่ใช้สถาปัตยกรรมใหม่ๆ เช่น Mac ที่ใช้ชิพแบบใหม่จากโปรเจคลับของ Bob Mansfield หรือ iPad Pro หน้าจอ 12.9 นิ้วอาจใช้ซีพียูที่มีสถาปัตยกรรมต่างออกไปจาก iPad รุ่นปัจจุบัน

แปลและเรียบเรียงโดย
ทีมงาน MacThai

บทความต้นฉบับจาก The Next Web

About nutmos

สนใจ Apple ชอบ Apple รัก Apple
Blog : nutmos.com
Social Media : Twitter

Leave a Reply