ਰਾਖਵਾਂ ਸ਼ਬਦ

**ਰਿਜ਼ਰਵਡ ਵਰਡ** (reserved word) (ਕਦੀਂ-ਕਦੀਂ ਕੀਵਰਡ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ) ਪਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਦੇ ਵਿੱਚ ਵਿਆਕਰਣ ਉਸਾਰੀ ਲਈ ਹੁੰਦੇ ਹਨ।  ਇਹਨਾਂ ਸ਼ਬਦਾਂ ਦਾ ਭਾਸ਼ਾ ਵਿੱਚ ਕੋਈ ਖਾਸ ਮਤਲਬ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਹ ਜੋ ਕੁਝ ਵੀ ਕਰਨ ਲਈ ਹਨ ਓਹ ਵੀ ਪਹਿਲਾਂ ਹੀ ਲਿਖਿਆ ਹੁੰਦਾ ਹੈ। ਆਮ ਤੋਰ ਤੇ ਰਿਜ਼ਰਵਡ ਵਰਡ ਵਿੱਚ ਡੇਟਾ ਟਾਇਪ ਦੇ ਲੇਬਲ, ਅਤੇ ਲੂਪ, ਕੰਡਿਸ਼ਨਲ, ਅਤੇ ਬਰਾਂਚ ਆਦ ਦੇ ਉਸਾਰਨ ਵਾਲੇ ਅੱਖਰ ਆਉਦੇ ਹਨ।

ਪਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਨੂੰ ਵਿਕਸਿਤ ਕਰਦੇ ਵੇਲੇ ਰਿਜ਼ਰਵਡ ਵਰਡਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਿਤਾ ਜਾਂਦਾ ਹੈ। ਕਦੀ-ਕਦਾਈਂ, ਵਿਕਰੇਤਾ ਵੀ ਪਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਦੇ 'ਚ ਕੋਈ ਹੋਰ ਚਿਜਾਂ ਕਰਨ ਲਈ ਹੋਰ ਨਕਸ਼ ਵੀ ਪਾ ਸਕਦੇ ਹਨ। ਅਤੇ, ਜਦੋਂ ਭਾਸ਼ਾ ਪੁਰਾਣੀ ਅਤੇ ਹੋਰ ਚੰਗੀ ਬਣਾਉਣ ਵੇਲੇ, ਇਸ ਦਾ ਪ੍ਰਮਾਣ ਕਰਨ ਵਾਲੀ ਹੋਂਦ ਇਸ ਵਿੱਚ ਹੋਰ ਕੁਝ ਵੀ ਪਾ ਸਕਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਆਬਜੇਕਟ ਓਰੀਏਂਟਡ ਸਮਰੱਥਾ ਜੋ ਪਹਿਲਾਂ ਨਾਂ ਹੁੰਦਾ ਹੋਵੇ, ਅਤੇ ਪੁਰਾਣੇ ਜੋ ਵਰਤੇ ਨਹੀਂ ਜਾਂਦੇ ਉਹਨਾਂ ਨੂੰ ਭਾਸ਼ਾ ਵਿੱਚੋਂ ਹਟਾਇਆ ਵੀ ਜਾ ਸਕਦਾ ਹੈ। ਕਦੀਂ-ਕਦਾਈਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਉਹ ਰਿਜ਼ਰਵਡ ਵਰਡ ਵੀ ਹੁੰਦੇ ਹਨ ਜੋ ਅਗਲੀ ਬਾਰ ਮਤਲਬ ਦੇਣ ਲਈ ਰੱਖ ਲਏ ਜਾਂਦੇ ਹਨ। ਜਾਵਾ ਦੇ ਵਿੱਚ `const` ਅਤੇ `goto` ਰਿਜ਼ਰਵਡ ਵਰਡ ਹਨ — ਉਹਨਾਂ ਦਾ ਜਾਵਾ ਵਿੱਚ ਕੋਈ ਮਤਲਬ ਨਹੀਂ, ਪਰ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਵੇਰੀਏਬਲ ਜਾਂ ਫੰਗਕਸ਼ਨਾਂ ਲਈ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ। ਇਹ ਏਸ ਕਰਕੇ ਕਿਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਕਿ ਅਗਲੀ ਬਾਰ ਜੇ ਉਹ ਚਾਉਣ ਤਾਂ ਕਿਸੇ ਅਗਲੇ ਵਰਜਨ 'ਚ ਉਹਨਾਂ ਰਿਜ਼ਰਵਡ ਵਰਡਾਂ ਨੂੰ ਮਤਲਬ ਦਿਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਰਿਜਰਵਡ ਵਰਡ ਨੂੰ, ਪਰੋਗਰਾਮਰ ਦੁਆਰਾ ਕੋਈ ਹੋਰ ਚੀਜ ਕਰਨ ਲਈ ਨਹੀਂ ਬਦਲ ਸਕਦਾ। ਅਮ-ਤੋਰ ਤੇ ਫੰਗਕਸ਼ਨ, ਮੈਥਡ, ਜਾਂ ਸਬਰੂਟੀਨ ਆਈਡੇਨਟੀਫਾਇਰ ਦੀ ਸ਼੍ਰੇਣੀ 'ਚ ਪਾਏ ਜਾਂਦੇ ਹਨ, ਕਿਊਂਕਿ ਉਹਨਾਂ ਨੂੰ ਆਮ ਤੋਰ ਪਰੋਗਰਾਮਰ ਦੁਆਰਾ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।

## ਰਿਜ਼ਰਵਡ ਵਰਡ ਅਤੇ  ਕੀਵਰਡ 'ਚ ਅੰਤਰ
ਇੱਕ ਕੀਵਰਡ ਸਿਰਫ ਕੁਝ ਵਿਸ਼ੇਆਂ 'ਚ ਖਾਸ ਹੁੰਦਾ ਹੈ ਪਰ ਰਿਜ਼ਰਵਡ ਵਰਡ ਇੱਕ ਖਾਸ ਸ਼ਬਦ ਹੈ, ਜਿਸ ਨੂੰ ਕਿਸੇ ਹੋਰ ਕੰਮ ਲਈ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ।

ਜਾਵਾ ਅਤੇ ਸੀ ਭਾਸ਼ਾਵਾਂ ਦੇ ਵਿੱਚ ਰਿਜਰਵਡ ਵਰਡ ਦੀ ਥਾਂ "ਕੀਵਰਡ" ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

## ਭਾਸ਼ਾਵਾਂ ਨਾਲ ਤੁਲਨਾ
ਹਰ ਭਾਸ਼ਾਵਾਂ ਦੇ ਵਿੱਚ ਇੱਕੋ ਜਿਹੇ ਰਿਜ਼ਰਵਡ ਵਰਡ ਨਹੀਂ ਹੁੰਦੇ। ਜਿਵੇਂ ਕਿ ਜਾਵਾ (ਅਤੇ ਸੀ ਦਿਆਂ ਹੋਰ ਭਾਸ਼ਾਵਾਂ) ਦੇ ਵਿੱਚ ਲੱਗ-ਭੱਗ 50 ਰਿਜ਼ਰਵਡ ਵਰਡ ਹੁੰਦੇ ਹਨ, ਜਦ ਕੇ ਕੋਬੋਲ ਦੇ ਵਿੱਚ ਲੱਗ-ਭੱਗ 400, ਅਤੇ ਪਰੋਲਾਗ ਦੇ ਵਿੱਚ ਕੋਈ ਨਹੀਂ।

ਕਿਸੇ ਭਾਸ਼ਾ ਦੇ ਰਿਜ਼ਰਵਡ ਵਰਡਾਂ ਦੀ ਗਿਣਤ ਨਾਲ ਭਾਸ਼ਾ ਦੀ ਸ਼ਕਤੀ ਤੇ ਬਹੁਤ ਘੱਟ ਅਸਰ ਪੈਂਦਾ ਹੈ। ਕੋਬੋਲ 1950 ਦੇ ਵਿੱਚ ਵਪਾਰ ਕਰਨ ਵਾਲਿਆਂ ਲਈ ਬਣਾਈ ਗਈ ਸੀ, ਅਤੇ ਇਸ ਦੇ ਕੋਡ ਤੋਂ ਆਸਾਨੀ ਨਾਲ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਸੀ ਕਿ ਇਹ ਕੀ ਕਰ ਰਹੀ ਹੈ, ਜਦ ਕਿ ਸੀ ਬਹੁਤ ਹੀ ਸੰਖਿਪਤ ਹੋਣ ਲਈ ਬਣਾਈ ਗਈ ਸੀ, ਤਾਂ ਕਿ ਜਿਆਦਾ ਤੋਂ ਜਿਆਦਾ ਇਬਾਰਤ ਸਕਰੀਨ ਦੇ ਉਪਰ ਆ ਸਕੇ। ਉਦਾਹਰਨ ਲਈ, ਹੇਂਠ ਲਿਖੇ ਸੀ ਅਤੇ ਕੋਬੋਲ ਦੇ ਕੋਡ ਵੇਖੋ, ਦੋਵੇਂ ਹਫਤੇ ਤਨਖਾਹ ਗਿਣ ਰਹੇ ਹਨ:

```c
// ਸੀ ਦਾ ਕੋਡ:

if (salaried)
        amount = 40 * payrate;
else
        amount = hours * payrate;
```

```fortran
* ਕੋਬੋਲ ਦਾ ਕੋਡ:

IF Salaried THEN
        MULTIPLY Payrate BY 40 GIVING Amount
ELSE
        MULTIPLY Payrate BY Hours GIVING Amount
END-IF.
```

```fortran
* ਕੋਬੋਲ ਦਾ ਇੱਕ ਹੋਰ ਕੋਡ:

IF Salaried 
        COMPUTE Amount = Payrate * 40
ELSE
        COMPUTE Amount = hours * payrate
END-IF.
```

ਸਭ ਭਾਸ਼ਾਵਾਂ ਇਕੋ ਜਿਹਿਆਂ ਮੁਸ਼ਕਲਾਂ ਨੂੰ ਬੁਝ ਸਕਦੀਆਂ ਹਨ ਜੋ ਰਿਜਰਵ ਵਰਡਾਂ ਦੀ ਗਿਣਤੀ 'ਤੇ ਅਧਾਰਤ ਨਹੀਂ

## ਰਿਜਰਵ ਵਰਡ ਅਤੇ ਭਾਸ਼ਾ ਦੀ ਅਜਾਦੀ
ਮਾਈਕਰੋਸੋਫਟ ਦੇ ਢਾਂਚੇ ਵਿੱਚ ਇਕੋ ਪਰਾਜੈਕਟ 'ਚ 40 ਤੋਂ ਉਪਰ ਪਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਦੇ 'ਚ ਕੋਡ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਜਿਸ ਕਾਰਨ ਜਕੋ ਕਿਸੇ ਇੱਕ ਭਾਸ਼ ਦੇ ਵਿੱਚ ਲਿਖਿਆ ਕੋਡ ਕਿਸੇ ਦੂਜੀ ਭਾਸ਼ਾ ਦੇ ਕੋਡ ਨੂੰ ਚਲਾਣ ਦੀ ਕੋਸ਼ੀਸ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਆਇਡੇਨਟੀਫਾਇਰ ਅਤੇ ਰਿਜ਼ਰਵਡ ਵਰਡਾਂ ਦੀ ਟੱਕਰ ਹੋ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਦੇ ਤੋਰ ਤੇ, ਵਿਜੂਅਲ ਬੇਸੀਕ.NET ਦੀ ਕੋਈ ਲਾਇਬਰੇਰੀ ਦੇ ਵਿੱਚ ਕੋਈ ਕਲਾਸ ਦੀ ਪਰਿਭਾਸ਼ਾ ਹੇਂਠ ਲਿਖੇ ਵਾਂਗ ਹੋ ਸਕਦੀ ਹੈ:

```vbnet
' Class Definition of This in Visual Basic.NET:

Public Class this
        ' This class does something...
End Class
```

ਜੇ ਇਸ ਕੋਡ ਨੂੰ ਲੇ ਕੇ ਫਿਰ ਕੋਈ C# ਦਾ ਪਰੋਗਰਾਮਰ “`this`” ਨਾਂ ਦਾ ਵੇਰੀਏਬਲ ਬਨਾਣਾ ਚਾਵੇ, ਤਾਂ ਉਸ ਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਆਵੇਗੀ: `'this'` C# ਦੇ ਵਿੱਚ ਰਿਜ਼ਰਵਡ ਵਰਡ ਹੈ। ਅਤੇ ਇਸ ਕਰਕੇ ਹੇਂਠ ਲਿਖਿਆ C# ਕੋਡ ਨਹੀਂ ਚੱਲੇਗਾ:

```csharp
// Using This Class in C#:

this x = new this();  // Won't compile!
```

ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਠਿਕ ਕਰਨ ਲਈ, `'this'` ਦੇ ਪਹਿਲਾਂ ਐਟ ਸਾਇਨ (@) ਪਾਣਾ ਪਏਗਾ, ਜਿਸ ਨਾਲ ਫਿਰ ਕਮਪਾਇਲਰ ਰਿਜ਼ਰਵਡ ਵਰਡ ਦੀ ਥਾਂ ਆਇਡੇਨਟੀਫਾਇਰ ਨੂੰ ਦੇਖੇਗਾ:

```csharp
// Using This Class in C#:

@this x = new @this();  // Will compile!
```

## ਹਵਾਲੇ
## ਬਾਰਲੇ ਲਿੰਕ 
* ਰਿਜ਼ਰਵਡ ਵਰਡ
* ਜਿਆਦਾ ਵਰਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ ਰਿਜ਼ਰਵਡ ਵਰਡ 

ਸ਼੍ਰੇਣੀ:ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੇ ਵਿਸ਼ੇ