Portabilidad de software

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 3 de diciembre de 2021; las comprobaciones requieren 2 ediciones .

Porting ( inglés  porting [1] ) - en programación , porting se entiende como la adaptación de algún programa o parte de él para que funcione en un entorno diferente , diferente al entorno para el que fue escrito originalmente con la máxima preservación de su usuario propiedades. Esta es la principal diferencia entre los conceptos de puerto y bifurcación  : en el primer caso, intentan preservar todas las propiedades de usuario del paquete y, en el segundo, es un desarrollo independiente basado en una base común con nuevas propiedades útiles.

El proceso de portabilidad también se denomina portabilidad y el resultado también se denomina portabilidad . Pero en cualquier caso, la tarea principal durante la migración es preservar la interfaz de usuario familiar y los métodos de trabajo con el paquete y sus propiedades. No se permite agregar nuevas propiedades o eliminar algunas de las existentes cuando se transfieren productos de software.

La portabilidad (portabilidad, ing.  portabilidad ) generalmente se refiere a una de dos cosas:

  1. Portabilidad: compilación de código (generalmente en algún código intermedio , que luego se interpreta o compila en tiempo de ejecución , "sobre la marcha", ing.  Just-In-Time [2] ), luego ejecútelo en múltiples plataformas sin ningún cambio.
  2. La portabilidad es una propiedad del software que describe la facilidad con la que se puede portar ese software. A medida que evolucionan los sistemas operativos, los lenguajes y las técnicas de programación, se vuelve más fácil portar programas entre diferentes plataformas. Uno de los objetivos originales de crear el lenguaje C y la biblioteca estándar de este lenguaje era la capacidad de transferir fácilmente programas entre plataformas de hardware incompatibles. Ventajas adicionales en términos de portabilidad pueden tener programas que cumplan con estándares y reglas especiales para escribir (ver, por ejemplo: Smart Package Manager ).

La necesidad de portar generalmente surge debido a diferencias en el conjunto de instrucciones del procesador , diferencias entre las formas en que el sistema operativo y los programas interactúan ( API  - Application Program Interface), diferencias fundamentales en la arquitectura de los sistemas informáticos, o debido a algunas incompatibilidades o incluso la ausencia total del lenguaje de programación utilizado en el entorno de destino.

Los estándares internacionales (particularmente los promovidos por ISO ) facilitan mucho la migración [3] al describir el entorno de ejecución de los programas de tal manera que las diferencias entre plataformas se vuelven mínimas. A menudo, la migración de programas entre plataformas que implementan el mismo estándar (como POSIX .1 ) se reduce a volver a compilar el programa en la nueva plataforma.

También hay un conjunto de herramientas en constante expansión para facilitar la migración, como GCC , que proporciona un lenguaje de programación uniforme en todas las plataformas.

Algunos lenguajes de programación de alto nivel ( Eiffel [4] , Esterel ) logran la portabilidad al traducir el código fuente a un lenguaje intermedio que tiene compiladores para muchos procesadores y sistemas operativos.

El término portabilidad a menudo se aplica a los juegos de computadora , es decir, el proceso de portabilidad de un juego de computadora desde su plataforma de destino original ( computadora personal o consola de juegos ) a otra plataforma. Los primeros puertos de videojuegos fueron esencialmente el resultado de reescrituras de software importantes o completas, pero cada vez se desarrollan más juegos modernos utilizando software que puede generar código tanto para computadoras como para una o más consolas de videojuegos.

Con respecto a los videojuegos, un puerto también puede llamarse un motor modernizado mejorado que reemplaza los archivos ejecutables del juego y requiere los archivos de recursos del juego original para su funcionamiento. Dichos puertos no están necesariamente hechos para la compatibilidad de software y hardware; a menudo, el objetivo es expandir las posibilidades del juego, retenido por un motor primitivo obsoleto.

Dependiendo de para qué se desarrolló originalmente este o aquel software , se llama nativo o portado. El software nativo ( inglés  nativo [5] ) se desarrolla inmediatamente para la plataforma ( hardware y/o sistema operativo) en cuestión. El software portado ( eng.  portado ) se desarrolla para algunas plataformas y luego se transfiere para trabajar en otras plataformas.

Ejemplos

Véase también

Notas

  1. puerto - definición de puerto en inglés del diccionario de Oxford . Consultado el 14 de julio de 2016. Archivado desde el original el 25 de julio de 2016.
  2. Hacia la ingeniería inteligente y la tecnología de la información Archivado el 21 de marzo de 2013 en Wayback Machine Capítulo 6.3 Java: "Un beneficio importante de usar bytecode es la portabilidad... La compilación JIT y la recompilación dinámica permiten que los programas Java se acerquen a la velocidad del código nativo sin perder la portabilidad".
  3. Donald A. Levine. Guía del programador POSIX. Escritura de programas UNIX portátiles con el estándar POSIX.1 Archivado el 21 de marzo de 2013 en Wayback Machine // O'Reilly, 1991-1994 "IEEE Std 1003.1-1988, comúnmente conocido como POSIX... Cuando las aplicaciones siguen las reglas POSIX, es más fácil mover programas de un sistema operativo compatible con POSIX a otro"
  4. Bertrand Meyer. Aproximaciones a la portabilidad Archivado el 26 de abril de 2012 en Wayback Machine // JOOP (Journal of Object-Oriented Programming), vol. 11, núm. 6, julio-agosto de 1998, páginas 93-95. “Todos los compiladores actuales de Eiffel excepto uno... usan C como lenguaje intermedio. … Se ha demostrado que esta técnica ofrece ventajas clave: Garantía de portabilidad” y más
  5. software nativo Archivado el 7 de mayo de 2012 en Wayback Machine A Dictionary of Computing, 2004
  6. Spencer Kimball y Peter Mattis. Léame (txt)  (enlace descendente) (11 de febrero de 1996). Consultado el 23 de marzo de 2008. Archivado desde el original el 17 de febrero de 2011. Paquete GIMP 0.54 de 2006, consulte LÉAME: "El GIMP ha sido probado (y desarrollado) en los siguientes sistemas operativos: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX"
  7. William von Hagen. Ubuntu Linux Bible: con Ubuntu 10.04 LTS Archivado el 21 de marzo de 2013 en Wayback Machine Capítulo "Uso de GIMP" página 14-35
  8. Programa de manipulación de imágenes GNU. Manual de usuario. Apéndice A. Historia de GIMP 2. Los primeros días de GIMP Archivado el 2 de febrero de 2012 en Wayback Machine "Las principales ventajas de programación fueron los nuevos kits de herramientas, GTK (GIMP Toolkit) y gdk (GIMP Drawing Kit), que eliminaron la dependencia de Motif"
  9. The Linux Kernel Archives Archivado el 21 de agosto de 2011. : Aunque Linux se desarrolló originalmente para PC x86 de 32 bits ( de 386), hoy también se ejecuta en (al menos) las siguientes arquitecturas: Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/ 390 , MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa y Analog Devices Blackfin; para muchos de ellos en versiones de 32 y 64 bits. (Aunque originalmente se desarrolló primero para PC basadas en x86 de 32 bits (386 o superior), hoy en día Linux también se ejecuta en (al menos) Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, Arquitecturas MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa y Analog Devices Blackfin; para muchas de estas arquitecturas en ambos variantes de 32 y 64 bits)

Literatura