Ne kunfondu kun "programaro" aŭ "softvaro" (en: *software*)

La **komputila programo** estas kolekto da komandoj kiuj priskribas taskon, aŭ taskaron, plenumotan de komputilo.

La termino *komputila programo* povas signifi fontkodon, verkitan en iu programlingvo, aŭ plenumeblan formon de tiu kodo. La komputilo "tradukas" la fontan kodon en la multe pli detalan plenumeblan kodon (tio estas, kutime *celkodo*) per speciala programo nomata kiel *kompililo*; tiu tradukada procezo mem nomiĝas kiel *kompilado*. Komputilaj programoj divideblas en du kategorioj, nome *aplika programaro* (*aplikaĵo*), *sistema programaro*, la tuto estas simple **programo**.

La fonta kodo de la plejparto da komputilaj programoj konsistas el listo de komandoj kiu eksplicite tekstigas algoritmon (kio nomiĝas imperativa programado); en alia stilo (kiu nomiĝas deklarativa programado) la karakterizaĵoj de la dezirata informo estas klarigitaj, kaj la metodon atingi tiajn rezultojn, se la afero sukcesas, trovos mem la plenumanta maŝino.

Komputilajn programojn ofte verkas homoj nomataj kiel programisto, sed ilin ankaŭ povas generi la aliaj programoj.

Terminologio
------------

Komercaj programoj por klientoj-uzantoj ordinare nomiĝas aplika programaro (aŭ aplikaĵo) en la komputika industrio, ĉar tiuj programoj sin fokusas sur la kapabloj por kiuj oni uzas la komputilon, kontraste al tiuj de sistema programaro (ekzemple la Vindoza mastruma sistemo).

En ĝenerala diskuto inter komputilo-programistoj la ĉirkaŭteksto estas senescepte sufiĉa por distingi kiu el la du eblaj signifoj de la termino estas intencita.

Programa plenumado
------------------

Hodiaŭa komputila programo estas ŝargita en la memoron (kutime far la operaciumo), interpretata kaj tiam plenumata komandon post komando ĝis "programa finigo", ĉu kun sukceso, ĉu kun eraro aŭ programara, aŭ aparatara.

Primitivaj komputiloj plenumis komandojn koditajn diversmaniere, ekzemple per trukartoj.

Antaŭ komputilo povas plenumi ian ajn programon (inkluzive la operaciumon, aŭ mastruman sistemon kiu mem ankaŭ estas programo), necesas la komputilan aparataron pravalorigi. Ĉi tio estas farita per peco de programaro storita sur programebla memor-blatoj instalitaj de la fabrikinto, nomataj BIOS. La BIOS provos pravalorigi la startigan sekvencon pretigante la komputilon por diverso de malpli baza programa plenumado.

Programoj kaj datumoj
---------------------

La plenumebla kodo de programo (tio estas, kutime *celkodo*) estas ofte traktata malsame de la datumoj super kiuj ĝi operacias. En iuj kazoj tiu distingo estas malklarigita de programoj kiuj kreas, aŭ modifas datumojn, kiuj siavice plenumatas kiel parto de la sama programo (tio estas ordinaraĵo por programoj skribita en Lisp). Neŭronaj retoj estas alia ekzemplo kie distingo inter kodo kaj datumoj estas ne klare farebla. Vidu ankaŭ en sinmodifanta kodo.

Programado
----------

Programo probable enhavas diversajn datum-strukturojn kaj diversajn algoritmojn kiuj tiujn prilaboras.

Krei komputilan programon estas la ripetada procezo de skribado de nova fonta kodo aŭ modifado de ekzistanta fonta kodo, sekvata per testado, analizado kaj rafinado de tiu kodo. Persono kiu praktikas tiun lerton estas nomata kiel komputilo-programisto, aŭ komputisto aŭ programaro-verkanto. La iam longdaŭra procezo de komputila programado nuntempe nomiĝas "programara evoluigo" aŭ programado. Tiu lasta fariĝas pli populara pro la plimaturiĝo de la disciplino. (vidu debaton pri tio kio estas programara inĝeniero)

Du aliaj formoj de hodiaŭaj labormanieroj estas teama programado kie ĉiu membro de la grupo havas egalan dirivon en la evoluiga procezo krom unu persono kiu gvidas la grupon tra malkongruaĵoj. Ĉi tiuj grupoj emas esti el ĉirkaŭ 10 homoj por teni la grupon estreblan. La dua formo nomiĝas "samtavolana programado" aŭ para programado.

Vidu en procezo kaj metodaro por la aliaj aspektoj de hodiaŭa komputila programado.

Vidu ankaŭ
----------

* Plenumebla dosiero
* Maŝino de Turing
* Programlingvo
* Programaro
* Programisto, komputisto
* Fonta kodo, celkodo
* Ega programado
* Operaciumo
* Programada scienca paradigmo
* Firmvaro / Aparatadaptilo
* Poliglota programo
* Rultempo
* Uzata memoro
* Komputa komplikeco
* Komputilsimulado
* Troja ĉevalo (komputiko)

Bibliografio
------------

* Miles J. Murdocca & Vincent P. Heuring (2000). *Principles of Computer Architecture* ~Principoj, de Komputila Arkitekturo. Prentice-Koridoro, Inc. ISBN 0-201-43664-7
* *Principoj de Komputila Arkitekturo* Arkivigite je 2006-08-10 per la retarkivo Wayback Machine – ARCTools virtuala komputilo havebla por elŝuti por plenumi (fontindikita, referencita)n kodon, alirdato 24-a de aŭgusto, 2005
* J. Glenn Brookshear (1989). *Teorio de Kalkulado, Formalaj Lingvoj, Aŭtomatoj, kaj Komplekseco*. La Benjamen/Cummings Publikiganta Co. Inc. ISBN 0-8053-0143-7

Eksteraj ligiloj
----------------

* Kategorio Komputila programo en la Vikimedia Komunejo (Multrimedaj datumoj)

* Difino de programo je Webopedia
* Difino de komputila programo je Agtivity Arkivigite je 2013-06-14 per la retarkivo Wayback Machine
* Difino de programaro je FOLDOC Arkivigite je 2005-09-07 per la retarkivo Wayback Machine