2012-05-02 1 views
1

Tout langage d'ordinateur a 'expression' et 'instruction'. dans le concept, quel est le diff?Concepts de langage sur l'expression et l'instruction

+3

L'élément clé est que les instructions ne sont pas autorisées dans les contextes d'expression. Et notez que toutes les langues n'ont pas de déclarations. –

+1

Je ne comprends pas pourquoi tant de gens autour d'ici répondent aux questions dans les commentaires au lieu de ... réponses. – Klaim

+2

@Klaim peut-être parce qu'il est plus difficile de baisser un commentaire :) –

Répondre

5

Pris du wikipedia:

Dans la plupart des langues, des déclarations contrastent avec les expressions en ce sens que déclarations ne renvoient pas les résultats et sont exécutés uniquement pour leurs effets secondaires, alors que les expressions reviennent toujours un résultat et font souvent pas d'effets secondaires du tout. Parmi les langages de programmation impératifs, Algol 68 est l'un des rares dans lesquels une déclaration peut retourner un résultat. Dans les langues qui mélangent des styles impératifs et fonctionnels, tels que la famille Lisp , la distinction entre les expressions et les déclarations n'est pas faite: même les expressions exécutées dans des contextes séquentiels uniquement pour leurs effets secondaires et dont les valeurs de retour ne sont pas utilisées sont considérées 'expressions'. En programmation purement fonctionnelle, il n'y a pas d'instructions ; tout est une expression.

2

Les expressions ont une valeur, contrairement aux instructions. Si vous pouvez le passer en argument à une fonction, c'est une expression. Si vous ne pouvez pas, c'est une déclaration. Les constructions de flux de contrôle dans les langages dérivés du C sont généralement des instructions (vous ne pouvez pas passer un bloc 'if {}' comme paramètre de fonction). Par conséquent, ces langages tendent à fournir une forme d'expression pour «si» (comme l'opérateur ternaire). Bien sûr, le but de beaucoup de langages fonctionnels est que tout a une valeur, et que les fonctions sont des valeurs de première classe, ce qui signifie que tout est une expression. Les instructions apparaissent généralement dans les langues impératives, où vous souhaitez écrire des commandes qui ne renvoient pas nécessairement une valeur. Pour plus de détails, voir un lien.
http://lambda-the-ultimate.org/node/1044
Et cette question de StackOverflow aussi vous aider.
Expression Versus Statement

0

statements n'a généralement pas de valeur. expressions ont généralement une valeur.

Ceci est souvent visible dans des langages tels que Ruby ou Erlang qui fournissent une valeur à quelque chose comme if .. end constructions:

> foo = if 1 then "hello" else "goodbye" end 
=> "hello" 
> foo 
=> "hello" 
1> Foo = if 1 =:= 1 -> 
1> hello; 
1> true -> 
1> goodbye 
1> end. 
hello 
2> 

Beaucoup de langues ne vous permettra pas d'utiliser lvalue = if ....

0

Les "instructions" de la langue sont en fait des instructions pour que le système informatique fasse quelque chose.

Les "expressions" du langage sont une combinaison d'opérateurs et d'opérandes comme z = x + y. En gros, je peux dire que les expressions linguistiques sont de nature mathématique.

L '«expression» de chaque langue est l' «énoncé» d'une langue, mais l '«énoncé» de chaque langue n'est pas «l'expression» d'une langue.

+0

Il n'est pas nécessairement vrai que les instructions sont un sous-ensemble d'expressions; vous pouvez imaginer une langue dans laquelle écrire 'a + b' est illégal sans dire' c = a + b'. – Dougal