You are on page 1of 5

Programa informtico 1

Programa informtico
Un programa informtico es un conjunto de instrucciones que una vez ejecutadas realizarn una o varias tareas en
una computadora. Sin programas, estas mquinas no pueden funcionar.[1][2] Al conjunto general de programas, se le
denomina software, que ms genricamente se refiere al equipamiento lgico o soporte lgico de una computadora
digital.
En informtica, se los denomina comnmente binarios, (propio en sistemas Unix, donde debido a la estructura de
este ltimo, los ficheros no necesitan hacer uso de extensiones; posteriormente, los presentaron como ficheros
ejecutables, con extensin .exe, en los sistemas operativos de la familia Windows) debido a que una vez que han
pasado por el proceso de compilacin y han sido creados, las instrucciones que se escribieron en un determinado
lenguaje de programacin, han sido traducidas al nico idioma que la mquina comprende, combinaciones de ceros y
unos llamado cdigo mquina. El mismo trmino, puede referirse tanto a un programa ejecutable, como a su cdigo
fuente, el cual es transformado en un binario una vez que es compilado.
Generalmente el cdigo fuente lo escriben profesionales conocidos como programadores. Este cdigo se escribe en
un lenguaje que sigue uno de los siguientes dos paradigmas: imperativo o declarativo, y que posteriormente puede
ser convertido en una imagen ejecutable a travs de un programa-compilador. Cuando se pide que el programa sea
ejecutado, el procesador ejecuta instruccin por instruccin.
De acuerdo a sus funciones, los programas informticos se clasifican en software de sistema y software de
aplicacin. En los computadores actuales, al hecho de ejecutar varios programas de forma simultnea y eficiente, se
le conoce como multitarea.

Programacin
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
El cdigo fuente de un programa escrito en el lenguaje de programacin C
La programacin de computadoras es el proceso iterativo de escribir o editar cdigo fuente. Dicha edicin de cdigo
fuente implica probar, analizar y perfeccionar, y, a veces, coordinar con otros programadores, en el caso de un
programa desarrollado en conjunto. Una persona que practica esta tcnica se la conoce como programador de
computadoras, desarrollador de software, o codificador. El proceso, a veces a largo plazo, de programacin de
computadoras normalmente se lo conoce como desarrollo de software. El trmino ingeniera de software se est
convirtiendo en muy popular, ya que esta actividad es vista como una disciplina de ingeniera.

Paradigmas
Los programas de ordenador se pueden clasificar segn el paradigma del lenguaje de programacin utilizado para
producirlos. Dos de los principales paradigmas son imperativos y declarativos.
Los programas escritos con un lenguaje imperativo especifican un algoritmo utilizando declaraciones, expresiones e
informes. Una declaracin asocia un nombre de variable a un tipo de datos. Por ejemplo: var x: integer; .
Una expresin produce un valor. Por ejemplo: 2 + 2 produce 4. Por ltimo, una declaracin puede asignar una
expresin 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 crtica de los lenguajes imperativos es el
Programa informtico 2

efecto secundario de una sentencia de asignacin en una clase de variables llamadas variables no locales.
Los programas escritos en un lenguaje declarativo especifican las propiedades que tienen o que deben cumplirse para
la salida. No especifican detalles expresados en trminos de flujo de control de la mquina de ejecucin pero s de las
relaciones matemticas entre los objetos declarados y sus propiedades. Los lenguajes funcionales y lgicos son dos
amplias categoras de lenguajes declarativos. El principio detrs de los lenguajes funcionales (como Haskell) es el de
no permitir efectos secundarios, lo que hace que sea ms fcil para razonar sobre los programas como si se tratasen
de funciones matemticas. El principio detrs de los lenguajes lgicos (como Prolog) es definir el problema a ser
resuelto - la meta - y dejar la solucin detallada al propio sistema Prolog. El objetivo se define proporcionando la
lista de sub-objetivos. Luego, cada subobjetivo se define ms arriba, proporcionando la lista de sus sub-objetivos,
etc. Si la ruta de sub-objetivos no encuentra una solucin, entonces ese subobjetivo se retrocede y otra va se intenta
sistemticamente.
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 grficamente.

Ejecucin
Una vez escritos, pueden ser ejecutados de diversas formas[3]:
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama
interpretar y a los programas que lo hacen se los conoce como intrpretes. Ejemplos de esto son bash, clsico en
estaciones Unix y que fue escrito para el proyecto GNU o Python, cuya peculiaridad adems de ser
multipropsito, est en su facilidad de uso y productividad y de hecho, es usado en parte de los proyectos Google
y YouTube.
Traduciendo el cdigo escrito del programa (lo que se denomina cdigo fuente), a su equivalente en lenguaje
mquina. A este proceso se le llama compilar y al programa traductor se le denomina compilador. Ejemplos de
esto son: El lenguaje C, que combina en su sintaxis caractersticas de medio y bajo nivel y el compilador gcc
usado en el proyecto GNU.

Programas que se auto-modifican


Un programa informtico en ejecucin normalmente es tratado como algo diferente de los datos con los cuales opera.
Sin embargo, en algunos casos sta distincin es ambigua, especialmente cuando un programa se modifica a s
mismo. El programa modificado es secuencialmente ejecutado como parte del mismo programa. El cdigo que se
auto-modifica es posible para programas escritos en cdigo mquina, Lenguaje ensamblador, Lisp, C, COBOL, PL/1
y Prolog y JavaScript (la funcin eval), entre otros.

Ejecucin y almacenamiento de los programas


Tpicamente, los programas se almacenan en una memoria no voltil (por ejemplo un disco), para que luego el
usuario de la computadora, directa o indirectamente, solicite su ejecucin. 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,
instruccin por instruccin hasta que termina. A un programa en ejecucin se le suele llamar tambin proceso. Un
programa puede terminar su ejecucin en forma normal o por causa de un error, dicho error puede ser de software o
de hardware.
Programa informtico 3

Programas empotrados en hardware


Algunos programas estn 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.[4] Seguido del proceso de
inicializacin, este programa inicial carga al sistema
operativo e inicializa al contador de programa para empezar
las operaciones normales. Independiente de la computadora,
un dispositivo de hardware podra tener firmware
El microcontrolador a la derecha de la Memoria USB est empotrado para el control de sus operaciones. El firmware
controlada por un firmware empotrado.
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 energa.[5]

Programas cargados manualmente


Los programas histricamente se cargaron manualmente al
procesador central mediante interruptores. Una instruccin
era representada por una configuracin de estado abierto o
cerrado de los interruptores. Despus de establecer la
configuracin, se ejecutaba un botn de ejecucin. Este
proceso era repetitivo. Tambin, histricamente los
programas se cargaban manualmente mediante una cinta de
papel o tarjetas perforadas. Despus de que el programa se
cargaba, la direccin de inicio se estableca mediante
interruptores y el botn de ejecucin se presionaba.[6]
Interruptores para la carga manual en una Data General Nova 3.

Programas generados automticamente


La programacin automtica es un estilo de programacin que crea cdigo fuente mediante clases genricas,
prototipos, plantillas, aspectos, y generadores de cdigo para aumentar la productividad del programador. El cdigo
fuente se genera con herramientas de programacin tal como un procesador de plantilla o un IDE. La forma ms
simple de un generador de cdigo fuente es un procesador macro, tal como el preprocesador de C, que reemplaza
patrones de cdigo fuente de acuerdo a reglas relativamente simples.
Un motor de software da de salida cdigo fuente o lenguaje de marcado que simultneamente se vuelve la entrada de
otro proceso informtico. Podemos pensar como analoga un proceso manejando a otro siendo el cdigo mquina
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 sevidor de aplicaciones que permite a los usuarios
desarrollar contenido dinmico ensamblado a partir de artculos. Las Wikis generan HTML, CSS, Java, y Javascript
los cuales son interpretados por un navegador web.
Programa informtico 4

Ejecucin simultnea
Muchos programas pueden correr simultneamente en la misma computadora, a lo cual se le conoce como multitarea
y puede lograrse a travs de mecanismos de software o de hardware. Los sistemas operativos modernos pueden
correr varios programas a travs 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 estn corriendo.[7] Tambin se puede lograr la multitarea por medio del hardware; las computadoras
modernas que usan varios procesadores o procesadores con varios ncleos pueden correr muchos programas a la
vez.[8]

Categoras funcionales
Los programas se pueden categorizar segn lneas funcionales. Estas categoras funcionales son software de sistema
y software de aplicacin. El software de sistema incluye al sistema operativo el cual acopla el hardware con el
software de aplicacin.[9] El propsito del sistema operativo es proveer un ambiente en el cual el software de
aplicacin se ejecuta de una manera conveniente y eficiente.[9] Adems 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 aplicacin. El middleware tambin es un software de aplicacin que acopla el
software de sistema con la interfaz de usuario. Tambin son software de aplicacin los programas utilitarios que
ayudan a los usuarios a resolver problemas de aplicaciones, como por ejemplo la necesidad de ordenamiento.

Referencias
[1] (en ingls).
[2] (en ingls).
[3] Q33 NY .
[4] (en ingls).
[5] (en ingls).
[6] (en ingls).
[7] (en ingls).
[8] (en ingls).
[9] (en ingls).

Bibliografa
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 1, 3rd Edition. Boston: Addison-Wesley.
ISBN 0-201-89683-4. (en ingls).
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 2, 3rd Edition. Boston: Addison-Wesley.
ISBN 0-201-89684-2. (en ingls).
Knuth, Donald E. (1997). The Art of Computer Programming, Volume 3, 3rd Edition. Boston: Addison-Wesley.
ISBN 0-201-89685-0. (en ingls).
Fuentes y contribuyentes del artculo 5

Fuentes y contribuyentes del artculo


Programa informtico Fuente: http://es.wikipedia.org/w/index.php?oldid=74022497 Contribuyentes: Amanuense, Amautita12, Angel GN, AnselmiJuan, Axel.axel, Aipni-Lovrij, Bachi 2805,
Baiji, BiTAlejandro, Biasoli, Cinevoro, Cratn, Dangelin5, David0811, Diegusjaimes, Dorieo, Eduardosalg, Ejmeza, Elabra sanchez, Foundling, Gacq, Gaijin, GermanX, Gsrdzl, HUB, Helmy
oved, Humberto, Igna, Isha, Javierito92, Jcaraballo, Jgomo3, Jkbw, Jorgelrm, Jugones55, Leonpolanco, Lucien leGrey, MARC912374, MadriCR, MarcoAurelio, Matdrodes, Mel 23, Mikiguti,
Nagul, Nixn, Plux, Queninosta, Rigenea, Roinpa, RoyFocker, Rubpe19, Rudol0075, Savh, SergioN, Shooke, Spirit-Black-Wikipedista, SuperBraulio13, Taichi, Technopat, Tirithel, UA31,
Vitamine, VityUvieu, Wilfredor, 217 ediciones annimas

Fuentes de imagen, Licencias y contribuyentes


Archivo:USB_flash_drive.JPG Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:USB_flash_drive.JPG Licencia: GNU Free Documentation License Contribuyentes: User:Nrbelex
Archivo:Dg-nova3.jpg Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Dg-nova3.jpg Licencia: Copyrighted free use Contribuyentes: User Qu1j0t3 on en.wikipedia

Licencia
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

You might also like