Programa de computadora

Programa informático  : 1) una combinación de instrucciones y datos informáticos que permite que el hardware de un sistema informático realice cálculos o funciones de control ( norma ISO / IEE / IEEE 24765:2010) [1] ; 2) una unidad sintáctica que cumple con las reglas de un lenguaje de programación particular , que consiste en definiciones y operadores o instrucciones necesarias para una determinada función, tarea o solución de problema (norma ISO/IEC 2382-1:1993) [2] .

La primera definición corresponde al concepto de " programa ejecutable ", la segunda se refiere al concepto de " código fuente ".

Otras definiciones de documentos reglamentarios:

Los programas de computadora como objeto de derechos de autor y otros derechos de propiedad intelectual se clasifican como activos intangibles .

Creación de programas

La mayoría de las veces , la imagen de un programa se almacena como un módulo ejecutable (un solo archivo o un grupo de archivos). A partir de esta imagen, generalmente en el disco , un cargador de software puede construir un programa ejecutable en la RAM .

En la programación de sistemas , un programa son datos que el procesador utiliza como instrucciones para controlar un sistema informático [5] . El programa puede incluir tanto código máquina , ejecutado por el procesador para lograr algún objetivo, como los datos necesarios para ello. Una característica distintiva del programa es su ubicación en la memoria y la ejecución por parte del procesador.

El proceso de desarrollo de software consta de varias etapas, de las cuales, en sentido estricto, solo la creación directa del código del programa se denomina " programación ". En un sentido amplio, la programación a menudo se refiere a todo el proceso de desarrollo de software, y las personas involucradas en este tipo de actividad se denominan programadores .

Escribir el código fuente de los programas usando lenguajes de programación hace que sea más fácil de entender y editar para los humanos. Esto, en particular, se ve favorecido por los comentarios , que están permitidos en la sintaxis de la mayoría de los idiomas. Para la ejecución en una computadora, el texto del programa terminado se convierte ( compila ) en código de máquina.

Algunos lenguajes de programación le permiten prescindir de la compilación previa del programa y traducirlo a instrucciones de código de máquina directamente en tiempo de ejecución. Este proceso se denomina compilación dinámica y permite una mayor portabilidad de los programas entre diferentes plataformas de hardware y software, al tiempo que conserva muchos de los beneficios de la compilación.

Los programas interpretados que normalmente no utilizan el proceso de compilación y son interpretados por el sistema operativo o programas especiales de interpretación se denominan scripts o "scripts".

Los textos fuente de los programas de computadora en la mayoría de los lenguajes de programación consisten en una lista de instrucciones que describen con precisión el algoritmo subyacente . Un enfoque similar en la programación se llama imperativo . Sin embargo, también se aplican otras metodologías de programación. Por ejemplo, describir las características iniciales y requeridas de los datos que se procesan y proporcionar la opción de un algoritmo de solución adecuado a un programa de interpretación especializado: este enfoque se denomina programación declarativa . La programación declarativa incluye programación funcional y lógica , así como tipos de programación menos comunes .

Los programas se pueden crear en forma de texto y visualmente . En el primer caso, el código fuente se escribe manualmente, en el segundo, la funcionalidad del programa se configura utilizando los elementos de la interfaz gráfica de usuario , y el texto del programa se genera automáticamente y puede estar disponible para modificación manual o completamente oculto del usuario. programador.

Almacenamiento y ejecución

Hasta el momento en que un usuario de la computadora emite explícita o implícitamente una solicitud para ejecutar un programa de computadora, generalmente se almacena en la memoria no volátil . Cuando se recibe tal solicitud, otro programa de computadora, llamado sistema operativo, carga el programa en la memoria de acceso aleatorio , desde donde puede ser ejecutado directamente por la unidad central de procesamiento. Luego, la CPU ejecuta el programa, instrucción por instrucción, hasta que se completa. Un programa en ejecución se denomina proceso [6] . La finalización del programa ocurre al llegar a su última instrucción (generalmente transfiriendo el control al sistema operativo) o por un error, software o hardware.

Ejecución simultánea

Muchos sistemas operativos admiten el mecanismo multitarea , que le permite crear el efecto de varios programas informáticos que se ejecutan simultáneamente en una computadora. Los sistemas operativos pueden ejecutar varios programas mediante el administrador del sistema operativo  , un mecanismo de software para cambiar los procesos que se ejecutan en el procesador. Aunque solo se ejecuta un programa a la vez, si cambia con la suficiente frecuencia, el usuario puede interactuar con todos los programas mientras se ejecutan [7] . Las modernas computadoras multiprocesador o las computadoras con procesadores multinúcleo soportan la ejecución simultánea de varios programas en hardware [8] .

Los fragmentos de código del mismo programa de computadora se pueden ejecutar simultáneamente usando hilos de ejecución . Hay procesadores de subprocesos múltiples optimizados específicamente para ejecutar subprocesos múltiples.

Programas automodificables

Se considera que un programa informático en ejecución es diferente de los datos que procesa. Sin embargo, esta distinción se desdibuja cuando un programa de computadora se modifica a sí mismo. A continuación, el programa informático modificado se ejecuta como parte del programa original. La automodificación del código es posible en programas escritos en código de máquina , lenguaje ensamblador , Lisp , C , Cobol , PL/1 y Prolog .

Uso de programas

La mayoría de los usuarios de computadoras utilizan programas diseñados para realizar tareas de aplicaciones específicas, como preparar y procesar documentos, cálculos matemáticos , procesamiento de imágenes, etc. El software correspondiente se denomina programas de aplicación o software de aplicación . La gestión de los componentes del sistema informático y la formación de un entorno para el funcionamiento de los programas de aplicación están a cargo del software del sistema , cuyo componente más importante es el sistema operativo.

Aspectos legales

Según el art. 1261 del Código Civil de la Federación Rusa, un programa de computadora es un conjunto de datos y comandos presentados en una forma objetiva, destinados a la operación de computadoras y otros dispositivos informáticos para obtener un resultado determinado, incluidos los materiales preparatorios obtenidos durante el desarrollo de un programa de ordenador, y las visualizaciones audiovisuales generadas por el mismo.

Los programas con código fuente disponible públicamente se denominan código abierto .

Los programas de computadora en la mayoría de los países están sujetos a derechos de autor (incluidos Ucrania y Rusia). En algunos países, los programas de computadora pueden estar protegidos por patentes . El patentamiento de programas informáticos fue facilitado por el Acuerdo sobre los Aspectos de los Derechos de Propiedad Intelectual relacionados con el Comercio, que estableció requisitos mínimos [9] para la gama protegida de derechos de propiedad intelectual y, de hecho, permitió patentar el software. El Acuerdo TRIPS es obligatorio para la implementación en el territorio de Ucrania y Rusia como estados miembros de la OMC.

Así, un programa puede protegerse tanto como "obra literaria" como como "invención". Para determinar el régimen de protección jurídica, en el primer caso se utiliza el “texto del código”, en el otro, las características utilizadas para las invenciones propuestas para patentar (es decir, es necesario acreditar “carácter innovador”, “originalidad” y “no obviedad”, así como la posibilidad de resolver un problema técnico existente y la idoneidad comercial) [10] . Al mismo tiempo, existe un problema de diferenciación legal de los programas informáticos del contenido digital propietario y el software propietario [11] .

El derecho exclusivo sobre los programas de ordenador y las bases de datos surge automáticamente desde el momento de su creación y tiene vigencia durante la vida del autor y setenta años, contados a partir del 1 de enero del año siguiente al año de la muerte del autor (o de la muerte de el último de los coautores).

La legislación actual de la Federación de Rusia no contempla la patentabilidad de programas informáticos como tales. Estos objetos de propiedad intelectual están protegidos por derechos de autor, que surgen automáticamente desde el momento de su creación y no requieren registro estatal obligatorio. Sin embargo, los programas informáticos y las bases de datos pueden registrarse en Rospatent a petición del titular de los derechos de autor [12] .

Copyright y algunos otros[ ¿Qué? ] los derechos de propiedad intelectual le permiten restringir el acceso al código fuente de los programas.

Véase también

Notas

  1. ISO/IEC/IEEE 24765:2010 Ingeniería de software y sistemas - Vocabulario
  2. ISO/IEC 2382-1:1993, Tecnología de la información - Vocabulario - Parte 1: Términos fundamentales
  3. GOST 19781-90. ESPD . Términos y definiciones
  4. Arte. 1261 "Programas de computadora" del Código Civil de la Federación Rusa
  5. Feldman S. K. Programación del sistema. Un curso completo de conferencias con materiales teóricos y trabajo de laboratorio. - 2003. - 512 págs. — ISBN 5-88548-096-6 .
  6. Silberschatz, 1994 , pág. 97.
  7. Silberschatz, 1994 , pág. 100.
  8. Ajter Shameem. Programación multinúcleo. - Richard Bowles (Intel Press), 2006. - P. 11-13. — ISBN 0-9764832-4-6 .
  9. Chibisov D. M. Naturaleza jurídica Ugodi sobre los aspectos comerciales de los derechos del poder intelectual (ADPIC)  (ucraniano)  // Boletín científico de la Universidad Nacional de Uzhgorod. Serie "Derecho". - 2012. - Nº 19 .
  10. Chibisov D. M. Modos de protección de los contenidos digitales propietarios  (ukr.)  (enlace no disponible) (8 de abril de 2015). Consultado el 9 de abril de 2015. Archivado desde el original el 2 de abril de 2015.
  11. D. M. Chibisov. Contenido digital patentado: una característica clave . Blog (8 de abril de 2015). Archivado desde el original el 12 de junio de 2018.
  12. Zimin V. A. Registro de programas informáticos en la Federación Rusa . Consultado el 9 de junio de 2016. Archivado desde el original el 4 de abril de 2016.

Literatura