Avatar
bashmenaut
Člen
Avatar
bashmenaut:

Ahojte, chcem sa spytat, ci ma niekto skusenost s programovanim appky na IOS v C#. V c# som tak stredne pokrocili, ale v poslednej dobe ma chytilo jablko za srdce a tak uvazujem naprogramovat nejaku appku. Vie niekto z vlastnej skusenosti porovnat vyvoj v C#/Xamarin vs. C-objective/Xcode? Idea vlakna je taka, ci ma cenu vrtat sa v C-objective, ked trh ponuka spominany Xamarin. Dakujem vsetkym :)

 
Odpovědět 17.1.2015 1:39
Avatar
Honza
Člen
Avatar
Honza:

Ahoj, přímo s Xamarinem zkušenosti nemám, ale s programováním aplikací v C# pro Windows (Visual Studio) a v Objective-C pro iOS/OSX (Xcode) ano.

Vzhledem k tomu že zatím neplánuji portovat moje mobilní aplikace na jiné systému (Windows Phone, Android) tak pro iOS vyvíjím v nativním Xcode. Za posledních pár let se Objective-C přiblížil k .Netu natolik, že už není pro nováčka takový hardcore se v něm vyznat. Samozřejmě obě platformy jsou úplně jiné, ale přidali tam garbage collector, automatický čítač referencí atd. Předtím sis musel paměť spravovat sám což se sice dalo, ale když jsi na to nebyl zvyklý tak ze začátku aplikace dělaly zajímavé věci.
Mimo to pokud jsi ještě s Objective-C nedělal, můžeš využít nový programovací jazyk Swift který je rovněž podporovaný nativně v Xcode. Oba jazyky jsou si víceméně rovnocené, jen mají jinou syntaxi a Swift je novější (uvolněný před pár měsíci) takže podporuje pár věcí co usnadňují práci a je takový obecně svižnější. Podle Apple by měl být o dost rychlejší, ale mně to nepříjde (je fakt že nemám aplikace které vyžadují extrémní výkon). Navíc je syntaxí víc podobný C# (vyznat se v těch hranatých závorkách co obsahuje Objective-C byl pro mě ze začátku trochu oříšek) :) Na druhou straun tím že je Swift nový, tak pro něj není tolik tuoriálů a návodů jako pro Objective-C, i když se fóra zabývající se tímto jazykem pomalu plní.
Objective-C i swift se dá kombinovat (v rámci jednoho projektu), takže není problém si stáhnout nějakou hotovou třídu která něco řeší v Objective-C a přidat si jí do projektu který je ve Swiftu.

Pokud by tě něco zajímalo, tak se zeptej konkrétně. Ke Xamarinu se bohužel vyjádřit nemůžu protože ho neznám, třeba sem napíše ještě někdo kdo ho používá. Můj názor je ten, že je nejlepší vyvíjet v nativním prostředí (třeba se ale pletu) :) Mám to jednodušší o to že nepožaduji multiplatformnost. Buď vyvíjím pro windows nebo pro iOS/OSX :)

Nahoru Odpovědět  +3 17.1.2015 17:13
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
bashmenaut
Člen
Avatar
Odpovídá na Honza
bashmenaut:

Hmm no musim povedat ze mam v hlave poriadneho chrobaka :) Pre vyvoj v C# som bol v podstate donuteny sefom (nastupoval som ako tester), ale este stale necitim nadsenie pri studovani jazyka c#. Za to ked som dnes rano stiahol do ipadu Swift guide, hltam stranu za stranou. Len teraz je otazka, ci sa mi oplati vykaslat sa na C# a pustit sa naplno do Swiftu, pretoze v C# uz to co viem nakodit. Navyse ponuky zamestnania su v pomere 99% C# a 1% IOS :D

 
Nahoru Odpovědět 17.1.2015 23:57
Avatar
Odpovídá na bashmenaut
sadlomaslox25:

ja mam zkusenosti z c# i xamarinem (moje cesta byla pascal->delphi->C#).

proti xamarinu:

  • rozdil je pouze ve velikosti v aplikace (ten se meni v zavislosti na tom kolik C# "features" pouzijes 1,2mb - 8 mb myslim).
  • xamarin plugin pod VS nebyl uplne nejstabilnejsi (naposledy sem neco delal pul rokem) ale stabilita se casem zvysovala.
  • je samozrejme vice tutorialu na nativni jazyk nez na xamarin.
  • pro ios vyvoj musis mit macOS.
  • xamarin vyzaduje pokrocilou znalost jak C# tak i dane platformy a taky xamarinu samotneho.

pro xamarin:

  • neni zde vykonostni rozdil mezi xamarinem a nativnimi jazyky. xamarin urcite neni zadny phonegap a podobne patlaniny:)
  • objC je zastaraly jazyk, swift moc novy a oba jsou locknute jen pro firmu apple. C# je rozhodne vic rozsireny a prohlubovani znalosti C#/.NET urcite neprijde nazmar.
  • spousta exitujicich .NET knihoven je kompatibilnich s xamarinem
  • daji se pouzivat i orig objectiveC knihovny
  • pri pouziti MVVM architektury velice jednoduse delas aplikace pro vsechny platformy.
  • xamarin je nezavisly na MS, google i applu, takze kdokoli z nich krachne tak se nic moc nedeje :)

pokud te zajima vyvoj mobilnich aplikaci jako zivnost, tak dnes se uz asi nevyplati vyvyjet nativne protoze pak pises stejny kod pro kazdou platformu co chces pokryt a z hlediska multiplatformniho vyvoje je zde jen xamarin a phonegap

 
Nahoru Odpovědět  +1 18.1.2015 2:57
Avatar
hanpari
Redaktor
Avatar
Odpovídá na sadlomaslox25
hanpari:

Budu reagovat na poslední odstavec:

"z hlediska multiplatformniho vyvoje je zde jen xamarin a phonegap"

Těch možností je určitě víc, za sebe přidám kivy.org a python

 
Nahoru Odpovědět 18.1.2015 7:10
Avatar
Odpovídá na hanpari
sadlomaslox25:

no je mozne ze sem to trochu prehnal s tema frameworkama. co vim ja tak este existuji firemonkey(pas­cal),appcelera­tor, unity(c#,na hry), nejaky java klon xamarinu, sencha.

ale pokud se bavime o realnem pouziti tak bych to asi videl tak na phonegap,xamarin a unity. ostatni jsou bud nekvalitni nebo mene zname a tudiz ne tak moc rozsirene.

 
Nahoru Odpovědět 18.1.2015 13:10
Avatar
bashmenaut
Člen
Avatar
bashmenaut:

A myslite, ze ked clovek ovlada iba swift, teda programuje cisto na ios/osx, sa v pohode uzivi na sk/cz? U nas vo firme to vyzera velmi biedne, lenze nechcem riskovat, ze budem odkazany iba na predaj appiek na appstore.

 
Nahoru Odpovědět 19.1.2015 8:24
Avatar
Odpovídá na bashmenaut
sadlomaslox25:

pamatuj ze specialista (at dela cokoliv) se nikdy o praci bat nemusi ;)

 
Nahoru Odpovědět 19.1.2015 9:45
Avatar
Andrej Farkaš:

Len tak pridám, že aj keď Apple prezentuje, že Swift je rýchlejší ako Xcode, tak kopec testov preukazuje opak. Napríklad aj na CodeCon 2014 povedal Martin Mrenica (Elite Solutions), že v ich testoch zvíťazil Xcode.

Nahoru Odpovědět 19.1.2015 10:15
Live. Love. Learn.
Avatar
Honza
Člen
Avatar
Odpovídá na Andrej Farkaš
Honza:

Zřejmě myslíš Objective-C (Xcode je IDE které podporuje jak Swift tak Xcode). Ohledně toho porovnání rychlosti, dle mého názoru bude víc záležet na tom jak ten konkrétní program bude napsaný než v čem. Jak v Objective-C tak ve Swiftu se dají dělat prasárny které výslednou aplikaci zpomalí.
V Xcode to může být např. špatné využívání paměti, pokud si jí programátor sám spravuje, ve Swiftu zase třeba používání dynamického typování (Apple to sice doporučuje, ale podle mě musí být někde znát když si runtime musí sám za běhu zjišťovat co to je za datový typ, kromě toho mi příjde přehlednější když už při deklaraci vidím co se do proměnné má uložit). Takových věcí tam je určitě mnohem víc. Myslím si že pokud by byla stejná aplikace napsaná v Objective-C i ve Swiftu "ideálním způsobem", tak její rychlost bude +/- stejná.

Nahoru Odpovědět 19.1.2015 11:35
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Honza
Člen
Avatar
Odpovídá na Honza
Honza:

Hm koukám že jsem udělal stejný přežblept jako ty :D Mělo tam být: "Xcode je IDE které podporuje jak Swift tak Objective-C" A zrovna tak na začátku druhého odstavce mělo být Objective-C misto Xcode. Ach ty pondělky :)

Editováno 19.1.2015 14:20
Nahoru Odpovědět 19.1.2015 14:18
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
coells
Redaktor
Avatar
Odpovídá na Honza
coells:

Spíš jsi udělal jeden velký přežblept, ach ty pondělky :-)

Swift je bezpečně typovaný jazyk - narozdíl od Objective-C, kde můžeš využívat neformální protokoly pro dynamický dispatch (nehledě na to, že všechna volání jdou přes dynamický dispatcher). Ve Swiftu nemůžeš mít ani (void*), ani id<>, pokud jsi to zkoušel, tak jsi určitě narazil na nutnost mít vždy jasně definované typy, přičemž Any a AnyObject umí pěkně zlobit, když potřebuješ posílat opaque data.

Díky tomu může být Swift rychlejší než ObjC, protože optimalizátor má více prostoru a dokáže generovat statický kód, inlinovat metody a provádět řadu dalších zrychlení. Nemluvíme tu o x-násobném zrychlení, ale o jednotlivých instrukcích, lepší práci s ARC a pamětí vůbec, přímém volání metod místo dispatche, atd.

Zatím je to ale hudba budoucnosti. Swift není ještě dostatečně vyspělý na reálné aplikace. Poslední patche XCode sice odstranily segfaulty během kompilace a studio už nepadá 50x za den, ale jen tak 5x (a to mluvím o v6.1.1, nikoliv betě). Navíc se ve Swift neobejdeš bez znalosti Objective-C, protože některé frameworky ještě nejsou podporované (nebo mizerně), takže bridging je na denním pořádku. Navíc je uvnitř tuna bugů, takže i nejjednodušší kód umí leakovat paměť (nebo je chyba v Instruments, které zatím také moc nefungují na iOS8). Když k tomu připočtu násobně vyšší složitost toll-free-bridging oproti ObjC (příklady na stackoverflow jsou většinou špatně, je vidět, že tomu zatím rozumí jen málo lidí), sečteno podtrženo si ještě pěkně dlouho počkáme.

Moje osobní statistika odpovídá i ostatním firmám, když jsem hledal reference na Swift - polovina kódu za polovinu času, ale 4x déle trvá hledání bugů v knihovnách od Apple.

 
Nahoru Odpovědět 19.1.2015 16:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.