14 คะแนน โดย GN⁺ 2024-01-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โน้ตบุ๊กสำหรับทดลองกับข้อมูลและโมเดลได้อย่างรวดเร็ว
  • รันแบบรายเซลล์ คำนวณและอัปเดตอัตโนมัติ
  • รันใหม่ได้เสมอโดยไม่มีสถานะที่ซ่อนอยู่
  • บันทึกเป็นไฟล์ Python จึงเป็นมิตรกับ Git
  • สามารถทำโน้ตบุ๊กให้เป็นไปป์ไลน์หรือเผยแพร่เป็นเว็บแอปแบบอินเทอร์แอ็กทีฟได้

สภาพแวดล้อมการเขียนโปรแกรมแบบ Reactive

  • marimo รับประกันความสอดคล้องกันของโค้ดในโน้ตบุ๊ก เอาต์พุต และสถานะของโปรแกรม
  • เมื่อรันเซลล์ marimo จะอัปเดตเซลล์ที่อ้างอิงตัวแปรนั้นโดยอัตโนมัติ เพื่อป้องกันข้อผิดพลาดจากการต้องรันเซลล์ใหม่ด้วยตนเอง
  • เมื่อลบเซลล์ marimo จะลบตัวแปรนั้นออกจากหน่วยความจำของโปรแกรม เพื่อกำจัดสถานะที่ซ่อนอยู่
  • โน้ตบุ๊กจะทำงานตามลำดับที่กำหนดแน่นอนโดยอิงจากการอ้างอิงตัวแปร จึงไม่ขึ้นกับตำแหน่งของเซลล์บนหน้า
  • เมื่อโต้ตอบกับองค์ประกอบ UI เช่น สไลเดอร์ ดรอปดาวน์ และตัวแปลง DataFrame เซลล์ที่ใช้ค่านั้นจะถูกรันใหม่ด้วยค่าล่าสุดโดยอัตโนมัติ
  • marimo วิเคราะห์โค้ดแบบสแตติกเพื่อรันเฉพาะเซลล์ที่จำเป็นต้องรัน ช่วยเพิ่มประสิทธิภาพ
  • marimo มีฟีเจอร์อำนวยความสะดวกหลากหลาย เช่น GitHub Copilot, การจัดรูปแบบโค้ดด้วย Black, การส่งออกเป็น HTML, การเติมโค้ดอัตโนมัติอย่างรวดเร็ว, ส่วนขยายสำหรับ VS Code และอื่นๆ

เริ่มต้นอย่างรวดเร็ว

  • การติดตั้ง: รัน pip install marimo หรือ conda install -c conda-forge marimo ในเทอร์มินัลเพื่อติดตั้ง marimo
  • การสร้างโน้ตบุ๊ก: ใช้ marimo editor เพื่อสร้างโน้ตบุ๊กเปล่า และใช้ marimo edit your_notebook.py เพื่อแก้ไขโน้ตบุ๊กที่มีชื่อเฉพาะ
  • การรันแอป: รัน marimo run your_notebook.py เพื่อรันโน้ตบุ๊กเป็นเว็บแอป แอปนี้สามารถนำไปเผยแพร่บน marimo cloud ได้
  • การรันเป็นสคริปต์: รัน python your_notebook.py เพื่อรันโน้ตบุ๊ก marimo ในรูปแบบสคริปต์
  • การแปลง Jupyter โน้ตบุ๊กอัตโนมัติ: ใช้ CLI เพื่อแปลง Jupyter โน้ตบุ๊กเป็น marimo โน้ตบุ๊กโดยอัตโนมัติ
  • บทช่วยสอน: รัน marimo tutorial --help เพื่อดูรายการบทช่วยสอนทั้งหมด

เรียนรู้เพิ่มเติม

  • marimo ออกแบบมาให้ผู้เริ่มต้นเริ่มใช้งานได้ง่าย และมีความสามารถหลากหลายสำหรับผู้ใช้ระดับมืออาชีพ
  • ตัวอย่างเช่น สามารถดูเครื่องมือสร้างภาพ embedding (วิดีโอ) ที่สร้างด้วย marimo ได้
  • สามารถศึกษาข้อมูลเพิ่มเติมได้จากเอกสาร โฟลเดอร์ examples/ และแกลเลอรี

แรงบันดาลใจ

  • marimo กำลังสร้าง Python โน้ตบุ๊กขึ้นใหม่ในฐานะโปรแกรม Python ที่ทำซ้ำผลได้ โต้ตอบได้ และแชร์ได้
  • ภายใต้ความเชื่อว่าเครื่องมือที่เราใช้มีผลต่อวิธีคิด marimo หวังว่าจะมอบสภาพแวดล้อมการเขียนโปรแกรมที่ดีกว่าให้กับชุมชน Python
  • marimo ได้แรงบันดาลใจจากหลายแหล่งและหลายโปรเจ็กต์ เช่น Pluto.jl, ObservableHQ และบทความของ Bret Victor
  • marimo เป็นส่วนหนึ่งของกระแสการเขียนโปรแกรมแบบ reactive dataflow ที่กว้างขึ้น ซึ่งนำแนวคิดการเขียนโปรแกรมเชิงฟังก์ชัน เชิงประกาศ และแบบ reactive จากเครื่องมือต่างๆ เช่น IPyflow, streamlit, TensorFlow, PyTorch, JAX และ React มาปรับปรุงเครื่องมือหลากหลายชนิด

ความเห็นของ GN⁺

  • marimo คือ Python โน้ตบุ๊กแบบ reactive ที่ล้ำสมัย โดยมุ่งแก้ข้อจำกัดของเครื่องมืออย่าง Jupyter โน้ตบุ๊กเดิมๆ ทำให้สามารถทดลองข้อมูลและโมเดล สร้างความมั่นใจในความถูกต้องของโน้ตบุ๊ก และนำโน้ตบุ๊กไปต่อยอดเป็นไปป์ไลน์หรือเว็บแอปแบบอินเทอร์แอ็กทีฟได้
  • เครื่องมือนี้ให้ความสำคัญกับความสอดคล้องและความสามารถในการทำซ้ำของโค้ด พร้อมทำให้การโต้ตอบกับองค์ประกอบส่วนติดต่อผู้ใช้ง่ายขึ้น เพื่อยกระดับประสบการณ์การเขียนโปรแกรม
  • marimo ช่วยให้การทำงานร่วมกันและการแชร์ในงานด้านวิทยาศาสตร์ข้อมูล การวิจัย และการศึกษาเป็นเรื่องง่ายขึ้น อีกทั้งยังมอบแพลตฟอร์มที่ส่งเสริมการมีปฏิสัมพันธ์และการแบ่งปันความรู้ระหว่างผู้ใช้ผ่านการสร้างชุมชน

1 ความคิดเห็น

 
GN⁺ 2024-01-14
ความคิดเห็นจาก Hacker News
  • ในฐานะผู้ใช้ทั้ง Jupyter และ Observable Notebook รู้สึกว่าก่อนหน้านี้ Observable ขาดความสามารถด้านการตอบสนองของเซลล์ และคิดว่าโปรเจกต์นี้แก้ปัญหานั้นได้ดี ชอบที่รูปแบบไฟล์ของ Marimo เป็น Python และก็ชอบไลเซนส์ Apache 2 ด้วย รวมถึงทึ่งกับฟีเจอร์ค้นหาของ GitHub Copilot

    • ผู้ใช้ Jupyter และ Observable Notebook แสดงความเห็นเชิงบวกต่อ Marimo ว่าแก้ปัญหาเรื่องการตอบสนองของเซลล์ได้ดี พร้อมชื่นชมที่รูปแบบไฟล์เป็น Python, ใช้ไลเซนส์ Apache 2 และมีฟีเจอร์ของ GitHub Copilot ที่น่าประทับใจ
  • จากการทำงานร่วมกับผู้ร่วมงานที่ใช้ Jupyter Notebook ปัญหาคือการตั้งค่าสภาพแวดล้อมและสถานะที่ซ่อนอยู่ของ Jupyter โปรเจกต์นี้พยายามแก้ปัญหาข้อหลัง แต่ต้องแลกมาด้วยความยืดหยุ่น หากเน้นเรื่องการทำซ้ำได้ นี่ก็อาจเป็นจุดยอมรับได้ requirements.txt เป็นวิธีแก้มาตรฐานของอีกปัญหาหนึ่ง แต่ใช้งานค่อนข้างยุ่งยาก

    • มีการชี้ให้เห็นปัญหาเรื่องการตั้งค่าสภาพแวดล้อมและสถานะที่ซ่อนอยู่ของ Jupyter Notebook โดยระบุว่าโปรเจกต์นี้พยายามแก้ปัญหาส่วนหลัง แต่ความยืดหยุ่นอาจลดลง พร้อมทั้งมองว่าการใช้ requirements.txt นั้นค่อนข้างไม่สะดวก และหวังว่าจะมีทางออกที่ดีกว่า
  • ดีใจที่ในที่สุดก็มีคนลงมือทำสิ่งนี้ แม้จะมีส่วนขยาย Vscode แต่ก็น่าเสียดายที่มันเปิดมุมมองแบบเบราว์เซอร์เต็มหน้าจอแทนที่จะใช้ UI โน้ตบุ๊กเดิมของ Vscode ขอแบ่งปันความเห็นเกี่ยวกับการจัดการแพ็กเกจและการนำโค้ดไปใช้งานจริง

    • แสดงทั้งความคาดหวังและความเสียดายต่อส่วนขยาย Vscode พร้อมเน้นความสำคัญของการจัดการแพ็กเกจและการนำโค้ดไปใช้งานจริง อีกทั้งยังแสดงความตั้งใจที่จะมีส่วนร่วมกับโปรเจกต์
  • มีคำถามอยู่บ้างเกี่ยวกับแพลตฟอร์มนี้: ขอคำอธิบายเรื่อง interactive widgets รวมถึงการพึ่งพาและการทำงานร่วมกับ ecosystem ของ Jupyter

    • สนใจว่าแพลตฟอร์มรองรับ interactive widgets อย่างไร และมีความสัมพันธ์กับ ecosystem ของ Jupyter อย่างไร พร้อมทั้งสนใจจะพอร์ตวิดเจ็ตของตนเองมาที่แพลตฟอร์มนี้
  • คิดว่าส่วนขยาย Jupytext ถูกประเมินค่าต่ำเกินไป มันช่วยแก้ปัญหาการทำงานร่วมกับ git ของ Jupyter และปัญหาแนวปฏิบัติในการเขียนโปรแกรมที่ขัดขวางการเขียนไฟล์ไลบรารี คาดว่าการอัปเดตแบบ reactive ของโปรเจกต์ใหม่นี้จะเป็นประโยชน์ต่อทั้งผู้เริ่มต้นและโปรเจกต์ที่ซับซ้อน

    • เน้นย้ำประโยชน์ของส่วนขยาย Jupytext และคาดหวังว่าการอัปเดตแบบ reactive ของโปรเจกต์ใหม่นี้จะช่วยผู้เริ่มต้นเขียนโปรแกรมหรือโปรเจกต์ที่ซับซ้อนได้มาก
  • รายการ dependency สั้น และนอกจาก tornado แล้วก็ไม่ได้ดึง dependency เพิ่มจำนวนมากเข้ามา ดูเป็นโปรเจกต์ที่มีประโยชน์และเท่มาก

    • มองว่ารายการ dependency ของโปรเจกต์ค่อนข้างกระชับ และนอกจาก tornado ก็ไม่มีภาระเพิ่มเติมมากนัก พร้อมชื่นชมว่าเป็นโปรเจกต์ที่ทั้งมีประโยชน์และน่าสนใจ
  • รู้สึกว่า Marimo ยอดเยี่ยมมาก และสงสัยว่ามีการพิจารณาเพิ่มการรองรับ mermaid.js ใน markdown หรือไม่

    • แสดงความเห็นเชิงบวกต่อ Marimo และสอบถามถึงความเป็นไปได้ในการเพิ่มการรองรับ mermaid.js ใน markdown
  • ขอประกาศตัวว่าเป็นแฟนของ Akshay และ Myles ผู้ก่อตั้ง Marimo และคาดหวังว่าการมีคู่แข่งของ Jupyter จะส่งผลดีต่อ ecosystem ของเครื่องมือทางวิทยาศาสตร์

    • สนับสนุน Marimo และผู้ก่อตั้ง พร้อมคาดหวังว่าการแข่งขันลักษณะนี้จะนำไปสู่การเปลี่ยนแปลงเชิงบวกใน ecosystem ของเครื่องมือทางวิทยาศาสตร์
  • คิดว่า Quarto แก้ปัญหาหลายอย่างของ Jupyter ที่ถูกพูดถึงในเธรดนี้ได้ ที่ NIH ก็แนะนำให้ใช้ Quarto และมีการจัดอบรมด้วย

    • ระบุว่า Quarto อาจช่วยแก้ปัญหาหลายอย่างของ Jupyter ได้ พร้อมแชร์ข้อมูลว่า NIH แนะนำการใช้งาน Quarto และมีการจัดการอบรมเกี่ยวกับมัน
  • การนิยามตัวแปรเดียวกันหลายครั้งถือเป็นข้อผิดพลาด ซึ่งเหตุผลก็ชัดเจนอยู่แล้ว แต่ถ้าตัวแปรนั้นถูกใช้แค่ในเซลล์ที่มีการใช้งานครั้งแรก ก็ควรอนุญาตให้ใช้ชื่อตัวแปรซ้ำได้

    • แสดงความคิดเห็นว่าการนิยามตัวแปรซ้ำเป็นข้อผิดพลาด แต่เสนอว่าหากตัวแปรถูกใช้งานเฉพาะในเซลล์แรกที่เรียกใช้ ก็ควรสามารถนำชื่อตัวแปรนั้นกลับมาใช้ใหม่ได้