Лучший обзор современных парадигм C ++? [закрыто]

16

Я часто писал на C ++ от 8 до 10 лет назад. С тех пор я перешел на C # по профессиональным причинам. Тем не менее, время от времени я вижу такие заявления, как

«Если вы все еще вручную отслеживаете ссылки на указатели, вы делаете это неправильно»

или

«C ++ совершенно безопасен, если вы используете современные концепции, такие как RAII, и не выделяете память вручную, как восстанавливающийся разработчик C».

Оба из них были стандартной процедурой десять лет назад. Я видел, что C ++ был значительно улучшен в последнее время; В частности, C ++ 0x обладает некоторыми новыми возможностями. Какой лучший ресурс для программиста на "C / old C ++", чтобы освоить "современные" шаблоны и практики C ++?

GWLlosa
источник
3
Они были стандартной процедурой десять лет назад. К сожалению, все еще есть очень значительная часть разработчиков C ++, использующих стандартную процедуру трех десятилетий назад.
DeadMG
7
Я не знаю ни одного ресурса, но современный C ++ в основном сводится к: (1) широкому использованию STL, когда это возможно, вместо алгоритмов, запускаемых вручную, (2) использованию интеллектуальных указателей и контейнеров STL вместо ручного выделения / освобождения , (3) функциональный стиль программирования, использующий функторы / лямбды вместе с функциями высшего порядка, и (4) предпочтение статическому полиморфизму на основе шаблонов виртуальным функциям во время выполнения, когда это возможно
Чарльз Сальвия,
Эффективный C ++ Скотт Мейерс
Гьян ака Гари Буйн

Ответы:

5

Это может быть больше связано с учебными материалами, чем с большинством других вещей, но 8-10 лет назад мне кажется, что способ использования языка сильно отличался от сегодняшнего дня. Сегодня основной упор делается на использование шаблонов, безопасность типов и общее программирование, где раньше было все больше страха перед всем этим, и люди сосредоточились почти исключительно на C с аспектами объектов.

Учебные материалы тоже меняются. В то время как до начала стандартной книги C ++ вы проходили через printf, scanf и т. Д., Вы вряд ли увидите это в книгах с современным подходом.

Некоторые хорошие книги - любая из красных книг. Исключительный C ++, Больше исключительных C ++, Метапрограммирование шаблонов C ++, Современный дизайн C ++, Ускоренный C ++ ...

Я думаю, что хорошим примером может быть то, где я сейчас работаю. Я пришел сюда, используя современный C ++, и кажется, что большинство разработчиков даже не знают, что я делаю и почему. Например, создание объектов с оператором () в них ... Пришлось комментировать ад в каждом случае bind (), и в конце концов ему было приказано удалить весь этот код. Не знаю, что делают инициализаторы ... Это было очень странно и тяжело для меня.

Эдвард Стрендж
источник
5

Чтобы получить быстрый обзор современных функций, представленных достаточно хорошо, вы не ошибетесь, если посмотрите недавнюю презентацию Херба Саттера «Написание современного кода C ++: как C ++ развивался на протяжении многих лет» функций C ++ в // build /.

Он говорит о том, почему этот язык лучше, чем C # (конечно, Microsoft регулярно меняет свои брюки, и сегодня они носят моду на C ++, поэтому они раскрутят это, просто они раскрутили C # как ответ на мировой голод 10 лет. назад), но при этом он описывает все хорошие биты (например, «автоматическое» управление памятью и классы STL), а затем продолжает говорить о новых битах из стандарта C ++ 0x.

gbjbaanb
источник