Microsoft เริ่มพูดถึงภาษาการเขียนโปรแกรมรุ่นต่อไป, C# สำหรับการเขียนโปรแกรมระบบ

ไอคอนเวลาอ่านหนังสือ 3 นาที. อ่าน


ผู้อ่านช่วยสนับสนุน MSpoweruser เราอาจได้รับค่าคอมมิชชันหากคุณซื้อผ่านลิงก์ของเรา ไอคอนคำแนะนำเครื่องมือ

อ่านหน้าการเปิดเผยข้อมูลของเราเพื่อดูว่าคุณจะช่วย MSPoweruser รักษาทีมบรรณาธิการได้อย่างไร อ่านเพิ่มเติม

Joe Duffy สถาปนิกและนักพัฒนาระบบปฏิบัติการวิจัยของ Microsoft ได้เขียนบล็อกเกี่ยวกับภาษาการเขียนโปรแกรมรุ่นต่อไปที่พวกเขาใช้ในช่วงสองสามปีที่ผ่านมา Microsoft กำลังอธิบายภาษาที่กำลังจะเกิดขึ้นนี้เป็นส่วนขยาย "การเขียนโปรแกรมระบบ" เป็น C # Microsoft พยายามนำเสนอภาษานี้โดยข้ามระหว่าง C#, Java และอื่นๆ ที่เน้นความปลอดภัยและประสิทธิภาพการทำงาน และ C++ ที่เน้นประสิทธิภาพ

นี่คือคุณสมบัติที่สำคัญ 6 ประการของภาษา

) ความเข้าใจตลอดชีวิต C++ มี RAII การทำลายแบบกำหนดได้ และการจัดสรรอ็อบเจ็กต์อย่างมีประสิทธิภาพ C# และ Java ต่างก็เกลี้ยกล่อมนักพัฒนาให้พึ่งพา GC heap มากเกินไป และเสนอการสนับสนุน "หลวม" เท่านั้นสำหรับการทำลายแบบกำหนดผ่าน IDisposable ส่วนหนึ่งของสิ่งที่ทีมของฉันทำคือการแปลงโปรแกรม C# เป็นภาษาใหม่นี้เป็นประจำ และไม่ใช่เรื่องแปลกที่เราจะพบว่าใช้เวลา 30-50% ใน GC สำหรับเซิร์ฟเวอร์ สิ่งนี้จะฆ่าปริมาณงาน สำหรับลูกค้า มันลดระดับประสบการณ์โดยใส่เวลาแฝงเข้าไปในการโต้ตอบ เราได้ขโมยเพจจากภาษา C++ — ในด้านต่างๆ เช่น การอ้างอิง rvalue, ความหมายการย้าย, การทำลาย, การอ้างอิง / การยืม — และยังคงรักษาองค์ประกอบที่จำเป็นของความปลอดภัย และรวมเข้ากับแนวคิดจากภาษาที่ใช้งานได้ ซึ่งช่วยให้เราสามารถสแต็คการจัดสรรอ็อบเจ็กต์ ทำลายแบบกำหนดตายตัว และอื่นๆ ได้อีกมาก

2) ความเข้าใจผลข้างเคียง นี่คือวิวัฒนาการของสิ่งที่เราเผยแพร่ใน OOPSLA 2012 โดยให้องค์ประกอบของ C++ const (แต่มีความปลอดภัยอีกครั้ง) พร้อมกับความไม่เปลี่ยนรูปและการแยกตัวระดับเฟิร์สคลาส

3) การเขียนโปรแกรม Async ในระดับ ชุมชนได้รับ 'รอบและ' เกี่ยวกับสิ่งนี้ นั่นคือว่าจะใช้ coroutines ที่ส่งผ่านต่อเนื่องหรือบล็อกแบบเบา ซึ่งรวมถึง C # แต่ยังแทบทุกภาษาอื่น ๆ ในโลก นวัตกรรมที่สำคัญในที่นี้คือระบบประเภทที่ประกอบได้ซึ่งไม่อิงกับโมเดลการดำเนินการ และสามารถแมปกับทั้งสองอย่างได้อย่างมีประสิทธิภาพ คงจะเป็นการเย่อหยิ่งที่จะอ้างว่าเรามีวิธีหนึ่งที่ถูกต้องในการเปิดเผยสิ่งนี้ แต่ด้วยประสบการณ์ด้วยวิธีอื่นๆ มากมาย ฉันชอบที่ที่เราไปถึง

4) การเขียนโปรแกรมระบบ Type-safe มักอ้างว่าด้วยความปลอดภัยประเภทมีการสูญเสียประสิทธิภาพโดยธรรมชาติ เป็นความจริงที่การตรวจสอบขอบเขตไม่สามารถต่อรองได้ และเราต้องการให้มีการตรวจสอบล้นโดยค่าเริ่มต้น น่าแปลกใจที่คอมไพเลอร์การเพิ่มประสิทธิภาพที่ดีสามารถทำได้ที่นี่ เมื่อเทียบกับการคอมไพล์ JIT (และจำเป็นต้องตรวจสอบกระดานข่าวความปลอดภัยล่าสุดเพื่อดูว่าเหตุใดคุณลักษณะเหล่านี้จึงมีประโยชน์) ส่วนอื่นๆ รวมถึงการอนุญาตให้คุณทำสิ่งต่างๆ ได้มากขึ้นโดยไม่ต้องจัดสรร เช่นเดียวกับการมี API ที่ใช้แลมบ์ดาซึ่งสามารถเรียกใช้ได้โดยไม่มีการจัดสรร (แทนที่จะเป็นสองรายการตามปกติ: หนึ่งรายการสำหรับผู้ได้รับมอบหมาย อีกรายการสำหรับการแสดงผล) และสามารถแกะสลัก sub-array และ sub-strings ได้อย่างง่ายดายโดยไม่ต้องจัดสรร

5) โมเดลข้อผิดพลาดสมัยใหม่ นี่เป็นอีกเรื่องหนึ่งที่ชุมชนไม่เห็นด้วย เราได้เลือกสิ่งที่ฉันเชื่อว่าเป็นจุดสนใจ: สัญญาทุกที่ (เงื่อนไขเบื้องต้น เงื่อนไขภายหลัง ค่าคงที่ การยืนยัน ฯลฯ) นโยบายเริ่มต้นล้มเหลวอย่างรวดเร็ว ข้อยกเว้นสำหรับความล้มเหลวแบบไดนามิกที่หายาก (การแยกวิเคราะห์ I/O ฯลฯ ) และพิมพ์ข้อยกเว้นเฉพาะเมื่อคุณต้องการข้อยกเว้นที่สมบูรณ์เท่านั้น ทั้งหมดรวมอยู่ในระบบประเภทในรูปแบบที่ 1 เพื่อให้คุณมีพฤติกรรมการพิมพ์ย่อยที่เหมาะสมทั้งหมดที่จำเป็นในการทำให้ปลอดภัยและเสียง

6) กรอบงานสมัยใหม่ นี่คือบัคเก็ตแบบรับทั้งหมดที่ครอบคลุมสิ่งต่าง ๆ เช่น async LINQ การสนับสนุนตัวแจงนับที่ได้รับการปรับปรุงที่แข่งขันกับตัววนซ้ำ C++ ในด้านประสิทธิภาพและไม่ต้องการการส่งแบบสองอินเทอร์เฟซเพื่อแยกองค์ประกอบ ฯลฯ พูดตามตรง นี่คือส่วนที่เรามี รายการที่ใหญ่ที่สุดของ "คุณสมบัติที่ออกแบบ แต่ยังไม่ได้ใช้งาน" ซึ่งครอบคลุมสิ่งต่าง ๆ เช่น void-as-a-1st-class-type, ประเภทที่ไม่ใช่ null, ลักษณะ, การพิมพ์เอฟเฟกต์คลาส 1 และอื่น ๆ ฉันคาดว่าเราจะมีสิ่งเหล่านี้บางส่วนในจุดตรวจกลางปี ​​2014 แต่ไม่ใช่ทั้งหมด

อ่านเพิ่มเติมจากลิงค์ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม.

ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อต่างๆ: c#, นักพัฒนา, ไมโครซอฟท์