Najlepszy przegląd współczesnych paradygmatów C ++? [Zamknięte]

16

Pisałem C ++ intensywnie między 8 a 10 lat temu. Od tego czasu przeszedłem do C # z powodów zawodowych. Jednak od czasu do czasu widzę takie wypowiedzi

„Jeśli nadal ręcznie śledzisz odniesienia do wskaźników, robisz to źle”

lub

„C ++ jest całkowicie bezpieczny, pod warunkiem, że używasz nowoczesnych koncepcji, takich jak RAII, i nie ręcznie alokujesz pamięci, jak odzyskujący programista C.”

Oba były standardową procedurą dziesięć lat temu. Widziałem, że w ostatnim czasie znacznie poprawiono C ++; W szczególności C ++ 0x wydaje się mieć nowe możliwości. Jaki jest najlepszy zasób dla programisty „C / old C ++”, aby złapać się na „nowoczesnych” wzorcach i praktykach C ++?

GWLlosa
źródło
3
Były standardową procedurą dziesięć lat temu. Niestety nadal istnieje bardzo znaczna część programistów C ++ korzystających ze standardowej procedury sprzed trzech dekad.
DeadMG
7
Nie znam żadnego zasobu, ale współczesny C ++ sprowadza się zasadniczo do: (1) szerokiego użycia STL, gdy tylko jest to możliwe zamiast ręcznie walcowanych algorytmów, (2) użycia inteligentnych wskaźników i kontenerów STL w stosunku do ręcznego przydzielania / dezalokacji , (3) funkcjonalny styl programowania wykorzystujący funktory / lambdy wraz z funkcjami wyższego rzędu, oraz (4) preferowanie statycznego polimorfizmu opartego na szablonie nad funkcjami wirtualnymi w czasie wykonywania, gdy tylko jest to możliwe
Charles Salvia
Skuteczne C ++ autorstwa Scotta Meyersa
Gyan alias Gary Buyn,

Odpowiedzi:

5

Może to mieć więcej wspólnego z materiałami instruktażowymi niż z większością innych rzeczy, ale 8-10 lat temu wydaje mi się, że sposób, w jaki język był używany, bardzo się różnił. Dzisiejszy nacisk kładzie się bardziej na wykorzystanie szablonów, bezpieczeństwo typów i ogólne programowanie, gdzie wcześniej było więcej strachu przed tym wszystkim, a ludzie skupiali się prawie wyłącznie na C z aspektami obiektowymi.

Zmieniają się także materiały instruktażowe. Podczas gdy przed standardową książką dla początkujących w C ++ prowadziłbyś przez printf, scanf itp., Prawie nie widzisz ich w książkach z nowoczesnym podejściem.

Niektóre dobre książki to jedna z czerwonych książek. Wyjątkowy C ++, Więcej wyjątkowych C ++, Metaprogramowanie szablonów C ++, Nowoczesny design C ++, Przyspieszone C ++ ...

Myślę, że dobrym przykładem może być spojrzenie na to, gdzie obecnie pracuję. Przyszedłem tutaj, używając C ++ w nowoczesny sposób i wydaje się, że większość programistów nawet nie wie, co robię i dlaczego. Na przykład tworzenie obiektów z operatorem () ... Musiałem skomentować piekło przy każdym wystąpieniu bind () i ostatecznie kazano mu zrzucić cały ten kod. Nie wiem, co robią inicjalizatory ... To było naprawdę dziwaczne i trudne.

Edward Strange
źródło
5

Aby uzyskać szybki nadzór nad nowoczesnymi funkcjami prezentowanymi całkiem nieźle, nie pomyliłbyś się, oglądając ostatnią prezentację Herb Sutter , „Pisanie nowoczesnego kodu C ++: jak C ++ ewoluował przez lata” funkcji C ++ na // build /.

Mówi o tym, dlaczego jest to lepszy język niż C # (oczywiście - Microsoft regularnie zmienia spodnie, a dziś noszą modę C ++, więc będą to szeptać, po prostu podnieśli C # jako odpowiedź na głód na świecie dekadę temu), ale robiąc to, opisuje wszystkie dobre bity (takie jak „automatyczne” zarządzanie pamięcią i klasy STL), a następnie mówi o nowych bitach ze standardu C ++ 0x.

gbjbaanb
źródło