Публікація містить рекламні матеріали.

Посібник цілковитого початківця з комп'ютерів і програмування (переклад)

Зміст
Цей допис – переклад статті на Educative.io з серії "Посібник цілковитого початківця" від Раяна Теліна, від 11 вересня 2020 року. Сподіваюся, він допоможе комусь з освоєнням базових понять.
Beginners Guide to Computers and Programming

Програмне забезпечення повсюдно присутньо в нашому світі та його діловій сфері. Майже в кожній галузі програмне забезпечення та комп'ютерне програмування є невід'ємною частиною повсякденного життя та успіху бізнесу. Стати розробником програмного забезпечення - це мрія багатьох людей по всьому світу.

Сьогодні ми поглянемо очима цілковитого початківця на те, як працює комп'ютер, і навчимося думати як програміст. Якщо у вас немає досвіду в програмуванні або будь-якій мові кодування, ви знаходитесь в потрібному місці!

До кінця цієї статті ви вивчите частини комп'ютера та те, як програмісти планують свої програми. Потім ми направимо вас у потрібному напрямку для продовження навчання.

Ось що ми вивчимо сьогодні:

  • Анатомія комп'ютера

  • Що таке програма?

  • Як мислити як програміст

  • Як додати реактивність

  • Як спрощувати свої програми

  • Що вивчати далі

Анатомія комп'ютера

Комп'ютери спроможні робити будь-що, від виконання простих обчислень до запуску складного динамічного програмного забезпечення. Усі ці різні речі виконуються за допомогою трьох основних частин комп'ютера: ЦП, пам'яті та пристроїв введення–виведення.

Мабуть, ви взаємодіяли з кожною з цих штук, навіть цього не помітивши!

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

Пам'ять

Пам'ять – це те, де комп'ютер зберігає дані. Комп'ютери мають два різновиди пам'яті, первинну та вторинну.

Первинна пам'ять – це головна пам'ять кожного комп'ютера, звертання до неї – швидкі. Два основні пристрої первинної пам'яті – це ROM (read-only memory – постійна пам'ять) та RAM (random access memory – оперативна пам'ять).

ROM вміщає нередаговні дані та програми, що використовуються для базових операцій, наприклад, інструкції про те, як вмикати комп'ютер. Нові дані чи програми не можна зберегти в ROM. Пам'ять ROM є енергонезалежною, тому вона зберігається навіть після вимкнення комп'ютера.

RAM вживається для зберігання даних, що наразі використовуються. Збереження даних у RAM прискорює роботу комп'ютера, оскільки так він може використовувати первинну пам'ять замість повільної вторинної. Якщо вся пам'ять RAM використана, комп'ютер зберігає додаткові програми у вторинній пам'яті. RAM є енергозалежною, тобто вона очищується при вимкненні комп'ютера.

Вторинна пам'ять – це те, про що думає більшість людей, коли уявляє собі пам'ять комп'ютера. Жорсткі диски, твердотільні накопичувачі та флеш-накопичувачі – все це приклади вторинної пам'яті. Цей тип пам'яті використовується для масового зберігання та є енергонезалежним. Вторинна пам'ять – це пристрої зберігання або знімні носії інформації. Центральний процесор не має прямого доступу до вторинної пам'яті. Спочатку вона завантажується в RAM, а потім відправляється на процесор.

Відносна швидкість кожного з різновидів пам’яті

Центральний процесор (ЦП)

Центральний процесор (ЦП) – це мозок комп'ютера, який обробляє та виконує інструкції. Він складається з трьох частин: пристрою керування, арифметично-логічного блоку та регістрів.

Пристрій керування бере інструкції з RAM та визначає, які частини ЦП їх виконають. Це управитель ЦП, тому що він бачить весь набір інструкцій та відправляє інструкції, які кожна частина повинна виконати.

Арифметично-логічний блок виконує всі інструкції, що містять або математичну, або логічну операцію. Додавання – поширений приклад математичної операції. Логічні операції використовуються для оцінки та порівняння даних.

Регістри – це невеликі енергозалежні сховища даних усередині ЦП, наприклад, rax, rbx і rcx. ЦП може звертатися до регістрів швидше, ніж до первинної та вторинної пам'яті. Дані тимчасово зберігаються в регістрах при вионанні програми, щоб пришвидшити її роботу. Регістри – куди менші за сховище RAM, тож лише маленька кількість даних може водночас у них зберігатися.

Пристрої введення-виведення

Пристрої введення-виведення – це всі пристрої, що дають комп'ютеру змогу взаємодіяти з навколишнім світом. До них відносять пристрої введення, що дають користувачам змогу керувати комп'ютером, наприклад, клавіатури та миші. Пристрої виведення дають комп'ютеру змогу надавати користувачам видачу, наприклад, монітори та принтери.

Якщо ви читаєте цей текст з телефону, ноутбука чи настільного комп'ютера, то взаємодієте з пристроєм введення-виведення.

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

Що таке програма?

Коли комп'ютери мають змогу виконувати неймовірні обчислення, вони не можуть діяти самостійно. Щоб використовувати будь-який пристрій або комп'ютер, програмісти повинні написати набори інструкцій, які називаються програмами. Програма може містити лише одну інструкцію, а може містити їх десятки.

Уявляйте це як набір інструкцій, що виконують певні задачі.

Комп'ютер прочитує ці програми та виконує інструкції одну за одною. Важливо пам'ятати, що комп'ютери здатні лише до буквального тлумачення та не можуть читати між рядків.

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

Програма та алгоритмАлгоритм - це самостійний набір операцій, які вирішують певну проблему або низку проблем. Комп'ютерна програма, з іншого боку, - це послідовність інструкцій, які ми пишемо для виконання завдання з комп'ютером.Наприклад, уявіть, що ви готуєте програму для порівняння кіл. Можна використати алгоритм для обчислення інформації про кожне коло, наприклад, площу чи периметр, і написати новий код лише для порівняння таких значень.

Навіщо потрібні мови програмування?

Пам'ять, ЦП та пристрої введення-виведення обробляють дані та інструкції, використовуючи машинний код, який називається двійковим. Двійковий код - це довгий рядок з 1 і 0 в певному порядку. Хоч комп'ютери легко його розуміють, двійкові рядки не можуть бути зрозумілі людям.

Мови програмування усувають цей розрив та є посередником між людськими мовами та двійковим кодом, що є незамінним при написанні програм. Такі легкі для прочитання мови програмування звуться мовами високого рівня.

Програмісти спершу пишуть свої програми на мовах програмування високого рівня, таких як Java, Python або C++. Потім комп'ютер бере цей код і відправляє його або інтерпретатору, або компілятору.

Це перетворює програми на двійкові інструкції. Такі двійкові інструкції потім передаються ЦП для виконання.

Перетворення програми

Мови програмування високого рівня дають програмістам змогу передавати складні інструкції ЦП без необхідності писати безпосередньо на машинному коді.

Як мислити як програміст

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

Комп'ютери виконують одну інструкцію за раз. Унаслідок цього вирішення проблем у програмуванні вимагає від вас зосередження над розбиттям більших проблем на поступові кроки. Потім їх можна перевести у кодові інструкції у програмі.

Нерідко це вимагає часу на навчання. У реальних ситуаціях звичним є нехтування докладною послідовністю кроків вирішення певної проблеми. Наприклад, ви, ймовірно, розглядали б завдання "піти в магазин" як один або два кроки.

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

Навіть досвідченим розробникам легко пропустити якісь кроки при плануванні програми через те, наскільки інакше ми мислимо в повсякденному житті.

Отже, як розробники планують свої програми? Далі ми розглянемо два методи, якими користуються розробники на всіх рівнях, щоб спланувати свої програмні рішення (ніхто давно вже не користується цими методами, але вони украй корисні для початківців – прим. пер.).

Золоте правило – DRYЗолоте правило всіх програмістів – "Don't Repeat Yourself" – "не повторюйся”. Це означає, що слід намагатися мінімізувати кількість коду чи логіки, яку ви повторюєте у своїх програмах.Чимало практик у програмуванні спрямовані на допомогу розробникам у цьому, як, наприклад, умови та повторення, що розглянемо нижче.

Псевдокод

Псевдокод – це різновид опису програми, що окреслює кроки програми за допомогою простих, не кодових понять. Його називають псевдокодом, тому що він схожий на код, але не зовсім є ним. Кожен рядок у псевдокоді позначає крок, і його можна записати за допомогою комбінації слів і символів.

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

Псевдокодне планування дає змогу:

  • Бачити, який крок має бути перед і після якого

  • Перевірити, що проблема буде вирішена в кінці послідовності кроків

  • Поділитися планом з іншими програмістами, незалежно від того, які мови програмування вони знають

  • Планувати кроки, які вам потрібні, але ви ще не знаєте, як їх закодувати

СинтаксисСинтаксис у програмуванні – це набір правил та доступних команд, унікальний для мови програмування. Коли мова програмування - це як звичайна мова, то синтаксис - це поєднання граматики та словника цієї мови.

Як писати псевдокод

Стиль псевдокоду кожного програміста - неповторний. Частина програмістів полюбляє писати напівкод, включаючи увесь синтаксис, котрий знають по пам'яті. Інші віддають перевагу повністю безкодовому підходу і просто описують кроки простою мовою.

Незалежно від того, як ви пишете псевдокод, ось кілька кращих практик, які варто мати на увазі:

  1. Писати лише одну дію чи крок на рядок

  2. Писати всі кроки в тому порядку, в якому вони повинні виконуватися

  3. Записувати всі кроки, що необхідні для вирішення проблеми

Повернімося до нашої програми з порівняння кіл та напишімо псевдокод для знаходження довжини кожного кола:

Дано:

  Коло1 радіус = 5

  Коло2 радіус = 10

Обчислити довжина Коло1

Обчислити довжина Коло2

Відповідь: Довжина Коло1 і Коло2

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

Тепер можемо перевірити, чи виконує наш псевдокод усі вимоги, перш ніж переходити до наступного кроку:

1. Так, він включає лише одну дію на кожному кроці

2. Так, усі кроки стоять в правильному порядку

3. Так, проблема вирішена, і немає упущених кроків

Наша "несправжня" програма – готова до кодування!

Блоксхеми

Блоксхеми - іще один інструмент планування, що вживається програмістами на всіх рівнях. Програмісти використовують блоксхеми для візуального представлення програми. Як і псевдокод, блоксхеми містять кроки програми та показують, як вони пов'язані одне з одним.

Блоксхеми – дієві для представлення функцій програми іншим, розуміння шляху, яким різні вихідні дані пройдуть через код, та пошуку помилок.

Нижче – посібник з фігур, котрі програмісти використовують для представлення різних типів кроків:

Тепер погляньмо на те, як ці фігури можна використати для представлення псевдокоду з попереднього розділу:

Приклад блоксхеми для програми довжин кіл

Умови – як додати реактивність

Тепер ми перейдемо до одного зі складніших елементів програм – умови.

Досі ми говорили про програми, що завжди виконують одні й ті ж кроки, незалежно від ситуації. Наприклад, наша програма довжини кіл завжди виконує одні й ті ж кроки, навіть коли змінити вихідні дані.

Але що, якщо ввести квадрат? Тепер наша програма повинна вирішити, чи є фігура колом, чи ні.

Статичні програми добре служать як приклади, але реактивні програми нерідко повинні вирішувати, які кроки виконувати, залежно від ситуації.

Таке прийняття рішень досягається за допомогою умовних тверджень, серед яких if (якщо), while (поки) та else (інакше), що перевіряють певні умови. Ці твердження використовуються майже в усіх мовах програмування. Вони є основою реактивних програм.

Умовні твердження, серед яких if, дають програмістам змогу створювати одну реактивну програму, що виконує різні кроки залежно від ситуації.

Наприклад, на псевдокоді це "якщо фігура НЕ коло, не обчислювати довжина". Умовні твердження – ключ до чистих, стислих та корисних рішень.

Порада для початківцівЩоб легше виявляти точки розгалуження, спробуйте проговорити свою програму вголос. Потім запишіть кожну точку, де ви чуєте в себе "якщо" (if) або "поки" (while).

Твердження if

Найпоширеніше умовне твердження – твердження if (якщо). Це твердження спершу перевіряє задану умову. Якщо ця умова - істинна, то інструкції всередині твердження виконуються. Якщо твердження не є істинним, то інструкції всередині твердження пропускаються.

Твердження if нерідко використовуються в повсякденному житті. Наприклад, я можу прийняти рішення про те, що якщо надворі сонячно, то я піду на вулицю. Умова, яку я перевіряю, – чи є погода "сонячною".

Якщо ця умова - істинна, я виконую крок "піти на вулицю". Якщо умова не є істинною, я не вдаюся до жодних дій і залишаюся вдома.

Нижче видно, як можна використати умовні твердження для довершення псевдокоду та блоксхем, показаних вище.

Дано:

  Коло1 радіус = 5

  Коло2 радіус = 10

Обчислити довжина Коло1

Обчислити довжина Коло2

якщо: довжина Коло1 > довжина Circle2

  Відповідь: Коло1

якщо: довжина Коло2 > довжина Коло1

  Відповідь: Коло2

Вище додано рядки 8-12, чиє призначення – вирішувати, назву якого кола вивести. На рядку 8 програма перевіряє, чи має Коло1 більшу довжину за Коло2. Якщо це так, то програма виконує крок "Відповідь: Коло1".

Якщо це не так, то програма переходить до наступного твердження if на рядку 11, що перевіряє, чи має Коло2 більшу довжину за Коло1. Якщо це так, то програма виводить назву Коло2 інструкцією на рядку 12.

Ось та сама програма у вигляді блоксхеми:

Програма довжин кіл з умовами

Повторення – як спрощувати програми

Іще один поширений різновид складнішої логіки в програмуванні – повторення. Чимало програм повинні повторювати один крок над різними об'єктами. Щоб це робити, швидше та простіше записати таку логіку раз і налаштувати програму на виконання цього кроку кілька разів, аніж писати його копії.

Програмісти досягають цього за допомогою циклів. Кожний цикл має кінцеву умову та набір інструкцій.

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

Етапи виконання циклу

Програмісти використовують цикли для зменшення повторюваності коду. Також вони переорієнтовують код на досягнення цілей, як, наприклад, зміна умови, а не на те, як ми досягаємо цієї мети. Досвідчені програмісти завжди шукають повторюваний код, який можна спростити за допомогою циклів.

Порада для початківцівЛегкий спосіб віднайти у своїй програмі зациклені частини – описати процес вголос і прослухати, чи звучить словословосполучення "поки не". Будь-яку фразу з "поки не" можна переоформити у цикл while, а потім реалізувати у коді.Приклад: "Поки не виконані всі кроки" → "Поки всі кроки залишаються невиконаними"

Цикли while

Найпоширеніший цикл – цикл while. Кінцева умова в циклі while – це момент, коли вказана умова стає неістинною.

Масштабовність – це головна перевага використання циклів while. Вона позначає те, наскільки легко ваш код можна адаптувати до обробки більшого обсягу вихідних даних. Інші цикли вимагають від програміста задання кількості ітерацій.

Якщо для певного набору даних необхідно більше ітерацій, програміст повинен вручну змінити те, скільки ітерацій виконується. Цикл while вирішує цю проблему, працюючи, поки не виконана умова, а не протягом заданого числа ітерацій.

Наприклад, щоб створити цикл while для прибирання, моя умова була б "поки: кухня брудна". Якщо ця умова істинна, мій цикл виконує інструкцію "прибрати частину кухні". Умова стане хибною, як тільки кухня буде повністю прибрана, і цикл буде завершено.

Повернімось до нашого прикладу псевдокоду вище і додаймо цикл для його спрощення:

Дано:

  Коло1 радіус = 5

  Коло2 радіус = 10

Поки: хоча б одна довжина кола невідома

  Обчислити довжину наступного кола

якщо: довжина Коло1 > довжина Коло2

  Відповідь: Коло1

якщо: довжина Коло2 > довжина Коло1

  Відповідь: Коло2

Вище ми вдосконалили два обчислення довжини кола, щоб замість цього був цикл while на рядку 5. Метою цієї частини є обчислення довжини кожного кола, поки не будуть знайдені всі довжини. Якщо ми перевернемо цю логіку, то зможемо сказати, що хочемо продовжувати обчислювати довжину кожного кола "поки не відома хоча б одна довжина кола".

Програма спершу перевірить, чи є невідомою довжина якого-небудь кола, на рядку 5. Якщо це так, і є хоча б одна невідома довжина, програма ввійде у цикл. Потім вона виконає інструкцію всередині циклу на рядку 6, щоб знайти довжину наступного кола, Коло1.

Потім цикл перевірить умову знову та з'ясує, що іще є невідома довжина кола. Тоді програма знову ввійде у цикл і обчислить довжину Коло2.

При третій перевірці програма не знайде жодної невідомої довжини кола. Далі вона пропустить цикл та перейде до наших умовних тверджень нижче.

Ось та сама програма, але представлена блоксхемою, а не псевдокодом:

Програма довжин кіл з умовами та повторенням
Увага: масштабовністьНаше рішення тут є масштабовним, що означає, що воно може вирішити нашу проблему незалежно від того, скільки кіл введено на початку. Масштабовність – якнайкраща практика в програмуванні, адже вона дає змогу вашій програмі вживатися в багатьох ситуаціях, не потребуючи змін.

Що вивчати далі

Щойно ви зробили перші кроки в захопливому світі програмування! Новоотримані знання про комп'ютери та програмування будуть надзвичайно корисними, коли ви продовжите свій шлях.

Тепер можна детальніше розглянути теми, які були розглянуті сьогодні, наприклад:

  • Синтаксис і семантику

  • Змінні

  • Складніші комп'ютерні концепції

  • Повний життєвий цикл програми

  • Розв'язання популярних проблем програмування

Якщо ви готові зануритися в онлайн-курс, курси Educative для цілковитих початківців – це ідеальне місце для початку. Доступні на шести мовах програмування, ці курси допоможуть зрозуміти логіку програмування та почати писати код. Розпочніть свій шлях сьогодні!

Щасливого навчання!

(Я не рекламую Educative, а лишень роблю текст якнайближчим до оригіналу – прим. пер..)

Цей допис – переклад статті на Educative.io з серії "Посібник цілковитого початківця" від Раяна Теліна, від 11 вересня 2020 року. Сподіваюся, він допоможе комусь з освоєнням базових понять.Якщо буде інтерес – перекладу іще щось з серії, або й сам напишу за потреби.
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Віталій Перегончук
Віталій Перегончук@negativo_ua

1.2KПрочитань
5Автори
19Читачі
На Друкарні з 15 квітня

Більше від автора

Вам також сподобається

Коментарі (4)

Ваш довгочит дуже цікавий! 🤩

В неділю його буде опубліковано в Twitter та на Facebook Друкарні.

🔸https://www.facebook.com/drukarniaua

🔸https://twitter.com/drukarniaua

Вітаємо!

Вам також сподобається