Привет ребята.
Путь изучения языка C и C++ наконец-то определился. Конечно, я могу говорить с вами на эту тему только исходя из моего опыта разработки в коммуникационной компании в течение почти 3 лет и мира, который я вижу.
В этом произведении много и сложного, но после разбора и обобщения, оглядываясь назад, по сути, идеи обучения и маршруты обучения должны быть относительно ясны. Из-за ограниченных личных знаний вы можете добавить в комментариях, если вам не хватает.
Поговорим об интересных вопросах
Эти вопросы часто задавали в личных сообщениях, и они также были некоторыми сомнениями, которые у меня были во время учебы в то время.
просить:Почему я закончил изучение языка C или C++, но до сих пор ничего не умею?
отвечать:Это гениально иметь возможность сделать что-то после изучения языка программирования! Следует сказать, что независимо от того, насколько вы сильны в изучении языка, на самом деле это означает лишь то, что вы выполнили «самую маленькую» часть, и между собственно ручной работой все еще очень большая разница.Разделять, этот разрыв проявляется в следующих деталяхЧетыре основы программирования + Прикладное практическое программирование.
просить:Почему все, что написано на C/C++, выполняется в черной командной строке? Эта штука действительно работает?
отвечать:Хе-хе, кто сказал, что программы, работающие в темной командной строке, бесполезны! Наша знаменитая система Linux взаимодействует с пользователями через командную строку, и многие мощные инструменты в Linux работают в черной командной строке!
просить:С точки зрения технического обучения и практического применения, в чем разница между C/C++ и Java?
отвечать:C/C++, это совсем не то же самое, что Java. Язык C и C++, особенно C++, имеют мелкозернистый язык, множество механизмов и высокую производительность, но бремя самого языка действительно тяжелое, мы предпочитаем называть его языком, который «строит колеса»! Именно благодаря хорошей производительности и тонкой детализации языка C и C++ они могут делать все что угодно. Сама по себе Java — это язык, обслуживающий разработку программного обеспечения для Интернета (внутренняя разработка + разработка на стороне клиента), он имеет очевидную концепцию «экосистемы», поэтому область применения очень ясна. Лично я считаю, что программирование на языке C и C++ сложнее, чем на Java, ведь Java — это чистый прикладной уровень, а язык C и C++ предъявляют более высокие требования к способностям программистов.
Анализ работы
Знание положения и знание того, что делать в будущем, также поможет вам установить свои собственные цели обучения.
C и C++ — это «колесные» языки, которые могут делать практически все. Однако в целом язык C и C++ в основном выполняют фоновую (серверную) разработку, в том числе:
- Предыстория развития коммуникационной компании
- Развитие интернет-компании
- Развитие игровой компании
- ...
Конечно, конкретные обязанности этой фоновой разработки имеют много подразделений, таких как:
- обработка и анализ данных
- Есть основные протоколы и связь
- Выполнена оптимизация нижнего приложения на стороне сервера.
- Есть даже фоновые системные драйверы и ядра
- ...
В любом случае, эти способы обучения и содержание, которые будут представлены ниже, применимы ко всему вышеперечисленному. Итак, давайте поговорим о конкретном маршруте обучения.
изучение самого языка
Язык С:
- Помимо самого основного синтаксиса: переменные, условия, циклы, строки, массивы, функции, структуры и т.д.
- Самое главное в языке C это: указатели и управление памятью.В будущем от них будет зависеть развитие на предприятии.Это также два основных критерия для проверки владения языком C.
Рекомендуемые книги: «C Primer Plus», «C и указатели», «Экспертное программирование на C».
С++:
- C++ и язык C действительно разные языки, но C++ действительно является расширением языка C, которое можно понимать как добавление объектно-ориентированных функций в язык C. Потому что только с благословением объектно-ориентированных функций код может быть лучше.мультиплекс,расширятьиИнжиниринг, обязательно для крупных проектов
- В дополнение ко всем основам языка C вам также необходимо изучить объектно-ориентированные (инкапсуляция, наследование и полиморфизм) функции C++, дженерики, шаблоны, STL и т. д.
Рекомендуемые книги (в алфавитном порядке): «Введение в C++», «Эффективный C++», «Стандартная библиотека C++», «Анализ исходного кода STL», «Глубокое изучение объектной модели C++».
Последнее маленькое предложение: Рекомендуется не затягивать с изучением языковой части слишком долго, обязательно планируйте время, работайте усердно и с высокой интенсивностью, иначе будет легко себя обескуражить.
Четыре основы программирования
К четырем основным элементам относятся:Структуры данных и алгоритмы,компьютерная сеть,Операционная система,Шаблоны проектирования
Это не имеет никакого отношения к тому, какой язык программирования изучать и какое направление программирования выбрать в будущем.Пока вы занимаетесь программированием и разработкой, этих четырех компьютерных основ нельзя избежать. Можно сказать, что эти четыре основных пункта действительно важнее языков программирования! ! !
1. Структуры данных и алгоритмы
Можно сказать, что от этого напрямую зависит успех или провал собеседования! Знакомы с несколькими основными типами структур данных, такими как строки, связанные списки, двоичные деревья, кучи, стеки, очереди, хэши и т. д.; также знакомы с основными алгоритмами, такими как поиск, сортировка, динамическое программирование, разделяй и властвуй и т. д. Ждать.
Рекомендуется, чтобы LeetCode чистил больше вопросов.
Использованная литература:«Структура данных Dahua», «Алгоритм», «Предложение Swords», «Вопросы по LeetCode Brush»
2. Компьютерная сеть
Под компьютерной сетью здесь понимается стек протоколов TCP/IP.Можно сказать, что это краеугольный камень современной интернет-коммуникации.В любом случае вы должны хорошо знать стек протоколов TCP/IP, главным образом, чтобы изучить и освоить принципы, в том числе:Протокол ARP, протокол IP, протокол ICMP, протокол TCP и UDP, протокол DNS, протокол HTTP, протокол HTTPS.
Рекомендуемые книги:"Подробное объяснение TCP/IP"
3. Операционная система
Эта часть посвящена связанным принципам процессов и потоков (атомарность, параллелизм, блокировки), принципам, связанным с памятью (распределение памяти, планирование памяти).
Рекомендуемые книги:«Понимание компьютерных систем»
4. Шаблоны проектирования
Вам не нужно запоминать все 23 шаблона проектирования.Шаблон Singleton, шаблон factory, шаблон прокси, шаблон стратегии, шаблон метода шаблонаРекомендуется быть опытным.
Рекомендуемые книги:«Шаблоны проектирования Dahua», «Дзен шаблонов проектирования»
Прикладное практическое программирование
Эта часть будет включать в себя некоторые инструменты, среды программирования и конкретные практики программирования.Следует сказать, что после изучения этой части вы сможете что-то делать или понимать код некоторых реальных проектов.
В практической части я тоже расскажу об этом, исходя из своего предыдущего опыта работы в коммуникационной компании и того, что я слышал и видел.
1. Использование операционной системы Linux
Многие люди изучают язык C и C++ (включая меня) в среде Windows, а реальная разработка на уровне предприятия практически невозможна, поэтому система Linux должна уметь, у нас нет выбора. Сначала поговорим об использовании.
включают:Общие рабочие команды Linux,Базовое программирование оболочки.
Рекомендуемые книги:«Частная кухня Linux брата Берда»
2. Инструменты компиляции/отладки
Первый связан с компиляцией:Создавайте инструменты!
Мы знаем, что многие люди, изучающие язык C и C++, компилируют код в интегрированной среде IDE, такой как Visual Studio, которая на самом деле использует компилятор, но это собственный компилятор Microsoft MS, и все операции визуализируются. Однако разработка на предприятии редко основывается на системе Windows, поэтому важнее компилятор на платформе Linux.Наиболее типичным являетсяGCC
, и даже у некоторых компаний есть собственные специализированные средства кросс-компиляции, но это не имеет значения, еслиGCC
Знакомые, другие проблемы не большие.
Во-вторых, каждый изучает язык C и C++ самостоятельно, и все они используют IDE, такие как VS, для компиляции исходных файлов одним нажатием кнопки. А действие по компиляции реального проекта на предприятии называетсяmake
, собственно действия и процессы компиляции написаны наmakefile
файл, поэтому рекомендуется изучить правила написания makefile!
Наконец сказалотладка, на платформе LinuxGDB
Средства отладки следует использовать умело, и отладка будет осуществляться с их помощью.
Рекомендуемая информация:В этой части нет книг, которые можно было бы порекомендовать, студенты с хорошим английским языком могут читать ее напрямую.
GNU
Об официальном сайтеGCC
иGDB
Для документации вы можете прочитать китайские материалы: "Отладка с помощью gdb" (китайская версия) и "Напишите makefile со мной" г-на Чен Хао
3, программирование среды Linux
Опять же, язык C и C++ на предприятии почти все основаны на платформе Linux, и мы не можем обойти стороной эту часть.
(1) системное программирование Linux
Как мы все знаем, в системном программировании Windows есть различные API-интерфейсы Windows, и использование системных API-интерфейсов Linux еще более важно.
(2) Многопоточное программирование
Это относится к вещам, связанным с методами многопоточного программирования, обычно включая: потоки, ресурсы, сигналы, синхронизацию, взаимное исключение, блокировки и другие конкретные методы программирования.
(3) Сетевое программирование
Сетевое программирование здесь в основном относится к сетевому программированию в конкретной системе Linux.API
иIO
Практика функционального программирования.
Рекомендуемые книги: Эти три части объединены вместе.Рекомендуемые обязательные к прочтению книги включают "Расширенное программирование в среде Unix", "Программирование высокопроизводительного сервера Linux" и "Многопоточное программирование POSIX".
Делайте немного прогресса каждый день, Мир!