peternicklas
Hittade en intressant information innan idag.
http://www.mobilio.se/pryl/iphone-kraschar-mer-an-android#xtor=AD-500-[mobilio_pryl]-[tf_IosKraschar_1403]-[integration]-[aftonbladet]-[ettan]-[24001]

Hur ser det ut i verkligheten, stämmer rapporten/undersökningen att IOS 7 buggar dubbel så mycket som Android 4? Jag har bara hört hur bra IOS är men tydligen så stämmer inte detta?
OBS: Känslig fråga v.v. håller er till ämnet och ingen pajkastning;)
 
Som utvecklare är det iallafall lättare att göra fel på iOS än på Android då iOS kör unmanaged iom objective C och Android kör managed iom Java
 
Och som användare av båda så kan jag säga att ios kraschar oftare, dock kraschar ingen ofta. :)
 
peternicklas
Har själv 5 mobila enheter, alla med Android 4.xx. Har inte upplevt något buggproblem hittills. Har haft några låsningar på en Tab 1 10.1 men tror detta beror på barnets alla spel som installeras hej vilt.
 
Min iphone 4 har aldrig kraschat en enda gång under de snart fyra år jag har haft den, vad jag kan minnas. Min Ipad Air har däremot kraschat ett par gånger.
 
Om man läser rapporten så handlar det ju (som jag tolkar det) om appar som kraschar på respektive enhet och OS. Känns som att artikeln du länkar till har tolkat rapporten helt fel.

Varken min ipad (gen 1) eller någon av de iphones jag haft har någonsin kraschat. Att en app kraschar är dock inte alls ovanligt, byggahusappen kraschar ett par gånger i veckan i snitt.
 
Man kan ju visa allt med statistik. Att något värde är "dubbelt så högt" som ett annat värde säger egentligen ingenting. Sen gäller det ju att kritiskt granska källan. Denna rapport kommer från ett företag som vill sälja övervakning till app-utvecklare. Det ligger i deras intresse att 'skrämmas'.

Inom IT kan man mäta hur mycket som helst. Men det enda som räknas är den subjektiva upplevelsen. Och den är positiv på både Android och iOS som flera här ovan skriver. Appar krashar precis så ofta som användarna accepterar, med allt för hög crash rate så används den inte.

Rapporten talar bl a om "crash rate", hur ofta en applikation krashar under uppstart. Dvs de gånger du får starta den igen med ett extra tryck. Och om "error rate", dvs anrop till 3:e-partstjänster som tex Facebook för login, Amazon för lagring etc. I snitt har varje app 5 sådana externa beroende. I många fall utgår utvecklaren från att dessa tjänster är tillgängliga. Så är inte fallet - och då blir 5 beroenden plötsligt ganska många.

Enligt rapporten så har Facebook en "error rate" på 2.5%. Långt högre än Google Analytics på 0.1%. Skulle dessa värden stämma är det bara hoppas att fler utvecklare blir bättre på att koda mot 3-partstjänster.


PS: Spel är över-representerade i krash-statitstiken med 4.4%.
 
Det finns många olika sätt att se det på, men sen verkar allt förändras en hel del fram och tillbaka.
Är själv Androidanvändare och själva OS har jag inte haft något problem med genom åren (S1, Note1 och nu Nexus 5) men appar är det betydligt sämre med.
Ett stort problem är att det ligger kvar skit från gamla appar och stör i systemet. Ni minns t.ex. den gamla flugan Wordfeud som alla skulle spela ett tag. Den hade en hel del skit som låg kvar trots att jag hade avinstallerat appen och det var först när jag började logga vad som hände i bakgrunden som jag hittade varför jag upplevde mobilen som segt.
Nu verkar man ha förändrat tankegångarna hur mobiler ska fungera. På tidigare Androider jag använt har man haft två alternativ när man vill ur en app. Antingen använder man pilen hela vägen tillbaka tills appen avslutas eller så trycker man på hemknappen och den fick ligga öppet i bakgrunden precis som ios alltid gör. Detta val verkar inte finnas längre utan man tvingas in och stänga apparna manuellt ändå.
 
Är flitig användare av WIndows Phone 8 och har inte märkt av några konstigheter eller hängningar alls. När jag körde WP 7.0 kunde telefonen ibland (nån gång i månaden) starta om under samtal. Detta fenomen har försvunnit med de senaste Lumia-telefonerna med WP8. Kör även en iPhone 4 och har inte heller där märkt av något konstigt. Någon gång har det hänt att en app bara dör och försvinner. Andrig använt Android så kan inte uttala mig om den plattformen. Men självklart är det ju så att ju fler ändringar och konfigurationer som går att göra, desto svårare är det att kvalitetssäkra. WP8 och iOS är ju relativt klåfingersäkra...

/S
 
AndersMalmgren skrev:
Som utvecklare är det iallafall lättare att göra fel på iOS än på Android då iOS kör unmanaged iom objective C och Android kör managed iom Java
Vilket betyder vadå på svenska?
 
Som apputvecklare får du mer hjälp av språket kan man säga när du jobbar mot Android och Windows Phone. Det är väll därför appar på iOS är mer benägna och crasha än dito på Android och Windows phone
 
O
hantverkare1 skrev:
Vilket betyder vadå på svenska?
Det betyder att han missbrukar begrepp och skriver saker som teknisk sett är mer eller mindre felaktiga. Begreppet "managed code" respektive "unmanaged code" saknar innebörd utanför Microsoft .NET. Det är enbart deras terminologi för att göra en distinktion mellan program som kompilerats till ren binärkod och program kompilerats till intermediär bytekod för deras virituella maskin. För att gamla väletablerade programmeringsspråk som t.ex. C++ skall gå att kompilera för den virtuella maskinen har de tvingats införa en del begränsningar. De kallar det då för "Managed C++". Eftersom man dessutom kan blanda språk lite som man vill, med vissa begränsningar, blir det väldigt viktigt att hålla reda på vad som är vad för att veta vilka begränsningar som gäller. Därav begreppet "managed". Det har ingenting med varken iOS eller Android att göra utan förvirrar bara.

På iOS används i första hand ett programmeringsspråk som heter Objective-C. Det är en utökningar av C som är ett klassiskt lågnivåspråk. Program skrivna i det språket kompileras till ren maskinkod. Maskinkod är de instruktioner som direkt styr datorns processor och de är olika på olika processorer. Utmärkande för lågnivåspråk är även att man har direkt åtkomst till datorn minne. Gör man fel kan man alltså skriva över vilken information som helst i minnet, till och med den egna programkoden, och då går saker ordentligt sönder. Som tur är moderna processorer konstruerade så att kärnan i datorns operativsystem går att skydda. Program kan alltså bara skriva sönder sitt eget minne och därmed bara krascha sig själva.

På Android kan man välja om man vill använda C, C++ eller om man vill skriva sina program i språket Java. Java har i det här avseendet två viktiga skillnader jämfört de andra två språken. Det första är att Java helt saknar möjlighet att direkt manipulera datorn minne. Det är alltså mycket svårare för en programmerare att klanta sig. Det andra är att Java inte kompileras till binärkod. Istället kompileras det till intermediär bytekod. Det betyder att man standardiserat en binärkod och sedan skrivit program som simulerar en dator. Ett sådant program kallas virtuell maskin. Det är därför ett java-program går att kompilera på en PC-dator med Windows och sedan går att köra på både Mac- och Linux-datorer. På Android används en särskilt virtuell maskin som heter Dalvik. Eftersom en virtuell maskin är som vilket datorprogram som helst är det betydligt lättare att bygga in både hängslen, livrem, stålhätta och skyddsglasögon i den än vad det är att göra samma sak direkt i kiselkretsen på en riktig processor. Detta göra att det blir ändå svårare att klanta sig när man skriver Android-program i Java.

Sen är det givetvis så att själva språket och hur det kompileras bara är halva sanningen. Mycket hänger på det ramverk, dvs; den samling färdiga kommandon och byggblock, som operativsystem tillhandahåller är utformat. Att iOS är mindre förlåtande än Android beror där helt enkelt på att iOS är ett OS byggt på ren binärkod och kraftfulla lågnivåspråk, medan Android bygger på intermediär bytekod och Java-kod.

Alltså;
Binärkod körs på en riktig datorprocessor.
Intermediär bytekod körs i en virtuell maskin.

I Microsoft .NET följder språk som är "managed" en standard som heter CLI (Common Language Infrastructure) och kompileras till den intermediära bytekoden CIL (Common Intermediate Language) som körs i den virtuella maskinen CLR (Common Language Runtime).

Java har över huvudet taget inte CLI-standarden att göra.
Dalvik är över huvudet taget inte kompatibel med CLR.
Med andra ord; Att kalla Java och Android för "managed code" är helt galet;
https://xkcd.com/386/
Jag sitter på ett tåg och har tråkigt! ;)
 
Redigerat:
  • Gilla
ekblom och 1 till
  • Laddar…
Jag uppskattar ditt långa och utförliga svar men jag fattar ingenting utom att man gör på olika sätt när man fifflar med iphone och android grejer :-)
 
P
På Android sitter programmeraren i en sandlåda och kan bara förstöra sitt eget sandslott. Råkar programmeraren försöka förstöra något utanför sandlådan är dagispersonalen där och snor spaden och puttar tillbaka hen i sandlådan igen.

På iOS finns ingen sandlåda och ingen personal så programmeraren kan springa omkring på hela dagiset och råka krossa fönster och trampa ner andras sandslott utan att någon förhindrar det. Ungefär.
 
Nej stämmer inte, som ovan sagt kan du bara trampa ned ditt eget sandslott.

Dock stämmer det jag sade. Steamboy bara förklarat det lite mer ingående. Btw är inte C ett lågnivåspråk du blandar nog ihop lågnivå och OO då C inte är objektorienterat (Men det är många högnivåspråk som inte är det som tex Lisp). Maskinkod och ASM är lågnivå

edit: Missade hans felaktighet på slutet, du har en GC i Java som är managed och du har abstraherat bort pekare, så visst är Java managed code

Du kan läsa på mer här tex
http://programmers.stackexchange.co...-be-considered-a-managed-programming-language
 
Redigerat:
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.