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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

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

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

Історія[ред. | ред. код]

Сучасне програмування[ред. | ред. код]

Критерії якості[ред. | ред. код]

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

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

Рівні програмування[ред. | ред. код]

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

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