ΠΠ°ΡΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π΄Π»Ρ C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ΅Π·ΠΈΡΡ:
.###
ΠΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°
- Π Π°Π±ΠΎΡΠ° β ΡΠ°ΠΌΡΠΉ ΠΏΡΡΠΌΠΎΠΉ ΠΏΡΡΡ, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΡΠ°Π·Ρ.
- ΠΡΡΡΡ/ΠΊΠ½ΠΈΠ³ΠΈ/ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ β ΠΏΠΎΠ»Π΅Π·Π½Ρ, Π½ΠΎ ΡΠ°ΡΡΠΎ Π½Π΅ Π΄Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ.
- Open Source β ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΡΠ°, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΎΡ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² ΠΈ ΡΡΡΠΎΡΠΊΠΈ Π² ΡΠ΅Π·ΡΠΌΠ΅.
ΠΠ°ΠΊ Π½Π°ΡΠ°ΡΡ Ρ Open Source
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ Π΄ΡΡΠ΅ (ΠΈΠ³ΡΠΎΠ²ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ, Boost, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, OpenCV, ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅).
- ΠΠ·ΡΡΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π±Π°Π³-ΡΡΠ΅ΠΊΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΠ°ΠΊ
good first issue). - ΠΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π±ΡΠ΄ΡΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΊΡΠΈΡΠΈΠΊΠ΅ ΠΎΡ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΡΠΎΡΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ
ΠΡΠ°ΠΏΡ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ (ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ)
- ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΡΠ΅Π½ΠΊΠ° ΡΠ΅Π·ΡΠΌΠ΅ ΠΈ Π±Π°Π·ΠΎΠ²ΡΡ Π·Π½Π°Π½ΠΈΠΉ.
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ.
- ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ.
- Π€ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ β Π²ΡΡΡΠ΅ΡΠ° Ρ Π±ΡΠ΄ΡΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
Π‘Π΅ΠΊΡΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°
- Π€ΠΎΡΠΌΠ°Ρ: ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, Π»ΠΈΡΡΠΎΠΊ Ρ ΡΡΡΠΊΠΎΠΉ (Ρ Π°ΡΠ΄ΠΊΠΎΡ).
- Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ: ΠΎΡ ΠΏΡΠΎΡΡΡΡ
(
strlen) Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΡ . - ΠΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ: Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠ°ΡΡ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Π²ΡΠΎΠ΄Π΅ Codeforces.
ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
- Π‘ΡΡΡ: ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ TwitterΒ»).
- Π’Π°ΠΊΡΠΈΠΊΠ°: Π½Π΅ Π΄Π°Π²Π°ΡΡ ΠΎΡΠ²Π΅Ρ ΡΡΠ°Π·Ρ, Π° Π·Π°Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΡΠ½ΡΡΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² (ΠΏΡΠΎ Π½Π°Π³ΡΡΠ·ΠΊΡ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠ΅ΠΊ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΠ).
- ΠΠΎΠ»Π΅Π·Π½Π°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°: ΠΊΠ½ΠΈΠ³Π° Β«ΠΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» (Β«ΠΊΠ½ΠΈΠΆΠΊΠ° Ρ ΠΊΠ°Π±Π°Π½ΡΠΈΠΊΠΎΠΌΒ»).
Π€ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
- Π¦Π΅Π»Ρ: ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΡ, ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ ΠΈ Π³Π»ΡΠ±ΠΈΠ½Ρ Π·Π½Π°Π½ΠΈΠΉ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
- ΠΠΎΠΏΡΠΎΡΡ: ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΄ΠΈΡΠΈΡ ΠΈ ΡΡΡΠ°ΡΡΡ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΈ.
- ΠΠ°ΠΆΠ½ΠΎ: Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΎΠΏΡΡ (ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΠ½ΡΡΠΈΠ±Ρ Π² Open Source).
Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ: ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΏΠΎΠΌΠΈΠΌΠΎ C++
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
- Π‘ΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (Git) β ΠΎΡΠ½ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
- ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
checkout,pull,add,commit,push,diff,status. - ΠΠ°ΡΠ΅ΠΌ: ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π°, ΡΠ°Π±ΠΎΡΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
- ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
- Π‘ΠΊΡΠΈΠΏΡΠΎΠ²ΡΠ΅ ΡΠ·ΡΠΊΠΈ (Python, Bash) β Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠ°Π²ΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ).
- Π―Π·ΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² (SQL ΠΈ Π΄ΡΡΠ³ΠΈΠ΅) β Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ.
- ΠΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
- ΠΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈ ΡΠΊΠ·ΠΎΡΠΈΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ (Π΄Π»Ρ Π³ΡΠ°ΡΠΎΠ², Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ).
- Π€ΠΎΡΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΡ (JSON, YAML, Protobuf, MessagePack) β Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
ΠΠ»ΡΠ±ΠΎΠΊΠΈΠ΅ Π·Π½Π°Π½ΠΈΡ Π΄Π»Ρ C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ β ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, page faults, ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° (
select,poll,epoll). - ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β Π½Π΅ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ, Π° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, Π²ΠΎ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ C++ ΠΊΠΎΠ΄. ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ: ΡΠ°ΠΉΡ godbolt.org Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°.
- ΠΡΠ΅Π΄ΠΌΠ΅ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ β Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π·Π½Π°Π½ΠΈΠ΅ Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π»ΠΈΠ½Π³Π²ΠΈΡΡΠΈΠΊΠΈ, ΡΠΈΠ·ΠΈΠΊΠΈ, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ Ρ.Π΄.
C++: ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΠΈ
ΠΠ΄ΠΈΠΎΠΌΠ° RAII (Resource Acquisition Is Initialization)
- Π‘ΡΡΡ: ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ΅ΡΡΡΡΠ° (ΠΏΠ°ΠΌΡΡΡ, ΡΠ°ΠΉΠ») ΠΊ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌΡ ΡΠΈΠΊΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
- ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ , Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΉ ΠΊΠΎΠ΄.
- ΠΡΠΈΠΌΠ΅Ρ:
std::stringvs ΡΡΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π² C.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ ΡΠΌΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
std::shared_ptrβ ΡΠΌΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠ΄ΡΡΡΡΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ. ΠΠΈΠ½ΡΡ: ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠ»Π΅ΡΠ΅Π½ΠΈΡΠΌ Π²Π»Π°Π΄Π΅Π½ΠΈΡ.std::unique_ptrβ ΡΠΌΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ΠΌ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.std::vectorβ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΠΊΡΡ-Π΄ΡΡΠΆΠ΅Π»ΡΠ±Π½ΡΠΉ).std::unordered_mapβ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ°. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ.- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (C++20): ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ Ρ ΡΡΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ Π»ΠΈΡΠ½ΠΈΡ Π°Π»Π»ΠΎΠΊΠ°ΡΠΈΠΉ.
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ Π°ΡΠΎΠΌΠΈΠΊΠΈ
std::atomicβ Π°ΡΠΎΠΌΠ°ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².- Memory order: ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (
sequentially consistent), ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ (ARM). - ΠΠ°ΠΆΠ½ΠΎ:
volatileΠ½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Π°ΡΠΎΠΌΠΈΠΊΠΎΠ² Π² C++.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°
- Π‘Π°Π½Π°ΡΠ°ΠΉΠ·Π΅ΡΡ β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ runtime-Π°Π½Π°Π»ΠΈΠ·Π°.
- AddressSanitizer (ASan): ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ.
- UndefinedBehaviorSanitizer (UBSan): Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
- ThreadSanitizer (TSan): Π³ΠΎΠ½ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
- MemorySanitizer (MSan): Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ (ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ).
- ΠΠΈΠ½ΡΠ΅ΡΡ β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°.
- ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ:
concurrency-mt-unsafe, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅std::optional, Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ Π² ΡΠΈΠΊΠ»Π°Ρ , ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅noexceptΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
- ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ:
ΠΠΎΠ²ΠΈΠ½ΠΊΠΈ ΠΈ Π±ΡΠ΄ΡΡΠ΅Π΅ C++
- Π Π΅ΡΠ»Π΅ΠΊΡΠΈΡ (C++26) β Π°Π½Π°Π»ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
^ΠΈ[: ... :]). ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ (ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΠΏΠ°ΡΡΠ΅ΡΡ). - ΠΠΎΠ½ΡΡΠ°ΠΊΡΡ β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈ ΠΏΠΎΡΡΡΡΠ»ΠΎΠ²ΠΈΠΉ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΈ ΡΠ½ΠΈΡΠΈΡΠΈΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
- Ranges (C++20) β Π»Π΅Π½ΠΈΠ²ΡΠ΅, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅ΠΌΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ. ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²ΠΈΡΡΡΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ.
- Π ΠΏΠ»Π°Π½Π°Ρ (C++29+): pattern matching, ΠΏΡΠΎΡΠΈΠ»ΠΈ (ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ·ΡΠΊΠ°), ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Ranges ΠΈ executors, ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ.
ΠΡΠ²ΠΎΠ΄Ρ
- ΠΠ½ΡΡΠΈΡΡΡ Π΄Π°ΡΡ Π±Π°Π·Ρ, Π½ΠΎ Π΄Π»Ρ ΡΠΎΡΡΠ° Π½ΡΠΆΠ½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. Open Source β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ.
- Π‘ΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈ.
- C++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ°, Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΠ‘, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΌΠ΅ΠΆΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
- Π―Π·ΡΠΊ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ (ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΡ, ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ, ranges), ΠΎΡΠΊΡΡΠ²Π°Ρ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.