Просто уявіть, скільки тонн інформації знаходиться в інтернеті, а ваш браузер за мить здатний вчепити саме те, що вам потрібно. А скільки вам знадобиться часу, щоб знайти та вичленувати потрібну інформацію з книги? У кращому разі хвилин 5, абраузер з мільярдів таких «книг» знайде потрібну інформацію всього за частки секунди. Як йому це вдається? 

 

      Відповідь проста — алгоритми. Саме вони допомагають браузеру працювати так швидко. 

 

 

Що таке алгоритми?

      Пропонуємо таке визначення.

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

      Алгоритми можуть бути різними: починаючи від рецепта приготування страви, закінчуючи складними алгоритмами шифрування (наприклад, які використовуються у NFC). 

 

Простий приклад алгоритму

      Наприклад, алгоритм сортування бульбашкою (сортування простими обмінами).

Завдання

      Припустимо, у нас є послідовність чисел: 2, 0, -3, 6, 8, 9, 1, -5. І ми хочемо її відсортувати в неспадаючому порядку (щоб у результаті стало a1 ≤ a2 ≤ a3 ≤ …, де a1, a2, a3, … — якісь числа з початкової послідовності).

Рішення

      Ми можемо йти по черзі по кожному елементу послідовності та порівнювати його з кожним наступним елементом (для a1 це будуть a2, a3, ...). Якщо ж наступний елемент менше, ніж попередній, ми мінятимемо їх місцями. Ось і весь алгоритм! Чи не складно, правда?

      Якщо записати його в псевдокод, то виглядатиме це приблизно так:

 

// length — вихідна довжина послідовності

 

                               For(i = 0 to length)

 

                               For(j = i + 1 to length)

 

                               if(A[j] < A[i])

 

// Поміняти елементи місцями

 

                               Swap(A[i], A[j]);

      Як бачимо, алгоритм складається з лише 4 рядків коду (без урахування коментарів). Правда, досвідченіший читач скаже, що цей алгоритм не дуже ефективний і є кращі аналоги, і він має рацію. Але ми розглянули саме цей, оскільки він дуже простий і зрозумілий навіть тим,  хто не знайомий із програмуванням.

      

Як часто використовують алгоритми?

      Насправді на просторах інтернету ця тема серед програмістів обговорювалася неодноразово. І якщо проаналізувати всі ці джерела, то можна сказати наступне: «Абсолютно в кожному з таких обговорень були люди, які скаржилися на те, що витрачали в університетах так багато часу на розбори, побудову та аналіз алгоритмів і використовували ці знання на практиці лише пару разів».

      І багато хто з таких людей виявляється правим, тому що, дійсно, хороші знання алгоритмів потрібні не всім. Навіщо, скажімо, верстальникові сайтів знати, як виконуються обходи графів?

      Але раз на раз не припадає, і іноді без алгоритмів просто не обійтися. Як мінімум, усім програмістам потрібно знати стандартні алгоритми сортування даних, тому що такі дії (сортування) доводиться виконувати досить часто.

 

      Постає питання, чому тоді не можна вивчити якийсь фреймворк чи бібліотеку, де вже є готові варіанти всіх найвідоміших алгоритмів? Вивчити те можна, але всі бібліотеки мають властивості старіти чи оновлюватись, і тоді доведеться переучувати себе під нові стандарти або взагалі наново вчити щось інше.

      Ось чому головне завдання алгоритмів — це, насамперед, навчити програміста думати. Це як знання математики в науці: можливо більшість теорії дійсно і не стане в нагоді на практиці, але у випадку, якщо трапляється якесь складне завдання, згадати колись вивчений матеріал і скомпонувати його для її вирішення буде простіше, ніж вивчати все заново. Тому так важливо вивчати алгоритми в університеті, отримуючи величезну базу знань, з якою потім буде відносно легко досягати своїх кар'єрних вершин.

      А по-друге, вміння правильно проєктувати та аналізувати алгоритми завжди високо цінувалося у спільноті програмістів. Тим більше при влаштуванні на роботу навряд чи будуть запитувати якісь складні алгоритми, але щось елементарне цілком можуть. Адже вміння проєктувати алгоритми — це насправді прямий показник знань програміста. Саме тому, як мінімум, знання алгоритмів точно знадобляться.

 

 Де використовуються алгоритми?

      Алгоритми, як ми вже казали, використовуються абсолютно скрізь. Браузери, операційні системи, автопілоти, GPS-навігатори, NFC-технології, бази даних, нейромережі та багато інших завдань вимагають від проєктувальників хороших знань у галузі алгоритмів. Адже вони не лише дозволяють створювати нові цікаві системи, а й значно оптимізувати роботу наявних, на що замовники завжди готові піти заради подальшої зручності експлуатації.

      Саме тому так важливо в нашому світі програмісту вміти добре орієнтуватися в області алгоритмів.

 

Олег Топорков

  

Популярні статті

Читати далі