Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: ApoAntonis στις 13 Οκτ 2019, 03:50:27 ΜΜ

Τίτλος: ΜΕ_ΒΗΜΑ 0
Αποστολή από: ApoAntonis στις 13 Οκτ 2019, 03:50:27 ΜΜ
Ήλπιζα οι φετινές οδηγίες να το "ξεπετάξουν" αυτό το ζήτημα. Ίσως να είμαι εγώ χαζούλης και να μην καταλαβαίνω την
χρησιμότητα.

Ας είναι, με ΜΕ_ΒΗΜΑ 0
δεν είναι συντακτικό λάθος, αλλά ταυτόχροντα παραβιάζεται το κριτήριο της περατότητας.

Αν δοθεί τμήμα προγράμματος ή αλγόριθμος (τι ωραίο να δίνονται και τα δύο...πολύ χρήσιμο και αυτό)
και ζητά να διορθωθεί αλλά και να χαρακτηριστεί
που κατατάσσεται;

Η πρώτη εντύπωση είναι στα λογικά, όμως λογικά είναι αυτά που δίνουν μη αναμενόμενο αποτέλεσμα. Το πρόγραμμα εφόσον δεν ολοκληρώνει
την εκτέλεση του δεν παράγει -έστω και μη αναμενόμενα- αποτελέσματα.

Γνώμες; Να πούμε τζιζ κακό και αν μπεί γράψτε το Πάτερ Ημών;
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: George Eco στις 13 Οκτ 2019, 04:22:34 ΜΜ
Δες εδώ  (https://alkisg.mysch.gr/steki/index.php?topic=7138.0)τι έγινε με αυτό το θέμα λίγο καιρό πριν. Τα συμπεράσματα δικά σου.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 13 Οκτ 2019, 09:08:56 ΜΜ
το πρόγραμμα είναι μορφή αλγορίθμου όπως και η ψευδογλώσσα, όχι διαφορετικό είδος

η παραβίαση της περατότητας με οποιαδήποτε δομή επανάληψης δεν είναι λάθος χρόνου εκτέλεσης;
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: ApoAntonis στις 13 Οκτ 2019, 09:35:25 ΜΜ
Παράθεση από: Παναγιώτης Τσιωτάκης στις 13 Οκτ 2019, 09:08:56 ΜΜ
δεν είναι λάθος χρόνου εκτέλεσης;

Πόθεν προκύπτει ότι είναι λάθος χρόνου εκτέλεσης;
Ή αλλιώς υπό ποιόν ορισμό -του βιβλίου- ένας ατέρμονας βρόχος προκαλεί λάθος χρόνου εκτέλεσης;

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

(επίσης, έχουμε πια τα συντακτικά, τα λογικά και τα λάθη που οδηγούν σε αντικανονικό τερματισμό, τι να κάνουμε αυτές είναι οι επιλογές)


...
Για τον αλγόριθμο σε ποιά μορφή δίνεται, δεν είπα ότι είναι άλλο. Είπα ότι είναι ανούσιο αυτό που γίνεται. Ένα και ένα κάνει δύο.
"δίνεται το παρακάτω τμήμα προγράμματος"
"δίνεται το παρακάτω τμήμα αλγορίθμου"

Μην τα βάζετε μαζί μου...δεν είμαι από τους θεματοδότες.

Βέβαια θα μου πείτε ακόμα πρέπει να εξηγούμε γιατί το παράρτημα στο τέλος του προγράμματος αναφέρει και το όνομα
αλλά δεν πειράζει σε ν-επανεκδόσεις από τώρα θα διορθωθεί και αυτό. Μικρότητες.
(ε,ρε γέλια να δοθεί αυτό για συντακτικό λάθος)
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 13 Οκτ 2019, 10:28:33 ΜΜ
Επειδή εγώ βασανίζω ανελέητα την ορθή διατύπωση, η διάζευξη "αλγόριθμος ή πρόγραμμα" είναι λανθασμένη.
η διατύπωση αλγορίθμου σε κωδικοποίηση σε ψευδογλώσσα ή σε πρόγραμμα σε ΓΛΩΣΣΑ ή python είτε σε διάγραμμα ροής είναι εναλλακτικές μορφές αλγορίθμου. Συνεπώς, θα πρέπει να διατυπώνεται ορθά.
Προφανώς και η διατύπωση "δίνεται το παρακάτω τμήμα αλγορίθμου", δεν αναφέρεται στην ψευδογλώσσα, αλλά σε οποιαδήποτε μορφή διατύπωσης αλγορίθμου.

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

Το κεφάλαιο 13 ήταν στην ύλη του μαθήματος από το 1999 μέχρι το 2002 και δεν πρόλαβα να το διδάξω. Αλλά επί 17 έτη δεν είχαμε στη φαρέτρα μας αυτήν την κατηγοριοποίηση λαθών παρά μόνο τα κριτήρια των αλγορίθμων (που δεν περιγράφουν όλες τις καταστάσεις).
Όμως τώρα υπάρχουν τα λάθη χρόνου εκτέλεσης που δεν είναι τα συντακτικά ούτε τα λογικά λάθη.
Τα συντακτικά λάθη δεν οδηγούν στον αντικανονικό τερματισμό του προγράμματος, το πρόγραμμα δεν τρέχει.
Τα λογικά λάθη δεν οδηγούν στον αντικανονικό τερματισμό του προγράμματος, το πρόγραμμα τρέχει κανονικά.

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

Στο πλαίσιο στη σελίδα 130 του νέου βιβλίου αναφέρεται η περατότητα αλλά όχι ως λογικό λάθος. Ναι ο συγγραφέας του κομματιού δεν το πρόσεξε.
Και στο παράδειγμα 5.17, η υπέρβαση των ορίων του πίνακα, δεν είναι λογικό λάθος, φαντάζομαι θα διορθωθεί ...
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: ApoAntonis στις 14 Οκτ 2019, 12:29:11 ΠΜ
Δεν καταλαβαίνω γιατί να δεχθώ εγώ το μένος όταν παραθέτω εκφώνηση ΠΑΝΕΛΛΑΔΙΚΩΝ.
(έγραψα κάτι σχετικό με ψευδογλώσσα και δεν το βλέπω; )
Θα με διορθώσετε που παραθέτω εκφωνήσεις;
Μάλλον δεν καταλάβατε ότι για το ίδιο πράγμα, την μία φορά οι θεματοδότες το δίνουν ως
"δίνεται το παρακάτω τμήμα προγράμματος" και την άλλη "δίνεται το παρακάτω τμήμα αλγορίθμου".
Δείτε το ΘΕΜΑ Α των επαναληπτικών του 2019, τι άλλο να πω.

Είτε θα τα πούμε συντακτικά/λογικά/και λάθη που οδηγούν σε αντικανονικό τερματισμό
είτε θα τα πούμε  λάθη κατά την υλοποίηση/λάθη κατά την εκτέλεση/λογικά.
(Α, ναι. Το ή δεν είναι αποκλειστική διάζευξη. Α, για δες, μπορώ και εγώ να απαντάω άκομψα! )

Στο κομμάτι της απάντησης της αρχικής ερώτησης δυσκολεύομαι να ακολουθήσω.

Παράθεση από: Παναγιώτης Τσιωτάκης στις 13 Οκτ 2019, 10:28:33 ΜΜ
οι άπειρες επαναλήψεις κ.α. είναι λάθη χρόνου εκτέλεσης και οδηγούν στον αντικανονικό τερματισμό του προγράμματος.

Μπορείτε να μου πείτε που αναφέρεται αυτό που γράψατε;
Επίσης δεν αναφέρθηκα γενικά σε ατέρμονες βρόχους, αλλά μόνο σε μια υποπερίπτωση. Την υποπερίπτωση που μέχρι πέρσι στις οδηγίες ερχόταν με μεγάλα παχιά γράμματα ότι θα κάνει άπειρες επαναλήψεις.
Αν το βρούμε αυτό, θα χρειαστώ και εξήγηση πως γίνεται ο βρόχος να εκτελεί άπειρες επαναλήψεις ενώ το πρόγραμμα τερματίζει. Όταν "σκοτώσω" το πρόγραμμα, δεν νοείται ότι τερμάτισε. Δεν έχει ληφθεί απόφαση όταν το "σκοτώσω".
Δεν λέω ότι είναι ζήτημα μαθητικό/εξεταστικό τώρα αυτό, αλλά έχει γίνει λάστιχο η θεωρία αλγορίθμων.

Πάμε στην σελ. 130.
Δεν αναφέρονται κατηγορίες λαθών, είναι σημεία προσοχής. Θα ξεφύγουμε τελείως δεν ξέρουμε ποιά είναι η θεωρία και ποιές οι ασκήσεις εδωπέρα.
Χρήσιμη πληροφορία ο λαπτήρας.
Αλλά να το τραβήξω και λίγο ακόμα γιατί το σηκώνει. Τι πάει να πεί αρχικοποίηση της συνθήκης; Αρχικοποιούμε την συνθήκη ή τις τιμές των μεταβλητών που περιέχει; Γιατί το βιβλίο 1, αλλιώς το γράφει.

Εμένα δεν με ενδιαφέρει καθόλου αν το σύγγραμμα γράφτηκε εν μια νυκτί, αν το έγραψαν από χόμπι, αν στέκονταν με το ένα
πόδι όρθιοι τιμωρία στην γωνία. Με ενδιαφέρει να βγάλω μια άκρη.
Δεν μου πέφτει καθόλου η υπόληψη με δήθεν δηκτικά σχόλια. Δεν μου πέφτει η υπόληψη όταν εγώ λέω άσπρο και ο "συνάδελφος" λέει μαύρο γιατί δεν έχει διαβάσει τις οδηγίες. Πάρτε παιδάκια μου φωτοτυπία τις οδηγίες και στο καλό να βρείτε το δίκιο σας.
Η υπόληψη μου πέφτει όταν με ρωτάνε κάτι και απαντάω στην τύχη γιατί δεν βγάζω άκρη.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 14 Οκτ 2019, 08:27:49 ΠΜ
Αναφερόμαστε σε άλλο μάθημα/διδακτικό εγχειρίδιο προφανέστατα. Το προηγούμενο μήνυμά μου απαντάει, κατά τη γνώμη μου, σε όλο τον προβληματισμό της συζήτησης.

Η παραβίαση περατότητας και καθοριστικότητας σε έναν αλγόριθμο αποτελεί λάθος χρόνου εκτέλεσης. Και το βήμα 0 στη δομή Για αποτελεί παραβίαση της περατότητας.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: ApoAntonis στις 14 Οκτ 2019, 09:51:59 ΠΜ
Δεν έχω πρόβλημα και ας μπερδευτήκαμε.

Πολύ ωραία,
Παράθεση από: Παναγιώτης Τσιωτάκης στις 14 Οκτ 2019, 08:27:49 ΠΜ

Η παραβίαση περατότητας και καθοριστικότητας σε έναν αλγόριθμο αποτελεί λάθος χρόνου εκτέλεσης.

υπάρχει κάπου γραμμένο αυτό; Προσπαθώ να λύσω ένα υπαρκτό πρόβλημα.
Ευτυχώς έχω και μαθητές που θα μου πουν που το βρήκες;

Οποιαδήποτε αναφορά σε λάθη και εκσφαλμάτωση είναι πλήρως αποδεσμευμένη από τα κριτήρια των αλγορίθμων.
Το βιβλίο καθηγητή ούτε καν αφήνει υπόνοια για σύνδεση των λαθών με τα κριτήρια.
Μήπως υπάρχει κάτι σε παλαιότερες οδηγίες που μου διαφεύγει;
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 14 Οκτ 2019, 10:21:40 ΠΜ
Όχι, ακριβώς αυτό είπα χτες, ότι τα κριτήρια των αλγορίθμων δεν επαρκούν για να περιγράψουν όλα τα λάθη στους αλγορίθμους. Ούτε εγώ συνέδεσα τα κριτήρια με τις κατηγορίες λαθών.
Ωστόσο, τα λάθη χρόνου εκτέλεσης είναι τα λάθη που προκύπτουν κατά την εκτέλεση (και οδηγούν σε μη κανονικό τερματισμό του προγράμματος).
Συνεπώς, η διαίρεση με το μηδέν, η μη ολοκλήρωση ενός βρόχου, η λάθος χρήση παραμέτρων (τύποι, πλήθος) σε κλήση υποπρογραμμάτων κ.α. είναι τέτοια λάθη. Επιπρόσθετα, δεν αποτελούν συντακτικά λάθη, αλλά ούτε λογικά λάθη.

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

Το νέο βιβλίο μαθητή παραθέτει την παραβίαση ορίων του πίνακα σε παράγραφο με τίτλο "Κατηγορίες Λογικών λαθών". Αλλά και το "τι πρέπει να αποφευχθεί κατά τη διατύπωση βρόχων" επίσης σε αυτήν την παράγραφο. Αυτό που ανέφερα παραπάνω είναι ότι αυτή η επιλογή θα μπερδέψει.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: ApoAntonis στις 14 Οκτ 2019, 10:40:30 ΠΜ
ευχαριστώ


Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: alkisg στις 14 Οκτ 2019, 12:17:02 ΜΜ
Συντακτικά λάθη: το πρόγραμμα δεν μεταφράζεται από τον interpreter/compiler και δεν ξεκινάει καν η εκτέλεση.
Λάθη χρόνου εκτέλεσης: η εκτέλεση του προγράμματος σταματάει με "βίαιο τερματισμό" χωρίς να έχει φτάσει το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Λογικά λάθη: το πρόγραμμα εκτελείται αλλά δεν κάνει αυτά που θέλουμε.

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

Τα λογικά λάθη μπορεί να προκαλέσουν λάθη χρόνου εκτέλεσης αλλά μπορεί και όχι. Για παράδειγμα, οι άπειρες επαναλήψεις (όταν δεν είναι υπολογιστική διαδικασία) είναι λογικό λάθος που δεν προκαλεί λάθος χρόνου εκτέλεσης.

Αν τα ζωγραφίσουμε ως κουτιά, το πράσινο στην παρακάτω εικόνα είναι το σημείο όπου τα λογικά λάθη (κίτρινο) και τα λάθη χρόνου εκτέλεσης (μπλε) αλληλοεπικαλύπτονται.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 14 Οκτ 2019, 01:15:14 ΜΜ
Παράθεση από: alkisg στις 14 Οκτ 2019, 12:17:02 ΜΜ
Για παράδειγμα, η διαίρεση με το μηδέν συνήθως σημαίνει ότι κάπου έπρεπε να κάνω μια ΑΝ για να μην γίνει, οπότε φταίει ο κώδικάς μου, άρα είναι λογικό λάθος.
υπό αυτό το πρίσμα, όλα τα λάθη είναι λογικά, διότι ο προγραμματιστής θα μπορούσε/έπρεπε με κώδικα να είχε προβλέψει και αποτρέψει το να συμβούν (εκτός από τη διακοπή του ρεύματος).
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: alkisg στις 14 Οκτ 2019, 01:49:21 ΜΜ
Όχι όλα. Ο προγραμματιστής είναι υπεύθυνος για τα λάθη που μπορούν να διορθωθούν στον κώδικά του, ανάλογα πάντα με την εκφώνηση και με το πόσες σχετικές δυνατότητες του δίνει η γλώσσα, οι βιβλιοθήκες, το λειτουργικό κλπ.

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

Αν κάποιος εκτελέσει ΓΡΑΨΕ "Hello world" και του βγάλει out of memory ή display not found, ε, δεν μπορούμε να του καταλογίσουμε και λογικό λάθος στο Hello world του, ειδικά αν η γλώσσα δεν του δίνει πρόσβαση στα πιθανά προβλήματα που μπορούν να παρουσιαστούν.

Αν όμως κάποιος στη C κάνει malloc(10 GB) χωρίς να ελέγξει πρώτα ότι υπάρχει αρκετή RAM, τότε θα πρέπει να του το καταλογίσουμε.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: P.Tsiotakis στις 14 Οκτ 2019, 05:22:50 ΜΜ
Σύμφωνα με τη σελίδα 117 του νέου βιβλίου "Ένα πρόγραμμα μπορεί να τερματίσει αντικανονικά λόγω διαφόρων λαθών. Για παράδειγμα, αν επιχειρήσουμε να διαιρέσουμε με το μηδέν ή αν κατά την ανάγνωση ενός ακεραίου αριθμού εισαχθεί ένα γράμμα."
και στη σελίδα 119 αναφέρει ότι "Ακόμη κι αν το πρόγραμμά μας δεν περιέχει συντακτικά λάθη και μπορεί να εκτελεστεί, πρέπει οπωσδήποτε να ελεγχθεί, ώστε να διαπιστώσουμε αν κατά την εκτέλεσή του εμφανίζονται λογικά λάθη. Τα λογικά λάθη έχουν ως συνέπεια το πρόγραμμα σε κάποιες περιπτώσεις να εξάγει λανθασμένα αποτελέσματα. Για να εντοπίσουμε τα λογικά λάθη μπορούμε να κάνουμε δοκιμαστικές εκτελέσεις του προγράμματός μας και να ελέγξουμε αν για συγκεκριμένες τιμές εισόδου, το πρόγραμμά μας εξάγει σωστά αποτελέσματα."

Τα λογικά λάθη αναφέρονται σε πρόγραμμα που εκτελείται και εξάγει αποτελέσματα, λανθασμένα βεβαίως.
Επειδή όλο το καλοκαίρι έψαξα διεξοδικά για τα είδη των λαθών δεν παρατήρησα ποτέ αναφορά σχετικά με τα infinite loops ειναι logical errors αλλά run time errors.
Δεν ξέρω αν το λάθος σε έναν κώδικα προσδιορίζεται από το περιβάλλον ή τις ικανότητες/διορατικότητα του προγραμματιστή, θα έλεγα ότι προσδιορίζεται από τον εαυτό του (το ίδιο το λάθος):

αυτή τη διάκριση νομίζω περιγράφει και το παλιό και το νέο βιβλίο.

(https://preview.redd.it/rdb8rfuh7xr31.jpg?width=960&crop=smart&auto=webp&s=b61ef74495ea8d3064883582ce60eb5d8f248253)
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: pgrontas στις 14 Οκτ 2019, 06:29:21 ΜΜ
Κατά τη γνώμη μου το βιβλίο κάνει εννοιολογικό λάθος όπως ορίζει τις διάφορες κατηγορίες λαθών, καθώς στις περιπτώσεις συντακτικών και λογικών λαθών τα συσχετίζει με την αιτία από την οποία προκύπτουν, ενώ τα λάθη χρόνου εκτέλεσης τα συσχετίζει με την χρονική στιγμή στην οποία συμβαίνουν. Μήλα με πορτοκάλια δηλαδή, όπως λέγαμε και στο δημοτικό.

Επι της ουσίας τώρα συμφωνώ - σχεδόν- με την άποψη του Άλκη:
Παράθεση από: alkisg στις 14 Οκτ 2019, 12:17:02 ΜΜ
Συντακτικά λάθη: το πρόγραμμα δεν μεταφράζεται από τον interpreter/compiler και δεν ξεκινάει καν η εκτέλεση.
Λάθη χρόνου εκτέλεσης: η εκτέλεση του προγράμματος σταματάει με "βίαιο τερματισμό" χωρίς να έχει φτάσει το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
Λογικά λάθη: το πρόγραμμα εκτελείται αλλά δεν κάνει αυτά που θέλουμε.

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

Τα λογικά λάθη μπορεί να προκαλέσουν λάθη χρόνου εκτέλεσης αλλά μπορεί και όχι. Για παράδειγμα, οι άπειρες επαναλήψεις (όταν δεν είναι υπολογιστική διαδικασία) είναι λογικό λάθος που δεν προκαλεί λάθος χρόνου εκτέλεσης.

Αν τα ζωγραφίσουμε ως κουτιά, το πράσινο στην παρακάτω εικόνα είναι το σημείο όπου τα λογικά λάθη (κίτρινο) και τα λάθη χρόνου εκτέλεσης (μπλε) αλληλοεπικαλύπτονται.
με μια μικρή παραλλαγή που σχετίζεται με το παρακάτω σχόλιο:
Παράθεση από: Παναγιώτης Τσιωτάκης στις 14 Οκτ 2019, 01:15:14 ΜΜ
υπό αυτό το πρίσμα, όλα τα λάθη είναι λογικά, διότι ο προγραμματιστής θα μπορούσε/έπρεπε με κώδικα να είχε προβλέψει και αποτρέψει το να συμβούν (εκτός από τη διακοπή του ρεύματος).
Ναι όλα είναι λογικά λάθη, άλλων προγραμματιστών όμως.
Δηλαδή όταν βγάλει out of memory ή display not found το λάθος συμβαίνει στον χρόνο εκτέλεσης, η αιτία του ομως οφείλεται στην αλληλεπίδραση του προγράμματος με το ΛΣ ή με κάποια βιβλιοθήκη και μάλλον φταίνε οι προγραμματιστές του λειτουργικού ή της βιβλιοθήκης.

Θα ήταν πιο σωστό τα λάθη να κατηγοριοποιουνται σε συντακτικα, λογικά και συστημικά ( ίσως; ) όπου τα τελευταία προκύπτουν λόγω των απρόβλεπτων αλληλεπίδρασης προγραμμάτων/συστημάτων από διαφορετικούς προγραμματιστές και συμβαίνουν κατά την εκτέλεση (όπως και τα λογικά).


Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: alkisg στις 14 Οκτ 2019, 07:05:25 ΜΜ
Παράθεση από: pgrontas στις 14 Οκτ 2019, 06:29:21 ΜΜ
...είναι λογικά λάθη, άλλων προγραμματιστών όμως.

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

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

Άλλα παραδείγματα: ανέβηκε η θερμοκρασία του επεξεργαστή, τελείωσε ο χώρος του δίσκου σε real time video capture κλπ. Εκεί το λειτουργικό ή η γλώσσα μπορούν να σηκώσουν interrupt/exception κλπ, και ο προγραμματιστής της εφαρμογής να μην το κάνει handle, γιατί ουσιαστικά δεν έχει να προσφέρει κάτι περισσότερο στο επίπεδο της εφαρμογής. Π.χ. στην python σε πολλές περιπτώσεις προτείνουν να ΜΗΝ γίνεται try/except αλλά να αφήνουμε επίτηδες να συμβεί runtime error, αφού η ίδια η γλώσσα θα δώσει περισσότερες πληροφορίες για το τι συνέβηκε (stack trace κλπ).

Αν κάποιο λάθος χρόνου εκτέλεσης, αφού μελετηθεί, ΔΕΝ θέλουμε να διορθωθεί αλλά επιθυμούμε να συνεχίσει να συμβαίνει, τότε δεν είναι λογικό λάθος.
Τίτλος: Απ: ΜΕ_ΒΗΜΑ 0
Αποστολή από: pgrontas στις 14 Οκτ 2019, 07:21:06 ΜΜ
Παράθεση από: alkisg στις 14 Οκτ 2019, 07:05:25 ΜΜ
Είχα σκεφτεί να το γράψω αυτό αλλά φοβήθηκα μην μακρυγορώ. Αν συμφωνείς και στο παρακάτω, τότε συμφωνούμε τελείως:
"Υπάρχουν λάθη εκτέλεσης που δεν είναι λογικά λάθη".
Επί της αρχής συμφωνώ. Σχετικά με τα παραδείγματα - από τη δική μου σκοπιά -  το θέμα δεν είναι ότι αφήνουμε κάποιο λάθος εκτέλεσης να συνεχιστεί αφού μελετηθεί, αλλά το ότι είναι τόσο απρόβλεπτες οι πιθανές αλληλεπιδράσεις των διαφόρων συστημάτων, που είναι αδύνατο να τις προβλεψουμε και να τις μελετήσουμε και να κάνουμε προδιαγραφές για τέτοιες περιπτώσεις. Έτσι απλά αποδεχόμαστε λάθη χρόνου εκτέλεσης. Αυτα είναι εκτός προδιαγραφών άρα δεν είναι λογικά λάθη και η αιτία τους είναι συστημική.