Самыми популярными в 2023 году есть и будут в ближайшем будущем такие технологии как: HTML и CSS, языки Python и JavaScript. Их легко изучать, поэтому подходят для новичков, а рынок готов предоставить много возможностей разработчикам с хорошим знанием этих технологий. Чуть более сложны в изучении, но очень востребованы на рынке труда языки: Java, PHP, C/C++ которые хорошо подходят для масштабируемых систем и отличаются высокой производительностью.
Так что же и в каком порядке изучать?
Начать рекомендую с изучения верстки веб-страниц, и технологий разметки HTML и CSS. Они просты в освоении и понимании для того, кто никогда не программировал. Их достаточно быстро осваивают дети с 10 лет. Для изучения и практики подойдет практически любой компьютер и нет необходимости покупать и настраивать какие-то сложные программные среды – софт доступен и бесплатен. Зато изучение HTML и CSS прокачивает нужные в будущем скилы: порядок в оформлении кода, понимание структур и систематизации, знакомит с основами компьютерных технологий. Так что веб-верстка это «маст дай» для любого программиста.
Следующим логичным этапом в развитии будущего программиста будет изучение JavaScript. Это скриптовый язык, который позволяет «оживить» сверстанные HTML-страницы. С помощью скриптов можно реализовывать различный полезный функционал, такой как веб-калькуляторы, списки выбора и т.д. Также на данном этапе будет полезно разобраться в библиотеке jQuery – одном из самых известных расширений для JavaScript, которое позволяет ускорить написание скриптов. Опыт, полученный во время написания скриптов на JavaScript, заложит нужный фундамент знаний о том, что такое переменные, функции, алгоритмы и т.д.
HTML и CSS, еще не являются настоящими языками программирования, это так называемые языки разметки. Да и JavaScript, в чистом виде применяется для создания коротких скриптов. Поэтому, когда начинающий кодер почувствует свои силы – есть смысл начать осваивать работу с «настоящим» кодом. Первые языки программирования, с которыми знакомятся дети в школе или взрослые на курсах – это Pascal, Python, C/C++/C# и др. Я очень рекомендую начинать с языка программирования Python. Вот несколько причин, почему Python может быть идеальным языком для начала изучения программирования:
- Python имеет простой и понятный синтаксис, что делает его легко усваиваемым для новичков в программировании. Синтаксис Python легко читается, что может ускорить обучение.
- Python имеет множество библиотек и инструментов для работы с рядом задач, таких как сбор и анализ данных, разработка консольных утилит веб-разработка, научные вычисления, искусственный интеллект и др. Это позволяет начинающим программистам легко понимать концепции программирования и создавать полезные приложения, даже если их знания всё ещё ограничены.
- Python имеет очень активное сообщество пользователей и разработчиков, которые легко помогают друг другу через форумы, сообщества.
- Python давно является популярным языком программирования, поэтому доступно большое количество качественных обучающих материалов, включая учебники, видеоуроки и онлайн-курсы.
- Python имеет интерактивную консоль, которая позволяет пользователям выполнять код и видеть результаты его работы непосредственно в консоли. Также в Python есть REPL (Read-Eval-Print Loop), который используется для быстрого исполнения команд Python без необходимости сохранения в файл.
- Python является объектно-ориентированным языком программирования, что означает, что пользователи могут создавать классы и объекты, что делает код более читаемым, модульным и удобным для сопровождения. Python также поддерживает функциональное программирование, что означает, что пользователи могут использовать функции в качестве объектов первого класса, что делает код более гибким и масштабируемым.
- Python является открытым языком программирования, что означает, что он бесплатно доступен для загрузки и использования. Python доступен на разных платформах, включая Windows, Mac OS и Linux.
Поэтому для начала своей карьеры в IT – освойте базовые навыки программирования на примере языка программирования Python.
Теперь же, когда вы знакомы с языками разметки HTML и CSS, когда научились писать скрипты на JavaScript и освоили основы программирования на языке Python – настало время углубляться в какие-то отдельные технологии и начинать специализироваться.
- Первое направление – веб-разработка. Потребуется ознакомиться со следующими темами:
- Познакомиться с разработкой сайтов на CMS (системах управления сайтами). Я бы выделил такие системы и последовательность изучения: Wordpress, MODX, OpenCart, 1C-Битрикс
- PHP — C-подобный скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов.
- SQL (в частности MySQL) — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
- Node (или более формально Node.js) — кроссплатформенная среда исполнения с открытым исходным кодом, которая позволяет разработчикам создавать всевозможные серверные инструменты и приложения используя язык JavaScript. Среда исполнения предназначена для использования вне контекста браузера (т.е. выполняется непосредственно на компьютере или на серверной ОС).
- Gulp — инструментарий JavaScript с открытым исходным кодом, используемый в качестве потоковой системы сборки в веб-разработке. Это обработчик задач, построенный на Node.js и npm, используемый для автоматизации трудоемких и повторяющихся задач, связанных с веб-разработкой, таких как минификация, конкатенация, перебор кэша, модульное тестирование, линтинг, оптимизация и т.д.
- js — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Легко интегрируется в проекты с использованием других JavaScript-библиотек. Может функционировать как веб-фреймворк для разработки одностраничных приложений в реактивном стиле.
- Webpack — инструмент, позволяющий скомпилировать, например, JavaScript модули в единый JS-файл. Webpack также известен как сборщик модулей.
- SASS или же SCSS это препроцессор, который служит для быстрого написания CSS стилей. Благодаря SASS вы можете добавить переменные, функции, наследование и многое другое к обычному документу CSS. SASS — это препроцессор, позволяющий писать код для стилей. CSS, используя всевозможные: переменные, циклы, миксины, функции и многое другое.
- Создание веб-приложений с помощью фреймворков: Flask, Django и т.п.
- Второе направление – разработка приложений и аналитика на Python. Потребуется ознакомиться со следующими темами:
- Для начала освоить весь набор стандартных модулей, которые поставляются вместе с Python. Он включает модули для организации файлового ввода-вывода, работы с сетью, многопоточности и других задач. Особенно стоит обратить внимание на Tkinter — кросс-платформенная событийно-ориентированная графическая библиотека на основе средств Tk, которая широко распространённая в мире GNU/Linux и других UNIX‐подобных систем, а также портирована на Microsoft Windows). Позволяет создавать приложения с графическим интерфейсом.
- PyQt — набор расширений (биндингов) графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python. Так же как и встроенный Tkinter позволяет создавать приложения с графическим интерфейсом, но более продвинутый и красивый.
- NumPy является библиотекой для работы с массивами числовых данных в Python. Она предоставляет мощный объект массива, а также функции для выполнения операций над массивами.
- Pandas — это библиотека для манипулирования и анализа данных в Python. Она предоставляет мощные структуры данных для работы с табличными данными, а также инструменты для чтения и записи данных в различных форматах.
- Matplotlib является библиотекой для создания графиков в Python. Она предоставляет широкий спектр инструментов для создания статических, анимированных и интерактивных визуализаций в Python.
- Scikit-learn — это библиотека для машинного обучения в Python. Она предоставляет инструменты для классификации, регрессии, кластеризации и других задач, а также инструменты для выбора и оценки моделей.
- TensorFlow — это библиотека для машинного обучения и глубокого обучения в Python. Она предоставляет инструменты для создания, обучения и развертывания моделей машинного обучения, а также инструменты для визуализации и анализа данных.
- Keras — это высокоуровневый API нейронных сетей, написанный на языке Python и способный работать поверх TensorFlow или других фреймворков более низкого уровня. Он предоставляет удобный интерфейс для построения и обучения нейронных сетей.
- Pygame — это библиотека для разработки игр на Python. Она предоставляет инструменты для создания 2D-графики, воспроизведения звуков и музыки, обработки пользовательского ввода и многое другое.
- Requests — это библиотека для выполнения HTTP-запросов на Python. Она предоставляет простой и элегантный API для выполнения запросов, обработки ответов, управления cookies и сессиями.
- Beautiful Soup — это библиотека для разбора HTML и XML документов на Python. Она предоставляет ряд инструментов для навигации, поиска и модификации деревьев документов.
- Anaconda — дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек, объединённых проблематиками науки о данных и машинного обучения. Основная цель — поставка единым согласованным комплектом наиболее востребованных соответствующим кругом пользователей тематических модулей (таких как NumPy, SciPy, Astropy и других) с разрешением возникающих зависимостей и конфликтов, которые неизбежны при одиночной установке. Содержит более 1,5 тыс. модулей. Основная особенность дистрибутива — оригинальный менеджер разрешения зависимостей conda с графическим интерфейсом Anaconda Navigator, что позволяет отказаться от стандартных менеджеров пакетов (таких, как pip для Python). Дистрибутив скачивается единожды, и вся последующая конфигурация, в том числе установка дополнительных модулей, может проводиться в офлайне. Кроме того, обеспечивается возможность ведения нескольких изолированных сред с раздельным разрешением версионных зависимостей в каждой.
- Третье направление – разработка игр и высоконагруженных систем на языке С++. Потребуется ознакомиться со следующими темами:
- Boost — это большая библиотека C++, содержащая множество инструментов и компонентов для решения разных задач. Она включает в себя лексический анализатор, библиотеку для многопоточной работы, визуализацию данных, криптографию, и т. д.
- Qt — это кроссплатформенный фреймворк для разработки графических приложений. Он позволяет создавать приложения с интерфейсом пользователя, которые могут работать на разных операционных системах.
- STL (Standard Template Library) — это коллекция готовых шаблонов на C++, которые облегчают написание кода для структур данных 1, включая массивы, списки, деревья и т. д.
- OpenCV — это библиотека компьютерного зрения, которая предназначена для обработки изображений и видео. Она содержит компоненты для детектирования объектов, трекинга, распознавания образов, а также машинного обучения.
- Eigen — это библиотека линейной алгебры, которая может использоваться для работы с матрицами, векторами и тензорами. Она обладает высокой производительностью и оптимизирована для работы на многих платформах.
- GLFW — это библиотека для создания графических приложений, которая используется для создания окон, контекстов OpenGL и управления вводом.
- SDL (Simple DirectMedia Layer) - это библиотека, используемая для создания мультимедийных приложений, таких как игры. Она предоставляет доступ к аудио, видео, клавиатуре, мыши и джойстикам.
- Nuklear — это маленькая библиотека GUI, которая создает нативные элементы управления для Desktop и Mobile.
- OpenSSL — это криптографическая библиотека, которая предоставляет функции для шифрования и аутентификации данных.
- Google Test — это библиотека для написания и запуска тестов на C++, которая предоставляет набор макросов и функций для тестирования кода.
А также потребуется разобраться в работе с игровыми движками, на основе которых планируете создавать игры. Вот наиболее популярные:
- Unreal Engine — это мощный игровой движок, используемый для создания 3D-игр на различных платформах. Он использует язык программирования C++ для создания игровой логики и дополнительных модулей.
- Unity — это популярный игровой движок, который также поддерживает язык программирования C++. Он используется для создания 2D и 3D игр с использованием множества платформ.
- CryEngine — это еще один мощный игровой движок, который использует язык C++ и широко применяется для создания реалистичных игровых механик и графики.
- Lumberyard — это бесплатный, открытый игровой движок, который использует язык C++ для настройки игровой логики.
- Godot Engine — это бесплатный и открытый исходный код многоплатформенный игровой движок, который использует языки программирования C++ и GDScript для разработки игровой логики и обработки событий.
- SFML (Simple and Fast Multimedia Library) — библиотека C++ для разработки мультимедиа приложений и игр с использованием графики, звука и сетевых возможностей.
- Четвертое направление – создание программ в корпоративном сегменте на Java. Потребуется ознакомиться со следующими темами:
- JavaFX — это платформа для разработки настольных приложений с графическим интерфейсом. Она основана на языке разметки FXML и позволяет создавать интерактивные пользовательские интерфейсы.
- Swing — это стандартная библиотека Java для создания настольных приложений с графическим интерфейсом.
- Java2D — это библиотека Java для создания 2D-графики.
- JDBC — это API Java для работы с базами данных.
- JNDI — это Java Naming and Directory Interface API, который позволяет получать доступ к данным в каталогах и службах имен.
- RMI — это Java Remote Method Invocation API, который позволяет удаленно вызывать методы Java из других процессов или виртуальных машин.
- Spring — это фреймворк Java для создания веб-приложений и управления бизнес-логикой.
- Hibernate — это библиотека Java для работы с базами данных, которая обеспечивает объектно-реляционное отображение (ORM).
- HttpClient — это библиотека Java для создания HTTP-клиентов.
- Java Development Kit (JDK) — это набор инструментов для разработки и запуска приложений на языке Java.
Конечно, это лишь общие рекомендации, и направление изучения зависит от ваших конкретных потребностей и целей. Надеюсь, что статья в целом поможет разобраться с тем, что вы хотите изучать и построить свой путь обучения.