13 poin oleh xguru 2023-07-13 | 2 komentar | Bagikan ke WhatsApp
  • Standar C++ generasi berikutnya setelah C++20
  • Bukan game changer seperti C++98, C++11, atau C++20, melainkan perubahan kecil setingkat C++17

Menelusuri perubahan standar C++ (selama 40 tahun)

C++98

  • Pada akhir 1980-an, Bjarne Stroustrup dan Margaret A. Ellis menulis buku terkenal Annotated C++ Reference Manual (ARM)
  • Tujuan buku ini ada dua
    • Karena ada terlalu banyak implementasi C++ independen, ARM mendefinisikan fitur-fitur C++
    • Menjadi dasar bagi standar C++, yaitu C++98 (ISO/IEC 14882)
  • C++98 mencakup beberapa fitur penting
    • Templates
    • STL(Standard Template Library): mencakup container, algoritme, string, dan IO stream

C++03

  • C++03 (14882:2003) hanya membawa revisi teknis yang sangat kecil
  • Di komunitas, C++03 bersama C++98 sering disebut sebagai "Legacy C++"

TR1

  • Pada 2005, ada perkembangan menarik. TR1(Technical Report 1) diterbitkan
  • TR1 merupakan langkah besar menuju C++11 sekaligus langkah awal menuju Modern C++
  • Berbasis pada proyek Boost dari para anggota komite standar C++
  • Mencakup 13 library yang akan masuk ke standar C++ generasi berikutnya (regular expression, bilangan acak, smart pointer seperti std::shard_ptr, hash table, dll.)

C++11

  • Ini adalah standar C++ berikutnya, tetapi kita menyebutnya Modern C++. Nama ini juga mencakup C++14 dan C++17
  • C++11 benar-benar mengubah cara kita mengembangkan C++
    • Selain komponen TR1, C++11 juga membawa move semantic, perfect forwarding, variadic templates, constexpr, dan lainnya
    • Termasuk model memori berbasis threading dan Threading API

C++14

  • Standar C++ yang kecil. Memperkenalkan read-writer locks, generalized lambdas, dan fungsi constexpr

C++17

  • Tidak terlalu besar, tapi juga tidak kecil
  • Mencakup dua fitur yang menonjol: Parallel STL dan filesystem yang distandardisasi
    • Sekitar 80 algoritme STL bisa dijalankan melalui execution policy (paralel, sekuensial, vektor)
  • Sangat dipengaruhi oleh Boost. Termasuk filesystem dan tiga tipe data (std::optional, std::variant, std::any)

C++20

  • Seperti C++11, C++20 juga mengubah cara kita melakukan pemrograman C++
  • Khususnya empat hal besar
    • Ranges: dengan library Ranges, kita bisa mengekspresikan algoritme langsung pada container dan menggabungkan algoritme dengan simbol pipe untuk diterapkan pada aliran data tak terbatas
    • Coroutines: membuat pemrograman asinkron menjadi arus utama di C++. Menjadi fondasi untuk cooperative task, event loop, aliran data tak terbatas, dan pipeline
    • Concepts: mengubah cara kita memikirkan dan memprogram template. Memungkinkan pemberian constraint pada parameter template, pemeriksaan tipe, dan verifikasi saat kompilasi
    • Modules: membantu melampaui keterbatasan header file. Menjanjikan banyak hal; misalnya tidak lagi memerlukan preprocessor, pada akhirnya mengurangi waktu build dan mempermudah membangun package

C++23

  • Per Juli 2023, C++23 sedang menunggu pemungutan suara final
  • Menambahkan fitur kecil tetapi sangat berpengaruh pada bahasa itu sendiri, yaitu "Deducing this"
    • Mirip seperti di Python, pointer this yang secara implisit diteruskan ke member function dapat dibuat eksplisit
    • Ini mempermudah implementasi teknik kompleks seperti CRTP(Curiously Recurring Template Pattern) atau pola Overload
  • Ada juga tambahan penting di library C++23
    • Bisa langsung mengimpor standard library dengan import std;, atau memakai format string C++20 di std:print dan std:println
    • std::flat_map sebagai pengganti std::map yang lebih baik dari sisi performa
    • Antarmuka std::optional diperluas menjadi antarmuka monadik demi composability
    • Tipe data baru std::expected
    • Span multidimensi std::mdspan
    • Coroutine std::generator untuk menghasilkan aliran angka

2 komentar

 
carnoxen 2023-07-13

Sepertinya masih belum ada kabar soal standar networking.

 
penza1 2023-07-20

Bahkan untuk standar berikutnya pun;; sepertinya tidak akan pasti, ya.