ทำแอปฯ ภาษาอะไร!? กับ 3 ภาษาแห่งปี 2020

เรื่องเด่น, บทความ

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

ภาษาในการเขียนโปรแกรมมีมากมายเหลือเกิน สำหรับในปี 2020 นี้ เราอยากแนะนำให้เพื่อนๆ รู้จักกับ 3 ภาษาต่อไปนี้ อาจจะไม่ถึงกับต้องเขียนเป็นแต่ควรเข้าใจในข้อดีของแต่ละภาษา เมื่อต้องเลือกเรียนหรือเลือกใช้จะได้เลือกได้เหมาะสมกับงานครับ

C#

ภาษาที่อยู่ในระดับท็อปมานาน ตั้งแต่เข้าสู่ยุค .Net ของไมโครซอฟท์มาจนถึงทุกวันนี้ C# ได้มีการวิวัฒนาการตัวเองอย่างต่อเนื่อง และแน่นอนว่าหากคุณเป็นนักพัฒนาเกมที่ใช้เอนจิ้น Unity แล้วหละก็ C# คือตัวเลือกที่หลีกเลี่ยงไม่ได้เลย (ขอใช้ประโยคเด็ดของธานอส “I am inevitable” 🤣)

จุดเด่น

  • ความเป็น OOP – C# มีความชัดเจนว่าตัวเองเป็น Object-Oriented Programming Language และมีฟีเจอร์ของ OOP อย่างครบครัน ข้อดีของ OOP ก็คือความง่ายในการออกแบบ, การทำ Unit Testing หากใครกำลังต้องการเริ่มต้นศึกษา OOP ก็ขอแนะนำภาษา C# เลยนะครับ
  • การพัฒนาข้ามแพลตฟอร์ม – ได้ยินชื่อ C# หลายคนคงนึกถึง .Net Framework บน Windows เพราะเป็นเทคโนโลยีที่เกิดขึ้นมาพร้อมกัน แต่ความสัมพันธ์นั้นเป็นอดีตไปแล้วครับ ปัจจุบันเรามีไลบรารี .Net Standard ซึ่งเป็นชุด API ที่ทำให้เราสามารถเขียนแอปครั้งเดียวแล้วนำไปรันได้บนทุกแพลตฟอร์ม
.Net Standard มาตรฐานกลางของ .Net ในทุกแพลตฟอร์ม

📝 บทความนี้ จาก Blognone เขียนอธิบายความเป็นมาของ .Net ได้เป็นอย่างดี ขอแนะนำครับ

  • Microsoft คอยหนุน – แน่นอนครับ เพราะ Microsoft เป็นผู้พัฒนาภาษานี้ขึ้นมาเอง และ C# ก็เป็นภาษาเรือธงของ .Net ด้วย (นอกจาก C# แล้วก็ยังมี F#, Visual Basic, ฯลฯ ที่เป็นภาษา .Net อีก) ดังนั้นรับรองได้เลยว่าภาษา C# จะไม่หายไปไหนและจะได้รับการพัฒนาต่อไปเรื่อยๆ อย่างแน่นอน

💡 เวอร์ชั่นปัจจุบันของภาษา C# คือเวอร์ชั่น 8 ซึ่งมีฟีเจอร์ใหม่เพิ่มเข้ามาหลายตัว เช่น readonly members เป็นต้น

C# ใช้ทำแอปฯ อะไรได้บ้าง

ถ้าในวงการเกม หลักๆ ก็คงใช้ C# กับเกมเอนจิ้น Unity ซึ่งสามารถ export ไปทำงานได้แทบทุกแพลตฟอร์ม ส่วนถ้าเป็นแอปฯ… ก็ทำได้หมดนะครับ จะเป็นแอปฯ มือถือ หรือแอปฯ เดสก์ท็อป นึกไม่ออกจริงๆ ครับว่ามีแอปฯ แบบไหนที่ใช้ C# ทำไม่ได้บ้าง (ก็ Microsoft เขาตั้งใจให้เป็นอย่างนั้นนี่นา 😎)

💻 ที่โปรเกมมิ่ง เราใช้ C# สำหรับพัฒนาเกมครับ

💡 ปัจจุบัน Unity มีตัวเลือกให้คอมไพล์โค้ด C# เป็น native ด้วยเทคโนโลยี IL2CPP ขั้นตอนการทำงานเป็นดังภาพด้านล่างครับ

ขั้นตอนการทำงานของ IL2CPP จากเว็บ Unity

Javascript

ภาษาที่ครองอันดับหนึ่งใน GitHub และอีกหลายเว็บไซต์มาตลอดหลายปี 🥇 จากภาษาที่ใช้ในการพัฒนาเว็บไซต์วิวัฒนาการกลายมาเป็นภาษาเอนกประสงค์ในปัจจุบัน

จุดเด่น

เฟรมเวิร์คภาษา Javascript Angular, React, Vue ตามลำดับ
  • เฟรมเวิร์ค – Javascript มีเฟรมเวิร์คให้เราสามารถพัฒนาแอปฯ ได้แทบบนทุกแพลตฟอร์ม ไล่เรียงตั้งแต่การทำเว็บไซต์ด้วย React, Angular, Vue ทำแอปฯ มือถือด้วย React Native, Ionic หรือทำแอปฯ เดสก์ท็อปด้วย Electron เป็นต้น เรียกว่าถ้าคิดจะทำแอปฯ สักตัวให้นึกถึง Javascript ก่อน แล้วลองหาดูครับว่ามีเฟรมเวิร์คที่เหมาะกับงานของเราหรือไม่
  • ไลบรารี – “Don’t Reinvent The Wheel” วลีคลาสสิคโดยเฉพาะกับเหล่านักพัฒนาอย่างเราๆ ความหมายก็คือถ้าของมันมีอยู่แล้วก็ให้ใช้มันซะ ไม่ต้องไปสร้างขึ้นมาใหม่ (ถ้าไม่จำเป็น) นอกจากเฟรมเวิร์คที่ได้กล่าวไปในข้อแรก Javascript ยังมีไลบรารีจำนวนมหาศาลให้เราเลือกใช้ ถ้าเขียน NodeJS ก็มี NPM ฝั่ง browser ก็มี Bower อยากได้ตัวช่วยอะไร ให้ลองค้นจาก registry เหล่านี้ดูก่อนนะครับ
  • พัฒนาการของภาษา – ECMAScript เป็นมาตรฐานของ Javascript (เราไม่เคยได้ยินชื่อ JS5, JS6 เคยได้ยินแต่ ES5, ES6 ใช่ไหมครับ?) ซึ่ง ณ เวลาที่เขียนบทความนี้ edition ล่าสุดของ ES คือ ES9 แล้วครับ จะเห็นได้ว่าภาษา Javascript มีพัฒนาการและมีการเพิ่มฟีเจอร์ใหม่ๆ เข้ามาอยู่ตลอดเวลา และเราก็ยังมี Typescript เป็นอีกทางเลือกสำหรับผู้ที่ชื่นชอบการเขียนโปรแกรมแบบมี type ด้วย

Javascript ใช้ทำแอปฯ อะไรได้บ้าง

เพราะ Javascript ถือกำเนิดมากับเทคโนโลยีเว็บ 🌐 ดังนั้นถ้าพูดถึงความนิยม Javascript ก็จะถูกนำมาใช้ในการทำเว็บไซต์เป็นหลักครับ ทั้งการพัฒนาฝั่งไคลเอนท์ด้วยเฟรมเวิร์ค React, Angular, Vue และฝั่งเซิร์ฟเวอร์ด้วย Express, NestJS

ส่วนฝั่งมือถือ (React Native, Ionic) กับเดสก์ท็อป (Electron) อาจจะยังถูกมองว่ามีปัญหาเรื่องประสิทธิภาพอยู่บ้าง แต่ถ้าแลกกับความสะดวกแล้วก็อาจจะคุ้มค่าในบางกรณีนะครับ

💻 ที่โปรเกมมิ่ง เราใช้ Javascript สำหรับพัฒนาเว็บไซต์และแอปฯ เดสก์ท็อปครับ

Dart

ปี 2019 ถือเป็นปีของภาษา Dart เลยก็ว่าได้ เพราะนอกจากเฟรมเวิร์ค Flutter จะเติบโตอย่างรวดเร็วและได้รับความนิยมเป็นอย่างมาก Dart ก็ได้ถูกจารึกให้เป็นภาษาที่เติบโตเร็วที่สุดแห่งปี 2019 ด้วย

จุดเด่น

  • ความยืดหยุ่น – Dart เป็นการผสมกันระหว่างการเขียนโปรแกรมแบบ Object-Oriented และ Functional ที่ลงตัว ตัวอย่างเช่น ถ้าเราเขียน C# และ Javascript ได้อยู่แล้ว การจะเรียนรู้การเขียนโปรแกรมด้วย Dart ก็จะกลายเป็นเรื่องง่ายไปเลย อยากได้ฟีเจอร์ encapsulation (OOP) หรือ immutable (FP) ก็ใช้ Dart เขียนได้ทั้งหมด
  • คอมไพเลอร์ – เหตุผลข้อนึงที่ Flutter เลือกใช้ Dart เพราะคอมไพเลอร์ของ Dart สามารถทำงานได้สองโหมดทั้ง JIT และ AOT กล่าวคือ ในระหว่างการพัฒนา คอมไพเลอร์จะทำงานในโหมด JIT ทำให้ขั้นตอนการคอมไพล์ใช้เวลาไม่นาน แต่ประสิทธิภาพของแอปฯ จะตกลงมาบ้าง และเมื่อต้องการ build ออกไปใช้จริง ก็จะคอมไพล์ในโหมด AOT ที่ใช้เวลาคอมไพล์นานกว่าแต่ได้แอปฯ ที่มีประสิทธิภาพสูงสุด
การทำงานของคอมไพเลอร์ของ Dart
  • Google คอยหนุน – ตั้งแต่ Google เปิดตัว Flutter ช่วงปี 2018 หลังจากนั้นเราจะเห็น Dart ในงาน conference ต่างๆ แทบทุกงานของ Google เช่น งาน Google I/O, Flutter Live, Flutter Interact ซึ่งก็หมายความว่า Google ให้ความสำคัญกับ Dart มาก และระบบปฏิบัติการใหม่ชื่อ Fuchsia ของ Google ก็จะใช้ Dart เป็นภาษาหลักในการพัฒนาด้วยครับ

Dart ใช้ทำแอปฯ อะไรได้บ้าง

เราสามารถใช้ Dart พัฒนาแอปฯ แบบ command line ได้ครับ แต่ถ้าพูดถึงความนิยมก็คงเป็นการใช้ร่วมกับ Flutter ในการพัฒนาแอปฯ มือถือมากกว่า และปัจจุบันเราก็สามารถใช้ Flutter ในการพัฒนาแอปฯ เดสก์ท็อปกับเว็บไซต์ได้ด้วย (แต่ยังไม่ค่อยสมบูรณ์)

💻 ที่โปรเกมมิ่ง เราใช้ Dart สำหรับพัฒนาแอปฯ มือถือครับ


บทความนี้อาจถูกใจหลายท่านและก็ไม่ถูกใจหลายท่านเช่นกัน เพราะในโลกเรายังมีภาษาอื่นๆ ที่ได้รับความนิยมอีกมากมาย เช่น Java, Python, Typescript, ฯลฯ แต่ผมขอยกมาเพียงแค่ 3 ภาษานี้เพราะเป็นภาษาที่เราใช้กันที่โปรเกมมิ่งครับ ถ้าเพื่อนๆ จิ้มดูผลงานของเราชิ้นไหนก็ตามแล้วสนใจก็สอบถามเข้ามาได้นะครับ ว่าใช้ภาษาไหนทำส่วนไหนบ้าง (ก็อยู่ใน 3 ภาษานี้แหละครับ)

ตัวอย่างผลงานของโปรเกมมิ่งพัฒนาโดยทั้ง 3 ภาษาในบทความนี้

แม้วงการการพัฒนาแอปฯ จะเริ่มอยู่ตัว เราเริ่มเห็นแล้วว่าเครื่องมือตัวไหนที่จะเติบโตและอยู่รอดต่อไป แต่ก็อย่าเพิ่งหยุดค้นหาและเรียนรู้ เพราะผมเชื่อเหลือเกินว่าไม่มีคำตอบไหนที่จะตอบคำถามได้ทุกคำถาม ในปี 2020 นี้เราคงได้เห็นการก้าวไปของเทคโนโลยีอีกมากมาย ก้าวตามให้ทัน Stay Hungry, Stay Foolish ครับ 😉

, , , , ,

บทความที่เกี่ยวข้อง

Menu