Question

Je suis en train d'étudier deux principaux paradigmes de programmation, déclarative et paradigme impératif. Je suis un moment difficile après les déclarations ambiguës faites sur mon manuel et wikipedia, tels que:

déclarative: - met l'accent sur « quoi » l'ordinateur est de faire. - est sans « effets secondaires » - sans flux de contrôle

impératif: - met l'accent sur « comment » l'ordinateur devrait le faire. - comment le faire en termes de séquence d'actions

comment vous différencier les deux paradigmes de programmation? Si vous pouviez développer les déclarations faites ci-dessus, il sera très utile.

Était-ce utile?

La solution

SQL est le langage déclaratif classique: vous dites « regardez ce tableau, et donnez-moi toutes les lignes qui répondent à ces critères » (et que vous utilisez dans la vie réelle des jointures, des listes de sélection, que ce soit, mais c'est la même déclaration de base) . Comme vous l'avez dit plus haut, cette déclaration indique à l'ordinateur ce que vous voulez, pas comment le faire.

En interne, le système de base de données est mis en œuvre dans un langage comme C, et votre requête SQL sera traduite dans les étapes impératives suivantes:

while (another row to process)
    read row from disk
    for (every test)
        if (test fails)
            continue to next row
    add row to result-set

L'une des principales choses à noter ici est le flux de contrôle explicite: en , pour et si . Ceux-ci ne figurent pas dans des langages déclaratifs.

Autres conseils

séquentielle de programmation Impératif exécute des instructions qui peuvent manipuler un état sous-jacent.

Certains la programmation impérative en java:

Customer customer = null;

// first create a customer and have the variable reference it
customer = new Customer(); 
// the state of the customer variable has changed

// set the id on whatever object is *currently* being referenced by the variable
customer.setId(1);
// the state of the Customer object has changed

customer.setFirstName("Bob");
customer.setLastName("McBob");

Notez que si vous faites ce qui précède hors d'usage, il en résulterait une exception de pointeur NULL:

Customer customer = null;
customer.setFirstName("Foo");   // the customer variable is still null at this point
customer = new Customer();   // too late!

La programmation déclarative ne dispose pas d'un état ou d'ordre, juste des déclarations.

Voici un exemple simple - cet extrait xml pourrait être considéré comme déclarative:

<NewCustomers>
  <Customer>
    <Id>1</Id>
    <FirstName>Bob</FirstName>
    <LastName>McBob</LastName>
  </Customer>
</NewCustomers>

Il ne parle pas de la façon dont l'objet client se construit, juste déclare les parties. Comment l'obtient-dessus interprété et exécuté est à l'environnement de programmation.

navigateurs HTML et Web sont assez bons exemples de chaque paradigme, respectivement. HTML (et CSS) sont déclaratives langues - vous dire le navigateur Web ce pour marquer, mais pas comment pour le faire. En d'autres termes, une ligne de code comme <h1>My title</h1> indique au navigateur web ce que pour afficher - une étiquette d'en-tête avec le texte « Mon titre » - mais maintenant comment peindre réellement sur l'écran <. / p>

Le navigateur Web, cependant, est généralement écrit dans un impératif de manière. Il faut les définitions de balisage déclaratif et indique en fait l'ordinateur comment pour dessiner les éléments sur l'écran.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top