Это путь изучения языка C и C++, который вам нужен!

C++
Это путь изучения языка C и C++, который вам нужен!

Привет ребята.

Путь изучения языка 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".


Делайте немного прогресса каждый день, Мир!