เริ่มต้นพัฒนาโปรแกรมบน iOS ในยุคที่มี Swift

เริ่มต้นพัฒนาโปรแกรมบน iOS ในยุคที่มี Swift




Which language should I learn ? Objective-C to Swift ?

คำตอบสั้นๆ เลย “ทั้งคู่” ภาษาใหม่ของ Apple อยู่บนชื่อหัวเรื่องของบทความนี้และอยู่ในทุกๆ ที่ที่เกี่ยวข้องกับการพัฒนาโปรแกรม iOS และ OS X ในเวลานี้ แต่อย่าโง่ไปหน่อยเลย มันไม่ใช่แค่ออกมาแล้วก็จะใช้ได้เลยทันทีเหมือนมือถือรุ่นใหม่ๆ หรอกนะ มันยังมีอะไรอีกหลายอย่างก่อนที่ Swift จะเข้ากันได้ดีกับ workflow ในปัจจุบันและจนถึงตอนนั้น Objective-C ก็ยังคงพัฒนาต่อเรื่อยๆ ผมจึงอยากจะแนะนำคนที่อยากเริ่มต้นเป็นพัฒนาโปรแกรมบน iOS ให้เริ่มจาก Objective-C ไม่ใช่ Swift อยู่ดีเพราะเหตุผลดังต่อไปนี้

Apple’s frameworks are built in Objective-C and C

พวกเขา (หมายถึง Apple: ผู้แปล) เริ่มที่จะเปลี่ยนนักพัฒนาทุกคนให้มาใช้ Swift อย่างช้าๆ ในส่วนหลักของการพัฒนา เมื่อไม่กี่เดือนก่อน มีนักพัฒนาเพียง 200 คนเท่านั้นที่ใช้ Swift ซึ่ง Apple เก็บ Swift ไว้ในกรุ โดยสร้างและพัฒนาภาษานี้มามากกว่า 4 ปีก่อนที่จะประกาศใน WWDC Keynote ปีนี้ แต่ Objective-C แข็งแกร่งกว่ามาก เนื่องจากส่วนหลักของ iOS ที่พัฒนาโดย Apple เองถูกพัฒนาและทดสอบมามากกว่า 20 ปี

Swift is still in beta and is subject to change

Xcode 6 beta 3 มีการเปลี่ยนแปลงครั้งสำคัญของภาษา Swift เกี่ยวกับการทำงานของ Array และ Dictionary ซึ่งทำให้ Code ในปัจจุบันที่ถูกเขียนขึ้น “พัง” ดังนั้นการเรียนรู้ภาษานี้ยากพอๆ กับการที่ต้องเรียนอะไรที่เราไม่รู้ว่ามันคืออะไร และที่แย่กว่านั้นคือเราไม่รู้ว่า "ไม่ความผิดพลาดของเราจริงๆ หรือปล่าว ?" ซึ่งแน่นอนว่า Swift จะยังคงมีความเปลี่ยนแปลงที่อาจจะส่งผลกระทบต่อ Code ต่อๆ ไปแม้หลังจากที่ปล่อยเวอร์ชั่น 1.0 ในอีกไม่กี่เดือนข้างหน้าก็ตาม ซึ่งแน่นอนว่าสิ่งแปลงประหลาดเหล่านี้จะไม่เกิดขึ้นใน Objective-C เนื่องจากทุกปัญหารู้กันในวงกว้างและถูกจัดทำเอกสาร หรือบันทึกไว้หมดแล้ว

Swift was designed for interoperability with Objective-C and uses the same runtime

แทบจะทุกอย่างที่คุณเรียนรู้มาในภาษา Objective-C สามารถเชื่อมโยงความเข้าใจแนวคิดได้หมดใน Swift และ iOS Developer เกือบทั้งหมดที่เขียนด้วย Objective-C มาจนถึงตอนนี้ หรือบางแนวคิดบน Swift สามารถเข้าใจได้ง่ายขึ้นถ้าเขียน Objective-C มาก่อน

Objective-C material is everywhere
เว็บไซต์ที่รวบรวม Objective-C Tutorial และตัวอย่าง หนังสือที่เกี่ยวข้องกับการพัฒนาโปรแกรมบน iOS ทั้งหมดล้วนเขียนโดยใช้ภาษา Objective-C หรือไม่ว่าจะเป็น Stackoverflow, Ray Wenderlich และเว็บมากมายอีกนับไม่ถ้วนที่เกี่ยวข้องก็ล้วนเขียนโปรแกรมโดยใช้ภาษา Objective-C ก็แน่ล่ะ เพราะภาษานี้มันอยู่มามากกว่า 20 ปีแล้วนี่นา ในขณะที่คุณเรียนการเขียนโปรแกรมบน iOS อยู่นั้น เมื่อเจอปัญหา หรือมีคำถาม คำตอบเกือบทั้งหมดที่คุณจะพบได้จาก Internet ยังคงเป็นภาษา Objective-C

Legacy code takes a long time to die

ถึงแม้ว่า Swift จะได้รับการยอมรับอย่างท้วมท้นจากนักพัฒนามากมาย ก็ยังคงมีโค้ดอีกเป็นล้านล้านบรรทัดที่เขียนด้วย Objective-C คุณไม่สามารถที่จะแก้ไข หรือแปลงโค้ดจาก Objective-C มาเป็น Swift โดยไม่มีความเข้าใจได้ง่ายๆ หรอก  และนอกจากนั้นยังมี 3rd party library และเครื่องมือเจ๋งๆ อีกนับพันที่ยังคงเขียนด้วย Objective-C ดังนั้นความเข้าใจการทำงานของสิ่งเหล่านี้จึงเป็นเรื่องสำคัญกว่าการใช้งานมันโดยไม่ระมัดระวัง

การเริ่มต้นการพัฒนาโปรแกรมบน iOS ด้วย Objective-C จะทำให้คุณแน่นในพื้นฐานในการพัฒนา และเรียนรู้ Cocoa (Touch) Frameworks มากยิ่งขึ้น ซึ่งใน Swift ก็ยังคงใช้อยู่เช่นกัน

Learning Objective-C

ที่ที่ดีที่สุดที่จะเริ่มต้นการเขียนโปรแกรมบน iOS ด้วยภาษา Objective-C ก็ไม่ต้องไปไหนไกลเลย Apple จัดให้คุณไว้มากมาย ทั้งแนวทาง, เอกสาร และตัวอย่างโค้ด เพื่อที่จะช่วยให้คุณเริ่มได้อย่างถูกที่ถูกทาง ผมจะแนะนำตามนี้เลย
และเอกสารที่สำคัญอีกอย่างคุณควรจะอ่านนั่นคือ iOS Human Interface Guidelines หรือที่เรียกสั้นๆ ว่า “The HIG” ผมทวีตบ่อยๆ โดยใช้ #badUX และ #livebythehig และนี่คือเอกสารอ้างอิงที่ผมหมายถึงล่ะ โปรแกรมห่วยๆ หลายต่อหลายตัวที่อยู่บน App Store เกิดจากการที่นักพัฒนาไม่ยอมใช้เวลา และความใส่ใจในการเอกสารนี้สักหน่อย เพื่อนำแนวทางที่กำหนดไปใช้

Other helpful resources

Luca Bernardi และ Alberto De Bortoli ได้เขียน Style Guide ของภาษา Objective-C ที่ผมว่าดีที่สุด   ซึ่งแนวทางในการเขียนนี้ช่วยให้โค้ดคุณสวยขึ้น
Ray Wenderlich เป็นเว็บซึ่งรวบรวมข้อมูลที่ยอดเยี่ยมเกี่ยวกับการพัฒนาโปรแกรมบน iOS และผมแนะนำอย่างน้อยให้คุณซื้อหนังสือ “iOS 7 by tutorials” และอ่านมันซะ (ซื้อ iOS 8 ด้วยนะ ถ้ามันออกมา) เมื่อคุณเข้าใจพื้นฐานของภาษา Objective-C บ้างแล้ว เว็บนี้จะสอนสิ่งที่เฉพาะทางมากขึ้น ยากขึ้น นอกจากนั้นเว็บนี้ยังมีความรู้อีกมากมาย ที่เรียกได้ว่าทุกอย่างที่คุณต้องการอาจจะอยู่ที่นี่ก็ได้นะ (ซึ่งก็มีทั้งฟรี และไม่ฟรีล่ะนะ)
NSScreencast จะต้องการแบบวีดีโอล่ะก็ จะต้องทำการสับตะไคร้โดยสนนราคา $9 ต่อเดือนเท่านั้น (แต่ก็มีวีดีโอฟรีด้วยนะ ไปลองดูก่อนได้) ซึ่งจะมีวีดีโอใหม่ๆ ทุกสัปดาห์ ซึ่งจะครอบคลุมทั้งเรื่องของเครื่องมือ, เทคนิค, framework และอื่นๆ ค่อยข้างคุ้มค่าทีเดียว

Next up, Swift

อย่าพึ่งรีบร้อนในการเรียน Swift ตอนนี้ ในตอนนี้ความเข้าใจที่ดีของการพัฒนาโปรแกรมบน iOS ด้วยภาษา Objective-C เป็นเรื่องที่สำคัญกว่า เพราะ Swift ยังคงมีการเปลี่ยนแปลงอย่างต่อเนื่องและความผิดพลาดหลายๆ อย่างที่คุณเจออยู่ในตอนนี้อาจจะไม่ใช่ความผิดของคุณก็ได้ ซึ่งมันอาจจะเป็นประสบการณ์การเรียนรู้ที่ค่อนข้างแย่เลยทีเดียว ในความคิดของผมนี่เป็นลำดับของ session ในงาน WWDC ที่จะช่วยให้คุณเรียนภาษา Swift โดยไม่ต้องรู้สึกแย่มากนัก (with the least amount of hair-pulling and screaming: ไม่รู้จะแปลว่าอะไรดี)

เข้าไปที่หน้าวีดีโอของ WWDC 2014 และดูตามนี้เลย

402 — Introduction to Swift
403 — Intermediate Swift
404 — Advanced Swift
406 — Integrating Swift with Objective-C
407 — Swift Interoperability In Depth
408 — Swift Playgrounds
409 — Introduction to LLDB and the Swift REPL
410 — Advanced Swift Debugging in LLDB
นี่เป็น session ที่จะแสดงตัวอย่างของจุดเด่นหลักๆ ใน Swift และ Playgrounds ที่เราได้เห็นกันใน Platforms State of the Union (เป็น keynote ที่แสดงภาพรวมของงานในส่วนของการพัฒนาโปรแกรมทั้งหมด: ผู้แปล)

ไม่ต้องกังวลว่าเรื่องรายละเอียดเยอะแยะที่จะต้องเรียนรู้ทั้งหมด ในวีดีโอจะเป็นการปูพื้น และแสดงตัวอย่าง ซึ่งจะทำให้เมื่อคุณนำ Swift ไปใช้งานจริงแล้ว จะทำให้อ่านเอกสารและแหล่งอ้างอิงต่างๆ ได้รวดเร็วขึ้น

Documentation

มีหนังสือสองเล่มจาก Apple ที่ออกมาใน iOS 8 pre-release documentation นั่นคือ The Swift Programming Language และ Using Swift with Cocoa and Objective-C ซึ่งผมแนะนำให้อ่านทั้งสองเล่ม

เมื่อคุณอ่านหนังสือ The Swift Programming Language ผมอยากแนะนำให้อ่าน Language Reference ก่อนจากนั้นตามด้วย Language Guide ลำดับในการอ่านนี้จะช่วยให้คุณเรียนรู้เร็วขึ้น เพราะส่วนของ Reference จะช่วยให้เห็นจุดที่สำคัญ และจุดที่คุณสนใจได้ชัดขึ้น ส่วนของ Guide จะเป็นตัวอย่างการใช้งานซะมากกว่า ซึ่งบางส่วนสามารถเปิดผ่าน Playgrounds เพื่อทดสอบความเข้าใจของคุณได้ด้วยนะ

Moving forwards by looking backwards

หลังจากอ่านบทความนี้แล้ว ได้เรียนรู้สิ่งต่างๆ เกี่ยวกับ Swift แล้ว คุณอาจจะอยากกลับไปหาโค้ดของคุณที่เขียนด้วย Objective-C และคิดว่าถ้าเราจะเขียนมันด้วย Swift จะเขียนอย่างไร และลงมือทำ และเปลี่ยนแปลงมันด้วยความเข้าใจว่า Swift นั้นแตกต่างจาก Objective-C มากในหลายๆ เรื่อง ซึ่งอาจจะมีตัวช่วยที่ดีกว่า มีวิธีการแก้ปัญหาที่ต่างออกไปพอมาเขียนด้วย Swift เมื่อได้เรียนรู้แล้ว ทำอีก ทำบ่อยๆ แล้วบอกคนอื่น ว่าคุณได้ค้นพบอะไร

สุดท้าย ผมหวังอย่างยิ่งว่าคุณจะสร้าง App ที่ดีออกมาได้ โชคดีนะ

Credit: Adam Iredale และต้นฉบับจาก Medium 

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น