В період появи перших комп'ютерних систем гостро постало питання того, як «навчити» машину сприймати введені до виконання завдання людиною. Тут і з'явився термін «програмування». Сьогодні багато користувачів, які не знайомі з основами і тонкощами цих процесів, вважають, що це щось з області фантастики, недоступне пересічному обивателю. Однак при бажанні можна освоїти програмування і самому. Але не будемо забігати вперед і розкладемо все, як кажуть, по поличках.
Що таке програмування в загальному розумінні?
Якщо подивитися на основні трактування даного терміна, неважко зробити простий висновок. Що таке програмування? Це написання програм.
Тут же виникає питання, що ж таке програма. Програма або додаток – це, грубо кажучи, набір спеціалізованих команд, інструкцій, директив або виконуваних сценаріїв, які підлягають виконанню машиною, причому на рівні і «залізних» пристроїв, та інших залучених коштів.
Щоб було зрозуміло, що таке програмування, можна навести простий приклад. Встановлене клієнтська програма, націлена на виконання конкретного завдання, звертається не тільки до оперативної пам'яті і процесора, але і задіє інші фізичні пристрої через інструменти управління ними, називаються драйверами, які теж являють собою програми.
Трохи історії
Говорячи про те, що таке програмування в сучасному трактуванні, варто звернути свій погляд на історію його виникнення. По суті, автоматизоване виконання певних дій, наприклад, в галузі математичних обчислень, відомо людству досить давно. Згадати хоча б Древню Грецію, в якій було використано пристрій з шестернями різної величини, що дозволяло виконувати найпростіші арифметичні дії. Це був самий справжній прототип сучасного калькулятора. У 1206 році з'явився унікальний апарат по відстеженню так званого метонова циклу, побудований Аль-Джазарі, який використовував складні на той час механізми, засновані на затискачах і кулачках. Тільки в 1804 році світ побачив жакардовий ткацький верстат, який був здатний відтворювати візерунки на тканинах, створені на основі перфокарт. Але справжнім проривом стало програмоване аналітичне пристрій, розроблений Чарльзом Беббиджем, яке, на жаль, за його життя так і не було побудовано.
Зате в 1846 році дочка Байрона створила першу в світі програму для аналітичної машини, яка вирішила рівняння Бернуллі. Звичайно, алгоритми програмування, які застосовувала графиня Ада Августа Лавлейс, були дуже примітивними, але саме вони заклали те саме зерно, що було використано при створенні сучасних комп'ютерних програм. І саме її вважають у всьому світі прародителькою програмування.
Яким чином комп'ютер сприймає команди?
Будь-яка комп'ютерна програма повинна машиною якимось чином виконуватися. Їй мало написати, мовляв, зроби те-то і те-то. Для цього були створені мови програмування. Але написати послідовність команд на якійсь мові, яких сьогодні існує дуже багато, виявляється недостатньо. Машина все одно не сприйме текстові фрази або математичні формули.
Універсальним засобом стало використання двійкового (бінарного) коду, що складається з послідовностей нулів і одиниць, які сприймаються будь-яким комп'ютерним пристроєм. Але як перевести змістовні фрази і формули в такий вигляд? Для цього використовуються компілятори, які і перетворюють список команд в зрозумілий машині двійковий код. Можна зустріти і трійкові, і шестнадцатиричние коди, але вони використовуються дуже рідко.
Мнемокоди
Зрозуміло, що вводити двійкові команди навіть на примітивних пристроях було вкрай важко, адже запам'ятати такі послідовності людина за своєю природою просто не в змозі.
Тому, щоб уніфікувати такі процеси, були придумані так звані мнемокоди, які у вигляді текстових команд були повними аналогами двійкових комбінацій. Текстову команду, як вже зрозуміло, запам'ятати набагато легше, ніж довгу послідовність, що складається з нулів і одиниць.
Поняття змінних
Але й цим справа не обмежилася. Застосовувані на зорі розвитку алгоритми програмування зажадали введення нової величини, що отримала назву змінної. Суть її використання в будь-якій мові програмування полягає у присвоєнні певної області пам'яті, в якій зберігається якесь значення, літерного позначення. Для того щоб перевести мнемокоди в інструкції, а змінні в області пам'яті, використовувалися інструменти, які називаються трансляторами. І всі мови, використовували таку методику, отримали назву асемблерів.
Мови програмування
Самі ж мовні засоби, на яких пишуться (або в свій час писалися) комп'ютерні програми, умовно можна розділити на низько - і високорівневі.
Якщо хтось із старшого покоління пам'ятає, навіть у радянські часи в школах на уроках інформатики викладали мову Basic. З його допомогою на тодішніх машинах Yamaha КУВТ можна було створювати примітивні програми математичних обчислень, програмувати найпростіші картинки або музику, що лунає з системного динаміка. Для математики можна було використовувати і логічні оператори кшталт «якщо», «то», «інакше». Але проблема всіх тих, хто добре навчився цієї мови, полягала в тому, що вони ніяк не могли освоїти нові засоби. Не кажучи про те, що мова Асемблер своєю появою справив справжню революцію і використовується до цих пір, з'явилися досить специфічні засоби, наприклад, мови структурного чи об'єктно-орієнтованого програмування (ООП).
До ООП сміливо можна віднести мову C+/++, на основі команд якого створені ті ж операційні системи Windows. Програмування на «Сі» є досить складним, проте при бажанні можна освоїти і його. Як мовиться, було б бажання. Можна піти на курси програмування або використовувати для навчання відповідну літературу. Правда, як вважає більшість фахівців, самому вникнути в основи мови ще можна, а ось розвивати свої знання на практиці буде вкрай складно. Тут ніякі труди на зразок книг «Програмування для чайників» не допоможуть. Але повернемося до мов. Відносно недавно з'явилися мови, що працюють на основі інтерпретаторів (.NET Framework, Python, Java, Perl і т. д.). В них замість машинного коду генерується особливий байт-код, який являє собою двійковий код віртуальної машини.
До речі сказати, програмування на Java можна без особливих зусиль освоїти самому. Наприклад, для мобільних пристроїв на основі Android-систем можна паралельно використовувати Android Studio і пакет Java SDK, а в якості тестувальника встановити Genymotion. Можна зробити ще простіше, звернувшись до онлайн-конструктору App Inventor, в якому створення послідовності команд виконується на зразок складання пазлів.
Поняття парадигм
Поняття парадигм виникло не на порожньому місці. У самому загальному розумінні парадигми являють собою певний погляд на навколишній світ і дії, які в його відношенні можна зробити. У комп'ютерному світі під таким терміном розуміється якесь узагальнення по відношенню до роботі програми. Існують програми, орієнтовані винятково на одну парадигму або виконання лише одного завдання, але всі сучасні мови і програми, створювані на їх основі, вирішують кілька завдань. Звідси і з'явився термін багатозадачності.
Сучасне програмування та його особливості
На сучасному етапі розвитку комп'ютерних технологій пріоритетним для багатьох програмістів є ООП та програмування на Java. Зауважте, пакети Java-платформи підтримуються будь-який з нині відомих операційних систем, не кажучи вже про мобільних пристроях. І хоча, як вважається, мова C+/++ є домінуючим, не варто скидати з рахунків і Асемблер. Дивно, але більшість вірусів написано саме на ньому. А якщо взяти до уваги веб-програмування, скажімо, на основі Delphi, тут взагалі відкриваються такі широкі можливості і перспективи, що багато починаючі програмісти про це навіть не здогадуються.
Чи можна самому навчитися програмуванню?
Питання, пов'язані з самостійним навчанням, безпосередньо залежать від того, чого саме хочеться навчитися. Література у вигляді книг «Програмування для чайників» дає лише часткові відповіді без конкретизації основних аспектів з урахуванням застосування тієї чи іншої мови. Це, так би мовити, для загального розуміння. Курси програмування – теж питання спірне, адже в даному випадку все залежить не тільки від сприйняття учнем, але і від того, якими знаннями володіє викладач, як він подає матеріал і т. д. Але якщо вже виникла необхідність вивчення якоїсь певної мови або методу програмування, в наше століття інтернету проблемою це не є. Можна знайти навіть онлайн-курси чи докладний опис уроків по тій же платформі Java, програмування Android або iOS-пристроїв.
Короткі підсумки
Що таке програмування в загальних рисах, думається, вже зрозуміло будь-якій людині. Тут, правда, були порушені тільки загальні питання без конкретики використання кожної мови, коштів написання додатків або супутніх програмних модулів, інтерпретації або трансляції команд, так само як і те, яким чином все це виконується на рівні процесора, оперативної пам'яті або операційної системи. Все це досить складно для розуміння, а непідготовленій людині вникнути в суть цих процесів буде не так вже й просто. Проте за бажання і досить високого ступеня мотивації вивчити будь-яку мову можна, а в подальшому стати висококласним програмістом.