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

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

Δημοσ.

Άσχετο βέβαια αλλά η 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...γλώσσες)..

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

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

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

Δημοσιευμένες Εικόνες

Δημοσ.

Άρα δηλαδή ο Μ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 λέει κάτσε να δούμε πού είμαστε τώρα και που πάμε, κλπ κλπ φτου κι απ την αρχή.

  • Like 1
  • Moderators
Δημοσ.

Η αρχή είναι τα punch cards.

 

 

Δεν υπάρχει VB7 γιατί απλά η VB6 δεν μπορεί να ξεπεραστεί!.

 

Αυτό είναι το αγαπημένο μου quote από όλα όσα έχεις γράψει!

  • Like 4
Δημοσ.

Τις γνώρισα και τις διάτρητες κάρτες..(ενός θείου...όταν πήγαινε στο ΕΜΠ). Αλλά την εποχή που σπούδαζα..μόνο στο ΤΕΙ Αθήνας έπαιζαν ακόμα! (Δεκαετία του 80).

 

(δείτε καμιά φορά το κώδικα της Μ2000, έχει ενδιαφέροντα πράγματα..π.χ. έχει TaskManager για να εκτελεί "νήματα" κώδικα Μ2000, το γράφω σε εισαγωγικά γιατί δεν έχουμε νήμα με την έννοια του thread in process σε επίπεδο λειτουργικού, αλλά για προγραμματιστικά νήματα, που κάνουν με χρονοδιακόπτες αυτό που περιγράφει ο Defacer, απλά τα κοψίματα είναι πιο λελογισμένα και όχι ότι κάνεις άστο..και πάμε για άλλα)

Δημοσ.

Ένα 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, έχει ενδιαφέροντα πράγματα

Τον είδα(με?). Είναι εξαιρετικό παράδειγμα του τι ΔΕΝ πρέπει να κάνει κάποιος. Μπορεί και να έχει ενδιαφέροντα πράγματα, αλλά αν θες να φας μια σοκολάτα καλύτερα είναι να αγοράσεις από το περίπτερο παρά να μαζέψεις μια από κάτω επειδή έτυχε να είναι μπροστά σου.

Δημοσ.

Defacer...έχεις όπως είναι σε όλους γνωστό πέσει στην περίπτωση της υποπερίπτωσης και το κάνεις σημαία!

 

http://stackoverflow.com/questions/18132580/does-an-interrupt-handler-have-to-be-reentrant


Defacer ...Η Μ2000 κάθε μέρα βελτιώνεται! Τώρα έχει αποκτήσει GUI...για τον χρήστη! Δηλαδή έφτιαξα framework (κάνω προσθήκες αυτήν την εποχή)...πάνω στο framework της VB6 για να μην χρησιμοποιώ τα στοιχεία της VB6, μόνο το βασικό, την φόρμα και πάνω σε αυτήν έχω χτίσει όλα τα άλλα!

  • Moderators
Δημοσ.

Έχω την εντύπωση ότι ο defacer αναφέρεται πιο πολύ στην ποιότητα του κώδικα παρά στις δυνατότητές του (έχω ρίξει κι εγώ μια ματιά).

  • Like 1
Δημοσ.

Ποιότητα ως προς τι; Όταν ξεκίνησα για παράδειγμα με ενδιέφερε να δουλεύει απλά παρά να δουλεύει γρήγορα. Τώρα δουλεύει πολύ πιο γρήγορα.

Έχει και σαβούρα δηλαδή παλιές συναρτήσεις που δεν χρησιμοποιούνται! Αλλά είναι λίγες. Αλλά γιατί δεν τα γράφετε αυτά στο νήμα για την Μ2000;

Δημοσ.

Defacer...έχεις όπως είναι σε όλους γνωστό πέσει στην περίπτωση της υποπερίπτωσης και το κάνεις σημαία!

 

http://stackoverflow.com/questions/18132580/does-an-interrupt-handler-have-to-be-reentrant

Υποπερίπτωση είναι αυτό που λέει εκεί, ότι δηλαδή μιλάμε για ένα interrupt που είναι maskable (δεν είναι όλα, ούτε όλες οι CPU έχουν τέτοια δυνατότητα) και το τάδε λειτουργικό κάνει αυτόματα το masking.

Ποιότητα ως προς τι;

Και αυτή είναι η ρίζα του προβλήματος.

 

Αλλά γιατί δεν τα γράφετε αυτά στο νήμα για την Μ2000;

Γιατί πρώτον χεστήκαμε για την ποιότητα της M2000 και δεύτερον οποιοσδήποτε παρακολουθεί το forum και ανοίγει κουβέντα μαζί σου με δική του πρωτοβουλία τα 'θελε και τα 'παθε.

Δημοσ.

Και άλλα γνωστά παραμύθια και φαντασιώσεις του Defacer...

Συμπεράσματα..που δεν σχετίζονται με την πραγματικότητα! Αφορούν συγκεκριμένα άτομα! Αυτό το αναγνωρίζω. Δεν μπορούμε να είμαστε σε όλους αρεστοί! Όποιος το πετυχαίνει να πάει για παρουσιαστής σε τηλεπαιχνίδι.. θα σκίσει!

 

Η Μ2000 είναι για όποιον ενδιαφέρεται!

Εδώ συζητάμε για το recursion, και η απάντηση που έδωσαν οι Φωστήρες (Defacer και κουστωδία) ποια ήταν;

Ένα τίποτα! Ανάφερα το reentrance και οι "τίποτα" το θεωρούν επίσης ένα τίποτα.

Στο ερώτημα πότε κάνουμε χρήση της αναδρομής η απάντηση που δόθηκε από τους φωστήρες.."δεν κάνουμε", "o compiler τα ξέρει όλα και το κόβει αυτό το κακό συνήθειο".

Απαντήσεις από άτομα μηδενικής εμπειρίας!

Η απάντησή μου:

Η αναδρομή θεωρείται πρόβλημα (και για μένα ήταν) επειδή ο σωρός επιστροφών/τοπικών (stack) που δίδεται είναι μικρός για μεγάλο αριθμό κλήσεων. Αυτό έχει τη ρίζα του στο γεγονός ότι ένα exe έχει προκαθορισμένο μέγεθος stack, που δεν αλλάζει κατά την εκτέλεση. Αυτό που δεν ήξερα και τελευταία έμαθα και εφαρμόζω είναι ότι μπορεί κανείς να αλλάξει το μέγεθος του Stack αφού κάνει το exe. Δηλαδή αν ένα πρόγραμμα που έχει ήδη φτιαχτεί έχει πρόβλημα με το Stack, και σε αναδρομικές εκτελέσεις βγάζει "stack overfow", απλά το αλλάζουμε, όταν δεν τρέχει βέβαια.

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

Δημοσ.

Σώπα βρε!

Ποιο επαγγελματικό πρόγραμμα είναι σε C# φτιαγμένο;

http://stackoverflow.com/questions/3736236/what-popular-net-desktop-applications-are-out-there

(το Paint.Net)

Ολόκληρη γλώσσα, με τόνους βιβλία, και υποστήριξη, και πόσες γνωστές εφαρμογές έχουμε;

Και σε προβληματίζει η χρήση της Μ2000;

Δημοσ.

...και γιατί πολύ απλά δεν έφτιαχνες ένα dictionary lookup να αντιστοιχείς τις ελληνικές αποδόσεις των εντολών που έχεις στην μ2000 σε VB6 μέσω κάποιου plugin σε κάποιον editor; Δε θα ήταν καλύτερο από το να δημιουργήσεις όλο αυτό το overhead που τρέχει VB6 στην τελική;

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

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

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

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

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

Σύνδεση

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

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

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