Julia กับ Python: ข้อใดดีที่สุดสำหรับวิทยาศาสตร์ข้อมูล

ในกรณีการใช้งานมากมาย Python ครอบคลุมการวิเคราะห์ข้อมูลอาจกลายเป็นสิ่งที่ใหญ่ที่สุดและสำคัญที่สุด ระบบนิเวศของ Python เต็มไปด้วยไลบรารีเครื่องมือและแอพพลิเคชั่นที่ทำให้การทำงานของคอมพิวเตอร์ทางวิทยาศาสตร์และการวิเคราะห์ข้อมูลรวดเร็วและสะดวกสบาย

แต่สำหรับนักพัฒนาที่อยู่เบื้องหลังภาษาจูเลีย - มุ่งเน้นเฉพาะ“การคำนวณทางวิทยาศาสตร์การเรียนรู้เครื่องการทำเหมืองข้อมูลขนาดใหญ่เชิงเส้นพีชคณิตกระจายและขนานคอมพิวเตอร์” -Python ไม่เร็วหรือสะดวกพอ Julia มุ่งหวังที่จะให้นักวิทยาศาสตร์และนักวิเคราะห์ข้อมูลไม่เพียง แต่พัฒนาอย่างรวดเร็วและสะดวกสบายเท่านั้น แต่ยังมีความเร็วในการดำเนินการที่รวดเร็วอีกด้วย 

ภาษาจูเลียคืออะไร?

Julia สร้างขึ้นในปี 2009 โดยทีมงาน 4 คนและเปิดตัวสู่สาธารณะในปี 2012 Julia มีจุดมุ่งหมายเพื่อแก้ไขข้อบกพร่องใน Python รวมถึงภาษาและแอปพลิเคชันอื่น ๆ ที่ใช้สำหรับการประมวลผลทางวิทยาศาสตร์และการประมวลผลข้อมูล “ เรามีความโลภ” พวกเขาเขียน พวกเขาต้องการมากกว่านี้: 

เราต้องการภาษาที่เป็นโอเพ่นซอร์สพร้อมใบอนุญาตแบบเสรี เราต้องการความเร็วของ C ด้วยพลังของ Ruby เราต้องการภาษาที่เป็น homoiconic โดยมีมาโครที่แท้จริงเช่น Lisp แต่มีสัญกรณ์ทางคณิตศาสตร์ที่ชัดเจนและคุ้นเคยเช่น Matlab เราต้องการบางสิ่งที่สามารถใช้งานได้สำหรับการเขียนโปรแกรมทั่วไปเช่น Python ซึ่งง่ายสำหรับสถิติเช่นเดียวกับ R ซึ่งเป็นธรรมชาติสำหรับการประมวลผลสตริงเช่นเดียวกับ Perl ซึ่งมีประสิทธิภาพสำหรับพีชคณิตเชิงเส้นเช่นเดียวกับ Matlab และสามารถติดโปรแกรมเข้าด้วยกันเป็นเชลล์ สิ่งที่ง่ายต่อการเรียนรู้ แต่ทำให้แฮกเกอร์ที่จริงจังที่สุดมีความสุข เราต้องการให้มันโต้ตอบและเราต้องการรวบรวม

(เราพูดถึงว่าควรเร็วเท่า C หรือไม่?)

นี่คือบางส่วนของวิธีที่ Julia ดำเนินการตามแรงบันดาลใจเหล่านั้น:

  • จูเลียเรียบเรียงไม่ตีความ  สำหรับประสิทธิภาพรันไทม์ที่เร็วขึ้น Julia จะคอมไพล์ทันเวลา (JIT) โดยใช้เฟรมเวิร์กคอมไพเลอร์ LLVM อย่างดีที่สุด Julia สามารถเข้าใกล้หรือจับคู่ความเร็วของ C ได้
  • Julia เป็นแบบโต้ตอบ Julia มี REPL (read-eval-print loop) หรือบรรทัดคำสั่งแบบโต้ตอบซึ่งคล้ายกับที่ Python นำเสนอ สามารถเจาะสคริปต์และคำสั่งแบบครั้งเดียวได้อย่างรวดเร็ว
  • Julia มีไวยากรณ์ที่ตรงไปตรงมา ไวยากรณ์ของ Julia คล้ายกับ Python - terse แต่ยังแสดงออกและมีพลัง
  • Julia ผสมผสานประโยชน์ของการพิมพ์แบบไดนามิกและการพิมพ์แบบคงที่ คุณสามารถระบุประเภทสำหรับตัวแปรเช่น“ จำนวนเต็ม 32 บิตที่ไม่ได้ลงชื่อ” แต่คุณยังสามารถสร้างลำดับชั้นของประเภทเพื่อให้กรณีทั่วไปในการจัดการตัวแปรบางประเภทเช่นเขียนฟังก์ชันที่ยอมรับจำนวนเต็มโดยไม่ต้องระบุความยาวหรือการลงนามของจำนวนเต็ม คุณสามารถทำได้โดยไม่ต้องพิมพ์ทั้งหมดหากไม่จำเป็นต้องใช้ในบริบทเฉพาะ
  • Julia สามารถเรียกไลบรารี Python, C และ Fortran Julia สามารถเชื่อมต่อโดยตรงกับไลบรารีภายนอกที่เขียนด้วย C และ Fortran นอกจากนี้ยังสามารถเชื่อมต่อกับโค้ด Python โดยใช้ไลบรารี PyCall และแชร์ข้อมูลระหว่าง Python และ Julia
  • Julia รองรับ metaprogramming โปรแกรม Julia สามารถสร้างโปรแกรมอื่น ๆ ของ Julia และปรับเปลี่ยนโค้ดของตัวเองได้ด้วยวิธีที่ชวนให้นึกถึงภาษาเช่น Lisp
  • Julia มีตัวแก้ไขจุดบกพร่องที่มีคุณสมบัติครบถ้วน  Julia 1.1 เปิดตัวชุดการดีบักซึ่งรันโค้ดใน REPL ในเครื่องและช่วยให้คุณสามารถดำเนินการตามผลลัพธ์ตรวจสอบตัวแปรและเพิ่มจุดพักในโค้ด คุณยังสามารถทำงานละเอียดเช่นการก้าวผ่านฟังก์ชันที่สร้างโดยรหัส

วิดีโอที่เกี่ยวข้อง: Python ช่วยให้การเขียนโปรแกรมง่ายขึ้นได้อย่างไร

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

Julia vs. Python: ข้อดีของภาษา Julia

Julia ได้รับการออกแบบมาตั้งแต่เริ่มต้นสำหรับการคำนวณทางวิทยาศาสตร์และตัวเลข ดังนั้นจึงไม่แปลกใจเลยที่ Julia มีคุณสมบัติมากมายที่เป็นประโยชน์สำหรับกรณีการใช้งานดังกล่าว:

  • จูเลียเป็นไปอย่างรวดเร็ว การรวบรวมและการประกาศประเภท JIT ของ Julia หมายความว่าสามารถเอาชนะ Python ที่ "บริสุทธิ์" ที่ไม่ได้เพิ่มประสิทธิภาพได้เป็นประจำ Python สามารถทำได้เร็วขึ้นโดยใช้ไลบรารีภายนอกคอมไพเลอร์ JIT ของบุคคลที่สาม (PyPy) และการเพิ่มประสิทธิภาพด้วยเครื่องมือเช่น Cython แต่ Julia ได้รับการออกแบบให้เร็วขึ้นทันทีเมื่ออยู่นอกประตู
  • Julia มีไวยากรณ์ที่เป็นมิตรกับคณิตศาสตร์ กลุ่มเป้าหมายหลักของ Julia คือผู้ใช้ภาษาคอมพิวเตอร์ทางวิทยาศาสตร์และสภาพแวดล้อมเช่น Matlab, R, Mathematica และ Octave ไวยากรณ์สำหรับการดำเนินการทางคณิตศาสตร์ของ Julia ดูเหมือนวิธีการเขียนสูตรทางคณิตศาสตร์นอกโลกคอมพิวเตอร์ทำให้ง่ายขึ้นสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ในการรับ
  • Julia มีการจัดการหน่วยความจำอัตโนมัติ เช่นเดียวกับ Python Julia ไม่ได้สร้างภาระให้กับผู้ใช้ด้วยรายละเอียดในการจัดสรรและเพิ่มหน่วยความจำและมีมาตรการควบคุมการเก็บขยะด้วยตนเอง แนวคิดก็คือถ้าคุณเปลี่ยนมาใช้ Julia คุณจะไม่สูญเสียสิ่งอำนวยความสะดวกทั่วไปของ Python ไป
  • Julia นำเสนอความเท่าเทียมที่เหนือกว่าการคำนวณทางคณิตศาสตร์และวิทยาศาสตร์จะเติบโตได้เมื่อคุณสามารถใช้ประโยชน์จากทรัพยากรทั้งหมดที่มีอยู่ในเครื่องที่กำหนดโดยเฉพาะหลายคอร์ ทั้ง Python และ Julia สามารถรันการดำเนินการควบคู่กันได้ อย่างไรก็ตามวิธีการของ Python สำหรับการดำเนินการแบบขนานมักต้องการข้อมูลที่จะทำให้เป็นอนุกรมและ deserialized ระหว่างเธรดหรือโหนดในขณะที่การขนานของ Julia นั้นมีการปรับแต่งมากกว่า ยิ่งไปกว่านั้นไวยากรณ์การขนานของ Julia นั้นหนักบนน้อยกว่าของ Python ซึ่งลดเกณฑ์ในการใช้งาน
  • Julia กำลังพัฒนาไลบรารีแมชชีนเลิร์นนิงของตัวเอง Flux คือไลบรารีการเรียนรู้ของเครื่องสำหรับ Julia ที่มีรูปแบบโมเดลที่มีอยู่มากมายสำหรับกรณีการใช้งานทั่วไป เนื่องจากเขียนด้วยภาษา Julia ทั้งหมดจึงสามารถแก้ไขได้ตามต้องการและใช้การรวบรวมแบบทันเวลาดั้งเดิมของ Julia เพื่อเพิ่มประสิทธิภาพโครงการจากภายในสู่ภายนอก 

Julia กับ Python: ข้อดีของ Python

แม้ว่า Julia จะถูกสร้างขึ้นโดยเฉพาะสำหรับวิทยาศาสตร์ข้อมูลในขณะที่ Python มีการพัฒนามากขึ้นหรือน้อยลงในบทบาทนี้ Python มีข้อได้เปรียบที่น่าสนใจสำหรับนักวิทยาศาสตร์ข้อมูล เหตุผลบางประการที่ "วัตถุประสงค์ทั่วไป" Python อาจเป็นทางเลือกที่ดีกว่าสำหรับงานวิทยาศาสตร์ข้อมูล:

  • Python ใช้การจัดทำดัชนีอาร์เรย์แบบศูนย์ในภาษาส่วนใหญ่ Python และ C รวมอยู่ด้วยองค์ประกอบแรกของอาร์เรย์จะถูกเข้าถึงด้วยศูนย์เช่นstring[0]ใน Python สำหรับอักขระตัวแรกในสตริง Julia ใช้ 1 สำหรับองค์ประกอบแรกในอาร์เรย์ นี่ไม่ใช่การตัดสินใจโดยพลการ แอปพลิเคชันคณิตศาสตร์และวิทยาศาสตร์อื่น ๆ อีกมากมายเช่น Mathematica ใช้การจัดทำดัชนี 1 รายการและ Julia มีจุดมุ่งหมายเพื่อดึงดูดผู้ชมดังกล่าว เป็นไปได้ที่จะสนับสนุนการจัดทำดัชนีเป็นศูนย์ใน Julia ด้วยคุณลักษณะทดลอง แต่การจัดทำดัชนี 1 รายการโดยค่าเริ่มต้นอาจเป็นไปได้ในการนำไปใช้โดยผู้ชมที่ใช้งานทั่วไปมากขึ้นซึ่งมีนิสัยการเขียนโปรแกรมที่ฝังแน่น
  • Python มีค่าใช้จ่ายในการเริ่มต้นน้อยกว่า  โปรแกรม Python อาจช้ากว่าโปรแกรม Julia แต่รันไทม์ของ Python นั้นมีน้ำหนักเบากว่าและโดยทั่วไปจะใช้เวลาน้อยกว่าสำหรับโปรแกรม Python ในการเริ่มต้นและแสดงผลลัพธ์แรก นอกจากนี้ในขณะที่การคอมไพล์ JIT เพิ่มความเร็วในการดำเนินการสำหรับโปรแกรม Julia แต่ก็มีค่าใช้จ่ายในการเริ่มต้นทำงานช้าลง มีการทำงานมากมายเพื่อให้ Julia เริ่มต้นได้เร็วขึ้น แต่ Python ยังคงมีข้อได้เปรียบที่นี่
  • Python เป็นผู้ใหญ่ ภาษาจูเลียยังเด็ก Julia อยู่ระหว่างการพัฒนามาตั้งแต่ปี 2009 เท่านั้นและได้รับการปรับเปลี่ยนฟีเจอร์มาพอสมควร ในทางตรงกันข้าม Python มีมาเกือบ 30 ปีแล้ว
  • Python มีแพ็คเกจของบุคคลที่สามมากกว่าความกว้างและประโยชน์ของแพ็คเกจของบุคคลที่สามวัฒนธรรมของ Python ยังคงเป็นหนึ่งในสถานที่ท่องเที่ยวที่ใหญ่ที่สุดของภาษา อีกครั้งความใหม่สัมพัทธ์ของ Julia หมายถึงวัฒนธรรมของซอฟต์แวร์รอบ ๆ ตัวมันยังเล็กอยู่ บางส่วนถูกชดเชยด้วยความสามารถในการใช้ไลบรารี C และ Python ที่มีอยู่ แต่ Julia ต้องการไลบรารีของตัวเองเพื่อเจริญเติบโต ไลบรารีเช่น Flux และ Knet ทำให้ Julia มีประโยชน์สำหรับการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก แต่งานส่วนใหญ่ยังคงทำด้วย TensorFlow หรือ PyTorch
  • Python มีผู้ใช้หลายล้านคน ภาษาไม่ได้เป็นอะไรเลยหากปราศจากชุมชนขนาดใหญ่ที่ทุ่มเทและกระตือรือร้นอยู่รอบ ๆ ชุมชนรอบ ๆ Julia มีความกระตือรือร้นและเติบโตขึ้น แต่ก็ยังมีขนาดเพียงเศษเสี้ยวของชุมชน Python ชุมชนขนาดใหญ่ของ Python เป็นข้อได้เปรียบอย่างมาก 
  • Python เริ่มเร็วขึ้น นอกเหนือจากการได้รับการปรับปรุงตัวแปล Python (รวมถึงการปรับปรุงการประมวลผลแบบมัลติคอร์และแบบขนาน) Python ยังเร็วขึ้นได้ง่ายขึ้น โครงการ mypyc แปล Python ที่มีคำอธิบายประกอบประเภทเป็นภาษา C ดั้งเดิมซึ่งน้อยกว่า Cython มาก โดยทั่วไปแล้วจะได้รับการปรับปรุงประสิทธิภาพสี่เท่าและบ่อยครั้งมากขึ้นสำหรับการดำเนินการทางคณิตศาสตร์ที่บริสุทธิ์