Tag Archives: Swift

Swift – The new road

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

Why Swift ?

ต้องยอมรับอย่างหนึ่งว่า Objective-C นั้นล้าหลังมาก เนื่องจากเป็นภาษา ที่เกิดมานานแล้ว ก่อนจะเกิด Java ด้วยซ้ำไป ทำให้ตัวภาษานั้นขาด feature หลายๆอย่างที่ภาษาโปรแกรมสมัยใหม่มี  แม้ปีหลังๆจะเพิ่มเติมหลายสิ่งเข้ามา เช่น properties , extension และ ARC  และตัวภาษาปรับปรุงให้มีประสิทธิภาพดีมากขึ้นกว่าเดิม แต่อย่างไรก็ตาม ภาษา Objective-C นั้นเป็นภาษาที่ใช้เวลาในการเรียนรู้ค่อนข้างสูง และมี syntax หน้าตาค่อนข้างประหลาดเช่น ยกตัวอย่างเช่น การเรียกใช้เมธอด ก็จะใช้สัญลักษณ์ [ ] ดังเช่น

[obj method];

แต่ในกรณีของภาษาอื่นๆเช่น java , c++ , c# และแม้กระทั่ง python ก็จะเขียนแทบจะเหมือนๆกัน คือ

obj.method();

เห็นได้ชัดเลยว่าภาษา Objective-C นั้น มันช่างแต่งต่างจากชาวบ้านเหลือเกิน ยิ่งในช่วงหลังมี block เข้ามาด้วย ตัว syntax ของภาษาก็ยิ่งแปลกประหลาดไปกันใหญ่ ปัญหาสองอย่างนี้มันเป็นปัญหาที่สาหัสพอสมควร เพราะนับวันผู้ใช้ Objective-C ก็มากขึ้นเรื่อยๆ และถ้ามองย้อนใน 5  ปีหลัง จะเห็นว่าภาษา Objective-C เพิ่ม feature ไปหลายอย่างมากมาย  เมื่อมองระยะยาวแล้วมันก็เหมือนแก้ปัญหาเฉพาะหน้าไปเรื่อยๆ  ทางออกของ Apple ก็คือสร้างภาษาใหม่ทดแทนภาษา Objective-C เพื่อแก้ปัญหาในระยะยาว และนั่นเลยเป็นที่มาของภาษา Swift

Swift History

ภาษา Swift นั้นมีจุดกำเนิดมาจาก Chris Lattner เขาเป็นคนเดียวกับ คนที่สร้าง LLVM Compiler ซึ่งเป็นคอมไพลเลอร์สมัยใหม่ มีประสิทธิภาพสูง (ผมเคยเขียนเรื่อง LLVM ไว้แล้ว)  Chris นั้นได้เข้ามาทำงานกับ Apple ตั้งแต่เมื่อ 2005 จากวิทยานิพนธ์ ป.เอก เรื่อง LLVM ( ถ้าหากสนใจการทำงาของ llvm ลองไปอ่านที่ Chris เขียนไว้ได้ http://aosabook.org/en/llvm.html )  เมื่อ Chis เริ่มทำงานกับ Apple สิ่งแรกที่ได้ปรับปรุงให้กับ Objective-C ก็คือโปรเจค Clang ซึ่งเป็น front-end compiler ให้กับภาษา C , C++ และ Objective-C จากการโปรเจคนี้เองทำให้ Chris เห็นข้อจำกัดของ Objective-C และต้องการจะเปลี่ยนมัน เขาจึงเริ่มสร้างภาษา Swift ในปี 2010

หากดูภาพใหญ่ของภาษา Swift แล้ว มันมีส่วนคล้ายกับภาษา Objective-C อยู่มาก ดังคำกล่าวในงานเปิดตัว Swift ไว้ว่า “Objective-C with out C” และเมื่อดู syntax ของภาษา Swift จะพบว่ามีลักษณะคล้ายกับภาษาสคริป แต่ตัวมันเองนั้นกลับไม่ใช่ภาษาสคลิป เหมือนอย่าง java script , php หรือ python แต่อย่างใด เพราะโปรแกรมภาษา Swift นั้นต้องผ่านการคอมไพล์ให้เป็นไบนารี่ไฟล์ เหมือนกับภาษา Objective-C , C, C++ เสียก่อน ถึงจะทำงานได้ (ไว้วันหลังจะเขียน blog เกี่ยวกับ feature ของภาษา)

คริสได้บอกว่าเค้าสร้าง Swift ด้วยการผสมผสานภาษาต่างๆเข้าไว้ด้วยกัน

“drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list”

ในการออกแบบภาษายังมีผู้เชี่ยวชาญทาง compiler และ document guru เข้ามาทำงานนี้อีกหลายคน ดังนั้นแล้วภาษา Swift จึงเต็มไปด้วยสิ่งใหม่ๆ idea ใหม่ๆ และการทำงานที่ง่าย และเรียนรู้เร็ว

Continue reading Swift – The new road