Προς το περιεχόμενο

Assembly vs C++


-nick-

Προτεινόμενες αναρτήσεις

Δημοσ.

Poli fasaria gia to tipota. Ti thema einai afto???? Kai ti sizitisi na kaneis??? Ta pragmata einai koukia metrimena. Simera pou ta MB mnimis einai hama-lima kai ta agorazeis pio ftina kai apo tsihlofouskes kai ta MHz CPU kostizoun pio ftina kai apo pasatembo, pios o logos na asxoleitai kanenas me assemby. Fisika, ola kataligoun se maxhine-code kai gia afto to logo oti mporeis na kaneis me opoiadipote glossa programmatismou mporeis na to kaneis kai me assembly afou exei antistixia 1-pros-1 me ti glossa mihanis. Pio to noima omos??? Ki ego exo ena filo pou apo tote pou ton gnorisa (prin arketa xronia) prospathei na ftiaksei to teleio radiofoniko dekti. Exei ksodepsi dekades hiliades drahmes se eksartimata, hrono kai alla. Me ta idia hrimata tha agoraze enan kai tha telione i ipothesi. Tora tha mou peite oti inai thema an mporei na ginei i ohi i thema romantismou. DEKTO kai ego mporo na pao Athima-Thessaloniki me ta podia alla sinithos protimo to aftokinito i to aeroplano.<IMG SRC="http://www.insomnia.gr/cpubb/smilies/cwm1.gif" border=0>

  • Απαντ. 47
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

SV8DTP:den nomizo oti oi programmatistes tou quake, unreal, 3dsmax, linux kai allon pollon paixnidion/engines, programmaton ktl tha ixan tin idia apopsi. isos na min xereis oti i intel exei compilers gia c/c++ ftiagmenous me asm gia na mporoun na ftiaxnoun programmata gia neous epexergastes pou megistopoioun tin taxitita. giati ean den diaxeiristis kalitera ton epexergasti ti ton thes kai ton agorazeis.<P>------------------<BR>EDgSTr5SmDY=

Δημοσ.

Paidia signomi. Katarxin den katalava oti to forum edo einai gia "programmatistes tou quake, unreal, 3dsmax, linux kai allon pollon paixnidion/engines, programmaton ktl". Se afti tin periptosi pao paso. Defteron, egine paranoisi. Ki ego pistevo oti then iparxi tipota grigorotero apo assembly (ean fisika katafereis na to ftiaksis), alla edo to thema einai ean tha prolaveis na to ftiaksis prin se prolavoun oi alloi. Kai ean milame gia koina programata poios tha kathisei na grapsei se assembly otan mporei na kanei to idio (oxi toso grigoro vevaia) se kapoia alli glossa sto ena ekatosto tou xronou?????

Δημοσ.

giati pou to blepeis to paraxeno. mporei na bgoun bouboukia kai na ftiaxoun to quake 4 ;) alloste ena thes na ftiaxeis ena programma kai eisai se kapoia eteria den paizei mono rolo se poso xrono tha to ftiaxeis, alla kai i taxitita, kai o sostos kodikas. tora ean eisai kalos programmatistis kai gnostis asm giati na min baleis asm ston kodika sou gia einai pio grigoros. tora gia kapoion pou den xerei kai den exei xrono gia na xreisimopoiisei asm min to kanei, den tou eipame sonei kai kala ftiaxto se asm. alloste merikes fores i asm einai pio argi apo ton katharo kodika. kai epipleon to sosto debugging thelei gnoseis asm. des <A HREF="http://www.azillionmonkeys.com/qed/optimize.html" TARGET=_blank>http://www.azillionmonkeys.com/qed/optimize.html</A> giati merikes fores xreiazete na xreisimopoieiseis asm eno alles oxi...<P>------------------<BR>EDgSTr5SmDY=

Δημοσ.

Παιδιά κάπου έχετε χάσει το νόημα των γλωσσών προγραμαμτισμού. Το θέμα δεν είναι πι\οια γλώσσα είναι καλύτερη. Δεν υπάρχει καλύτερη και χειρότερη γλώσσα, είναι όλες διαφορετικές. Το θέμα είναι να χρησιμοποιήσεις την κατάλληλη γλώσσα για την κατάλληλη δουλειά. Η μία γλώσσα μπορεί να είναι κατάλληλη για να κάνεις κάποια δουλειά και από την άλλη να είναι τελείως ακατάλληλη για να κάνεις κάποια άλλη. Εντάξει είναι και θέμα γνώσης της γλώσσας (δηλαδή πόσο καλά την ξέρεις κλπ) και επιπλέον πόσο σου αρέσει, αλλά ας είμαστε αμερόληπτοι και ας δούμε τα πράγματα όπως είναι. Αν θέλεις να κάνεις κάτι που έχει σχέση με δίκτυα θα χρησιμοποιήσεις C++ (παράδειγμα δίνω τώρα), αν θέλεις να προγραμματίσεις ένα ρομποτάκι να κινείται θα χρησιμοποιήσεις ANSI C ή assembly και αν θέλεις να προγραμματίσεις μία βάση δε θα το κάνεις με C++ αλλά με SQL. Βέβαια θα μπορούσες να το κάνεις και με C++, αλλά ενώ εγώ (που χρησιμοποιώ SQL) θα έχω τελειώσει, θα είμαι έξω και θα πίνω μπύρες, εσύ θα είσαι ακόμα μέσα, θα ιδρώνεις μπροστά από τον υπολογιστή και δε θα είσαι ακόμα ούτε στη μέση.<BR> Και μετά το παραπάνω ερχόμαστε στο ερώτημα: "Αξίζει να θυσιάσουμε τον χρόνο του προγραμματιστή/εταιρίας για να κάνουμε ένα πρόγραμμα να τρέχει πιο γρήγορα". Η απάντηση μου σε αυτό (και μιλάω από εμπειρία) είναι όχι. Κάποτε )στην προηγούμενη εταιρία που δουλευα) το αφεντικό μου μου ανάθεσε να γράψω μία Collection class (όπως για παράδειγμα η Map κλάσση - βλέπε Java) που όμως να μη δουλεύει για όλα τα objects αλλά μόνο για Strings. Ο όλος σκοπός πίσω από αυτό ήτανε να μειώσουμε τον χρόνο που χρειάζεται για να κάνεις cast ένα object από το superclass τύπο σε subclass τύπο. Εκείνη την εποχή δούλευα με ένα PIII/650 κάτω από WinNT και χρησιμοποιούσα jdk1.3. Αυτό που κατάλαβα στο τέλος είναι ότι οι υπολογιστές έχουνε γίνει τόσο γρήγοροι στη σήμερον ημέρα που για ένα βρόγχο των 10.000.000 (κάτι σαν for (int i=0; i<10000000; i++) για να το καταλάβετε καλύτερα) κέρδιζα μόνο 590ms!!!. Αυτό σημαίνει ότι για 10000000 φορές που καλούσα την κλάσση μου κέρδισα κάτι παραπάνω από μισό δευτερόλεπτο. Και ο χρόνος που ξόδεψα για να τη γράψω ήτανε πάνω από 8 ώρες.<BR>Δηλαδή για να φτάσω τον χρόνο που ξόδεψα έπρεπε να καλέσω την κλάσση μου 8*3.600*15.900.000! Μπορείς να υπολογίσεις πόσο πολύ είναι αυτό. Τώρα θα μου πεις "ρε φίλε ναι, αλλά η assembly είναι πολύ πιο γρήγορη από τη Java". Ναι συμφωνώ αλλά και πάλι έτσι να είναι τότε θα έπρεπε να διαιρέσουμε το παραπάνω ποσό με 1000 (ας πούμε ότυι είναι 1000 φορές πιο γρήγορη), οπότε παίρνουμε: 8*3.600*15.900. Οπότε ένα πρόγραμμα πρέπει να καλέσει ένα συγκεκριμένο object 8*3.600*15.900 φορές για να φτάσει τον χρόνο που έχασε ο προγραμματιστής (που σημειοτέον αυτό μεταφράζεται σε λεφτά για την εταιρία). Και έστω ότι το πρόγραμμα έχει μέσα 1000 objects που καλεί. Και πάλι αν διαιρέσεις τον παραπάνω αριθμό με 1000 θα πάρεις: 8*3.600*15,9 = 457920. Δηλαδή θα πρέπει ένα πρόγραμμα να τρέξει 457920 φορές για να κερδιθεί η ημέρα που έχασε ο προγραμματιστής. Και αν μιλάμε για πάνω από μία ημέρα τότε πολλαπλασίασε τον παραπάνω αριθμό με τον εαυτό του κοκ. ΚΑι όλα αυτα σε PIII/650, φανταστείτε να ήτανε κάποιος γρηγορότερος.<BR> Οπότε καταλαβαίνετε ότι η ταχύτητα, παρόλο που είναι πολύ σημαντική, δεν είναι το πιο σημαντικό (το πιο σημαντικό από όλα - προσωπική γνώμη - είναι να υπάρχουνε standards, δηλαδή να γράφεις κάτι και να είναι συμβατό με όλα, αυτό που γίνεται με τη Java, γράφεις κάτι και το τρέχεις σε Windows, DOS, UNIX, Linux, Apple και χωρίς να αλλάξεις τίποτα).<BR> Και πρωτού κλείσω ακόμα μία ερώτηση προς σε όλους σας. Πόσοι από εσάς καταλαβαίνεται ότι ένα παιχνίδι (η ο,τιδήποτε παράδειγμα λέω τώρα) είναι πιο αργό όταν γράφεται σε C++ από ότι όταν γραφτεί σε assembly. Η διαφορά είναι τόσο μικρή που δεν μπορεί να την καταλάβει ο ανθρώπινος εγκέφαλος για τον πολύ απλό λόγο ότι οι υπολογιστές ΕΙΝΑΙ ΠΑΡΑ ΠΟΛΥ ΓΡΗΓΟΡΟΙ. Ακόμα και αν ο compiler δε δημιουργήσει fully οptimized κώδικα μηχανής δε θα μπορέσουμε να το καταλάβουμε. Στο κάτω κάτω δεν μιλάμε για real-time συστήματα (όντως εκεί χρειάζεσαι C ή Assembly).<P>------------------<BR>"It can only be attributed to human error"<BR>2001 A Space Odyssey

Δημοσ.

Sostos file girioni....Alla:se ORISMENA programmata[pio poly games] h taxythta einai toso shmantikh oste na kathisei o programmatisths na to beltiosei apo thema taxythtas...To QUAKEIII kai as theoreiatai poly bary game, einai pARA POLY grhgoro se sxesh me th poiothta ton grafikon tou..kai auto giati yposthrizei pollees texnikes/dualCPU kai alla.... smile.gif" border="0

Δημοσ.

Sta embedded sistimata pou asxoloumai ego kai einai kate3oxin real time kai malista hard opos legontai (den mporei px enas kardiografos na perimenei tin cpu gia na steilei sima oti i kardia stamatise), xrisimopoietai sindiasmos. Kata koron c, kai drivers i diadikasies pou apaitoun sigxronismou assembly.

Δημοσ.

<BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by girionis:<BR><STRONG>Στο κάτω κάτω δεν μιλάμε για real-time συστήματα (όντως εκεί χρειάζεσαι C ή Assembly).<BR></STRONG><HR></BLOCKQUOTE><P> Ακριβώς. Αυτό που είπα και εγώ πιο πάνω δηλαδή. Σε real-time και safety-critical systems η assembly και η C (κυρίως ANSI-C συνήθως κάτω από VxWorks) παίζουν τον σημαντικότερο ρόλο γιατί ο χρόνος είναι το παν. Σε άλλα προγράμματα όμως όπως παιχνίδια κλπ, μπορεί ο χρόνος να είναι σημαντικός αλλά δεν είναι ό,τι σημαντικότερο.<BR> Αυτό που συνήθως γίνεται στα παιχνίδια είναι να γράφοντε σε C ή C++ (αν και έχω δει και παιχνίδια τύπου Quake γραμμένα σε Java - και ήτανε και αρκετά γρήγορα μπορώ να πω) και τα κριτικά σημεία να γράφοντε σε assembly. Κανένα παιχνίδι δε γράφεται εξ' ολοκλήρου σε assembly.<p>[ 28-05-2001: Message edited by: girionis ]

Δημοσ.

Kai kati allo. H Assembly den einai glossa programmatismou. Den exei grammatiki kai sintaxi. Oi entoles aytes malista legontai pseudoentoles, giati apla antistoixizoun onomata se hex entoles. H moni diskoli douleia twn assembler einai na metafrasoun kapoia epiprostheta stoixeia (opos macro entoles) i mallon kalitera na ta valoun stin thesi tous. Ayta

Δημοσ.

1.<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><HR><pre>if (Ur_msg == trash) <BR> {<BR>goto bla_bla||chat||pm||e-mail;<BR>keep(this, clean);<BR> }</pre><HR></BLOCKQUOTE><P><BR>2.<P><BR>2.<BR> <BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">quote:</font><HR>Originally posted by girionis:<BR><STRONG> Παιδιά κάπου έχετε χάσει το νόημα των γλωσσών προγραμαμτισμού...<BR></STRONG><HR></BLOCKQUOTE><P><BR>girionis = TopInsomniac(2001);

Δημοσ.

<BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><HR><pre><BR>Girionis gir = new Girionis(this);<P>if (understand)<BR>{<BR> System.out.prinln("LOLVFL");<BR> Insomnia.add(gir);<BR>}<BR>else<BR>{<BR> System.out.println("????");<BR> Insomnia.remove(gir);<BR> Insomnia.notifyAll();<BR>}<P>Random random = new Random();<BR>message = random.choose(Math.random() * 0.1);<P>if (!message.trash(Insomnia.get(gir))<BR>{<BR> System.out.println("Message not trash");<BR>}<BR>else<BR>{<BR> System.exit(1, "Message trash"); // Error occured<BR>}<BR></pre><HR></BLOCKQUOTE>

Δημοσ.

Re paidia sigrinoume entelws anomoia pragmata...H c++ einai glwssa ipsilou epipedou...ara den milaei toso amesa me to hardware oso i assemby.Allou einai xrisimi i assembly kai allou i C++.Min ksexnate oti se para polles periptwseis ginetai xrisi tis simvolikis glwssas se c/c++ gia na einai pio grigoro to programma mas.Ayta... wink.gif" border="0

Δημοσ.

Εγώ πάλι θα συμφωνήσω με τον Random!!!<P>O Girionis είναι φοβερός!!!<P>Τους βοηθάει όλους... 5 αστεράκια λοιπόν και λίγα είναι πιστεύω!!!

Δημοσ.

Παιδιά σας ευχαριστώ όλους σας για τα καλά σας λόγια. Ελπίζω ωα βοηθήσουμε όλοι μας για να γίνει το forum καλύτερο. Και επίσης να πω ότι δεν υπάρχει καλύτερος και χειρότερος εδώ μέσα, όλοι είμαστε διαφορετικοί και προσπαθούμε να βοηθήσουμε με τον δικό μας τρόπο. Κάτι που δεν ξέρω εγώ θα το ξέρει κάποιος άλλος.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...