Kompatibilnost ili računalna kompatibilnost (računalna usklađenost) je pojam koji se rabi u računalnoj industriji i kojim se objašnjava mogućnost korištenja perifernih uređaja, sklopovskih modula, i programa iz jedne generacije računala na drugoj generaciji, ili mogućnost sličnog korištenja sklopovlja ili softvera jednog proizvođača računala na liniji računala na drugog proizvođača. Kompatibilnost jest u stvari sukladnost, i u jednom kompleknom sustavu sukladnost je važna ako taj sustav želi raditi bez većih poremećaja. Ovaj pojam bio je veoma važan u računalnoj industriji, jer svaka odluka u razvoju jednog računala na sklopovskoj razini, te na razini operacijskog sustava bi na neki način obezvrijednjivala sklopovlje, periferne uređaje i softver koji su potrošači posjedovali. U novije vrijeme, softverska kompatibilnost manje je važna jer je moguće oponašati (emulirati) jedan računalni sustav na drugom, a padom cijene sklopovlja i perifernih uređaja sklopovska. Kompatibilnost (sukladnost) lakše se može postići ako su standardi dostupni svim proizvođačima i razvijateljima, bilo da su standardi na razini sklopovlja ili softvera (npr. API).

Hardverska kompatibilnost

uredi
 
Priključak USB-A, koji se rabi na većini današnjih računalnih tipkovnica i miševa

Hardverska kompatibilnost označava svojstvo računalnog proizvoda (računala ili neke njegove periferije) takvo da je uređaj uporabljiv s novijim i starijim proizvodima.

Svi USB uređaji su tipično hardverski kompatibilni tako da će računalni miš ili tipkovnica koji interno podržavaju sučelje USB 1.1 raditi spojeni i na priključnicu iste generacije (1.1) odnosno standarda i na priključnicu novije generacije, npr. na USB 2.0 ili USB 3.0. To je otpočetka tako zamišljeno pa slovo U u pokrati USB dolazi od universal; prethodno su tipkovnice imale dvije vrste konektora, DIN i PS2, dok su računalni miševi imali serijski priključak DB9 ili kasnije PS2.

Softverska kompatibilnost

uredi

Softverska kompatibilnost može se odnositi na sljedeća svojstva računalnog softvera:

  • stalno grafičko sučelje (GUI)
  • stalno računalno sučelje za izvođenje (ABI)
  • postojanje upravljačkih programa (drivera) za pojedini operacijski sustav
  • stalno računalno sučelje (API)

Stalno grafičko sučelje

uredi

Kompatibilnost sučelja prema ljudima je svojstvo softvera gdje se elementi sučelja bitnije ne mijenjaju. Ako se neki softver mijenja, npr. izlazi nova inačica operacijskog sustava (npr. Linux Ubuntu ili Windows), sučelje će ostati slično ili identično onome kakvo je bilo u prethodnoj inačici proizvoda. Obično se mijenja defaultna pozadina radne površine u svakoj novoj inačici operacijskog sustava, mijenjaju se boje ili slike, ali osnovni elementi sustava se ne mijenjaju.

Primjeri nekompatibilnih promjena grafičkih sučelja su promjene nastale u npr. Windows Vista (objavljena početkom 2007. godine)[1] ili kad je Ubuntu do tada defaultno GNOME 2 sučelje zamijenio GNOME 3 sučeljem i Unity ljuskom, dogodila se pobuna korisnika na Internetu. Microsoft je ubrzo zamijenio Vistu s Windows 7 operacijskim sustavom (u listopadu 2009. godine), dok je Canonical prvotno izvršio radikalne promjene na Unityju, a kasnije se vratio na GNOME, doduše inačicu 3, dok je GNOME 2 sučelje i dalje uporabljivo na Linuxu kao MATE sučelje.[2][3]

Stalno računalno sučelje za izvođenje

uredi

Stalno računalno sučelje za izvođenje je ono što se 1980-ih smatralo za kompatibilnost, jer je tada npr. tvrtka Commodore International imala na tržištu dva modela računala, Commodore 64 i Commodore VIC koja su rabila praktično isti procesor u tri izvedbe: MOS 6502., 6510. i 8500., ali programi za jedno računalo nisu se mogli izvršavati na drugome. Sličan "problem" u isto vrijeme su imali i neki drugi proizvođači.

Kako bi riješili prigovore korisnika odnosno kupaca, novija računala su rabila emulaciju, pa su se programi (najčešće igre) za neka popularna računala, npr. spomenuti Commodore 64 mogle izvršavati i na novijim modelima istoga proizvođača, Commodore 128.

Sličan se problem pojavio 30-ak godina kasnije, kad je većina operacijskih sustava prelazila s 32-bitne inačice na 64-bitnu, programi napravljeni za 32-bitni sustav nisu htjeli raditi na 64-bitnom operacijskom sustavu.

Isto vrijedi i za programe za mobitele, gdje inačica programa za Android (apk) ne radi na iPhone mobitelima i obratno.

Postojanje upravljačkih programa

uredi

Upravljački programi (driveri) za hardver dio su jezgre operacijskih sustava, bez obzira bila ta jezgra monolitna ili modularna. Protjek vremena čini da jezgra raste, pa proizvođači operacijskih sustava povremeno uklanjaju upravljačke programe hardvera koji se relativno rijetko rabi, kako bi smanjili veličinu jezgre. To naravno nije veći problem ako imate upravljačke programe za vaš hardver za vaš operacijski sustav na CD-u, USB-u ili negdje. Ako ih nemate, ako ih nema na Internetu, onda to može biti ogroman problem, rješiv tek kupovinom novoga hardvera. Vlasnici staroga skenera ili pisača mogu doći u situaciju da njihov pisač ne radi s njihovim računalom, zato što računalo, točnije operacijski sustav računala nema upravljačke programe za vaš, nešto stariji skener ili pisač.

Stalno računalno sučelje (API)

uredi

Računalni softver u obliku naredbi rabimo putem terminala, odnosno ljuske operacijskog sustava, gdje ga pokrećemo s nekim parametrima, ako se softver stalno izvršava, te sluša na nekom internetskom priključku na nekom poslužitelju zovemo ga (računalni) servis.

Bez obzira na način uporabe, programe koje s vremenom počne rabiti velik broj ljudi možemo zvati ili nužnim (ljudi ih rabe jer moraju, jer ne postoji drugi program za tu svrhu) ili korisnim programima, jer u suprotnom ih ne bi rabio velik broj ljudi. Kad takvi, često rabljeni programi koje rabi velik broj ljudi promijene način svoga korištenja, npr. redoslijed ulaznih parametara, ili oblik ulaznih podataka, stvara se problem. Ako su promijenjeni programi dio drugih programa ili računalnih sustava, onda se može dogoditi da cijeli sustav prestane raditi zato što je jedan mali dio sustava promijenjen.

Jedan karakteristika dobroga API-ja je neovisnost o redoslijedu ulaznih parametara, npr. većina Linux ili Unix naredbi prihvaća različite parametre, te radi na isti način neovisno kojim su redoslijedom zadani. Primjer:

  • iptables -n -v -L
  • iptables -v -n -L
  • iptables -L -n -v
  • iptables -nvL

Ovdje ne ulazimo u objašnjavanje čemu služi naredba iptables i njene opcije n, v i L, nego je važno uočiti da se radi o nekoliko kombinacija ulaznih parametara n, v i L, pri čemu su oni navedeni različitim redom, zasebno ili zajedno, no bez obzira na redoslijed i grupiranje, ishod je uvijek isti.

Moguće najvažnija karakteristika dobroga API-ja je kompatibilnost unatrag, odnosno stalnost API-ja. Kao i fizički odnosno hardverski sustavi, i softverski se sustavi mijenjaju s vremenom. Bez obzira koliko dobro zamišljeni, mijenjaju se jer se mijenjaju zakoni, mijenjaju se okolnosti u kojima sustavi moraju raditi. Npr. financijski, računovodstveni softver koji ne bi PDV imao definiran kao varijablu na jednome mjestu u programu, nego bi na desetak, stotinjak ili više mjesta imao napisanu brojku 1,25 imao bi ogroman problem kad se sljedeći put bude mijenjao PDV u Hrvatskoj. Iako je navedeni primjer PDV-a primjer dobre parametrizacije, a ne stalnost API-ja, on dobro oslikava što se događa kad dođu promjene koje nisu predviđene - program prestaje točno raditi ili raditi uopće.

Rješavanje problema kompatibilnosti

uredi

Uzroci problema su višestruki:

  • Nepostojanje definiranog, javnog standarda (zatvorenost standarda). Tijekom razvoja HTML-a i CSS-a, proizvođači softvera u svoje preglednike često su ugrađivali HTML oznake koje drugi proizvođači nisu rabili jer nisu bili dio standarda, te su na taj način "predlagali" što bi se trebalo dodati u javni standard. Tako su nastale HTML oznake <FONT> i <MARQUEE> koje nisu zaživjele, iako je oznaka <FONT> bila dio standardā HTML 3.2 i HTML4. Najveći proizvođači računalnih procesora za osobna računala Intel i AMD već desetljećima vode utrku jedan s drugime, u kojoj ponekad vodi jedan, ponekad drugi proizvođač.
  • Protjek vremena. Kao što je ISA standard s vremenom zastario, odnosno postao prespor za uporabu za grafičke kartice, ekstenzija mu je bila ISA-VLB, slično vrijedi za PCI i USB. Iako su navedena računalna sučelja nastala kasnije, zamjenom ranijih, zastarjelih komunikacijskih sučelja, nedovoljno jasan standard je s vremenom pokazao izvjesne nedostatke.

Tako smo dobili USB-A, USB-B i USB-C priključke, jer se broj različitih USB kabela i pripadajućih punjača mobilnih telefona počeo toliko umnožavati, da je svijet dobio problem industrijskog otpada - punjača mobitela.

Postoji nekoliko pristupa kojima se problem kompatibilnosti umanjuje, zaobilazi ili rješava:

Danas (2020. godine) postoje emulatori za 8-bitna računala iz 1980-ih za većinu modernih operacijskih sustava, tako je i danas moguće igrati igre iz 1980-ih.

Kako programeri ne bi morali raditi poseban program za svaki vrstu računala ili operacijskoga sustava, razvijen je programski jezik Java i pripadajući virtualni stroj, te se program napisan u Javi može izvršavati bez promjena na svakom računalu na kojem je instalirana Java. Da ne bi sve bilo idilično, od uvođenja Jave 1.0 1995. godine do 2020. godine došlo se do Jave 15,[4] te naravno programe napisane u Javi 1 ne treba pokušavati izvoditi na računalu s Javom 8, 11 ili 15, niti obratno. No programi pisani za Javu 6 trebali bi se bez problema izvoditi na svim novijim inačicama. To je jedan od razloga što se programi vezani uz bankarstvo, i oni koje rabe službenici u bankama, i oni koje korisnici banaka rabe kod kuće (za rad s čitačima kartica) tipično programiraju u Javi.

Izvori

uredi
  1. news.microsoft.com, "Microsoft Launches Windows Vista and Microsoft Office 2007 to Consumers Worldwide", objavljeno 29. siječnja 2007., pristupljeno 19. rujna 2020.
  2. phoronix.com, objavljeno 5. travnja 2017. pristupljeno 19. rujna 2020.
  3. arstechnica.com, "Ubuntu Unity is dead: Desktop will switch back to GNOME next year", objavljeno 5. travnja 2017. pristupljeno 19. rujna 2020.
  4. blogs.oracle.com, "The Arrival of Java 15", objavljeno 15. rujna 2020., pristupljeno 19. rujna 2020.