Области ИТ для начинающих

Всё больше и больше людей желают приблизиться к миру IT, однако различные материалы описывают скорее узкоспециализированные области, не давая обширного, целостного взгляда на различные сферы информационных технологий. Но именно это и необходимо новичкам в разработке ПО, и по большому числу приходящих вопросов, хочу дать исчерпывающее описание.

Будем считать, что Вы уже знакомы с такими базовыми понятиями, как языки программирования (далее ЯП) и операционные системы (ОС, например Windows, Mac, Linux, iOS, Android). Для удобства дальнейшего исследования, все термины я снабдил ссылками на Википедию. Рассмотрим основные направления IT индустрии, а также популярные технологии.

Мобильная разработка

Эта область в последние годы активно набирает обороты. Есть две основные платформы: iOS и Android. Для них используются следующие ЯП: Objective-C и Swift для iOS; Java и Kotlin для Android. Также в обоих можно использовать C++, однако это менее удобно.

Десктопная разработка

Это старое направление, изначально и чаще всего под Windows, реже под Mac OS X, ещё реже под Linux. Для первого используются следующие ЯП: Delphi, Visual Basic (на мой взгляд, эта парочка уже давно морально устарела), C#, C++. Для Mac используется родной (native) Objective-C, для Линукса C, C++.

Кросс-платформенная разработка

Кроме нативных, родных средств разработки, существуют кросс-платформенные фреймворки и движки, позволяющие одну программу компилировать под разные платформы. Популярные примеры: Xamarin Mono, Qt (игровые движки будут представлены ниже). Основное их преимущество — значительное уменьшение кода, который без особых изменений будет работать как на разных смартфонах, так и на стационарных компьютерах. Однако есть два недостатка: большой размер файла приложения (и возможно низкая скорость) и стоимость этих самых движков, фреймворков.

Front end

Веб разделяется на две тесно взаимосвязанные, но всё же раздельные части: фронт энд (front end) и бэк энд (back end). Первая отвечает за то, что и в каком виде отображается у пользователя в браузере. Здесь используются HTML — язык создания элементов страниц, CSS — описание внешнего вида этих элементов и JavaScript — скриптовый ЯП, делает страницу динамической, позволяет менять её содержимое немножко или кардинально.

Back end

Бэкэнд это программы и их данные, которые находится на сервере (компьютер где-то в Интернете) и не покидают его пределы. Бэкэнд принимает запросы от сайтов и приложений, и генерирует ответы. Ответом может быть целая веб-страница (фронт энд) или отдельные данные (JSON, медиа-файлы, что угодно). Создание и настройку бэк энда называют "поднять сервак".

Издревле сервера пишутся на страшном языке PHP, однако в наше время также популярны Python (с фреймворками Flask, Django, Tornado или Google App Engine), Ruby (вместе с "on Rails"). Применяются и другие технологий, например Node.js, Go.

Для хранения и обработки данных часто используют базы данных (БД), для этого применяется язык запросо SQL и его разновидности. Конечно, БД могут быть полезны не только в вебе, а везде, но там их применение особенно значимо.

Анализ данных и big data

Популярная IT область в наше время — Анализ данных, big data. Для этих целей часто используют ЯП Python и специализированные библиотеки — NumPy, Pandas, SciPy и т.д. Используются и другие технологии, а также готовые программы. БД и SQL тоже полезны. Из общих знаний здесь важна статистика.

Машинное обучение

Область Машинного обучения прямо вытекает из анализа данных, являясь как бы надстройкой над ним. Программные инструменты примерно те же, но в виду того, что Анализ данных скорее статичен, а Машинное обучение чаще используется для динамических, автоматически работающих систем, то применяются также и более мощные, производительные технологии. В первую очередь, это C и C++.

Системное программирование

Существует так называемое Системное программирование, которым называют разработку низкоуровневых систем, программ под какие-либо устройства, чипы. К примеру, разработка операционных систем. Главным инструментов здесь является язык программирования C (Си), хотя изначально был (и остаётся важным) только язык Ассемблера. Реже используются другие ЯП. Здесь очень важно понимание работы разных устройств компьютера и способов передачи данных между ними.

Математика и алгоритмы

Стоит упомянуть кое-что ещё, что хотя и не является самодостаточной областью разработки, но также важно, — математика и алгоритмы. Конечно, всё программирование стоит на алгоритмах, однако некоторые задачи требуют более фундаментальных знаний. Например, прокладка маршрута на карте невозможна без теории графов, а моделирование физических процессов — без высшей математики.

Геймдев, разработка игр

Геймдев. Многие желают научиться программированию именно по этой причине. Действительно, разработка компьютерных игр очень увлекательна, однако и довольно сложна. Нужно уметь разрабатывать под мобильные устройства или десктоп, работать с графикой, аудио, создавать обработку множества объектов и элементов игры. Некоторые сложности уходят, если использовать игровые движки, такие как Unity, Unreal Engine, GameMaker: Studio. Они позволяют один и тот же код компилировать под разные платформы, имеют много встроенных функций для графических и аудио эффектов. Однако плата за это — довольно большой вес итоговых приложений и нередко деньги за эти самые движки.

Помимо самой программной разработки в геймдеве нужны визуальные и звуковые материалы, а главное — идея. Поэтому для крупных проектов собираются люди с опытом, специалисты в своих конкретных областях. И так везде, не только в геймдеве.

Тестирование программного обеспечения

Со временем программы становятся крупными, сложными, включают в себя множество файлом. И иногда (т.е, часто) программисты не могут держать в голове все детали и нюансы. Это приводит к ошибкам в коде и итоговых системах, которые могут быть незаметны долгое время, а потом неожиданно вызывать крупные проблемы. Чтобы это предотвратить, код должен быть протестирован. Но тестирование ПО это не только ручное тестирование программы человеком, чаще это теория о путях исполнения программ, пограничных значениях, а также технологии, инструменты и фреймворки для автоматизации тестирования кода. В общем, это крупная и важная область ИТ.


Конечно, IT не ограничивается этим списком и не делится на независимо существующие категории, это лишь верхушка айсберга. Почти все направления пересекаются друг с другом или с другими областями науки, техники.

Сам я советую попробовать если не все, то как можно большее число направлений, так как многие области поначалу кажутся трудными/скучными, но спустя год-другой, с новым опытом и взглядом на всё, — полезными и увлекательными. А самое главное — всегда хранить в себе желание, стремление познавать и создавать своё творение, это важнее даже опыта и таланта.


Programming languages