Σύγκριση Android/iOS

Συζητήσεις σχετικά με θέματα που αφορούν λειτουργικά συστήματα (Linux, *BSD, MacOS, Windows, κτλ.) .
Post Reply
User avatar
cypher
Venus Former Team Member
Posts: 6207
Joined: Mon Sep 29, 2008 9:12 pm
Academic status: Alumnus/a
Gender:

Σύγκριση Android/iOS

Post by cypher » Fri May 31, 2013 6:10 pm

[/offtopic]
ja_the_invincible wrote:Ότι π.χ πρέπει δεν χρειάζεται να κάνεις ένα generic κώδικα που να παίζει παρόμοια στις διαφορετικές εκδόσεις / οθόνες / κλπ που κυκλοφορούν δεν είναι ευκολία?
Χρειάζεται να κάνεις δύο φορές τον ίδιο κώδικα για την οθόνη των iphones και των ipads. Αλλά χαίρω πολύ, αυτό ειναι μόνο επειδή έχει ελάχιστα μεγέθη οθονών. Αν θές να κάνεις κάτι λίγο πιο περίεργο απο τα καθιερωμένα που π.χ. να έχει σχέση με δίκτυο σου βγάζει την ψυχή. Και για να το στήσεις για να παίζει θέλει και ενα σωρό γραφειοκρατίες με πιστοποιητικά και profiles :sick: που σε android γίνονται με εναν wizard σε 30 δεύτερα. Πέρα απο το ide που την παλεύει κάπως απο θέματα αυτόματης παραγωγής κώδικα η γλώσσα ειναι κακάσχημη. Πρέπει να γράψω κάτι τις τελευταίες δυο εβδομάδες και σιχαίνομαι την ζωή μου όποτε βλέπω τον κώδικα.
Θάνατος!

hipster fact about the NS in front of the class names in the ios api:
It stands for NextSTEP, the operating system that Steve Jobs (caused to be) built after he was evicted from Apple. Objective-C and the NextSTEP API are the basis of the newer OpenSTEP and MacOS-X APIs.

( ακόμα και στον κώδικα βλέπεις την "εταιρικότητα" της Apple :sick: )
[/offtopic]
ImageImageImageImageImageImageImage
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Σύγκριση Android/iOS

Post by nachos » Mon Jun 03, 2013 11:59 am

Αυτό με το μέγεθος της οθόνης έχει αρχίσει να πάει περίπατο και λόγω iPad, και λόγω διαφορετικών πλέον μεγεθών εντός του ίδιου προϊόντος (iPhone <= 4S vs iPhone 5, iPad vs iPad mini). Γενικά εφιάλτης, αν θες να δουλέψεις σαν άνθρωπος πλέον, πρέπει ουσιαστικά να υλοποιήσεις δικιά σου λύση για layout.

Τα ρέστα μου στον cypher για την Objective C, μιλάμε για έκτρωμα. Καταρχάς σε κάνει να αναρωτιέσαι γιατί λέγεται C, το syntax είναι 100% διαφορετικό. Λες και το έκαναν επίτηδες για να μη διαβάζεται με την καμία. Plus, μιλάμε για μια γλώσσα που θεωρητικά απευθύνεται σε application development κόσμο, και παρά ταύτα διέπεται από παρομοίου επιπέδου πρωτογονίλα με τη C++. Αν είναι δυνατόν, εν έτει 2013 να μην μπορείς να βάλεις στη ρημαδογλώσσα σου ένα garbage collector.
Nothing is impossible for the man who doesn't have to do it himself
User avatar
ja_the_invincible
Wow! Terabyte level
Wow! Terabyte level
Posts: 2414
Joined: Tue Dec 01, 2009 12:33 am
Academic status: N>4
Gender:
Location: Κάπου στο matrix...

Re: Σύγκριση Android/iOS

Post by ja_the_invincible » Mon Jun 03, 2013 12:13 pm

Nice , πολύ ωραία ποστ και τα 2 , μου καταρρίψατε διάφορους μύθους περί σύγκρισης android/iOS.
f**k robin and batman i'm robbin with a bat man
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Re: Σύγκριση Android/iOS

Post by mikem4600 » Mon Jun 03, 2013 4:08 pm

nachos wrote:Αν είναι δυνατόν, εν έτει 2013 να μην μπορείς να βάλεις στη ρημαδογλώσσα σου ένα garbage collector.
http://en.wikipedia.org/wiki/Automatic_ ... e_Counting
Καλύτερο τεχνικά από GC, αν και όντως τη σύνταξη της Obj-C ούτε εγώ την έχω χωνέψει.
Autocracy hates questions. Anarchy hates answers.
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Σύγκριση Android/iOS

Post by nachos » Mon Jun 03, 2013 4:53 pm

mikem4600 wrote:Καλύτερο τεχνικά από GC
Δεν θα το έλεγα :smt018

Από τη στιγμή που οι virtual destroyers πάνε σύννεφο, μιλάμε περισσότερο για τρύπα στο νερό. Αν εννοείς καλύτερο από άποψης "επιδόσεων", δε λέει πολλά, με την ίδια λογική ξαναγυρνάμε στην assembly. Ένας από τους χρυσούς κανόνες της ανάπτυξης είναι ο εξής:

Design before micro-optimization

και το garbage collection στοχεύει ακριβώς εκεί.

By the way, αν βάλεις στο κόλπο και το incompatibility με pre-ARC κώδικες, μιλάμε για το holly mother of fragmentation.

FYI: Τα παραπάνω είναι μερικοί από τους λόγους για τους οποίους αυτή η πλατφόρμα έχει γίνει χρυσορυχείο για τον Icaza και την ομάδα του:

http://xamarin.com/
Nothing is impossible for the man who doesn't have to do it himself
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Re: Σύγκριση Android/iOS

Post by mikem4600 » Mon Jun 03, 2013 6:51 pm

nachos wrote:
mikem4600 wrote:Καλύτερο τεχνικά από GC
Δεν θα το έλεγα :smt018

Από τη στιγμή που οι virtual destroyers πάνε σύννεφο, μιλάμε περισσότερο για τρύπα στο νερό. Αν εννοείς καλύτερο από άποψης "επιδόσεων", δε λέει πολλά, με την ίδια λογική ξαναγυρνάμε στην assembly. Ένας από τους χρυσούς κανόνες της ανάπτυξης είναι ο εξής:
Ποιοι virtual destroyers;; Αν εννοείς destructors, δεν χρειάζονται. Απλώς αφαιρείς τα retain/release. Το μόνο που δεν πιάνει αυτόματα σε σύγκριση με GC είναι τα κυκλικά references, που πρέπει να βάλεις χειροκίνητα weak pointers. ΔΕΝ υπάρχει incompatibility με pre-ARC κώδικες, εκτός κι αν εννοείς μέσα στο ίδιο project (που είναι λογικό - δεν μπορεί το ένα αρχείο να είναι ARC και το άλλο να μην είναι :roll: ).

Επίσης, το performance είναι ιδιαίτερα σημαντικό για (near-)real-time apps, και γι' αυτο άλλωστε η μέση iOS εφαρμογή είναι καλύτερη από τη μέση Android εφαρμογή: συνήθως έχει καλύτερο design και καλύτερο performance, χωρίς το smartphone σου να χρειάζεται 8-πύρινο στα 10 GHz. :smt016 Τα περί Assembly αλλού. Αυτό είναι το trade-off στο οποίο το Android εκ του αποτελέσματος φαίνεται να χωλάινει.

Κατά τα άλλα περί ορέξεως κολοκυθόπιτα. :-D Σε ένα course πάντως κι εγώ Android Java Development θα δίδασκα, διότι βασίζεται σε Java που διδάσκεται από νωρίς και είναι πιο εύκολο να την μάθει κάποιος νεοεισερχόμενος στο χώρο, δεν χρειάζεται Mac για ανάπτυξη και iOS developer account για να τρέξει στη συσκευή, και περισσότεροι φοιτητές έχουν Android τηλέφωνα (έστω και ZTE ή Huawei!) για να παίξουν μαζί τους.
Autocracy hates questions. Anarchy hates answers.
User avatar
moody
Gbyte level
Gbyte level
Posts: 1082
Joined: Sun Oct 16, 2011 11:38 am
Gender:

Re: Σύγκριση Android/iOS

Post by moody » Mon Jun 03, 2013 9:39 pm

Εγώ πάντως θα το θεωρούσα καλή ιδέα ,αν δεν κατέληγε ένα ακόμα θεωρητικό μέχρι αηδίας μάθημα.
Also :
Gc στο android είναι .......... Πραγματικά σε κάθε android development video της google μιλάνε για το memory management.
Γνώση επί του iphone(κ της objective-c) έχω μηδενική ,για αυτό και δεν μπορώ να συγκρίνω .
Παρόλο αυτά,αν γινόταν το μάθημα και έπρεπε να επικρατήσει μια πλατφόρμα,θα προτιμούσα android .
1.κόστος
2.java,στην σχολή πληροφορική ασοεε-java .
3.multiplatform development .
modie is balanced ¯\_(ツ)_/¯
User avatar
nachos
Gbyte level
Gbyte level
Posts: 1252
Joined: Mon Aug 21, 2006 4:28 pm
Academic status: Alumnus/a
Gender:
Location: Brachamee City

Re: Σύγκριση Android/iOS

Post by nachos » Thu Jun 06, 2013 12:07 am

Δεκτό για τους destructors (btw και για το σαρδάμ :-D ), αλλά και πάλι, το θέμα με τα cyclic references προδίδει ότι εξακολουθούν να υφίσταται concerns για το memory management, που όταν μιλάμε για application development είναι απλά απαγορευτικό. Όλα είναι συνάρτηση μεταξύ επιδόσεων και κόστους ανάπτυξης, όπου στο δεύτερο συμπεριλαμβάνεται προφανώς και το testing, στο οποίο συνήθως τέτοια πράγματα έρχονται για να σε στοιχειώσουν.

Σε τελική ανάλυση, αφού είμαστε performance analysis nazis, ας δούμε τα εξής δεδομένα:
  • Σε μια garbage collected γλώσσα, η υπολογιστική επιβάρυνση συνίσταται σε (ας πούμε) 50-100 ms ανά τυχαία χρονικά διαστήματα (συνήθως κλάσεις αρκετών δευτερολέπτων), προκειμένου να πραγματοποιηθεί το context switching για τον gc, και φυσικά η επακολουθούμενη απελευθέρωση της μνήμης. Αν κάτσει να το ζυγίσει κανείς αυτό σοβαρά, αντιλαμβάνεται ότι το κόστος - για την πλειοψηφία τύπου εφαρμογών - είναι ουσιαστικά ανύπαρκτο.

    Σε μια arc υλοποίηση από την άλλη, δεν υφίσταται το κόστος του garbage collection, αλλά αυτό δε σημαίνει ότι δεν υφίσταται κόστος γενικότερα (here comes the nazi-ing): από τη στιγμή που μιλάμε για reference counters per object, ουσιαστικά αναφερόμαστε σε πόρους οι οποίοι απαιτούν exclusive access από καθέναν που προσπαθεί να τις ενημερώσει. Κοινώς, για κάθε αναφορά που δημιουργείται στο runtime, απαιτείται ένα extra σταθερό κόστος το οποίο δεν υφίσταται στα garbage collected συστήματα (και που προφανώς είναι ακριβότερο από ένα απλό i++)
Οπότε τι είναι προτιμότερο performance-wise; Πιθανόν να είναι το arc, πιθανόν και όχι, πιθανόν επίσης να εξαρτάται ανά περίπτωση. Το θέμα όμως είναι πως για να το διαπιστώσουμε, πρέπει κυριολεκτικά να βγάλουμε τα σταγονόμετρα, και να μετρήσουμε τις διαφορές. Σε αυτή την περίπτωση, η "ταμπακιέρα" εκπίπτει από το performance, και έρχεται στο τι βολεύει αρχιτεκτονικά τον προγραμματιστή. Ως προς αυτό, το garbage collection υπερτερεί κατά πολυ.

Σε ό,τι αφορά τα real-time applications, θα ήμουν διατεθειμένος να βάλω νερό στο κρασί μου, αλλά αλήθεια, για ποια τέτοια apps μιλάμε σε mobile environments; Εκτός αν η Apple έχει αρχίσει να αναπτύσει iPhone apps για πυρηνικούς αντιδραστήρες ή διαστημόπλοια, το μόνο πλησιέστερο πράγμα που μπορώ να σκεφτώ σε real-time, είναι εφαρμογές τύπου VoIP ή ηλεκτρονικών δημοπρασιών. Και εκεί, από τη στιγμή που το bottleneck του performance είναι το δίκτυο, δε βλέπω καν λόγο να συζητάμε για το "performance penalty" του garbage collection. Βέβαια, αν είναι τόσο σημαντικό, το Android π.χ. (μιας που το αναφέραμε), διαθέτει και native development kit (ndk), για τους λάτρεις των ρετρό απολαύσεων της C++ :lol:
Spoiler: εμφάνιση/απόκρυψη
Μιας που αναφέρθηκαν και τα διαστημόπλοια: [url]http://www.computerworld.com/s/article/9238700/NASA_launches_new_nanosatellites_Android_smartphones[/url] Όταν το performance μετράει, η επιλογή είναι μονάχα μία :-D
Πάντως για να μην παρεξηγούμαι, δεν προσπαθώ να αποδείξω ότι το gc αποτελεί κάποιου είδους άγιο δισκοπότηρο. Απλά το point που θέλω να δώσω, είναι πως ως developers (του παρόντος ή του μέλλοντος) έχουμε περισσότερα πράγματα να λαμβάνουμε υπόψιν από το να ξεψειρίζουμε το micro-optimization (εξού και το λογοπαίγνιο της assembly :-D ). To κόστος παραγωγής και συντήρησης του software, είναι ένα από αυτά. Όπως φυσικά και το performance, αλλά μετρούμενο πάντα στα σωστά πλαίσια (platform capabilities, application/object life-cycle, etc)

Υ.Γ.1: Τα περί Android που "χωλαίνει" είναι απλά αστικός μύθος, μάλλον προερχόμενος από το τμήμα μάρκετινγκ του Μήλου. Το θέμα είναι ποια είναι τα standards συγκρισης: η μπουρούχα των 80 - 100 euro προφανώς θα σέρνεται. Από την άλλη, εγώ π.χ. ακόμα περιμένω κάποιον Apple user να έρθει να κοντράρει στα σοβαρά το Nexus μου :smt016

Υ.Γ.2: Μήπως να μεταφερθεί αυτό το off-topic περί memory management σε κάποιο dedicated thread; Είναι αν μη τι άλλο αρκετά ενδιαφέρον!
Nothing is impossible for the man who doesn't have to do it himself
User avatar
mikem4600
Gbyte level
Gbyte level
Posts: 1363
Joined: Fri Mar 12, 2004 2:00 pm
Academic status: Alumnus/a
Gender:
Location: A Galaxy Far, Far Away
Contact:

Re: Σύγκριση Android/iOS

Post by mikem4600 » Thu Jun 06, 2013 11:23 am

nachos wrote:Όλα είναι συνάρτηση μεταξύ επιδόσεων και κόστους ανάπτυξης, όπου στο δεύτερο συμπεριλαμβάνεται προφανώς και το testing, στο οποίο συνήθως τέτοια πράγματα έρχονται για να σε στοιχειώσουν.
Είπαμε από την αρχή ότι η Java είναι πιο εύκολη. Δεν αντιλέγει κανείς αυτό. Κι εγώ Java γράφω όλη μέρα για να βγάλω το ψωμί μου. Κι άμα θες να φτιάξεις απλώς ένα mobile app, η Java είναι η πρώτη σου επιλογή, και (κατά τη γνώμη μου) πολύ πιο ωραία γλώσσα από την Obj-C. Όλα αυτά δεκτά.

Αλλά αν πρόκειται να συγκρίνεις performance, μην το συζητάς καν. Έχεις ζορίσει ποτέ κανένα server; Έχεις δει κανένα τέρας με 20+ CPUs και 80 GB RAM να τρώει κώλυμα π.χ. 30 secs για να τρέξει ο GC, να παγώνουν ΟΛΑ τα threads και να τρώνε timeouts τα transactions και να σκάει το σύμπαν; Τι λέμε τώρα, ο GC είναι δυστυχώς unpredictable. Στις 99% των περιπτώσεων είναι όλα τέλεια. Στη μία φορά που θα την πατήσεις, δεν σε σώζει τίποτα. Και, εντάξει, αν είσαι σε server environment, αλλάζεις το configuration της VM, ή πετάς τη HotSpot και τα σκας χοντρά βάζοντας JRockit, και κάτι γίνεται. Αν φας το κόλλημα στο Android τι θα κάνεις; Τα μόνα που μπορείς να κάνεις είναι: 1) τίποτα (αυτό που κάνουν οι περισσότεροι developers, και γι' αυτό τα περισσότερα Android apps πάσχουν) 2) optimize τον κώδικά σου τυφλά, έχοντας ένα non-deterministic black box που λέγεται GC να στα κάνει μαντάρα. Γι' αυτό για να παίξει καλά το Android, βγάζουνε 128-πύρινα κινητά στα 15 THz (για να τρέχει γρήγορα ο GC) με 64 TB RAM (για να μην τρέχει συχνά).

Το tradeoff του ARC (αν εξαιρέσεις την υπόλοιπη γλώσσα της Obc-C) είναι ότι ίσως χρειαστεί να βάλεις κάπου weak reference για να σπάσεις κανένα κύκλο, πράγμα πολύ σπάνιο, ειδικά σε mobile development. Και μάλιστα αν τρέξεις τον profiler, στα δείχνει όλα. Οπότε είναι σχετικά εύκολο να κάνεις το tradeoff.

nachos wrote:Πάντως για να μην παρεξηγούμαι, δεν προσπαθώ να αποδείξω ότι το gc αποτελεί κάποιου είδους άγιο δισκοπότηρο. Απλά το point που θέλω να δώσω, είναι πως ως developers (του παρόντος ή του μέλλοντος) έχουμε περισσότερα πράγματα να λαμβάνουμε υπόψιν από το να ξεψειρίζουμε το micro-optimization (εξού και το λογοπαίγνιο της assembly :-D ). To κόστος παραγωγής και συντήρησης του software, είναι ένα από αυτά. Όπως φυσικά και το performance, αλλά μετρούμενο πάντα στα σωστά πλαίσια (platform capabilities, application/object life-cycle, etc)
Πράγματι, έχεις απόλυτο δίκιο. Κι όμως, τα δεδομένα κόστους/εσόδων σε διαψεύδουν. Το κόστος συντήρησης μιας Obj-C εφαρμογής φαίνεται να αντισταθμίζεται λόγω π.χ. έλλειψης fragmentation των iOS συσκευών (πόσα είδη Android devices υπάρχουν; ), του καταναλωτικού προφίλ των εν δυνάμει πελατών κτλ. με αποτέλεσμα το download revenue για apps να είναι 74% iOS developers και μόλις 20% Android developers.
nachos wrote:Υ.Γ.1: Τα περί Android που "χωλαίνει" είναι απλά αστικός μύθος, μάλλον προερχόμενος από το τμήμα μάρκετινγκ του Μήλου. Το θέμα είναι ποια είναι τα standards συγκρισης: η μπουρούχα των 80 - 100 euro προφανώς θα σέρνεται. Από την άλλη, εγώ π.χ. ακόμα περιμένω κάποιον Apple user να έρθει να κοντράρει στα σοβαρά το Nexus μου :smt016
Καθόλου. :) Και iPhone έχω και Galaxy Nexus έχω, και βλέπω πολύ καλά πως είναι τα apps στο ένα και στο άλλο. :smt002
Autocracy hates questions. Anarchy hates answers.
Post Reply

Return to “Λειτουργικά συστήματα”