Працэдурнае праграмаванне

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі.

Працэду́рнае праграмава́нне — парадыгма праграмавання, аснаваная на канцэпцыі выкліку працэдуры. Працэдуры, таксама вядомыя як падпраграмы, метады ці функцыі (нельга іх блытаць з матэматычнымі функцыямі, аднак падобныя на тыя, што выкарыстоўваюцца ў функцыянальным праграмаванні) проста змяшчаюць крокі вылічэння, якія трэба выканаць. Любую дадзеную працэдуру можна выклікаць з любога месца ў праграме, у тым ліку з іншых працэдур ці з кода самой гэтай працэдуры.

Працэдурнае праграмаванне — гэта часта лепшы выбар, чым простае неструктурнае праграмаванне у шматлікіх сітуацыях, якія ацэньваюцца як сітуацыі сярэдняй складнасці ці ў якіх патрэбныя прастата і магчымасць падтрымкі Мажлівыя выгады:

  • Магчымасць паўторна выкарыстоўваць тай самы род у розных месцах праграмы без неабходнасці яго капіяваць.
  • Больш просты спосаб кантраляваць выкананне праграмы, чым набор GOTO і JUMP. (Якія могуць ператварыць вялікую, складаную праграму у так званы «код-спагецці».)
  • Магчымасць быць моцна модульным ці структурным.

Зьмест

[рэдагаваць] Працэдуры і модульнасць

Асабліва ў вялікіх, складаных праграмах модульнасць — гэта часта патрэбная мажлівасць. Яе можна рэалізаваць, выкарыстоўваючы працэдуры з строга устаноўленымі каналамі ўвода/вываду, і, звычайна, з яснымі правіламі пра тое, якія тыпы ўводу дазволеныя ці чаканыя. Увод, як правіла, указваецца сінтаксічна ў форме аргументаў і вывад вяртаецца як вяртаемае значэнне.

Вобласці бачання — яшчэ адзін спосаб захаваць зменныя строга модульнымі. Яна заключаецца ў тым, што працэдура не можа мець доступ да зменных іншых працэдур (і наадварот), у тым ліку папярэдніх вызаваў той самай працэдуры, без яўнага ўказання гэтага. Гэта не дазваляе пераблытаць зменныя з адным іменем, выкарыстаныя ў розных месцах, таму працэдуры не заўважаюць выканання адна адной.

Меней модульныя працэдуры, часта ў маленькіх і хутка напісаных праграмах часта выкарыстоўваюць вялікую колькасць зменных акружэння, якія таксама могуць змяніць іншыя праграмы. Тое, што шмат зменных выкарыстоўваюцца як пункт кантакту паміж рознымі часткамі праграмы, робіць яе менш модульнай.

Дзякуючы мажлівасці ўказаць просты інтэрфейс, быць незалежнымі і выкарыстоўвацца паўторна, працэдуры — зручны спосаб стварэння коду, які могуць пісаць розныя людзі і групы людзей, у тым ліку бібліятэкі.

[рэдагаваць] Параўнанне з імператыўным праграмаваннем

Большасць ці ўсе ўжываныя працэдурныя мовы праграмавання з'яўляюцца таксама імператыўнымі мовамі, бо яны робяць яўныя ссылкі на стан акружэння. Яны могуць быць чым заўгодна, ад зменных (якія могуць суадносіцца з рэгістрам працэсара) да нечага накшталт пазіцыі «чарапахі» ў мове праграмавання Logo (якая таксама можа быць чым заўгодна, ад курсора на экране да сапраўднай прылады, які рухаецца па падлозе пакою).

Частка форм імператыўнага праграмавання, такія як аб'ектна-арыентаванае праграмаванне, не абавязкова працэдурныя.

[рэдагаваць] Параўнанне з аб'ектна-арыентаваным праграмаваннем

Болей паслядоўныя формы модульнасці мажлівыя з аб'ектна-арыентаваным праграмаваннем, якое было створана пазней. Замест выкарыстання працэдур, увода і вываду, ААП выкарыстоўвае аб'екты Пры вылічэннях выкарыстоўваюцца унутраныя працэдура аб'екта (ці працэдуры, якія ён атрымаў ад аб'ектаў-продкаў).

Звычайна працэдурныя праграмы болей эфектыўныя пры вылічэннях, бо трэба меней часу для ўпраўлення абстракцыямі і структурамі дадзеных, так як яны бліжэй да апаратнага забеспячэння, якое іх выконвае. Сапраўды, шмат аперацыйных сістэм і CPU створана з падтрымкай спецыфічных механізмаў вызаву працэдур.

[рэдагаваць] Працэдурныя мовы праграмавання

Працэдурныя мовы праграмавання садзейнічаюць жаданню праграміста выкарыстоўваць працэдурнае праграмаванне. Кананічны прыклад працэдурнага праграмавання — мова Algol. Сярод іншых — Fortran, PL/I, Modula-2 і Ada. Заўважце, што гэты спіс змяшчае не толькі выключна працэдурныя мовы, як, напрыклад, Java, якая была створана спецыяльна для аб'ектна-арыентаванага праграмавання.

  • Ada — шматмэтавая мова
  • BASIC — у ім мала модульнасці, асабліва да версій 1990-х гадоў
  • C
  • C++ — C з аб'ектамі і шмат чым яшчэ
  • C# — створаны Microsoft, частка .NET, якая ставіцца ў працідзею Java
  • ColdFusion
  • COBOL
  • Component Pascal — варыянт мовы Oberon-2
  • D
  • Delphi
  • ECMAScript a.k.a. JavaScript, JScript
  • Fortran — большая модульнасць у апошніх стандартах
  • FPC Pascal — дыялект мовы Pascal
  • Java
  • Modula-2 — фундаментальна аснаваная на модулях
  • Oberon і Oberon-2 — палепшаны, меншы, хутчэйшы паслядоўнік мовы Modula-2
  • M — болей модульная ў сваёй першай версіі, чым мова таго часу мела быць; стандарт стаў з таго часу яшчэ больш модульным
  • Pascal — паслядоўнік Algol60, база для Modula-2
  • Perl
  • PL/C
  • PL/1 — вялікая агульнамэтавая мова, арыгінальна для майнфрэймаў IBM
  • Rapira
  • VBScript
  • Visual Basic