C ++ 23: Yeni C ++-Standardı Hazır

Adanali

Active member
C ++ 23: Yeni C ++-Standardı Hazır


  1. C ++ 23: Yeni C ++-Standardı Hazır

Daha sonraki bir C ++ standardı olarak C ++ 23, programlama dilini önemli ölçüde iyileştirse de, C ++ 98, C ++ 11 veya C ++ 20'den daha az devrim niteliğindedir. Yeni standart C ++ 17 geleneğinde daha fazla.










Rainer Grimm yıllardır yazılım mimarı, ekip ve eğitim müdürü olarak çalıştı. C ++ programlama dilleri, Python ve Haskell hakkında makaleler yazmayı seviyor, ancak uzman konferanslarla konuşmayı da seviyor. Modern C ++ blogunda, C ++ tutkusuyla yoğun bir şekilde ilgileniyor.













C ++ Standartları

C ++ 98


80'lerin sonunda birkaç bağımsız C ++ uygulaması vardı. Bu nedenle, 1989 yılında Bjarne Stroustruppr ve Margaret A. Ellis, “C ++ Referans Kılavuzu” (ARM C ++) kitabında ilan ettiler. Ayrıca, C ++ ARM C ++ ikinci bir önemli görev gerçekleştirmiştir. İlk ISO-C ++-ISO/IEC 14882: 1998 (C ++) için tabanı oluşturdu. C ++ 98 çok önemli özelliklere sahiptir: Konteynerleri ve algoritmaları, dizeleri ve akışları ile modeller, standart modeller kütüphanesi (STL).

C ++ 03


C ++ 03 ile (ISO/IEC 14882: 2003), C ++ 98 öyle marjinal bir teknik düzeltme yaşadı ki, zaman Ray'ımda dikkate almadığım. Toplulukta, C ++ 98 içeren C ++ 03'e basitçe Legacy C ++ denir.



TR1


Teknik Rapor 1 (TR1) resmi bir standart değildir, ancak resmi C ++ 11 standardına dahil edilen birçok bileşeni açıklar. Düzenli ifadeler, akıllı bölümler, karma tablolar veya rastgele sayılar için yeni kütüphaneler TR1'e ve dolayısıyla karşılık gelen destek kütüphanelerine dayanmaktadır. C ++ standardizasyon komitesi üyeleri tarafından kurulan Boost projesi, C ++ kitapçısının mevcut uzantıları için gerçek fikirlerin atölyesidir. TR1 13 kitapçı içeriyordu. Sadece özel matematiksel fonksiyonlar C ++ 17'ye kadar beklemek zorundaydı.

C ++ 11


C ++ 11 bir sonraki C ++ standardı içindir. Biz buna sadece modern C ++ diyoruz. Bu isim aynı zamanda C ++ 14 ve C ++ 17 içindir. C ++ 11, temel olarak C ++ planlama şeklimizi değiştiren birçok özelliğe sahiptir. Örneğin, C ++ 11 TR1 bileşenlerini içerir, ancak anlambilim, mükemmel yönlendirme, çeşitli model, lambdas veya contexpr da taşınır. Hepsi bu değil: C ++ 11 ile C ++, rekabet için temel bir temel ve çok işlevli bir arayüz olarak bir bellek modeli var. Merak ediyorsanız, işte bellek modeli ve çoklu işleme konusundaki öğelerim.

C ++ 14


C ++ 14 küçük bir standarttır. Bununla C ++, okuyucu yazarlarını, genelleştirilmiş lambdaları ve genelleştirilmiş fonksiyonları içerecek şekilde genişletilmiştir.

C ++ 17


C ++ 17 ne büyük ne de küçük. Bu standardın iki olağanüstü özelliği vardır: STL paralel ve dosya sistemi kitaplığı. Artık 80'den fazla STL algoritması, (yürütme politikası) adı verilen bir yürütme stratejisi ile gerçekleştirilebilir. Bu, oluşan bir çağrı anlamına gelir std::sort(std::execute::par, vec.begin(), vec.end()) C ++ uygulaması için bir not paralel olarak sipariş vermektir. Ayrıca, sıralama sıralı olup olmadığı belirtilebilir (std::execute::seq) veya vektörelleştirilmiş (std::execute::par_unseq) yapılmalıdır. C ++ 11'e göre Boost, bu C ++ standardı üzerinde çok güçlü bir etkiye sahipti. Bir dosya sistemi ve yeni veri türleri ile genişletilmiş C ++ artırın std::eek:ptional, std::variant VE std::any. Bunlar benim C ++ 17 makalelerim.

C ++ 20


C ++ 20, C ++ 11 olarak temel olan C ++ planlama şeklimizde değişir. Bu özellikle Big Four için geçerlidir: rütbe, koroutinler, kavramlar ve modüller.

Aralık aralığı, standart modeller kütüphanesinin algoritmalarının doğrudan konteynere uygulanmasına, bunları sonsuz veri akışlarında tanımlamasına ve bunları Shell Unix tarafından bilinen tüplerin operatörüne bağlamasına izin verir.

C ++ 20, koro ile eşzamansız programlamayı destekler. Bu, kooperatif çoklu görev C ++ 20'de sonsuz veri akışlarının, olay döngülerinin veya boru hatlarının zarif bir şekilde uygulanacağı anlamına gelir.

Kavramlar, kabul edilebilir veri türlerinin miktarı için semantik kategorilerin tanımlanabileceği C ++ 'dan gelen modellerin genişlemesidir. Kavramlar sayesinde, modellerin kullanımı ve tanımı çok daha kolay ve daha etkileyici olacaktır.

Modüller, başlık dosyaları için önemli bir gelişmeyi temsil eder ve birçok iyileştirme sözü verir: İrtibat öncesi talimatları (makro) ortadan kaldırın, daha iyi derleme süreleri ve daha kolay paketler elde edin.

Ürünlerim aralıklar, koro, kavramlar, modüller ve C ++ 20.

C ++ 23


Şu anda (Temmuz 2023) C ++ 23 içerik açısından hazırdır ve nihai koordinasyondan kaynaklanmaktadır.

Bunun kesintisi ile C ++ 23, temel dilin küçük ama çok etkili bir genişlemesini sunar. İnovasyon, Python'a benzer şekilde teslimat olarak teslimat sağlar this-işaretçiyi açıkça üye işlevinin tanımında oluşturmak. Bunu çıkartılması sayesinde, C ++ 'da CRTP (merakla tekrarlayan model) veya aşırı yük modeli gibi bazı karmaşık teknikler bir çocuk oyunu haline gelir.

C ++ 23 kütüphanesine birçok önemli ekleme alacaktır. Yani standart kütüphane doğrudan olabilir import std; Doğrudan C ++ 20 formatının içe aktarılması veya spesifikasyonu std::print VE std::println başvurun. Ayrıca, aşağıdaki gibi düz ilişkisel kaplar alıyoruz. std::flat_map. std::map sokmak. Arayüz std::eek:ptional Kompozisyon edilebilirlik nedeniyle monodik bir arayüz ile genişletilir. Yeni veri türü std::expected Zaten değiştirilebilir bir arayüze sahiptir ve hataların tedavisi için beklenen veya beklenmedik bir değerden tasarruf edebilir. Sayesinde std::mdspan Çok boyutlu bir çip alıyoruz. Sonunda öyle std::generator Bir güç akışı üreten ilk beton koro. std::generator C ++ 'da 23 önemli uzantıyı deneyimleyen aralıkların bir parçasıdır.

Sırada ne var?


Bir sonraki makalemde, kesinti ile C ++ 23'ten yolculuğuma başlayacağım. Bunu çıkarmak C ++ 'da küçük ama önemli bir gelişmedir.

Özel ders programlarımın sunumu (“C ++ 20: Ayrıntıları Al” dahil)











Özel ders programlarımı bir saat içinde sunmaktan mutluluk duyuyorum

Gerçekler

  • Whhen: 12 Tem 2023, 9:00 – 10'da (CET; UTC +02: 00)
  • Sunum için kaydolun: E -Mail üzerinden kaydolun
  • Davet Bağlantınızı Alın: 11 Temmuz

(RME)
 
Üst