Vnitřnosti aneb co provádí Mac OS X pod pokličkou

Tímto článkem bych rád zahájil seriál kratších článků, které by se věnovaly technologiím, jež pracují pod povrchem systému z dílny Applu. Takové drobné vysvětlení některých principů, schopností a vlastností, které dělají Mac OS X tím, čím je. Také bych rád nakousnul některé detaily, které jsou třeba programátorům známé, ale běžnému uživateli bývají utajené. Přitom mnohé z nich často hýbou virtuálním světem kolem Macintoshů.

A právě takovým detailem dnes začneme.

Spasí nás 64 bitů?
Ne Eye-wink

A teď vážně. V nedávné době se na světlo světa dostala informace, že následující verze programu Photoshop (součást budoucího balíku Adobe Creative Suite 4) bude podporovat 64 bitové prostředí… ale jen pro Windows. Na první pohled nás může zamrazit. Photoshop, program, který na Macu vzniknul a mimo jiné díky němuž dnes můžeme prohánět naše jablíčka, by měl být v lepší verzi pro Windows než pro Macintosh? Nepředstavitelné. Pojďme si povědět pár důvodů, které vedly Adobe k tomu, že Photoshop pro Mac OS X bude v 64 bitové verzi dostupný až ve verzi obsažené v CS5.
Začneme vhledem do technologií, které služí programátorům pro tvorbu programů. Vlastí důvody, proč Adobe a jiné firmy stále ještě používají při programování staré postupy si necháme na příště.

Za všechno může Carbon
Alespoň takhle by to určitě vyjádřil Ondra Čada. A měl by do značné míry pravdu. Dovolím si teď malou vsuvku pro neprogramátory a jiné ne až tolik pokročilé uživatele.

Malé intro do historie a technologie
Když v polovině 90. let pochopil Apple, že není možné na zelené louce napsat nový a kvalitní operační systém, rozhodl se nějaký koupit. Volba po různých námluvách padla na systém firmy NeXT - NeXTSTEP respektive OpenSTEP. Jednalo se o na svou dobu velmi pokrokový systém, jehož základy tvořilo několik technologií - především UNIXové základy tvořené jádrem XNU/Mach a vrstvami BSD. Obojí samozřejmě zůstalo zachované i v Mac OS X. Další velmi významnou technologií byly objektové knihovny, které tou dobou byly dostupné nejen pro systém NeXTu, ale třeba i pro Windows! Pokud nevíte, co na tomto místě znamená knihovna, vězte, že se velmi zjednodušeně řečeno jedná o sadu nástrojů, pomocí nichž programátoři vytvářejí vlastní programy. A objektová? Tak to už je složitější. Ale pro jednoduchou představu si tento pojem můžeme popsat jako “velmi abstraktní” - při programování se tak nemusíte zabývat všemi detaily, program výrazně rychleji přibývá a obsahuje menší množství chyb. Za tyto vymoženosti ale platíte menší rychlostí výsledného programu (knihovny prostě řeší i situace, které nenastanou, takže na to potřebují víc času). Zásadními vlastnostmi knihoven OpenStepu ovšem bylo, že byly srovnatelně rychlé v porovnání s méně abstraktní konkurencí, a přitom poskytovaly programátorům výrazně vyšší pohodlí a prostředky, o kterých si tehdy mohla konkurence jen nechat zdát (a často může dodnes).
Apple ovšem stál před zásadní otázkou: “Co s programy, které jsou napsané pro starý Apple systém (dále jej budu označovat Classic nebo Mac OS)?”. Jednou z možností bylo je lidově řečeno “pustit k vodě” a vývojářům říct, že pokud chtějí prodávat své programy i pro nový systém, musí je kompletně přepsat. Apple se nejprve o něco takového snažil, jenže narazil. Koncem 90.let totiž neměl ani zdaleka tak silnou pozici na trhu, jakou má dnes. Ne nadarmo je dodnes citován pan Dell (podobnost jména s nejprodávanějšími počítači světa není náhodná Eye-wink ), který tehdy na otázku, co by udělal on, kdyby byl šéfem Applu, odpověděl něco v tomto smyslu: “Rozprodal bych aktiva a vrátil peníze akcionářům.” V té době to na první pohled dávalo smysl. Apple byl dlouhodobě ve ztrátě a nevypadalo to s ním růžově. Navíc svět PC se mu lepil na paty ve všech ohledech. Takže se není co divit právě třeba firmě Adobe, že nebyla ochotna investovat ohromné prostředky do kompletního přepsání svých programů pro nový systém. A to přes to, že Apple sliboval, že takto napsané programy bude možné nativně spouštět i pod jinými operačními systémy (vzpomínáte na zmiňované OpenStep knihovny pro Windows?). Apple tedy tento projekt, nazývaný Yellow Box, vcelku pochopitelně opustil a přišel s jiným řešením:

Jako chytrá Horákyně
Chceme-li zachovat staré programy i na novém operačním systému, co uděláme? No přeci implementujeme staré knihovny i do nového systému! Na první pohled triviální, kdo však ví, o co se jedná, ví také, jaká úskalí to přináší. Apple se tohoto úkolu zhostil poměrně velmi dobře (dovolil bych si tvrdit, že se jedná o možná vůbec nejlepší počin svého druhu). Podařilo se mu do nového OS zakomponovat jak staré (od tédoby označované jako Carbon), tak “nové” knihovny (nově pojmenované Cocoa) . A to tak dobře, že takřka nebylo možné poznat, pomocí kterých je daný program napsaný. A právě to takřka je velmi důležité.

Jaký je tedy rozdíl mezi Uhlíkem a Kakaem?
Pro běžného uživatele na první pohled žádný. Na druhý pohled ale již nějaké ty rozdíly najdeme. Předně se jedná o systém různých pluginů apod. Pokud napíšeme rozšíření pomocí Cocoa, mohou ho používat všechny Cocoa aplikace. U Carbonu nic takového možné není. Takže máte-li někdo stejně jako já v lásce gesta myší, není problém nainstalovat Cocoa Gestures, nebo následnovníka jménem Cocoa Suite, a užívat si gest ve všech aplikacích…. tedy v těch, které jsou napsané pomocí Cocoa, carbonové mají smůlu. Dalším pěkným příkladem jsou Služby (v angličtině Services), které jsou dostupné v horním menu pod názvem programu. Ty sice mohou využívat i carbonové aplikace, ale vyžaduje to od programátorů poměrně dost práce. Cocoa aplikace mají tuto schopnost “od přírody”. Podobně je tomu se systémovým slovníkem a mnoha dalšími podobnými “vychytávkami”. Jinak řečeno - napsat kvalitní program je možné i v Carbonu, ale vyžaduje to nesrovnatelně více práce než pomocí Cocoa. A tím se oklikou dostáváme k odpovědi na případnou otázku, proč Apple prostě nezůstal u svých knihoven a nenechal naopak přepsat programy vytvořené pro NeXT/OpenSTEP. Připravil by se tím o největší výhodu nového systému - knihovny, které umožňují velmi rychlý vývoj velmi kvalitních programů s vynaložením relativně malých prostředků. A to se tou dobou Applu velmi hodilo a samozřejmě hodí dodnes. Nebýt Cocoa, neměli bychom dnes velkou část z našich oblíbených programů, protože v Cupertinu by prostě neměli dost peněz a lidí na jejich vývoj. A neměli bychom asi ani “nejlepší desktopový operační systém na světě” Eye-wink A to je také důvod, proč se Apple snaží, a v různé míře již dříve snažil, o převod všech programů do Cocoa. Dnes již skutečně zůstává jen velmi málo programů od Applu, které jsou napsané výhradně pomocí Carbonu - namátkou se jedná o Finder (skutečně), iTunes či Final Cut.
Zato mezi programy dalších společností najdeme těch carbonových mnoho. Jedná se zpravidla o multiplatformní programy, u kterých se tvůrci (dle mého) chybně domnívají, že jejich vývoj pomocí Carbonu je bude stát méně peněz. Pokud vám není jasné proč by si to měli myslet, pak vězte, že Carbon využívá programovací jazyk C++, který jednak umí skoro každý programátor (já naštěstí ne Sticking out tongue), druhak umožňuje poměrně velmi jednoduše psát multiplatformní knihovny. Naproti tomu Cocoa využívá jazyk Objective-C, který není zdaleka tolik rozšířený a tudíž jej neumí každý.
Postranním efektem této skutečnosti je, že velké programy velkých společností se často chovají z pohledu neznalého uživatele poněkud podivně (a mnohdy je podivně slabé slovo Eye-wink ), zatímco různé specializované aplikace malých společností či samostatných vývojářů jsou na první pohled jasné, pochopitelné a snadno ovladatelné - využívají totiž služeb systému (mají to ostatně skoro zadarmo) a i jejich rozhraní a ovládání se nemusí z důvodů pochybné kompatibility podobat rozhraní jejich bratříčků napsaných pro operační systémy, kde si pod pojmem uživatelská přívětivost představují čerti vědí co, ale rozhodně něco jiného než my od Macintoshů.

Shrnut a podtrženo - rozdíl mezi programy napsanými v Cocoa a v Carbonu nemusíte na první pohled vůbec poznat. Ale zpravidla poznáte, jelikož abyste nepoznali, musel by se programátor aplikace v Carbonu mnohem víc nadřít (a programátoři jsou zpravidla líná cháska Eye-wink ).

Tak to je zatím vše, příště si povíme, jakou zradu připravili u Applu vývojářům na konferenci WWDC v roce 2007, a jak to ovlivnilo přípravu 64 bitové verze Photoshopu pro Mac OS X.

Poznámka pod čarou: omlouvám se všem jazykově cítícím jedincům, kteří nadskakují ze židle při čtení různých anglicismů v předchozím textu. Vím o nich, ale je těžké se jim vyhnout a často by to bylo na úkor srozumitelnosti textu.

Průměr: 5 (11 hlasů)

Komentáře

Poslat nový komentář

Smajlíci
:);):(:D}:):P:O:?8):jawdrop::sick:
Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <center> <embed> <img> <table> <td> <tr> <th> <font> <hr>
  • Řádky a odstavce se zalomí automaticky.
  • Textové smajlíky budou nahrazeny grafickými variantami.

Více informací o možnostech formátování

CAPTCHA
Tento dotaz je zde pro otestování zda jste skutečný návštěvník a pro zabránění automatizovaným robotům ve vkládání spamu do komentářů a stránek.
10 + 10 =
Vyřešte tento jednoduchý matematický problém a zadejte výsledek. Např. pro 1+3, napište 4.