วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2555

iPhone Programming – Road map


Language

การเขียนโปรแกรมบน iPhone นั้นแบ่งภาษาที่ใช้ในการเขียนหลักๆเป็น 3 ภาษา ( จริงๆมีอีกภาษาคือ objective-c++)
  • Objective C
  • C
  • C#
ภาษาอื่นๆหมดสิทธ์ อาจจะมีภาษาอื่นในอนาคต อย่างกรณีภาษา C# ทาง Apple ไม่ได้สนับสนุนโดยตรงแต่เกิดขึ้นมาจาก Mono-Project ถ้าหากเขียน java หรือ Visual Basic มาก่อน ก็คงต้องเลือกเอาละครับว่า ต้องเรียนรู้ภาษาใดภาษาหนึ่งเพิ่มเติมแน่นอน
แนะนำข้อดีของแต่ละอันดีกว่าว่ามันมีดีต่างกันยังไง
ภาษา C
ข้อดีของภาษา C ที่ผมเห็นว่ามันดีที่สุดคือ  การหาหนังสือเกี่ยวกับการเขียนโปรแกรมภาษา C ง่ายมาก หนังสือภาษาไทยก็มี เดินเข้าร้านหนังสือก็เจอแล้ว ( แต่ไม่ค่อยมีหนังสือภาษาไทยที่ลงลึกการเขียนโปรแกรมด้วย C สักเท่าไหร่ ) และไม่ใช่แค่หนังสือแต่รวมไปถึง source code, library, tutorial และมี community ที่ใหญ่มาก และมันเป็นภาษาที่นิยมแพร่หลายและเก่าแก่ และในปัจจุบันก็ยังนิยมใช้อยู่
ข้อเสียที่ผมคิดว่ามันน่าจะเป็นเรื่องของ การเขียนโปรแกรมด้วยภาษา C ให้ได้ดีนั้นค่อนข้างยาก ไม่ใช่ว่าภาษามันไม่ดี แต่เป็นเพราะว่าตัวภาษามันค่อนข้างจะมีรายละเอียดปลีกย่อยเยอะ กว่าจะเก่งใช้เวลาเรียนรู้นาน แต่ด้วยความสามารถของตัวภาษา มันสามารถลงลึกถึงขั้นจัดการหน่วยความจำหรือแม้กระทั่งตัว hardware โดยตรงได้ และนี่ก็เป็นดาบสองคม เพราะถ้าเขียนโปรแกรมให้มันจัดการหน่วยความจำไม่ดี โปรแกรมเราก็ทำงานได้ประสิทธิภาพที่แย่มากๆ และหนำซ้ำอาจจะไปทำให้ระบบรวนอีก ( สำหรับภาษา java หรืออื่นๆนั้น แทบจะไม่ต้องไปทำเขียนอะไรเกี่ยวกับหน่วยความจำเลย เพราะมันมี Garbage collector เอาไว้จัดการหน่วยความจำให้เรียบร้อย )
จริงๆแล้วการเขียนโปรแกรมด้วย ภาษา C นั้นจำเป็นต้องเพิ่งภาษา  Objective-C อยู่ดีเพราะเราต้องอาศัย interface builder แต่อย่างที่ผมบอกไว้ว่า Library ของภาษา C นั้นมีเยอะมาก เราสามารถนำ Library ของภาษาที่มีอยู่แล้วนำมาใช้ร่วมกันกับ ภาษา Objective-C ได้อย่างไม่มีปัญหา
สำหรับโปรแกรมที่ใช้ภาษา C เป็นหลักก็จำพวก Game ครับ
ภาษา Objective-C
ข้อดีของมันคือ ภาษา objective-c มันค่อนข้างเรียนรู้ง่าย ไม่ซับซ้อน ( เค้าบอกว่ามันเป็นเหมือนภาษา C ผสมกับ smalltalk ) และมี Framework, Library ให้ใช้เยอะมาก ภาษามีความยืนหยุ่นสูง และเนื่องจากว่ามันเป็น small super set of C นั่นก็แปลว่า เราสามารถใช้ lib หรือ code ของ C ได้ ( ไม่ใช่ C++ น่ะ ) และตัวภาษายังอนุญาติให้เราเข้าไปจัดการหน่วยความจำได้เหมือนกัน แต่ก็ไม่ยืดหยุ่นมากเท่ากับ c และมันยังมี Garbage Collector ในกรณีที่ไม่ต้องการจัดการหน่วยความจำเอง (แต่ในกรณีของ iPhone Garbage Collector จะไม่สามารถใช้ได้) และข้อดีที่สุดคือ การเขียน application บน iPhone นั้น ถ้าเขียนด้วยภาษา objective-c คือมันมี interface builder ทำให้เราออกแบบ User Interface ได้อย่างง่ายดาย
ข้อเสียคือ หนังสือให้อ่านน้อยมาก *** ย้ำว่าน้อยมาก *** หนังสือภาษาไทยตอนนี้เท่าที่เห็นมีเล่มเดียวคือ iPhone Programming Cook Book และจำนวนแหล่งความรู้เพิ่มเติมของ Objective-C นี้ก็น้อยมาก ติดปัญหาก็ไม่รู้จะไปหาคำตอบได้ที่ไหน อย่างเวปของไทย ที่เกี่ยวกับ Objective-C ก็น้อยมากๆ เทียบกับ .net หรือ java ก็คนละเรื่องเลย ( บางคนอาจะไม่เคยได้ยินชื่อภาษา Objective-C มาก่อนด้วยซ้ำไป ) จากสิ่งนี้ทำให้ การหา source , tutorial นั้นยากตามไปด้วย ต้องหาคำตอบหรือความรู้เพิ่มจากเวปของต่างประเทศค่อนข้างเยอะ คนไม่เก่งภาษาอังกฤษ ก็ลำบากหน่อย
ภาษา C#
ในความคิดส่วนตัวของผมคิดว่า C# เป็นภาษาที่ควรจะพิจารณาเป็นลำดับสุดท้าย เพราะเนื่องด้วยว่า Apple ไม่ได้สนับสนุนโดยตรง และการเขียน iPhone ด้วย C# นั้นต้องการ IDE ของ mono-project ซึ่งต้องซื้อเพิ่มเติม ราคาก็บาทอยู่เหมือนกัน ที่สำคัญครับยังต้องเขียนบน mac และอาศัย iPhone SDK อยู่ดี เหมาะสำหรับ โปรแกรมที่มีอยู่แล้วใน platform อื่นที่เขียนเป็น C# อยู่แล้วมากกว่า ถ้าใครสนใจจริงๆ ก็ไปอ่านรายละเอียดเพิ่มเติมได้ที่่ http://monotouch.net/
ส่วนเรื่องอื่นๆในรายละเอียดของภาษาว่าแตกต่างกันอย่างไรในแบบลึกๆ ลองไปดูเพิ่มเติมได้ที่
แล้วควรจะเลือกภาษาใด ?
จากประสบการณ์ของผมขอแนะนำให้ศึกษา ภาษา Objective-C เป็นภาษาหลักส่วนภาษาอื่นๆเป็นภาษารอง

Framework

apple ได้ออกแบบ Framework มาเป็น 2 อย่างคือ
  • Cocoa
  • Carbon
สองอย่างนี้ มันสามารถทำงานร่วมกันได้ในบางส่วน แต่โดยปกติแล้วจะแยกจากกัน สำหรับการเขียนโปรแกรมบน Mac นั้น ถ้าเขียนโปรแกรมด้วยภาษา objective-c นั้นเราจะใช้ Cocoa ส่วน C/C++ นั้นจะใช้ Carbon ดังนั้นถ้าหากเลือกได้ว่าจะเขียน ด้วยภาษาใดแล้วมันก็เหมือนเป็นการบังคับไปเลยว่า เราต้องใช้ Framework แบบไหน แต่ข้อดีของมันก็คือว่า ทั้ง Cocoa และ Carbon ออกแบบมาใกล้เคียงกันมาก ยกตัวอย่าง NSView ( เป็นคลาสหนึ่งใน Cocoa ) ในส่วนของ Carbon ก็จะมีคลาสที่คล้ายๆกันคือ HIView และมี method ที่คล้ายๆกันอีกต่างหาก ( แต่ concept การทำงานบางอย่างมันจะไม่เหมือนกันซะทีเดียว )
แต่สำหรับ iPhone แล้ว Apple ได้ออกแบบ Framwork ใหม่ที่มีชื่อว่า
  • Cocoa Touch
ซึ่งเป็น Framework ที่ออกแบบมาเหมือนกับ Cocoa แต่มีขนาดเล็กกว่า ฉนั้นแล้วการเขียนโปรแกรมด้วย iPhone นั้นก็ต้องใช้ Cocoa Touch ครับ เว้นแต่ว่าจะเขียนโปรแกรมจำพวก Game อาจจะไม่จำเป็นต้องศึกษาให้ลึกซึ้งมากนัก

Tools

เครื่องมือที่ใช้ในการเขียนโปรแกรมสำหรับ iPhone นั้นมีสองอย่างคือ XCode และ monotouch สำหรับ C# ในส่วนของ Development Tool  ของ Apple เองนั้นจะประกอบไปด้วยส่วนย่อยๆอีก หลายอัน เช่น Simulator , Instrument
Xcode นั้นเป็นโปรแกรมที่แถมมาฟรีกับ Mac OSX โดยปกติจะอยู่ในแผ่นที่แถมมาตอนซื้อเครื่องในแผ่นที่ 2 ถ้าไม่มีก็โหลดได้จากเวปของ apple แต่ต้องสมัครเป็นสมาชิก adc member ก่อน และในตอนนี้ XCode ก็ออกมาเป็น version 3.1 แล้ว ถ้าหากเป็น Snow Leopard ก็จะเป็น 3.2

Ready ?

หลังจากรู้คร่าวๆไปแล้ว ว่าการที่เราจะเขียนโปรแกรมบน iPhone นั้นมีขั้นตอน และต้องรู้อะไรมาบ้าง แน่นอนว่าบางคนอาจจะต้องเรียนรู้ทุกอย่างใหม่หมด ตั้งแต่ ภาษา เครื่องมือ ในการเขียนโปรแกรม แต่อย่าไปกลัว เมื่อก่อนผมเองก็ยังไม่เคยเขียนโปรแกรมบน mac มาก่อนเลย ก็ยังอ่านและทดลองเองหมด ฉนั้นไม่ยากเกินความสามารถแน่ๆ
สรุปว่า ถ้าอยากเขียนโปรแกรมบน iPhone สิ่งที่จะต้องรู้ก็คือ
  • ภาษา c หรือ objective-c หรือ C# ( แต่ผมไม่แนะนำ )
  • Cocoa Touch
  • XCode
  • Interface Builder
ครั้งหน้าเราจะมาเริ่มเขียนโปรแกรมกันครับ

0 ความคิดเห็น:

แสดงความคิดเห็น