Microsoft, Yeni Nesil Programlama Dili, Sistem Programlaması İçin C# Hakkında Konuşmaya Başlıyor

Okuma zamanı simgesi 3 dk. okuman


Okuyucular MSpoweruser'ı desteklemeye yardımcı olur. Bağlantılarımız aracılığıyla satın alırsanız komisyon alabiliriz. Araç İpucu Simgesi

MSPoweruser'ın editör ekibini ayakta tutmasına nasıl yardımcı olabileceğinizi öğrenmek için açıklama sayfamızı okuyun. Daha fazla

Microsoft'ta bir araştırma işletim sistemi üzerinde mimar ve geliştirici olan Joe Duffy, son birkaç yıldır üzerinde çalıştıkları yeni nesil programlama dili hakkında bir blog yazdı. Microsoft şimdi bu yaklaşan dili C#'a "sistem programlama" uzantıları olarak tanımlıyor. Microsoft, bu dili Güvenlik ve Üretkenlik merkezli C#, Java vb. ile Performans merkezli C++ arasında bir geçiş olarak sunmaya çalışıyor.

İşte dilin 6 önemli özelliği,

) Ömür boyu anlayış. C++, RAII'ye, deterministik yıkıma ve nesnelerin verimli tahsisine sahiptir. Hem C# hem de Java, geliştiricileri GC yığınına çok fazla güvenmeye ikna eder ve IDisposable aracılığıyla deterministik imha için yalnızca "gevşek" destek sunar. Ekibimin yaptığı şeylerden biri de düzenli olarak C# programlarını bu yeni dile dönüştürmek ve GC'de harcanan zamanın %30-50'si ile karşılaşmamız alışılmadık bir durum değil. Sunucular için bu, verimi düşürür; müşteriler için, etkileşime gecikme ekleyerek deneyimi düşürür. Referansları değerleme, hareket semantiği, imha, referanslar/ödünç alma gibi alanlarda C++'dan bir sayfa çaldık ve yine de gerekli güvenlik unsurlarını koruduk ve bunları işlevsel dillerden gelen fikirlerle birleştirdik. Bu, tahsis edilen nesneleri agresif bir şekilde istiflememize, deterministik olarak imha etmemize ve daha pek çok şeye izin verir.

2) Yan etkileri anlama. Bu, OOPSLA 2012'de yayınladığımız ve birinci sınıf değişmezlik ve izolasyon ile birlikte size C++ const (ama yine güvenli) unsurlarını veren şeyin evrimidir.

3) Ölçekli zaman uyumsuz programlama. Topluluk bu konuda 'yuvarlak' ve 'yuvarlak' olmuştur, yani sürekli geçiş veya hafif engelleme eşyordamlarının kullanılıp kullanılmayacağına. Bu, C#'ı ve aynı zamanda gezegendeki hemen hemen tüm diğer dilleri içerir. Buradaki temel yenilik, yürütme modeline göre bağımsız olan ve her ikisinden birine verimli bir şekilde eşlenebilen, şekillendirilebilir bir tür sistemidir. Bu şeyleri ortaya çıkarmak için tek bir doğru yolumuz olduğunu iddia etmek kibirli olurdu, ancak diğer birçok yaklaşımla ilgili deneyimim olduğu için geldiğimiz yeri seviyorum.

4) Tip güvenli sistem programlama. Genel olarak, tip güvenliği ile doğal bir performans kaybının geldiği iddia edilir. Sınır denetiminin pazarlık konusu olmadığı ve varsayılan olarak taşma denetimini tercih ettiğimiz doğrudur. İyi bir optimizasyon derleyicisinin burada JIT derlemesine kıyasla neler yapabileceği şaşırtıcı. (Ve bu özelliklerin neden değerli olduğunu görmek için yalnızca bazı son güvenlik bültenlerini rastgele denetlemek yeterlidir.) Diğer alanlar, ayırmadan daha fazlasını yapmanıza izin vermeyi içerir. Sıfır tahsisle çağrılabilen lambda tabanlı API'lere sahip olmak gibi (her zamanki ikisi yerine: biri temsilci için, biri ekran için). Ve alt dizileri ve alt dizileri ayırmadan kolayca oyabilme.

5) Modern hata modeli. Bu, toplumun üzerinde anlaşamadığı bir başka konu. En iyi nokta olduğuna inandığım şeyi seçtik: her yerde sözleşmeler (ön koşullar, son koşullar, değişmezler, iddialar, vb.), varsayılan politika olarak başarısız hızlı, nadir görülen dinamik başarısızlık için istisnalar (ayrıştırma, G/Ç, vb.), ve istisnaları yalnızca kesinlikle zengin istisnalara ihtiyacınız olduğunda yazdınız. Tümü, tip sistemine 1. sınıf bir şekilde entegre edilmiştir, böylece güvenli ve sağlam hale getirmek için gerekli tüm uygun alt tipleme davranışını elde edersiniz.

6) Modern çerçeveler. Bu, zaman uyumsuz LINQ, performans açısından C++ yineleyicileriyle rekabet eden ve öğeleri ayıklamak için çift arabirimli gönderim vb. gerektirmeyen gelişmiş numaralandırıcı desteği gibi şeyleri kapsayan bir tümünü kapsayan bir pakettir. Tamamen dürüst olmak gerekirse, bu, sahip olduğumuz alandır. 1. sınıf olarak geçersiz, boş olmayan türler, özellikler, 1. sınıf efekt yazma ve daha fazlasını kapsayan "tasarlanmış ancak henüz uygulanmamış özelliklerin" en büyük listesi. 2014 ortasındaki kontrol noktamızda bunlardan birkaçına sahip olmamızı bekliyorum, ancak hepsine değil.

Bağlantıdan daha fazlasını okuyun okuyun.

Konular hakkında daha fazla bilgi: c#, geliştiriciler, microsoft