UA RU
logo
Основы      12/09/2022

Решает не математический склад ума: что нужно знать, чтобы начать программировать

Олександра Стеценко BLOG

Операційна директорка в Wezom Academy

Привет! На связи Александра Стеценко, операционный директор и соавтор блога Wezom Академии. В моей сфере деятельности мне часто приходится общаться с начинающими айтишниками, которые находятся в самом начале своего пути в IT. И я заметила определенную закономерность: большинство из них уверены, что программирование — это гораздо сложнее, чем есть на самом деле… 

Нет, я не хочу сказать, что программирование — это элементарно. Но и не так сложно, как кажется поначалу.

Яркий пример — алгоритмы в программировании. Многие помнят этот термин еще со школьного алгебраического курса. И я, пожалуй, не ошибусь, если скажу, что кроме самого названия в памяти почти ничего не осталось.

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

А если я скажу, что все действительно достаточно просто? Что алгоритмы в программировании — это совсем не страшно и при правильном подходе вы овладеете ими и сможете использовать без особого труда?

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

Основы: что нужно знать, чтобы начать программировать

Понятие алгоритма изначально не связано с программированием в принципе. Термин в более современном толковании начал использоваться еще в 30-50-е годы ХХ века в работах Тюринга, Поста, Черча, Винера и Маркова. А вообще его ввел еще персидский ученый Аль-Хорезми около 825 нашей эры.

Среди начинающих в IT существует расхожее мнение, что программирование требует глубоких математических знаний. На самом деле, это не совсем так.

Зачастую решающий фактор — не математический склад ума, а алгоритмическое мышление. И как раз над ним следует активно работать, чтобы развиваться в программировании.

Поэтому на этом и сосредоточимся.

Онлайн-курс "Фінансовий аналіз" від Laba.
Опануйте звітність — від збору даних до обробки результатів, та інтерпретуйте дані ключових звітів CF, BS, P&L зрозумілою мовою.
Детальніше про курс

Понятие алгоритма

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

Для лучшего понимания проведем аналогию с реальной жизнью. Ваша работа — это тоже определенный алгоритм:

1. Сели за рабочее место
2. Включили компьютер
3. Открыли браузер или рабочую программу
4. Начали работать

Отбросьте один из шагов своего рабочего алгоритма и вся система разрушится.

Так же и в программировании.

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

Базовые структуры алгоритмов

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

  • Следование — организация алгоритма, в котором все действия выполняются последовательно без повторений или пропусков:

  • Разветвление  — форма организации команд, при которой в зависимости от определенных условий выполняется заданная команда или их последовательность:
  • Онлайн-курс "SMM-спеціаліст" від Laba.
    Від аналізу аудиторії та створення живого контенту — до побудови комʼюніті навколо бренду в соцмережах.Під менторством Senior SMM Specialist в Uklon.
    Дізнатись більше

  • Повторение (цикл) — методика организации команд, когда последовательность действий выполняется неоднократно в зависимости от определенного условия:

Базовые структуры данных

Структура данных  это контейнер, информация в котором скомпонована определенным образом. Причем в зависимости от «компоновки» будет варьироваться и ее эффективность в разных операциях.

Алгоритмы и структуры данных — тесно связанные между собой понятия. На основе первых формируются вторые. Рассмотрим базовые структуры данных, используемые в программировании.

Массивы

Это самая простая структура данных, в которой элементы расположены последовательно, а каждому из элементов присвоено числовое значение (индекс). Индекс соответствует позиции элемента внутри массива:

Существуют и более сложные массивы — многомерные. То есть массивы внутри других массивов.

В программировании работать с массивами достаточно удобно, используя простые команды:

Онлайн-курс Front-end developer від Mate academy.
Опановуйте з нами одну з найблільш популярних професій: Front-end developer! Після навчання допоможемо з пошуком роботи.
Отримати знижку на курс
  • Insert — вставить элемент по указанному индексу;
  • Get — вернуть элемент по указанному индексу;
  • Delete — удалить элемент по указанному индексу;
  • Sizeполучить общее количество элементов в массиве.

В массивах несложно находить нужные элементы, объединять и сортировать их, изменять порядок расположения.

Стеки

Это абстрактный тип данных, в котором список элементов организован по принципу LIFOОт англ. last in — first out, «последним пришел — первым зашел».

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

Стеки позволяют использовать следующие команды:

Онлайн-курс Frontend-разробник від Powercode academy.
Курс на якому ти напишеш свій чистий код на JavaScript, попрацюєш із різними видами верстки, а також адаптаціями проектів під будь-які екрани. .
Зарееструватися
  • Push — вставляет элемент сверху;
  • Pop — возвращает верхний элемент после удаления;
  • isEmpty — возвращает true, если стек пуст;
  • Top — возвращает верхний элемент без удаления из стека.

В одном массиве может быть несколько стеков, с которыми можно взаимодействовать отдельно.

Очереди

Тип сохранения элементов данных с последовательным их расположением. В отличие от стека, в очередях используется принцип FIFOОт англ. First in First Out — «первым пришел — первым зашел».

Основные операции с очередями:

  • Enqueue — добавляет элемент в конец очереди;
  • Курс Full-stack developer від Mate academy.
    Опануйте нову професію завдяки курсу Full-stack developer! Ви отримаєте необхідні навички та допомогу у працевлаштуванні! .
    Отримати знижку на курс
  • Dequeue — удаляет элемент с конца очереди;
  • isEmpty — возвращает значение true, если очередь пуста;
  • Top возвращает первый элемент очереди.

Очереди часто сравнивают именно со стеками, и эти структуры данных имеют много общего.

Связанные списки

Это массивы, в которых каждый элемент служит отдельным объектом и построен на других элементах — данных и ссылках на следующий узел:

Основные операции со связанными списками:

  • InsertAtEnd — вставляет указанный элемент в конец списка;
  • InsertAtHead — вставляет элемент в начало списка;
  • Онлайн-курс Digital Marketing від Mate academy.
    На курсі Digital Marketing ви отримаєте усі необхідні навички, щоб отримати нову роботу: навчитесь використовувати цифрові канали для залучення аудиторії, просування брендів, товарів та послуг.
    Отримати знижку на курс
  • Delete — удаляет указанный элемент;
  • DeleteAtHead — удаляет первый элемент списка;
  • Search — возвращает указанный элемент;
  • isEmpty — возвращает True, если связанный список пуст.

Графы

Это наборы узлов, соединенных друг с другом в виде сетки, где один элемент может одновременно быть связан с большим количеством других:

Графы бывают ориентированными (с четко направленными ребрами) и неориентированными (с возможностью выполнять переход в обоих направлениях).

Деревья

Дерево — это иерархическая структура данных с множеством разветвлений.

Самая простая аналогия — дерево навыков в видеоиграх:

Курс Python developer від Mate academy.
Опануйте Python та отримайте свою першу роботу в IT! Ми навчимо вас усім необхідним навичкам та допоможемо з працевлаштуванням.
Отримати знижку на курс

Есть несколько типов деревьев данных: N-дерево, сбалансированное дерево, бинарное дерево, AVL-дерево и другие. Рекомендуем ознакомиться с ними более подробно, потому что сейчас древовидные структуры используются очень активно.

Хотим отдельно остановиться на префиксных деревьях. Это подвид древовидной структуры данных, которым вы пользуетесь ежедневно. Например, когда вы используете поиск в браузере, ищете слова в словаре или набираете текст на клавиатуре с Т9.

Например: вот так префиксное дерево хранит слова top, thus и their:

Хэш-таблицы

Это способ хранения данных, при котором каждому элементу в таблице присваивается неповторимый индекс. А каждый объект хранится в виде «ключ – значение». Используя нужные ключи, вы можете легко находить нужные значения:

Функции

Еще один важный термин, связанный с алгоритмами, — это функции.

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

Психологічний профорієнтаційний тест для IT-фахівців від Hillel IT School.
Пройдіть психологічний профорієнтаційний тест для IT-фахівців щоб дізнатися ваші сильні сторони, вподобання і інтереси і з'ясувати, яка IT-спеціальність вам підходить.
Пройти тест

Функции позволяют выборочно работать с разными элементами структуры данных, обращаясь к ним непосредственно. При этом примеры функций для разных языков программирования отличаются. Для наглядности можем привести несколько примеров:

JavaScript:

function max (a, b)
{
   return a >= b ? a : b;
}

С++:

void name(string text)
{
   cout << text;
}

Java:

public void name(String text) 
{
   System.out.println(text);
}

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

  1. функция размещается в определенной части программы, где нужно вызвать действие алгоритма;
  2. при обработке нашего кода обработчик натыкается на функцию и возвращается в ту часть программы, где прописан наш алгоритм;
  3. обработчик выполняет функцию, при этом учитывая указанные нами аргументы;
  4. после выполнения функции берет или не берет результаты ее выполнения и возвращается к той строке кода, которая и вызвала функцию;
  5. Англійська для IT від Englishdom.
    В межах курсу можна освоїти ключові ІТ-теми та почати без проблем говорити з іноземними колегами.
    Дійзнайтеся більше
  6. по завершению обработчик переходит к следующим строкам кода.

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

Основы работы с системой контроля версий

Программирование, работа с алгоритмами и базами данных происходит не в вакууме. Задача программиста — быть командным игроком, распределять задачи по проекту и оптимизировать рабочий процесс. Один из основных рабочих инструментов современного девелопера — система контроля версий Git.

Советуем ознакомиться с информацией по работе с Git на официальном сайте. Мы же перечислим основные этапы работы с Git в классическом рабочем процессе с примерами команд в терминале (например, в редакторе VS Code):

  • Проверка ветви: git branch
  • Переход на новую ветку: git checkout -b
  • Написание кода: <ваш код>
  • Просмотр статуса: git add
  • Создание коммита:
  • Онлайн-курс Pyton від Powercode academy.
    Опануйте PYTHON з нуля та майте проект у своєму портфоліо вже через 4 місяця.
    Приєднатися

git commit -m “useful info about the code I wrote”

  • Проверка ветви: git branch
  • Отправка коммита: git push origin
  • Запрос на слияние: перейдите в онлайн-репозиторий GitHub и сделайте запрос на слияние ветви:

Чтобы активировать процесс, нажмите Pull request. Если вы не допустили ошибок, получите следующее сообщение:

Резюмируем: достаточно ли этих знаний начинающему программисту

Итак, итоги:

  • Алгоритмы  это инструкции, описывающие последовательность действий программы.
  • Онлайн курс з промт інжинірингу та ефективної роботи з ШІ від Powercode academy.
    Курс-інтенсив для отримання навичок роботи з ChatGPT та іншими інструментами ШІ для професійних та особистих задач, котрі допоможуть як новачку, так і професіоналу.
    Записатися на курс
  • Структуры данных — структурные элементы, с помощью которых создаются алгоритмы решения определенных задач.
  • Структуры алгоритмов — характер связей между алгоритмами, который бывает трех видов:
  1. Линейный алгоритм — с последовательными операциями.
  2. Разветвленный алгоритм — с последовательностью выполнения операций, зависящей от определенных условий.
  3. Циклический алгоритм — с многократным выполнением одних и тех же действий, например, для выполнения однотипных вычислений с одинаковыми зависимостями, но с разными переменными.

Можно привести много примеров, как алгоритмы упрощают процесс программирования и ускоряют выполнение кода. Назовем всего некоторые из возможностей, которые они открывают перед девелопером. А точнее — умение их использовать:

  • оптимизация обновления DOMОбъектная модель документа;
  • кэширование в памяти повторно используемых элементов;
  • демонстрация только того контента, который пользователь видит в данный момент;
  • нормализация данных, использование селекторов для кэширования объемных данных, требующих дополнительных расчетов;
  • предзагрузка (preload) контента, разработка стратегии кэширования запросов и т.д.

И здесь у опытных программистов может появиться возражение: все эти и другие задачи можно решить с помощью соответствующих фреймворков и библиотек. Можно, никто и не возражает. Вот только в таком случае подобные манипуляции способствуют существенному разрастанию кода. Как следствие — фризы страниц, длинная первая загрузка и невысокий FPS при скроллинге. 

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

И несмотря на то, что мы в Wezom Академии всегда выступаем за практику, в этом случае советуем будущим программистам подробнее ознакомиться именно с теорией, закрепить и расширить полученные сегодня знания.

Может ли программист работать над проектами без знания алгоритмов и структур данных?

Да, может. Более того, многие разработчики не ставят эти направления в приоритет. Но отсутствие базовых знаний и теории алгоритмов — это, во-первых, существенное замедление работы над проектами. А во-вторых, необходимость использовать инструменты, без которых можно обойтись, сэкономив время и силы.


А теперь хочу обратиться к тем, кто только начинает свой путь в программировании, и к уже имеющим определенный опыт работы. Как вы относитесь к использованию алгоритмов в работе? Изучаете ли это направление и используете знания на практике? Или оставили ли его «до лучших времен» и концентрируетесь на более практичных вещах? Нам интересно ваше мнение, поэтому приглашаем к обсуждению в комментариях.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн- курсPython developer від Mate academy.
Курс Python developer з гнучким графіком ідеально підходить новачкам. Отримайте нову роботу вже через 7 місяців навчання! .
Отримати знижку на курс

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: