สารคดีอย่างเป็นทางการของ Clojure
(clojure.org)- เปิดตัววิดีโอสารคดีอย่างเป็นทางการความยาว 1 ชั่วโมงที่เล่าเรื่องว่า Clojure เติบโตขึ้นจนกลายเป็นภาษาโครงสร้างพื้นฐานของบริษัทฟินเทคระดับโลกได้อย่างไร
- ติดตามและแนะนำ จุดกำเนิดอันเป็นเอกลักษณ์ ของ Clojure, ชุมชนที่ยึดคุณค่าเป็นศูนย์กลาง, และ อิทธิพลที่มีต่อวิธีคิดด้านซอฟต์แวร์
- ลิงก์ YouTube: โปรเจกต์สัตว์เลี้ยงของโปรแกรมเมอร์คนหนึ่งเปลี่ยนวิธีที่เราคิดเกี่ยวกับซอฟต์แวร์ได้อย่างไร
- ในโชว์โน้ตมีการรวบรวม งานวิจัยหลัก หนังสือ การบรรยาย และกรณีศึกษาขององค์กร ที่เป็นรากฐานของ Clojure
- ยังแนะนำทั้งรันไทม์อย่าง Clojure, ClojureScript, ClojureCLR และโปรเจกต์ขยายอย่าง Babashka, Jank, ClojureDart
- หน้าอย่างเป็นทางการทำหน้าที่เป็นศูนย์กลางแบบครบวงจรของระบบนิเวศ Clojure ครอบคลุมถึง เครื่องมือ AI, data science, การผสานกับเอดิเตอร์, และช่องทางชุมชน
ภาพรวมของสารคดี
- สารคดี Clojure เริ่มต้นจากช่วงลาพักงาน 2 ปีของ Rich Hickey และไอเดียที่แน่วแน่หนึ่งข้อ ก่อนจะพัฒนาไปสู่สิ่งที่ขับเคลื่อนสแตกวิศวกรรมของหนึ่งในบริษัทฟินเทคที่ใหญ่ที่สุดในโลก
- มีบุคคลสำคัญอย่าง Rich Hickey, Alex Miller, Stuart Halloway และคนอื่น ๆ ปรากฏตัว เพื่อสำรวจ จุดกำเนิดที่ไม่เป็นขนบของ Clojure, ชุมชนที่ขับเคลื่อนด้วยคุณค่า, และ อิทธิพลที่มีต่อวิธีคิดด้านซอฟต์แวร์
- สารคดีเรื่องนี้ผลิตขึ้นด้วย การสนับสนุนจาก Nubank
โชว์โน้ต
-
งานวิจัยพื้นฐาน
- Out of the Tarpit (2006) — Ben Moseley & Peter Marks ชี้ว่า สถานะที่เปลี่ยนแปลงได้ ในซอฟต์แวร์เป็นสาเหตุหลักของความซับซ้อนที่เกิดขึ้นโดยไม่จำเป็น
- Ideal Hash Trees — Phil Bagwell งานวิจัยเรื่อง Hash Array Mapped Tries (HAMTs) ที่เป็นแรงบันดาลใจโดยตรงให้กับ persistent data structures ของ Clojure
- Composable Memory Transactions (2005) — Tim Harris และคณะ นำเสนอแนวคิด Software Transactional Memory (STM) ซึ่งส่งอิทธิพลต่อโมเดลการทำงานพร้อมกันของ Clojure
- Paper Bibliography — รายการงานวิจัยที่ Rich Hickey ใช้อ้างอิงระหว่างพัฒนา Clojure เรียบเรียงโดย Michael Fogus
-
หนังสือทรงอิทธิพล
- On Lisp — Paul Graham หนังสือสำคัญว่าด้วยเทคนิค Lisp ขั้นสูง เปิดให้อ่านฟรีออนไลน์
- Programming Clojure (4th ed.) — เขียนร่วมโดย Alex Miller, Stuart Halloway, Aaron Bedra โดยฉบับพิมพ์ครั้งแรกออกมาพร้อมกับ Clojure 1.0
- The Joy of Clojure — เขียนโดย Michael Fogus & Chris Houser
-
การบรรยายสำคัญของ Rich Hickey
- Simple Made Easy (2011) — การบรรยายตัวแทนที่นิยามความแตกต่างระหว่าง "simple" กับ "easy"
- Clojure at LispNYC (2007) — การนำเสนอ Clojure ต่อสาธารณะครั้งแรก
- Are We There Yet? (2009) — วิเคราะห์โมเดลสถานะของ Clojure และแนวคิดเรื่องเวลาในการเขียนโปรแกรม
- Hammock Driven Development (2010) — เน้นแนวทางการคิดปัญหาอย่างลึกซึ้งก่อนลงมือเขียนโค้ด
- The Value of Values (2012) — เน้นความสำคัญของ immutable values
- Writing Datomic in Clojure (2012) — อธิบายเหตุผลที่เขียน Datomic ด้วย Clojure
- Effective Programs - 10 Years of Clojure (2017) — ทบทวนพัฒนาการตลอด 10 ปีของ Clojure และลำดับความสำคัญของฟีเจอร์ที่มุ่งแก้ปัญหาในโลกจริง
- Talk Transcripts — คลังบันทึกข้อความการบรรยายของ Rich Hickey และชุมชน
- Rich Hickey Talks — เพลย์ลิสต์รวมวิดีโอการบรรยายของ Rich
-
บทความของ Paul Graham
- Beating the Averages, Revenge of the Nerds, และ รวมบทความอื่น ๆ
-
องค์กรและโปรเจกต์สำคัญ
- Cognitect — บริษัทที่ปรึกษาที่ดูแล Clojure มาอย่างยาวนาน
- Nubank — ธนาคารดิจิทัลอิสระที่ใหญ่ที่สุดในโลก ดำเนินโครงสร้างพื้นฐานหลักด้วย Clojure และ Datomic และหลังเข้าซื้อ Cognitect ในปี 2020 ก็เป็นผู้นำการพัฒนา Clojure
- Datomic — ฐานข้อมูลแบบกระจายที่ยึดตาม immutable facts ออกแบบโดย Rich Hickey และ Cognitect
-
ชุมชนและเอกสารเก็บถาวร
- Java.next Blog Series (2008) — ชุดบทความบล็อกของ Stuart Halloway ว่าด้วยแนวโน้มของภาษา JVM
- Clojure IRC Log Archive — บันทึกเก็บถาวรของช่อง IRC Clojure ยุคแรก
- Clojure Etiquette — แนวปฏิบัติด้านมารยาทชุมชนที่มีที่มาจากโพสต์ในเมลลิงลิสต์ของ Rich
ภาษาถิ่นและรันไทม์ของ Clojure
-
แกนหลัก
- Clojure — ทำงานบน JVM พร้อม คู่มือเริ่มต้นอย่างเป็นทางการ และหนังสือแนะนำฟรี Brave Clojure
- ClojureScript — คอมไพล์เป็น JavaScript และรองรับไลบรารีฝั่งฟรอนต์เอนด์อย่าง Reagent, Re-frame
- ClojureCLR — Clojure ที่ทำงานบน .NET CLR
-
ส่วนขยาย
- Babashka — รองรับการเขียนสคริปต์อย่างรวดเร็วโดยไม่ต้องเสียเวลาสตาร์ต JVM
- Jank — คอมไพเลอร์เนทีฟที่มุ่งเป้าไปยัง LLVM
- ClojureDart — สำหรับพัฒนาแอปมือถือบนพื้นฐาน Flutter
- Squint / Cherry — รูปแบบแปรผันของ ClojureScript ที่คอมไพล์เป็น ES modules
- Other Clojure-like projects — มีรายการโปรเจกต์คล้ายกันอื่น ๆ ให้ดู
-
Data science
- libpython-clj — เรียกใช้ไลบรารี Python อย่าง NumPy, pandas, scikit-learn ได้โดยตรงจาก Clojure
- Noj — ชุดเครื่องมือ data science แบบเนทีฟของ Clojure ที่พัฒนาโดย SciCloj รวม data frame, การทำภาพข้อมูล, และ machine learning
- Tablecloth — ผสานการเชื่อมต่อกับ Python เข้ากับ data frame ของ Clojure
-
Clojure กับ AI
- ECA (Editor Code Assistant) — เครื่องมือช่วยแก้ไขโค้ด
- Backseat Driver — เครื่องมือ Clojure สำหรับ Copilot
- ClojureMCP — เซิร์ฟเวอร์ MCP ที่เชื่อม AI assistant กับ REPL เช่น Claude, Codex, Gemini
- MCP-nREPL — เซิร์ฟเวอร์ MCP แบบมินิมอลบนพื้นฐาน Babashka ที่ให้เอเจนต์เขียนโค้ดเข้าถึง nREPL
- clojure-mcp-light — เครื่องมือ CLI แบบเบาสำหรับ LLM coding assistant
- #ai-assisted-coding (Clojurians Slack) — ช่องชุมชนที่คึกคักเกี่ยวกับ AI และการพัฒนา Clojure
การเริ่มต้น
- ประสบการณ์แบบครบถ้วน — มี คู่มืออย่างเป็นทางการ พร้อมวิดีโอติดตั้งสำหรับ macOS, Linux, Windows และใช้ Calva บน VS Code
- เส้นทางที่เร็วที่สุด — ติดตั้ง Babashka แล้วเริ่มเขียนสคริปต์ได้ทันที โดยไม่ต้องตั้งค่า JVM
- เว็บ/ฟรอนต์เอนด์ — เริ่มด้วย ClojureScript + Shadow CLJS
- แอปมือถือ — พัฒนาแอป Flutter ด้วย ClojureDart
- ผู้ใช้ Python — เรียกใช้ไลบรารี Python ได้โดยตรงด้วย libpython-clj
- เอดิเตอร์ — Calva รองรับ REPL, structural editing และ การผสาน AI (Backseat Driver) บน VS Code ดู คู่มือเอดิเตอร์
อภิธานศัพท์
- Lisp — ตระกูลภาษาที่แสดงโค้ดในรูป nested lists ที่ล้อมด้วยวงเล็บ โดย Clojure เป็นภาษาถิ่นหนึ่งของ Lisp
- REPL — Read-Eval-Print Loop เซสชันโต้ตอบที่อ่าน expression, ประเมินผล แล้วแสดงผลลัพธ์
- การเขียนโปรแกรมเชิงฟังก์ชัน — รูปแบบการเขียนโปรแกรมที่ลดสถานะที่เปลี่ยนแปลงได้และผลข้างเคียงให้น้อยที่สุด โดยจัดองค์ประกอบแบบ ยึดฟังก์ชันเป็นศูนย์กลาง
- ค่า (Value) — ข้อมูลที่ไม่เปลี่ยนแปลงหลังถูกสร้างขึ้น โดย Clojure ใช้ค่าที่ไม่เปลี่ยนแปลงเป็นค่าปริยาย
- Persistent Data Structure — คอลเลกชันที่คงเวอร์ชันก่อนหน้าไว้เมื่อมีการแก้ไข โดย "persistent" ในที่นี้หมายถึงการเก็บรักษาเวอร์ชัน
- ความซับซ้อนที่เกิดขึ้นโดยไม่จำเป็น (Accidental Complexity) — ความซับซ้อนที่เกิดจากเครื่องมือหรือการเลือกออกแบบ ไม่ใช่จากตัวปัญหาเอง
- STM (Software Transactional Memory) — โมเดลการทำงานพร้อมกันที่ประสานการเปลี่ยนแปลงสถานะร่วมกันด้วยทรานแซกชันแทนการใช้ล็อก
- Hosted Language — ภาษาที่ทำงานบนแพลตฟอร์มที่มีอยู่เดิมแทนการมีรันไทม์ของตนเอง เช่น Clojure บน JVM, ClojureScript บน JS, และ ClojureCLR บน .NET
ติดตาม Clojure และชุมชน
- มีช่องทางอย่างเป็นทางการบน YouTube, Reddit, Slack, LinkedIn และอื่น ๆ
- Clojure/Conj Conference 2026 — มีกำหนดจัดขึ้นที่เมืองชาร์ลอตต์ รัฐนอร์ทแคโรไลนา สหรัฐอเมริกา ระหว่างวันที่ 30 กันยายน ถึง 2 ตุลาคม 2026
6 ความคิดเห็น
ภาษา Clojure ออกมานานพอสมควรแล้ว เลยอดสงสัยไม่ได้ว่าทำไมถึงกลับมามีการพูดถึง Clojure กันอีกครั้ง
ช่วงแรก ๆ ที่ Clojure ออกมา ผมเคยมีประสบการณ์รีวิวหนังสือเล่มหนึ่งเกี่ยวกับมัน หลังจากนั้นก็เห็นอยู่ไม่กี่บริษัทที่พยายามนำมันไปใช้ แต่บทสรุปคือมันไม่ใช่สิ่งที่ใช้งานในองค์กรได้ง่ายนัก แล้วก็คิดว่าคงจะเงียบหายไป แต่ก็เลยยิ่งสงสัยว่าทำไมถึงกลับมาถูกพูดถึงอีก
แม้ว่าผมจะใช้ Java มาตั้งแต่ยุคแรกและใช้อย่างยาวนาน แต่ทุกวันนี้ JVM ก็ยังถูกใช้อยู่มากเพราะซอฟต์แวร์จำนวนมากที่องค์กรใหญ่พัฒนาไว้เป็น Java อยู่แล้ว, (ในกรณีของสหรัฐฯ) กำลังคนจากอินเดียส่วนใหญ่ก็เป็นสาย Java, รวมถึงมีการสอน Java ตั้งแต่มัธยมจนถึงมหาวิทยาลัย เป็นต้น แต่ในความเห็นของผม มันไม่ค่อยเหมาะกับยุคสมัยนี้แล้ว แม้ผมจะชอบ Lisp แต่ผมก็ยังไม่พบจากบทความข้างต้นว่ามีข้อดีอะไรที่ทำให้ภาษาแนวทาง JVM ซึ่งค่อนข้างเฉพาะกลุ่มและกำลังโรยรา ถูกหยิบยกขึ้นมาพูดถึงอีกครั้งในยุค AI นี้
ผมยังไม่เคยเรียนรู้ภาษาโปรแกรมเชิงฟังก์ชันอย่างจริงจังมาก่อน เลยคิดว่าจะลองเริ่มด้วย Clojure ดู ควรจะเรียนอย่างไรดีครับ? รบกวนนักพัฒนาทุกท่านช่วยแนะนำด้วยครับ
จากประสบการณ์ของผมและข้อสรุปของหลาย ๆ คน แนวทางที่ถูกต้องคือควรเรียนภาษาฟังก์ชันนัลผ่านภาษาฟังก์ชันนัลแบบบริสุทธิ์
นี่เป็นมุมมองที่พูดกันในช่วงที่ภาษาฟังก์ชันนัลเริ่มเป็นที่สนใจและกำลังได้รับความนิยมอย่างมาก ซึ่งผมก็เห็นด้วย ผมเริ่มศึกษาด้วย Erlang ตั้งแต่ช่วงแรก ๆ ที่มันออกมา และในตอนนั้นมันเป็นประสบการณ์ที่ค่อนข้างช็อกและน่าทึ่งมากครับ
ถ้าอย่างนั้น คุณเรียนรู้ภาษาโปรแกรมเชิงฟังก์ชันแท้ ๆ กันอย่างไรบ้างครับ? ที่ผ่านมาผมเรียนรู้ภาษาโปรแกรมต่าง ๆ (C, Go, Python ฯลฯ) ด้วยหนังสือสอนพัฒนา + โปรเจกต์ส่วนตัวมาตลอด แล้วถ้าเป็นภาษาโปรแกรมเชิงฟังก์ชัน ก็ควรเดินตามแนวทางการเรียนแบบนี้ได้เหมือนกันไหมครับ?
แต่ละคนก็คงต่างกันไป แต่ผมคิดว่าการเรียนรู้ด้านคอมพิวเตอร์ส่วนใหญ่ก็มักใช้วิธีที่คุณพูดถึงกันไม่ใช่หรือครับ เดี๋ยวนี้ก็มีตัวเลือกอย่างการเรียนผ่านวิดีโอด้วย ดังนั้นก็ควรเลือกวิธีเรียนที่เหมาะกับตัวเองครับ
ความคิดเห็นจาก Hacker News
Clojure เป็นสิ่งที่ดีที่สุดที่เกิดขึ้นในเส้นทางอาชีพของฉัน
ภาษานี้ทำให้เงินเดือนฉันเพิ่มเป็นสองเท่า และย้ายไปทำงานในอุตสาหกรรมที่มั่นคงกว่าได้
บรรยากาศที่เปิดกว้างและยอมรับความหลากหลายในงานประชุม Heart of Clojure น่าทึ่งมาก ทุกวันนี้คอมมูนิตีก็ยังคึกคัก โดยเฉพาะความหลงใหลของคอมมูนิตี Jankที่สร้างภาษาถิ่นของ Clojure สำหรับงานระดับล่างนั้นน่าประทับใจมาก
ปัญหาคือบริษัทส่วนใหญ่มักให้ความสำคัญกับการเปลี่ยนตัวนักพัฒนาได้ง่ายมากกว่าความมั่นคงหรือความจริงจังของภาษา สุดท้ายก็วนเป็นวงจรอุบาทว์ คุณภาพตกลง แล้วก็พยายามแทนที่ด้วย AI จนทำบริษัทพังเอง
สิ่งที่ทำให้ฉันแปลกใจเมื่อใช้ Clojure ในเชิงพาณิชย์ คือมีนักพัฒนาจำนวนมากที่ไม่รู้แม้แต่ปรัชญาของภาษา ไม่เคยดูบรรยายของ Rich Hickey หรือแม้แต่วิธีใช้ REPL แต่กลับอยู่ในตำแหน่งที่ดูแลโค้ดเบส Clojure
เหตุผลที่ฉันย้ายมาใช้ Clojure ก็เพราะวงจรป้อนกลับที่สั้นมากนี่แหละ ถ้าไม่ใช้ประโยชน์จากมัน ก็ไม่เข้าใจว่าจะใช้ภาษานี้ไปทำไม
Clojure ทำให้ฉันทำธุรกิจที่ยั่งยืนในฐานะผู้ก่อตั้งเดี่ยวมาได้ตลอด 10 ปีที่ผ่านมา
เพราะทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์แชร์ business logic ส่วนใหญ่ร่วมกันได้ จึงดูแลโค้ดเบสที่ซับซ้อนได้ง่าย
ที่สำคัญที่สุดคือภาษาและสภาพแวดล้อมนี้ยึดความเสถียรเป็นศูนย์กลาง เลยไม่มีอาการเหมือนภาษาบางตัวที่อีกไม่กี่ปีก็เหมือนพื้นใต้เท้าสั่นอีกแล้ว
Clojure อาจไม่ใช่ภาษาที่ใหม่หรือหวือหวา แต่เป็นเพื่อนคู่ใจที่เชื่อถือได้ในระยะยาว
สมัยก่อนฉันเขียนโค้ด Clojure ทุกวัน และยังจำได้ว่าเคยกินข้าวเย็นกับ Rich Hickey ที่ Clojure/Conj
สตาร์ตอัปแรกของฉันก็สร้างด้วย Clojure ทั้งหมด และฉันก็เป็นคนทดลองยุคแรกที่คอมไพล์ Clojure ไปเป็น JS แล้วรันบน Lambda ตั้งแต่สมัย AWS ยังมีบริการอยู่ไม่กี่ตัว
ตอนนี้ก็ยังตื่นเต้นที่จะได้ดูวิดีโอที่เกี่ยวข้อง
ฉันใช้ Clojure มาตั้งแต่ปี 2013 และมันเป็นภาษาที่ส่งผลเชิงบวกมากต่อชีวิตฉัน
ฉันเป็นผู้ใช้ที่ค่อนข้างนอกสายหน่อย เพราะงานศิลปะส่วนใหญ่ของฉันทำด้วย Clojure
ตอนทำสตาร์ตอัป Clojure ก็ช่วยให้ฉันไม่หมดไฟได้
การมีส่วนร่วมกับคอมมูนิตีก็เป็นความสุขอย่างมาก และฉันก็ขอบคุณสำหรับความทุ่มเทของผู้คนมากมาย
Clojure เป็นทั้งภาษาที่ยอดเยี่ยมและ ecosystem ที่ดีมาก
ตอนเริ่มแรกฉันเคยบริจาคให้โปรเจกต์ของ Rich และหาเงินจากการพัฒนา Clojure อยู่หลายปี
ตอนนี้ไม่ได้ใช้บ่อยแล้ว แต่เมื่อสองชั่วโมงก่อนฉันก็ยังสนุกกับการอัปเดตตัวอย่างจากหนังสือ Clojure เก่าๆ อยู่เลย
แล้วคุณคิดว่า Clojure เหมาะกับแอปพลิเคชัน ML/AIไหม ทั้งที่ interop กับ Python ก็ดี ทำไมถึงยังไม่ถูกใช้แพร่หลายกว่านี้
บน JVM แล้ว Clojure คือภาษาทางเลือกที่ฉันชอบที่สุด
มันสืบทอดธรรมเนียมของ Lisp แต่แทนที่จะพูดเพ้อฝันว่าจะสร้าง JVM ใหม่ มันกลับมีเสน่ห์ตรงปรัชญาที่โอบรับแพลตฟอร์มเจ้าบ้าน
Zig ก็มีแนวทางคล้ายกัน และฉันรู้สึกว่าปรัชญาแบบบูรณาการนี้คือจุดสำคัญที่ช่วยเพิ่มทั้งการยอมรับและความใช้งานได้จริง
ยอดเยี่ยมมาก แค่เสียดายที่ไม่มี borkdude รวมอยู่ด้วย
วลี “stable long-term companion” ของ jwr ติดอยู่ในใจฉันมาก
บริษัทที่ฉันเคยทำงานด้วยซึ่งไล่ตามแต่ความใหม่ สุดท้ายกลับใช้เวลาไปกับการย้ายระบบมากกว่า
ความเสถียรอาจฟังดูน่าเบื่อ แต่สำหรับทีมเล็กๆ มันคือวิธีเดียวที่จะอยู่รอดได้ในระยะยาว
ฉันชอบใช้ Clojure มาก แต่เพราะงานส่วนใหญ่ที่ทำต้องทำงานร่วมกับภาษา C เลยยากที่จะใช้เป็นภาษาหลัก
ไม่รู้มาก่อนเลยว่า Datomic ตอนนี้ใช้ฟรีในด้านไลเซนส์แล้ว เมื่อก่อนฉันไม่ใช้เพราะแพงเกินไป แต่น่าสนใจมาก
เช่น Datalevin, Datahike, Asami
ยังมี XTDB ด้วย แต่เลิกใช้ Datalog แล้วเดินไปอีกทาง
มีเว็บเปรียบเทียบด้วย: Clojurelog (ค่อนข้างเก่าแล้ว)