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

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

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

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

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

Історія

Докладніше: Історія мов програмування

Сучасне програмування

Критерії якості

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

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

Рівні програмування

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

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

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

Суперкомпіляція

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

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

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

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

Мова програмування

Див. також: Мови програмування

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

Теорія програмування

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

Див. також

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

  • Google Code Jam
  • TopCoder
  • Facebook Hacker Cup
  • Міжнародна олімпіада з інформатики

вікіпедія, вікі, енциклопедія, книга, бібліотека, стаття, читати, безкоштовне завантаження, Інформація про Програмування, Що таке Програмування? Що означає Програмування?