Diferencia entre revisiones de «Programa informático»

Contenido eliminado Contenido añadido
Sin resumen de edición
m Revertidos los cambios de 186.28.108.40 (disc.) a la última edición de Cratón
Línea 1:
{{otros usos|Programa}}
Un '''programa''', o también llamado '''programa informático''', '''programa de computación''' o '''programa de ordenador''', es simplemente un conjunto de instrucciones para una [[computadora]].<ref name="pis-ch4-p132">{{cita libro
| apellidos = Stair
| nombre = Ralph M., et al
| título = Principles of Information Systems, Sixth Edition
| editorial = Thomson Learning, Inc.
| fecha = 2003
| páginas = 132
| id = ISBN 0-619-06489-7
}} (en inglés).</ref> Las computadoras necesitan de los programas para funcionar, y un programa no hace nada a menos que sus instrucciones sean ejecutadas por el [[microprocesador|procesador]].<ref name="osc-ch3-p58">{{cita libro
| apellidos = Silberschatz
| nombre = Abraham
| título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
| páginas = 58
| id = ISBN 0-201-50480-4
}} (en inglés).</ref> Un programa se puede referir tanto a un '''programa ejecutable''' como a su [[código fuente]], el cual es [[Proceso de traducción de programas|transformado]] en un ejecutable cuando es [[compilador|compilado]].
 
Generalmente el código fuente de los programas es escrito por profesionales conocidos como [[programador]]es. El código fuente es escrito en un lenguaje de programación que sigue uno de los siguientes dos paradigmas: imperativo o declarativo. El código fuente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta el programa instrucción por instrucción, hasta que el programa termina.
Línea 20 ⟶ 22:
De acuerdo a sus funciones, los programas pueden ser clasificados en [[software de sistema]] y [[aplicación informática|software de aplicación]]. Pueden ejecutarse muchos programas de forma simultánea en un mismo ordenador, a lo cual se le llama '''multitarea'''.
 
== Programación ==
 
{{AP|Programación}}
 
[[Archivo:CodeCmmt002.svg|thumb|230px|right|Código fuente de un programa escrito en el [[lenguaje de programación Java]]]]
La [[programación]] es un proceso el cual consiste en escribir o editar el código fuente. Editar el código fuente significa poner a prueba, analizar y redefinir. La persona que tiene la habilidad para programar se le llama [[programador]] o desarrollador de software. Usualmente, al gran proceso de programación se le llama '''desarrollo de software'''. El término '''ingeniería de software''' se está volviendo popular, refiriéndose a la ingeniería como disciplina.
 
=== Paradigmas en los lenguajes de programación ===
 
Los programas se pueden clasificar por el [[Paradigma de programación|paradigma]] del [[lenguaje de programación]] que se usa para producirlos. Los principales paradigmas son imperativos y declarativos.
 
Los programas que usan un lenguaje imperativo especifican un [[algoritmo]], usan declaraciones, expresiones y sentencias.<ref name="cpl-ch4-75">{{cita libro
| apellidos = Wilson
| nombre = Leslie B.
| título = Comparative Programming Languages, Second Edition
| editorial = Addison-Wesley
| fecha = 1993
| páginas = 75
| id = ISBN 0-201-56885-3
}} (en inglés).</ref> Una declaración asocia un nombre de variable con un tipo de dato, por ejemplo: <code> var x: integer; </code>. Una expresión contiene un valor, por ejemplo: <code> 2 + 2 </code> contiene el valor 4. Finalmente, una sentencia debe asignar una expresión a una variable o usar el valor de una variable para alterar el flujo de un programa. Por ejemplo: <code>x := 2 + 2; if x == 4 then haz_algo();</code>. Una crítica común en los lenguajes imperativos es el efecto de las sentencias de asignación sobre una clase de variables llamadas "no locales".<ref name="cpl-ch9-213">{{cita libro
| apellidos = Wilson
| nombre = Leslie B.
| título = Comparative Programming Languages, Second Edition0Edition
| editorial = Addison-Wesley
| fecha = 1993
| páginas = 213
| id = ISBN 0-201-56885-3
}} (en inglés).</ref>
 
Los programas que usan un lenguaje declarativo especifican las propiedades que la salida debe conocer y no especifica cualquier detalle de implementación. Dos amplias categorías de lenguajes declarativos son los '''lenguajes funcionales''' y los '''lenguajes lógicos'''. Los lenguajes funcionales (como [[Haskell]]) no permiten asignaciones de variables no locales, así, se hacen más fácil, por ejemplo, programas como funciones matemáticas.<ref name="cpl-ch9-213">{{cita libro
| apellidos = Wilson
| nombre = Leslie B.
| título = Comparative Programming Languages, Second Edition
| editorial = Addison-Wesley
| fecha = 1993
| páginas = 213
| id = ISBN 0-201-56885-3
}} (en inglés).</ref> El principio detrás de los lenguajes lógicos (como [[Prolog]]) es definir el problema que se quiere resolver (el objetivo) y dejar los detalles de la solución a el sistema de Prolog.<ref name="cpl-ch10-244">{{cita libro
| apellidos = Wilson
| nombre = Leslie B.
| título = Comparative Programming Languages, Second Edition
| editorial = Addison-Wesley
| fecha = 1993
| páginas = 244
| id = ISBN 0-201-56885-3
}} (en inglés).</ref> El objetivo es definido dando una lista de sub-objetivos. Cada sub-objetivo también se define dando una lstalista de sus sub-objetivos, etcétera. Si al tratar de buscar una solución, una ruta de sub-objetivos falla, entonces tal sub-objetivo se descarta y sistemáticamente se prueba otra ruta.
 
La forma en la cual es programa se crea puede ser por medio de texto o de forma visual. En un [[lenguaje de programación visual]], los elementos son manipulados gráficamente en vez de especificarse por medio de texto.
 
=== Compilación o interpretación de lenguajes de programación ===
 
Si un programa está escrito en un lenguaje de programación comprensible para un humano, se le llama [[código fuente]]. El código fuente se puede convertir en un [[archivo ejecutable]] con la ayuda de un [[compilador]] o también puede ser ejecutado de inmediato por medio de un [[Intérprete (informática)|intérprete]].
Línea 92 ⟶ 95:
[[Archivo:DSCN0411.JPG|thumb|230px|left|El [[microcontrolador]] a la derecha de la [[Memoria USB]] está controlada por un [[firmware]] empotrado.]]
Algunos programas están empotrados en el [[hardware]]. Una [[computadora]] con arquitectura de [[arquitectura Eckert-Mauchly|programas almacenados]] requiere un programa inicial almacenado en su [[ROM]] para [[arranque|arrancar]]. El proceso de arranque es para identificar e inicializar todos los aspectos del sistema, desde los [[Registro (hardware)|registros del procesador]], [[controlador de dispositivo|controladores de dispositivos]] hasta el contenido de la [[memoria RAM]].<ref name="osc-ch2-p30">{{cita libro
| apellidos = Silberschatz
| nombre = Abraham
| título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
pginas | páginas = 30
| id = ISBN 0-201-50480-4
}} (en inglés).</ref> Seguido del proceso de inicialización, este programa inicial carga al [[sistema operativo]] e inicializa al [[contador de programa]] para empezar las operaciones normales. Independiente de la computadora, un [[Periférico|dispositivo de hardware]] podría tener [[firmware]] empotrado para el control de sus 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.<ref name="sco-ch1-p11">{{cita libro
| apellidos = Tanenbaum
| nombre = Andrew S.
| título = Structured Computer Organization, Third Edition
| editorial = Prentice Hall
| fecha = 1990
| páginas = 11
| id = ISBN 0-13-854662-2
}} (en inglés).</ref>
 
=== Programas cargados manualmente ===
 
[[Archivo:Dg-nova3.jpg|thumb|230px|right|Interruptores para la carga manual en una [[Data General Nova]] 3]]
Los programas históricamente se cargaron manualmente al procesador central mediante interruptores. Una instrucción era representada por una configuración de estado abierto o cerrado de los interruptores. Después de establecer la configuración, se ejecutaba un botón de ejecución. Este proceso era repetitivo. También, históricamente los programas se cargaban manualmente mediante una [[cinta de papel]] o [[tarjeta perforada|tarjetas perforadas]]. Después de que el programa se cargaba, la dirección de inicio se establecía mediante interruptores y el botón de ejecución se presionaba.<ref name="osc-ch1-p6">{{cita libro
| apellidos = Silberschatz
nmbre | nombre = Abraham
| título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
| páginas = 6
| id = ISBN 0-201-50480-4
}} (en inglés).</ref>
 
pogramas=== Programas generados automáticamente ===
 
La [[programación automática]] es un estilo de [[programación]] que crea [[código fuente]] mediante [[Clase (informática)|clases]] [[programación genérica|genéricas]], [[Programación basada en prototipos|prototipos]], [[plantilla (programación)|plantillas]], [[aspecto (informática)|aspectos]], y [[Generación de código|generadores de código]] para aumentar la productividad del [[programador]]. El código fuente se genera con [[herramienta de programación|herramientas de programación]] tal como un [[procesador de plantilla]] o un [[Entorno de desarrollo integrado|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.
Línea 133 ⟶ 136:
 
Muchos programas pueden correr simultáneamente en la misma computadora, a lo cual se le conoce como [[multitarea]] y puede lograrse a través de mecanismos de software o de hardware. Los sistemas operativos modernos pueden correr varios programas a través del [[planificación|planificador de procesos]] — un mecanismo de software para [[conmutación de contexto|conmutar]] con frecuencia la cantidad de procesos del procesador de modo que los usuarios puedan [[Tiempo compartido (informática)|interactuar]] con cada programa mientras estos están corriendo.<ref name="osc-ch4-100">{{cita libro
| apellidos = Silberschatz
| nombre = Abraham
| título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
| páginas = 100
| id = ISBN 0-201-50480-4
}} (en inglés).</ref> 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.<ref name="mcore">{{cita libro
| apellidos = Akhter
nmbre | nombre = Shameem
| título = Multi-Core Programming
| editorial = Richard Bowles (Intel Press)
| fecha = 2006
pginas | páginas = 11-13
| id = ISBN 0-9764832-4-6
}} (en inglés).</ref>
 
== Categorías funcionales ==
Los programas se pueden categorizar según líneas 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.<ref name="osc-ch1-1">{{cita libro
| apellidos = Silberschatz
| nombre = Abraham
| título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
| páginas = 1
| id = ISBN 0-201-50480-4
}} (en inglés).</ref> 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.<ref name="osc-ch1-1">{{cita libro
| apellidos = Silberschatz
| nombre = Abraham
ítulo | título = Operating System Concepts, Fourth Edition
| editorial = Addison-Wesley
| fecha = 1994
| páginas = 1
| id = ISBN 0-201-50480-4
}}(en inglés).</ref> Además del sistema operativo, el software de sistema incluye [[programa utilitario|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 ==
 
*[[Software]]
Línea 182 ⟶ 185:
<div class="references-small">
*{{cita libro
| apellidos = Knuth
| nombre = Donald E.
| título = The Art of Computer Programming, Volume 1, 3rd Edition
| editorial = Addison-Wesley
| fecha = [[1997]]
| ubicación = Boston
| id = ISBN 0-201-89683-4
}} (en inglés).
*{{cita libro
|apellidos=Knuth
|nombre=Donald E.
|año=[[1997]]
|título=The Art of Computer Programming, Volume 2, 3rd Edition
|ubicación = Boston
|editorial=Addison-Wesley
|id=ISBN 0-201-89684-2
}} (en inglés).
*{{cita libro
|apellidos=Knuth
|nombre=Donald E.
|año=[[1997]]
|título=The Art of Computer Programming, Volume 3, 3rd Edition
|ubicación = Boston
|editorial=Addison-Wesley
|id=ISBN 0-201-89685-0
}} (en inglés).
</div>
 
[[Categoría:Software]]
[[Categoría:Programación]]
[[Categoría:Terminología informática]]
 
[[af:Rekenaarprogram]]
[[ar:برنامج (حاسوب)]]