แนะนำ Julia ภาษาโปรแกรมมิ่งอนาคตไกลที่อาจแทนที่ Python ในอนาคต

Jirasak Buranathawornsom (Wan)
Super AI Engineer
Published in
2 min readApr 2, 2021
From https://en.wikipedia.org/wiki/Julia_(programming_language)

ทุกๆวันนี้ หากเราคิดถึงการทำงานด้าน Data Science หรือ Machine Learning แล้ว ภาษาโปรแกรมมิ่งที่เราจะนึกถึงเป็นอันดับต้นๆนั้นก็คงไม่พ้น Python อย่างแน่นอน ด้วยความที่เป็นภาษาที่มีความ High-Level, เข้าใจง่าย และเป็นมิตรกับผู้ใช้ อีกทั้งยังมีเครื่องมือ และ library ที่ครบครันสมบูรณ์ สามารถตอบโจทย์ตั้งแต่การ clean ข้อมูล, การทำ Data Visualization, การสร้าง model ของ machine learning จนไปถึงการ deploy model ของเราไปใช้จริง เรียกได้ว่า สามารถจัดการกับส่วนนี้ได้ตั้งแต่ต้นน้ำถึงปลายน้ำเลยทีเดียว

From https://life.wongnai.com/wongnai-search-improvement-using-machine-learning-part1-e0777b65979e

อย่างไรก็ดี ใช่ว่า Python จะไม่มีข้อเสียใดๆเลย ข้อเสียหลักๆของ Python นั้นก็คือความเร็วนั่นเอง ถ้าเทียบกับภาษา C++ นั้น Python ช้ากว่าได้ถึง 400 เท่าเลยทีเดียว เหตุผลหลักๆก็คือ Python เป็น Interpreted language (ในขณะที่ภาษาตระกูล C จะเป็น compiled language) ซึ่ง source code ของ Python นั้นแทนที่จะถูกแปลง(compile)เป็น machine code ก่อนส่งไป execute เหมือนใน compiled language, source code ของ Python จะต้องถูกส่งไปทั้งๆแบบนั้น ก่อนจะนำ ไปทำการแปล(inteprete)ให้เป็น machine code ก่อนจะนำไป execute ได้ ในส่วนนี้นั้นทำให้ตัวโค้ด ไม่สามารถถูก optimize กับ CPU ในรูปแบบ machine code ซึ่งส่วนนี้ทำให้เกิดความล่าช้าอย่างมาก ซึ่งถ้าจะถามว่าทำไม Python จึงไม่เป็น compiled language นั้น เหตุผลหลักๆ ก็คือ Python เป็น Dynamic Programming ซึ่งก็คือตัวแปรต่างๆสามารถเปลี่ยนชนิดไปมาได้หลังจากประกาศตัวแปรครั้งแรก จึงไม่สามารถทำการ compiled ก่อนส่งไป execute นั่นเอง

จะดีกว่านี้มั้ย ถ้าเราสามารถมีภาษาโปรแกรมมิ่งที่มีความยืดหยุ่นสูงเหมือน Python อีกทั้งยังให้ความเร็วที่สูงเหมือนภาษา C ในกรณีนี่เราไม่ต้องมองไปไหนใกลเลย ภาษาโปรแกรมมิ่ง ดังกล่าวนั้นเกิดขึ้นแล้วและมีชื่อว่า Julia นั่นเอง

Julia is a high-level, high-performance, dynamic programming language. While it is a general-purpose language and can be used to write any application, many of its features are well suited for numerical analysis and computational science.

https://en.wikipedia.org/wiki/Julia_(programming_language)

จุดเด่นที่สำคัญของ Julia นั้นก็คือความเร็วนั่นเอง สิ่งที่ทำให้ Julia แตกต่างจาก Python ก็คือ ระบบการ compile ที่เรียกว่า JIT (Just In Time) ซึ่งแทนที่ code จะถูก compile เป็น machine code ไว้ล่วงหน้าแบบ ภาษา C หรือ ข้ามขั้นตอนการ compile code แล้ว ส่งผ่าน intepreter โดยตรงแบบ ภาษา Python สิ่งที่ Julia ทำก็คือ code จะถูก compile ในขณะที่โปรแกรมกำลังถูก execute อยู่ ซึ่งในส่วนนี้ถึงแม้จะเพิ่มเวลาในการ compile code เข้าไป แต่โดยรวมแล้ว machine code ที่ถูก compile มาก็จะสามารถถูก optimize ไปด้วยทำให้โดยรวมแล้ว Julia มีความเร็วมากกว่า Python เป็นอย่างมาก

From https://vincebuffalo.com/blog/2012/03/07/thoughts-on-julia-and-r.html
From https://julialang.org/benchmarks/

จากรูปจะเห็นได้ว่าเมื่อเทียบกับภาษา C แล้ว ประสิทธิภาพของ Julia นั้นทำได้น่าประทับใจ และค่อนข้างใกล้เคียงมาก ต่างจากภาษา Python, R หรือ Octave ที่ task ส่วนมากนั้นใช้เวลาต่างกันโดยสิ้นเชิง

Syntax พื้นฐานของ Julia นั้นมีความใกล้เคียงกับ Python มาก เรียกได้ว่าสามารถทำความเข้าใจได้แทบจะในทันที โดยสามารถศึกษาได้จากหลากหลายช่องทาง เช่น Julia Academy เป็นต้น

อย่างไรก็ดี เมื่อเทียบกับ Python แล้ว ขนาดของชุมชนก็ยังต่างกันมาก นอกจากนี้ยังไม่มี library เท่า Python ทำให้ความสะดวกสบายยังต่างกันมาก และ Python ก็ได้วางตัวเป็นภาษาโปรแกรมมิ่งยอดนิยมในแทบจะทุกๆด้านไม่เพียงแต่ Data Science, AI แต่รวมไปถึงการทำเว็บ แอพพลิเคชั่น หรือแม้แต่เกม ทั้งยังได้รับการสนับสนุนจากชุมชนอย่างเหนียวแน่น Python ผู้เขียนจึงคิดว่า Python จะยังอยู่ในตลาดไปอีกนาน และไม่ถูกแทนที่ไปไหน ในเวลาอันใกล้นี้แน่นอนครับ

แหล่งที่มา

--

--