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


 


ติดตามสาระดี ๆ อัพเดททุกวันผ่าน Line OA



Geek Forever Club พื้นที่ของการแลกเปลี่ยนข้อมูลข่าวสาร ความรู้ ด้านธุรกิจ เทคโนโลยีและวิทยาศาสตร์ ใหม่ ๆ ที่น่าสนใจ



Geek Forever’s Podcast


“Open Your World With Technology


AI , Blockchain และเทคโนโลยีใหม่ ๆ กำลังเข้ามามีบทบาทสำคัญในหลายธุรกิจ ทั้ง แวดวงการเงิน สุขภาพ หรือ งานด้านบริการต่าง ๆ ผมเป็นคนหนึ่งที่สนใจเกี่ยวกับ AI หรือ Machine Learning

Podcast ของผมจะเล่าเรื่องราวต่าง รวมถึงเรื่องที่ผมสนใจอื่น ๆ เช่น startup หนังสือ หนัง หรือ กีฬาฟุตบอล อยากชวนคนที่สนใจให้ลองมาติดตาม podcast ของผมกันด้วยนะครับ

ฟังผ่าน podbean
ฟังผ่าน podbean
ฟังผ่าน Apple Podcasts
ฟังผ่าน Apple Podcasts
ฟังผ่าน Google Podcasts
ฟังผ่าน Google Podcasts
ฟังผ่าน Spotify
ฟังผ่าน Spotify
ฟังผ่าน Youtube
ฟังผ่าน Youtube