Уявлення про програми середньостатистичного користувача досить обмежені і засновані на досвіді запуску і роботи в додатках. Ми знаємо, що існують програмісти, які пишуть програми, а наша справа - скористатися результатами їх праці. Про алгоритмах люди, які закінчили школу енну час назад, згадують в контексті теорії алгебри, смутно представляючи, що ці знання вже точно не знадобляться. А якщо доводиться зіткнутися з перетином цих понять - більшість з нас втрачається, не знаходячи зв'язків між алгоритмами і програмами, і, отже, не розуміючи поставленого завдання. Іноді ці поняття об'єднують, вважаючи, що "алгоритм" - більш професійне і точне позначення "програми". Щоб заповнити прогалини в уявленнях, подивимося, що все ж варто за термінологією.
визначення
алгоритм - інструкція, що включає певний чіткий порядок дій, що здійснюються для виконання поставленого завдання. Число дій завжди звичайно.
програма (Комп'ютерна, перш за все) - запис послідовності інструкцій, виконуваних комп'ютером.
порівняння
У чому різниця між алгоритмом і програмою ясно вже з термінології. Здавалося б, в обох випадках ми бачимо впорядковані дії, що призводять до кінцевого результату. Як зрозуміло з визначень, програма може складатися з декількох алгоритмів, проте ієрархія "загальне - приватне" тут не простежується. Алгоритм - це взагалі будь-яка інструкція, в якій чітко зазначено дії. Наприклад, для складання шафи. Програмою вона, звичайно, бути не буде. Алгоритм може існувати в будь-якій формі: його можна запам'ятати, записати в блокнот, замалювати у вигляді схеми, продиктувати, так як в основі його - логічна складова, а не формальна. Програма ж - поняття формальне. Вона являє собою саме запис набору алгоритмів, причому запис на одній з мов програмування, зрозумілих обчислювальній машині. Це може бути не тільки наш звичний комп'ютер, але і блок управління будь-якого приладу. Таким чином, алгоритм можна визначити як метод або схему втілення ідеї, програму - як її реалізацію конкретними засобами.
Ще одна відмінність програми від алгоритму - оперування конкретними даними в процесі виконання. Якщо алгоритм являє собою тільки опис дій, потрібних для досягнення мети, то програма містить і опис даних в тому числі. Алгоритм може бути масовим, тобто призначатися для вирішення не однієї задачі, а класу задач. Разом з тим до його властивостей відносять ще дискретність і визначеність. Алгоритм має на увазі вчинення елементарних дій над елементарними об'єктами, однак для різних виконавців елементарність буде різною.
Поняття алгоритму набагато ширше, ніж програми: базове поняття математики. Комп'ютерна програма є об'єктом права інтелектуальної власності, алгоритм же до таких не належить.
висновки
- Алгоритм - інструкція, програма - запис послідовності інструкцій.
- Алгоритм може бути представлений в будь-якому вигляді, програма - на мові програмування.
- Програма включає опис даних і дій, алгоритм - тільки дій.
- Алгоритм може бути призначений для вирішення класу задач.
- Алгоритм є базовим поняттям математики.
- Програма є об'єктом авторського права.