Програмування

процес проєктування, написання, тестування, зневадження і підтримки комп'ютерних програм

Програмування — процес проектування, написання, тестування, зневадження і підтримки комп'ютерних програм. Програмування поєднує в собі елементи інженерії (існує навіть відповідна спеціальна галузь інженерії — програмна інженерія, англ. software engineering), фундаментальних наук (перш за все математики) і мистецтва[1].

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

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

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

Теоретичною основою програмування є галузь компьютерних наук (Computer Science), яка включає в себе такі напрямки як компьютерна архітектура, операційні системи, алгоритми, бази даних, компьютерні мережі, штучний інтелект та деякі інші.

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

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

ІсторіяРедагувати

Сучасне програмуванняРедагувати

Критерії якостіРедагувати

Яким би не був підхід до створення програмного забезпечення, кінцева програма має задовольняти деяким вимогам. Найчастіше зустрічаються[джерело не вказане 3839 днів]:

  • Ефективність/Продуктивність: кількість ресурсів системи, що споживає програма (час процесора, розмір пам'яті, зовнішня пам'ять, ширина каналу мережі, і навіть взаємодії з користувачем). Чим менше ресурсів споживається, тим краще;
  • Надійність: ймовірність того, що результат роботи програми правильний. Це залежить від коректності алгоритмів та правильності кодування;
  • Стійкість: як програма розв'язує проблеми в нестандартних ситуаціях, як наприклад неправильні дані, недоступність необхідних ресурсів як наприклад пам'ять, локальна мережа, та неправильні дії користувача;
  • Зручність: ергономічність програми. Легкість, з якою особа може використовувати програму для своїх цілей;
  • Переносимість: діапазон апаратного забезпечення та операційних систем на яких можна компілювати чи інтерпретувати код програми, виконуючи її. Це залежить від відмінностей в програмних ресурсах наданих різними платформами, включаючи ресурси, наявність компіляторів та бібліотек для мови програмування;
  • Масштабованість: Простота подальшого супроводження програми, тобто внесення в неї додаткових вдосконалень, що збільшують функціональність чи виправляють помилки. Цей критерій не має прямого відношення до користувача, але впливає на час, протягом якого програма буде використовуватись.
  • Естетичність: Вигляд програми на екрані з точки зору підбору кольорів, форм, розмірів графічних елементів і контролів, гармонійності їх взаємного розташування, якість малюнків, вибір шрифтів тексту, а також доречність звукових сигналів і мелодій, рухів вібродвигуна.
  • Етичність: Ступінь спрямованості на задоволення справжніх потреб людей, реалізацію кращих і законних бажань користувачів і розробників.

Рівні програмуванняРедагувати

Успішне програмування передбачає виконання необхідних дій на таких рівнях[джерело?]:

  • Економічний (бізнес-логіка): Формування вимог до програмного продукту з урахуванням привабливості для користувачів, прибутковості для розробника і наявних можливостей розробника. Побудова загального уявлення про функціональність, спрямованість і призначення програмного продукту;
  • Структурний (архітектура): Створення переліку і взаємозв'язків потрібних модулів, графічних і звукових елементів, алгоритмів, баз даних, файлів, вибір мови програмування. Результатом цього кроку є повне, детальне і однозначне уявлення про функціонування майбутнього програмного продукту, включно з усіма графічними елементами, подіями і їх обробниками, станами і режимами роботи програми, сценаріями використання ("use cases") і протоколами обміну, а також послідовність дій програміста, яка призводить до реалізації задуманого продукту;
  • Детальний/Фізичний (кодування): Реалізація окремих функцій з використанням конструкцій, операторів і бібліотек мови програмування, формування образів екранів в графічних дизайнерах, друкування тексту програми на клавіатурі.

Для кожного програмного проекту наведену послідовність дій можна виконувати декілька разів, що призводить до «ітеративного покращення» програмного продукту.

СуперкомпіляціяРедагувати

Суперкомпіляція — метод аналізу й перетворення програм на основі наступних дій:[2][3]

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

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

  •   за умов  ;
  •   отримується з   шляхом вилучення непотрібних фрагментів в результаті накладання умов  .

Мова програмуванняРедагувати

Це система позначень яку використовує програміст для опису програми.

Теорія програмуванняРедагувати

Пов'язана з вивченням програмування в загальному контексті інформатики як наукової дисципліни.

Див. такожРедагувати

Спортивне (олімпіадне) програмуванняРедагувати

ПриміткиРедагувати

  1. Graham, Paul. Knuth: Computer Programming as an Art. Процитовано 11 травня 2017. 
  2. Анд. В. Климов, С.А.Романенко - Суперкомпиляция: основные принципы и базовые понятия. 
  3. И. Г. Ключников - Суперкомпиляция функций высших порядков. 

ПосиланняРедагувати

ЛітератураРедагувати

  • Зубенко В. В. Програмування: навчальний посібник (гриф МОН України) / В. В. Зубенко, Л. Л. Омельчук. — К. : ВПЦ «Київський університет», 2011. — 623 c.
  • Логічне і функціональне програмування: навч. посіб. / В. М. Заяць, М. М. Заяць ; Нац. ун-т «Львів. політехніка». — Львів ; Кам'янець-Подільський: Гордукова І. Є., 2016. — 398 с. : рис.
  • Нікітченко М. С. Теоретичні основи програмування: навчальний посібник / М.С Нікітченко — Ніжин: Видавництво НДУ імені Миколи Гоголя, 2010. — 121 с.
  • Основи програмування: навч. посіб. / Л. І. Козак, І. В. Костюк, С. Л. Стасевич. — Львів: Новий Світ — 2000, 2019. — 326 с.
  • Програмування веб-застосувань (фронт-енд та бек-енд): навч. посіб. / Р. А. Мельник ; Нац. ун-т «Львів. політехніка». — Львів: Вид-во Львів. політехніки, 2018. — 247 с. : рис., табл.