Портування програмного забезпечення

Для терміну "Порт" см. інші значення.

Портування ( англ. porting [1]) - в програмуванні під портированием розуміють адаптацію деякої програми або її частини, з тим щоб вона працювала в інший середовищі, що відрізняється від тієї середовища, під яку вона була спочатку написана з максимальним збереженням її користувацьких властивостей. У цьому основна відмінність понять порт і форк - в першому випадку все користувальницькі властивості пакета намагаються зберегти, а в другому - це базована на загальній основі самостійна розробка з новими корисними властивостями.

Процес портування також називають портування або перенесенням, а результат - портом. Але в будь-якому випадку головним завданням при портировании є збереження звичних користувачеві інтерфейсу і прийомів роботи з пакетом і його властивостей. Додавання нових або видалення частини наявних властивостей при портировании програмних продуктів не допускається.

Портування - включення коду програми в роботу Апаратно-програмного забезпечення.

Портіруемость (переносимість, англ. portability ) Зазвичай відноситься до однієї з двох речей:

  1. Портіруемость - як можливість один раз відкомпілювати код (зазвичай в деякий проміжний код, який потім інтерпретується або компілюється під час виконання, "на льоту", англ. Just-In-Time [2]), потім запускати його на безлічі платформ без яких-небудь змін.
  2. Портіруемость - як властивість програмного забезпечення, яке описує, наскільки легко це ПЗ може бути портировано. У міру розвитку операційних систем, мов і техніки програмування, стає все простіше портувати програми між різними платформами. Однією з початкових цілей створення мови Сі та стандартної бібліотеки цієї мови - була можливість простого портування програм між несумісними апаратними платформами. Додаткові переваги в плані портіруемості можуть мати програми, що задовольняють спеціальним стандартам і правилам написання (див., наприклад: Smart Package Manager).

Необхідність у виконанні портування виникає зазвичай через відмінності в системі команд процесора, відмінностей між способами взаємодії операційної системи та програм ( API - Application Program Interface), принципових відмінностей в архітектурі обчислювальних систем, або через деяких несумісності або навіть повної відсутності використовуваного мови програмування в цільовому оточенні.

Міжнародні стандарти (зокрема, просувні ISO) значно спрощують портування [3], завдяки тому що вони описують середовище виконання програм таким чином, що відмінності між платформами стають мінімальними. Часто портування програм між платформами, реалізують один і той же стандарт (такий як POSIX.1) зводяться до перекомпіляції програми на новій платформі.

Існує також всі розширюється набір інструментів, що полегшують портування, наприклад, таких як GCC, що надає незмінний мову програмування на різних платформах.

Деякі мови програмування високого рівня ( Eiffel [4], Esterel) досягають портіруемості шляхом трансляції вихідного коду в проміжний мова, що має компілятори для багатьох процесорів і операційних систем.

Термін портування часто застосовується до комп'ютерним іграм, а саме, до процесу переносу комп'ютерної гри з первісної цільової платформи ( персонального комп'ютера або ігрової приставки) на іншу платформу. Ранні порти відеоігор, по суті, були результатом значного або повного переписування програми, але все більше сучасних ігор розробляється з використанням програмного забезпечення, що дозволяє генерувати код як для PC так і для однієї або декількох ігрових консолей.

В залежності від того, для чого спочатку розроблялося те чи інше програмне забезпечення, його називають рідним або портувати. Рідне ( англ. native [5]) ПО розробляється відразу для тієї платформи (апаратного забезпечення та / або операційної системи), про яку йде мова. Портувати ( англ. ported ) ПО розробляється для одних платформ, після чого переноситься для роботи на інших платформах.


1. Приклади

  • Для ОС Linux 1.2 з оточенням GNU, Solaris 2.4, HPUX 9, SGI IRIX графічний редактор The GIMP є рідною [6], а наприклад на Windows, Mac OS X [7], ОС сімейства BSD UNIX - FreeBSD / OpenBSD / NetBSD, DEC UNIX (DEC Ultrix, DEC OSF / 1) / Tru64UNIX, і ряд інших UNIX систем він був портований із збереженням своїх користувацьких властивостей. У процесі портування були розроблені графічні бібліотеки GTK (GIMP Toolkit) і gdk (GIMP Drawing Kit), які дозволили використовувати GIMP незалежно від наявності бібліотеки Motif. [8]
  • Сама операційна система Linux перенести на величезну кількість апаратних платформ. [9]
  • Логічна гра World of Goo була спочатку випущена для Wii і Windows, а потім перенести на Mac OS X і Linux.

Примітки

  1. The Free On-line Dictionary of Computing (2003-OCT-10 - dictionary.die.net / porting, стаття "Porting"
  2. Towards Intelligent Engineering and Information Technology - books.google.ru / books? id = fbyUHGk9cH0C & pg = PA413 & dq = porting jit Chapter 6.3 Java: "A major benefit of using bytecode is porting ... JIT compilation and dynamic recompilation allow Java programs to approach the speed of native code without losing portability "
  3. Donald A. Lewine. POSIX Programmer's Guide. Writing Portable UNIX Programs with the POSIX.1 Standard - books.google.ru / books? hl = en & lr = & id = rHyMRyDEG3gC & oi = fnd & pg = PR23 / / O'Reilly, 1991-1994 "IEEE Std 1003.1-1988, commonly known as POSIX ... When applications follow POSIX rules, it is easier to move programs from one POSIX-conforming operating system to another "
  4. Bertrand Meyer. Approaches to portability - archive.eiffel.com / doc / manuals / technology / bmarticles / joop / portability.html / / JOOP (Journal of Object-Oriented Programming), vol. 11, no. 6, July-August 1998, pages 93-95. "All current Eiffel compilers except for one ... use C as their intermediate language .... This technique has been shown to offer key advantages: Guarantee of portability" і далі
  5. native software - www.encyclopedia.com/doc/1O11-nativesoftware.html A Dictionary of Computing, 2004
  6. Spencer Kimball & Peter Mattis. Readme (txt) (11 лютого 1996). Пакет GIMP 0.54 2006 року, см файл README: "The GIMP has been tested (and developed) on the following operating systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX"
  7. William von Hagen. Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS - books.google.ru / books? id = rsSlrQLB8-gC & pg = SA14-PA35 & dq = gimp ported Chapter "Using GIMP" page 14-35
  8. GNU Image Manipulation Program. User Manual. Appendix A. GIMP History 2. The Early Days of GIMP - docs.gimp.org / en / gimp-introduction-history-early-days.html "Main programming advantages were the new toolkits, GTK (GIMP Toolkit) and gdk (GIMP Drawing Kit), which eliminated the reliance on Motif "
  9. The Linux Kernel Archives - kernel.org /: Хоча Linux і розроблявся спочатку для 32-розрядних x86 - ПК (від 386), сьогодні він також працює (принаймні) на наступних архітектурах: 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 і Analog Devices Blackfin; для багатьох з них як у 32-розрядному, так і в 64-розрядному варіанті. (Although originally developed first for 32-bit x86-based PCs (386 or higher), today Linux also runs on (at least) the 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, and Analog Devices Blackfin architectures; for many of these architectures in both 32 - and 64-bit variants)

Література

  • Andrew S. Tanenbaum (1984): Structured computer organization 10th Print. ISBN 0-13-854605-3.
  • Brian Hook. Write portable code: an introduction to developing software for multiple platforms - No Starch Press, 2005; ISBN 1-59327-056-9