"Rust คืออนาคตของการเขียนโปรแกรมระบบ C คือแอสเซมเบลอร์ตัวใหม่" - คำปราศรัยของหนึ่งในวิศวกรชั้นนำของ Intel

ในงาน Open Source Technology Summi (OSTS) ที่ผ่านมา จอช ทริพเล็ตต์วิศวกรอาวุโสของ Intel กล่าวว่าบริษัทของเขาสนใจให้ Rust เข้าถึง "ความเท่าเทียมกัน" ด้วยภาษา C ซึ่งยังคงครอบงำระบบและการพัฒนาระดับต่ำในอนาคตอันใกล้นี้ ในคำพูดของเขา ภายใต้ชื่อ "Intel และ Rust: อนาคตของการเขียนโปรแกรมระบบ" เขายังพูดคุยเกี่ยวกับประวัติความเป็นมาของการเขียนโปรแกรมระบบ การที่ C กลายเป็นภาษาโปรแกรมเริ่มต้นของระบบได้อย่างไร ฟีเจอร์ใดของ Rust ที่ทำให้ได้เปรียบเหนือ C และวิธีที่ทำให้มันสมบูรณ์ได้อย่างไร แทนที่ C ในสาขาการเขียนโปรแกรมนี้

"Rust คืออนาคตของการเขียนโปรแกรมระบบ C คือแอสเซมเบลอร์ตัวใหม่" - คำปราศรัยของหนึ่งในวิศวกรชั้นนำของ Intel

การเขียนโปรแกรมระบบคือการพัฒนาและการจัดการซอฟต์แวร์ที่ทำหน้าที่เป็นแพลตฟอร์มสำหรับการสร้างแอปพลิเคชันแอปพลิเคชัน เพื่อให้แน่ใจว่าแอปพลิเคชันจะมีปฏิสัมพันธ์กับโปรเซสเซอร์, RAM, อุปกรณ์อินพุต/เอาท์พุต และอุปกรณ์เครือข่าย ซอฟต์แวร์ระบบสร้างนามธรรมพิเศษในรูปแบบของอินเทอร์เฟซที่ช่วยสร้างแอพพลิเคชั่นซอฟต์แวร์โดยไม่ต้องเจาะลึกรายละเอียดวิธีการทำงานของฮาร์ดแวร์

Triplett เองให้คำนิยามการเขียนโปรแกรมระบบว่าเป็น “สิ่งใดก็ตามที่ไม่ใช่แอปพลิเคชัน” ประกอบด้วยสิ่งต่างๆ เช่น BIOS, เฟิร์มแวร์, บูตโหลดเดอร์ และเคอร์เนลของระบบปฏิบัติการ, โค้ดระดับต่ำแบบฝังประเภทต่างๆ และการใช้งานเครื่องเสมือน สิ่งที่น่าสนใจคือ Triplett เชื่อว่าเว็บเบราว์เซอร์ก็เป็นซอฟต์แวร์ระบบเช่นกัน เนื่องจากเบราว์เซอร์ได้กลายเป็นมากกว่า "แค่โปรแกรม" มานานแล้ว และกลายเป็น "แพลตฟอร์มแบบสแตนด์อโลนสำหรับเว็บไซต์และแอปพลิเคชันเว็บ"

ในอดีต โปรแกรมระบบส่วนใหญ่ รวมถึง BIOS, บูตโหลดเดอร์ และเฟิร์มแวร์ เขียนด้วยภาษาแอสเซมบลี ในทศวรรษ 1960 การทดลองเริ่มให้การสนับสนุนฮาร์ดแวร์สำหรับภาษาระดับสูง ซึ่งนำไปสู่การสร้างภาษาต่างๆ เช่น PL/S, BLISS, BCPL และ ALGOL 68

จากนั้นในปี 1970 Dennis Ritchie ได้สร้างภาษาโปรแกรม C สำหรับระบบปฏิบัติการ Unix สร้างขึ้นในภาษาโปรแกรม B ซึ่งไม่รองรับการพิมพ์ด้วยซ้ำ C เต็มไปด้วยฟังก์ชันระดับสูงที่ทรงพลังซึ่งเหมาะที่สุดสำหรับการเขียนระบบปฏิบัติการและไดรเวอร์ ส่วนประกอบหลายอย่างของยูนิกซ์ รวมทั้งเคอร์เนล ได้ถูกเขียนใหม่ในภาษาซีในที่สุด ต่อมา โปรแกรมระบบอื่นๆ มากมาย รวมถึงฐานข้อมูล Oracle, ซอร์สโค้ด Windows ส่วนใหญ่ และระบบปฏิบัติการ Linux ก็ถูกเขียนด้วยภาษาซีเช่นกัน

C ได้รับการสนับสนุนอย่างมากในทิศทางนี้ แต่อะไรทำให้นักพัฒนาเปลี่ยนมาใช้มันกันแน่? Triplett เชื่อว่าเพื่อที่จะกระตุ้นให้นักพัฒนาเปลี่ยนจากภาษาการเขียนโปรแกรมหนึ่งไปอีกภาษาหนึ่ง ภาษาหลังจะต้องมีคุณสมบัติใหม่ก่อนโดยไม่สูญเสียคุณสมบัติเก่า

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

ประการที่สอง ภาษาจะต้องให้การสนับสนุนคุณสมบัติเก่า ซึ่งหมายความว่าในประวัติศาสตร์ของการเปลี่ยนไปใช้ C นักพัฒนาจะต้องแน่ใจว่ามันใช้งานได้ไม่น้อยไปกว่าภาษาแอสเซมบลี Triplett อธิบายว่า “ภาษาใหม่ไม่เพียงแต่จะดีขึ้นเท่านั้น แต่ยังต้องดีด้วย” นอกจากจะเร็วขึ้นและรองรับประเภทข้อมูลใดๆ ที่ภาษาแอสเซมบลีสามารถใช้ได้แล้ว C ยังมีสิ่งที่ Triplett เรียกว่า "escape Hatch" กล่าวคือ รองรับการแทรกโค้ดภาษาแอสเซมบลีภายในตัวมันเอง

"Rust คืออนาคตของการเขียนโปรแกรมระบบ C คือแอสเซมเบลอร์ตัวใหม่" - คำปราศรัยของหนึ่งในวิศวกรชั้นนำของ Intel

Triplett เชื่อว่าตอนนี้ C กลายเป็นภาษาแอสเซมบลีเมื่อหลายปีก่อน “C คือผู้ประกอบคนใหม่” เขาประกาศ ตอนนี้นักพัฒนากำลังมองหาภาษาระดับสูงใหม่ที่ไม่เพียงแต่จะแก้ปัญหาที่สะสมอยู่ใน C ที่ไม่สามารถแก้ไขได้อีกต่อไป แต่ยังนำเสนอคุณสมบัติใหม่ที่น่าตื่นเต้นอีกด้วย ภาษาดังกล่าวต้องน่าสนใจพอที่จะให้นักพัฒนาเปลี่ยนมาใช้ ภาษาต้องปลอดภัย มีการจัดการหน่วยความจำอัตโนมัติ และอื่นๆ อีกมากมาย

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

เปรียบเทียบสนิมและซี

ย้อนกลับไปในปี 2006 Graydon Hoare พนักงานของ Mozilla เริ่มเขียน Rust เป็นโปรเจ็กต์ส่วนตัว และในปี 2009 Mozilla ได้เริ่มสนับสนุนการพัฒนา Rust ตามความต้องการของตนเอง และยังได้ขยายทีมเพื่อพัฒนาภาษาต่อไปอีกด้วย

เหตุผลหนึ่งที่ Mozilla สนใจในภาษาใหม่ก็คือ Firefox เขียนด้วยโค้ด C++ มากกว่า 4 ล้านบรรทัด และมีช่องโหว่ร้ายแรงอยู่บ้าง Rust ถูกสร้างขึ้นโดยคำนึงถึงความปลอดภัยและการทำงานพร้อมกัน ทำให้เป็นตัวเลือกที่เหมาะสำหรับการเขียนส่วนประกอบต่างๆ ของ Firefox ใหม่โดยเป็นส่วนหนึ่งของโครงการ Quantum เพื่อออกแบบสถาปัตยกรรมของเบราว์เซอร์ใหม่ทั้งหมด Mozilla ยังใช้ Rust เพื่อพัฒนา Servo ซึ่งเป็นเอ็นจิ้นการเรนเดอร์ HTML ที่จะเข้ามาแทนที่เอ็นจิ้นการเรนเดอร์ Firefox ปัจจุบันในที่สุด บริษัทอื่นๆ หลายแห่งเริ่มใช้ Rust สำหรับโครงการของตน รวมถึง Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu และอื่นๆ อีกมากมาย

Rust แก้ปัญหาที่สำคัญที่สุดอย่างหนึ่งของภาษา C โดยมีการจัดการหน่วยความจำอัตโนมัติดังนั้นนักพัฒนาจึงไม่จำเป็นต้องจัดสรรด้วยตนเองแล้วปล่อยมันให้กับทุกๆ อ็อบเจ็กต์ในแอปพลิเคชัน สิ่งที่ทำให้ Rust แตกต่างจากภาษาสมัยใหม่อื่นๆ ก็คือ ไม่มีตัวรวบรวมขยะที่จะลบอ็อบเจ็กต์ที่ไม่ได้ใช้ออกจากหน่วยความจำโดยอัตโนมัติ และไม่มีสภาพแวดล้อมรันไทม์ที่จำเป็นเพื่อให้มันทำงานได้ เช่น Java Runtime Environment สำหรับ Java ในทางกลับกัน Rust มีแนวคิดเรื่องการเป็นเจ้าของ การยืม การอ้างอิง และอายุการใช้งาน “Rust มีระบบประกาศการเรียกไปยังวัตถุเพื่อระบุว่าเจ้าของกำลังใช้งานหรือเพียงแค่ยืมมัน หากคุณเพียงแค่ยืมอ็อบเจ็กต์ คอมไพลเลอร์จะติดตามสิ่งนี้และตรวจสอบให้แน่ใจว่าต้นฉบับยังคงอยู่ตราบเท่าที่คุณอ้างอิงถึงมัน นอกจากนี้ Rust ยังจะทำให้แน่ใจว่าอ็อบเจ็กต์จะถูกลบออกจากหน่วยความจำทันทีที่การใช้งานเสร็จสิ้น โดยแทรกการเรียกที่เกี่ยวข้องลงในโค้ดในเวลาคอมไพล์โดยไม่ต้องเสียเวลาเพิ่มเติม” Triplett กล่าว

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

Rust ยังมุ่งมั่นที่จะมอบการเขียนโปรแกรมแบบขนานที่ปลอดภัย คุณสมบัติเดียวกันที่ทำให้หน่วยความจำปลอดภัยจะคอยติดตามสิ่งต่างๆ เช่น เธรดใดเป็นเจ้าของอ็อบเจ็กต์ใด และอ็อบเจ็กต์ใดที่สามารถส่งผ่านระหว่างเธรดได้ และสิ่งใดที่จำเป็นต้องมีการล็อค

คุณสมบัติทั้งหมดเหล่านี้ทำให้ Rust น่าสนใจเพียงพอสำหรับนักพัฒนาที่จะเลือกให้เป็นเครื่องมือใหม่สำหรับการเขียนโปรแกรมระบบ อย่างไรก็ตาม ในแง่ของการประมวลผลแบบขนาน Rust ยังตามหลัง C อยู่เล็กน้อย

Triplett ตั้งใจที่จะสร้างคณะทำงานพิเศษที่จะมุ่งเน้นไปที่การแนะนำคุณสมบัติที่จำเป็นใน Rust เพื่อให้เท่าเทียมกัน เหนือกว่า และแทนที่ C ในด้านการเขียนโปรแกรมระบบได้อย่างเต็มที่ ใน กระทู้บน Redditกล่าวถึงสุนทรพจน์ของเขาว่า “กลุ่ม FFI/C Parity อยู่ระหว่างการสร้างและยังไม่ได้เริ่มทำงาน” สำหรับตอนนี้เขาพร้อมที่จะตอบคำถามใด ๆ และในอนาคตเขาจะเผยแพร่แผนทันทีอย่างแน่นอน สำหรับการพัฒนา Rust ซึ่งเป็นส่วนหนึ่งของความคิดริเริ่มของเขาสำหรับผู้มีส่วนได้เสียทั้งหมด

สันนิษฐานได้ว่ากลุ่ม FFI/C Parity จะมุ่งเน้นไปที่การปรับปรุงการรองรับมัลติเธรดใน Rust ก่อน โดยแนะนำการรองรับ BFLOAT16 ซึ่งเป็นรูปแบบจุดลอยตัวที่ปรากฏในโปรเซสเซอร์ Intel Xeon Scalable ใหม่ รวมถึงการรักษาเสถียรภาพของแอสเซมบลี การแทรกโค้ด



ที่มา: 3dnews.ru

เพิ่มความคิดเห็น