M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Άσχετο βέβαια αλλά η VB6 δεν είναι intrerpreter, το δε runtime δεν εκτελεί εντολές της VB, είναι για τους ψαγμένους κύρια το subclass για τις δικές της φόρμες. Είναι δηλαδή το framework...Ο κώδικας είναι pure machine code. Για την ανάπτυξη του κώδικα, από το IDE, παίζει να είναι Interpreter, και να κάνει χρήση p-code, και μπορεί να φτιάξει exe με p-code. Αλλά γιατί να το κάνει κανείς αυτό όταν έχει machine code.. @Alithinos Ένα interrupt service routine οφείλει να τερματίσει, να δώσει τον έλεγχο πίσω. Αν όχι...τότε έχουμε Μπλε οθόνες.. Για τους λοιπούς...εξυπνάκηδες...Η τεχνολογία μαθαίνεται από την αρχή..Όποιος ξεκινήσει από το τέλος (πρόσφατο), θα μάθει το καλό copy paste...από το stack overflow.. Δεν υπάρχει VB7 γιατί απλά η VB6 δεν μπορεί να ξεπεραστεί!. Οι Net γλώσσες άλλαξαν framework, γιατί αυτό της VB6 είναι άνευ περιορισμών...άρα μπορεί να γίνει επικίνδυνο. Κάπου στην ιδέα ήταν να παίξει η VBScript μέσα σε Html...αλλά χάλασε στην πορεία. Τώρα έμεινε η C# για native εφαρμογές και το ανάλογό της VB NET (και οι δύο δεν είναι machine code...γλώσσες)..
defacer Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Άρα δηλαδή ο Μ2000 αναφέρεται στο ότι μπορεί μια συνάρτηση Α να καλεί μια συνάρτηση Β, η οποία με τη σειρά της καλεί πάλι την Α. Ενώ rentrant είναι μια συνάρτηση η οποία μπορεί να κληθεί ενώ ήδη τρέχει, πριν προλάβει να ολοκληρώσει. Έχω μια απορία όμως. Αν γίνει το interrupt ενώ η συνάρτηση τρέχει, και κληθεί ξανά, αυτό σημαίνει ότι ο κώδικας που περιέχει και δεν εκτελέστηκε πριν το interrupt θα εκτελεστεί αφού ολοκληρωθεί η νέα εργασία που άρχισε μετά από το interrupt,ή δεν θα εκτελεστεί καθόλου ? Ο κώδικας που δεν πρόλαβε να εκτελεστεί πριν το interrupt θα εκτελεστεί κανονικά όταν η CPU επιστρέψει σ' αυτό που έκανε. Δύο πράγματα που είναι καλό να έχεις στο μυαλό σου: 1. Την σήμερον που έχουμε όλοι multicore cpu συνήθως όταν σκεφτόμαστε "μια συνάρτηση εκτελείται πολλές φορές ταυτόχρονα" φέρνουμε στο μυαλό το σενάριο που πολλά threads την εκτελούν κυριολεκτικά παράλληλα/ταυτόχρονα. Αλλά δεν είναι μόνο αυτό που μπορεί να συμβεί, μπορεί να συμβεί και αυτό που γινόταν όταν δεν είχαμε multicore: εκεί που εκτελείται η function, το λειτουργικό αποφασίζει να κάνει schedule ένα άλλο thread το οποίο όλως τυχαίως θα εκτελέσει την ίδια function. Αυτό δε σημαίνει βέβαια ότι το "πρώτο" thread που θα πάει για ύπνο δε θα συνεχίσει να εκτελεί σα να μην έγινε τίποτα όταν ξαναέρθει η σειρά του! Πρώτον γιατί αν γινόταν αυτό θα είχαμε τρελλά μπάχαλα (φαντάσου η function για την οποία μιλάμε να ήταν π.χ. καμιά DrawWindow του λειτουργικού) και δεύτερον γιατί η CPU δεν ξέρει από functions, θα έπρεπε να γίνει ολόκληρη ιστορία για να πετύχουμε τέτοια συμπεριφορά ακόμα κι αν ήταν επιθυμητή. 2. Στην περίπτωση που έχουμε reentrancy στο ίδιο CPU core, πάντα όλα ξεκινάνε από κάποιο interrupt. Ακόμα και το "απλό preemptive multithreading" του λειτουργικού έτσι γίνεται: ο thread scheduler (μέρος του kernel του λειτουργικού) ρυθμίζει ξυπνητήρι σε Χ msec (όσο είναι το timesclice που προτίθεται να δώσει στο thread που θα τρέξει), και αμολάει τα σκυλιά (μεταφέρει τη ροή εκτέλεσης στον κώδικα που τρέχει εκείνο το thread). Όταν χτυπήσει το ξυπνητήρι (CPU interrupt από το ρολόι) η CPU σταματάει ο,τι κάνει, τρέχει τον interrupt handler, αυτός μετά τρέχει ξανά τον κώδικα του scheduler, ο scheduler λέει κάτσε να δούμε πού είμαστε τώρα και που πάμε, κλπ κλπ φτου κι απ την αρχή. 1
Moderators Kercyn Δημοσ. 15 Απριλίου 2016 Moderators Δημοσ. 15 Απριλίου 2016 Η αρχή είναι τα punch cards. Δεν υπάρχει VB7 γιατί απλά η VB6 δεν μπορεί να ξεπεραστεί!. Αυτό είναι το αγαπημένο μου quote από όλα όσα έχεις γράψει! 4
M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Τις γνώρισα και τις διάτρητες κάρτες..(ενός θείου...όταν πήγαινε στο ΕΜΠ). Αλλά την εποχή που σπούδαζα..μόνο στο ΤΕΙ Αθήνας έπαιζαν ακόμα! (Δεκαετία του 80). (δείτε καμιά φορά το κώδικα της Μ2000, έχει ενδιαφέροντα πράγματα..π.χ. έχει TaskManager για να εκτελεί "νήματα" κώδικα Μ2000, το γράφω σε εισαγωγικά γιατί δεν έχουμε νήμα με την έννοια του thread in process σε επίπεδο λειτουργικού, αλλά για προγραμματιστικά νήματα, που κάνουν με χρονοδιακόπτες αυτό που περιγράφει ο Defacer, απλά τα κοψίματα είναι πιο λελογισμένα και όχι ότι κάνεις άστο..και πάμε για άλλα)
defacer Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Ένα interrupt service routine οφείλει να τερματίσει, να δώσει τον έλεγχο πίσω. Αν όχι...τότε έχουμε Μπλε οθόνες.. Για τους λοιπούς...εξυπνάκηδες...Η τεχνολογία μαθαίνεται από την αρχή..Όποιος ξεκινήσει από το τέλος (πρόσφατο), θα μάθει το καλό copy paste...από το stack overflow.. Δεν υπάρχει VB7 γιατί απλά η VB6 δεν μπορεί να ξεπεραστεί!. Οι Net γλώσσες άλλαξαν framework, γιατί αυτό της VB6 είναι άνευ περιορισμών...άρα μπορεί να γίνει επικίνδυνο. Κάπου στην ιδέα ήταν να παίξει η VBScript μέσα σε Html...αλλά χάλασε στην πορεία. Τώρα έμεινε η C# για native εφαρμογές και το ανάλογό της VB NET (και οι δύο δεν είναι machine code...γλώσσες).. Το ρεσιτάλ συνεχίζεται... Θα περιοριστώ στο αμιγώς τεχνικό κομμάτι: όσον αφορά το interrupt service routine φυσικά οφείλει να τερματίσει. Όχι γιατί μπλε οθόνες και μπλε πούτσες, αλλά επειδή πολύ απλά αν δεν τερματίσει θα γίνει ο,τι γίνεται και σε ένα πρόγραμμα που έχει μπει σε endless loop. Δεν υπάρχει ποτέ περίπτωση ένα ISR να προκαλέσει μπλε οθόνη ή οτιδήποτε ανάλογο επειδή "δεν τερμάτισε", γιατί ΟΛΑ τα ISR πρέπει απαραίτητα να είναι reentrant οπότε το γεγονός ότι "τρέχει ακόμα" δεν επηρρεάζει κανέναν (αν δεν είναι reentrant, ΤΟΤΕ μπλε οθόνες). Επομένως αν δεν τερματίσει ποτέ τότε το μόνο πράγμα που μπορεί να συμβεί είναι hard κόλλημα λόγω endless loop, το οποίο ενδεχομένως "διακόπτεται" κατα τόπους από άλλες ISR. Αυτό είναι το αγαπημένο μου quote από όλα όσα έχεις γράψει! Αυτό βέβαια μόνο μέχρι να μάθεις το λόγο που δεν υπάρχει M2001. (δείτε καμιά φορά το κώδικα της Μ2000, έχει ενδιαφέροντα πράγματα Τον είδα(με?). Είναι εξαιρετικό παράδειγμα του τι ΔΕΝ πρέπει να κάνει κάποιος. Μπορεί και να έχει ενδιαφέροντα πράγματα, αλλά αν θες να φας μια σοκολάτα καλύτερα είναι να αγοράσεις από το περίπτερο παρά να μαζέψεις μια από κάτω επειδή έτυχε να είναι μπροστά σου.
M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Defacer...έχεις όπως είναι σε όλους γνωστό πέσει στην περίπτωση της υποπερίπτωσης και το κάνεις σημαία! http://stackoverflow.com/questions/18132580/does-an-interrupt-handler-have-to-be-reentrant Defacer ...Η Μ2000 κάθε μέρα βελτιώνεται! Τώρα έχει αποκτήσει GUI...για τον χρήστη! Δηλαδή έφτιαξα framework (κάνω προσθήκες αυτήν την εποχή)...πάνω στο framework της VB6 για να μην χρησιμοποιώ τα στοιχεία της VB6, μόνο το βασικό, την φόρμα και πάνω σε αυτήν έχω χτίσει όλα τα άλλα!
Moderators Kercyn Δημοσ. 15 Απριλίου 2016 Moderators Δημοσ. 15 Απριλίου 2016 Έχω την εντύπωση ότι ο defacer αναφέρεται πιο πολύ στην ποιότητα του κώδικα παρά στις δυνατότητές του (έχω ρίξει κι εγώ μια ματιά). 1
M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Ποιότητα ως προς τι; Όταν ξεκίνησα για παράδειγμα με ενδιέφερε να δουλεύει απλά παρά να δουλεύει γρήγορα. Τώρα δουλεύει πολύ πιο γρήγορα. Έχει και σαβούρα δηλαδή παλιές συναρτήσεις που δεν χρησιμοποιούνται! Αλλά είναι λίγες. Αλλά γιατί δεν τα γράφετε αυτά στο νήμα για την Μ2000;
defacer Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Defacer...έχεις όπως είναι σε όλους γνωστό πέσει στην περίπτωση της υποπερίπτωσης και το κάνεις σημαία! http://stackoverflow.com/questions/18132580/does-an-interrupt-handler-have-to-be-reentrant Υποπερίπτωση είναι αυτό που λέει εκεί, ότι δηλαδή μιλάμε για ένα interrupt που είναι maskable (δεν είναι όλα, ούτε όλες οι CPU έχουν τέτοια δυνατότητα) και το τάδε λειτουργικό κάνει αυτόματα το masking. Ποιότητα ως προς τι; Και αυτή είναι η ρίζα του προβλήματος. Αλλά γιατί δεν τα γράφετε αυτά στο νήμα για την Μ2000; Γιατί πρώτον χεστήκαμε για την ποιότητα της M2000 και δεύτερον οποιοσδήποτε παρακολουθεί το forum και ανοίγει κουβέντα μαζί σου με δική του πρωτοβουλία τα 'θελε και τα 'παθε.
M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Και άλλα γνωστά παραμύθια και φαντασιώσεις του Defacer... Συμπεράσματα..που δεν σχετίζονται με την πραγματικότητα! Αφορούν συγκεκριμένα άτομα! Αυτό το αναγνωρίζω. Δεν μπορούμε να είμαστε σε όλους αρεστοί! Όποιος το πετυχαίνει να πάει για παρουσιαστής σε τηλεπαιχνίδι.. θα σκίσει! Η Μ2000 είναι για όποιον ενδιαφέρεται! Εδώ συζητάμε για το recursion, και η απάντηση που έδωσαν οι Φωστήρες (Defacer και κουστωδία) ποια ήταν; Ένα τίποτα! Ανάφερα το reentrance και οι "τίποτα" το θεωρούν επίσης ένα τίποτα. Στο ερώτημα πότε κάνουμε χρήση της αναδρομής η απάντηση που δόθηκε από τους φωστήρες.."δεν κάνουμε", "o compiler τα ξέρει όλα και το κόβει αυτό το κακό συνήθειο". Απαντήσεις από άτομα μηδενικής εμπειρίας! Η απάντησή μου: Η αναδρομή θεωρείται πρόβλημα (και για μένα ήταν) επειδή ο σωρός επιστροφών/τοπικών (stack) που δίδεται είναι μικρός για μεγάλο αριθμό κλήσεων. Αυτό έχει τη ρίζα του στο γεγονός ότι ένα exe έχει προκαθορισμένο μέγεθος stack, που δεν αλλάζει κατά την εκτέλεση. Αυτό που δεν ήξερα και τελευταία έμαθα και εφαρμόζω είναι ότι μπορεί κανείς να αλλάξει το μέγεθος του Stack αφού κάνει το exe. Δηλαδή αν ένα πρόγραμμα που έχει ήδη φτιαχτεί έχει πρόβλημα με το Stack, και σε αναδρομικές εκτελέσεις βγάζει "stack overfow", απλά το αλλάζουμε, όταν δεν τρέχει βέβαια. Το πώς γίνεται το αφήνω για άσκηση...(αν και υπάρχει ένα stack.bat στο κώδικα της Μ2000 που κάνει αυτή την δουλειά...και το χρησιμοποιώ κάθε φορά που βγάζω μια νέα αναθεώρηση).
pmav99 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Η Μ2000 είναι για όποιον ενδιαφέρεται! Για αυτό και αριθμεί έναν ολόκληρο χρήστη. 2
M2000 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Σώπα βρε! Ποιο επαγγελματικό πρόγραμμα είναι σε C# φτιαγμένο; http://stackoverflow.com/questions/3736236/what-popular-net-desktop-applications-are-out-there (το Paint.Net) Ολόκληρη γλώσσα, με τόνους βιβλία, και υποστήριξη, και πόσες γνωστές εφαρμογές έχουμε; Και σε προβληματίζει η χρήση της Μ2000;
Dr.Fuzzy Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 ...και γιατί πολύ απλά δεν έφτιαχνες ένα dictionary lookup να αντιστοιχείς τις ελληνικές αποδόσεις των εντολών που έχεις στην μ2000 σε VB6 μέσω κάποιου plugin σε κάποιον editor; Δε θα ήταν καλύτερο από το να δημιουργήσεις όλο αυτό το overhead που τρέχει VB6 στην τελική;
anon667 Δημοσ. 15 Απριλίου 2016 Δημοσ. 15 Απριλίου 2016 Ποιο επαγγελματικό πρόγραμμα είναι σε C# φτιαγμένο; Γελάει μέχρι και το παρδαλό κατσίκι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα