📅 กรกฎาคม 2026
⚠️ อ้างอิงจากแหล่งปฐมภูมิ ตรวจสอบแล้ว — แต่เช็คข้อมูลล่าสุดก่อนแชร์
ถ้า Pike, Thompson, และ Griesemer คือคนสร้าง Go
Russ Cox คือคนที่ทำให้ Go โตจากภาษาใน Google เป็น ecosystem ที่คนทั้งโลกใช้ เขาเป็นคนเขียน gofmt คนออกแบบ Go modules คนคิด Minimal Version Selection algorithm คนเขียน compatibility promise และปัจจุบันเป็น Go tech lead — คนที่ตัดสินใจว่า Go จะไปทางไหนต่อ
ทุกครั้งที่คุณพิมพ์ go build แล้วมันทำงานในไม่กี่วินาที นั่นคือ Cox
เด็ก Plan 9 จาก MIT
ตอนที่เพื่อนวัยเดียวกันใช้ Windows หรือ Mac Russ Cox ใช้ Plan 9 — ระบบปฏิบัติการที่ Rob Pike, Ken Thompson, และ Dennis Ritchie สร้างที่ Bell Labs
เขาใช้มันเป็นระบบปฏิบัติการหลักทุกวัน
ตอนเรียน MIT Cox ทำงานกับ Pike โดยตรงในโปรเจกต์ Plan 9 ร่วมเขียน paper "Security in Plan 9" (USENIX 2002) ทั้งที่ยังเป็นนักศึกษา
แต่พอเว็บเริ่มสำคัญ Plan 9 ไม่มีเว็บเบราว์เซอร์ที่ใช้งานได้
แทนที่จะย้ายไปใช้ OS อื่น Cox ทำสิ่งที่ programmer ดี ๆ จะทำ: port Plan 9 ทั้งระบบมาที่ Unix
plan9port คือ Plan 9 userspace ที่รันบน Linux และ macOS คุณสามารถใช้ acme editor, sam editor, rc shell, plumber — เครื่องมือทั้งหมดของ Plan 9 — บนเครื่องธรรมดา
Cox ใช้ Acme เป็น editor หลักทุกวัน มาจนถึงทุกวันนี้
นี่คือจุดที่ Pike สังเกตเห็นเขา "เด็กคนนี้เข้าใจ Plan 9 ดีพอที่จะ port มันมาทั้งระบบ"
Google Code Search และ RE2
Cox ฝึกงานที่ Google ระหว่างเรียนปริญญาเอกที่ MIT
งานที่ทำให้เขาเป็นที่รู้จักคือ RE2 — regular expression engine ที่เขาเขียนให้ Google Code Search
ปัญหาของ regex engine ทั่วไปคือ catastrophic backtracking: บาง pattern ใช้เวลาค้นหาเป็นนาที, ชั่วโมง, หรือพังเลย เพราะ algorithm แบบ backtracking มี worst-case ที่ exponential
Cox ใช้ automata theory จากงานวิจัยของเขา ออกแบบ RE2 ที่การันตี linear time เสมอ ไม่ว่า pattern จะซับซ้อนแค่ไหน
RE2 ถูกใช้ใน production ที่ Google ตั้งแต่ปี 2006 — Google Code Search, Google Sheets, และต่อมาเป็น regexp package ใน Go standard library
เขาเขียนบทความสามตอนที่กลายเป็น reference ของวงการ regex: "Regular Expression Matching Can Be Simple And Fast", "Regular Expression Matching: the Virtual Machine Approach", "Regular Expression Matching in the Wild"
2008 — Pike ชวนเข้าร่วมทีม Go
Cox กำลังจะจบปริญญาเอกที่ MIT (วิทยานิพนธ์ "An Extension-Oriented Compiler") ตอนที่ Pike มาชวน
Pike พูดว่า: "เราพยายามเอาทุกอย่างที่เรารักเกี่ยวกับการพัฒนา software บน Plan 9 มาทำให้มันใช้ได้กับการเขียน software ที่เราอยากเขียนที่ Google นายอยากช่วยไหม"
Cox ตอบ: "Yeah, of course"
เขากลายเป็น member คนที่ 4 ของทีม Go — ต่อจาก Pike, Thompson, Griesemer
gofmt — โปรเจกต์แรก
งานแรกของ Cox ในทีม Go คือ gofmt
ธันวาคม 2009 เขาเขียน blog post ประกาศ gofmt — เครื่องมือที่ format โค้ด Go ให้หน้าตาเหมือนกันหมดโดยอัตโนมัติ
ฟังดูเป็นเรื่องเล็ก แต่ gofmt คือหนึ่งในการตัดสินใจที่ฉลาดที่สุดในประวัติศาสตร์ Go
ก่อน gofmt ทีม Go เสียเวลาเถียงกันเรื่อง style ว่า bracket ควรอยู่บรรทัดเดียวกับ if หรือบรรทัดใหม่ indent ควรเป็น tab หรือ space ควรเว้นวรรคหลัง comma ไหม
หลัง gofmt ปัญหานี้หายไปตลอดกาล
ทุกวันนี้ทุกโปรเจกต์ Go ในโลกหน้าตาเหมือนกัน ไม่ว่าคุณจะอ่านโค้ดของ Google, ของ startup, หรือของ open source contributor
go command — คุณใช้มันทุกวันโดยไม่เคยคิดถึงมัน
Cox เป็นคนออกแบบ go command — go build, go test, go get — ทั้งหมดที่คุณพิมพ์ทุกวัน
แต่ผลงานที่เปลี่ยน Go ไปตลอดกาลคือ Go modules
Go Modules — จุดเปลี่ยนของ Go ecosystem
ก่อน Go 1.11 การจัดการ dependency ใน Go คือหายนะ
go get ดึงโค้ดจาก version control โดยตรง ไม่มี versioning ไม่มี lock file Dependency ของโปรเจกต์หนึ่งอาจ silently upgrade แล้วพังโปรเจกต์อีกโปรเจกต์
กุมภาพันธ์ 2018 Cox เปิดตัว vgo — prototype ของ Go modules ที่เขาเขียนคนเดียว
แล้วเขาก็ทำสิ่งที่แทบไม่มีใครทำ: เขียน blog post 10 ตอนอธิบายการตัดสินใจทุกอย่าง
- ทำไมต้อง semantic import versioning
- Minimal Version Selection คืออะไร และทำไมมันดีกว่า SAT solving แบบ npm
- reproducible builds ทำงานยังไง
- หลักการของ versioning ใน Go
Minimal Version Selection (MVS) เป็น algorithm ที่ Cox คิดขึ้นมาเอง แทนที่จะพยายามหา "best possible combination" ของ dependency versions แบบ npm (ซึ่งใช้ SAT solver และใช้เวลานานมาก) MVS เลือก version ต่ำสุดที่ satisfy requirement ของทุก module
ผลลัพธ์: go mod tidy ทำงานใน 2 วินาที แทนที่จะ resolve dependency tree เป็นนาที
Go modules กลายเป็นมาตรฐานใน Go 1.13 และเป็น default ใน Go 1.16
Go Compatibility Promise — โค้ด 10 ปี compile ได้
สิงหาคม 2023 Cox เขียน blog post "Backward Compatibility, Go 1.21, and Go 2"
ประโยคเปิดของ post นั้นกลายเป็นคำขวัญของ Go:
"Boring is good. Boring is stable. Boring means being able to focus on your work, not on what's different about Go."
Cox เป็นคน maintain compatibility promise ของ Go review ทุก change ที่อาจ break backward compatibility
ลองนึกถึงภาษาอื่นที่โค้ดปี 2012 ไม่สามารถ compile ด้วย compiler ปี 2026 ได้โดยไม่ต้องแก้
Go ทำได้ เพราะ Cox และทีมทุ่มเทให้ compatibility เป็นพระเจ้า
Transparent Decision-Making
สิ่งที่ Cox เปลี่ยนวิธีทำงานของทีม Go ไม่ใช่แค่โค้ด แต่คือ กระบวนการ
เขาเป็นคนออกแบบ Go proposal process — ทุกการเปลี่ยนแปลงใหญ่ต้องผ่าน proposal สาธารณะบน GitHub พร้อม design doc ที่อธิบายปัญหา, ทางเลือก, และเหตุผล
เขาเขียน blog post 6 ตอนอธิบายกระบวนการนี้: "Clarity & Transparency", "Large Changes", "Scaling Discussions" "Enabling Experiments", "Representation"
ไม่มี "คนเก่งที่สุดในห้องตัดสินใจ" ทุกการตัดสินใจของ Go ตั้งแต่ Go 1.0 ถึงวันนี้ถูกบันทึกไว้เป็นลายลักษณ์อักษร
นี่คือสิ่งที่ Cox เรียกว่า "language design in the service of software engineering" — การออกแบบภาษาไม่ใช่ศิลปะของอัจฉริยะ แต่เป็นวิศวกรรมที่มีกระบวนการ มีเหตุผล มีบันทึก
ปรัชญา
GitHub bio ของ Cox เขียนว่า: "Go Hacker. Mistake maker."
เขาไม่เคยแกล้งทำเป็นรู้ทุกอย่าง และนั่นคือสิ่งที่น่านับถือที่สุด
ตอนให้สัมภาษณ์ GoTime ปี 2018 เขาพูดถึงความคาดหวังตอนแรก:
"My hope was that maybe a few people would notice, and ideally whatever the next big language to come along would steal the concurrency and the interface ideas from Go, and that would be our tiny little contribution to making programming a little bit better. Obviously, that didn't happen, but I'm okay with how it turned out instead."
"หวังว่าไม่กี่คนจะสังเกตเห็น" — แล้ว Go ก็กลายเป็นภาษาที่ใช้ใน production ทั่วโลก
อีกด้านของ Cox — นักคณิตศาสตร์
Cox ไม่ใช่แค่วิศวกร Go
เขาเป็น President ของ OEIS Foundation (Online Encyclopedia of Integer Sequences) — ฐานข้อมูลลำดับจำนวนเต็มที่ใหญ่ที่สุดในโลก นักคณิตศาสตร์และนักวิทยาศาสตร์คอมพิวเตอร์ใช้ OEIS เป็น reference มาตั้งแต่ปี 1964
ผลงานล่าสุดบน blog ของเขา (2024-2026) ส่วนใหญ่เป็นเรื่อง floating-point formatting — ลงลึกถึงระดับ "Pull a New Proof from Knuth's Fixed-Point Printer" และ "Fast Unrounded Scaling: Proof by Ivy"
เขาใช้ Ivy ภาษา calculator แนว APL ที่ Rob Pike เขียน พิสูจน์ความถูกต้องของ algorithm เชิงคณิตศาสตร์
นี่คือคนที่วันหนึ่งออกแบบ Go modules, อีกวันใช้ formal proof พิสูจน์ว่า floating-point formatter ทำงานถูกต้อง
ผลงานอื่น ๆ
ก่อน Go, Cox มีผลงานอีกมาก:
- Vx32 sandboxing system (USENIX 2008)
- Vivaldi network coordinate system (SIGCOMM 2004) — ใช้หา latency ระหว่าง node ใน distributed system โดยไม่ต้องวัดทุกคู่
- Xoc extensible compiler (ASPLOS 2008)
หลัง Go:
- Go Memory Model — เขียนบทความอธิบาย memory model ของ Go และ hardware memory models (2021-2022)
- Transparent Telemetry — ระบบเก็บข้อมูลการใช้งาน Go toolchain แบบโปร่งใส (2022)
- Coroutines for Go — proposal สำหรับ coroutine ใน Go (กรกฎาคม 2023)
- xz backdoor analysis — วิเคราะห์ timeline ของ backdoor ใน xz library (2024)
ทุกวันนี้
Cox ยังเป็น Go tech lead ทำงานที่ Google Cambridge, MA ใช้ Acme editor ทุกวัน
เขียน blog ที่ research.swtch.com อย่างสม่ำเสมอ 150+ บทความและยังเพิ่มขึ้นเรื่อย ๆ
2024-2026: เขียนเรื่อง Go Changes, Go Testing By Example, floating-point formatting series, hash-based bisect debugging, differential coverage
เขาไม่ได้เป็น keynote speaker ที่มีคนดูเป็นหมื่น แต่ทุกครั้งที่เขาเขียนอะไร คนในทีม Go และ community อ่าน
Cox กับโปรแกรมเมอร์ไทย
go mod tidy ที่ทำงานใน 2 วินาที คือ Cox
gofmt ที่ทำให้โค้ดทุกโปรเจกต์หน้าตาเหมือนกัน คือ Cox
Compatibility promise ที่ทำให้โค้ด Go ปี 2012 ยัง compile ได้ในปี 2026 คือ Cox
และวัฒนธรรม "ตัดสินใจแบบโปร่งใส เขียนเหตุผลให้อ่านได้" ที่กลายเป็น DNA ของ Go community
คือสิ่งที่ Cox สร้าง
สรุป
Rob Pike, Ken Thompson, Robert Griesemer คือคนสร้าง Go
แต่ Russ Cox คือคนที่ทำให้มันอยู่รอด
ที่มา: swtch.com/~rsc, research.swtch.com, go.dev/blog, GoTime #77, github.com/rsc, github.com/google/re2, pdos.csail.mit.edu/~rsc
Top comments (0)