Port (informática)

En ingeniería de software, un port es una adaptación de un programa a otra plataforma. Un programa se considera portable si el precio de adaptarlo a otra plataforma es significativamente menos que el precio de programarlo desde cero.

Etimología

El término port proviene del latín portāre, 'portar'.[1]​ Si un programa no es compatible con un sistema operativo o arquitectura particular, el código debe ser «portado» al nuevo sistema.

El término generalmente no se aplica al proceso de adaptar un programa para usar menos memoria en el mismo sistema operativo y CPU, ni al proceso de escribir desde cero el código de fuente en otro lenguaje de programación (es decir, conversión de lenguaje o traducción).

Algunos desarrolladores de software afirman que su código es portable, refiriéndose a que poco esfuerzo se necesita para adaptar el programa a otro sistema. Sin embargo, cuanto esfuerzo se necesita depende de varios factores, incluidas la diferencia del sistema original entre el sistema nuevo y la experiencia de los autores originales en saber en qué cada lenguaje de programación constituye. También esto es teniendo en cuenta que muchas librerías de terceros son imposibles de ser portadas.

Historia

El número de CPUs y sistemas operativos significativamente diferentes instalados en las computadoras de hoy es mucho más pequeño que en el pasado. El predominio de la arquitectura x86 significa que la mayoría de software nunca se porta a una CPU diferente. En el mismo mercado, la elección de sistemas operativos fue efectivamente reducida a tres: Microsoft Windows, MacOS y GNU/Linux. Sin embargo, en los sistemas embebidos y en el mercado móvil, la portabilidad sigue siendo un problema significativo, con la ARM siendo una alternativa ampliamente usada.

Las normas internacionales, como las que promulgó la ISO, facilitan el desarrollo de ports por la especificación de detalles del entorno informático que ayuda a reducir diferencias entre plataformas que conforman con normas diferentes. Escribir programas conformes a las normas especificadas representa un esfuerzo práctico pero no trivial. Hacer un port de tal programa entre dos plataformas que cumplen con las mismas normas puede ser mera cuestión de cargar el código de fuente y volver a compilarlo en la nueva plataforma. Sin embargo, los practicantes encuentran que varias correcciones menores se requieren, debido a las diferencias sutiles entre plataformas. La mayoría de las normas sufren de «áreas grises» donde las diferencias de interpretación de normas causan variaciones pequeñas dependiendo de la plataforma.

También existe un gran número creciente de herramientas para facilitar el desarrollo de ports, como el GNU Compiler Collection, que provee lenguajes de programación consistentes en diferentes plataformas, y Autotools, que automatiza la detección de variaciones menores en el entorno y adapta el software según corresponda antes de compilarlo.

Los compiladores de algunos lenguajes de programación de alto nivel, (por ejemplo Eiffel y Esterel) obtienen portabilidad ejecutando el código de fuente en otro lenguaje intermedio (como C) para el cual muchas plataformas están generalmente disponibles.

Dos conceptos relacionados con ports, pero distintos, son emuladores y compiladores cruzados.

Port de compiladores

En vez de traducir directamente a un lenguaje de máquina, los compiladores modernos traducen a un código intermedio independiente de la máquina para mejorar la portabilidad del compilador y minimizar los esfuerzos de diseño. El lenguaje intermedio define una máquina virtual que puede ejecutar todos los programas escritos en el lenguaje intermedio (una máquina se define por su lenguaje y viceversa).[2]​ Las instrucciones del lenguaje intermedio se traducen a secuencias equivalentes por un generador de código para crear código ejecutable. También es posible omitir la generación de código de máquina implementando un interpretador o JIT para la máquina virtual.[3]

El uso de código intermedio mejora la portabilidad del compilador, porque solo el código dependiente de la máquina (el interpretador o el generador de código) necesita ser portado al nuevo sistema. El resto del compilador puede ser portado como código intermedio y luego procesado por el generador de código portado o el interpretador, así produciendo el software del compilador o directamente ejecutando el código intermedio en el interpretador. La parte que depende de la máquina puede desarrollarse y testearse en otra máquina (la máquina anfitriona). Esto reduce significativamente los empeños de diseño, porque la parte independiente de la máquina necesita desarrollarse solamente una vez para crear código intermedio portable.[4]

Un interpretador es menos complejo y es más fácil de portar que un generador de código, porque no es capaz de hacer optimización de código debido a su acceso limitado al código del programa. (solo procesa una instrucción a la vez, y necesita una secuencia para la optimización). Algunos interpretadores son extremadamente fáciles de portar, porque únicamente hacen suposiciones mínimas sobre el conjunto de instrucciones del hardware subyacente. Como resultado, la máquina virtual es aún más simple que la CPU de destino.[5]

Escribir las fuentes del compilador completamente en el lenguaje de programación que el compilador debe traducir, hace más factible el siguiente enfoque, más conocido como bootstrap de compiladores, en la máquina de destino:

  1. Portar el interpretador. Este código debe ser escrito en lenguaje ensamblador, usando un ensamblador preexistente.
  2. Adaptar la fuente del generador de código al nuevo sistema.
  3. Ejecutar la fuente adaptada utilizando el interpretador con el generador de código como input. Esto generará el código de máquina para el generador de código.

La parte difícil de la optimización de código se hace empleando lenguaje de alto nivel en vez del lenguaje ensamblador del destino.

Según los diseñadores del lenguaje BCPL, el código interpretado (en el caso de BCPL) es más compacto que el código de máquina; típicamente por un factor de dos a uno. Sin embargo, ejecutar código interpretado es 10 veces más lento que código compilado en la misma máquina.[6]

Los diseñadores del lenguaje de programación Java intentan aprovecharse de la compacidad del código interpretado, porque un programa de Java tal vez necesite ser transmitido a través de Internet antes de su ejecución en la máquina virtual Java de destino.

Port de videojuegos

Port también se refiere al hecho de convertir un videojuego diseñado a ejecutarse en una sola plataforma, ya sea de arcade, una consola de videojuegos, o una computadora personal, para ejecutarse en otra plataforma. Desde el comienzo de videojuegos hasta 1990, muchos ports, en aquel entonces llamados «conversiones», a menudo no eran ports verdaderos, sino versiones modificadas de los juegos debido a las limitaciones de los diferentes sistemas. Sin embargo, muchos videojuegos del siglo XXI se desarrollan usando software (comúnmente usando C++) capaz de ejecutar código en una o más consolas sin la necesidad de hacer port (usando el port común de la librería de componentes individual).

Hacer ports de juegos de arcade para sistemas domésticos con hardware inferior resultó difícil. La versión port de Pac-man del sistema Atari 2600 omitió muchos de los aspectos visuales del juego original para compensar la falta de espacio en la imagen ROM. Hubo problemas de mal funcionamiento de hardware cuando estaba más de un fantasma en la pantalla, haciéndola parpadear. Algunos académicos citan que la crisis del videojuego de 1983 se debió a los malos resultados del port de Pac-Man.[7]

Muchos de los primeros ports sufrieron problemas significativos de jugabilidad a causa de las grandes diferencias existentes entre computadoras.[8]Richard Garriott dijo que en 1984 en Origins Game Fair que Origin Systems desarrolló videojuegos para la familia de computadores de Apple II primero y luego hizo ports de ellos para los sistemas Commodore 64 y Atari 8-bit, ya que por los sprites y aspectos de estas últimas máquinas, hacer ports a sistemas Apple era «mucho más difícil, quizás incluso imposible».[9]​ Hubo quejas sobre ports que sufrieron de "Apple conversionitis",[10]​ conservando "el audio pésimo y los gráficos blanco-negro-verde-violeta" de Apple;[11][12]​ después de la declaración de Garriott, cuando le preguntó Danielle Bunten Berry a la audiencia «gente de Atari y Commodore, ¿están felices con las reescrituras de Apple?», la audiencia gritó, «¡No!» Garriott respondió, «[sino] la versión de Apple nunca va a ser terminada. Desde el punto de vista de un editor, sería imprudente en cuanto al dinero.»[9]

Sin embargo, algunos juegos eran diferentes. Por ejemplo, Ozark Softscape, escribió M.U.L.E. primero en la Atari porque prefirió desarrollar en los computadores más avanzados, removiendo o cambiando aspectos según sea necesario al hacer el port. Pero esta política no era del todo factible; Bunten dijo que, "M.U.L.E. no puede ser hecha para un sistema de Apple,"[8]​ y que las versiones no Atari de The Seven Cities of Gold eran inferiores.[13]Compute!'s Gazette escribió en 1986 que al portar desde Atari a Commodore la original era usualmente superior. La calidad de los juegos de esta última mejoró cuando se comenzó a desarrollar software para ella a finales de 1983, cita la revista.[14]

Que un juego sea «arcade perfect», quiere decir que el juego fue portado de una versión de arcade a otra plataforma, como a una consola o una computadora, sin alteraciones significativas al funcionamiento del juego. Esto significa que el gráfico, el audio y la jugabilidad, junto con las otras características del juego (como bugs), son iguales a los de la versión original. Esto usualmente significa que las diferencias son menores (como tiempo de carga más largo), o simplemente que el port era el que más conservó la experiencia del juego original.

Port (de consola) es un juego originalmente hecho para una consola (como una Wii o Xbox 360) antes de la creación de una versión idéntica que puede ser jugada en una computadora personal o en cualquier otra consola. Este término ha sido altamente usado por la comunidad de videojuegos. El proceso de portar un juego de una consola a PC muchas veces se considera negativamente debido a que se infravaloren los niveles altos de rendimiento que generalmente tienen las PCs, en parte porque se lanzan versiones de arreglo de hardware de consolas durante su curso (con juegos que se desarrollan para las especificaciones de la consola), mientras las PCs se vuelven más poderosas a medida que el hardware evoluciona, pero también porque a veces los ports de juegos están mal optimizados para PC, o hechos perezosamente. Si bien son muy similares, pueden existir diferencias arquitectónicas, como el uso de memoria unificada en una consola.

Referencias

Véase también

Referencias

  1. «port, v.2». Oxford English Dictionary (OED Online). Oxford University Press. Consultado el 21 de diciembre de 2017. 
  2. Tanenbaum, 1984, p. 3. §1.1 Languages, Levels, and Virtual Machines describes the terms and their relations.
  3. Tanenbaum, 1984, p. 2. Ch. 1 Introduction explains translation and interpretation.
  4. Richards y Whitby-Strevens, 1984, p. 124. §7.1 Introduction explains compiler portability using intermediate code.
  5. Richards y Whitby-Strevens, 1984, p. 133. §7.4 The bootstrapping process and INTCODE explains the role of the INTCODE interpreter.
  6. Richards y Whitby-Strevens, 1984, p. 136. §7.4.3 Example gives an example translation of a BCPL program into INTCODE for the interpreter.
  7. Nicoll, Benjamin (2015). «Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games». Games and Culture. doi:10.1177/1555412015590048. 
  8. a b Bunten, Dan (December 1984). «Dispatches / Insights From the Strategy Game Design Front». Computer Gaming World: 40. Consultado el 31 de octubre de 2013. 
  9. a b «The CGW Computer Game Conference». Computer Gaming World (panel discussion): 30. October 1984. Consultado el 31 de octubre de 2013. 
  10. Dunnington, Benn; Brown, Mark R.; Malcolm, Tom (January–February 1987). «64/128 Gallery». Info: 14-21. 
  11. Stanton, Jeffrey; Wells, Robert P.; Rochowansky, Sandra et al., eds. (1984). The Addison-Wesley Book of Atari Software. Addison-Wesley. pp. 12,21,44,126. ISBN 0-201-16454-X. 
  12. Bernstein, Harvey (May 1985). «Beyond Castle Wolfenstein». Antic. p. 83. Consultado el 8 de enero de 2015. 
  13. Bunten, Dan. «The Game Collection». Ozark Softscape M.U.L.E. Archivado desde el original el 28 de enero de 2021. Consultado el 4 de octubre de 2017. 
  14. Yakal, Kathy (June 1986). «The Evolution of Commodore Graphics». Compute!'s Gazette: 34-42. Consultado el 18 de junio de 2019. 

Read other articles:

2009 single by ShakiraDid It Again / Lo Hecho Está HechoSingle by Shakirafrom the album She Wolf Released16 October 2009 (2009-10-16)Recorded2009Genre Electropop Length3:12LabelEpicSongwriter(s) Shakira Pharrell Williams Producer(s) Shakira The Neptunes Shakira singles chronology She Wolf (2009) Did It Again / Lo Hecho Está Hecho (2009) Give It Up to Me (2009) Music videos Did It Again on YouTube Lo Hecho Está Hecho on YouTube Did It Again is a song recorded by Colombian sin...

 

باكو ساكيان Բակո Սահակյան (بالأرمنية: Բակո Սահակի Սահակյան)‏  الرئيس الرابع لدولة ناغورنو كاراباخ تولى المنصبالسابع من أيلول (سبتمبر) 2007 رئيس الوزراء آنوشافان دانيليانآرايك هاروتيونيان آركادي غوكاسيان   معلومات شخصية الميلاد 30 أغسطس 1960 (العمر 63 سنة)سيتباناكيرت، ال

 

State electoral district of New South Wales, Australia TweedNew South Wales—Legislative AssemblyInteractive map of district boundaries from the 2023 state electionStateNew South WalesDates current1894–19041999–presentMPGeoff ProvestPartyNational PartyNamesakeTweed RiverElectors56,940 (2019)Area511.33 km2 (197.4 sq mi)DemographicProvincial and rural Electorates around Tweed: Mudgeeraba(QLD) Currumbin(QLD) Pacific Ocean Lismore Tweed Pacific Ocean Lismore Ballina Pacif...

1969 film Hate Is My GodDirected byClaudio GoraWritten byClaudio GoraVincenzo CeramiPiero AnchisiCinematographyLuciano TrasattiMusic byPippo Franco Hate Is My God (Italian: L'odio è il mio Dio, German: Il Nero - Haß war sein Gebet, also known as Hatred of God) is a 1969 Italian-German Spaghetti Western film directed by Claudio Gora.[1][2] Cast Tony Kendall: Il Nero / Carl Carlo Giordana: Vincent Kearny Herbert Fleischmann: Alex Carter Marina Berti: Blanche Durand Gunther Phi...

 

Albert Gleizes, circa 1912 This is a list of works by the French artist, theoretician, philosopher Albert Gleizes; one of the founders of Cubism and an influence on the School of Paris.[1][2][3][4] The artistic career of Gleizes spanned more than fifty years, from roughly 1901 to the year of his death in 1953. He was both a prolific painter and writer. This incomplete list is a selection of some of Gleizes' better-known oil paintings, or includes those for whic...

 

The sword in its scabbard The Sword of Saints Cosmas and Damian, also known as the Sword of Essen, is a ceremonial weapon in Essen Abbey. The sword itself dates to the mid 10th century, the gold decoration was added at the close of the 10th or the onset of the 11th century, while the silver mounts with the inscription were added 15th century. The sword was formerly thought to have been a gift by Otto III, Holy Roman Emperor to the convent in Essen in AD 993, and taken to commemorate the marty...

سلطان مصر نور الدين علي بن أيبك سلطان مصر فترة الحكم1257-1259 عز الدين أيبك سيف الدين قطز معلومات شخصية الميلاد سنة 1242  القاهرة تاريخ الوفاة العقد 1300  مواطنة الدولة المملوكية  الأب عز الدين أيبك عائلة المماليك البحرية  سلالة الدولة المملوكية الحياة العملية المهنة حا...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (نوفمبر 2019) جيمس أ. باتن   معلومات شخصية تاريخ الميلاد سنة 1852  تاريخ الوفاة سنة 1928 (75–76 سنة)  مواطنة الولايات المتحدة  مناصب عمدة   في المنصب1901  – 1905  ...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يوليو 2019) منتخب بورتوريكو لكرة اليد البلد ؟؟ الزي الأساسي الزي الإحتياطي بطولة بان أميركان لكرة اليد الظهور 7 (أول م...

Thánh Biển ĐứcTựu nhiệm26 tháng 6 684Bãi nhiệm8 tháng 5 685Tiền nhiệmLêô IIKế nhiệmGioan VThông tin cá nhânTên khai sinh???Sinh???Roma, Đế quốc ByzantineMất(685-05-08)8 tháng 5, 685Roma, Đế quốc ByzantineCác giáo hoàng khác lấy tông hiệu Biển Đức Biển Đức II hoặc Bênêđictô II (Latinh: Benedictus II) là vị giáo hoàng thứ 81 của Giáo hội Công giáo. Ông đã được Giáo hội suy tôn là thánh sau khi qua đ...

 

BridgeDryburgh Suspension BridgeCoordinates55°34′51″N 2°39′15″W / 55.580712°N 2.65418°W / 55.580712; -2.65418CrossesRiver TweedLocation Dryburgh Suspension Bridge Dryburgh Suspension Bridge is a suspension bridge erected near Dryburgh Abbey, Scottish Borders. History The footbridge across the River Tweed was erected in 1872 with a gift intended to allow the Dryburgh villagers to worship at the churches in St. Boswells (part of a ribbon of settlements includ...

 

1942 Japanese invasion of the Dutch East Indies Battle of AmbonPart of World War II, Pacific War, Dutch East Indies campaignDate30 January – 3 February 1942LocationAmbon, MoluccasResult Japanese victoryBelligerents Netherlands Australia United States(retreated on 15 January)  JapanCommanders and leaders Joseph Kapitz  William Scott  Frank D. Wagner Takeo Takagi Takeo ItōStrength 2,600[1] 1,100[2] 5,300[3]Casualties and losses 340 killed[...

Canada-related events during the year of 1899 This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: 1899 in Canada – news · newspapers · books · scholar · JSTOR (January 2020) (Learn how and when to remove this template message) ← 1898 1897 1896 1899 in Canada → 1900 1901 1902 Decades: 1870s 1880s 1890...

 

ستانلي ر. جافي معلومات شخصية الميلاد 31 يوليو 1940 (83 سنة)[1][2]  نيو روتشيلي، نيويورك  مواطنة الولايات المتحدة  الحياة العملية المدرسة الأم كلية وارتون لإدارة الأعمال  المهنة منتج أفلام،  ومخرج أفلام  اللغات الإنجليزية  الجوائز  جائزة الأوسكار لأفض...

 

Constituency of the National Assembly of France Pyrénées-Atlantiques's 2nd constituencyinlineConstituency of the National Assembly of FranceThe different constituencies of the Pyrénées-AtlantiquesPyrénées-Atlantiques in FranceDeputyJean-Paul Mattei[1]MoDemDepartmentPyrénées-Atlantiques Politics of France Political parties Elections Previous Next The 2nd constituency of the Pyrénées-Atlantiques (French: deuxième circonscription des Pyrénées-Atlantiques) is a French legisla...

Metta DharmasaputraLahir21 Desember 1969 (umur 53)Cianjur, Jawa BaratKebangsaan IndonesiaPendidikanFakultas Ekonomi Universitas Gadjah MadaMagister Manajemen Prasetya Mulya Business SchoolOrganisasiKatadataSitus webhttp://katadata.co.id/ Metta Dharmasaputra (lahir 21 Desember 1969) adalah jurnalis dan pendiri Katadata. Mantan wartawan Tempo di bidang ekonomi dan investigasi ini dikenal sebagai penulis buku Saksi Kunci yang berkisah tentang kasus pajak Asian Agri Group, yang ditulisk...

 

Cet article est une ébauche concernant la politique française. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. La soirée du Fouquet's du 6 mai 2007 est une réception organisée au Fouquet's, à Paris, pour célébrer l'élection de Nicolas Sarkozy à la présidence de la République le soir de l'élection présidentielle française de 2007. Cette soirée privée, érigée par ses détracteurs en symbole de l'...

 

Australian soccer player For the Scottish golfer, see Scott Jamieson (golfer). This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (June 2021) Scott Jamieson Jamieson with Melbourne City in 2019Personal informationFull name Scott Alexander JamiesonDate of birth (1988-10-13) 13 October 1988 (age 35)Place of birth Auburn, Sydney, AustraliaHeight 1.7...

Zone in Amhara Region of Ethiopia Zone in Amhara, EthiopiaNorth Gondar ሰሜን ጎንደርSemien GondarZoneCountry EthiopiaRegion AmharaLargest cityGondarArea[1] • Total45,944.63 km2 (17,739.32 sq mi)Population (2007)[1] • Total2,929,628 • Density64/km2 (170/sq mi) Map of the regions and zones of Ethiopia North Gondar (Amharic: ሰሜን ጎንደር; or Semien Gondar) is a zone in the Amhara Region of E...

 

American politician (born 1965) This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Larry Walker III – news · newspapers · books · scholar · JSTOR (July 2019) (Learn how and when to remove this temp...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!