pátek, dubna 27, 2007

Kakao

Před časem jsem tu hovořil o společnosti Apple. Jelikož jsem tehdy neměl čas udělat si domácí úkoly pořádně, a ověřit si co by bylo záhodno ověřit, snažil jsem tyhle resty dohnat a podívat se především na Cocoa a Objective-C, abych tak trochu věděl jak vlastně vypadají.

Takže po krátkém zkoumání musím uznat, že Cocoa je opravdu pěkně navržená. Je to objektově orientovaný framework se vším všudy, vypadá docela konzistentně a když si na něj člověk zvykne a trochu ho sestuduje, určitě se v něm dobře pracuje (což je nakonec vlastnost všech slušně navržených frameworků). Oproti tomu Objective-C není úplně můj šálek čaje, a i když všechny ty věci se zprávami okoukané ze Smalltalku vypadají docela rozumně, není to syntaxe, která by mě nějak oslovila. Sympatické je, že do definic uživatelského rozhraní se nedá psát kód (jak je dobrým zvykem všech programátorů ve Visual Basicu), ale jen se připojují objekty, do kterých se pak nasměrují příslušné zprávy (jako že uživatel někam kliknul myší a tak podobně). A pokud tomu dobře rozumím, tak k Mac OS X se dodává zdarma vývojové prostředí Xcode, která rovněž vypadá (pro člověka odkojeného Visual Studiem) zajímavě.

Prostě se zdá, že vývoj pro Mac OS X je docela příjemná záležitost.

Přemýšlel jsem: proč vlastně Microsoftu trvalo tak dlouho, dát dohromady slušný vývojový rámec (myslím .NET), když na Macu existuje (sice ne managed, ale objektový) takový rámec už drahně let? Ano, tušíte správně, jde o to, že zatímco Microsoft se koncem osmdesátých a začátkem devadesátých let bahnil na platformě PC, Jobs, odejitý z Apple, založil firmu na luxusní pracovní stanice NeXT, ve které si mohl dovolit navrhnout takový počítač, že vedle něj tehdejší PC vypadaly jako chudý příbuzný.

Dalším problémem je zpětná kompatibilita. Microsoft je jí posedlý, a je fakt, že když jedno procento zákazníků, kterým přestane něco fungovat proto, že jste porušili kompatibilitu s předchozí verzí, je nějakých 10 miliónů lidí, tak není snadné něco měnit. Poučné jsou v tomto ohledu texty Raymonda Chena (ano, to je ten, nad jehož příspěvkem o [ne]kompatibilitě SMB jsme tu před časem diskutovali), který se snaží vysvětlit, že někdy se chyba změní ve vlastnost, protože programátoři jsou čuňata, a chybu nelze opravit, protože na ní spoléhá příliš mnoho lidí.

Dobrá, to vysvětluje, proč je Win32 API takové jaké je (14000, slovy čtrnáct tisíc funkcí), ale nevysvětluje to, proč MFC (Microsoft Foundation Classes, tedy, vulgárně řečeno, objektový obal kolem Win32 API) musely být, ve srovnání s Cocoa, takový hnus. Asi by se daly najít nějaké argumenty ohledně výkonu, dědictví operačního systému založeného na zprávách, a tak dále, ale opravdu neznám nikoho, kdo by si pochvaloval jak dobře je to MFC vymyšleno, a jak dobře se v něm pracuje (tedy kromě třídy CString, ta se docela povedla).

Nicméně. Nicméně jsem chtěl říct, že další zajímavé materiály ke studiu lze nalézt na CocoaLab, nebo na stránce věnované historii Apple Orchard (to je opravdu zajímavé čtení -- jakkoliv nevím na kolik validní; třeba texty o Pixaru a NeXTu jsou vážně poučné).

Tak pěkné čtení...