Diferencia entre revisiones de «Programa informático»

Contenido eliminado Contenido añadido
m Revertidos los cambios de 200.105.236.122 a la última edición de Javierito92
Línea 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 ==
nathaly y david
 
{{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 Edition
| 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 lista 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]].
 
Los programas que son compilados comúnmente son llamados ejecutables, imágenes binarias, o simplemente como [[archivo binario|binarios]], ya que la forma en que se almacena el código de los ejecutables es en [[sistema de numeración binario|binario]]. Los compiladores se utilizan para traducir el código fuente de un lenguaje de programación, ya sea a [[código objeto]] o a [[código de máquina]]. El código objeto necesita una transformación más para convertirse en código de máquina, y el código de máquina es el [[microcódigo|código]] nativo del [[microprocesador|procesador]], listo para su ejecución. Un lenguaje de programación utilizado comúnmente para compilar es el [[C (lenguaje de programación)|lenguaje C]].
 
Los programas interpretados podrían primeramente ser decodificados e inmediatamente después ejecutarse, o también puede darse el caso que se transforme a una eficiente representación intermedia para su futura ejecución. [[BASIC]], [[Perl]], y [[Python]] son ejemplos de lenguajes en los cuales los programas se ejecutan inmediatamente. De forma alternativa, los programas escritos en [[Lenguaje de programación Java|Java]] primeramente son compilados y almacenados en un código independiente de la máquina al cual se le llama [[bytecode]]. Un intérprete llamado '''máquina virtual''' ejecuta dicho bytecode cuando se le solicita.
 
La desventaja principal de los intérpretes es que los programas se ejecutan más lentamente que si fueran compilados. El código interpretado es más lento que el código compilado porque el intérprete debe de decodificar cada sentencia cada vez que se carga y luego ejecutar dicha acción. Sin embargo, el desarrollo del software puede ser más rápido usando un intérprete porque las pruebas sobre el código fuente se llevan de forma inmediata cuando se omite la fase de compilación. Otra desventaja de los intérpretes es que el intérprete debe de estar presente en la computadora para poder ejecutar los programas, en cambio los programas hechos con compiladores no necesitan tener el compilador presente en tiempo de ejecución.
 
Un lenguaje de programación no es estricta y exclusivamente compilado o interpretado. La clasificación usualmente refleja el método más popular de la ejecución del lenguaje. Por ejemplo, BASIC se trata como un lenguaje interpretado y C como un lenguaje compilado, a pesar de la existencia de compiladores para BASIC e intérpretes para C.
 
=== Programas que se auto-modifican ===
 
Un programa en ejecución se trata de forma diferente que los datos en los cuales opera. De cualquier forma, en algunos casos ésta distinción es ambigua, especialmente cuando un programa se modifica a sí mismo. El programa modificado es secuencialmente ejecutado como parte del mismo programa. Se pueden escribir programas auto-modificables en lenguajes como Lisp, COBOL y Prolog.
 
== Ejecución y almacenamiento de los programas ==