С чего начинать новичку изучать программирование и хакинг? Становление инженером
Мне много вопросов задают по этому поводу и я решил сделать такую статью-обзор на то, куда нужно обратить свой взор новичку при изучении программирования и становления инженером. И не важно, будет ли это в последствии программирование или кибербезопасность, начало пути предполагается идентичное.
Итак, начнем..
Начальный шаг - Разбор самых фундаментальных вещей:
Дать себе ответ на вопрос, что такое компьютер и что такое программирование, в таком виде, в котором оно дано.
Эти вопросы состоят из следующих тем:
- Архитектура ЭВМ:
(процессор, память, контроллеры и т.д.)
- Разобраться, как процессор способен воспринимать язык программирования и что такое язык программирования вообще.
Из этого будет вытекать ряд концепций:
- Что такое компилятор;
- Что такое интерпретатор;
- Уровни языков программирования;
- Парадигмы языков программирования.
- Базовые понятия языков программирования:
1. Ветвления
2. Циклы
3. Лямбда выражения
4. Рекурсия и т.д.
Из этого будут вытекать все новые и новые существительные:
- Системы счисления;
- Различные виды данных;
- Различные типы кодирования данных;
- Теория типов данных и многое другое;
В целом нужно разобраться с тем, что такое компьютер и как этот компьютер можно программировать.
Сюда можно отнести:
- Концепция баз данных;
- Виды бах данных;
- Как там хранится информация;
Следующий шаг – это изучение математики:
Для изучения помогут отличные советские книги и сервисы, которые помогут прокачать ваш скилл в этой науке.
Следующий шаг - Изучение сетей и вообще сетевого программирования.
Нужно изучить модель интернета.
Модель TCP/IP
Модель OSI
Второй фундаментальный момент в программировании это:
- Сокеты.
Модели протоколов и сокеты – это две базовых составляющих сетевого программирования.
Программистам WEB нужно знать, как работает HTTP или протоколы приложений.
Программистам сетевой безопасности нужно разбираться в дополнительных уровнях протоколов, например, SSL/TLS.
Следующий шаг – операционные системы.
Для начала нужно разобраться, что такое операционная система и какие виды операционных систем бывают:
- Windows
- Linux
- Android
- Mac OS
Как операционка работает с железом, представлять процесс загрузки вашего компьютера.
Более углубленно заниматься операционными системами следует тому, кто планирует писать системный софт.
В системный софт входят такие программы, как антивирусы и файловые менеджеры, трансляторы.
У каждой операционки есть определенный интерфейс. APIs.
К примеру, Win32 Api в Windows.
Следующий шаг – выбор языка программирования.
Нужно определиться с языком программирования и стилем программирования.
Нужно знать определенные концепции.
В этот перечень входит знание:
- Структур данных;
- Алгоритмов;
- Паттернов проектирования;
Вот, собственно, тот необходимый минимум знаний, которые понадобятся для дальнейшего развития вас, как инженеров по кибербезопасности.
Думаю эта статья будет полезна новичкам.