43

¿Cuál es la diferencia entre una palabra clave y una palabra reservada?¿Cuál es la diferencia entre "palabra clave" y "palabra reservada"?

Por ejemplo, en el proposal for concepts in C++ uno puede leer la siguiente declaración:

Esta propuesta introduce cinco nuevas palabras clave: concepto, mapa concepto, donde, axioma, y ​​la verificación de retraso. Todas estas palabras clave también serán palabras reservadas.

+2

@Piotr Tenga en cuenta que es una mala idea aceptar una respuesta hasta que algunas personas hayan tenido la oportunidad de responder. Recomiendo esperar al menos 12 horas. –

+0

@Neil Es realmente una muy buena respuesta que fue aceptada :) –

+2

@Piotr No estoy criticando la respuesta. Pero si usted sabe que de alguna manera es "bueno" sin compararlo con otras respuestas posiblemente diametralmente opuestas, ¿por qué hizo la pregunta en primer lugar? –

Respuesta

48

Palabras clave tienen un significado especial en un lenguaje, y forman parte de la sintaxis.

Las palabras reservadas son palabras que no se pueden usar como identificadores (variables, funciones, etc.), ya que están reservadas por el idioma.

En la práctica, la mayoría de las palabras clave son palabras reservadas y viceversa. Pero debido a que son dos cosas diferentes, puede suceder que una palabra clave no sea una palabra reservada (por ejemplo, una palabra clave solo tiene significado en un contexto especial y puede usarse como un identificador) o una palabra reservada no es una palabra clave (por ejemplo, porque está reservado para uso futuro).

Actualización: Algunos ejemplos dados por otros que ilustran la distinción:

  • En Java, goto es una palabra reservada, pero no una palabra clave (como consecuencia, no se puede utilizar en absoluto)
  • Fortran tiene no palabras reservadas, todas las palabras clave (si, a continuación, etc.) se pueden utilizar como identificadores
+0

Todas las palabras clave son palabras reservadas, pero no todas las palabras reservadas son palabras clave, aunque la diferencia es bastante vaga. Algunos idiomas tienen directivas que tienen un significado especial basado en el contexto.Y se puede usar como identificadores en otros lugares. –

+1

En Java goto es una palabra reservada, pero no es una palabra clave. – pjp

+1

@Gamecat, no, esto no es cierto. Existe una diferencia fundamental, e incluso hay ejemplos del mundo real donde las palabras clave no son palabras reservadas (Fortran, Postscript, ... ¿otros?). – molf

1

supongo que la palabra clave es una palabra que se usa como "palabra clave" (como si, por, interruptor, etc ...), mientras que una palabra reservada es algo que no se puede utilizar como nombre de la variable, ya que podría convertirse en una palabra clave una versión futura del lenguaje.

0

Realmente va a depender mucho en el contexto. Por ejemplo, el estándar ISO C++ dice que cosas como "si", "mientras", "int" etc. son palabras clave, y en realidad no usa el término palabra reservada, excepto una vez, en una nota al pie, donde algo más probablemente significó :-)

La gama estándar especifica nombres reservados - por ejemplo, todos los nombres que comienzan con un guión bajo y una letra mayúscula son nombres reservados.

+0

Puede haber una división clara entre las palabras clave y los identificadores reservados (específicos): C++ 17 descarta el significado de pista obsoleto del identificador 'registro' pero lo retiene como reservado, por lo que las personas no pueden comenzar a invocar variables que, y quizás tomará un nuevo significado más tarde como lo hizo 'auto' (tan misericordiosamente). –

8

Un buen ejemplo de esta distinción es "goto" en Java. No es una palabra clave de idioma (es decir, no es Java válida), pero es una palabra reservada.

Parece que los diseñadores de java nos dicen "No vamos a usar 'goto', y tú tampoco".

+2

Buen ejemplo de que no todas las "palabras reservadas" son palabras clave. Gracias. –

+0

['goto' es una palabra clave en Java.] (Https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9) – EJP

17

sólo para mostrar que la distinción es muy significativa:

No en todas las lenguas son todas las palabras clave palabras reservadas. En Fortran es posible hacer esto:

if if then then else else 

En este caso, las palabras clave no están reservados, pero dependiendo del contexto puede ser interpretado por el compilador como variables.

+2

Buen ejemplo de no todas las palabras clave es una "palabra reservada". Gracias. –

+0

Gracioso. Y eso sugiere que los diseñadores de compiladores de Fortran ponen esfuerzos adicionales para que eso suceda solo para permitir a los desarrolladores crear código desordenado: P – RBT

+0

También puede hacer 'si entonces entonces = else else else = then' –

1
  • Palabra clave: Tiene algún significado y podemos usarlo en el programa.
  • Palabra reservada: No podemos usar en el programa. Se pueden usar en el futuro. Ejemplo: goto
+1

¿De dónde vienen esos nigromantes? ¡Quiero revivir cadáveres también! – delnan

-1

palabras reservadas y las palabras clave son en su mayoría los mismos y que tienen significados pre-definido en GW-BASIC ... estos tienen usos pre-definidos y no pueden ser utilizados o redefinido para cualquier otro propósito en Básico . Las palabras clave no se pueden usar como nombre de variable. Algunas de las palabras clave de Basic son ... IF, THEN, WHILE etc.

0

Palabras clave: Las palabras clave tienen algunas funcionalidades especiales para el compilador. Por lo tanto, las palabras clave no se pueden usar como identificadores en la codificación. Palabras reservadas: palabras de reserva son las palabras que están reservadas para uso futuro. En java, const y goto son las palabras reservadas que no se están usando actualmente y pueden volver a Java en el futuro. Si miramos aquí Palabras clave de lenguaje Java (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html), dice que java (más reciente supongo) tiene 50 palabras clave incluidas goto y const. Entonces goto y const son las palabras clave que están reservadas.

-1

palabra clave, - una palabra con un significado especial en un contexto particular . Es semántica definición.

palabra reservada es una palabra que no puede ser utilizado como un identificador - tales como, variable, y el nombre de la función. Es syntactic definición.

E.g.En Java, todas las palabras clave son palabras reservadas. Probablemente no al revés. goto es palabra reservada pero no se usa y no tiene función.

En idiomas más antiguos como FORTRAN había palabras clave pero no palabras reservadas.

Sin embargo, palabra clave y palabra reservada se usan indistintamente.

+0

['goto' es una palabra clave en Java.] (Https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9) Las palabras clave son sintácticas. – EJP

+0

para la compatibilidad hacia adelante palabras reservadas como goto pueden convertirse en palabras clave. Pero goto no tiene un significado especial. Las palabras clave tienen significado en el contexto en que se usan. Consulte: https://en.wikipedia.org/wiki/Reserved_word – Yergalem

+0

Wikipedia no tiene nada que ver con eso. Estoy citando y citando la Especificación del lenguaje Java. Si Wikipedia no está de acuerdo con eso, está mal, por definición. – EJP

Cuestiones relacionadas