Програмування — процес проєктування, написання, тестування, зневадження і підтримки комп'ютерних програм. Програмування поєднує в собі елементи інженерії (існує навіть відповідна спеціальна галузь інженерії — програмна інженерія, англ. software engineering), фундаментальних наук (перш за все комп'ютерних наук і математики) і мистецтва.
У вужчому значенні програмування розглядається як кодування — реалізація у вигляді програми одного чи кількох взаємопов'язаних алгоритмів (у сучасних умовах це здійснюється з застосуванням мов програмування). У ширшому розумінні процес програмування охоплює і створення, тобто розроблення, алгоритмів, і аналіз потреб майбутніх користувачів програмного забезпечення. Результатом програмування зазвичай є програма або програмний продукт.
Технологія програмування постійно розвивається, що призводить до появи нових мов програмування, інструментів розроблення і сфер застосування. Також підвищується потужність готових компонентів, доступних для використання програмістами. Тому важливою ознакою програмування є регулярне опанування нових технологій.
У широкому значенні програмування означає також створення програми дій або алгоритмів та навчання людей або пристроїв діяти за алгоритмами.
Історія
Сучасне програмування
Критерії якості
Яким би не був підхід до створення програмного забезпечення, кінцева програма має задовольняти деяким вимогам. Найчастіше зустрічаються:
- Ефективність/Продуктивність: кількість ресурсів системи, що споживає програма (час процесора, розмір пам'яті, зовнішня пам'ять, ширина каналу мережі, і навіть взаємодії з користувачем). Чим менше ресурсів споживається, тим краще;
- Надійність: ймовірність того, що результат роботи програми правильний. Це залежить від коректності алгоритмів та правильності кодування;
- Стійкість: як програма розв'язує проблеми в нестандартних ситуаціях, як-от неправильні дані, недоступність необхідних ресурсів, таких як пам'ять чи локальна мережа, та неправильні дії користувача;
- Зручність: ергономічність програми. Легкість, з якою особа може використовувати програму для своїх цілей;
- Платформонезалежність: діапазон апаратного забезпечення та операційних систем на яких можна компілювати чи інтерпретувати код програми, виконуючи її. Це залежить від відмінностей в програмних ресурсах наданих різними платформами, включаючи ресурси, наявність компіляторів та бібліотек для мови програмування;
- Масштабованість: Простота подальшого супроводження програми, тобто внесення в неї додаткових вдосконалень, що збільшують функціональність чи виправляють помилки. Цей критерій не стосується користувача безпосередньо, але впливає на час, протягом якого програма буде використовуватись.
- Естетичність: Вигляд програми на екрані з погляду підбору кольорів, форм, розмірів графічних елементів і контролів, гармонійності їх взаємного розташування, якість малюнків, вибір шрифтів тексту, а також доречність звукових сигналів і мелодій, рухів вібродвигуна.
- Етичність: Ступінь спрямованості на задоволення справжніх потреб людей, реалізацію кращих і законних бажань користувачів і розробників.
Рівні програмування
Успішне програмування передбачає виконання необхідних дій на таких рівнях[]:
- Економічний (бізнес-логіка): Формування вимог до програмного продукту з урахуванням привабливості для користувачів, прибутковості для розробника і наявних можливостей розробника. Побудова загального уявлення про функціональність, спрямованість і призначення програмного продукту;
- Структурний (архітектура): Створення переліку і взаємозв'язків потрібних модулів, графічних і звукових елементів, алгоритмів, баз даних, файлів, вибір мови програмування. Результатом цього кроку є повне, детальне й однозначне уявлення про функціонування майбутнього програмного продукту, включно з усіма графічними елементами, подіями і їх обробниками, станами й режимами роботи програми, сценаріями використання ("use cases") і протоколами обміну, а також послідовність дій програміста, яка призводить до реалізації задуманого продукту;
- Детальний/Фізичний (кодування): Реалізація окремих функцій з використанням конструкцій, операторів і бібліотек мови програмування, формування образів екранів в графічних дизайнерах, друкування тексту програми на клавіатурі.
Для кожного програмного проєкту наведену послідовність дій можна виконувати декілька разів, що призводить до «ітеративного покращення» програмного продукту.
Суперкомпіляція
Суперкомпіляція — метод аналізу й перетворення програм на основі наступних дій:
- Робиться спроба «виконати» програму не для конкретних вхідних даних, а «символічно» у «загальному» вигляді, тобто для довільних вхідних даних. Для цього будується «дерево процесів».
- Якщо початкова програма містить цикли та/або рекурсію, то дерево процесів є нескінченним. У цьому випадку робиться спроба згорнути нескінченне дерево у скінченний «граф конфігурацій». Для цього конфігурації порівнюються між собою.
- Побудований скінченний граф конфігурацій перетворюється в «залишкову» програму.
Спеціалізація програм. Нехай — програма, — обмеження на умови експлуатації . Тоді на вхід спеціалізатора подається , а задача спеціалізатора — породити залишкову програму яка повинна задовільняти наступним умовам
- за умов ;
- отримується з шляхом вилучення непотрібних фрагментів в результаті накладання умов .
Мова програмування
Це система позначень яку використовує програміст для опису програми.
Теорія програмування
Пов'язана з вивченням програмування в загальному контексті інформатики як наукової дисципліни.
Див. також
Вікіцитати містять висловлювання на тему: Програмування |
Вікісховище має мультимедійні дані за темою: Програмування |
- Нейролінгвістичне програмування
- Мова програмування
- Логіка в інформатиці
- Композиційне програмування
- Мова моделювання
- Людино-машинна взаємодія
- Інтерфейс користувача
Спортивне (олімпіадне) програмування
Примітки
- Graham, Paul. Knuth: Computer Programming as an Art. Процитовано 11 травня 2017.
- Анд. В. Климов, С.А.Романенко - Суперкомпиляция: основные принципы и базовые понятия.
- И. Г. Ключников - Суперкомпиляция функций высших порядков.
Посилання
- Програмування українською
- Форум з програмування
Література
- Зубенко В. В. Програмування: навчальний посібник (гриф МОН України) / В. В. Зубенко, Л. Л. Омельчук. — К. : ВПЦ «Київський університет», 2011. — 623 c.
- Логічне і функціональне програмування: навч. посіб. / В. М. Заяць, М. М. Заяць ; Нац. ун-т «Львів. політехніка». — Львів ; Кам'янець-Подільський: Гордукова І. Є., 2016. — 398 с. : рис.
- Нікітченко М. С. Теоретичні основи програмування: навчальний посібник / М.С Нікітченко — Ніжин: Видавництво НДУ імені Миколи Гоголя, 2010. — 121 с.
- Основи програмування: навч. посіб. / Л. І. Козак, І. В. Костюк, С. Л. Стасевич. — Львів: Новий Світ — 2000, 2019. — 326 с.
- Програмування веб-застосувань (фронт-енд та бек-енд): навч. посіб. / Р. А. Мельник ; Нац. ун-т «Львів. політехніка». — Львів: Вид-во Львів. політехніки, 2018. — 247 с. : рис., табл.
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Programuvannya proces proyektuvannya napisannya testuvannya znevadzhennya i pidtrimki komp yuternih program Programuvannya poyednuye v sobi elementi inzheneriyi isnuye navit vidpovidna specialna galuz inzheneriyi programna inzheneriya angl software engineering fundamentalnih nauk persh za vse komp yuternih nauk i matematiki i mistectva U vuzhchomu znachenni programuvannya rozglyadayetsya yak koduvannya realizaciya u viglyadi programi odnogo chi kilkoh vzayemopov yazanih algoritmiv u suchasnih umovah ce zdijsnyuyetsya z zastosuvannyam mov programuvannya U shirshomu rozuminni proces programuvannya ohoplyuye i stvorennya tobto rozroblennya algoritmiv i analiz potreb majbutnih koristuvachiv programnogo zabezpechennya Rezultatom programuvannya zazvichaj ye programa abo programnij produkt Tehnologiya programuvannya postijno rozvivayetsya sho prizvodit do poyavi novih mov programuvannya instrumentiv rozroblennya i sfer zastosuvannya Takozh pidvishuyetsya potuzhnist gotovih komponentiv dostupnih dlya vikoristannya programistami Tomu vazhlivoyu oznakoyu programuvannya ye regulyarne opanuvannya novih tehnologij U shirokomu znachenni programuvannya oznachaye takozh stvorennya programi dij abo algoritmiv ta navchannya lyudej abo pristroyiv diyati za algoritmami IstoriyaDokladnishe Istoriya mov programuvannyaSuchasne programuvannyaKriteriyi yakosti Yakim bi ne buv pidhid do stvorennya programnogo zabezpechennya kinceva programa maye zadovolnyati deyakim vimogam Najchastishe zustrichayutsya dzherelo ne vkazane 4372 dni Efektivnist Produktivnist kilkist resursiv sistemi sho spozhivaye programa chas procesora rozmir pam yati zovnishnya pam yat shirina kanalu merezhi i navit vzayemodiyi z koristuvachem Chim menshe resursiv spozhivayetsya tim krashe Nadijnist jmovirnist togo sho rezultat roboti programi pravilnij Ce zalezhit vid korektnosti algoritmiv ta pravilnosti koduvannya Stijkist yak programa rozv yazuye problemi v nestandartnih situaciyah yak ot nepravilni dani nedostupnist neobhidnih resursiv takih yak pam yat chi lokalna merezha ta nepravilni diyi koristuvacha Zruchnist ergonomichnist programi Legkist z yakoyu osoba mozhe vikoristovuvati programu dlya svoyih cilej Platformonezalezhnist diapazon aparatnogo zabezpechennya ta operacijnih sistem na yakih mozhna kompilyuvati chi interpretuvati kod programi vikonuyuchi yiyi Ce zalezhit vid vidminnostej v programnih resursah nadanih riznimi platformami vklyuchayuchi resursi nayavnist kompilyatoriv ta bibliotek dlya movi programuvannya Masshtabovanist Prostota podalshogo suprovodzhennya programi tobto vnesennya v neyi dodatkovih vdoskonalen sho zbilshuyut funkcionalnist chi vipravlyayut pomilki Cej kriterij ne stosuyetsya koristuvacha bezposeredno ale vplivaye na chas protyagom yakogo programa bude vikoristovuvatis Estetichnist Viglyad programi na ekrani z poglyadu pidboru koloriv form rozmiriv grafichnih elementiv i kontroliv garmonijnosti yih vzayemnogo roztashuvannya yakist malyunkiv vibir shriftiv tekstu a takozh dorechnist zvukovih signaliv i melodij ruhiv vibrodviguna Etichnist Stupin spryamovanosti na zadovolennya spravzhnih potreb lyudej realizaciyu krashih i zakonnih bazhan koristuvachiv i rozrobnikiv Rivni programuvannya Uspishne programuvannya peredbachaye vikonannya neobhidnih dij na takih rivnyah dzherelo Ekonomichnij biznes logika Formuvannya vimog do programnogo produktu z urahuvannyam privablivosti dlya koristuvachiv pributkovosti dlya rozrobnika i nayavnih mozhlivostej rozrobnika Pobudova zagalnogo uyavlennya pro funkcionalnist spryamovanist i priznachennya programnogo produktu Strukturnij arhitektura Stvorennya pereliku i vzayemozv yazkiv potribnih moduliv grafichnih i zvukovih elementiv algoritmiv baz danih fajliv vibir movi programuvannya Rezultatom cogo kroku ye povne detalne j odnoznachne uyavlennya pro funkcionuvannya majbutnogo programnogo produktu vklyuchno z usima grafichnimi elementami podiyami i yih obrobnikami stanami j rezhimami roboti programi scenariyami vikoristannya use cases i protokolami obminu a takozh poslidovnist dij programista yaka prizvodit do realizaciyi zadumanogo produktu Detalnij Fizichnij koduvannya Realizaciya okremih funkcij z vikoristannyam konstrukcij operatoriv i bibliotek movi programuvannya formuvannya obraziv ekraniv v grafichnih dizajnerah drukuvannya tekstu programi na klaviaturi Dlya kozhnogo programnogo proyektu navedenu poslidovnist dij mozhna vikonuvati dekilka raziv sho prizvodit do iterativnogo pokrashennya programnogo produktu Superkompilyaciya Syudi perenapravlyayetsya zapit Superkompilyaciya Na cyu temu potribna okrema stattya Superkompilyaciya metod analizu j peretvorennya program na osnovi nastupnih dij Robitsya sproba vikonati programu ne dlya konkretnih vhidnih danih a simvolichno u zagalnomu viglyadi tobto dlya dovilnih vhidnih danih Dlya cogo buduyetsya derevo procesiv Yaksho pochatkova programa mistit cikli ta abo rekursiyu to derevo procesiv ye neskinchennim U comu vipadku robitsya sproba zgornuti neskinchenne derevo u skinchennij graf konfiguracij Dlya cogo konfiguraciyi porivnyuyutsya mizh soboyu Pobudovanij skinchennij graf konfiguracij peretvoryuyetsya v zalishkovu programu Specializaciya program Nehaj P displaystyle Pi programa C displaystyle C obmezhennya na umovi ekspluataciyi P displaystyle Pi Todi na vhid specializatora podayetsya P C displaystyle Pi C a zadacha specializatora poroditi zalishkovu programu P displaystyle Pi yaka povinna zadovilnyati nastupnim umovam P P displaystyle Pi sim Pi za umov C displaystyle C P displaystyle Pi otrimuyetsya z P displaystyle Pi shlyahom viluchennya nepotribnih fragmentiv v rezultati nakladannya umov C displaystyle C Mova programuvannyaDiv takozh Movi programuvannya Ce sistema poznachen yaku vikoristovuye programist dlya opisu programi Teoriya programuvannyaPov yazana z vivchennyam programuvannya v zagalnomu konteksti informatiki yak naukovoyi disciplini Div takozhVikicitati mistyat vislovlyuvannya na temu ProgramuvannyaVikishovishe maye multimedijni dani za temoyu ProgramuvannyaNejrolingvistichne programuvannya Mova programuvannya Logika v informatici Kompozicijne programuvannya Mova modelyuvannya Lyudino mashinna vzayemodiya Interfejs koristuvachaSportivne olimpiadne programuvannya Google Code Jam TopCoder Facebook Hacker Cup Mizhnarodna olimpiada z informatikiPrimitkiGraham Paul Knuth Computer Programming as an Art Procitovano 11 travnya 2017 And V Klimov S A Romanenko Superkompilyaciya osnovnye principy i bazovye ponyatiya I G Klyuchnikov Superkompilyaciya funkcij vysshih poryadkov PosilannyaProgramuvannya ukrayinskoyu Forum z programuvannyaLiteraturaZubenko V V Programuvannya navchalnij posibnik grif MON Ukrayini V V Zubenko L L Omelchuk K VPC Kiyivskij universitet 2011 623 c Logichne i funkcionalne programuvannya navch posib V M Zayac M M Zayac Nac un t Lviv politehnika Lviv Kam yanec Podilskij Gordukova I Ye 2016 398 s ris Nikitchenko M S Teoretichni osnovi programuvannya navchalnij posibnik M S Nikitchenko Nizhin Vidavnictvo NDU imeni Mikoli Gogolya 2010 121 s Osnovi programuvannya navch posib L I Kozak I V Kostyuk S L Stasevich Lviv Novij Svit 2000 2019 326 s Programuvannya veb zastosuvan front end ta bek end navch posib R A Melnik Nac un t Lviv politehnika Lviv Vid vo Lviv politehniki 2018 247 s ris tabl Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi