Guest User

Untitled

a guest
Feb 22nd, 2016
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.91 KB | None | 0 0
  1. **НАДОЕЛИ JAVA-БЛЯДИ? ТОШНИТ ОТ WEB-МАКАК? ХОЧЕТСЯ ПИСАТЬ КОД, КОТОРЫЙ ДЕЛАЕТ СИРИУС ШИТ?
  2. *ДОБРО ПОЖАЛОВАТЬ В C++ ТРЕД!* **
  3.  
  4. **1. Почему мы используем именно C++:**
  5. - C++ *действительно* быстрый - по скорости уделывают большинство языков, часто - с большим отрывом. Замедление относительно pure 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. - Только OS X: XCode
  61. - Уникальный способ для *nix-господ: Компилим через консольку с помощью clang(очень информативный и читаемый вывод) или в крайнем случае gcc (для ценителей).
  62. - Все остальные: https://goo.gl/qkujDP
  63. - Для тех, кто капчует с домофона: http://ideone.com
  64.  
  65. По просьбам трудящихся:
  66. Инструкция "Как создать проект в Visual Studio" - https://goo.gl/JMd57G
  67.  
  68. Специальное уточнение **для ньюфагов**: А вообще, в случае возникновения вопросов по какой-либо IDE не брезгуйте чтением офф. документации. Все подобные вопросы там освещаются.(Ведь ее же для этого и пишут!). Так что **сначала** читаем доки, а только потом задаем здесь вопросы. Найти доки можно в пункте меню "Справка". %%Либо нажать F1, лал.%%
  69.  
  70. **10. Code Quality:**
  71. - CppCheck. Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio. - http://cppcheck.sourceforge.net
  72. - Clang Static Analyzer. То же самое, но встроено в одноименный компилятор. Активно пилится Google и Apple. - http://clang-analyzer.llvm.org
  73. - PVS-Studio. То же самое, но энтерпрайз. Для пиара пишут годные статьи. - http://www.viva64.com/ru/pvs-studio/
  74. - Visual Leak Detector. Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
  75. - Google Sanitizers. Гугловские утилиты для поиска утечек, дедлоков, гонок, неинициализированной памяти и некорректного доступа - https://github.com/google/sanitizers
  76. - Valgrind. То же самое, но медленно.(Очень. По сути, это - виртуальная машина) http://valgrind.org
  77.  
  78. **11. Годные библиотеки:**
  79. - **Standard Library**. С недавнего времени(С++11) стала годнотой. Например, теперь можно писать кроссплатформенный распределенный код, не подключая boost. Что очень хорошо. Кстати о бусте.
  80. - **Boost** (http://www.boost.org) - бесспорно, самый популярный набор C++-библиотек. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. Boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
  81. Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонентов boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
  82. - **Qt** (http://www.qt.io/) - свободный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонентов (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
  83. Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
  84. В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
  85. - И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
  86.  
  87. **Итого:**
  88. Вопросу по синтаксису идут **на хуй**.
  89. Лабы идут **на хуй**.
  90. "Как мне сделать Х на чистых крестах без библиотек" идут **на хуй**.
  91. Все идут **на хуй**.
  92. Хейтер сосет члены на пару со своей мамашей.
  93.  
  94. **Старший брат:** >>629715
  95. **Предыдущий:** >>653023
Advertisement
Add Comment
Please, Sign In to add comment