Форум программистов, компьютерный форум CyberForum.ru

Каков порядок изучения тем для более успешного освоения языка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
sindel
9 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 21
15.08.2014, 18:04     Каков порядок изучения тем для более успешного освоения языка #1
Добрый день, программисты. Хочу посоветоваться у вас вот по какому вопросу, но сначала скажу следующее:
Изучаю C++ пол года, изучал пол года C#, что собой представляет ООП знаю, основы C++ тоже знаю, а именно:
классы/методы, указатели, структуры, массивы, в целом, долго продолжать, основу знаю, а вопрос следующий:

Посоветуйте, пожалуйста, порядок изучения тем, чтобы дальше мог развиваться как программист.
Например, такой порядок:
1) Массивы
2) Ссылки
3) Указатели
и т.п.

В таком же порядке, как выше, распишите, пожалуйста, что еще нужно изучать, чтобы можно было разрабатывать серьезные проекты.

Кажется, достаточно понятно изложил, но если будет где-то сумбур - сорри, плохо сплю.
Спасибо заранее
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
A_Kamolins
 Аватар для A_Kamolins
4 / 4 / 4
Регистрация: 15.08.2014
Сообщений: 30
15.08.2014, 18:10     Каков порядок изучения тем для более успешного освоения языка #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Циклы, операторы условия, переменные, ...
На самом деле - легче взять какую-нибудь хорошую книгу и учиться по ней, ведь там какраз всё обычно более-менее упорядочено. По C/C++ у нас в институте давали несколько книг Павловской. (Практикум и теория).

Да и вообще, легче учиться по каким-то определенным задачам. Либо сам ставь себе постепенно какие-нибудь задачки и усложняй их, либо найди что-нибудь подобное в интернете, там куча такого материала. И на всё, что не понятно - гугл. Если уж будет выходить так, что и в гугле не можешь найти ответа, то тут поможет и форум Лично я так учился.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
15.08.2014, 18:13     Каков порядок изучения тем для более успешного освоения языка #3
ну после указателей, классы, денамическое выделение памяти- ну ООП короче,полиморфизм, потоки.
Учится использовать разные библиотеки. Заниматся практикой, создать программу с графическим интерфейсом- например какой то парсер. Ну или ввобще какую то кнопочную игру, типа орел или решка, или хрестики нулики. Потом взять графическую библиотеку и научится ей пользоватся. Те получаешь умение пользованием сторонних библиотек ну и опыт
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
15.08.2014, 23:59     Каков порядок изучения тем для более успешного освоения языка #4
Вот, например.

А вообще, поиск - это тру:
С чего начать изучение C++
Подкиньте материалы для изучения С++ с нуля
Стоит ли начинать изучение программирования с C++
C++ - Как лучше всего учить язык C++?
C++ - Посоветуйте, как практиковаться в написании кода?
Какую ide лучше использовать для c++
Изучение С++ с нуля
С++ не старый язык и у него есть будущее?

Добавлено через 2 минуты
Цитата Сообщение от sindel Посмотреть сообщение
Посоветуйте, пожалуйста, порядок изучения тем, чтобы дальше мог развиваться как программист.
Раньше во всех авторитетных учебниках начинали, по сути, давать сперва основы С и только потом ООП, классы, STL. Сейчас стало модно сразу с ООП начинать. Такой подход применили Дейтелы (2008, 5-е издание) в своей книге "Как программировать на C++". У Липпмана в книге "Язык программирования C++. Базовый курс" (2014, 5-е издание) тоже так же.
gromo
16.08.2014, 04:13
  #5

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
А вообще, поиск - это тру:
ого, не лень было все эти ссылки вставлять?

raom
Заблокирован
16.08.2014, 04:35     Каков порядок изучения тем для более успешного освоения языка #6
Посоветуйте, пожалуйста, порядок изучения тем, чтобы дальше мог развиваться как программист.
Например, такой порядок:
1) Массивы
2) Ссылки
3) Указатели
и т.п.
Это неверный подход.
Пишите полезные программы. Для себя, для друзей, перед одноклассниками-однокурсниками попонтоваться, для сайта олимпиадного программирования, на форумах...
Представьте, если сантехник, вместо того чтобы учиться менять мойку, неделю будет закручивать гайки на трубах, еще неделю - замазывать щели, еще неделю - прикручивать раковину к основанию... Много будет пользы от такого обучения?
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
16.08.2014, 09:53     Каков порядок изучения тем для более успешного освоения языка #7
1. Трансляция программы в двоичный код.Наборы символов, триграфы. Токены препроцессора. Токены. Комменты. Заголовочные файлы. Идентификаторы. Ключевые слова. Операторы, пунктуаторы. Литералы. Комментарии.

2. Объявления. Область видимости. Время существования. Тип хранения. Типы данных. Левые, правые значения. Выравнивание данных.

3. Стандартные преобразования типов. Преобразования левых значений в правые. Преобразования массива в указатель. Преобразования указателей на функции. Преобразования типов с плавающей точкой. Преобразования указателей. Преобразования указателей на члены. Двоичные преобразования. Преобразования целых типов.

4. Выражения. Первичные выражения. Постфиксная форма. Унарные выражения. Явные преобразования типов. Операторы для действий с указателями. Оператор умножения. Оператор сложения. Оператор сдвига. Условные операторы. Операторы проверки на тождество. Логические операторы. Побитовое И. Побитовое исключающее ИЛИ. Побитовое включающее ИЛИ. Логическое И. Логическое ИЛИ. Операторы сравнения. Оператор присваивания. Составные выражения. Оператор запятая. Константные выражения.

5. Метки. Блоки. Операторы цикла. Операторы перехода. Оператор выбора. Объявления. Разрешение области видимости.

6. Объявления. Спецификаторы. Перечисления. Пространства имен. Ассемблерная вставка. Спецификаторы компоновки. Атрибуты.

7. Типы имен. Разрешение области видимости имен. Определение функций. Инициализация.

8. Классы. Имена классов. Члены класса. Статические члены. Объединения. Битовые поля. Вложенные объявления классов. Локальное объявление класса. Вложенные имена типов.

9. Наследуемые классы. Множественное наследование. Разрешение области видимости имен. Виртуальные функции. Абстрактные классы.

10. Контроль над доступом к членам класса. Спецификаторы доступа. Доступность базовых классов и членов базовых классов. Друзья. Доступ к защищенным членам класса. Доступ к виртуальным функциям. Множественный доступ.

11. Специальные функции класса. Конструктор. Временные объекты. Преобразования. Деструктор. Инициализация. Конструирование и уничтожение. Копирование и перемещение объектов класса. Наследование.

12. Перегрузка. Объявления перегрузки. Разрешение перегрузки. Адрес перегруженной функции. Перегрузка операторов. Встроенные операторы.
13. Шаблоны. Параметры шаблона. Имена специализаторов шаблона. Аргументы шаблона. Соответствие типов. Разрешение имен. Специализация шаблона. Создание экземпляра. Специализаторы шаблонов функций.

14. Обработка ошибок. Вбрасывание исключений. Конструкторы и деструкторы. Обработка исключений. Спецификация исключений. Специальные функции.

15. Директивы препроцессора. Условное включение. Включение исходного кода. Замещение макросов. Контроль линии. Директивы ошибки. Директива #pragma. Директива нуля. Предопределенные имена макросов. Оператор #pragma

16. Стандартная библиотека. Стандартная библиотека C. Библиотека диагностики. Библиотека утилит. Библиотека строк. Библиотека локализации. Библиотека контейнеров. Библиотека итераторов. Библиотека алгоритмов. Библиотека ввода-вывода. Библиотека регулярных выражений. Библиотека чисел. Библиотека атомарных. Библиотека для потоков.

4.


: операторы, перегрузка операторов
TL: iostream: запись структур и классов в файл и чтение из файла (БД)
gru74ik
16.08.2014, 10:31
  #8

Не по теме:

Цитата Сообщение от gromo Посмотреть сообщение
ого, не лень было все эти ссылки вставлять?
У меня уже в отдельном текстовом файлике сохранено несколько ответов на наиболее часто задаваемые вопросы.

Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
16.08.2014, 10:48     Каков порядок изучения тем для более успешного освоения языка #9
Примерно так:

1. C++, стандарт, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII, правило трех, exception-
safety, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR1, TR on C++ performance, тест Степанова, forwarding problem, SPECS, C++0x

2. Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile

3. Мультитредность, обедающие философы, deadlock/race condition/starvation, атомарность, lock инструкции процессора, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads

4. Язык ассемблера x86, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг

5. Аппаратное обеспечение, Хоровиц-Хилл, полупроводниковая электроника/спинтроника/фотоника, транзистор, схемотехника, микрокод, технология создания процессоров, VID/PID, Verilog/VHDL/SystemC, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn's taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86

6. Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, branch predict, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах, тайминг памяти

7. Дискретная математика, K2, теорема Поста, схемы, конечные автоматы, клеточные автоматы, ДКА и НДКА

8. Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем

9. Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА -> ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE/POSIX RE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL

10. Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос, структуры данных, алгоритмы, сложность и символы Ландау, классы сложности, NP-полные задачи, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика

11. Машинное обучение, машинное зрение, OpenCV, image processing, OCR, фильтры Собеля, каскад Хоара, введение в психофизиологию зрения, TreeNet, нейросети, сети Кохонена, генетические алгоритмы, муравьиные алгоритмы, information retrieval/data mining/natural language processing, алгоритмы оптимизации, SVM, gradient boosting, метод отжига, hill climbing, подходы к моделированию AI

12. Численные методы, метод Гаусса, интер- и экстраполяция, сплайны, МНК, метод Эйлера и Рунге-Кутты, дихотомия/метод Ньютона, метод Симпсона, метод Монте-Карло, метод Галеркина, QR и LU-декомпозиция, FFT/STFT, сходимость и устойчивость

13. Теория информации, сжатие, Хаффман, RLE, LZ, коды коррекции ошибок, информационная энтропия, формула Шеннона, сложность Колмогорова

14. Криптография, Ященко, симметричная, асимметричная, Диффи-Хеллман, RSA, DES, AES, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки, WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, HTTPS/SSL, доказательство с нулевым разглашением

15. Математика, Кнут-Грэхем-Паташник/Зорич/Винберг, матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление, производящие функции, ряды, комбинаторика, теорвер/матстат/слупы/теория массового обслуживания, цепи Маркова, интегральные преобразования (Фурье, Лаплас, вейвлет), NZQRCHOS, матпакеты (Mathematica, Maple)

16.Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер, защитное программирование, паттерны, GRASP, UML, OOP/OOD/OOA, правило Лисков, метрики кода

17. Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI

18. Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), valgrind, системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ, профайлинг, lint, багтрекеры, документирование кода, сборщики кода типа cmake

19. Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre

20. Операционные системы, Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX

21. COM, OLE/ActiveX/COM+, ATL, Роджерсон/Таварес, апартменты, моникеры, дополнительные ключевые слова VC++, DCOM RPC, CORBA, TAO

22. Сеть, OSI, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг, ARP, атака Митника, syn flood, HTTP/FTP, P2P, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth, ACE, Wireshark

23. Графика, алгоритм Брезенхема, цветовые модели, трассировка лучей vs полигональная графика, OpenGL/GLSL/Open Inventor, DirectX/DirectShow/DirectAudio/HLSL, stencil/depth/alpha-test, графический конвейер в DirectX 11, шейдеры, модели освещения (Фонг), пропускная способность, fillrate, OpenCL/CUDA, ландшафты, лоды, тени, текстурирование и фильтрация, антиалиасинг, HDR, tone mapping

24. Базы данных, Грубер, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP

25. Прикладное программирование, C#/F#/Nemerle, Шилдт/Троелсен/Рихтер, генерики, yield, linq/plinq, рефлексия, AST, WCF, WinForms/WPF/Silverlight, AOP, фреймворки логгирования, .NET assembly

26. Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), монады, тайпклассы, АТД, система типов Хиндли-Милнера, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)

27. Проектирование GUI, Раскин, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
16.08.2014, 10:56     Каков порядок изучения тем для более успешного освоения языка #10
Voivoid,
Офигеть! Да на это жизни не хватит! За пост - респект. Долго писал? ))
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
16.08.2014, 11:03     Каков порядок изучения тем для более успешного освоения языка #11
Цитата Сообщение от gru74ik Посмотреть сообщение
Офигеть! Да на это жизни не хватит! За пост - респект. Долго писал? ))
Не, это не я писал. Этот список давно уже гуляет по просторам интернета. Я его только слегка подредактировал, убрав некоторые спорные на мой взгляд пункты
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
16.08.2014, 11:05     Каков порядок изучения тем для более успешного освоения языка #12
Voivoid, какой смысл в свалке технологий и дисциплин без выраженной направленности?

Добавлено через 1 минуту
Цитата Сообщение от Voivoid Посмотреть сообщение
Этот список давно уже гуляет по просторам интернета.
Точно, вспомнил - видел его в чьем-то ЖЖ. Табличка "сарказм" подразумевается.
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
16.08.2014, 11:12     Каков порядок изучения тем для более успешного освоения языка #13
Цитата Сообщение от 0x10 Посмотреть сообщение
какой смысл в свалке технологий и дисциплин без выраженной направленности?
Всё ради этого
Миниатюры
Каков порядок изучения тем для более успешного освоения языка  
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
16.08.2014, 11:41     Каков порядок изучения тем для более успешного освоения языка #14
Цитата Сообщение от 0x10 Посмотреть сообщение
Voivoid, какой смысл в свалке технологий и дисциплин без выраженной направленности?
Выбираешь интересные тебе разделы и проверяешь что все перечисленные в них слова тебе известны. Если нашел что-то новое - изучаешь. Очевидно же
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
16.08.2014, 13:34     Каков порядок изучения тем для более успешного освоения языка #15
Попробуйте взяться за какую-нибудь задачу и сделать. Или устройтесь на работу в качестве младшего разработчика.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 16:13     Каков порядок изучения тем для более успешного освоения языка
Еще ссылки по теме:

C++ Какова оптимальная и эффективная методика изучения языка?
Посоветуйте литературу для изучения языка C++
C++ Повлияет ли слепая печать на скорость изучения языка С++ ?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3083 / 1328 / 165
Регистрация: 20.02.2013
Сообщений: 3,785
Записей в блоге: 17
16.08.2014, 16:13     Каков порядок изучения тем для более успешного освоения языка #16
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
Попробуйте взяться за какую-нибудь задачу и сделать. Или устройтесь на работу в качестве младшего разработчика.
Хороший совет, лови плюсик.
Yandex
Объявления
16.08.2014, 16:13     Каков порядок изучения тем для более успешного освоения языка
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru