Αποστολέας Θέμα: Tester classes  (Αναγνώστηκε 560 φορές)

Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Tester classes
« στις: 09 Οκτ 2020, 01:49:56 μμ »
Αγαπητοί συνδαιτυμόνες καλησπέρα σας, παίρνω το θάρρος να αναφέρω ότι έχω κάνει μία προσπάθεια να φτιάξω tester classes γραμμένες σε java σε περιβάλλον eclipse. Οι κλάσσεις αυτές, συγκρίνουν διαφορετικές προσεγγίσεις ενός αλγορίθμου (π.χ ανταλλαγή τιμών), χρονομετρούν και βγάζουν ποσοστά επιτυχίας της μία μεθόδου επί της άλλης. Το ερέθισμα το πήρα όταν στο μάθημα του ΑΕΠΠ προσεγγίζαμε την επίλυση ενός προβλήματος με διαφορετικές μεθόδους. Όποιος ενδιαφέρεται προσφέρομαι να παρέχω τις κλάσσεις. Ευχαριστώ και καλό Σαββατοκύριακο.
Παναγιώτης (Πανίκας) Αραπάκης

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 530
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Tester classes
« Απάντηση #1 στις: 09 Οκτ 2020, 08:54:40 μμ »
Γιατί το έκανες σε Java;

Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Απ: Tester classes
« Απάντηση #2 στις: 10 Οκτ 2020, 09:56:21 πμ »
Και που να το έκανα; Η java διαθέτει ικανοποιητικό μηχανισμό κληρονονικότητας ώστε να υλοποιήσω το ER (Entity Relation) διάγραμμά μου. Στερείται λίγο ταχύτητας λόγο Interpreter και όχι Compiler αλλά κατά τα άλλα είναι εξαιρετική λύση για προγ/σμό και κυρίως άκρως δομημένη (δοξασμένες μέρες της.. Turbo Pascal).
Παναγιώτης (Πανίκας) Αραπάκης

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 530
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Tester classes
« Απάντηση #3 στις: 11 Οκτ 2020, 05:06:02 πμ »
Σε Turbo Pascal, έγραφα και εγώ προγράμματα. Το καλύτερο ήταν ένας dissasembler για 6502 επεξεργαστή, το 1987!

Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Απ: Tester classes
« Απάντηση #4 στις: 11 Οκτ 2020, 08:29:24 πμ »
IBM, 8086, με δύο drives, το ένα για boot και το άλλο για TPascal και αποθήκευση του κώδικα (το '92). Σε κάποια φάση στο εργαστήριο, σηκώνω τα μάτια μου και παρατηρώ ότι κάποιος είχε γράχει στο πλαίσιο της οθόνης επάνω αριστερά "VIRTUAL REALITY". Με έπιασε νευρικό γέλιο !!!
Παναγιώτης (Πανίκας) Αραπάκης

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5704
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Tester classes
« Απάντηση #5 στις: 11 Οκτ 2020, 08:55:38 πμ »
Εκείνη την προ-Windows εποχή ένα ωραίο που είχα φτιάξει ήταν ένα Tetris σε assembly για να παίζει η τότε κοπέλα μου όσο εγώ προγραμμάτιζα σε Turbo Pascal, ταυτόχρονα στον ΙΔΙΟ υπολογιστή εντός του MSDOS. Το MSDOS όμως δεν υποστήριζε παράλληλη εκτέλεση προγραμμάτων, οπότε για να γίνει διαχωρισμός της οθόνης σε δύο στήλες, αριστερά για προγραμματισμό και δεξιά για Tetris, και διαχωρισμός του αριθμητικού πληκτρολογίου ώστε να στέλνεται μόνο στο Tetris, και εκτέλεση του Tetris ως resident πρόγραμμα, είχα φάει άπειρες ώρες να διαβάζω για BIOS και DOS interrupts και VGA register programming... ούτε Internet τότε για αναζήτηση πληροφοριών ούτε φράγκα για αγορά δεύτερου Η/Υ ούτε τίποτα... αλλά τέτοιες προκλήσεις δημιουργούργησαν και πολύ ωραίες αναμνήσεις!
Multiseat στο ίδιο seat ακόμα δεν υποστηρίζεται από κανένα λειτουργικό! Δυστυχώς στο στρατό το '98 μου έπεσε ο δίσκος και έχασα όλα τα φοιτητικά μου προγράμματα...  :D
(σαν να βγήκαμε 3-4 χιλιόμετρα out of topic!  :angel:)

dpa2006

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 722
Απ: Tester classes
« Απάντηση #6 στις: 11 Οκτ 2020, 10:01:07 πμ »
Καλημέρα σε όλους,υπήρξε η σκέψη για χρήση άλλης γλώσσας και ποιας;
αν επιτρέπετε η ερώτηση ποιες γλώσσες απορρίφθηκαν(αν υπάρχουν) πριν επιλεγεί η Java...; :)
ευχαριστώ εκ'των προτέρων
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Απ: Tester classes
« Απάντηση #7 στις: 11 Οκτ 2020, 12:29:07 μμ »
Καμμία σκέψη για άλλη γλώσσα λόγω "κάποιας σχετικής" εξοικίωσης με Java  λόγω επαγγελματικής ενασχόλησης. Τότε, είχα εκτιμήσει ιδιαίτερα τα προγ/κα εργαλεία που προσέφεραν τεκμηρίωση "με το κιλό" και μάλιστα δωρεάν. Αγαπητοί @alkisg, @bugman τον ειλικρινή μου θαυμασμό και εκτίμηση. Φίλε @dpa2006, ότι θέλεις στην διάθεσή σου.
Παιδιά, μεγάλο λάθος που δεν συμμετείχα στο στέκι πιο νωρίς. Παρ'ότι σας παρακολουθούσα δεν απόφάσισα να συμμετέχω και περνάω μία μακρά περίοδο στασιμότητας και λήθαργου. Οψόμεθα...
Παναγιώτης (Πανίκας) Αραπάκης

Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Απ: Tester classes
« Απάντηση #8 στις: 23 Οκτ 2020, 08:28:57 μμ »
Το βασικό σχήμα αποτελείται:
- Από την κλάσση TesterAbstractClass. Αυτή η κλάσση έχει το βασικό μηχανιμό που εκτελεί την εκάστοτε έκδοση του υπό αξιολόγηση αλγορίθμου.
- Από την κλάσση TesterDeployer. Η κλάσση αυτή είναι ο μηχανισμός του testing συνολικά. Δημιουργεί ένα σύνολο από κλάσσεις που είναι
  υλοποιήσεις της TesterAbstractClass και τις αξιολογεί.

Στέλνω το project directory για το περιβάλλον Eclipse στο νήμα Tester classes.  Έχω υλοποιήσει δοκιμές για διάφορους αλγόριθμούς. Για ότι απορίες έχετε μην διστάσετε να ρωτήσετε, είμαι στη διάθεσή σας.
Παναγιώτης (Πανίκας) Αραπάκης

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 530
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Tester classes
« Απάντηση #9 στις: 24 Οκτ 2020, 05:10:06 πμ »
1. Γράφεις εκ παραδρομής τη κλάση με δυο σίγμα.
2. Προφανώς πήγες στη java όχι για τις κλάσεις, αλλά για δυο πράγματα:
2.1. Υπάρχει η Random numGenerator = new Random(), για να παίρνεις το numGenerator.nextInt(5) κ.α.
2.2. Υπάρχει το System.nanoTime() για να διαβάζεις χρόνο.
3. Υποτίθεται ότι σε βοηθάει μια κλάση που κάνει το λεγόμενο aggregation, δηλαδή σε έναν πίνακα κρατάει έναν αριθμό αντικειμένων. Με αυτό το τρόπο θα περάσεις τον πίνακα, ένα προς ένα τα αντικείμενα και θα εκτελέσεις τον κώδικα προς μέτρηση, όσες φορές χρειάζεται να γίνει (και γράφεται σε ιδιότητες στο αντικείμενο).

Θα μπορούσε να γίνει πιο απλό. Δηλαδή να έχεις το κάθε πρόγραμμα χωριστά και μια εφαρμογή μέτρησης να παίρνει ένα cue list (ένα αρχείο με εντολές). Κάθε γραμμή θα έχει το όνομα του αρχείου προς εκτέλεση, και τον αριθμό επαναλήψεων καθώς και τις αρχικές τιμές.
Δηλαδή ένα πρόγραμμα ελέγχου, ένα αρχείο cue list, και τα εκτελέσιμα για έλεγχο!




Παναγιώτης (Πανίκας) Αραπάκης

  • Οπαδός
  • **
  • Μηνύματα: 10
  • Μεγάλη ταχύτις και αυτοσυγκέντρωση
Απ: Tester classes
« Απάντηση #10 στις: 24 Οκτ 2020, 11:08:05 πμ »
Κλάσση με "σσ" επειδή τα πέτρινα χρόνια της COBOL, VMS κ.α το διδαχτήμαμε με αυτή την ονομασία.
Δεν έχεις άδικο, θα μπορούσε να προσεγγισθεί το θέμα με διαφορικούς και ενδεχομένως πιο απλούς τρόπους. Εφ'όσον έγινε η αρχή, όλα τα άλλα θα μπορέσουν να ακολουθήσουν (βελτιστποίηση, απλοποίηση, επαναπροσέγγιση).
Τη Java την χρησιμοποίησα λόγω πρότερης εμπειρίας, τεκμηρίωσης και μηχανισμών κληρονομικότητας (μοιυ αρέσει να παίζω με τα ER διαγράμματα).

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

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 530
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Tester classes
« Απάντηση #11 στις: 24 Οκτ 2020, 01:10:20 μμ »
Βρήκα αυτό: Η αρχαιοελληνική λέξη κλάσις έγινε στα λατινικά classis. Στις λατινογενείς γλώσσες υπάρχει η τάση να διαβάζουμε το φθόγγο -s- ως -ζ- όταν βρίσκεται ανάμεσα σε δύο φωνήεντα. Για να ακούγεται σωστά η λέξη κατά το "κλάσις" έπρεπε να γραφτεί με -ss


Δοκίμασε τη Μ2000.
1. Υπάρχουν: Εγχειρίδια στα ελληνικά και στα αγγλικά, για όποιο σετ εντολών θες να χρησιμοποιήσεις, μπορείς να χρησιμοποιείς και μικτό κώδικα, και από τα δύο σετ.
Δεν χρειάζεσαι να κοπιάσεις για να μάθεις να χρησιμοποιείς τον διορθωτή, είναι απλός και κατανοητός. Πχ επιλέγεις μια μεταβλητή και με το F5 της αλλάζεις το όνομα σε όλο το πρόγραμμα, ή με τα F2 και F3 βρίσκεις την μεταβλητή (ή όποιο άλλο όνομα) προς τα πάνω ή προς τα κάτω.
2. Τρέχεις άμεσα το κώδικα. Μπορείς να έχεις πολλές εκδόσεις και να δοκιμάζεις όποια θέλεις
3. Στο Info αρχείο θα βρεις παιχνίδια, ένα από αυτά είναι το φιδάκι το οποίο παίζει μόνο του για τέσσερις παίκτες (για να μην κουράζονται οι παίκτες να πατάνε ένα κουμπί για το ζάρι). Υπάρχει και το σκάκι και αν κατεβάσεις όπως λένε οι οδηγίες στο κώδικα μια μηχανή αντίπαλου, θα παίζεις με τον υπολογιστή (σε νικάει πάντα, με 200ms χρόνο σκέψης). Ως έχει, χωρίς το πρόσθετο, είναι για δυο παίκτες, με μετακίνηση των πιονιών με το ποντίκι ή με επιλογή με νούμερα e2e4. Επειδή δουλεύει με FEN σειρές (ο τρόπος που σώνεται μια θέση στο σκάκι), μπορούμε να πάρουμε το παιχνίδι σε σειρές FEN, ή να εισάγουμε μια αρχική που βρήκαμε στο διαδίκτυο.  Μπορούμε να πηγαίνουμε πίσω τις κινήσεις! Δουλεύει και με την μηχανή...οπότε βλέπεις και άλλους τρόπους να σε αποτελειώνει! Το πρόγραμμα έχει 1000 γραμμές σε Μ2000, για τα γραφικά και τους ελέγχους έγκυρης κίνησης.

Η Μ2000 χειρίζεται bitmap,  τα βάζει όπου θέλει, με περιστροφή, με διαφάνεια βάσει χρώματος, με ποσοστό διαφάνειας, με bitmap που ορίζει το ποσοστό διαφάνειας ανά εικονοστοιχείο. Επιπλέον χειρίζεται sprites, τα οποία έχουν δικό τους "επίπεδο" δεν γράφονται στο βασικό επίπεδο, οπότε λειτουργούν σαν τα Hardware sprites στο Comodore 64, με την διαφορά ότι εδώ μπορεί να είναι τεράστια, και έχουν δυνατότητα περιστροφής. Επίσης χειρίζεται άμεσα ήχο. Οπότε φτιάχνεις παιχνίδια


Στην εικόνα ο walrus (θαλάσσιος Ίππος) είναι ένα png φορτωμένο σαν base64 text στο κώδικα. Είναι άσπρος και τον εμφανίζω με τρία ακόμα χρώματα γιατί κάθε φορά που αλλάζω εικόνα σε ένα sprite του πετάω ένα χρώμα με διαφάνεια και ένα όνομα στο μέσο. Κατά τη μετακίνηση με το χεράκι (άλλο sprite και αυτό base64 αποθηκευμένο) δεν γίνεται νέα εργασία από τη Μ2000, το αναλαμβάνει η κάρτα γραφικών - επειδή τα Windows είναι μίλια μπροστά από άλλα λειτουργικά και έχει hardware acceleration σε επίπεδο γραφικών στοιχείων παραθύρων).