De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

La portabilidad en la programación de computadoras de alto nivel es la usabilidad del mismo software en diferentes entornos. El requisito previo para la portabilidad es la abstracción generalizada entre la lógica de la aplicación y las interfaces del sistema . Cuando se produce software con la misma funcionalidad para varias plataformas informáticas , la portabilidad es el tema clave para la reducción de costos de desarrollo.

Estrategias para la portabilidad [ editar ]

La portabilidad del software puede implicar:

  • Transferir archivos de programa instalados a otra computadora de básicamente la misma arquitectura.
  • Reinstalar un programa desde archivos de distribución en otra computadora de básicamente la misma arquitectura.
  • Construcción de programas ejecutables para diferentes plataformas a partir del código fuente ; esto es lo que se suele entender por " portar ".

Sistemas similares [ editar ]

Cuando se instalan sistemas operativos de la misma familia en dos computadoras con procesadores con conjuntos de instrucciones similares , a menudo es posible transferir los archivos que implementan archivos de programa entre ellos.

En el caso más simple, el archivo o archivos pueden simplemente copiarse de una máquina a otra. Sin embargo, en muchos casos, el software se instala en una computadora de una manera que depende de su hardware, software y configuración detallados, con controladores de dispositivo para dispositivos particulares, usando el sistema operativo instalado y componentes de software de soporte, y usando diferentes unidades o directorios. .

En algunos casos, el software, generalmente descrito como " software portátil ", está diseñado específicamente para ejecutarse en diferentes computadoras con sistemas operativos y procesadores compatibles, sin ninguna instalación dependiente de la máquina. Portar no es más que transferir directorios específicos y su contenido. El software instalado en dispositivos portátiles de almacenamiento masivo , como memorias USB, se puede utilizar en cualquier computadora compatible con solo conectar el dispositivo de almacenamiento y almacena toda la información de configuración en el dispositivo extraíble. La información específica de hardware y software a menudo se almacena en archivos de configuración en ubicaciones específicas (por ejemplo, el registro en máquinas que ejecutan Microsoft Windows ).

El software que no es portátil en este sentido tendrá que ser transferido con modificaciones para soportar el entorno en la máquina de destino.

Diferentes procesadores [ editar ]

A partir de 2011, la mayoría de las computadoras de escritorio y portátiles utilizaban microprocesadores compatibles con los conjuntos de instrucciones x86 de 32 y 64 bits . Los dispositivos portátiles más pequeños utilizan procesadores con conjuntos de instrucciones diferentes e incompatibles, como ARM . La diferencia entre dispositivos más grandes y más pequeños es tal que el funcionamiento detallado del software es diferente; una aplicación diseñada para mostrarse adecuadamente en una pantalla grande no se puede simplemente transferir a un teléfono inteligente de bolsillo con una pantalla pequeña, incluso si la funcionalidad es similar.

Se requiere que las aplicaciones web sean independientes del procesador, por lo que la portabilidad se puede lograr mediante el uso de técnicas de programación web, escribiendo en JavaScript . Un programa de este tipo puede ejecutarse en un navegador web común. Dichas aplicaciones web deben, por razones de seguridad, tener un control limitado sobre la computadora host, especialmente en lo que respecta a la lectura y escritura de archivos. Los programas no web, instalados en una computadora de manera normal, pueden tener más control y, sin embargo, lograr la portabilidad del sistema mediante la vinculación a bibliotecas portátiles que proporcionan la misma interfaz en diferentes sistemas.

Portabilidad del código fuente [ editar ]

El software se puede compilar y vincular desde el código fuente para diferentes sistemas operativos y procesadores si está escrito en un lenguaje de programación que admita la compilación para las plataformas. Esta suele ser una tarea de los desarrolladores del programa; los usuarios típicos no tienen acceso al código fuente ni las habilidades requeridas.

En entornos de código abierto como Linux, el código fuente está disponible para todos. En los primeros días, el código fuente se distribuía a menudo en un formato estandarizado, y los usuarios con conocimientos moderados podían integrarlo en código ejecutable con una herramienta Make estándar para cualquier sistema en particular si no se producían errores durante la compilación. Algunas distribuciones de Linux distribuyen software a los usuarios en forma de código fuente. En estos casos, no suele ser necesario realizar una adaptación detallada del software para el sistema; se distribuye de una manera que modifica el proceso de compilación para que coincida con el sistema .

Esfuerzo para portar el código fuente [ editar ]

Incluso con lenguajes aparentemente portátiles como C y C ++, el esfuerzo para portar el código fuente puede variar considerablemente. Los autores de UNIX / 32V (1979) informaron que "[el] shell (de Bourne) [...] requirió con mucho el mayor esfuerzo de conversión de cualquier programa supuestamente portátil, por la sencilla razón de que no es portátil". [1]

A veces, el esfuerzo consiste en recompilar el código fuente, pero a veces es necesario volver a escribir partes importantes del software. Muchas especificaciones de lenguaje describen el comportamiento definido por la implementación (por ejemplo, el desplazamiento a la derecha de un entero con signo en C puede hacer un desplazamiento lógico o aritmético ). Es posible que las funciones del sistema operativo o las bibliotecas de terceros no estén disponibles en el sistema de destino. Algunas funciones pueden estar disponibles en un sistema de destino, pero exhiben un comportamiento ligeramente diferente (por ejemplo: utime () falla en Windows con EACCES, cuando se llama para un directorio). El código del programa en sí también puede contener cosas intransferibles, como las rutas de los archivos de inclusión. Las letras de unidad y la barra invertida como delimitador de ruta no se aceptan en todos los sistemas operativos. La implementación definió cosas comoEl orden de bytes y el tamaño de un int también pueden aumentar el esfuerzo de portabilidad. En la práctica, la afirmación de lenguajes, como C y C ++ , de tener WOCA ( escribir una vez, compilar en cualquier lugar ) es discutible.

Ver también [ editar ]

  • Interoperabilidad
  • Software multiplataforma
  • Software dependiente del hardware
  • C (lenguaje de programación)
  • Interoperabilidad lingüística
  • Prueba de portabilidad
  • Compilador de fuente a fuente
  • Portabilidad de datos

Referencias [ editar ]

  1. ^ Thomas B. London y John F. Reiser (1978). Un sistema operativo Unix para la computadora DEC VAX-11/780 . Nota interna de Bell Labs 78-1353-4.

Fuentes [ editar ]

  • Mooney (1997). "Llevar la portabilidad al proceso de software" (PDF) . Universidad de Virginia Occidental. Dpto. De Estadística e Informática. Archivado desde el original (PDF) el 25 de julio de 2008 . Consultado el 17 de marzo de 2008 . Cite journal requires |journal= (help)
  • Garen (2007). "Portabilidad de software: opciones de pesaje, decisiones" . The CPA Journal . 77 (11): 3.
  • Lehey (1995). "Portabilidad del software UNIX: de la descarga a la depuración" (PDF) . Consultado el 27 de mayo de 2010 . Cite journal requires |journal= (help)