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

Γλωσσες προγραμματισμου που δουλευουν αποκλειστικα με .net framework


geo1st487

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

Γαματο το εφε!!!

 

;)

 

ΥΓ. Δεν ξέρω αν το πρόλαβες, γιατί το είχα ξεχάσει και το έβαλα λίγο αργότερα με edit... έβαλα κι ένα πολύ ενδιαφέρον link που αναλύει και συγκρίνει optimized managed & unmanaged κώδικα, που πιστεύω κουμπώνει όμορφα στην (προβοκατόρικη :P) ερώτηση που έκανες. Αφορά βέβαια μαθηματικές βιβλιοθήκες, και πραγματοποιείται κάτω από συγκεκριμένα πλαίσια (π.χ στο managed εστιάζει στην C# ενώ στο unmanaged στην Fortran και χρησιμοποιεί kmeans clustering ως σημείο αναφοράς), αλλά σίγουρα κυμαίνεται άνω του μέσου όρου των άρθρων που μπορεί να βρει κανείς με πρόχειρα googlings. Το καθορισμένο πλαίσιο, η ανάλυση και η σύγκριση γίνεται σε 2 μέρη, σε ξεχωριστό link (το οποίο αναφέρεται στο κείμενο του αρχικού link)... συγκεκριμένα εδώ: http://ilnumerics.ne...d-numpy-part-i/ (στο 1ο μέρος εξηγεί και στο 2ο ... έχει ένα Next πάνω δεξιά... παρουσιάζει τα αποτελέσματα... έχει ενδιαφέρον όμως και το κείμενο του αρχικού link στο StackOverflow).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Το firmware είναι software ή hardware; Τεχνικά είναι software προφανώς γραμμένο σε native code αλλά, όπως σου εξήγησα, στους τζίρους συνήθως προσμετράται στα figures του hardware. Υποτίθεται πως έχουμε έναν ελάχιστο κοινό παρανομαστή όταν ανταλλάσσουμε απόψεις. Δεν περιμένω να το γνωρίζεις εφόσον δεν έχεις ασχοληθεί, αλλά να στο εξηγώ και να επιμένεις (και μάλιστα με ύφος) ξεφεύγει κατά πολύ από αυτό που παρουσιάζεις ότι επιδιώκεις, δηλαδή τον εποικοδομητικό διάλογο... τον καφενέ δεν τον δημιουργώ εγώ.

Με συγχωρείς αλλά δεν είναι και τόσο προφανές όσο το κάνεις να φαίνεται (όπως λες και ο ίδιος τεχνικά είναι software). Επίσης την πρώτη φορά που αναφερθήκαμε σ' αυτό δεν είχες κάνει απο πριν την επισήμανση (την οποία είμαι διατεθειμένος να δεχτώ καλή τη πίστει). Απο κει και πέρα ακόμα κι έτσι πάλι δε βγαίνει κανένα συμπέρασμα από τα links που δίνεις, διότι ακόμα κι αν δεχτούμε ότι hardware + firmware = 2 θησαυροφυλάκια τζίρο, αυτό δε λέει κάτι για το επιμέρους ποσοστό συμμετοχής του hardware και του firmware (επιπλέον, καθώς το hardware έχει πραγματικά manufacturing costs per unit τα οποία περνάνε στον πελάτη, νομίζω πως είναι προφανές ότι η συμμετοχή του σαν ποσοστό είναι συντριπτική).

 

Βασικά μου θυμίζει την ατάκα ενός συμπαίκτη του Jordan (δε θυμάμαι όνομα) ο οποίος είχε πει χαριτολογώντας για εκείνο το ματς του '86 ότι "δε θα ξεχάσω ποτέ εκείνη τη μέρα που ο Jordan και γω μαζί βάλαμε 70 πόντους" -- ο Jordan είχε βάλει 63.

 

Εγώ πάντως δεν έγραψα κάτι τέτοιο. Κάτι τέτοιο κατάλαβες εσύ προφανώς. [...] Ανέφερα επίσης πως υπάρχουν περιπτώσεις που το managed μπορεί να τρέξει ακόμα και ταχύτερα από το native. Overall όμως το highly optimized unmanaged κατά κανόνα τρέχει ταχύτερα από το optimized managed (highly optimized δεν μπορείς να κάνεις με το managed, αν μπορούσες θα ήταν unmanaged).

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

 

Όσο για το αν γίνεται ή όχι command-line parsing με regex, π.χ. αυτός εδώ: http://stackoverflow.com/a/5696141 καλώς ή κακώς δεν περίμενε εμένα να ξεθάψω δικά μου projects και να τα ποστάρω για να πειστεί (ούτε αυτός εδώ: http://ad.hominem.or...ted_strings.php όπως υποθέτω και μερικά εκατομμύρια άλλοι ακόμα).

Επέτρεψέ μου να κάνω και γω το κομμάτι μου εδώ λέγοντας ότι το πώς κάνεις match quoted strings με regular expression το ξέρω και μόνος μου. Αυτά που δεν φαίνεται να έχουμε και οι 2 στο μυαλό μας είναι:

 

1. Τα links που έδωσες δεν κάνουν parsing, κάνουν matching.

 

Μπορείς για παράδειγμα να κάνεις match μια προσθαφαίρεση με

>\d+\s*(+|-)\s*\d+

...αλλά αυτό δεν είναι parsing γιατί στη συνέχεια πρέπει να ξανα-εξετάσεις από την αρχή όλη την είσοδο προκειμένου να κάνεις κάτι χρήσιμο.

 

Προφανώς στο παραπάνω γελοίο παράδειγμα το matching μπορεί να γίνει parsing απλά προσθέτοντας μερικές παρενθέσεις, αλλά σε μια command line δεν ισχύει κάτι τέτοιο. Όταν μιλάμε για parsing έχω την απαίτηση π.χ. στην παρακάτω command line

>> foo.txt echo foo & type foo.txt

να κάνεις κάτι καλύτερο από το να μου πεις "εεε βασικά βλέπω 7 tokens, πάρτα και κάνε ο,τι νομίζεις". Ή αλλιώς μην το πεις parsing, γιατί

 

In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens (for example, words), to determine its grammatical structure with respect to a given (more or less) formal grammar.

2. Μέρος της θέσης μου περιλαμβάνει την έκφραση "χωρίς να χάσεις τα λογικά σου".

 

Η δική μου regular expression για ένα singly or doubly quoted string είναι

 

>('(?:[^']|(?<=\\)')*'|"(?:[^"]|(?<=\\)")*")

(παρεμπιπτόντως παρόλο που υπάρχουν πολλές διαφορετικές προσεγγίσεις προτιμώ την παραπάνω γιατί έχει μόνο έναν quantifier για κάθε περίπτωση, οπότε αν και δεν έκανα benchmark περιμένω να τρέχει γρηγορότερα από αυτές που είδαμε στα άλλα links λόγω λιγότερου backtracking)

 

Φαντάσου το πώς θα είναι μια regexp η οποία θα κάνει κάτι σαν parsing μιας full-featured command line. Και πες μου αν υπάρχει περίπτωση να μπορέσεις να κάνεις κάποια βελτίωση μέσα στο χάος εαν π.χ. αποδειχτεί ότι κάπου χωλαίνει.

 

Peace κι από μένα, με την προϋπόθεση πως στο μέλλον θα θεωρείς δεδομένο (έως αυτονόητο) πως ο συνομιλητής σου (ή μάλλον εγώ, για να μη μιλάω για άλλους) είμαι στην χειρότερη overall τουλάχιστον το ίδιο έξυπνος και overal τουλάχιστον το ίδιο έμπειρος με σένα.

 

Δεν έχω κρίνει ποτέ τη διανοητική σου ικανότητα γιατί α) δε χρειάστηκε και β) δεν έχω στα χέρια μου αρκετά δεδομένα για να το κάνω.

 

Όσον αφορά την εμπειρία, θα σου πω ότι πιθανόν να κρίνει κανείς ότι είσαι πιο έμπειρος απο μένα γιατί έχεις ασχοληθεί περισσότερες ώρες με τον τομέα του προγραμματισμού από μένα (λογικό αφού έχεις και περίπου 10 χρόνια head start). Ή ίσως και ότι εγώ είμαι πιο έμπειρος απο σένα γιατί έχω μεγαλύτερο εύρος αντικειμένων με τα οποία ασχολούμαι. Όπως και να 'χει, δεν κατέβασε κανείς την εμπειρία του στον αγωνιστικό χώρο οπότε δε νομίζω πως παίζει κάποιο ρόλο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

1. Δεν είσαι υποχρεωμένος να δεχτείς τα λόγια μου καλή τη πίστει. Εφόσον ενδιαφέρεσαι μπορείς να το ψάξεις και μόνος σου και να "prove me wrong" αν θεωρείς ότι προσπαθώ να παραπλανήσω/αποπροσανατολίσω. Θα δυσκολευτείς πολύ όμως να βρεις publicly τα data που ζητάς (θα βοηθούσε πολύ αν είχες επαφές/γνωριμίες με τον χώρο των ενσωματωμένων).

 

Εγώ κατέθεσα την εμπειρία μου και παρέθεσα ότι σχετικό μπόρεσα να βρω publicly, γιατί και αποσυρμένος είμαι από την ενεργό δράση εδώ και χρόνια και οι ενεργές γνωριμίες μου δεν έχουν άμεση πρόσβαση σε τέτοια data (και να είχαν όμως δεν θα μου τα έδιναν, και εικάζω ούτε σε σένα θα τα δώσουν οι δικές σου γνωριμίες... μπορείς όμως να τους ρωτήσεις αν ισχύει ή όχι ότι το firmware κατά κανόνα προσμετράται στους τζίρους του software ή του hardware.. ή τουλάχιστον τι ίσχυε μέχρι πριν 4-5 χρόνια, γιατί μπορεί και να το έχουν αλλάξει τώρα, δεν το ξέρω).

 

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

 

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

 

Και στην αρχική μου απάντηση και στην μεταγενέστερη, το "νομοτελειακά" είναι ΕΜΦΑΝΩΣ αιτιολογημένο (και μάλιστα άμεσα, ούτε καν έμμεσα) με την ύπαρξη ενός έξτρα level of execution στους managed κώδικες [που είναι fact!. Το ότι το κόβεις στις παραθέσεις σου, εμένα προσωπικά μου δείχνει δόλο εκ μέρους σου, η για να το πω αλλιώς διαφωνία για την διαφωνία και τίποτε παραπάνω.

 

Το ότι ένα optimized unmanaged (edit: managed) μπορεί και πολύ συχνά τρέχει πιο γρήγορα από ένα (edit: unoptimized) unmanaged, δεν έχει καμία σχέση με το "νομοτελειακά".

 

3. Ειλικρινά δεν ξέρω γιατί το κάνεις αυτό. Δεν ξέρω τι απαιτούσες ή όχι, αλλά εγώ ξέρω πως τα regular-expressions χρησιμοποιούνται ΚΑΙ για parsing και για parser generators. Η Wikipedia το επιβεβαιώνει επίσης...

 

http://en.wikipedia....ular_expression

...

In computing, a regular expression provides a concise and flexible means to "match" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters. Common abbreviations for "regular expression" include regex and regexp. The concept of regular expressions was first popularized by utilities provided by Unix distributions, in particular the editor ed and the filter grep.[citation needed] A regular expression is written in a formal language that can be interpreted by a regular expression processor, which is a program that either serves as a parser generator or examines text and identifies parts that match the provided specification.

...

Το να αλλάζεις κάθε φορά τα αρχικά δεδομένα και να τα περιορίζεις (συνειδητά λέω εγώ) κάθε φορά που "στριμώχνεσαι" προκειμένου να δημιουργήσεις πιο βολικό υπόβαθρο για την αρχική σου θέση έτσι ώστε να τη συνεχίσεις, ειλικρινά είναι κάτι που δεν με αφορά.

 

Με συγχωρείς αλλά δεν είναι και τόσο προφανές όσο το κάνεις να φαίνεται (όπως λες και ο ίδιος τεχνικά είναι software). Επίσης την πρώτη φορά που αναφερθήκαμε σ' αυτό δεν είχες κάνει απο πριν την επισήμανση (την οποία είμαι διατεθειμένος να δεχτώ καλή τη πίστει). Απο κει και πέρα ακόμα κι έτσι πάλι δε βγαίνει κανένα συμπέρασμα από τα links που δίνεις, διότι ακόμα κι αν δεχτούμε ότι hardware + firmware = 2 θησαυροφυλάκια τζίρο, αυτό δε λέει κάτι για το επιμέρους ποσοστό συμμετοχής του hardware και του firmware (επιπλέον, καθώς το hardware έχει πραγματικά manufacturing costs per unit τα οποία περνάνε στον πελάτη, νομίζω πως είναι προφανές ότι η συμμετοχή του σαν ποσοστό είναι συντριπτική).

 

Βασικά μου θυμίζει την ατάκα ενός συμπαίκτη του Jordan (δε θυμάμαι όνομα) ο οποίος είχε πει χαριτολογώντας για εκείνο το ματς του '86 ότι "δε θα ξεχάσω ποτέ εκείνη τη μέρα που ο Jordan και γω μαζί βάλαμε 70 πόντους" -- ο Jordan είχε βάλει 63.

 

 

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

 

 

Επέτρεψέ μου να κάνω και γω το κομμάτι μου εδώ λέγοντας ότι το πώς κάνεις match quoted strings με regular expression το ξέρω και μόνος μου. Αυτά που δεν φαίνεται να έχουμε και οι 2 στο μυαλό μας είναι:

 

1. Τα links που έδωσες δεν κάνουν parsing, κάνουν matching.

 

Μπορείς για παράδειγμα να κάνεις match μια προσθαφαίρεση με

>\d+\s*(+|-)\s*\d+

...αλλά αυτό δεν είναι parsing γιατί στη συνέχεια πρέπει να ξανα-εξετάσεις από την αρχή όλη την είσοδο προκειμένου να κάνεις κάτι χρήσιμο.

 

Προφανώς στο παραπάνω γελοίο παράδειγμα το matching μπορεί να γίνει parsing απλά προσθέτοντας μερικές παρενθέσεις, αλλά σε μια command line δεν ισχύει κάτι τέτοιο. Όταν μιλάμε για parsing έχω την απαίτηση π.χ. στην παρακάτω command line

>> foo.txt echo foo & type foo.txt

να κάνεις κάτι καλύτερο από το να μου πεις "εεε βασικά βλέπω 7 tokens, πάρτα και κάνε ο,τι νομίζεις". Ή αλλιώς μην το πεις parsing, γιατί

 

 

2. Μέρος της θέσης μου περιλαμβάνει την έκφραση "χωρίς να χάσεις τα λογικά σου".

 

Η δική μου regular expression για ένα singly or doubly quoted string είναι

 

>('(?:[^']|(?<=\\)')*'|"(?:[^"]|(?<=\\)")*")

(παρεμπιπτόντως παρόλο που υπάρχουν πολλές διαφορετικές προσεγγίσεις προτιμώ την παραπάνω γιατί έχει μόνο έναν quantifier για κάθε περίπτωση, οπότε αν και δεν έκανα benchmark περιμένω να τρέχει γρηγορότερα από αυτές που είδαμε στα άλλα links λόγω λιγότερου backtracking)

 

Φαντάσου το πώς θα είναι μια regexp η οποία θα κάνει κάτι σαν parsing μιας full-featured command line. Και πες μου αν υπάρχει περίπτωση να μπορέσεις να κάνεις κάποια βελτίωση μέσα στο χάος εαν π.χ. αποδειχτεί ότι κάπου χωλαίνει.

 

 

 

Δεν έχω κρίνει ποτέ τη διανοητική σου ικανότητα γιατί α) δε χρειάστηκε και β) δεν έχω στα χέρια μου αρκετά δεδομένα για να το κάνω.

 

Όσον αφορά την εμπειρία, θα σου πω ότι πιθανόν να κρίνει κανείς ότι είσαι πιο έμπειρος απο μένα γιατί έχεις ασχοληθεί περισσότερες ώρες με τον τομέα του προγραμματισμού από μένα (λογικό αφού έχεις και περίπου 10 χρόνια head start). Ή ίσως και ότι εγώ είμαι πιο έμπειρος απο σένα γιατί έχω μεγαλύτερο εύρος αντικειμένων με τα οποία ασχολούμαι. Όπως και να 'χει, δεν κατέβασε κανείς την εμπειρία του στον αγωνιστικό χώρο οπότε δε νομίζω πως παίζει κάποιο ρόλο.

Επεξ/σία από migf1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1. Δεν είσαι υποχρεωμένος να δεχτείς τα λόγια μου καλή τη πίστει. Εφόσον ενδιαφέρεσαι μπορείς να το ψάξεις και μόνος σου και να "prove me wrong" αν θεωρείς ότι προσπαθώ να παραπλανήσω/αποπροσανατολίσω. Θα δυσκολευτείς πολύ όμως να βρεις publicly τα data που ζητάς (θα βοηθούσε πολύ αν είχες επαφές/γνωριμίες με τον χώρο των ενσωματωμένων).

Δεν είμαι αλλά επιλέγω να το κάνω οπότε τι συζητάμε;

 

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

 

Και στην αρχική μου απάντηση και στην μεταγενέστερη, το "νομοτελειακά" είναι ΕΜΦΑΝΩΣ αιτιολογημένο (και μάλιστα άμεσα, ούτε καν έμμεσα) με την ύπαρξη ενός έξτρα level of execution στους managed κώδικες [που είναι fact!. Το ότι το κόβεις στις παραθέσεις σου, εμένα προσωπικά μου δείχνει δόλο εκ μέρους σου, η για να το πω αλλιώς διαφωνία για την διαφωνία και τίποτε παραπάνω.

 

Το ότι ένα optimized unmanaged μπορεί και πολύ συχνά τρέχει πιο γρήγορα από ένα (edit: unoptimized) unmanaged, δεν έχει καμία σχέση με το "νομοτελειακά".

 

Το extra level of execution (βασικά compilation, και θα γίνει μόνο μία φορά) υπάρχει. Στη θεωρία, υπάρχει η περίπτωση ο jitter να παράγει καλύτερο κώδικα από έναν native compiler γιατί ο jitter έχει όντως νομοτελειακά περισσότερα δεδομένα για το target σύστημα απ' ότι ο native compiler όταν κάνεις compile σπιτι σου. Φαίνεται πως δεν το καταλαβαίνεις (παρόλο που σε προηγούμενο post είπες ότι το λαμβάνεις υπόψη). Αν το extra level προσθέσει 10msec χρόνου εκτέλεσης και ο καλύτερα optimized (γιατί μιλάω για optimized και στις 2 περιπτώσεις) κώδικας αφαιρέσει 20 -- πράγμα που δε μπορείς να αποκλείσεις -- τότε αυτό που λέω στέκει (σαν ενδεχόμενο).

 

Απο κει και πέρα ας κρίνει ο αναγνώστης αν αυτά που λέω είναι αληθή ή απλώς αληθοφανή.

 

3. Ειλικρινά δεν ξέρω γιατί το κάνεις αυτό. Δεν ξέρω τι απαιτούσες ή όχι, αλλά εγώ ξέρω πως τα regular-expressions χρησιμοποιούνται ΚΑΙ για parsing και για parser generators. Η Wikipedia το επιβεβαιώνει επίσης...

 

Το να αλλάζεις κάθε φορά τα αρχικά δεδομένα και να τα περιορίζεις (συνειδητά λέω εγώ) κάθε φορά που "στριμώχνεσαι" προκειμένου να δημιουργήσεις πιο βολικό υπόβαθρο για την αρχική σου θέση έτσι ώστε να τη συνεχίσεις, ειλικρινά είναι κάτι που δεν με αφορά.

 

Μιας και περάσαμε σε προσωπικούς χαρακτηρισμούς, επέτρεψέ μου να σε διορθώσω λέγοντας ότι (no offense) δεν κατάλαβες Χριστό τι λέει το κείμενο της Wikipedia. Εξηγούμαι:

 

Ιn computing, a regular expression provides a concise and flexible means to "match" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters.

 

Το γεγονός ότι η δική σου παρέθεση χρησιμοποιεί μια λέξη που έδωσα εγώ ("match") θα έπρεπε τουλάχιστον να σε προβληματίσει.

 

A regular expression is written in a formal language that can be interpreted by a regular expression processor, which is a program that either serves as a parser generator or examines text and identifies parts that match the provided specification.

Σε απλά ελληνικά:

 

Μια regex είναι γραμμένη σε μια formal language, η οποία (formal language) μπορεί να μεταφραστεί από έναν regular expression processor, ο οποίος (regular expression processor) είναι ένα πρόγραμμα το οποίο είτε είναι parser generator (δηλαδή με βάση τη regex δημιουργεί δυναμικά έναν parser που κάνει parse τη γραμματική η οποία προσδιορίζεται από τη regex) είτε εξετάζει "manually" το κείμενο κλπ κλπ (δηλαδή είναι finite state machine).

 

Δηλαδή η regex δεν παράγει parser αλλά (ενδεχομένως) χρησιμοποιούμε έναν parser (που παρέγεται επιτόπου) για να κάνουμε το matching.

 

Τουλάχιστον όταν δεν καταλαβαίνεις τι διαβάζεις, μην κατηγορείς άλλους γι' αυτό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το extra level of execution (βασικά compilation, και θα γίνει μόνο μία φορά) υπάρχει. Στη θεωρία, υπάρχει η περίπτωση ο jitter να παράγει καλύτερο κώδικα από έναν native compiler γιατί ο jitter έχει όντως νομοτελειακά περισσότερα δεδομένα για το target σύστημα απ' ότι ο native compiler όταν κάνεις compile σπιτι σου. Φαίνεται πως δεν το καταλαβαίνεις (παρόλο που σε προηγούμενο post είπες ότι το λαμβάνεις υπόψη). Αν το extra level προσθέσει 10msec χρόνου εκτέλεσης και ο καλύτερα optimized (γιατί μιλάω για optimized και στις 2 περιπτώσεις) κώδικας αφαιρέσει 20 -- πράγμα που δε μπορείς να αποκλείσεις -- τότε αυτό που λέω στέκει (σαν ενδεχόμενο).

 

Απο κει και πέρα ας κρίνει ο αναγνώστης αν αυτά που λέω είναι αληθή ή απλώς αληθοφανή.

Δεν το καταλαβαίνω λες; Τι σε εμποδίζει να κάνεις offline compilation του κώδικα optimized για το συγκεκριμένο cpu; Επίσης τι σε εμποδίζει να το κάνεις profile και 1 και 2 και 100 φορές πριν το παραδώσεις έτσι ώστε να το κάνεις έξτρα optimize σε όποια σημεία χωλαίνει;

 

Επίσης, παρόλο που το ανέφερα και πριν, το παραλείπεις: στο managed δεν γίνεται μόνο μια φορά compilation, γίνονται και re-compilations.

 

Και πριν πεις και παλι για τον χρόνο παραγωγής, υπενθυμίζω ξανά πως η κουβέντα για την ταχύτητα και μόνο. Υπάρχει ένα πολύ ωραίο σχετικό SO link στο οποία αντιπαρατίθενται 2 τύποι με πολύ όμορφα και σοβαρά επιχειρήματα και από τις 2 πλευρές, μόνο που δεν το έχω πρόχειρο (πάει πάνω από χρόνος, μπορεί και παραάνω που το διάβαζα). Αν το βρω θα το ποστάρω.

 

 

Μιας και περάσαμε σε προσωπικούς χαρακτηρισμούς, επέτρεψέ μου να σε διορθώσω λέγοντας ότι (no offense) δεν κατάλαβες Χριστό τι λέει το κείμενο της Wikipedia. Εξηγούμαι:

 

Το γεγονός ότι η δική σου παρέθεση χρησιμοποιεί μια λέξη που έδωσα εγώ ("match") θα έπρεπε τουλάχιστον να σε προβληματίσει.

 

Σε απλά ελληνικά:

 

Δηλαδή η regex δεν παράγει parser αλλά (ενδεχομένως) χρησιμοποιούμε έναν parser (που παρέγεται επιτόπου) για να κάνουμε το matching.

 

Τουλάχιστον όταν δεν καταλαβαίνεις τι διαβάζεις, μην κατηγορείς άλλους γι' αυτό.

Δεν νομίζω να περιμένεις σοβαρή απάντηση (και μόνο πως θεωρείς ότι περίμενα εσένα για να μάθω τι είναι το pattern matching αρκεί για να μην ασχοληθώ).

 

Θα πω κάτι ακόμα όμως: τα regular expressions είναι ένας από τους διάφορους τρόπους που μπορεί να χρησιμοποιήσει κανείς για να κάνει parsing (και command-lines, και αρχεία και pipes και ότι θέλει).

 

Μην με πιστεύετε ούτε εμένα ούτε τα links που έχω δώσει. Αν κι εφόσον σας ενδιαφέρει το θέμα, ψάχτε το μόνοι σας... και βιβλιογραφία υπάρχει, και κώδικας υπάρχει, και άρθρα υπάρχουν, κι από όλα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν το καταλαβαίνω λες; Τι σε εμποδίζει να κάνεις offline compilation του κώδικα optimized για το συγκεκριμένο cpu; Επίσης τι σε εμποδίζει να το κάνεις profile και 1 και 2 και 100 φορές πριν το παραδώσεις έτσι ώστε να το κάνεις έξτρα optimize σε όποια σημεία χωλαίνει;

 

Το γεγονός ότι μπορεί το συγκεκριμένο CPU να μήν έχει ανακαλυφθεί ακόμα όταν εσύ έκανες compile το πρόγραμμα και ο πελάτης το έλαβε; Το γεγονός ότι ο "πελάτης" αναβάθμισε το μηχάνημά του σε κάτι καλύτερο χωρίς να σου δώσει λογαριασμό για να του κάνεις ένα special compile για την καινούρια του σύνθεση; Το γεγονός ότι έχεις πολλούς "πελάτες" και δε μπορεί να κάνεις custom compile για τον καθένα; Διάλεξε και πάρε.

 

Δεν νομίζω να περιμένεις σοβαρή απάντηση (και μόνο πως θεωρείς ότι περίμενα εσένα για να μάθω τι είναι το pattern matching αρκεί για να μην ασχοληθώ).

 

Θα πω κάτι ακόμα όμως: τα regular expressions είναι ένας από τους διάφορους τρόπους που μπορεί να χρησιμοποιήσει κανείς για να κάνει parsing (και command-lines, και αρχεία και pipes και ότι θέλει).

 

Μην με πιστεύετε ούτε εμένα ούτε τα links που έχω δώσει. Αν κι εφόσον σας ενδιαφέρει το θέμα, ψάχτε το μόνοι σας... και βιβλιογραφία υπάρχει, και κώδικας υπάρχει, και άρθρα υπάρχουν, κι από όλα.

 

Σοβαρή απάντηση δεν περίμενα γιατί δεν έχω δει να παραδέχεσαι ποτέ ότι είπες πατάτα εκτός από τις περιπτώσεις όπου είναι εξώφθαλμα εμφανές από προηγούμενα post.

 

 

 

Προφανώς αυτό με τη λάθος κατανόηση του τι λέει η Wikipedia δεν ήταν αρκετά εξώφθαλμο. Το ότι περίμενες εμένα να μάθεις τι είναι pattern matching το λες μόνος σου, προσωπικά νομίζω ότι ξέρεις τι είναι pattern matching απλώς μέσα στη φούρια σου να βρεις κάποιο link για να με ταπώσεις παραβιάστηκες και έπεσες στο λάκκο.

 

Πάντως νομίζω ότι έχεις περιθώριο να βελτιώσεις τις γνώσεις σου πάνω στο αντικείμενο ακόμα κι αν δεν είμαι εγώ ο αρμόδιος για να σε διαφωτίσει.

 

 

Αυτά για το point μου #1 νωρίτερα, μιας και το #2 δεν το θεώρησες άξιο να τιμηθεί με απάντηση.

 

Με την τελευταία σου παράγραφο θα συμφωνήσω απόλυτα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το γεγονός ότι μπορεί το συγκεκριμένο CPU να μήν έχει ανακαλυφθεί ακόμα όταν εσύ έκανες compile το πρόγραμμα και ο πελάτης το έλαβε; Το γεγονός ότι ο "πελάτης" αναβάθμισε το μηχάνημά του σε κάτι καλύτερο χωρίς να σου δώσει λογαριασμό για να του κάνεις ένα special compile για την καινούρια του σύνθεση; Το γεγονός ότι έχεις πολλούς "πελάτες" και δε μπορεί να κάνεις custom compile για τον καθένα; Διάλεξε και πάρε.

Όλα αυτά τι σχέση έχουν ακριβώς με το ερώτημα του παπι "γιατί πιστεύετε πως τα games τρέχουν ταχύτερα όταν είναι γραμμένα σε native code"; Δεν ρώτησε π.χ. "γιατί πιστεύετε πως τα games θα έπρεπε να γράφονται σε managed κώδικα".

 

(επίσης, από πότε αποτελεί κανόνα πως ας πούμε τα unmanaged tools αναπτύσσονται ενώ τα managed μένουν στάσιμα; π.χ. όταν βγαίνουν νέες τεχνολογίες hardware, όπως τα cpu που αναφέρεις; )

 

 

Σοβαρή απάντηση δεν περίμενα γιατί δεν έχω δει να παραδέχεσαι ποτέ ότι είπες πατάτα εκτός από τις περιπτώσεις όπου είναι εξώφθαλμα εμφανές από προηγούμενα post.

 

 

 

Προφανώς αυτό με τη λάθος κατανόηση του τι λέει η Wikipedia δεν ήταν αρκετά εξώφθαλμο. Το ότι περίμενες εμένα να μάθεις τι είναι pattern matching το λες μόνος σου, προσωπικά νομίζω ότι ξέρεις τι είναι pattern matching απλώς μέσα στη φούρια σου να βρεις κάποιο link για να με ταπώσεις παραβιάστηκες και έπεσες στο λάκκο.

 

Πάντως νομίζω ότι έχεις περιθώριο να βελτιώσεις τις γνώσεις σου πάνω στο αντικείμενο ακόμα κι αν δεν είμαι εγώ ο αρμόδιος για να σε διαφωτίσει.

 

 

Αυτά για το point μου #1 νωρίτερα, μιας και το #2 δεν το θεώρησες άξιο να τιμηθεί με απάντηση.

 

Με την τελευταία σου παράγραφο θα συμφωνήσω απόλυτα.

Αν εννοείς ως "εξώφθαλμο" ότι εγώ υποστήριξα και υποστηρίζω πως τα regexes χρησιμοποιούνται στο string parsing, ενώ εσύ μου απαντάς σαν να έγραψα πως παράγουν parsers, τότε ναι είναι εξώφθαλμο.

 

Όσο για το τι σημαίνει parsing: http://www.google.gr...iw=1366&bih=542 Μπορώ κι εγώ να διαλέξω όποιον ορισμό με βολεύει καλύτερα, και να αρχίσω μετά τις... θεωρίες.

 

Επίσης θα σου υπενθυμίσω πως το πρόβλημά σου στην αρχική σου τοποθέτηση ήταν πως αν διαβάσουμε την command-line με regex θα μας βρεις καμια 10αριά περιπτώσεις που δεν θα δουλεύει το char escaping. Από εκείνο το σημείο μεσολάβησε τουλάχιστον 1 ποστ με links που καταρρίπτουν αυτή σου τη "σιγουριά" και από τότε έφτασες να μας γράφεις πως δεν ξέρουμε τι σημαίνει parsing, τι σημαίνει regex και τι pattern matching.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όλα αυτά τι σχέση έχουν ακριβώς με το ερώτημα του παπι "γιατί πιστεύετε πως τα games τρέχουν ταχύτερα όταν είναι γραμμένα σε native code"; Δεν ρώτησε π.χ. "γιατί πιστεύετε πως τα games θα έπρεπε να γράφονται σε managed κώδικα".

 

(επίσης, από πότε αποτελεί κανόνα πως ας πούμε τα unmanaged tools αναπτύσσονται ενώ τα managed μένουν στάσιμα; π.χ. όταν βγαίνουν νέες τεχνολογίες hardware, όπως τα cpu που αναφέρεις; )

Δεν έχουν καμία σχέση με το ερώτημα του παπί, είναι απευθείας απάντηση στο δικό σου ερώτημα όπως είναι προφανές σε οποιονδήποτε διαβάσει τα 2 προηγούμενα post. Δεν ξέρω αν το κάνεις επίτηδες αλλά σταμάτα το trolling.

 

Επίσης δεν ξέρω αν παριστάνεις το χαζό, αλλά όπως είπα ξεκάθαρα το "πρόβλημα" είναι πως δε θα φτάσει στα χέρια του πελάτη το κατάλληλο compile (για τους λόγους που ανέφερα), όχι πως δε θα υπάρχει κατάλληλος compiler για να το παράξει.

 

Αν εννοείς ως "εξώφθαλμο" ότι εγώ υποστήριξα και υποστηρίζω πως τα regexes χρησιμοποιούνται στο string parsing, ενώ εσύ μου απαντάς σαν να έγραψα πως παράγουν parsers, τότε ναι είναι εξώφθαλμο.

Whatever dude. Το τι λέει η Wikipedia είναι παραπάνω, το πώς το αντιλήφθηκες εσύ είναι παραπάνω, η δική μου παρέμβαση είναι κι αυτή παραπάνω. Δε θα κάτσω να μαλώσω μαζί σου και για θέματα γραμματικής δημοτικού.

 

Ακόμα και τώρα δεν έχεις καταλάβει τι γράφει νομίζω.

 

Επίσης θα σου υπενθυμίσω πως το πρόβλημά σου στην αρχική σου τοποθέτηση ήταν πως αν διαβάσουμε την command-line με regex θα μας βρεις καμια 10αριά περιπτώσεις που δεν θα δουλεύει το char escaping. Από εκείνο το σημείο μεσολάβησε τουλάχιστον 1 ποστ με links που καταρρίπτουν αυτή σου τη "σιγουριά" και από τότε έφτασες να μας γράφεις πως δεν ξέρουμε τι σημαίνει parsing, τι σημαίνει regex και τι pattern matching.

Ορίστε το post στο οποίο αναφέρεσαι. Ζήτησες παράδειγμα και σου έδωσα παράδειγμα (το πιο απλό που μπορούσα να σκεφτώ για να μην περιπλέξω τζάμπα την κουβέντα). Με συγχωρείς που δεν έκατσα να γράψω ολόκληρο δοκίμιο σαν απάντηση στο "πες ρε συ κανένα παράδειγμα".

 

ΥΓ: To point μου #2 θα πεθάνει από τον καημό που δεν ασχολείται κανείς μαζί του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ρε φίλε πλάκα μου κάνεις;

 

Θες να παραδεχτώ πως ένα optimized unmanaged τρέχει κατά κανόνα πιο αργά από ένα equally optimized unmanged (edit: managed); Ούτε το δέχομαι, ούτε το παραδέχομαι, ούτε έχω συναντήσει ποτέ στη ζωή μου κανέναν σοβαρό να υποστηρίζει κάτι τέτοιο. Ακόμα και στα πιο intense arguments στο Internet οι σοβαροί συμπληρώνουν κι ένα "although nothing beats hand-optimized native".

 

Το ποστ με τα double-quotes απαντήθηκε όχι με ένα αλλά με δυο links από μεριά μου, τι άλλο πρέπει να κάνουμε δηλαδή; Μας λες πως υπάρχουν καλύτεροι τρόποι; Αν μας το λες, πες το μας να συμφωνήσουμε. Όσο όμως μας λες πως με τα regex ούτε γίνεται pasring ούτε μπορούν να αντιμετωπίσουν double-quοtes εγώ θα στέκομαι απέναντι κι ας γράψουμε άλλα 200 ποστς.

 

ΥΓ. Ποιο είναι το #2 point; (που να το βρω μέσα σε τόσα ποστς).

 

Δεν έχουν καμία σχέση με το ερώτημα του παπί, είναι απευθείας απάντηση στο δικό σου ερώτημα όπως είναι προφανές σε οποιονδήποτε διαβάσει τα 2 προηγούμενα post. Δεν ξέρω αν το κάνεις επίτηδες αλλά σταμάτα το trolling.

 

Επίσης δεν ξέρω αν παριστάνεις το χαζό, αλλά όπως είπα ξεκάθαρα το "πρόβλημα" είναι πως δε θα φτάσει στα χέρια του πελάτη το κατάλληλο compile (για τους λόγους που ανέφερα), όχι πως δε θα υπάρχει κατάλληλος compiler για να το παράξει.

 

 

Whatever dude. Το τι λέει η Wikipedia είναι παραπάνω, το πώς το αντιλήφθηκες εσύ είναι παραπάνω, η δική μου παρέμβαση είναι κι αυτή παραπάνω. Δε θα κάτσω να μαλώσω μαζί σου και για θέματα γραμματικής δημοτικού.

 

Ακόμα και τώρα δεν έχεις καταλάβει τι γράφει νομίζω.

 

 

Ορίστε το post στο οποίο αναφέρεσαι. Ζήτησες παράδειγμα και σου έδωσα παράδειγμα (το πιο απλό που μπορούσα να σκεφτώ για να μην περιπλέξω τζάμπα την κουβέντα). Με συγχωρείς που δεν έκατσα να γράψω ολόκληρο δοκίμιο σαν απάντηση στο "πες ρε συ κανένα παράδειγμα".

 

ΥΓ: To point μου #2 θα πεθάνει από τον καημό που δεν ασχολείται κανείς μαζί του.

Επεξ/σία από migf1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ρε φίλε πλάκα μου κάνεις;

 

Θες να παραδεχτώ πως ένα optimized unmanaged τρέχει κατά κανόνα πιο αργά από ένα equally optimized unmanged; Ούτε το δέχομαι, ούτε το παραδέχομαι, ούτε έχω συναντήσει ποτέ στη ζωή μου κανέναν σοβαρό να υποστηρίζει κάτι τέτοιο. Ακόμα και στα πιο intense arguments στο Internet οι σοβαροί συμπληρώνουν κι ένα "although nothing beats hand-optimized native".

 

Let's take a trip down memory lane:

 

Εγώ πάντως δεν έγραψα κάτι τέτοιο. Κάτι τέτοιο κατάλαβες εσύ προφανώς. [...] Ανέφερα επίσης πως υπάρχουν περιπτώσεις που το managed μπορεί να τρέξει ακόμα και ταχύτερα από το native. Overall όμως το highly optimized unmanaged κατά κανόνα τρέχει ταχύτερα από το optimized managed (highly optimized δεν μπορείς να κάνεις με το managed, αν μπορούσες θα ήταν unmanaged).

 

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

 

Δε μου αρέσει να επαναλαμβάνομαι. Αν θέλεις κάνε τον κόπο να διαβάζεις πιο προσεκτικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Δε μου αρέσει να επαναλαμβάνομαι. Αν θέλεις κάνε τον κόπο να διαβάζεις πιο προσεκτικά.

Το θεωρείς εύκολο μέσα σε τόσες σελίδες και σε 2 διαφορετικά νήματα; :P

 

Οπότε που διαφωνούμε;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αφήστε το .net framework και πιάστε το .net micro framework!

 

 

Εγώ μάλλον θα πιάσω το ... Joomla framework, γιατί παρουσιάστηκε ευκαιρία για λίγο έξτρα χαρτζηλίκι :)

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα ενδιαφέρον "paper" από τη φίλη google:

 

Link

 

μηπως και βοηθήσει να βγάλετε συμπεράσματα όσοι δεν έχετε βγάλει. Υπάρχει και μια ενδιαφέρουσα διαμάχη μεταξύ Sutter και Miguel de Icaza για τι μπορεί να κάνει ένας JIT σε σχέση με εναν κλασικο compiler, μπορείτε να την εντοπίσετε googleίζοντας. Προσωπικά θεωρώ τις native γλώσσες σαφώς ταχύτερες από τις managed. Ταχύτερο όμως δέ σημαίνει και καλύτερο.

 

Χαιρετώ την παρέα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα ενδιαφέρον "paper" από τη φίλη google:

 

Link

 

μηπως και βοηθήσει να βγάλετε συμπεράσματα όσοι δεν έχετε βγάλει. Υπάρχει και μια ενδιαφέρουσα διαμάχη μεταξύ Sutter και Miguel de Icaza για τι μπορεί να κάνει ένας JIT σε σχέση με εναν κλασικο compiler, μπορείτε να την εντοπίσετε googleίζοντας. Προσωπικά θεωρώ τις native γλώσσες σαφώς ταχύτερες από τις managed. Ταχύτερο όμως δέ σημαίνει και καλύτερο.

 

Χαιρετώ την παρέα.

Ωραίο το link!

 

Βρήκα τελικά κι εγώ αυτό που έψαχνα, και που έγραψα πως θα το ποστάρω αν το βρω: http://stackoverflow.com/questions/145110/c-performance-vs-java-c/6253691#6253691 (έχει και link προς το ποστ στο οποίο απαντάει, του Orion Adrian). Εστίασα στο link που αναλύει τους AOC διότι συμπίπτει με τις δικές μου απόψεις... όλο όμως το νήμα είναι πολύ ενδιαφέρον για όποιον έχει την υπομονή να το διαβάσει, γιατί έχει πολλά και valid points εκατέρωθεν.

 

Θεωρούσα και θεωρώ αυτονόητο ότι το native code είναι κατά κανόνα ταχύτερος από τον managed. Θεωρούσα και θεωρώ επίσης αυτονόητο πως η ταχύτητα δεν είναι και δεν πρέπει να είναι πάντα το βασικό κριτήριο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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