Advertisement
Guest User

Untitled

a guest
Feb 5th, 2016
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.97 KB | None | 0 0
  1. **НАДОЕЛИ JAVA-БЛЯДИ? ТОШНИТ ОТ WEB-МАКАК? ХОЧЕТСЯ ПИСАТЬ КОД, КОТОРЫЙ ДЕЛАЕТ СИРИУС ШИТ?
  2. *ДОБРО ПОЖАЛОВАТЬ В C++ ТРЕД, MOTHERFUCKER!* **
  3.  
  4. **1. Почему стоит использовать именно C++:**
  5. - C++ *действительно* быстрый - по скорости уделывают любой язык, часто - с большим отрывом. Замедление относительно C находится в районе 0-20%. Замедление зависит от вас - девиз языка: "Платишь только за фичи, которые используешь".
  6. - C++ - очень выразительный язык. В него заимствованы большинство существующих парадигм из всех популярных языков.
  7. - У C++ очень большое и, самое главное, профессиональное комьюнити. Это так из-за высокого порога вхождения.
  8.  
  9. Однако, C++ очень сложный. Прямая работа с памятью и тысяча способов выстрелить себе в ногу - это про него. Не стоит его использовать всегда: нужно понимать, что используемый язык должен соответствовать поставленной задаче. Да, анон, не стоит писать на C++ скрипты или веб-фронтенд, а потом жаловаться, что C++ говно. Плохому танцору и ноги мешают, как говорится.
  10.  
  11. **2. Литература для начинающих:**
  12. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
  13. - Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
  14. - Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
  15. - Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa
  16.  
  17. **3. Литература для тех, кто осилил предыдущий пункт:**
  18. Книги про основные подводные камни. Следует пролистать все.
  19. - Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
  20. - Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
  21. - Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
  22. - Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR
  23. - Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
  24.  
  25. **4. Наиболее детальные описания языка:**
  26. - Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
  27. - Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
  28. - Стандарт C++14 - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
  29. - Стандарт C++17 - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4567.pdf (черновик)
  30.  
  31. **5. Ньюансы проектирования на C++:**
  32. Следует пролистать все перед переходом от лаб к написанию настоящего софта.
  33. - Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp
  34. - Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC %%это - квинтэссенция ГИБКОСТИ, поэтому стоит прочитать в любом случае, чтобы охуеть от того, как можно делать.%%
  35. - Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
  36.  
  37. **6. Тонкости языка (для гурманов):**
  38. - Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
  39. - Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
  40.  
  41. **7. Годные ресурсы по C++:**
  42. - Годный блог, в котором все просто и понятно %%тян не нужны кококок борщ%% - http://alenacpp.blogspot.ru
  43. - Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
  44. - Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
  45. - Блог Герба Саттера (на ангельском) - http://herbsutter.com
  46. - Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
  47. - Блог еще одной тянки, много о Qt и оптимизации (на ангельском) - https://katecpp.wordpress.com
  48. - Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
  49. - Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq
  50.  
  51. **8.Видеоуроки:** (для совсем уж ленивых пидорасов)
  52. - Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
  53. - Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
  54. - Среди прочих есть несколько курсов по C++ - https://stepic.org
  55. - Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos
  56.  
  57. **9. Куда писать код:**
  58. - Кроссплатформенные IDE: QtCreator, Eclipse CDT, CLion (Платно, но зато энтерпрайз. Легко сбрасывать пробный период, также можно купить на торрентах)
  59. - Только на Windows: Microsoft™ Visual Studio®
  60. - Только *nix: Компилим через консольку с помощью clang или, в крайнем случае, gcc (если хочется смотреть на охуительные мессаги)
  61. - Для тех, кто капчует с домофона: http://ideone.com
  62.  
  63. **10. Code Quality:**
  64. - CppCheck. Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio. - http://cppcheck.sourceforge.net
  65. - Clang Static Analyzer. То же самое, но встроено в одноименный компилятор. Активно пилится Google и Apple. - http://clang-analyzer.llvm.org
  66. - PVS-Studio. То же самое, но энтерпрайз. Для пиара пишут годные статьи. - http://www.viva64.com/ru/pvs-studio/
  67. - Visual Leak Detector. Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
  68. - Google Sanitizers. Гугловские утилиты для поиска утечек, дедлоков, гонок, неинициализированной памяти и некорректного доступа - https://github.com/google/sanitizers
  69. - Valgrind. То же самое, но медленно.(Очень. По сути, это - виртуальная машина) http://valgrind.org
  70.  
  71. **11. Годные библиотеки:**
  72. - **Standard Library**. С недавнего времени(С++11) стала годнотой. Например, теперь можно писать кроссплатформенный распределенный код, не подключая boost. Что очень хорошо. Кстати о бусте.
  73. - **Boost** (http://www.boost.org) - бесспорно, самый популярный набор C++-библиотек. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. Boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
  74. Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонентов boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
  75. - **Qt** (http://www.qt.io/) - свободный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонентов (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
  76. Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
  77. В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
  78. - И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
  79.  
  80. **Итого:**
  81. Вопросу по синтаксису идут **на хуй**.
  82. Лабы идут **на хуй**.
  83. "Как мне сделать Х на чистых крестах без библиотек" идут **на хуй**.
  84. Все идут **на хуй**.
  85. Хейтер сосет члены на пару со своей мамашей.
  86.  
  87. **Старший брат:** >>609376
  88. **Предыдущий:** >>631744
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement