Julia vs. Python ภาษาไหนดีสุดสำหรับวิทยาศาสตร์ข้อมูล?
ในวันที่ภาษา Python ได้กลายเป็นแกนนำในโลก Data Science (วิทยาศาสตร์ข้อมูล) และ Machine Learning ทราบหรือไม่ว่ามีภาษาหนึ่งที่ถูกสร้างขึ้นจากศูนย์เพื่อการวิเคราะห์ข้อมูลและทำ Data Science โดยเฉพาะ นั่นคือภาษา Julia ซึ่งเราจะเปรียบเทียบกันว่า Julia vs. Python ต่างกันอย่างไร
Julia vs Python
ในวันที่ภาษา Python ได้กลายเป็นแกนนำในโลก Data Science (วิทยาศาสตร์ข้อมูล) และ Machine Learning ทราบหรือไม่ว่ามีภาษาหนึ่งที่ถูกสร้างขึ้นจากศูนย์เพื่อการวิเคราะห์ข้อมูลและทำ Data Science โดยเฉพาะ นั่นคือภาษา Julia ซึ่งเราจะเปรียบเทียบกันว่า Julia vs. Python ต่างกันอย่างไร
Julia สามารถเรียก Library ของ Python, C และ Fortran ได้: Julia สามารถเชื่อมต่อโดยตรงกับ Library ภายนอกที่เขียนด้วยภาษา C และ Fortran นอกจากนี้ยังสามารถเชื่อมต่อกับโค้ด Python ผ่านทาง PyCall Library และแชร์ข้อมูลระหว่าง Python และ Julia ได้ด้วย
Julia รองรับ Metaprogramming: โปรแกรม Julia สามารถเขียนเพื่อสร้างโปรแกรม Julia ได้ และทำได้แม้แต่แก้ไขโค้ดของตัวเอง ซึ่งลักษณะเด่นตัวนี้ชวนให้นึกถึงภาษา Lisp มาก ๆ
Julia มี Debugger ที่สมบูรณ์: Julia version 1.1 ได้ใช้การ Debug ซึ่งรันโค้ดใน REPL ที่ช่วยให้สามารถเช็คผลลัพธ์ ตรวจสอบตัวแปร และเพิ่ม Breakpoints ใน Code ได้ ยังไม่พอคุณยังสามารถเช็ค Code ได้ว่ามีอะไรผิดพลาดไหมแบบรายบรรทัดได้เลย
Julia vs Python
Julia vs. Python: ข้อดีของภาษา Julia
Julia ได้รับการออกแบบมาตั้งแต่ต้นสำหรับการคำนวณทางวิทยาศาสตร์และเชิงตัวเลข จึงไม่น่าแปลกใจที่ Julia จะมีคุณสมบัติมากมายสำหรับกรณีการใช้งานดังกล่าว:
Julia เร็ว: เพราะการมี JIT compilers ของ Julia และการประกาศตัวแปรที่ดี มันสามารถเอาชนะ Python ที่ “เขียนโดย Python แท้ ๆ ” ได้ จริงอยู่ที่ Python จะเร็วขึ้น ถ้าใช้ External Library ,JIT compilers ของ third party (อย่างเช่น PyPy) และการเพิ่มประสิทธิภาพด้วย เครื่องมืออย่าง Cython แต่ Julia ได้รับการออกแบบให้ทำงานได้เร็วขึ้นโดยไม่ต้องมาพึ่งสิ่งเหล่านี้
Julia มี Syntax ที่เหมาะกับงานคณิตศาสตร์: เมื่อทำโปรแกรมแนวคณิตศาสตร์กลุ่มเป้าหมายหลักสำหรับ Julia คือผู้ใช้ภาษาคอมพิวเตอร์ทางวิทยาศาสตร์ เช่น Matlab, R, Mathematica และ Octave ซึ่งไวยากรณ์ของ Julia สำหรับการดำเนินการทางคณิตศาสตร์จะเป็นแบบเดียวกับสูตรคณิตศาสตร์ที่เราเขียน ๆ กัน ไม่ใช่แบบในโลกของคอมพิวเตอร์ ตัวอย่างเช่น ถ้าโปรแกรมเมอร์จะบวกเลข ต้องเขียน C = a+b แต่ถ้าเป็นคนทั่วไปจะเขียน a+b = C ทำให้ผู้ที่ไม่ใช่โปรแกรมเมอร์เข้าใจภาษาได้ง่ายขึ้น
Julia มีการจัดการหน่วยความจำอัตโนมัติเหมือนกับ Python: Julia ไม่สร้างภาระให้กับผู้ใช้ที่ต้องละเมียดละไมกับการบริหารหน่วยความจำ นอกจากนี้ Julia ยังสามารถควบคุมในเรื่อง Garbage Collection ที่ช่วยคืน memory ให้กับโปรแกรม ซึ่งถ้าหากเราไม่ทำเลย โปรแกรมอาจช้าและพังได้ โดยถ้าคุณจะเปลี่ยนมาใช้ Julia คุณก็ยังไม่ได้สูญเสียความสะดวกสบายอันนึงที่อยู่ใน Python อยู่ดี
Julia ทำเรื่อง Parallelism ได้ดี: สามารถแจกงานให้แต่ละ CPU ในเครื่องคอมพิวเตอร์ช่วยกันทำพร้อม ๆ กันแบบคู่ขนานกันไปได้ โดยเวลาเราคำนวณทางคณิตศาสตร์และวิทยาศาสตร์ โปรแกรมจะบริหารทรัพยากรที่มีอยู่อย่างเต็มรูปแบบตามที่กำหนด โดยเฉพาะคอมพิวเตอร์ที่มีหลาย Core ทั้ง Python และ Julia สามารถเรียกใช้การดำเนินการแบบคู่ขนาน (Parallelism) กันได้ ในทางกลับกันวิธีการของ Python สำหรับการดำเนินการแบบขนานมักต้องการข้อมูลที่ทำเป็นอนุกรมและทำ Deserialize ระหว่าง Threads หรือ Nodes (เวลารับข้อมูลมาเป็นหลายๆ ก้อน การจะแกะข้อมูลที่ได้รับมาเรียกว่าการทำ Deserialize) ในขณะที่ Parallelization ของ Julia นั้นละเอียดกว่า นอกจากนี้ ไวยากรณ์ในการเขียน Parallelism ของ Julia ก็ไม่ซับซ้อนเท่า Python ซึ่งทำให้เกณฑ์การใช้งานทำได้ง่ายขึ้น
Julia กำลังพัฒนา Machine Learning Libraries ของตนเอง: Flux เป็น Machine Learning Library สำหรับ Julia ที่มีรูปแบบโมเดลที่มีอยู่มากมายสำหรับกรณีการใช้งานทั่วไป เนื่องจากมันถูกเขียนใน Julia ทั้งหมด จึงสามารถแก้ไขได้ตามที่ผู้ใช้ต้องการและใช้การรวบรวมแบบ Just-in-Time ดั้งเดิมของ Julia เพื่อเพิ่มประสิทธิภาพของโปรเจกต์จากภายในสู่ภายนอก