Προγραμματιστικό παράδειγμα

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

Ορισμένα παραδείγματα εξετάζουν τον τρόπο εκτέλεσης του κώδικα, όπως το να επιτρέπονται παρενέργειες ή το να πρέπει να γίνονται πράγματα με μια συγκεκριμένη σειρά. Άλλα παραδείγματα εξετάζουν τον τρόπο με τον οποίο ο κώδικας ομαδοποιείται, όπως το να τοποθετείται ο κώδικας σε ένα ή δύο κομμάτια (ή, αντίθετα, σε πολλά μικρά κομμάτια). Κάποια άλλα παραδείγματα εξετάζουν τη σειρά και τα κομμάτια που κάνουν το πρόγραμμα όπως είναι.

Υπάρχουν δύο κύριες ομάδες παραδειγμάτων, τα προστακτικά και τα δηλωτικά. Μια γλώσσα μπορεί να είναι και τα δύο ταυτόχρονα.

Περιεχόμενα

·         1 Επιτακτικός προγραμματισμός

·         2 Δηλωτικός προγραμματισμός

·         3 Άλλα παραδείγματα

·         4 Επισκόπηση

·         5 Προβλήματα με τα παραδείγματα

·         6 Ιστορία

o    6.1 Κώδικας μηχανής

o    6.2 Διαδικαστικές γλώσσες

o    6.3 Αντικειμενοστραφής προγραμματισμός

o    6.4 Δηλωτικά παραδείγματα

·         7 Σχετικές σελίδες

·         8 Αναφορές

·         9 Άλλοι ιστότοποι

Επιτακτικός προγραμματισμός

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

Υπάρχουν δύο μεγάλα παραδείγματα επιτακτικών εντολών, και πολλές φορές μια γλώσσα θα έχει και τα δύο:

  • Δομημένη - Στον υπολογιστή δίνονται οδηγίες που είναι πάντα σε μια συγκεκριμένη σειρά. Δεν επιτρέπονται βήματα όπως "επιστροφή στο βήμα 3" (γνωστά ως εντολές goto).
    • Διαδικαστική - Το πρόγραμμα επιτρέπει στον προγραμματιστή να δώσει ένα όνομα σε μια λίστα εντολών, η οποία μετατρέπει τις εντολές αυτές σε μια "διαδικασία" που μπορεί να χρησιμοποιηθεί αργότερα. Οι περισσότερες δομημένες γλώσσες είναι επίσης διαδικαστικές.
  • Αντικειμενοστραφής - Οι ιδέες εξηγούνται στον υπολογιστή με τη χρήση αντικειμένων, κομμάτια κώδικα που έχουν ένα σύνολο εντολών που μπορούν να τους δοθούν και κάποιες πληροφορίες σχετικά με αυτά.

Δηλωτικός προγραμματισμός

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

Τα πιο γνωστά δηλωτικά παραδείγματα είναι:

  • Λειτουργικό - Το μεγαλύτερο μέρος της εργασίας γίνεται από λειτουργίες χωρίς παρενέργειες.
  • Λογική - Δηλώνεται ένα σύνολο γεγονότων και στη συνέχεια τίθενται μία ή περισσότερες "ερωτήσεις".
  • Καθοδηγούμενο από συμβάντα - Κομμάτια κώδικα ρυθμίζονται ώστε να εκτελούνται όταν συμβαίνουν ορισμένα πράγματα (όπως η ενεργοποίηση του υπολογιστή).

Άλλα παραδείγματα

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

Επισκόπηση

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

Μερικές γλώσσες εντάσσονται σε ένα μόνο κύριο παράδειγμα, όπως:

  • Smalltalk (αντικειμενοστραφής)
  • Συναρμολόγηση (επιτακτική, αλλά όχι δομημένη ή αντικειμενοστραφής)
  • Haskell (λειτουργική)
  • Prolog (λογική)

Οι περισσότερες γλώσσες, ωστόσο, ανήκουν σε περισσότερα από ένα παραδείγματα. Μερικές από αυτές που ξεχωρίζουν για το ότι έχουν περισσότερα από ένα είναι οι εξής:

  • Scala (αντικειμενοστραφής, λειτουργική, παράλληλη)
  • Visual Basic (καθοδηγούμενη από συμβάντα, αντικειμενοστραφής)
  • Common Lisp (διαδικαστική, λειτουργική, αντικειμενοστραφής, μετα)
  • Σχήμα (λειτουργικό, διαδικαστικό, μετα)
  • Perl (λειτουργική, διαδικαστική, μετα-, αντικειμενοστραφής, καθοδηγούμενη από γεγονότα)
  • Python (λειτουργική, αντικειμενοστραφής, διαδικαστική)
  • Ruby (λειτουργική, αντικειμενοστραφής, διαδικαστική)
  • Wolfram Language (λειτουργική, διαδικαστική, γενικά δηλωτική)
  • Oz (λογική, λειτουργική, προστακτική, αντικειμενοστραφής)
  • F# (λειτουργική, προστακτική, αντικειμενοστραφής, μετα-)

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

Πολλά παραδείγματα προγραμματισμού είναι εξίσου γνωστά για τα πράγματα που δεν αφήνουν τους ανθρώπους να κάνουν όσο και για αυτά που αφήνουν τους ανθρώπους να κάνουν. Μια περίπτωση όπου αυτό ισχύει είναι οι λειτουργικές γλώσσες. Όταν μια λειτουργική γλώσσα είναι μόνο ή κυρίως λειτουργική, συνήθως δεν επιτρέπει παρενέργειες. Μια άλλη φορά όπου αυτό ισχύει είναι ο δομημένος προγραμματισμός: διαφέρει από τις κανονικές προστακτικές γλώσσες επειδή δεν επιτρέπει στους προγραμματιστές να χρησιμοποιούν "εντολές goto" (εντολές που λένε στο πρόγραμμα να πάει σε ένα προηγούμενο βήμα). Εξαιτίας αυτού και άλλων λόγων, οι άνθρωποι μερικές φορές πιστεύουν ότι τα νέα παραδείγματα δεν επιτρέπουν αρκετά πράγματα. Ωστόσο, μερικές φορές είναι εντάξει για τον υπολογιστή να μην αφήνει τους ανθρώπους να κάνουν πράγματα: μπορεί να βοηθήσει τους ανθρώπους να αποφύγουν προβλήματα με τον κώδικά τους και να αφήσει τον υπολογιστή να κάνει εικασίες που έτσι μπορεί να εκτελέσει τον κώδικα πιο γρήγορα, ή ακόμα και να ελέγξει τον κώδικα για προβλήματα πριν αυτός εκτελεστεί!

Επισκόπηση των διαφόρων παραδειγμάτων προγραμματισμού σύμφωνα με τον Peter Van RoyZoom
Επισκόπηση των διαφόρων παραδειγμάτων προγραμματισμού σύμφωνα με τον Peter Van Roy

Προβλήματα με τα παραδείγματα

Σε ορισμένους ανθρώπους που μελετούν γλώσσες προγραμματισμού δεν αρέσει το γεγονός ότι χρησιμοποιούνται παραδείγματα για την ομαδοποίηση γλωσσών προγραμματισμού, όπως οι Harper και Krishnamurthi. Αυτοί οι άνθρωποι λένε ότι πολλές γλώσσες προγραμματισμού δεν μπορούν απλώς να ομαδοποιηθούν σε παραδείγματα επειδή οι γλώσσες δανείζονται πράγματα και ιδέες από πολλά παραδείγματα.

Ιστορία

Με την πάροδο του χρόνου έχουν δημιουργηθεί νέα παραδείγματα και οι άνθρωποι είτε τα επεσήμαναν τότε είτε ανατρέχοντας στο παρελθόν. Ένα από τα πρώτα παραδείγματα που αναγνωρίστηκε ως νέος τρόπος προγραμματισμού ήταν ο δομημένος προγραμματισμός από τη δεκαετία του 1960. Η ιδέα ενός "παραδείγματος προγραμματισμού" είναι από το 1978, αν όχι νωρίτερα, όταν ο Robert W. Floyd τη χρησιμοποίησε διδάσκοντας. Η λέξη "παράδειγμα" με τον τρόπο που την εννοούσε ο Robert χρησιμοποιήθηκε για πρώτη φορά από τον Thomas Kuhn στο βιβλίο του Η δομή των επιστημονικών επαναστάσεων (1962).

Κώδικας μηχανής

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

Στη δεκαετία του 1960, οι γλώσσες assembly έγιναν καλύτερες με την προσθήκη νέων πραγμάτων όπως η βιβλιοθήκη COPY, οι μακροεντολές (κομμάτια "ειδικού" κώδικα που μετατρέπονταν σε κανονικό κώδικα πριν αρχίσει να εκτελείται το πρόγραμμα), οι διαδικασίες εκτέλεσης (σύνολα κατευθύνσεων στα οποία δίνεται ένα όνομα και αποθηκεύονται για αργότερα) και οι μεταβλητές (στοιχεία στα οποία δίνονται ονόματα και αποθηκεύονται για αργότερα) από το εξωτερικό του προγράμματος. Αυτό επέτρεπε στους ανθρώπους να χρησιμοποιούν κάποιο κώδικα σε περισσότερα από ένα προγράμματα, και να μην χρειάζεται να ανησυχούν με προβλήματα που αφορούν το υλικό (προβλήματα που συμβαίνουν μόνο σε ένα είδος υπολογιστή) χάρη σε εντολές (ονόματα για κατευθύνσεις) όπως READ/WRITE/GET/PUT.

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

Διαδικαστικές γλώσσες

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

  • COmmon Business Oriented Language (COBOL) - χρησιμοποιεί λέξεις όπως file, move και copy.
  • FORmula TRANslation (FORTRAN) - χρησιμοποιεί μαθηματικές λέξεις και σύμβολα ( σχήματα που χρησιμοποιούνται στη γραφή και την πληκτρολόγηση). Αναπτύχθηκε κυρίως για την επιστήμη και τη μηχανική.
  • ALGOrithmic Language (ALGOL) - για τη συγγραφή αλγορίθμων (σύνολα βημάτων που λένε στον υπολογιστή τι να κάνει). Χρησιμοποιεί μαθηματικές λέξεις και σύμβολα, ακριβώς όπως η FORTRAN.
  • Γλώσσα Προγραμματισμού Ένα (PL/I) - υποτίθεται ότι θα ήταν χρήσιμη σε όλους.
  • Κώδικας συμβολικών εντολών για αρχάριους (BASIC) - δημιουργήθηκε για να βοηθήσει τους αρχάριους να προγραμματίσουν.
  • C - μια γλώσσα προγραμματισμού που προορίζεται να κάνει πολλά πράγματα. Ο Dennis Ritchie εργάστηκε σε αυτήν από το 1969 έως το 1973 στα εργαστήρια AT&T Bell Labs.

Αντικειμενοστραφής προγραμματισμός

Αφού πολλοί άνθρωποι άρχισαν να χρησιμοποιούν διαδικαστικές γλώσσες, επινόησαν τις αντικειμενοστραφείς γλώσσες προγραμματισμού. Σε αυτές τις γλώσσες, τα δεδομένα και οι "μέθοδοι" τους (τρόποι χειρισμού των δεδομένων) τοποθετούνται σε ένα "αντικείμενο". Ορισμένοι προγραμματιστές, όπως ο Richard Stallman, δεν συμφωνούν ότι οι αντικειμενοστραφείς γλώσσες είναι καλύτερες για την εξήγηση ιδεών σε έναν υπολογιστή από τις διαδικαστικές γλώσσες.

Επειδή ο αντικειμενοστραφής προγραμματισμός είναι ένα παράδειγμα και όχι μια γλώσσα, οι άνθρωποι έχουν δημιουργήσει αντικειμενοστραφείς γλώσσες συναρμολόγησης όπως η HLA (High Level Assembly).

Δηλωτικά παραδείγματα

Ταυτόχρονα, κάποιοι έφτιαχναν δηλωτικές γλώσσες προγραμματισμού. Μια γλώσσα που είναι γνωστή ως δηλωτική είναι η SQL (μια γλώσσα για την προσθήκη και αφαίρεση πραγμάτων από πίνακες).

Σχετικές σελίδες

  • Νοοτροπία
  • Σύστημα τύπου
  • Πληρότητα Turing

Ερωτήσεις και απαντήσεις

Ερ: Τι είναι ένα παράδειγμα προγραμματισμού;


A: Ένα παράδειγμα προγραμματισμού είναι ένας τρόπος ομαδοποίησης των γλωσσών προγραμματισμού με βάση τον τρόπο λειτουργίας τους.

Ερ: Ποιες είναι οι δύο κύριες ομάδες παραδειγμάτων;


A: Οι δύο κύριες ομάδες παραδειγμάτων είναι τα προστακτικά και τα δηλωτικά.

Ερ: Σε τι διαφέρουν τα προστακτικά και τα δηλωτικά παραδείγματα;


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

Ερ: Μπορεί μια γλώσσα να είναι και επιτακτικό και δηλωτικό παράδειγμα;


Α: Ναι, μια γλώσσα μπορεί να είναι ταυτόχρονα και επιτακτικό και δηλωτικό παράδειγμα.

Ερ: Πώς ένα παράδειγμα προγραμματισμού ομαδοποιεί τις γλώσσες;


Α: Τα παραδείγματα προγραμματισμού ομαδοποιούν τις γλώσσες με βάση αυτό που κάνουν. Εξετάζουν πώς εκτελείται ο κώδικας, πώς είναι ομαδοποιημένος και με ποια σειρά και ποια κομμάτια αποτελείται το πρόγραμμα.

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


Α: Ναι, υπάρχουν και άλλοι τύποι παραδειγμάτων προγραμματισμού εκτός από τα προστακτικά και τα δηλωτικά. Για παράδειγμα, ορισμένα εξετάζουν τον τρόπο με τον οποίο εκτελείται ο κώδικας (όπως το να επιτρέπονται πλευρικά αποτελέσματα), ενώ άλλα εξετάζουν τον τρόπο με τον οποίο ομαδοποιείται ο κώδικας (όπως το να τοποθετείται ο κώδικας σε ένα ή δύο κομμάτια).

Ερώτηση: Κάθε γλώσσα ανήκει σε ένα μόνο τύπο παραδείγματος προγραμματισμού;


Α: Όχι, δεν ανήκει κάθε γλώσσα σε έναν μόνο τύπο παραδείγματος προγραμματισμού- ορισμένες γλώσσες μπορούν να ανήκουν σε περισσότερους από έναν τύπους παραδείγματος.

AlegsaOnline.com - 2020 / 2023 - License CC3