Jakie są różnice pomiędzy c++11, a c++20

0

Cześć, od jakiegoś czasu uczę się programowania z wykorzystaniem c++ jest to głównie c++11 i stąd mam pytanie. Czy jeśli już się nauczę tego standardu to ile mi zajmie nauka nowych rzeczy z nowych wersji? No i oczywiście czym się różnią te 2 standardy? W końcu ten standard ma już prawie 10 lat. Mam świadomość tego że pytania te nie są zadane odpowiednio dobrze, ale dopiero stawiam swoje pierwsze kroki w programowaniu.

3
Dewolf napisał(a):

Cześć, od jakiegoś czasu uczę się programowania z wykorzystaniem c++ jest to głównie c++11 i stąd mam pytanie. Czy jeśli już się nauczę tego standardu to ile mi zajmie nauka nowych rzeczy z nowych wersji? No i oczywiście czym się różnią te 2 standardy? W końcu ten standard ma już prawie 10 lat. Mam świadomość tego że pytania te nie są zadane odpowiednio dobrze, ale dopiero stawiam swoje pierwsze kroki w programowaniu.

Generalnie to po drodze są jeszcze 2 standardy - C++14 i c++17.
Ze standardu na standard dodawane są nowe funkcje języka, elementy biblioteki standardowej, etc., co za tym idzie zmienia się też sposób w jaki piszemy kod (choć nie zawsze). Tam gdzie w C++11 do wygenerowania Fibonacciego w compile time pewnie użylibyśmy tego popularnego "hacku" ze strukturami i templateami, tak od C++17 jedna constexpr funkcja i wszystko z głowy.

https://github.com/AnthonyCalandra/modern-cpp-features tutaj masz fajny cheatsheet takich ważniejszych rzeczy z każdego standardu

(Teraz czekamy na bogów C++'a którzy przyjdą i walną Ci taki fajny artykuł w odpowiedzi i przy okazji zjadą mnie za użycie złej terminologii i w ogóle pisanie głupot)

0

Chcę po prostu się dowiedzieć czy c++ się dużo zmienił względem standardu c++11. Wiem że na necie jest wszystko, tylko nigdzie nie znajdę "ile tego jest" tylko znajdę coś co jest nowego lub zmienionego (względem c++17). A chodzi mi właśnie o to jak bardzo c++ się zmienił od c++11. Wiem że trochę woda z mózgu... ale no...

0

Chcę po prostu się dowiedzieć czy c++ się dużo zmienił względem standardu c++11. Wiem że na necie jest wszystko, tylko nigdzie nie znajdę "ile tego jest" tylko znajdę coś co jest nowego lub zmienionego >(względem c++17). A chodzi mi właśnie o to jak bardzo c++ się zmienił od c++11. Wiem że trochę woda z mózgu... ale no...

Nic Ci nie poradzę, ogarnięcie tego wymaga wiedzy - nie zamkniesz tematu w wątku na forum.

0

@Dewolf, jeśli dobrze rozumiem: nie chodzi Ci o nazwy i liczbę poszczególnych, hm, zmienionych cech języka, tylko o to, "jak bardzo" zmieniają one, hm, "praktykę" programowania względem poprzednich standardów, tak? Inaczej mówiąc, "jak duży wpływ" zmiany od C++11 do C++20 mają na codzienne programowanie? Jeśli dobrze rozumiem, to metryka dość płynna; ale może ktoś, kto się zna, tu zajrzy i odpowie.

5

Różnice między C++11 a C++17 nie są duże.
W kolejnych wersjach constexpr, lambda oraz auto są coraz bardziej uniwersalne i mniej restrykcyjne.
Pojawia się też parę nowych funkcjonaliści biblioteki standardowej.

C++20 to już rewolucja, którą się na razie nie przejmuj. Minie jeszcze parę ładnych lat zanim kompilatory i inne narzędzie będą wspierać to na przyzwoitym poziomie. A projekty komercyjne, które będą to wykorzystywać będą powszechne dużo później.
Masz sporo czasu, żeby opanować C++17.
A co nowego ma C++20, najważniejsze (według mnie):

  • moduły - czyli obietnica końca mordęgi z plikami nagłówkowymi.
  • koncepty - uprości to pisanie skomplikowanych szablonów, a komunikaty błędów użycia szablonów nie będą miały już "miliona" linii do przeanalizowania
  • korutyny - czyli coś jak Pythonowe generatory
  • biblioteka ranges oraz fmt

Reszta to kontynuacja udoskonaleń z C++11-17, których przez długi nie będziesz używał.

Zamiast zamartwiać się, że pojawia się nowy standard, skup się na podstawach.

2

Najprościej rzecz ujmując, to różnica polega głównie na tym, że w większości przypadków udoskonala się funkcjonalności, które oferowały poprzednie standardy, lub dodaje te z boosta.

Np Smart pointery.
Przed c++11 sam musiałeś dbać o inicjalizacje i zwalnianie pamięci w odpowiednich miejscach, lub napisać własną klase ktora będzie działać w myśl zasady RAII, czyli będzie takim inteligentnym wskaźnikiem.
Po c++ 11 nadal musisz dbać o zarządzanie pamięcią, ale tym razem gotowe rozwiązanie dostarcza standard. Tj Smart pointery.
Itd itd

0
MarekR22 napisał(a):

Różnice między C++11 a C++17 nie są duże.

W kolejnych wersjach constexpr, lambda oraz auto są coraz bardziej uniwersalne i mniej restrykcyjne.
Pojawia się też parę nowych funkcjonaliści biblioteki standardowej.

C++20 to już rewolucja, którą się na razie nie przejmuj. Minie jeszcze parę ładnych lat zanim kompilatory i inne narzędzie będą wspierać to na przyzwoitym poziomie. A projekty komercyjne, które będą to wykorzystywać będą powszechne dużo później.
Masz sporo czasu, żeby opanować C++17.
A co nowego ma C++20, najważniejsze (według mnie):

  • moduły - czyli obietnica końca mordęgi z plikami nagłówkowymi.
  • koncepty - uprości to pisanie skomplikowanych szablonów, a komunikaty błędów użycia szablonów nie będą miały już "miliona" linii do przeanalizowania
  • korutyny - czyli coś jak Pythonowe generatory
  • biblioteka ranges oraz fmt

Reszta to kontumacja udoskonaleń C++11-17, których przez długi nie będziesz używał.

Zamiast zamartwiać się, że pojawia się nowy standard, skup się na podstawach.

O właśnie taką odpowiedź mi chodziło, wielkie dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1