Всем привет!
Есть вопрос: с чего начать изучение C++?
Я знаю, что это сложный язык, потому спрашиваю у вас. У каждого языка программирования есть основа, без которой просто никуда. Что вы посоветуете пройти для начала?
Заранее спасибо.
Всем привет!
Есть вопрос: с чего начать изучение C++?
Я знаю, что это сложный язык, потому спрашиваю у вас. У каждого языка программирования есть основа, без которой просто никуда. Что вы посоветуете пройти для начала?
Заранее спасибо.
Ох, ну сейчас я накидаю список.
Язык Си
Поскольку язык С++ включает в себя язык Си, который намного проще изучить, я бы советовал начинать с него. В частности с Шилдта - "Полный справочник по Си". Это единственная книга, в которой я не встретил просто кучу устаревшей информации с ошибкой в каждом втором примере(привет книге K&R).
Однако, изучение Си не обязательно, хотя я и рекомендую.
Что же касается самого с++
Роберт Лафоре - "Объектно-ориентированное программирование в С++"
Замечательная книга по С++ для новичков. Написана простым, лаконичным и понятным языком, материал разбирается детально и подробно. Рекомендую как самую первую по С++. Есть примеры для решения. Читать, одно удовольствие. Единственный минус, которыя я отметил - автор сильно и часто перехваливает достоинства языка по тексту книги.
Герберт Шилдт - Полный справочник по C++
Прочитав Лафоре, можно углуюлять в детали языка и посмотреть своеобразный справочник-учебник по С++. Здесь будет сказано все то, чего не было сказано в первой книге.
Далее идет список, который я не читал, но книги из него рекомендуют так же на многих ресурсах как самые лучшие.
Отлично, это был С++, но так же есть его библиотека STL, которой посвящены так же отдельные книги и Boost. А так же разбор продвинутых техник программирования на С++.
Обязательно ознакомьтесь потом с BOOST, книг к сожалению не знаю.
Андрей Александреску, Герб Саттер - "Стандарты программирования на С++. 101 правило и рекомендация"
Не забудьте прочитать книгу четырех о шаблонах проектирования.
Страуструп
Если Вы прочитали множество приведенных книг и получили достаточно опыта, то самое время переходить к трудам Страуструпа. Книги его написаны академическим языком и читаются достаточно сложно. Некоторые рекомендуют начинать с него, но только от того, что сами с него начинали, когда на рынке больше никакой годной литературы не было. ОДнозначно не берите его первым, но он обязателен для хорошего программиста С++.
Еще не надоело клепать скучные консольные приложения? Самое время перейти к изучению QT. Или же изучения программированию под Windows.
QT
Немного Windows мозгодробилки, но вместо WinAPI можно почитать что-то более высокоуровневое, всякие там MFC, WTL. Да, первые две книги для windows 95, но с тех пор WinAPI вообще не менялся, книги являются отличным пособием.
Ну в общем-то сюда еще можно добавлять всякие нужные книги, прямо не связанные с С++, но думаю вы и сами на них натолкнетесь в процессе изучения. Так же всякие DirectX, OpenGL, базы данных и т.д и т.п. Что-то можно высмотреть еще тут: хорошие книги по С++
А еще, если вы windows ориентированный разработчик, лучше использовать для проектирования интерфейса GUI язык C#, а на С++ писать для него библиотеки. Но это уже потом.
Удачи, если вы захотели стать профессионалом в области С++.
И помните про статью: Научитесь программировать за десять лет (Питер Норвиг).
Если нахожу достойную литературу для чтения по разным направлениям, сохраняю для себя названия или ссылки. В ответ оставалось только разбить по порядку и категориям.
– Alex Krass Dec 03 '14 at 22:43gets() (если оно там осталось))
– avp
Dec 04 '14 at 12:16
Просто пройдитесь по примерам, я думаю Вы и сами все поймете. Все написано капсом, условия IF (C==' ' \!\! C=='\N'), ни слова про подключение заголовков, не указан тип возвращаемого main значения, старое определение функций с подписанными внизу переменными и т.д и т.п. Я просто не надеюсь на удачу и что повезет найти хорошее издание
– Alex Krass Dec 04 '14 at 13:05А вот этот вариант(English) или этот на русском выглядят вполне пристойно.
(правда, сходу увидел gechar вместо getchar в English (но исправлено в Russan!!!))
--
Конечно, последний раз я внимательно читал эту книгу лет 20 назад, так что с уверенностью рекомендовать какое-либо издание не возьмусь.
– avp Dec 04 '14 at 15:35Вообще-то большинство программ в этих системах написаны именно на Си.
А сам язык как раз и появился при разработке UNIX.
(а Вы еще не читали эту историю?)
Если опыта в программировании большого нет, то вместо С++ можно попробовать гораздо более простые "системные" языки с меньшим багажом, такие как Go, Rust.
Если всё таки C++ необходим, то для адекватного изучения С++ придётся книгу ~1000 страниц изучать, например, C++ Primer (издание, обновлённое для c++11). Если опыт программирования уже есть, то рекомендуют "Accelerated C++".
Завершение небольших проектов -- хороший способов изучения новых языков: 1000+ Beginner Programming Projects.
Начните с Си. И обязательно в *nix (сейчас, очевидно Linux).
Для начала просто откройте K&R, читайте и пишите примеры.
Это даст Вам правильное понимание основ
(возможно потом (и с приобретением опыта реального программирования) желание использовать C++ уже пропадет, хотя изучать его все равно придется, поскольку слишком много кода все же написано на нем).
С Linux надо начинать, хотя бы потому (не хочу углубляться в дебри систем), что в Windows разделителем в пути файла является символ \, который несет особое значение в строковых константах (то что Вы пишете в "abc") в C.
Ну, это досадная мелочь, на самом же деле речь о логичности системы.
– avp Dec 01 '14 at 12:46Точнее *nix это обозначение любой unix-подобной системы (в т.ч. Linux, Mac OS X, Solaris, AIX и десятков других).
Говорят, что для понимания их сути достаточно осознания принципов работы всего 5 системных функций -- open, read, write, fork и exec.
– avp Dec 04 '14 at 16:151) извините, но Шилдта очень ругают, да и книги старые очень. Не советую.
2) создатель языка С++ Бьярн Страуструп крайне не советует начинать изучение C++ с языка C
3) личный опыт: лучше хорошая c++ либа, чем хорошая c-либа.
4) что читать: The C++ Programming Language, CppCoreGuidelines, книга "Скользкие места C++" очень хороша.
5) читать хорошие блоги и сайт комитета по стандартизации C++
Ответьте себе на вопросы: "Зачем мне C++?", "Что я хочу получить, используя его?". Поставьте интересную и нужную для Вас цель: игру, программу, что угодно, и идите к ней, учите инструментарий.
Что-то из Страуструпа можно почитать
Я обычно начинаю все языки учить с видеороликов на YouTube. Попробуйте это, потом когда более-менее основу будете знать, переходите на книги, читайте Хабр, там очень много полезного есть, а потом всё будет изучаться по принципу снежного кома. Удачи :)
начинаю все языки учить с видеороликов на YouTube.
И много языков выучили?
– Nofate Nov 30 '14 at 12:49Мой одногруппник очень нахваливал Г.Шилдта. У него много разных учебников, в том числе и по С++