Pokud Apple bude nekompatibilně měnit C/Objective C/C++ rozhraní, tak Apple nepomůže ani svěcená voda.
Vy jste toho asi nikdy moc nenaprogramoval, že?
Pro autory nativních aplikací rozhodně nebude otázkou jednoho kliknutí, ale klidně několika měsíců tvrdé dřiny, když nekompatibilita bude veliká.
Navíc autoři těch aplikací se na to mohou generálně vybodnout stejně jako Adobe a nejspíše by se vybodli ve většině případů. Asi autoři prodávaných aplikací + několika procent dalších by změnu udělali, ostatní by to nechali dožít.
Tohle nebude ten pravý důvod. Při změně API půjde do háje všechno – pak by záleželo jen na tom, jak moc jsou věrní fanoušci Apple, případně jako moc jim Apple bude přinášet peníze – aby to strašné martyrium spojené se změnou API postoupili a zafinancovali ho časem a penězi z vlastní kapsy.
Jedním z úspěchů Microsoftu je, že nikdy uživatele nenutil ke změně API. Za neúspěchem Linuxu na dekstopech se skrývá především neustálé přeorávání API.
V CS5 nemusím naklikat tuny odpadu, můžu napsat poctivý kód.
A obráceně - v Objective-C můžu napsat tuny nesmyslů, memory leaků, atd.
Neměl by Apple hlídat radši kvalitu _aplikací_ místo kvality _nástrojů_?
Na http://developer.openplug.com/forum/viewtopic.php?f=3&t=609 je uveden zajímavý test, kdy překladem z ActionScriptu do C vznikl efektivnější kód než ekvivalentním zápisem v Objective-C.
Ve zkratce - Apple se take chrani proti pripadnym problemum pri pridavani novych featur do OS.
Jednoducha predstava: Apps portovane z Flashe budou povoleny. Do roka jich v AppStore bude treba 20%. Apple se rozhodne do OS5 pridat dalsi core features, jako aktualne multitasking. Vyda v predstihu aktualizovane SDK a pro autory nativnich apps je otazkou jednoho klinuti, aby vygnerovali aktualizovanou verzi sve aplikace. Ale co tech 20% ne-nativnich apps? Ma Apple jistotu, ze Adobe (a pripadni dalsi tvurci vyvojarskych platforem) zavcasu (a v odpovidajicim utajeni) upravi sve nastroje? Nebo riskuje, ze zase na Adobe bude pul roku cekat a celou dobu poslouchat nastvane uzivatele, ze "tahle aplikace na novem OS pada", aniz by si uvedomili, ze Apple s tim nemuze nic udelat?
Proc by mel Apple riskovat tyhle problemy, kdyz nemusi? Proc by mel rozvoj sve platformy nechat kontrolovat nekym tretim, navic temi "lenochy z Adobe"?
Rozumím-li tomu dobře, pak překladače z Flashe (ActionScriptu) do Céčka (viz http://www.openplug.com/) jsou co se týče tohoto problému OK, jelikož nakonec vždy musím použít SDK Applu? Pak ale je section 3.3.1 trochu divně formulovaná, protože se mi zdá, že podle ní OK nejsou (píše se tam, v jakých jazycích může vývojář psát).
Možná bych měl dodat, že při nekompatibilitě API a razantní změně featur a vnitřního fungování je právě daleko pravděpodobnější, že Apple podrží právě ty nadstavby typu AIR, .NET, Java a další, protože změny vykryjí svojí mezivrstvou. Nativní C aplikace by to koupily nejvíce a nejméně by se jich převedlo.
Takže je to přesně naopak jak píšete. Hodláte-li něco často, nebo výhledově měnit, pak mezivrstva navíc je pro Vás požehnání za které budete při změně děkovat Bohu, Alláhovi, Perunovi i Manitúovi.
Tedy C aplikace jsou první co začne drtit Apple a co Apple položí, pokud by Apple změnu udělal. A aplikace psané na mezivrstvách typu AIR a dalších by Apple naopak jako jediné při takové změně podržely.
Ono je to trochu komplikovanejsi, zatim v podstate nikdo nevi. Existuje pozadavek na vytvoreni (rozumej fyzicke napsani kodu) aplikace v C, C++, Obj-C, JavaScriptu atd., takze teoreticky v ActionScriptu zacit psat nemuzes. Ovsem jak to (opet teoreticky) Apple odhali, pokud to prozenes preprocesorem a zkompilujes jako nativni C kod..
Podobny problem se resi s (Mono) C#. Dle novych pravidel prozatim proslo nekolik aplikaci v Unity3D, takze bud heuristika jeste nepracuje (Mono prevadi C# na Obj-C a pak kompiluje) anebo to proste bude na libovuli konkretniho cloveka. Konkretni jednani mezi Unity a Apple se budou konat tento tyden. Pokud projde MonoTouch a prekladace Flashe nikoliv, bude mit Apple dalsi maslo na hlave.
IMHO tam meli dat klauzuli "neprijmeme kazdou sracku, ale piste si v cem chcete", a byl by klid a mir:).
Pokud bude pro libovolný jazyk existovat preprocesor do C/C++, tak to nikdo nemá šanci odhalit.
Například klidně můžete programovat v PHP, protože ho lze zkompilovat do C++ a následně protlačit do Apple.
Málokdo třeba ví, že starý Microsoft Visual Basic kompiloval převodem do C a následně přes C kompilátor.
Kdybych já byl na místě Adobe managerů (jakože nejsem a manageri nemají programátorské schopnosti většinou), tak vytvořím kompilátor Flashe/AIR přes C/C++ překladač. Nicméně na druhé straně by to bylo přiznání poníženosti před Adobe, takže to možná z diplomatických důvodů není vhodné, protože požadavky Apple by se mohly stupňovat. Takže managementu nadnárodních firem nerozumím, ani jaké je správné řešení.
OMG. Vite, ze Obj-C je rozsirenim C a C++ se da v XCode kompilovat/prilinkovat a vesele michat s Obj-C kodem ? To znamena ze neco napsane v C je taky Obj-C program ? Me na Obj-C vadi spousta veci, ale vykon a efektivita v nem napsane aplikace to rozhodne neni.
Apple zadne nekompatibilty API neuvadi, ctete mezi radky neco, co tam neni. Kazda mezivrstva aplikaci obecne diskvalifikuje oproti "nativni". A toho se boji nejvice, tuny odpadu naklikaneho pres CS5 apod.
Jeste jsem nevidel aplikaci pro Win ci OS X psanou s vyuzitim cross-platform vrstvy, ktera se by se alespon vyrovnala aplikaci na miru site pro dany OS. Linux nezminuju, tam je situace malinko jina.
Objective-C je velmi neefektivní jazyk. Ve skutečnosti nemá efektivitu klasického C/C++ jazyka.
To, že je pomalejší, než i řada kritizovaných nadstaveb, na to vemte jed. To jste neobjevil nic nového. Dobře napsaný Java, nebo .NET program zkompilovaný do strojáku bude velmi snadno výrazně rychlejší a efektivnější, než ObjectiveC kód.
Kdyby ObjectiveC nevytvořil Apple, zakáže ho pro neefektivitu úplně stejně jako AIR, .NET a další.
"při nekompatibilitě API a razantní změně featur a vnitřního fungování"... ano. A take ovsem pri potope sveta a pri zasahu Cupertina kometou. To jsou pak developeri v nativnim Objective-C v pytli a iPhone platformu zachranuji Flashari, o tom zadna.
Zkuste jeste zvazit kompatibilitu API a nerazantni pridavani featur a budem zhruba v podobnem bode. Extremy nechme extremistum.