Microsoft Mulai Berbicara Tentang Bahasa Pemrograman Generasi Selanjutnya, C# Untuk Pemrograman Sistem

Ikon waktu membaca 3 menit Baca


Pembaca membantu dukungan MSpoweruser. Kami mungkin mendapat komisi jika Anda membeli melalui tautan kami. Ikon Keterangan Alat

Baca halaman pengungkapan kami untuk mengetahui bagaimana Anda dapat membantu MSPoweruser mempertahankan tim editorial Baca lebih lanjut

Joe Duffy, seorang arsitek dan pengembang sistem operasi penelitian di Microsoft telah membuat blog tentang bahasa pemrograman generasi berikutnya yang telah mereka kerjakan dalam beberapa tahun terakhir. Microsoft sekarang menggambarkan bahasa yang akan datang ini sebagai ekstensi "pemrograman sistem" ke C#. Microsoft mencoba menggunakan bahasa ini sebagai persilangan antara C# yang berpusat pada Keselamatan & Produktivitas, Java, dll, dan C++ yang berpusat pada Kinerja.

Berikut adalah 6 fitur penting dari bahasa,

) Pemahaman seumur hidup. C++ memiliki RAII, destruksi deterministik, dan alokasi objek yang efisien. C# dan Java sama-sama membujuk pengembang agar terlalu mengandalkan tumpukan GC, dan hanya menawarkan dukungan "longgar" untuk penghancuran deterministik melalui IDisposable. Bagian dari apa yang tim saya lakukan adalah secara teratur mengonversi program C# ke bahasa baru ini, dan tidak jarang kami menemukan 30-50% waktu yang dihabiskan di GC. Untuk server, ini mematikan throughput; untuk klien, ini menurunkan pengalaman, dengan menyuntikkan latensi ke dalam interaksi. Kami telah mencuri halaman dari C++ — di area seperti referensi nilai, memindahkan semantik, penghancuran, referensi / peminjaman — namun tetap mempertahankan elemen keamanan yang diperlukan, dan menggabungkannya dengan ide dari bahasa fungsional. Ini memungkinkan kita untuk secara agresif menumpuk objek yang dialokasikan, secara deterministik merusak, dan banyak lagi.

2) Pemahaman tentang efek samping. Ini adalah evolusi dari apa yang kami terbitkan di OOPSLA 2012, memberi Anda elemen C++ const (tetapi sekali lagi dengan keamanan), bersama dengan kekekalan dan isolasi kelas satu.

3) Pemrograman async dalam skala besar. Komunitas telah 'berputar-putar' dalam hal ini, yaitu apakah akan menggunakan coroutine pemblokiran lanjutan atau ringan. Ini termasuk C# tetapi juga hampir semua bahasa lain di planet ini. Inovasi utama di sini adalah sistem tipe yang dapat dikomposisi yang agnostik terhadap model eksekusi, dan dapat memetakan secara efisien ke salah satunya. Akan menjadi arogan untuk mengklaim bahwa kami memiliki satu cara yang tepat untuk mengungkap hal ini, tetapi memiliki pengalaman dengan banyak pendekatan lain, saya suka di mana kami mendarat.

4) Pemrograman sistem yang aman. Secara umum diklaim bahwa dengan keamanan tipe, ada kerugian kinerja yang melekat. Memang benar bahwa pemeriksaan batas tidak dapat dinegosiasikan, dan kami lebih memilih pemeriksaan luapan secara default. Sungguh mengejutkan apa yang dapat dilakukan oleh kompiler pengoptimalan yang baik di sini, dibandingkan dengan kompilasi JIT. (Dan kita hanya perlu dengan santai mengaudit beberapa buletin keamanan terbaru untuk melihat mengapa fitur-fitur ini bermanfaat.) Area lain termasuk memungkinkan Anda melakukan lebih banyak tanpa mengalokasikan. Seperti memiliki API berbasis lambda yang dapat dipanggil dengan alokasi nol (daripada dua yang biasa: satu untuk delegasi, satu untuk tampilan). Dan dapat dengan mudah mengukir sub-array dan sub-string tanpa mengalokasikan.

5) Model kesalahan modern. Ini adalah satu lagi yang tidak disetujui oleh masyarakat. Kami telah memilih apa yang saya yakini sebagai sweet spot: kontrak di mana-mana (prasyarat, pascakondisi, invarian, pernyataan, dll), gagal-cepat sebagai kebijakan default, pengecualian untuk kegagalan dinamis yang jarang (parsing, I/O, dll), dan mengetik pengecualian hanya ketika Anda benar-benar membutuhkan pengecualian yang kaya. Semua terintegrasi ke dalam sistem tipe dengan cara kelas 1, sehingga Anda mendapatkan semua perilaku subtipe yang tepat yang diperlukan untuk membuatnya aman dan sehat.

6) Kerangka kerja modern. Ini adalah ember penampung semua yang mencakup hal-hal seperti async LINQ, dukungan enumerator yang ditingkatkan yang bersaing dengan iterator C++ dalam kinerja dan tidak menuntut pengiriman antarmuka ganda untuk mengekstrak elemen, dll. Sejujurnya, ini adalah area yang kami miliki daftar terbesar "fitur yang dirancang tetapi belum diimplementasikan", mencakup hal-hal seperti tipe void-as-a-1st-class, tipe non-null, ciri-ciri, pengetikan efek kelas 1, dan banyak lagi. Saya berharap kami memiliki beberapa di antaranya di pos pemeriksaan pertengahan 2014, tetapi tidak semuanya.

Baca lebih lanjut dari tautan di sini.

Lebih lanjut tentang topik: c#, pengembang, microsoft