moukoublen Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Να ρωτήσω τώρα κάτι πάνω στην C++/CLI (που με έχει απασχολήσει) γιατί έχω μπερδευτεί λίγο;;; Οποτε οποιος ξέρει και καταφέρει να με ξεμπερδέψει, θα το εκτιμήσω βαθύτατα. Διαβάζω: C++/CLI Can produce either CIL-based managed code or mixed-mode code that mixes managed and native code. Δηλαδή μπορείς να παράξεις ένα .exe πχ που να είναι CIL αλλα να έχει μέσα του και native κώδικα? Και θα διαχωρίσει το CLR ποιος είναι ποιος και θα φροντίσει για όσα πρέπει τέλος πάντων ώστε να εκτελεστεί ορθά; Η έχω καταλάβει παντελώς λάθος; Και να ισχύει το παραπάνω, βολεύει για την περίπτωση που θες να ενσωμάτωσης κώδικα-κώδικα (cpp αρχεία που λέμε) στο .net project σού; Γιατί διαφορετικά ένα απλό native dll μπορείς να το καλέσεις μέσα από το .net με τα Marshaling που σου παρέχει το .net.
defacer Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Δηλαδή μπορείς να παράξεις ένα .exe πχ που να είναι CIL αλλα να έχει μέσα του και native κώδικα? Και θα διαχωρίσει το CLR ποιος είναι ποιος και θα φροντίσει για όσα πρέπει τέλος πάντων ώστε να εκτελεστεί ορθά; Και να ισχύει το παραπάνω, βολεύει για την περίπτωση που θες να ενσωμάτωσης κώδικα-κώδικα (cpp αρχεία που λέμε) στο .net project σού; Γιατί διαφορετικά ένα απλό native dll μπορείς να το καλέσεις μέσα από το .net με τα Marshaling που σου παρέχει το .net. Ναι, μπορείς. Σε περίπτωση που το binary είναι mixed mode τότε πρώτα τρέχει ο κανονικός image loader των Windows (για να ετοιμαστεί για την εκτέλεση native code) και στη συνέχεια -- δεν είμαι σίγουρος για το timing -- ο loader του CLR. Εσύ δε χρειάζεται να κάνεις τίποτα. Βολεύει πάρα πολύ για την περίπτωση που θέλεις να καλέσεις δικό σου native code από managed γιατί με τον τρόπο αυτό γίνεται σούπερ γρήγορα (δε μπαίνω σε τεχνικές λεπτομέρειες), ενώ με marshalling τα ζώα μου αργά.
παπι Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Η απάντηση δεν είναι απλή, ούτε τρέχουν πάντα πιο γρήγορα τα native. Κατά κανόνα όμως τρέχουν πιο γρήγορα, κυρίως λόγω του έξτρα layer που μεσολαβεί στο runtime των managed (με όλα το overhead που αυτό συνεπάγεται, π.χ. garbage-collection, bound-checking, κλπ). Και ομως ειναι πολυ απλη. Καμια διαφορα.
migf1 Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 ... @migf1: Για το πρώτο τμήμα της απάντησής σου το μόνο που έχω να πω είναι ότι το να παραθέτεις marketing links (αν είναι) που λένε ότι η αγορά για embedded software το 2015 θά είναι $6.1b εμένα μου λέει ότι με δουλεύεις όταν π.χ. το MW3 έκανε τζίρο μέσα σε 16 μέρες πάνω από $1b. Σοβαρά τώρα, δεν έχω να πώ τίποτα παραπάνω. Συνειδητοποιείς ότι το ετήσιο μέγεθος όλου του embedded software market (με βάση το νούμερο από το link σου) είναι συγκρίσιμο με το "ετήσιο μέγεθος" του market του MW3 ΜΟΝΟ? Αυτή είναι η ιδέα σου περί σημαντικής αγοράς? Μου φαίνεται μπερδέψαμε τις βούρτσες με κάτι άλλο. Ότι θα χρειάζονταν 3 posts απλά και μόνο για να πείσω τον οποιοδήποτε για το εύρος εφαρμογών των ενσωματωμένων συστημάτων, μου ήταν αδιανόητο (μέχρι πριν από 3 ποστς ). Η κατά το δοκούν παρερμηνεία των links που παραθέτω είναι κάτι για το οποίο επίσης δεν μπορώ να κάνω κάτι, απλά το αφήνω στην κρίση και τη γνώση όσων τα διαβάζουν (π.χ. σε περίπτωση που δεν το είδες, λέμε τώρα, πρόκειται για forecast με data του 2010... ο ετήσιος τζίρος των ενσωματωμένων πέρυσι ξεπέρασε το 1 τρις δολάρια, ενώ αναμένεται να ξεπεράσει τα 2 τρις δολάρια μέχρι το 2015... επίσης το firmware συνήθως δεν προσμετράται στο software αλλά στο hardware... links δεν θα δώσω αυτή τη φορά, ας τα βρει μονάχος του όποιος ενδιαφέρεται). Με συγχωρείς αλλά αυτό είναι τελείως αναληθές και παραπλανητικό γιατί αλλάζει όλο το argument. Δε μπορεί να μου λες ότι το embedded μεγέθους 1kg (όπου συμπεριλαμβάνεις λειτουργικά και της παναγιάς τα μάτια με το έτσι θέλω, συνολικού μεγέθους περίπου κανα εκατομμύριο τόνους) είναι "βαρύ", κι όταν σε διορθώνω λέγοντας πως όχι, δεν περιλαμβάνει αυτό το εκατομμύριο τόνους, να λες ότι "δεν αλλάζει τίποτα". Θεωρώ ότι οποιοσδήποτε νοήμων άνθρωπος μπορεί να το αντιληφθεί. Αν δεν απατώμαι η συζήτηση περιστρέφεται γύρω από τον βαθμό αναγκαιότητας ή όχι του unmanaged κώδικα. Αν θεωρείς πως τόσο οι drivers όσο και τα λειτουργικά συστήματα δεν χρειάζεται να γράφονται σε unmanaged κώδικα, επειδή είναι πιο μεγάλα από το firmware είναι κάτι για το οποίο δεν πρόκειται να συμφωνήσω. Επομένως σε μια συζήτηση με θέμα το ποιές γλώσσες είναι δημοφιλείς το link σου θα ήταν σχετικό. Σε μια συζήτηση με θέμα το αν το development σε native languages ή το development σε managed είναι "the way forward" είναι άσχετο. Για να εξετάσει κανείς αν το managed είναι επίκαιρο τώρα, θα πρέπει να δει το TIOBE index σε καμιά εικοσαριά χρόνια (γιατί φυσικά ο καθένας ψηφίζει τη γλώσσα που του αρέσει, πράγμα που προϋποθέτει πρώτα να την έχει μάθει, και στη συντιπτική πλειοψηφία μαθαίνει κανείς γλώσσες επειδή είναι ήδη θρονιασμένες, όχι επειδή είναι ανερχόμενες). No comment! Κλείνοντας θέλω να πω ότι απογοητεύομαι από το γεγονός ότι συστηματικά αποφεύγεις να αναφερθείς στα επιχειρήματά μου (προφανώς εννοώ με προοπτική να τα καταρρίψεις) πέραν αναφορών του στυλ "δε συμφωνώ" και αντί γι' αυτό ακολουθείς την τακτική "άλλα λόγια ν' αγαπιόμαστε", δηλαδή παραθέτεις νέες απόψεις/links κλπ. Όταν ασχοληθώ μαζί τους (προφανώς με προοπτική να τα καταρρίψω) απλά συνεχίζεις σα να μην έγινε τίποτα και παραθέτεις κι άλλα. Δεν έχω διάθεση να συνεχίσω το whack-a-mole. Αν εννοείς τα regex, συγχώρα με αλλά δεν θα κάτσω να γράψω command-line parser me wildcards και generic char escaping μόνο και μόνο επειδή αισθάνεσαι απογοητευμένος (δόξα το θεό όταν έχω αισθανθεί ότι χρειάζεται, έχω ποστάρει τόνους κώδικα και εντός και εκτός φόρουμ). Αν θες να δεις πως έκανα εγώ handle μια στοιχειώδη εσωτερική γραμμή εντολών, απολύτως προσαρμοσμένη στις δικές μου ανάγκες και τίποτα παραπάνω (με την βοήθεια μάλιστα κι άλλων παιδιών του φόρουμ για το συγκεκριμένο), μπορείς να δεις τον κώδικα του HexView. Δεν ξέρω σε ποια άλλα αναφέρεσαι, αν δεν σου είναι κόπος θύμισέ μου τα. Ελπίζω να μην παρεξηγηθείς με το παραπάνω, δεν έχω καμία πρόθεση να επιτεθώ σε σένα προσωπικά (δε γνωριζόμαστε άλλωστε). Απλώς στην επιχειρηματολογία και τη διαλεκτική σου μέθοδο. Αυτή τη φορά παρεξηγήθηκα, όχι μόνο για το παραπάνω αλλά για την συνεχόμενη τάση σου να διαστρεβλώνεις κατά το δοκούν τα γραφόμενά μου απλά και μόνο για να διαφωνήσεις και να μου τη λες. Η πρώτη παράγραφος είναι παραπλανητική. Το αν ο κώδικας είναι provably safe, ή το αν χρησιμοποιεί garbage collection σε καμία περίπτωση δεν έχει να κάνει με το αν το περιβάλλον εκτέλεσης είναι managed ή όχι. Για παράδειγμα, μπορείς να βάλεις μια χαρά garbage collector σε unmanaged C++ (προφανώς, το έχουν όλες οι Javascript engines) και επίσης μπορείς αν θέλεις να χρησιμοποιείς vector.at αντί για vector.operator[]. Το γεγονός ότι οι σχεδιαστές managed γλωσσών επέλεξαν να θυσιάσουν by default (γιατί βεβαίως μπορείς και να απενεργοποιήσεις κάποια από αυτά τα features, πχ δες unsafe και unchecked στη C#) ένα μέρος performance για να κερδίσουν stability έχει να κάνει με το γεγονός ότι πλέον έχουμε αρκετό performance για να μας παίρνει να θυσιάσουμε ένα μέρος του προκειμένου να κερδίσουμε άλλα πράγματα πιο σημαντικά. Ακριβώς όπως και στις απαρχές της C με τους τραγικούς compilers οι σχεδιαστές θεώρησαν ότι μας παίρνει να θυσιάσουμε ένα μέρος performance προκειμένου να γράφουμε αλγορίθμους σαν άνθρωποι. Ακριβώς όπως (παραλληλίζω: αξία χρημάτων == αξία γρήγορης εκτέλεσης) αν ρωτήσεις έναν άστεγο και έναν techie πόσο σημαντικό είναι το κινητό στη ζωή θα σου απαντήσουν και οι δύο "την παλεύεις?" -- για διαφορετικό όμως λόγο. Με άλλα λόγια, τα features στα οποία αναφέρεσαι έμμεσα είναι κάτι που επιλέχθηκε εσκεμμένα από τους σχεδιαστές των περιβαλλόντων, όχι κάτι που είναι "έμφυτο" στο DNA του managed. Ούτε παραπλανητική ήταν η 1η παράγραφος ούτε τίποτα. Ο άνθρωπος ρώτησε γιατί πιστεύουμε πως τα unmanaged είναι ταχύτερα από τα managed και του απάντησα με την άποψή μου (την οποία αργότερα επιβεβαίωσα και στο google και πόσταρα και σχετικό link με edit). Ούτε ρώτησε ποια είναι τα υπέρ και τα κατά, ούτε ρώτησε πως επισπεύδουμε τον χρόνο παραγωγής, ούτε ρώτησε ποια είναι τα tradeoffs. Γιατί πιστεύουμε πως το unmanaged τρέχει ταχύτερα ρώτησε! EDIT: Όσο για το "νομοτελειακά" πιο γρήγορο: έτσι για να κάνω το δικηγόρο του διαβόλου, έχεις υπόψη ότι ας πούμε ένας jitter μπορεί να μετατρέψει IL σε ο,τι πιο σύγχρονο instruction set υποστηρίζει η CPU στην οποία τρέχει, ενώ από την άλλη σε ένα native binary επιλέγεις target CPU at compile time και τέλος; Δε διαφωνώ με το "πολλές φορές" πιο γρήγορο (αν και όπως είπα διάλεξε τι προτιμάς: λίγο πιο αργό ή undefined behavior?) αλλά το "νομοτελειακά" απλά δεν ισχύει. Έχεις συνειδητοποιήσει πως το έχω ήδη αναφέρει στην απάντησή μου στον πάπι, όταν έγραφα για JIT target optimized managed υλοποίηση; Και ομως ειναι πολυ απλη. Καμια διαφορα. Εφόσον ήξερες την απάντηση και μάλιστα είναι και τόσο απλή όσο μας λες τώρα (χωρίς καν να το αιτιολογείς), τότε γιατί μας ρώτησες εξαρχής;
παπι Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Εφόσον ήξερες την απάντηση και μάλιστα είναι και τόσο απλή όσο μας λες τώρα (χωρίς καν να το αιτιολογείς), τότε γιατί μας ρώτησες εξαρχής; Ηθελα να δω σε τι βαση στηριζεστε.
migf1 Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Ηθελα να δω σε τι βαση στηριζεστε. Εσύ όμως δεν μας είπες σε τι βάση στηρίζεις το ότι δεν υπάρχει καμία διαφορά.
παπι Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Εσύ όμως δεν μας είπες σε τι βάση στηρίζεις το ότι δεν υπάρχει καμία διαφορά. Σε αυτη την κατηγορια προγραμματων, το μονο που κανεις ειναι να μεταφερεις πραγματα απο τον σκληρο στην ραμ και απο κι στο βραμ. Το πιο βαρυ πραγμα που εχει να κενεις ειανι το collision detect. Τιποτα το σπουδαιο, συγκινεις λιγα matries (4χ4 πινακακια) μεσα σε 1s - 250 ms
migf1 Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Σε αυτη την κατηγορια προγραμματων, το μονο που κανεις ειναι να μεταφερεις πραγματα απο τον σκληρο στην ραμ και απο κι στο βραμ. Το πιο βαρυ πραγμα που εχει να κενεις ειανι το collision detect. Τιποτα το σπουδαιο, συγκινεις λιγα matries (4χ4 πινακακια) μεσα σε 1s - 250 ms Τι εννοείς "Σε αυτη την κατηγορια προγραμματων", δίοτι game είναι και η Monopoly, game είναι ας πούμε κι ένα racing simulator με καμιά 30αριά αυτοκίνητα στην πίστα. Στο 2ο δεν νομίζω πως το πιο βαρύ πράγμα που κάνεις είναι το collision detection. . . . Δυστυχώς η NOKIA άργησε να ενδιαφερθεί για αυτό το μπάχαλο (το έκανε εξ ανάγκης του iPhone) και έτσι όταν άρχισε το port του QT στο SYMBIAN για να καλύψει την ασχήμια της SYMBIAN C++ και να προσελκύσει τους αηδιασμένους developer πίσω (αλλά και για να ενοποιήσει τις πλατφόρμες που είχε τότε η εταιρία και να καταστήσει transparent τον προγραμματισμό των κινητών της ανεξαρτήτως Λ. Σ.) ήταν μάλλον αργά... Το embedded είναι ζόρι γενικότερα. Για αυτό υποθέτω πληρώνεται και καλύτερα (συν ότι δεν ενδείκνυται και για outsourcing). ΥΓ. Σχετικο-άσχετο, αναμένω να δω αν, πως και κατά πόσο θα επηρεάσει την πορεία του android η κατά πως φαίνεται οριστική ρήξη μεταξύ google και oracle. Το dalvik έτσι κι αλλιώς ποτέ δεν ήταν συμβατό με τα Java πρότυπα της Oracle, αλλά όπως και να το κάνουμε δεν είναι ότι καλύτερο να βρίσκεσαι στα μαχαίρια με τον πατέρα της γλώσσας που χρησιμοποιείς ως primary developing tool για την πλατφόρμα σου.
Directx Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 Το embedded είναι ζόρι γενικότερα. Για αυτό υποθέτω πληρώνεται και καλύτερα (συν ότι δεν ενδείκνυται και για outsourcing). Ουδέν κακό αμιγές καλού Αλλά καθώς η τεχνολογία εξελίσσεται και αποκτούμε όλο και ισχυρότερες CPU, περισσότερη μνήμη κλπ. κάπου οι συμβάσεις του παρελθόντος (όσον αφορά τα κινητά τηλέφωνα πάντα - όχι συνολικά τα embedded) αρχίζουν να εκλείπουν. Τώρα η SYMBIAN C++ ήταν ένα φοβερό αγγούρι, το SYMBIAN QT C++ ήταν εξαιρετικά εύχρηστο (εδώ μπορείς να δεις ένα παιχνιδάκι που είχα σκαρώσει σε SYMBIAN QT C++ κάποτε με ελάχιστο κόπο - και κάποιες σκέψεις για το SYMBIAN btw) αλλά ήρθε αργά όταν η NOKIA είχε αρχίσει να παίρνει την κάτω βόλτα. Σήμερα γράφω σε Java για Android (παλαιότερα σε J2ME), δυσκολία υπάρχει πλέον λόγο του PROCESS μοντέλου που ακολουθεί αυτό το Λ. Σ. (δεν έχει σταθερό Multitask και αυτό οδηγεί σε μπελάδες και συμβάσεις :-/) αλλά η ανάπτυξη είναι αρκετά ανθρώπινη (τα εργαλεία του IDE χρίζουν βελτίωσης - ). ΥΓ. Σχετικο-άσχετο, αναμένω να δω αν, πως και κατά πόσο θα επηρεάσει την πορεία του android η κατά πως φαίνεται οριστική ρήξη μεταξύ google και oracle. Το dalvik έτσι κι αλλιώς ποτέ δεν ήταν συμβατό με τα Java πρότυπα της Oracle, αλλά όπως και να το κάνουμε δεν είναι ότι καλύτερο να βρίσκεσαι στα μαχαίρια με τον πατέρα της γλώσσας που χρησιμοποιείς ως primary developing tool για την πλατφόρμα σου. Χμ.. δεν παρακολουθώ ενεργά την συγκεκριμένη διαμάχη, πιστεύω όμως ότι στο τέλος θα βρεθεί κάποια λύση στο ζήτημα καθώς το Android είναι πλέον πολύ δημοφιλές (μεγάλο) για να έχουμε κάποιο ατύχημα, αναγνωρίζω όμως ότι ο Larry είναι σκληρότατος αντίπαλος. Μεταξύ μας πάντως.. δεν δένομαι με καμία πλατφόρμα ή γλώσσα πλέον (το έκανα μια φορά με τον C++ Builder & C/C++), αν αύριο τα WP γίνουν hit τότε WP σας έρχομαι, όπου πάει το κύμα
migf1 Δημοσ. 28 Ιουνίου 2012 Δημοσ. 28 Ιουνίου 2012 ... Μεταξύ μας πάντως.. δεν δένομαι με καμία πλατφόρμα ή γλώσσα πλέον (το έκανα μια φορά με τον C++ Builder & C/C++), αν αύριο τα WP γίνουν hit τότε WP σας έρχομαι, όπου πάει το κύμα Αυτό είναι και το σωστό (μέσα σε κάποια όρια πάντα ) ΥΓ. Δικαιώθηκε η Google από ότι διάβασα. EDIT: Το κοιτάω συχνά πυκνά το blog σου (όπως και του πάπι)
Directx Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Το κοιτάω συχνά πυκνά το blog σου (όπως και του πάπι) Thx, τιμή μου!
defacer Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Αυτή τη φορά παρεξηγήθηκα, όχι μόνο για το παραπάνω αλλά για την συνεχόμενη τάση σου να διαστρεβλώνεις κατά το δοκούν τα γραφόμενά μου απλά και μόνο για να διαφωνήσεις και να μου τη λες. Μάλλον θα πρέπει να κόψω τη συνήθεια να διαφωνώ μαζί σου γιατί δε βλέπω να έχει καταλήξει ποτέ σε κάτι εποικοδομητικό. Από την πλευρά μου εξακολουθώ να πιστεύω ότι τουλάχιστον σε κάποιες από τις ενστάσεις μου κάθε άλλο παρά ικανοποιητική απάντηση πήρα. Τελευταία παραδείγματα: Οσον αφορά το embedded market, επέλεξες ξανά να πεις "το embedded έφτασε $1tn" και πάλι βάζοντας hardware + software στο ίδιο τσουβάλι (σα να μην είχα κάνει τόση φασαρία όσον αφορά το ότι το embedded software market σα μέγεθος είναι μια τρίχα από τα @@ του συνολικού embedded market αλλά και του συνολικού software market). Νομίζω ότι μιλάμε για software εδώ οπότε δεν έχω άλλα σχόλια. Μου επισημαίνεις ότι γνωρίζεις για τα jitter optimizations, αλλά δεν κάνεις τον κόπο στη συνέχεια να μου εξηγήσεις πώς μπορεί να συμβιβάζεται αυτό με το "νομοτελειακά" στο οποίο είχα αντίρρηση. Διαβάζοντας δηλαδή τα λεγόμενά σου θα έβγαζε κανείς το συμπέρασμα πως ταυτόχρονα πιστεύεις ότι ο jitter μπορεί να δώσει καλύτερο machine code από ένα native compiler και επίσης ότι ο native compiler "νομοτελειακά" παράγει γρηγορότερο κώδικα. Το πώς συμβιβάζονται αυτά τα 2 (γιατί δεν είδα ούτε εδώ ούτε και σε κάποια άλλη κουβέντα να πεις ποτέ "αυτό το παίρνω πίσω") είναι για μένα μυστήριο. Για τα cmd regexes νομίζω πως εδώ λες ξεκάθαρα ότι δεν έχεις διάθεση να κάνεις κάτι τέτοιο (σεβαστό), ούτε και το έχεις κάνει στο παρελθόν (ok), έχεις κάνει μόνο κάτι απλούστερο για συγκεκριμένη χρήση. Παρόλα αυτά και πάλι κρίνοντας μόνο από τα γραφόμενα το συμπέρασμα που βγαίνει είναι ότι πιστεύεις πως "γίνεται"... με τι δεδομένα το λες αυτό, δε θα μάθουμε ποτέ. Anyway ούτε μου αρέσει ούτε θέλω να έχουμε κόντρες. Αν πέρασε απαρατήρητο, επισημαίνω ότι η πρώτη μου απάντηση αντί για την οποία περίμενες κάτι πιο ουσιαστικό ήταν εσκεμμένα κουβέντα καφενείου ακριβώς για να μη γίνει αυτό που έγινε. Προφανώς δεν έπρεπε να αλλάξω γνώμη όταν έμμεσα ζήτησες διευκρινίσεις, παρόλο που έτσι βρίσκομαι στη δυσάρεστη θέση ή 1) να πρέπει να αφήσω να περάσει ασχολίαστο το οτιδήποτε γράφεις που εμένα μου φαίνεται λάθος, ή 2) να το σχολιάσω αλλά να πέσω στο επίπεδο του καφενέ -- κάτι που δε θέλω, ή 3) να μπω σε λογικό/διαλεκτικό mode και να έχουμε τελικά αυτές τις κόντρες. Δυστυχώς καμία από τις επιλογές που μου αφήνεις δεν είναι επιθυμητή και αυτός είναι ο βασικός λόγος για τον οποίο είμαι απογοητευμένος. Peace.
Downloadpercent Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 C# είναι καλή φάση γιατί μοιάζει και πάρα πολύ με την Java Αλλιώς μάθε Piou.NET
migf1 Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 Μάλλον θα πρέπει να κόψω τη συνήθεια να διαφωνώ μαζί σου γιατί δε βλέπω να έχει καταλήξει ποτέ σε κάτι εποικοδομητικό. Από την πλευρά μου εξακολουθώ να πιστεύω ότι τουλάχιστον σε κάποιες από τις ενστάσεις μου κάθε άλλο παρά ικανοποιητική απάντηση πήρα. Τελευταία παραδείγματα: Οσον αφορά το embedded market, επέλεξες ξανά να πεις "το embedded έφτασε $1tn" και πάλι βάζοντας hardware + software στο ίδιο τσουβάλι (σα να μην είχα κάνει τόση φασαρία όσον αφορά το ότι το embedded software market σα μέγεθος είναι μια τρίχα από τα @@ του συνολικού embedded market αλλά και του συνολικού software market). Νομίζω ότι μιλάμε για software εδώ οπότε δεν έχω άλλα σχόλια. Το firmware είναι software ή hardware; Τεχνικά είναι software προφανώς γραμμένο σε native code αλλά, όπως σου εξήγησα, στους τζίρους συνήθως προσμετράται στα figures του hardware. Υποτίθεται πως έχουμε έναν ελάχιστο κοινό παρανομαστή όταν ανταλλάσσουμε απόψεις. Δεν περιμένω να το γνωρίζεις εφόσον δεν έχεις ασχοληθεί, αλλά να στο εξηγώ και να επιμένεις (και μάλιστα με ύφος) ξεφεύγει κατά πολύ από αυτό που παρουσιάζεις ότι επιδιώκεις, δηλαδή τον εποικοδομητικό διάλογο... τον καφενέ δεν τον δημιουργώ εγώ. Μου επισημαίνεις ότι γνωρίζεις για τα jitter optimizations, αλλά δεν κάνεις τον κόπο στη συνέχεια να μου εξηγήσεις πώς μπορεί να συμβιβάζεται αυτό με το "νομοτελειακά" στο οποίο είχα αντίρρηση. Διαβάζοντας δηλαδή τα λεγόμενά σου θα έβγαζε κανείς το συμπέρασμα πως ταυτόχρονα πιστεύεις ότι ο jitter μπορεί να δώσει καλύτερο machine code από ένα native compiler και επίσης ότι ο native compiler "νομοτελειακά" παράγει γρηγορότερο κώδικα. Το πώς συμβιβάζονται αυτά τα 2 (γιατί δεν είδα ούτε εδώ ούτε και σε κάποια άλλη κουβέντα να πεις ποτέ "αυτό το παίρνω πίσω") είναι για μένα μυστήριο Εγώ πάντως δεν έγραψα κάτι τέτοιο. Κάτι τέτοιο κατάλαβες εσύ προφανώς. Εγώ έγραψα πως αν γράψεις highly optimized unmanaged κώδικα optimized κώδικα τότε νομοτελειακά τρέχει ταχύτερα από τον auto-optimized managed. Νομοτελειακά διότι στο managed μεσολαβεί τουλάχιστον ένα layer of execution συγκριτικά με το unmanaged. Και αυτό το εξήγησα. Και δεν κάνει μόνο ένα compilation στην αρχή το managed, υπάρχουν thresholds πάνω από τα οποία κάνει re-evaluate/re-compilation. Ανέφερα επίσης πως υπάρχουν περιπτώσεις που το managed μπορεί να τρέξει ακόμα και ταχύτερα από το managed. Overall όμως το highly optimized unmanaged κατά κανόνα τρέχει ταχύτερα από το optimized managed (highly optimized δεν μπορείς να κάνεις με το managed, αν μπορούσες θα ήταν unmanaged). Ελπίζω να μη χρειαστούν πάλι μισή ντουζίνα ποστς για να εξηγήσουμε πως με τον unmanaged κώδικα ο προγραμματιστής κάνει ότι θέλει, ούτε ότι το by-experienced-hand optimization παράγει ταχύτερο κώδικα από οποιοδήποτε managed runtime. Και για να σε προλάβω, ο πάπι ρώτησε γιατί πιστεύουμε πως το native παράγει ταχύτερο κώδικα, τίποτε άλλο (και μιας και ανάφερα τον παπι, τα πράγματα δεν είναι είναι τόσο απλά όσο υποστήριξε: http://stackoverflow.com/questions/1831353/the-speed-of-net-in-numerical-computing/9327983#9327983 ) Για τα cmd regexes νομίζω πως εδώ λες ξεκάθαρα ότι δεν έχεις διάθεση να κάνεις κάτι τέτοιο (σεβαστό), ούτε και το έχεις κάνει στο παρελθόν (ok), έχεις κάνει μόνο κάτι απλούστερο για συγκεκριμένη χρήση. Παρόλα αυτά και πάλι κρίνοντας μόνο από τα γραφόμενα το συμπέρασμα που βγαίνει είναι ότι πιστεύεις πως "γίνεται"... με τι δεδομένα το λες αυτό, δε θα μάθουμε ποτέ. Στα τέλη της δεκαετίας του 80 ως φοιτητής έγραφα compiler, assembler και loader σε VAX assembly, σε Encore MultiMax. Ξέρω λοιπόν ότι γίνεται. Το ότι έχω να ασχοληθώ από τότε τι σημαίνει; Πως δεν γίνεται; Μήπως σημαίνει πως απαγορεύεται να υποστηρίξω πως γίνεται; Μήπως σημαίνει πως για να σε πείσω ότι γίνεται πρέπει να ξανα φτιάξω ένα compiler σε VAX assembly και να το ποστράρω; Μήπως σημαίνει πως επειδή σήμερα την VAX assembly δεν την έχει ακούσει κανένας είναι χειρότερη (ή καλύτερη) από μια οποιοδήποτε άλλη assembly σημερινών υπολογιστών; Μήπως σημαίνει πως compilers, assemblers και loaders μπορούν να φτιαχτούν μόνο με VAX assembly; Ή μόνο με assembly; Το ότι αυτή τη στιγμή αν με βάλεις να σου γράψω σε assembly κάτι θα κάτσω πρώτα να διαβάσω μισή μέρα, αναιρεί σε κάτι την ύπαρξη της πρωτύτερης εμπειρίας μου; Feel free να διαστρεβλώσεις κατά το δοκούν και το παραπάνω (ακραίο προφανώς) παράδειγμά μου, όπως συνηθίζεις. Στα φόρουμ δεν γράφουμε εξετάσεις, καταθέτουμε και εισπράττουμε εμπειρίες. Εάν νομίζεις πως για κάθε πράγμα στο οποίο διαφωνείς ο άλλος είναι υποχρεωμένος να κάθεται να γράφει κώδικα για να σε πείσει, είναι δικαίωμά σου... όπως είναι δικαίωμα του άλλου να μη γράψει ούτε μια γραμμή κώδικα. Ο καθένας καταθέτει αυτά που έχει να καταθέσει, και η αξιοπιστία του ή μη κρίνεται συνολικά, ανεξάρτητα με τον πόσο κώδικα καταθέτει ή με το κατά πόσο είναι σε θέση να υποστηρίζει παντού και πάντα τις εμπειρίες του με κώδικα. Όσο για το αν γίνεται ή όχι command-line parsing με regex, π.χ. αυτός εδώ: http://stackoverflow.com/a/5696141 καλώς ή κακώς δεν περίμενε εμένα να ξεθάψω δικά μου projects και να τα ποστάρω για να πειστεί (ούτε αυτός εδώ: http://ad.hominem.or...ted_strings.php όπως υποθέτω και μερικά εκατομμύρια άλλοι ακόμα). Anyway ούτε μου αρέσει ούτε θέλω να έχουμε κόντρες. Αν πέρασε απαρατήρητο, επισημαίνω ότι η πρώτη μου απάντηση αντί για την οποία περίμενες κάτι πιο ουσιαστικό ήταν εσκεμμένα κουβέντα καφενείου ακριβώς για να μη γίνει αυτό που έγινε. Προφανώς δεν έπρεπε να αλλάξω γνώμη όταν έμμεσα ζήτησες διευκρινίσεις, παρόλο που έτσι βρίσκομαι στη δυσάρεστη θέση ή 1) να πρέπει να αφήσω να περάσει ασχολίαστο το οτιδήποτε γράφεις που εμένα μου φαίνεται λάθος, ή 2) να το σχολιάσω αλλά να πέσω στο επίπεδο του καφενέ -- κάτι που δε θέλω, ή 3) να μπω σε λογικό/διαλεκτικό mode και να έχουμε τελικά αυτές τις κόντρες. Δυστυχώς καμία από τις επιλογές που μου αφήνεις δεν είναι επιθυμητή και αυτός είναι ο βασικός λόγος για τον οποίο είμαι απογοητευμένος. Peace. Peace κι από μένα, με την προϋπόθεση πως στο μέλλον θα θεωρείς δεδομένο (έως αυτονόητο) πως ο συνομιλητής σου (ή μάλλον εγώ, για να μη μιλάω για άλλους) είμαι στην χειρότερη overall τουλάχιστον το ίδιο έξυπνος και overal τουλάχιστον το ίδιο έμπειρος με σένα.
παπι Δημοσ. 29 Ιουνίου 2012 Δημοσ. 29 Ιουνίου 2012 http://stackoverflow.com/a/5696141 Γαματο το εφε!!!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα