Είναι δυνατόν να πούμε ότι η διαφορά μεταξύ του επιτακτικού προγραμματισμού και του δηλωτικού προγραμματισμού είναι απλά στο επίπεδο της αφαίρεσης;


Απάντηση 1:

Είδος, αλλά όχι πραγματικά. Πρόκειται για το ποσό που χρειάζεται να εξετάσετε το μηχάνημα.

Η έννοια ενός επιτακτικού προγράμματος είναι αυτό που κάνει στη μηχανή. Η έννοια μιας δήλωσης είναι ό, τι υποδηλώνει. Αυτές ονομάζονται "επιχειρησιακή σημασιολογία" και "σημασιολογική" σημασιολογία αντίστοιχα. Ως παράδειγμα ενός προγράμματος που είναι σαφώς λειτουργικό αλλά δεν υποδηλώνει τίποτα ειδικότερα, σκεφτείτε το ακόλουθο κομμάτι του BASIC: 10 GOTO 10. Αντίθετα, είναι σαφές τι σημαίνει το ακόλουθο κείμενο, αλλά δεν προκαλεί την εκτέλεση μιας μηχανής οτιδήποτε συγκεκριμένα: {"x": 7} (είναι ένα αντικείμενο του οποίου η ιδιότητα X έχει τιμή 7).

Μπορείτε και πρέπει να εξετάσετε τόσο τις λειτουργικές όσο και τις σημασιολογικές σημασίες του προγράμματος σας. Για παράδειγμα, στην επιτακτική C, μπορείτε να καταλάβετε τι είναι το x + 1 αντί για αυτό που κάνει. Και στο δηλωτικό Haskell, πρέπει να καταλάβετε την επιχειρησιακή συμπεριφορά του foldl (+) [1..10000000] (επειδή είναι πιθανό να εξαντληθεί η μνήμη).

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


Απάντηση 2:

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

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


Απάντηση 3:

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

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


Απάντηση 4:

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

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