ภาษาโปรแกรมมิ่ง OCaml กำลังมีความพยายามครั้งใหม่ในการเข้าสู่พื้นที่การเรียนรู้ของเครื่อง (machine learning) ด้วย Raven ระบบนิเวศที่ครอบคลุมซึ่งออกแบบมาเพื่อนำความสามารถด้านวิทยาศาสตร์ข้อมูลมาสู่ภาษาโปรแกรมมิ่งเชิงฟังก์ชันนี้ อย่างไรก็ตาม การสนทนาในชุมชนเผยให้เห็นถึงความสงสัยอย่างมีนัยสำคัญว่า OCaml จะสามารถเอาชนะความท้าทายในอดีตเพื่อแข่งขันกับ Python ในวงการวิทยาศาสตร์ข้อมูลได้หรือไม่
ระบบนิเวศการเรียนรู้ของเครื่องใหม่ของ OCaml
Raven มีเป้าหมายที่จะมอบเครื่องมือให้กับนักพัฒนา OCaml ที่เทียบเคียงได้กับชุดเครื่องมือวิทยาศาสตร์ข้อมูลยอดนิยมของ Python โครงการระยะก่อนอัลฟานี้ประกอบด้วย Ndarray (คล้ายกับ NumPy), Hugin (สำหรับการสร้างภาพ), Quill (สมุดบันทึกแบบโต้ตอบ) และ Rune (สำหรับการหาอนุพันธ์อัตโนมัติ) ระบบนิเวศนี้ถูกออกแบบมาเพื่อใช้ประโยชน์จากจุดแข็งที่มีอยู่ของ OCaml ในด้านความปลอดภัยของประเภทข้อมูลและประสิทธิภาพ ในขณะที่ทำให้ขั้นตอนการทำงานด้านการเรียนรู้ของเครื่องเป็นที่เข้าใจได้ง่ายสำหรับนักพัฒนา
นี่ไม่ใช่ความพยายามครั้งแรกที่จะนำการคำนวณทางวิทยาศาสตร์มาสู่ OCaml สมาชิกในชุมชนได้กล่าวถึงความพยายามก่อนหน้านี้ เช่น Owl ซึ่งเป็นไลบรารีการคำนวณทางวิทยาศาสตร์ที่เพิ่งได้รับการฟื้นฟูขึ้นมาใหม่ ผู้แสดงความคิดเห็นคนหนึ่งเล่าว่าเคยใช้ Owl เมื่อประมาณสิบปีก่อน พบว่าใช้งานได้แต่ค่อนข้างยากลำบากเมื่อเทียบกับ NumPy แม้ว่าในเวลานั้นจะมีประสบการณ์กับ OCaml มากกว่า Python ก็ตาม
การเปรียบเทียบระบบนิเวศ Python กับ Raven
งาน | ระบบนิเวศ Python | ระบบนิเวศ Raven |
---|---|---|
การคำนวณเชิงตัวเลข | NumPy | Ndarray |
การแสดงภาพ | Matplotlib, Seaborn | Hugin |
สมุดบันทึก | Jupyter | Quill |
การหาอนุพันธ์อัตโนมัติ | JAX | Rune |
การจัดการดาต้าเฟรม | Pandas | ยังไม่มีให้ใช้งาน |
การเรียนรู้เชิงลึก | PyTorch, TensorFlow | ยังไม่มีให้ใช้งาน |
ความท้าทายในการนำ OCaml มาใช้ (จากการสนทนาในชุมชน)
- การรองรับมัลติคอร์มาช้า
- การรับรู้ว่าเข้าถึงได้ยากกว่าตัวเลือกอื่น
- การสนับสนุน Windows ที่มีจำกัดจนถึงเมื่อไม่นานมานี้
- แนวคิดขั้นสูง (แนวทางเชิงฟังก์ชัน, การเขียนโปรแกรมระดับโมดูล)
- ชุมชนที่เล็กกว่าเมื่อเทียบกับ Python และภาษาอื่นๆ
- การผลักดันทางการตลาดในชุมชนที่พูดภาษาอังกฤษมีน้อย
ความท้าทายในอดีตที่ส่งผลต่อการยอมรับ OCaml
การสนทนาในชุมชนได้เน้นย้ำถึงปัจจัยหลายประการที่เคยจำกัดการยอมรับ OCaml ในวงกว้าง โดยเฉพาะอย่างยิ่งในพื้นที่การเรียนรู้ของเครื่อง ปัญหาสำคัญประการหนึ่งคือการล่าช้าในการนำการรองรับมัลติคอร์มาใช้ ซึ่งผู้แสดงความคิดเห็นคนหนึ่งแนะนำว่าอาจส่งผลให้ภูมิทัศน์ของภาษาโปรแกรมมิ่งในปัจจุบันเปลี่ยนแปลงไปอย่างมากหากมีให้ใช้งานประมาณปี 2010
น่าเสียดายที่ไวยากรณ์ที่ปรับปรุงใหม่ไม่เคยได้รับความนิยม และที่ OCaml ทำพลาดในเรื่องมัลติคอร์มานานกว่าทศวรรษ ถ้า OCaml มีมัลติคอร์ที่ดีประมาณปี 2010 ภูมิทัศน์ของภาษาโปรแกรมมิ่งในปัจจุบันอาจดูแตกต่างออกไป
คนอื่น ๆ ได้คัดค้านการประเมินนี้ โดยชี้ให้เห็นว่า Python ประสบความสำเร็จอย่างมากแม้จะมีข้อจำกัดด้านมัลติคอร์ที่คล้ายคลึงกันในช่วงเวลาเดียวกัน คำอธิบายทางเลือกสำหรับการยอมรับ OCaml ที่มีจำกัดรวมถึงการไม่ได้มีต้นกำเนิดจากอเมริกา การขาดการตลาดในภาษาอังกฤษ และแนวคิดการเขียนโปรแกรมขั้นสูงที่ล้ำสมัยเกินไปสำหรับนักพัฒนาหลายคน
การแข่งขันจากภาษาเชิงฟังก์ชันอื่น ๆ
ความคิดเห็นเผยให้เห็นว่า OCaml เผชิญกับการแข่งขันไม่เพียงแต่จาก Python แต่ยังรวมถึงจากภาษาโปรแกรมมิ่งเชิงฟังก์ชันอื่น ๆ ด้วย ผู้แสดงความคิดเห็นหลายคนแสดงความชื่นชอบทางเลือกอื่น เช่น Haskell, Elixir หรือ F# โดยเฉพาะอย่างยิ่ง F# ถูกกล่าวถึงว่ามีศักยภาพที่เป็นประโยชน์สำหรับการประยุกต์ใช้การเรียนรู้ของเครื่อง เนื่องจากการเข้าถึงระบบนิเวศ .NET ที่กว้างขวางกว่า ในขณะที่ยังคงรักษาฟังก์ชันการทำงานส่วนใหญ่ของ OCaml ไว้
โครงการ F# บางส่วนที่กล่าวถึงในการสนทนาได้แก่ TorchSharp, DiffSharp และ Furnace ซึ่งบ่งชี้ว่าภาษาเชิงฟังก์ชันของ Microsoft อาจมีจุดเริ่มต้นที่ดีกว่าในการสร้างเครื่องมือการเรียนรู้ของเครื่องที่มีระบบประเภทข้อมูลที่แข็งแกร่ง
ความรู้สึกของชุมชนและแนวโน้มในอนาคต
แม้จะมีการประกาศเกี่ยวกับ Raven แต่ความรู้สึกโดยรวมของชุมชนดูเหมือนจะระมัดระวัง ผู้แสดงความคิดเห็นหลายคนชื่นชมข้อดีทางเทคนิคของ OCaml แต่แสดงความสงสัยเกี่ยวกับความสามารถในการได้รับแรงฉุดที่สำคัญในพื้นที่การเรียนรู้ของเครื่อง ตามที่ผู้แสดงความคิดเห็นคนหนึ่งกล่าวไว้ พวกเขาไม่ได้คาดหวังว่าจะมีอะไรที่จะสามารถแย่งส่วนแบ่งที่มีขนาดใหญ่จาก Python ในพื้นที่ ML/DL ได้
คนอื่น ๆ อธิบาย OCaml ว่าเป็นภาษาที่หยาบกร้านแต่สร้างโค้ดเบสที่เสถียรและบำรุงรักษาได้ แต่ไม่จำเป็นต้องสนุกที่จะเล่นหรือสำรวจแนวคิด การรับรู้นี้อาจเป็นอุปสรรคสำคัญต่อการยอมรับในสาขาที่เน้นการวิจัยอย่างการเรียนรู้ของเครื่อง ซึ่งการทดลองอย่างรวดเร็วมักได้รับการให้คุณค่า
โครงการ Raven เป็นความพยายามอย่างจริงจังที่จะทำให้ความสามารถของ OCaml ทันสมัยสำหรับวิทยาศาสตร์ข้อมูล แต่การสนทนาในชุมชนบ่งชี้ว่ามันเผชิญกับการต่อสู้ที่ยากลำบากกับระบบนิเวศที่มีอยู่และการรับรู้ที่ยังคงอยู่เกี่ยวกับประสบการณ์ของนักพัฒนาในภาษานี้ ยังคงต้องรอดูว่า OCaml จะสามารถใช้ประโยชน์จากจุดแข็งด้านความปลอดภัยของประเภทข้อมูลและประสิทธิภาพเพื่อสร้างพื้นที่เฉพาะในโลกของการเรียนรู้ของเครื่องได้หรือไม่
อ้างอิง: Raven