Програмування
Цикл розробки програмного забезпечення |
---|
![]() Програміст за роботою |
Діяльність і кроки |
Допоміжні дисципліни |
Практики |
Інструменти |
Стандарти та галузі знань |
Програмування — процес проєктування, написання, тестування, зневадження і підтримки комп'ютерних програм. Програмування поєднує в собі елементи інженерії (існує навіть відповідна спеціальна галузь інженерії — програмна інженерія, англ. software engineering), фундаментальних наук (перш за все комп'ютерних наук і математики) і мистецтва[1].
У вужчому значенні програмування розглядається як кодування — реалізація у вигляді програми одного чи кількох взаємопов'язаних алгоритмів (у сучасних умовах це здійснюється з застосуванням мов програмування). У ширшому розумінні процес програмування охоплює і створення, тобто розроблення, алгоритмів, і аналіз потреб майбутніх користувачів програмного забезпечення. Результатом програмування зазвичай є програма або програмний продукт.
Технологія програмування постійно розвивається, що призводить до появи нових мов програмування, інструментів розроблення і сфер застосування. Також підвищується потужність готових компонентів, доступних для використання програмістами. Тому важливою ознакою програмування є регулярне опанування нових технологій.
У широкому значенні програмування означає також створення програми дій або алгоритмів та навчання людей або пристроїв діяти за алгоритмами.
Історія[ред. | ред. код]
Сучасне програмування[ред. | ред. код]
Критерії якості[ред. | ред. код]
Яким би не був підхід до створення програмного забезпечення, кінцева програма має задовольняти деяким вимогам. Найчастіше зустрічаються[джерело не вказане 4148 днів]:
- Ефективність/Продуктивність: кількість ресурсів системи, що споживає програма (час процесора, розмір пам'яті, зовнішня пам'ять, ширина каналу мережі, і навіть взаємодії з користувачем). Чим менше ресурсів споживається, тим краще;
- Надійність: ймовірність того, що результат роботи програми правильний. Це залежить від коректності алгоритмів та правильності кодування;
- Стійкість: як програма розв'язує проблеми в нестандартних ситуаціях, як-от неправильні дані, недоступність необхідних ресурсів, таких як пам'ять чи локальна мережа, та неправильні дії користувача;
- Зручність: ергономічність програми. Легкість, з якою особа може використовувати програму для своїх цілей;
- Платформонезалежність: діапазон апаратного забезпечення та операційних систем на яких можна компілювати чи інтерпретувати код програми, виконуючи її. Це залежить від відмінностей в програмних ресурсах наданих різними платформами, включаючи ресурси, наявність компіляторів та бібліотек для мови програмування;
- Масштабованість: Простота подальшого супроводження програми, тобто внесення в неї додаткових вдосконалень, що збільшують функціональність чи виправляють помилки. Цей критерій не стосується користувача безпосередньо, але впливає на час, протягом якого програма буде використовуватись.
- Естетичність: Вигляд програми на екрані з погляду підбору кольорів, форм, розмірів графічних елементів і контролів, гармонійності їх взаємного розташування, якість малюнків, вибір шрифтів тексту, а також доречність звукових сигналів і мелодій, рухів вібродвигуна.
- Етичність: Ступінь спрямованості на задоволення справжніх потреб людей, реалізацію кращих і законних бажань користувачів і розробників.
Рівні програмування[ред. | ред. код]
Успішне програмування передбачає виконання необхідних дій на таких рівнях[джерело?]:
- Економічний (бізнес-логіка): Формування вимог до програмного продукту з урахуванням привабливості для користувачів, прибутковості для розробника і наявних можливостей розробника. Побудова загального уявлення про функціональність, спрямованість і призначення програмного продукту;
- Структурний (архітектура): Створення переліку і взаємозв'язків потрібних модулів, графічних і звукових елементів, алгоритмів, баз даних, файлів, вибір мови програмування. Результатом цього кроку є повне, детальне й однозначне уявлення про функціонування майбутнього програмного продукту, включно з усіма графічними елементами, подіями і їх обробниками, станами й режимами роботи програми, сценаріями використання ("use cases") і протоколами обміну, а також послідовність дій програміста, яка призводить до реалізації задуманого продукту;
- Детальний/Фізичний (кодування): Реалізація окремих функцій з використанням конструкцій, операторів і бібліотек мови програмування, формування образів екранів в графічних дизайнерах, друкування тексту програми на клавіатурі.
Для кожного програмного проєкту наведену послідовність дій можна виконувати декілька разів, що призводить до «ітеративного покращення» програмного продукту.
Суперкомпіляція[ред. | ред. код]
Суперкомпіляція — метод аналізу й перетворення програм на основі наступних дій:[2][3]
- Робиться спроба «виконати» програму не для конкретних вхідних даних, а «символічно» у «загальному» вигляді, тобто для довільних вхідних даних. Для цього будується «дерево процесів».
- Якщо початкова програма містить цикли та/або рекурсію, то дерево процесів є нескінченним. У цьому випадку робиться спроба згорнути нескінченне дерево у скінченний «граф конфігурацій». Для цього конфігурації порівнюються між собою.
- Побудований скінченний граф конфігурацій перетворюється в «залишкову» програму.
Спеціалізація програм. Нехай — програма, — обмеження на умови експлуатації . Тоді на вхід спеціалізатора подається , а задача спеціалізатора — породити залишкову програму яка повинна задовільняти наступним умовам
- за умов ;
- отримується з шляхом вилучення непотрібних фрагментів в результаті накладання умов .
Мова програмування[ред. | ред. код]
Це система позначень яку використовує програміст для опису програми.
Теорія програмування[ред. | ред. код]
Пов'язана з вивченням програмування в загальному контексті інформатики як наукової дисципліни.
Див. також[ред. | ред. код]
![]() |
Вікіцитати містять висловлювання на тему: Програмування |
![]() |
Вікісховище має мультимедійні дані за темою: Програмування |
- Нейролінгвістичне програмування
- Мова програмування
- Логіка в інформатиці
- Композиційне програмування
- Мова моделювання
- Людино-машинна взаємодія
- Інтерфейс користувача
Спортивне (олімпіадне) програмування[ред. | ред. код]
Примітки[ред. | ред. код]
- ↑ Graham, Paul. Knuth: Computer Programming as an Art. Процитовано 11 травня 2017.
- ↑ Анд. В. Климов, С.А.Романенко - Суперкомпиляция: основные принципы и базовые понятия.
- ↑ И. Г. Ключников - Суперкомпиляция функций высших порядков.
Посилання[ред. | ред. код]
Література[ред. | ред. код]
- Зубенко В. В. Програмування: навчальний посібник (гриф МОН України) / В. В. Зубенко, Л. Л. Омельчук. — К. : ВПЦ «Київський університет», 2011. — 623 c.
- Логічне і функціональне програмування: навч. посіб. / В. М. Заяць, М. М. Заяць ; Нац. ун-т «Львів. політехніка». — Львів ; Кам'янець-Подільський: Гордукова І. Є., 2016. — 398 с. : рис.
- Нікітченко М. С. Теоретичні основи програмування: навчальний посібник / М.С Нікітченко — Ніжин: Видавництво НДУ імені Миколи Гоголя, 2010. — 121 с.
- Основи програмування: навч. посіб. / Л. І. Козак, І. В. Костюк, С. Л. Стасевич. — Львів: Новий Світ — 2000, 2019. — 326 с.
- Програмування веб-застосувань (фронт-енд та бек-енд): навч. посіб. / Р. А. Мельник ; Нац. ун-т «Львів. політехніка». — Львів: Вид-во Львів. політехніки, 2018. — 247 с. : рис., табл.
![]() |
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |
|