Ποια είναι η διαφορά μεταξύ της γραφής ενός προγράμματος, ενός σεναρίου ή ενός αλγορίθμου;


Απάντηση 1:

Καλή ερώτηση!

Συζητούσα με έναν συγγραφέα που γράφει βιβλία προγραμματισμού για μικρά παιδιά προ-Κ (αγκαλιάστε τα νωρίς!) - πρέπει να χρησιμοποιήσουμε περισσότερο τη λέξη "πρόγραμμα" ή "αλγόριθμος"; Πώς ορίζετε σαφώς μεταξύ των δύο; Πότε είναι εναλλάξιμα;

Η γενική συναίνεση μεταξύ των επιστημόνων υπολογιστών είναι ότι ένας αλγόριθμος αναφέρεται γενικά σε μια μαθηματική αφαίρεση ενός προγράμματος (δηλ. Με αποθήκευση μνήμης + υπολογιστικό υπόστρωμα του οποίου οι φυσικές λεπτομέρειες είναι "αφαιρεμένες" μακριά.) Αυτό που παραμένει είναι οι δομές δεδομένων όπως οι συνδεδεμένες λίστες / συστοιχίες και ίσως ένα λευκό πίνακα :)

Το "πρόγραμμα" θα είναι η φυσική εφαρμογή αυτού του προγράμματος - δηλαδή ο ερμηνευτής Python + ένα σενάριο που περιγράφει τον αλγόριθμο + όλες τις δυναμικές βιβλιοθήκες που παρέχει το λειτουργικό σύστημα για να υποστηρίξει την εκτέλεση αυτού του προγράμματος.

Στην πράξη, όμως, τα πράγματα είναι λίγο θολά - ορισμένοι αλγόριθμοι είναι εξαιρετικά εξειδικευμένοι στο περιβάλλον στο οποίο τρέχουν και δεν έχει νόημα να «αφηρηθούν» αυτές οι λεπτομέρειες. Οι λειτουργίες του λειτουργικού συστήματος που παρέχουν δομές δεδομένων προγραμματισμού συμβατές με τον αλγόριθμό σας (π.χ. C ++ STL εναντίον αφηρημένου αλγόριθμου), υλοποιούνται με άλλους αλγόριθμους, οι οποίοι υποστηρίζονται από πιο αφηρημένες δομές προγραμματισμού, οι οποίες είναι οι ίδιες αλγόριθμοι. Έτσι, οι αλγόριθμοι είναι όλο κάτω. Ή στο τέλος της ημέρας, όλα είναι απλώς ένα πρόγραμμα και οι αλγόριθμοι είναι απλώς μια μαθηματική δομή που χρησιμοποιούμε για να λογομαστούμε για προγράμματα άνετα χωρίς να ιδρώνουμε τις λεπτομέρειες.

Μια δέσμη ενεργειών είναι ένα είδος προγράμματος που συνήθως ερμηνεύεται και όχι συντάσσεται (αλλά δεν είναι λογικό να "script" ή να "αυτοματοποιήσετε" ή να "προσαρμόσετε" κάποιο λογισμικό όπως το Game Engine γράφοντας μικρά αποσπάσματα κώδικα C ++ που συντάσσονται) . Και η σύγχρονη διάκριση μεταξύ προγραμμάτων που έχουν ερμηνευτεί και μεταγλωττιστεί είναι οπωσδήποτε θολή, οπότε δεν νομίζω ότι είναι σημαντικό να σχεδιάζουμε μια γραμμή μεταξύ των σεναρίων και των προγραμμάτων (ή scripting και προγραμματισμού).


Απάντηση 2:

Ένα σενάριο είναι πραγματικά το ίδιο με ένα πρόγραμμα, αλλά το "script" φέρει την έννοια ότι είναι "ερμηνευμένο" (δηλαδή, αναλύεται και κατανοείται ενώ εκτελείται). Ναι, ξέρω, υπάρχουν μεταγλωττιστές για Javascript και διερμηνείς για το .NET IL, οπότε είναι ένα είδος ασαφούς περιοχής. Λειτουργικά, δεν υπάρχει διαφορά.

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

Θα μπορούσατε επίσης να έχετε ένα πρόγραμμα που δεν αντιπροσωπεύει έναν αλγόριθμο. Μια μαθηματική απαίτηση για έναν αλγόριθμο είναι ότι ολοκληρώνεται σε ένα πεπερασμένο χρονικό διάστημα. Πάντα είχε έναν υπολογιστή "πάγωμα"; Αυτό είναι ένα πρόγραμμα που δεν υλοποιεί έναν αλγόριθμο.


Απάντηση 3:

Ένα σενάριο είναι πραγματικά το ίδιο με ένα πρόγραμμα, αλλά το "script" φέρει την έννοια ότι είναι "ερμηνευμένο" (δηλαδή, αναλύεται και κατανοείται ενώ εκτελείται). Ναι, ξέρω, υπάρχουν μεταγλωττιστές για Javascript και διερμηνείς για το .NET IL, οπότε είναι ένα είδος ασαφούς περιοχής. Λειτουργικά, δεν υπάρχει διαφορά.

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

Θα μπορούσατε επίσης να έχετε ένα πρόγραμμα που δεν αντιπροσωπεύει έναν αλγόριθμο. Μια μαθηματική απαίτηση για έναν αλγόριθμο είναι ότι ολοκληρώνεται σε ένα πεπερασμένο χρονικό διάστημα. Πάντα είχε έναν υπολογιστή "πάγωμα"; Αυτό είναι ένα πρόγραμμα που δεν υλοποιεί έναν αλγόριθμο.


Απάντηση 4:

Ένα σενάριο είναι πραγματικά το ίδιο με ένα πρόγραμμα, αλλά το "script" φέρει την έννοια ότι είναι "ερμηνευμένο" (δηλαδή, αναλύεται και κατανοείται ενώ εκτελείται). Ναι, ξέρω, υπάρχουν μεταγλωττιστές για Javascript και διερμηνείς για το .NET IL, οπότε είναι ένα είδος ασαφούς περιοχής. Λειτουργικά, δεν υπάρχει διαφορά.

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

Θα μπορούσατε επίσης να έχετε ένα πρόγραμμα που δεν αντιπροσωπεύει έναν αλγόριθμο. Μια μαθηματική απαίτηση για έναν αλγόριθμο είναι ότι ολοκληρώνεται σε ένα πεπερασμένο χρονικό διάστημα. Πάντα είχε έναν υπολογιστή "πάγωμα"; Αυτό είναι ένα πρόγραμμα που δεν υλοποιεί έναν αλγόριθμο.