Прошлые домены больше не функционируют, используйте адрес
ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
ДОБГО ПОЖАЛОВАТЬ В НОВЫЙ C++ ТГЕД!
1. Почему мы используем именно C++:
- C++ действительно быстрый - по скорости уделывают большинство языков, часто с большим отрывом. Замедление относительно pure C находится в районе 0-20%. Замедление зависит от вас, девиз языка: "Платишь только за фичи, которые используешь".
- C++ - очень выразительный язык. В него заимствованы большинство существующих парадигм из самых популярных языков.
- У C++ очень большое и, самое главное, профессиональное комьюнити. Это так из-за высокого порога вхождения.
Однако C++ очень сложный. Прямая работа с памятью и тысяча способов выстрелить себе в ногу - это про него. Не стоит его использовать всегда: нужно понимать, что используемый язык должен соответствовать поставленной задаче. Да, анон, не нужно писать на C++ скрипты или веб-фронтенд, а потом жаловаться, что C++ говно. Плохому танцору и ноги мешают, как говорится.
2. Литература для начинающих:
Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
- Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
- Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
- Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa
3. Литература для тех, кто осилил предыдущий пункт:
Книги про основные подводные камни. Следует пролистать все.
- Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
- Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
- Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
- Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
- Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
4. Наиболее детальные описания языка:
- Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
- Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
- Стандарт C++14 - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
- Стандарт C++17 - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4567.pdf (черновик)
5. Нюансы проектирования на C++:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
- Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp
- Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC это - квинтэссенция ГИБКОСТИ, поэтому стоит прочитать в любом случае, чтобы охуеть от того, как можно делать.
- Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
6. Тонкости языка (для гурманов):
- Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
- Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
7. Годные ресурсы по C++:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru
- Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
- Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
- Блог Герба Саттера (на ангельском) - http://herbsutter.com
- Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском) - https://katecpp.wordpress.com
- Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
- Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq
8.Видеоуроки: (для совсем уж ленивых пидорасов)
- Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
- Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
- Среди прочих есть несколько курсов по C++ - https://stepic.org
- Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos
9. Куда писать код:
- Кроссплатформенные IDE: QtCreator, Eclipse CDT, CLion (Последняя платно, но зато энтерпрайз. Легко сбрасывать пробный период, можно купить на торрентах)
- Только Windows: Microsoft™ Visual Studio® рекомендуется для новичков
- Только OS X: XCode
- Уникальный способ для *nix-господ: Компилим через консольку с помощью clang(очень информативный и читаемый вывод) или в крайнем случае gcc (для ценителей).
- Все остальные: https://goo.gl/qkujDP
- Для тех, кто капчует с домофона: http://ideone.com
По просьбам трудящихся:
Инструкция "Как создать проект в Visual Studio" - https://goo.gl/JMd57G
Специальное уточнение для ньюфагов: А вообще, в случае возникновения вопросов по какой-либо IDE не брезгуйте чтением офф. документации. Все подобные вопросы там освещаются.(Ведь ее же для этого и пишут!). Так что сначала читаем доки, а только потом задаем здесь вопросы. Найти доки можно в пункте меню "Справка". Либо нажать F1, лал.
10. Code Quality:
- CppCheck. Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio. - http://cppcheck.sourceforge.net
- Clang Static Analyzer. То же самое, но встроено в одноименный компилятор. Активно пилится Google и Apple. - http://clang-analyzer.llvm.org
- PVS-Studio. То же самое, но энтерпрайз. Для пиара пишут годные статьи. - http://www.viva64.com/ru/pvs-studio/
- Visual Leak Detector. Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
- Google Sanitizers. Гугловские утилиты для поиска утечек, дедлоков, гонок, неинициализированной памяти и некорректного доступа - https://github.com/google/sanitizers
- Valgrind. То же самое, но медленно.(Очень. По сути, это - виртуальная машина) http://valgrind.org
11. Годные библиотеки:
- Standard Library. С недавнего времени(С++11) стала годнотой. Например, теперь можно писать кроссплатформенный распределенный код, не подключая boost. Что очень хорошо. Кстати о бусте.
- Boost (http://www.boost.org) - бесспорно, самый популярный набор C++-библиотек. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. Boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонентов boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
- Qt (http://www.qt.io/) - свободный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонентов (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
- И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
Итого:
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Стихоебы идут на хуй
Все идут на хуй.
Хейтер, ОП сосет члены на пару со своей мамашей.
Старший брат:
Предыдущий: