Rust เปลี่ยนจากการแก้ปัญหาลิฟต์ค้างไปสู่ภาษาเขียนโปรแกรมที่มีคนชื่นชอบมากที่สุดในโลกได้อย่างไร

โครงการซอฟต์แวร์จำนวนมากเกิดขึ้นเพราะโปรแกรมเมอร์มีปัญหาส่วนตัวที่ต้องแก้ไข ซึ่งนั่นคือสิ่งที่เกิดขึ้นกับ Graydon Hoare เช่นเดียวกัน

ในปี 2006 Hoare โปรแกรมเมอร์อายุ 29 ปีที่ทำงานให้กับ Mozilla ซึ่งเป็นบริษัทเบราว์เซอร์โอเพ่นซอร์ส เมื่อกลับถึงบ้านที่อพาร์ตเมนต์ของเขาในแวนคูเวอร์ เขาพบว่าลิฟต์เสีย เนื่องจากปัญหาซอฟต์แวร์ขัดข้อง นี่ไม่ใช่ครั้งแรกที่มันเกิดปัญหานี้ขึ้น

Hoare อาศัยอยู่บนชั้นที่ 21 และในขณะที่เขาขึ้นบันได เขาก็รู้สึกรำคาญสิ่งที่เกิดขึ้นเป็นอย่างมาก “มันไร้สาระ” เขาคิด

Hoare รู้ว่าการล่มดังกล่าวหลายครั้งเกิดจากปัญหาเกี่ยวกับวิธีการใช้หน่วยความจำของอุปกรณ์ ซึ่งซอฟต์แวร์ภายในอุปกรณ์เช่นลิฟต์มักเขียนด้วยภาษาโบราณเช่น C++ หรือ C ซึ่งมักอนุญาตให้โปรแกรมเมอร์เขียนโค้ดที่ทำงานได้อย่างรวดเร็วและมีขนาดค่อนข้างเล็ก 

ปัญหาคือภาษาเหล่านั้นยังทำให้ง่ายต่อการทำให้เกิดข้อบกพร่องของหน่วยความจำโดยไม่ตั้งใจ ซึ่งเป็นข้อผิดพลาดที่จะทำให้ทุกอย่างหยุดทำงาน Microsoft ประมาณการว่า 70% ของช่องโหว่ในโค้ดเกิดจากข้อผิดพลาดของหน่วยความจำจากโค้ดที่เขียนด้วยภาษาเหล่านี้

Graydon Hoare ผู้ก่อตั้งภาษา Rust (CR:wikipedia)
Graydon Hoare ผู้ก่อตั้งภาษา Rust (CR:wikipedia)

หากคนส่วนใหญ่หากพบว่าตัวเองต้องเดินขึ้นบันได 21 ขั้น คงจะเพียงแค่รู้สึกหงุดหงิด แต่ Hoare ตัดสินใจที่จะทำอะไรบางอย่างเกี่ยวกับเรื่องนี้ เขาเปิดแล็ปท็อปและเริ่มออกแบบภาษาคอมพิวเตอร์ใหม่ ซึ่งเป็นภาษาที่เขาหวังว่าจะทำให้สามารถเขียนโค้ดขนาดเล็กและรวดเร็วได้โดยไม่มีข้อบกพร่องในเรื่องหน่วยความจำโดยเขาได้ตั้งชื่อมันว่า Rust

สิบเจ็ดปีต่อมา Rust ได้กลายเป็นหนึ่งในภาษาใหม่ที่ร้อนแรงที่สุดในโลก มีผู้เขียนโค้ด 2.8 ล้านคนที่เขียนด้วยภาษา Rust และบริษัทต่างๆ ตั้งแต่ Microsoft ไปจนถึง Amazon มองว่าสิ่งนี้เป็นกุญแจสู่อนาคตของพวกเขา 

แพลตฟอร์มแชท Discord ใช้ Rust เพื่อเร่งความเร็วระบบ Dropbox ใช้เพื่อซิงค์ไฟล์กับคอมพิวเตอร์ของลูกค้า และ Cloudflare ใช้เพื่อประมวลผลมากกว่า 20% ของทราฟฟิกอินเทอร์เน็ตทั้งหมด 

ผู้บริหารของ Mozilla รู้สึกทึ่งพวกเขาตระหนักว่า Rust สามารถช่วยพวกเขาสร้างเอ็นจิ้นเบราว์เซอร์ที่ดีขึ้นได้ซึ่งแน่นอนว่าเบราว์เซอร์เป็นซอฟต์แวร์ที่มีความซับซ้อนสูงและมีโอกาสมากมายที่จะเกิดข้อบกพร่องของหน่วยความจำที่เป็นอันตราย

ในปี 2009 Mozilla ตัดสินใจสนับสนุน Rust อย่างเป็นทางการ โดยทำให้ภาษาเป็นโอเพ่นซอร์ส Mozilla เริ่มลงทุนด้วยการจ่ายเงินให้กับกลุ่มวิศวกรเพื่อมาสานต่อโปรเจ็กต์นี้ 

Dave Herman ผู้ร่วมก่อตั้ง Mozilla Research ขนานนามสถานที่ทำงานของกลุ่มหัวกะทิที่มาเริ่มโปรเจ็กต์ Rust ว่า “ถ้ำเด็กเนิร์ด”  ซึ่งอีก 10 ปีให้หลัง Mozilla ได้ว่าจ้างวิศวกรกว่า 12 คนให้ทำงานเต็มเวลากับ Rust

ในช่วงต้นทศวรรษ 2010 วิศวกรของ Mozilla และอาสาสมัครของ Rust ทั่วโลกได้ค่อยๆ พัฒนาแกนกลางของ Rust ซึ่งเป็นวิธีที่ออกแบบมาเพื่อจัดการหน่วยความจำพวกเขาสร้างระบบที่ถูกเรียกว่า “ownership” เพื่อให้ข้อมูลสามารถอ้างอิงได้ด้วยตัวแปรเพียงตัวเดียว 

สิ่งนี้ช่วยลดโอกาสของปัญหาหน่วยความจำได้อย่างมากโดยคอมไพเลอร์ของ Rust จะบังคับใช้กฎ ownership อย่างเข้มงวด หากผู้เขียนโปรแกรมละเมิดกฎ คอมไพเลอร์จะปฏิเสธที่จะคอมไพล์โค้ดและไม่สามารถที่จะเปลี่ยนให้เป็นโปรแกรมที่รันได้

เทคนิคหลายอย่างที่ Rust ใช้ไม่ใช่แนวคิดใหม่: “ส่วนใหญ่เป็นงานวิจัยที่มีอายุหลายสิบปี” Manish Goregaokar ผู้ดูแลทีมเครื่องมือสำหรับนักพัฒนาของ Rust และทำงานให้กับ Mozilla ในช่วงปีแรก ๆ กล่าว แต่วิศวกรของ Rust เชี่ยวชาญในการค้นหาแนวคิดที่เฉียบคมเหล่านี้และเปลี่ยนให้เป็นคุณสมบัติที่ใช้งานได้จริง

ในขณะที่ทีมปรับปรุงระบบการจัดการหน่วยความจำ Rust ก็มีความต้องการ  garbage collector ของตัวเองน้อยลงเรื่อยๆ และในปี 2013 ทีมงานก็ได้นำระบบดังกล่าวออก โปรแกรมที่เขียนด้วย Rust จึงทำงานได้เร็วขึ้น

Hoare ชี้ให้เห็นถึงปัญหาที่วิศวกรซอฟต์แวร์บางคนได้โต้แย้งว่า Rust ยังคงมีองค์ประกอบที่เหมือนกับ garbage collection (process ที่ทำให้หน่วยความจำว่างสำหรับการนำมาใช้งานอีกครั้ง) นั่นคือระบบ “reference counting” ซึ่งเป็นส่วนหนึ่งของวิธีการทำงานของกลไกในการจองพื้นที่ของหน่วยความจำ แต่ไม่ว่าด้วยวิธีใดประสิทธิภาพของ Rust ก็มีมากกว่าภาษาอื่น ๆ อย่างน่าทึ่ง 

ในไม่ช้าการลงทุนของ Mozilla ก็เริ่มได้ผลตอบแทน ในปี 2016 กลุ่ม Mozilla ได้เปิดตัว Servo ซึ่งเป็นเอ็นจิ้นเบราว์เซอร์ใหม่ที่สร้างขึ้นโดยใช้ภาษา Rust 

ในปีถัดไป กลุ่มอื่น ๆ เริ่มใช้ Rust เพื่อเขียนส่วนของ Firefox ที่แสดงผล CSS (Cascading Style Sheets) ซึ่งเป็นภาษาที่ใช้ในการตกแต่งเว็บไซต์ การเปลี่ยนแปลงทำให้เบราว์เซอร์เพิ่มประสิทธิภาพอย่างเห็นได้ชัด นอกจากนี้บริษัทยังใช้ Rust ในการเขียนโค้ดใหม่ที่ใช้จัดการไฟล์มัลติมีเดีย MP4 เพิ่มอีกด้วย

เมื่อ Rust เริ่มแพร่กระจายเป็น Viral

ในไม่ช้าก็เริ่มได้ยินจากบริษัทอื่นๆ ที่กำลังลองใช้ภาษาใหม่ของพวกเขา ผู้เขียนโค้ดของ Samsung ซึ่งทำงานจากสำนักงานของ Mozilla ในฝรั่งเศสได้บอกว่าพวกเขาจะเริ่มใช้มัน Facebook (Meta) ใช้ Rust เพื่อออกแบบซอฟต์แวร์ใหม่ที่โปรแกรมเมอร์ใช้ในการจัดการซอร์สโค้ดภายใน 

ในไม่ช้า Rust ก็ปรากฏตัวขึ้นที่แกนกลางของซอฟต์แวร์ที่สำคัญ ในปี 2020 Dropbox ได้เปิดตัว “เครื่องมือซิงค์” เวอร์ชันใหม่ ซึ่งเป็นซอฟต์แวร์ที่รับผิดชอบในการซิงโครไนซ์ไฟล์ระหว่างคอมพิวเตอร์ของผู้ใช้กับที่เก็บข้อมูลบนคลาวด์ของ Dropbox ซึ่งวิศวกรได้เขียนขึ้นใหม่โดยใช้ภาษา Rust 

เดิมทีระบบเขียนด้วยภาษา Python แต่ด้วยการที่แพลตฟอร์มเติบโตขึ้นอย่างรวดเร็วจนต้องจัดการไฟล์หลายพันล้านไฟล์ Rust ช่วยให้จัดการกับความซับซ้อนนั้นได้ง่ายขึ้น Parker Timmerman วิศวกรซอฟต์แวร์ที่เพิ่งออกจาก Dropbox กล่าว

“มันสนุกที่ได้เขียนโดยภาษา Rust ซึ่งอาจจะแปลกที่จะพูด แต่แค่ตัวภาษามันก็ยอดเยี่ยมแล้ว มันสนุก. คุณรู้สึกเหมือนเป็นนักมายากล และนั่นไม่เคยเกิดขึ้นในภาษาอื่น” เขากล่าว “เราวางเดิมพันครั้งใหญ่แน่นอน มันเป็นเทคโนโลยีใหม่”

บางบริษัทค้นพบว่า Rust ได้ช่วยเหลือพวกเขาเกี่ยวกับข้อบกพร่องในการจัดการหน่วยความจำ Mara Bos ใช้ Rust เพื่อเขียนซอฟต์แวร์ของบริษัทใหม่ทั้งหมดสำหรับควบคุมโดรนซึ่งเดิมเขียนด้วยภาษา C++ 

ที่ Discord วิศวกรรู้สึกหงุดหงิดมานานแล้วที่ garbage collector ในภาษา Go ซึ่งเป็นภาษาที่พวกเขาใช้สร้างส่วนสำคัญของซอฟต์แวร์จะทำให้สิ่งต่างๆ ช้าลง 

ซอฟต์แวร์ Go ของพวกเขาจะดำเนินการตามขั้นตอนทุก ๆ สองนาทีโดยประมาณ แม้ว่าวิศวกรของ Discord จะเขียนสิ่งต่าง ๆ อย่างระมัดระวังแล้วก็ตามที ในปี 2020 พวกเขาเขียนระบบใหม่ทั้งหมดโดยใช้ Rust และพบว่ามันรันเร็วขึ้นถึง 10 เท่า 

แม้แต่ผู้บริหารและวิศวกรของ Amazon Web Services ซึ่งเป็นแพลตฟอร์มคลาวด์คอมพิวติ้งของยักษ์ใหญ่ด้านเทคโนโลยี ก็ยังเชื่อมั่นว่า Rust สามารถช่วยพวกเขาเขียนโค้ดที่ปลอดภัยและเร็วขึ้นได้ 

“Rust อยู่ในตำแหน่งที่ไม่เหมือนใครซึ่งมีข้อได้เปรียบที่ผมไม่สามารถหาได้จากภาษาอื่น มันให้พลังวิเศษมากมายในภาษาเดียว” Shane Miller ผู้สร้างทีม Rust ที่ AWS ก่อนออกจากบริษัทเมื่อปีที่แล้วกล่าว 

บางทีสิ่งที่สำคัญที่สุดสำหรับยักษ์ใหญ่ด้านการประมวลผลแบบคลาวด์คือ การศึกษาโค้ดที่อิงกับ Rust พบว่าโค้ดทำงานอย่างมีประสิทธิภาพมากจนใช้พลังงานไฟฟ้าเพียงครึ่งเดียวของโปรแกรมที่คล้ายกันที่เขียนด้วย Java ซึ่งเป็นภาษาที่ใช้กันทั่วไปใน AWS 

Rust ช่วยประหยัดทรัพยากรในศูนย์ข้อมูลขนาดใหญ่อย่าง AWS หรือ Azure ได้เป็นอย่างมาก (CR:Soft Consulting)
Rust ช่วยประหยัดทรัพยากรในศูนย์ข้อมูลขนาดใหญ่อย่าง AWS หรือ Azure ได้เป็นอย่างมาก (CR:Soft Consulting)

“ดังนั้นผมจึงสามารถสร้างศูนย์ข้อมูลที่รันได้ถึง 2 เท่าของเวิร์กโหลดที่ผมใช้ในปัจจุบัน” Miller กล่าว หรือทำงานแบบเดียวกันนี้ในศูนย์ข้อมูลที่มีขนาดเพียงครึ่งเดียวซึ่งทำให้สามารถประหยัดเงินได้อย่างมหาศาล

ในขณะที่ยักษ์ใหญ่ด้านเทคโนโลยีนำภาษานี้ไปใช้ พวกเขายังได้รับอิทธิพลจากภาษานี้มากขึ้นด้วย พวกเขามีเงินมากพอที่จะจ่ายให้วิศวกรทำงานเต็มเวลาในการพัฒนา Rust  มีผู้นำของทีม Rust หลายคนได้กลายเป็นพนักงานของ ทั้ง Amazon และ Microsoft 

แม้ว่าตอนนี้ โค้ดภาษาโบราณอย่าง C และ C++ ทั้งหมดที่มีอยู่จะยังไม่หายไป ซึ่งยังคงต้องมีการใช้งานต่อไปอีกหลายสิบปี แต่ถ้า Rust กลายเป็นวิธีทั่วไปในการเขียนโค้ดใหม่ที่ต้องการความเร็ว เราอาจจะได้เห็นซอฟต์แวร์ต่าง ๆ ทั่วโลกที่น่าเชื่อถือมากขึ้นเรื่อย ๆ มีโอกาสเกิดความผิดพลาดน้อยลง และมีความเสถียรเพิ่มมากขึ้นในอนาคตนั่นเองครับผม 

References :
https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/
https://en.wikipedia.org/wiki/Rust_(programming_language)
https://thenewstack.io/graydon-hoare-remembers-the-early-days-of-rust/
https://wikitia.com/wiki/Graydon_Hoare