Programa informático
Un programa informático o programa de computadora es
una secuencia de instrucciones u órdenes basadas en un lenguaje
de programación que una computadora interpreta para resolver
un problema o una función específica.1 2 Este dispositivo requiere
programas para funcionar, por lo general, ejecutando las
instrucciones del programa en un procesador central.3
El programa tiene un formato ejecutable que la computadora
puede utilizar directamente para ejecutar las instrucciones. El
mismo programa en su formato de código fuente legible para
humanos, del cual se derivan los programas ejecutables (por
ejemplo, compilados), le permite a un programador estudiar y
Un programa informático escrito en
desarrollar sus algoritmos. Una colección de programas de
un estilo orientado a objetos
computadora y datos relacionados se conoce como software.
Generalmente, el código fuente lo escriben profesionales
conocidos como programadores de computadora.4 Este código se escribe en un lenguaje de
programación que sigue uno de los siguientes dos paradigmas: imperativo o declarativo, y que
posteriormente puede ser convertido en un archivo ejecutable (usualmente llamado un programa
ejecutable o un binario) por un compilador y más tarde ejecutado por una unidad central de
procesamiento. Por otra parte, los programas de computadora se pueden ejecutar con la ayuda de un
intérprete, o pueden ser empotrados directamente en hardware.
De acuerdo a sus funciones, los programas informáticos se clasifican en software de sistema y
software de aplicación. En las computadoras modernas, al hecho de ejecutar varios programas de
forma simultánea y eficiente, se lo conoce como multitarea.
Programación
La programación de computadoras es
el proceso iterativo de escribir o editar
código fuente. Dicha edición implica #include <stdio.h>
#include <conio.h>
probar, analizar y perfeccionar, y, a
int main(void) {
veces, coordinar con otros printf("Hola Mundo!\n");
programadores, en el caso de un getch();
return 0;
programa desarrollado en conjunto. }
Una persona que practica esta técnica
se le conoce como programador de
computadoras, desarrollador de Código fuente del programa Hola mundo escrito en el Lenguaje
software, o codificador. El proceso, a de programación C
veces a largo plazo, de programación
de computadoras normalmente se lo
conoce como desarrollo de software.
public class HelloWorld {
El término ingeniería de software se public static void main(String[] args){
está convirtiendo en muy popular, ya [Link]("Hola Mundo!");
}
que esta actividad es vista como una }
disciplina de ingeniería.
Código fuente del programa Hola mundo escrito en el Lenguaje
Paradigmas de programación Java
Los programas de ordenador se
pueden clasificar según el paradigma
del lenguaje de programación
using System;
utilizado para producirlos. Dos de los
class Program {
principales paradigmas son static void Main(string[] args) {
imperativos y declarativos. [Link]("Hola Mundo!");
}
}
Los programas escritos con un
lenguaje imperativo especifican un
Código fuente del programa Hola mundo escrito en el Lenguaje
algoritmo utilizando declaraciones,
de programación C#
expresiones e informes.5 Una
declaración asocia un nombre de
variable a un tipo de datos. Por ejemplo: var x: integer; . Una expresión produce un valor. Por
ejemplo: 2 + 2 produce 4. Por último, una declaración puede asignar una expresión a una variable o
usar el valor de una variable para alterar las estructuras de control del programa. Por ejemplo: x := 2
+ 2; if x = 4 then hacer_algo(); Una crítica de los lenguajes imperativos es el efecto
secundario de una sentencia de asignación en una clase de variables llamadas variables no locales.6
Los programas escritos en un lenguaje declarativo especifican las propiedades que tienen o que deben
cumplirse para la salida. No especifican detalles expresados en términos de flujo de control de la
máquina de ejecución pero sí de las relaciones matemáticas entre los objetos declarados y sus
propiedades. Los lenguajes funcionales y lógicos son dos amplias categorías de lenguajes declarativos.
El principio detrás de los lenguajes funcionales (como Haskell) es el de no permitir efectos
secundarios, lo que hace que sea más fácil para razonar sobre los programas como si se tratasen de
funciones matemáticas.6 El principio detrás de los lenguajes lógicos (como Prolog) es definir el
problema a ser resuelto - la meta - y dejar la solución detallada al propio sistema Prolog.7 El objetivo
se define proporcionando la lista de sub-objetivos. Luego, cada subobjetivo se define más arriba,
proporcionando la lista de sus sub-objetivos, etc. Si la ruta de sub-objetivos no encuentra una
solución, entonces ese subobjetivo se retrocede y otra vía se intenta sistemáticamente.
La forma en que se crea el programa puede ser textual o visual. En un programa de lenguaje visual, los
elementos en vez de ser textualmente especificados son manipulados gráficamente.
Compilado o interpretando
Un programa de computadora bajo la forma de lenguaje de programación de computadoras legible
por un humano, se lo llama código fuente. Dicho código fuente se puede convertir en una imagen
ejecutable por un compilador o ejecutarse inmediatamente con la ayuda de un intérprete.
Cualquiera de los programas compilados o interpretados pueden ser ejecutados en un proceso por
lotes sin intervención humana, pero los programas interpretados le permiten al usuario escribir
comandos en una sesión interactiva. En este caso, los programas son los comandos separados, cuya
ejecución se produce secuencialmente, y por lo tanto simultáneamente. Cuando se utiliza un lenguaje
para dar órdenes a una aplicación de software (como un shell de Unix u otra interfaz de línea de
comandos), se le llama un lenguaje de scripts.
Los compiladores se utilizan para traducir el código fuente de un lenguaje de programación, ya sea en
código objeto o código máquina.8 El código objeto de objeto necesita procesamiento adicional para
convertirse en código máquina, y el código máquina es el código nativo de la unidad central de
procesamiento, listo para su ejecución. Los programas de computadora compilados se conocen
comúnmente como ejecutables, imágenes binarias, o simplemente como binarios —una referencia al
formato de archivo binario utilizado para almacenar el código ejecutable—.
Los programas de computadora —interpretados en un lote o una sesión interactiva— o bien se
descodifican y luego ejecutados inmediatamente o se decodifican en alguna representación intermedia
eficiente para la ejecución futura. BASIC, Perl y Python son ejemplos de programas de computadora
ejecutados inmediatamente. Por otra parte, los programas de computadora de Java se compilan antes
de tiempo y se almacena como un código independiente de la máquina llamado bytecode. Entonces,
dicho bytecode es ejecutado a petición de un intérprete llamado máquina virtual.
La principal desventaja de los intérpretes es que los programas de computadora corren más lento que
cuando son compilados. La interpretación de código resulta más lenta que la ejecución de la versión
compilada porque el intérprete debe decodificar cada declaración cada vez que se carga y luego
realizar la acción deseada. Sin embargo, el desarrollo de software puede ser más rápido usando un
intérprete porque la prueba es inmediata cuando se omite el paso de la compilación. Otra desventaja
de los intérpretes es que debe estar presente al menos uno en la computadora durante la ejecución del
programa de computadora. Por el contrario, los programas de computadora compilados no necesitan
compilador presente durante la ejecución.
No se requieren propiedades de un lenguaje de programación si se está compilado exclusivamente o
interpretándose exclusivamente. Por lo general, la clasificación refleja el método más popular de
ejecución del lenguaje. Por ejemplo, BASIC se considera un lenguaje interpretado y C un lenguaje
compilado, a pesar de la existencia de compiladores de BASIC e intérpretes de C. Algunos sistemas
utilizan compilación en tiempo de ejecución (JIT) mediante la cual las secciones de la fuente se
compilan 'sobre la marcha' y se almacenan para ejecuciones posteriores.
Programas que se automodifican
Un programa informático en ejecución, normalmente es tratado como algo diferente de los datos con
los cuales opera. Sin embargo, en algunos casos esta distinción es ambigua, especialmente cuando un
programa se modifica a sí mismo. El programa modificado es ejecutado secuencialmente como parte
del mismo programa. En el caso de programas escritos en código máquina, lenguaje ensamblador,
Lisp, d, COlOL, PL/9 y Prolog y JavaScript (la función eval), entre otros, es posible tener código que se
automodifica.
Ejecución y almacenamiento de los programas
Típicamente, los programas se almacenan en una memoria no volátil (por ejemplo un disco), para que
luego el usuario de la computadora, directa o indirectamente, solicite su ejecución. Al momento de
dicha solicitud, el programa es cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el
control del software llamado sistema operativo, el cual puede acceder directamente al procesador. El
procesador ejecuta (corre) el programa, instrucción por instrucción hasta que termina. A un programa
en ejecución se le suele llamar también proceso. Un programa puede terminar su ejecución en forma
normal o por causa de un error, dicho error puede ser de software o de hardware.
Programas empotrados en hardware
Algunos programas están empotrados en el hardware. Una
computadora con arquitectura de programas almacenados
requiere un programa inicial almacenado en su ROM para
arrancar. El proceso de arranque es para identificar e inicializar
todos los aspectos del sistema, desde los registros del
procesador, controladores de dispositivos hasta el contenido de
la memoria RAM.9 Seguido del proceso de inicialización, este
programa inicial carga al sistema operativo e inicializa al
contador de programa para empezar las operaciones normales.
El microcontrolador a la derecha de la
Independiente de la computadora, un dispositivo de hardware
Memoria USB está controlada por un
podría tener firmware empotrado para el control de sus
firmware empotrado
operaciones. El firmware se utiliza cuando se espera que el
programa cambie en raras ocasiones o nunca, o cuando el
programa no debe perderse cuando haya ausencia de energía.10
Programas cargados manualmente
Históricamente, los programas eran cargados al procesador central de forma manual mediante
interruptores. Una instrucción se representaba por una configuración de estados de interruptores de
abierto o cerrados. Después de establecer la configuración, se ejecutaba un botón de ejecución. Este
proceso era repetitivo. Asimismo, los programas se cargaban
manualmente mediante una cinta de papel o tarjetas perforadas.
Después de que se cargaba el programa, se establecía la dirección
de inicio mediante interruptores y se presionaba el botón de
ejecución.11
Programas generados automáticamente
La programación automática es un estilo de programación que Interruptores para la carga manual en
crea código fuente mediante clases genéricas, prototipos, una Data General Nova 3
plantillas, aspectos, y generadores de código para aumentar la
productividad del programador. El código fuente se genera con herramientas de programación tal
como un procesador de plantilla o un IDE. La forma más simple de un generador de código fuente es
un procesador macro, tal como el preprocesador de C, que reemplaza patrones de código fuente de
acuerdo a reglas relativamente simples.
Un motor de software da de salida código fuente o lenguaje de marcado que simultáneamente se
vuelve la entrada de otro proceso informático. Podemos pensar como analogía un proceso manejando
a otro siendo el código máquina quemado como combustible. Los servidores de aplicaciones son
motores de software que entregan aplicaciones a computadoras cliente. Por ejemplo, un software para
wikis es un servidor de aplicaciones que permite a los usuarios desarrollar contenido dinámico
ensamblado a partir de artículos. Las wikis generan HTML, CSS, Java, y Javascript los cuales son
interpretados por un navegador web.
Ejecución simultánea
Véanse también: Proceso (informática) y Multiprocesamiento.
Muchos programas pueden ejecutarse simultáneamente en la misma computadora, hecho al cual se lo
conoce como multitarea, pudiéndose lograr mediante mecanismos de software o de hardware. Los
sistemas operativos modernos pueden ejecutar varios programas a través del planificador de procesos
— un mecanismo de software para conmutar con frecuencia la cantidad de procesos del procesador de
modo que los usuarios puedan interactuar con cada programa mientras estos están corriendo.12
También se puede lograr la multitarea por medio del hardware; las computadoras modernas que usan
varios procesadores o procesadores con varios núcleos pueden correr muchos programas a la vez.13
Categorías funcionales
Los programas se pueden categorizar aplicando criterios funcionales. Estas categorías funcionales son
software de sistema y software de aplicación. El software de sistema incluye al sistema operativo el
cual acopla el hardware con el software de aplicación.14 El propósito del sistema operativo es proveer
un ambiente en el cual el software de aplicación se ejecuta de una manera conveniente y eficiente.14
Además del sistema operativo, el software de sistema incluye programas utilitarios que ayudan a
manejar y configurar la computadora. Si un programa no es software de sistema entonces es software
de aplicación. El middleware también es un software de aplicación que acopla el software de sistema
con la interfaz de usuario. También son software de aplicación los programas utilitarios que ayudan a
los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.
Véase también
Algoritmo para la relación entre los programas informáticos y algoritmos
Aplicación informática
Virus informático
Estructura de datos
Inteligencia artificial
Sistema multi-agente
Referencias
7. Wilson, Leslie B. (1993). Comparative
1. [Link]
Programming Languages, Second Edition (htt
(Español) ps://[Link]/details/comparativeprogr0000
2. Stair, Ralph M., et al. (2003). Principles of wils) (en inglés). Addison-Wesley. pp. 244 (htt
Information Systems, Sixth Edition ([Link] ps://[Link]/details/comparativeprogr0000
[Link]/details/principlesofinfo0000stai_u1z2) wils/page/244). ISBN 0-201-56885-3.
(en inglés). Thomson Learning, Inc. p. 132 (htt 8. «What is a Compiler?» ([Link]
ps://[Link]/details/principlesofinfo0000sta cse5317/notes/[Link]) (en inglés).
i_u1z2/page/132). ISBN 0-619-06489-7. Consultado el 10 de enero de 2012.
3. Silberschatz, Abraham (1994). Operating 9. Silberschatz, Abraham (1994). Operating
System Concepts, Fourth Edition (en inglés). System Concepts, Fourth Edition (en inglés).
Addison-Wesley. p. 58. ISBN 0-201-50480-4. Addison-Wesley. p. 30. ISBN 0-201-50480-4.
4. «Algorithms and Computer Programming» (htt 10. Tanenbaum, Andrew S. (1990). Structured
ps://[Link]/web/20180808210054/htt Computer Organization, Third Edition.
p://[Link]/~davisjan/csc/105/201 Prentice Hall. p. 11. ISBN 0-13-854662-2. (en
2S/readings/[Link]) (en inglés). inglés).
Archivado desde el original ([Link]
[Link]/~davisjan/csc/105/2012S/readings/pr 11. Silberschatz, Abraham (1994). Operating
[Link]) el 8 de agosto de 2018. System Concepts, Fourth Edition (en inglés).
Consultado el 8 de setiembre de 2014. Addison-Wesley. p. 6. ISBN 0-201-50480-4.
5. Wilson, Leslie B. (1993). Comparative 12. Silberschatz, Abraham (1994). Operating
Programming Languages, Second Edition (htt System Concepts, Fourth Edition (en inglés).
ps://[Link]/details/comparativeprogr0000 Addison-Wesley. p. 100. ISBN 0-201-50480-4.
wils) (en inglés). Addison-Wesley. pp. 75 (http 13. Akhter, Shameem (2006). Multi-Core
s://[Link]/details/comparativeprogr0000w Programming ([Link]
ils/page/75). ISBN 0-201-56885-3. oreprogram0000akht_v9s4) (en inglés).
6. Wilson, Leslie B. (1993). Comparative Richard Bowles (Intel Press). pp. 11 ([Link]
Programming Languages, Second Edition (htt [Link]/details/multicoreprogram0000akht_v
ps://[Link]/details/comparativeprogr0000 9s4/page/11)-13. ISBN 0-9764832-4-6..
wils) (en inglés). Addison-Wesley. pp. 213 (htt 14. Silberschatz, Abraham (1994). Operating
ps://[Link]/details/comparativeprogr0000 System Concepts, Fourth Edition (en inglés).
wils/page/213). ISBN 0-201-56885-3. Addison-Wesley. p. 1. ISBN 0-201-50480-4.
Bibliografía
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 1, 3rd Edition (en inglés).
Boston: Addison-Wesley. ISBN 0-201-89683-4.
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 2, 3rd Edition (en inglés).
Boston: Addison-Wesley. ISBN 0-201-89684-2.
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 3, 3rd Edition (en inglés).
Boston: Addison-Wesley. ISBN 0-201-89685-0.
Enlaces externos
Definición de "Programa" ([Link] en Webopedia (en
inglés)
Definición de "Computer Program" ([Link]
[Link]/browse/computer%20program) en [Link] (en inglés)
Esta obra contiene una traducción total derivada de «Computer program» de Wikipedia en
inglés, concretamente de esta versión ([Link]
4757519), publicada por sus editores ([Link]
tory) bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons Atribución-
CompartirIgual 4.0 Internacional ([Link]
Obtenido de «[Link]