C ++ 26 bir sonraki harika C ++ standardı olacak

Adanali

Active member
C ++ 26 bir sonraki harika C ++ standardı olacak


  1. C ++ 26 bir sonraki harika C ++ standardı olacak

C ++ 26'nın anlamını göstermek için önce C ++ standartlarını tarihsel bir bağlamda koydum. Bu, C ++ gelişiminde bir sonraki adımı göstermektedir.








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 ++ 40 yaşın üzerinde. Dil son yıllarda nasıl gelişti? İşte C ++ 26 ile biten basitleştirilmiş bir yanıt.

C ++ 98


1980'lerin sonunda, Bjarne Stroustrupr ve Margaret A. Ellis ünlü kitabını “Açıklamalı C ++ Referans Kılavuzu (ARM)” yazdı. Bu kitap iki amaç için hizmet etti. Her şeyden önce, birçok bağımsız C ++ uygulaması vardı. Kitap daha sonra C ++ işlevselliğini tanımladı. İkincisi, kol ilk C ++ standardı için tabandı: C ++ 98 (ISO/IEC 14882). C ++ 98'in bazı temel özellikleri vardı: Standart Modeller Kütüphanesi'nden (STL) kapları ve algoritmaları, dizeleri ve akışları ile model.

C ++ 03


C ++ 03 (14882: 2003) ile C ++ 98, zaman dizimde görünmeyecek kadar küçük bir teknik düzeltme aldı. Toplulukta, C ++ 98 içeren C ++ 03, Legacy-C ++ olarak gösterilir.

TR1


2005 yılında heyecan verici bir şey oldu: 1 (TR1) adı verilen teknik rapor yayınlandı. TR1, C ++ 11'e ve bu nedenle modern C ++ 'a doğru büyük bir adımdı. TR1 (TR 19768), C ++ standardizasyon komitesi üyeleri tarafından kurulan Boost projesine dayanmaktadır. TR1, bir sonraki C ++ standartlarının bir parçası olması gereken 13 kitapçıya sahiptir. Bu, düzenli ifadeler için kütüphane, rastgele sayıların kitapçığı, std::shared_ptr ve karma tablolar. Sadece bu sözde özel matematiksel fonksiyonlar C ++ 17'ye kadar beklemek zorunda kaldı.

C ++ 11

C ++ 11 bir sonraki C ++ standardıdır, ancak buna modern C ++ diyoruz. Bu ad ayrıca C ++ 14 ve C ++ 17'yi de içerir. C ++ 11, C ++ planlama şeklimizi önemli ölçüde değiştiren birçok özelliğe sahiptir. Örneğin, C ++ 11, TR1'in bileşenlerini getirdi, ancak aynı zamanda anlamsal, mükemmel aktarım, çeşitli modeli veya contexpr'yi hareket ettiriyorlar. Ama hepsi bu değil. C ++ 11 ile temel bir iplik tabanı ve bir iş parçacığı FIR olarak bir bellek modeli aldık. Hafıza modeli ve çoklu işlerde genel makalelerimde daha fazlası var.

C ++ 14


C ++ 14 küçük bir C ++ standardıdır. Okuma-yazarı ışıklarını getirdi, genelleştirilmiş ve genelleştirilmiş lambdas constexpr-Pl.

C ++ 17


C ++ 17 ne büyük ne de küçük. İki olağanüstü özelliğe sahiptir: paralel STL ve standartlaştırılmış dosya sistemi. Yaklaşık 80 STL algoritması SO -Called bir yürütme ilkesi kullanılarak gerçekleştirilebilir. Bu bir çağrı anlamına gelir std::sort(std::execute::par, vec.begin(), vec.end()) C ++ uygulaması için bir not, konteyner vec Paralel sipariş için. Ayrıca, sıralama sıralı (std::execution::seq) veya vektörelleştirilmiş (std::execution::par_unseq) olmalı. C ++ 11'de olduğu gibi, Boost da C ++ 17 için çok etkili oldu. Boost sistem dosyamız ve üç yeni veri türümüz var std::eek:ptional, std::variant VE std::any Kontrol ele alındı.

İşte C ++ 17 ile ilgili makalelerim.

C ++ 20


C ++ 20, C ++ 'ı temel olarak C ++ 11 olarak planladığımızı değiştirdi. Bu özellikle dört geniş alan için geçerlidir: rütbe, koroutinler, kavramlar ve modüller.

Range Bookshop, doğrudan kapta ekspres algoritmalara izin verir, algoritmayı tüp sembolü ile bir araya getirir ve sonsuz veri akışlarına uygular.

Koro sayesinde, C ++ 'daki eşzamansız programlama ana akım olabilir. Koirutinler, kooperatif görevleri, olay devreleri, sonsuz veri akışları veya boru hatlarının temelidir.

Kavramlar modeli planlama şeklimizi değiştirecek. Geçerli model konuları için semantik kategorilerdir. Niyetinizi doğrudan sistem verilerinin türünde ifade etmenize izin verir. Bir şeyler ters giderse, kısa bir hata mesajı alırsınız.

Modüller başlık dosyalarının kısıtlamalarını aşacaktır. Çok söz veriyorlar. Örneğin, ön işlem gereksiz hale gelir. Sonunda, daha hızlı inşaat süreleri ve paketler oluşturmanın daha kolay bir yoluna da sahip olacağız.

Bireysel yeniliklerin detayları, aralıklar, choutines, kavramlar, modüller ve C ++ 20 makalelerimde mevcuttur.

C ++ 23


Şu anda (Ağustos 2024) C ++ 23 teknik olarak hazırdır ve son koordinasyon içindedir.

C ++ 23 kesintiler sunar this Ana dilin küçük ama çok etkili bir özelliği. Çıkarmak this Python'a benzer şekilde, dolaylı olarak teslim etmenizi sağlar this-bölümleri üye işlevinin bir tanımında yapmak. Kesinti sayesinde, C ++ 'da CRTP veya aşırı yük modeli gibi bazı karmaşık teknikler çocuk oyunu haline gelir.

C ++ 23 kütüphanesine birçok etkili ekleme alacaktır. Standart kütüphane doğrudan olabilir import std; Biçimlendirme dizesinde önemlidir veya C ++ 20 std::print VE std::println başvurun. Ayrıca, performans nedenlerinden dolayı, std::flat_map almak. 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 aralık alıyoruz. Ve sonunda std::generator Bir güç akışı üreten ilk beton koro. std::generator C ++ 23'te de gelişen aralıkların bir parçasıdır.

Bununla ilgili daha fazla bilgi C ++ 23 makalemde.

C ++ 26


C ++ 26'daki çalışmalar 2023'ün ikinci çeyreğinde başladı ve 2025'in ilk çeyreğinde donma işlevi ile tamamlanacak. Ağustos 2024'te C ++ 26, en az üç ana özellik içerecek: yansıma, sözleşmeler ve std::execution.

Refleks Bir programın yapısını ve davranışını inceleme, analiz etme ve değiştirme yeteneğidir. Bu, C ++ 'daki derleme süresi programlamasını çok daha güçlü hale getirir.

A Sözleşme Hassas ve kontrollü yazılım bileşenleri için arayüzleri belirtir. Yazılımın bu bileşenleri, önceden sözleşmeler, direkler ve değişmez olan işlevlerdir.

std::executionDaha önce bir sanatçı veya verici/alıcı olarak bilinen “jenerik yürütme kaynaklarında eşzamansız yürütmenin yönetimi için standart bir C ++ çerçevesi” sunar. (P2300R10)

Sırada ne var?


Bir sonraki makalede C ++ 26'nın özelliklerine genel bir bakış sunacağım.


(RME)
 
Üst