Програмування: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Виправлено орфографічну помилку: "комп'ютерів", а не "компьютерів".
Мітки: Скасовано перше редагування Редагування з мобільного пристрою Редагування через мобільну версію
Скасовано останні 3 редагування і відновлено версію 31407409 користувача 46.211.1.199: Процес програмування не охоплює винайдення способів застосування комп'ютерів в життєдіяльності людей. А логіка, яка має стосунок до програмування, є підгалуззю математики.
Мітка: Ручний відкіт
Рядок 1: Рядок 1:
{{ТРПЗ}}
{{ТРПЗ}}
'''Програмування'''&nbsp;— процес проектування, написання, тестування, [[зневадження]] і підтримки комп'ютерних [[Програма|програм]]. Програмування поєднує в собі елементи [[інженерія|інженерії]] (існує навіть відповідна спеціальна галузь інженерії&nbsp;— [[програмна інженерія]], {{lang-en|software engineering}}), фундаментальних [[наука|наук]] (перш за все [[математика|математики]]), логіки і [[мистецтво|мистецтва]]<ref>{{Cite web| last = Graham| first = Paul| title = Knuth: Computer Programming as an Art| accessdate = 2017-05-11| url = http://www.paulgraham.com/knuth.html}}</ref>.
'''Програмування'''&nbsp;— процес проектування, написання, тестування, [[зневадження]] і підтримки комп'ютерних [[Програма|програм]]. Програмування поєднує в собі елементи [[інженерія|інженерії]] (існує навіть відповідна спеціальна галузь інженерії&nbsp;— [[програмна інженерія]], {{lang-en|software engineering}}), фундаментальних [[наука|наук]] (перш за все [[математика|математики]]) і [[мистецтво|мистецтва]]<ref>{{Cite web| last = Graham| first = Paul| title = Knuth: Computer Programming as an Art| accessdate = 2017-05-11| url = http://www.paulgraham.com/knuth.html}}</ref>.


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


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

Версія за 11:20, 25 серпня 2021

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

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

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

Історія

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Див. також

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

Примітки

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

Посилання

Література

  • Зубенко В. В. Програмування: навчальний посібник (гриф МОН України) / В. В. Зубенко, Л. Л. Омельчук. — К. : ВПЦ «Київський університет», 2011. — 623 c.
  • Нікітченко М. С. Теоретичні основи програмування: навчальний посібник / М.С Нікітченко — Ніжин: Видавництво НДУ імені Миколи Гоголя, 2010. — 121с.
  • Лавров С. С. Програмирование. Математические основи, средства, теория / С. С. Лавров. — СПб. : БХВ-Петербург,2001. — 251с.
  • Непейвода Н. Н. Основания програмирования: учеб. пособие / Н. Н. Непейвода, И. Н. Скопин. — Ижевск, 2003.