Alan Turing ਦੇ ਮੁੱਖ ਵਿਚਾਰਾਂ—ਐਲਗੋਰਿਦਮ, ਅਨਿਰਣਯੋਗਤਾ, ਅਤੇ ਕੋਡ‑ਟੁਟਾਉਣਾ—ਨੂੰ ਸਮਝੋ ਅਤੇ ਪੱਰਖੋ ਕਿ ਉਹ ਆਧੁਨਿਕ ਕੰਪਿਊਟਿੰਗ, ਸੁਰੱਖਿਆ ਅਤੇ ਮਸ਼ੀਨੀ ਬੁੱਧੀ 'ਤੇ ਕਿਵੇਂ ਅਸਰ ਕਰਦੇ ਹਨ।

ਜੋ ਕੁਝ ਤੁਸੀਂ ਆਪਣੇ ਫੋਨ ਜਾਂ ਲੈਪਟੌਪ ਨਾਲ ਕਰਦੇ ਹੋ—ਵੈੱਬ ਖੋਜਨਾ, ਸੁਨੇਹੇ ਭੇਜਣਾ, ਖਾਤੇ ਖੋਲ੍ਹਣਾ, ਕਿਸੇ ਸਹਾਇਕ ਤੋਂ ਸਵਾਲ ਪੁੱਛਣਾ—ਇਹਨਾਂ ਵਿੱਚੋਂ ਬਹੁਤ ਕੁਝ ਉਹਨਾਂ ਸਵਾਲਾਂ 'ਤੇ ਟਿਕਿਆ ਹੋਇਆ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ Alan Turing ਨੇ ਸਪਸ਼ਟ ਕੀਤਾ: ਗਣਨਾ ਕੀ ਹੈ? ਕਿਸੇ ਕੰਪਿਊਟਰ ਦਾ ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ ਕੀ ਕਰ ਸਕਦਾ ਹੈ? ਅਤੇ ਸੀਮਾਵਾਂ ਕਿੱਥੇ ਹਨ?
Turing ਮਹੱਤਵਪੂਰਣ ਹੈ ਕਿਉਂਕਿ ਉਸਨੇ ਸਿਰਫ਼ ਚਲਾਕ ਤਰਕ ਨਹੀਂ ਵਿਕਸਿਤ ਕੀਤੇ; ਉਸਨੇ ਖੇਡ ਦੇ ਨਿਯਮ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ। ਆਧੁਨਿਕ ਸੌਫਟਵੇਅਰ ਇੰਜੀਨੀਅਰਿੰਗ, ਸਾਈਬਰਸੁਰੱਖਿਆ ਅਤੇ ਐਆਈ ਰਿਸਰਚ ਉਹੀ ਨਿਯਮ ਵਰਤਦੇ ਹਨ—ਭਾਵੇਂ ਲੋਕ ਉਸਦਾ ਨਾਮ ਲੈਂ ਜਾਂ ਨਹੀਂ।
ਪਹਿਲੀ ਹੈ ਗਣਨਾ: Turing ਦਾ ਸਾਦਾ ਮਾਡਲ ("Turing machine") ਸਾਡੇ ਲਈ ਪ੍ਰੋਗਰਾਮਾਂ, ਡੇਟਾ ਅਤੇ ਐਲਗੋਰਿਦਮਾਂ ਬਾਰੇ ਗੱਲ ਕਰਨ ਦਾ ਇੱਕ ਸਾਫ਼ ਤਰੀਕਾ ਦਿੰਦਾ ਹੈ। ਇਸੇ ਕਾਰਨ ਅਸੀਂ ਵੱਖ-ਵੱਖ ਡਿਵਾਈਸ—ਲੈਪਟੌਪ, ਸਰਵਰ, ਸਮਾਰਟਫੋਨ—ਨੂੰ ਇੱਕੋ ਆਮ ਵਿਚਾਰ ਦੇ ਅਧੀਨ ਤੁਲਨਾ ਕਰ ਸਕਦੇ ਹਾਂ: ਇੱਕ general-purpose ਮਸ਼ੀਨ ਜੋ ਨਿਰਦੇਸ਼ ਚਲਾਂਦੀ ਹੈ।
ਦੂਜੀ ਹੈ ਸੁਰੱਖਿਆ: WWII ਦੌਰਾਨ, Turing ਨੇ ਕੋਡ-ਟੁਟਾਉਣ (cryptanalysis) ਨੂੰ ਇੱਕ ਪ੍ਰਣਾਲੀਤਮਕ, ਇੰਜੀਨੀਅਰਿੰਗ-ਚਲਿਤ ਵਿਧੀ ਵਿੱਚ ਬਦਲਣ ਵਿੱਚ ਯੋਗਦਾਨ ਦਿੱਤਾ। ਇਹ ਸੋਚ ਆਧੁਨਿਕ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫੀ ਅਤੇ ਸੁਰੱਖਿਆ ਕੰਮ ਵਿੱਚ ਵੀ ਮੌਜੂਦ ਹੈ—ਸਫਲਤਾ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਕਿ ਹਮਲਾਵਰ ਕੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਕਿਸ ਕੀਮਤ 'ਤੇ।
ਤੀਜੀ ਹੈ ਮਸ਼ੀਨੀ ਬੁੱਧੀ: Turing ਨੇ ਇੱਕ ਪ੍ਰਾਇਗਮੀਟਿਕ ਸਵਾਲ ਪੁੱਛਿਆ ਜੋ ਅਜੇ ਵੀ AI ਚਰਚਾਵਾਂ ਨੂੰ ਆਕਾਰ ਦਿੰਦਾ ਹੈ: ਅਸੀਂ ਬਾਹਰੀ ਤੌਰ 'ਤੇ ਹੋਸਿਆਰ ਵਰਤਾਰਾ ਕਿਵੇਂ ਪਛਾਣਾਂਗੇ? ਉਸਦਾ “Turing Test” ਅਜੇ ਵੀ ਇੱਕ ਸੰਦਰਭ ਬਿੰਦੂ ਹੈ, ਭਾਵੇਂ ਲੋਕ ਇਸ ਦੀਆਂ ਸੀਮਾਵਾਂ 'ਤੇ ਬਹਿਸ ਕਰਦੇ ਰਹਿਣ।
ਇਹ ਗਾਈਡ ਗਣਿਤ ਨੂੰ ਹਲਕਾ ਰੱਖਦੀ ਹੈ ਅਤੇ ਅੰਦਰੂਨੀ ਸਮਝ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦੀ ਹੈ। ਮੁੱਖ ਥੀਮ ਸਧਾਰਨ ਹੈ: ਕੰਪਿਊਟਰ ਬਹੁਤ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹਨ, ਪਰ ਜਾਦੂਈ ਨਹੀਂ। ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮ ਨਾਲ ਹੱਲ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ, ਅਤੇ ਹੋਰ ਬਹੁਤ ਸਾਰੀਆਂ ਐਸੀਆਂ ਹਨ ਜਿਹਨਾਂ ਦੇ ਹੱਲ ਵਸਤੇ ਲੱਗਣ ਵਾਲਾ ਕੀਮਤ ਅਜਿਹੀ ਹੈ ਕਿ ਉਹ ਅਮਲ ਵਿੱਚ ਬੇਕਾਰ ਹੋ ਜਾਂਦੇ ਹਨ। ਇਹ ਸੀਮਾਵਾਂ ਸਮਝਣ ਨਾਲ ਤੁਸੀਂ ਤਕਨਾਲੋਜੀ ਦਾਵਿਆਂ ਨੂੰ ਬਿਹਤਰ ਤਰੀਕੇ ਨਾਲ ਅੰਕੜ ਸਕਦੇ ਹੋ ਅਤੇ ਸਹੀ ਟੂਲ ਚੁਣ ਸਕਦੇ ਹੋ।
Alan Turing (1912–1954) ਨੂੰ ਅਕਸਰ ਨਾਟਕੀਆ ਕਹਾਣੀਆਂ ਰਾਹੀਂ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਪਰ ਉਸਨੂੰ ਸਮਝਣ ਦਾ ਸਭ ਤੋਂ ਲਾਭਦਾਇਕ ਤਰੀਕਾ ਉਸਦੇ ਬਣਾਏ ਹੋਏ ਕੰਮ ਅਤੇ ਸਿਧਾਂਤਾਂ ਰਾਹੀਂ ਹੈ। ਉਹ ਇੱਕ ਗਣਿਤਜ્ઞ ਸੀ ਜਿਸਨੇ “ਕੀ ਗਣਨਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ” ਵਾਲੇ ਸਵਾਲਾਂ ਨੂੰ ਠੋਸ ਸਮੱਸਿਆਵਾਂ ਵਜੋਂ ਲਿਆ ਅਤੇ ਫਿਰ ਉਨ੍ਹਾਂ ਦੇ ਉੱਤਰਾਂ ਨੂੰ ਅਸਲੀ ਮਸ਼ੀਨਾਂ ਤੱਕ ਲੈ ਕੇ ਗਿਆ।
ਉਸਦੀ 1936 ਦੀ ਪੇਪਰ On Computable Numbers ਨੇ ਦੋ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਰਹਿਣ ਵਾਲੀਆਂ ਚੀਜ਼ਾਂ ਕੀਤੀਆਂ: ਇੱਕ abstract ਮਾਡਲ (ਹੁਣਦੇ ਸਮੇਂ ਵਿੱਚ Turing machine) ਦੀ ਵਰਣਨਾ ਕੀਤੀ ਅਤੇ ਇਹ ਦਿਖਾਇਆ ਕਿ ਕੁਝ ਪ੍ਰੋਗਰਾਮ-ਸਬੰਧੀ ਸਵਾਲਾਂ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਇਹ ਫਿਕਸ਼ਨ ਨਹੀਂ ਸੀ; ਇਹ ਤਰਕ ਸੀ ਜੋ ਲੋਜਿਕ ਅਤੇ ਗਣਨਾ ਦੀਆਂ ਸੀਮਾਵਾਂ ਬਾਰੇ ਸਪਸ਼ਟਤਾ ਲਿਆਈ।
ਜੰਗ ਦੌਰਾਨ, Turing Bletchley Park 'ਤੇ cryptanalysis ਵਿਚ ਕੰਮ ਕੀਤਾ—ਏਨਿਗਮਾ ਵਰਗੀਆਂ ਗੁਪਤ ਲਿਖਤਾਂ ਨੂੰ ਟੁੱਟਣ ਦੇ ਤਰੀਕੇ ਲੱਭੇ। ਲੋਕ ਕਈ ਵਾਰੀ ਦੱਸਦੇ ਹਨ ਕਿ ਉਸਨੇ “ਇੱਕਲਾ” Enigma ਟੋੜ ਦਿੱਤਾ ਜਾਂ ਉਹੀ ਰਾਤੋਂ-ਰਾਤ ਕੰਪਿਊਟਰ ਬਣਾਇਆ। ਹਕੀਕਤ ਹੋਰ ਹੀ ਦਿਲਚਸਪ ਹੈ: ਉਹ ਇੱਕ ਵੱਡੇ ਯਤਨ ਦਾ ਅਹਿਮ ਹਿੱਸਾ ਸੀ, ਜਿੱਥੇ ਉਸਨੇ ਤਰੀਕੇ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਅਤੇ ਇਲੈਕਟ੍ਰੋ‑ਮੈਕੈਨਿਕ ਉਪਕਰਣਾਂ ਨੂੰ ਸਿਸਟਮੈਟਿਕ ਤਰੀਕੇ ਨਾਲ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ।
Turing ਦੀ ਖਾਸੀਅਤ ਇਹ ਸੀ ਕਿ ਉਹ ਸਿਧਾਂਤ ਅਤੇ ਅਮਲ ਨੂੰ ਜੋੜ ਸਕਦਾ ਸੀ। ਉਹ ਕਾਗਜ਼ 'ਤੇ ਇਕ ਆਦਰਸ਼ ਮਸ਼ੀਨ ਬਾਰੇ ਸੋਚ ਸਕਦਾ ਸੀ ਅਤੇ ਫਿਰ ਅਸਲ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਤੇਜ਼ ਤੇ ਭਰੋਸੇਯੋਗ ਬਣਾਉਣ ਲਈ ਤਰੀਕੇ ਅਤੇ ਹਾਰਡਵੇਅਰ ਸੀਮਾਵਾਂ ਦੀ ਰੋਸ਼ਨੀ 'ਚ ਕੰਮ ਕਰ ਸਕਦਾ ਸੀ। ਇਹ ਰੂਪ—ਫਾਰਮਲ ਸੋਚ ਨਾਲ ਅਮਲ—ਆਧੁਨਿਕ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਲਈ ਇੱਕ ਟੇਮਪਲੇਟ ਬਣ ਗਿਆ।
Turing ਦੇ ਵਿਚਾਰ ਬਹੁਤ ਖੇਤਰਾਂ ਵਿੱਚ ਗੂੰਜਦੇ ਹਨ: ਆਧੁਨਿਕ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ(computability ਅਤੇ decidability), ਸ਼ੁਰੂਆਤੀ ਸੁਰੱਖਿਆ ਸੋਚ (ਸਿਸਟਮੈਟਿਕ cryptanalysis), ਅਤੇ ਬਾਅਦ ਦੀਆਂ ਚਰਚਾਵਾਂ ਬਾਰੇ ਮਸ਼ੀਨੀ ਬੁੱਧੀ। ਭਾਵੇਂ ਲੋਕ ਉਸਦੇ ਨਤੀਜਿਆਂ ਨਾਲ ਸਹਿਮਤ ਨਾ ਹੋਣ, ਪਰ ਅਕਸਰ ਉਹ ਉਸੀ ਢਾਂਚੇ ਨੂੰ ਵਰਤਦੇ ਹਨ ਜੋ ਉਸਨੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ।
ਇੱਕ ਐਲਗੋਰਿਦਮ ਸਿਰਫ਼ ਇੱਕ ਸਾਫ਼-ਸੁਥਰੀ ਕਦਮਾਂ ਦੀ ਲੜੀ ਹੈ ਜਿਸ ਨਾਲ ਕਿਸੇ ਨਤੀਜੇ ਤੱਕ ਪਹੁੰਚਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ mathematical ਨਹੀਂ ਹੁੰਦਾ—ਇਹ ਉਹ ਤਰੀਕਾ ਹੈ ਜੋ ਤੁਸੀਂ ਭਰੋਸੇਯੋਗ ਢੰਗ ਨਾਲ ਫੋਲੋ ਕਰ ਸਕਦੇ ਹੋ।
ਚਾਹ ਬਣਾਉਣ ਦੀ ਇੱਕ ਸਧਾਰਣ ਵਿਧੀ ਸੋਚੋ:
ਇਹ ਇੱਕ ਐਲਗੋਰਿਦਮ ਹੈ: ਨਿਸ਼ਚਿਤ ਕਦਮ, ਇਕ ਕ੍ਰਮ, ਇੱਕ ਭਰੋਸੇਯੋਗ ਨਤੀਜਾ।
ਪਹਿਲੀਆਂ ਮਸ਼ੀਨਾਂ ਅਕਸਰ ਇੱਕ-ਉਦੇਸ਼ ਵਾਲੀਆਂ ਹੁੰਦੀਆਂ ਸਨ: ਇਕ ਹੀ ਕੰਮ ਲਈ ਬਣੀਆਂ—ਜਿਵੇਂ ਕਿ ਨਿੱਟਾਈ, ਕੁਝ ਗਣਤੀਆਂ ਲਈ ਕੈਲਕੁਲੇਸ਼ਨ, ਜਾਂ ਕਿਸੇ ਖ਼ਾਸ ਤਰ੍ਹਾਂ ਦੇ ਸੁਨੇਹਿਆਂ ਨੂੰ ਇਨਕ੍ਰਿਪਟ/ਡੀਕੋਡ ਕਰਨਾ। ਜੇ ਤੁਸੀਂ ਹੋਰ ਕੰਮ ਕਰਵਾਉਣਾ ਚਾਹੁੰਦੇ, ਤਾਂ ਵੱਖਰੀ ਮਸ਼ੀਨ ਜਾਂ ਵੱਡਾ ਰੀਬਿਲਡ ਚਾਹੀਦਾ ਸੀ।
ਇੱਕ general-purpose computer ਵੱਖਰਾ ਹੈ: ਇਹ ਦਿਲਚਸਪੀ ਵਾਲੇ ਕਈ ਐਲਗੋਰਿਦਮਾਂ ਨੂੰ ਚਲਾ ਸਕਦਾ ਹੈ, ਤੁਹਾਡੇ ਦਿੱਤੇ ਹੁਕਮਾਂ ਦੇ ਅਨੁਸਾਰ। ਹਾਰਡਵੇਅਰ ਇੱਕੋ ਹੀ ਰਹਿੰਦਾ; ਜੋ ਕੁਝ ਬਦਲਦਾ ਹੈ ਉਹ ਪ੍ਰੋਗਰਾਮ ਹੁੰਦਾ ਹੈ।
ਸਾਫਟਵੇਅਰ ਦਰਅਸਲ ਐਲਗੋਰਿਦਮਾਂ ਨੂੰ ਸੌਂਪਣ ਦਾ ਤਰੀਕਾ ਹੈ ਤਾਂ ਕਿ ਮਸ਼ੀਨ ਉਨ੍ਹਾਂ ਨੂੰ ਬਿਲਕੁਲ ਠੀਕ ਚਲਾ ਸਕੇ। “3–5 ਮਿੰਟ ਇੰਤਜ਼ਾਰ” ਦੀ ਜਗ੍ਹਾ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਕਹ ਸਕਦਾ ਹੈ “240 ਸਕਿੰਟ ਇੰਤਜ਼ਾਰ ਕਰੋ।” “ਜੇ ਤੁਸੀਂ ਚੀਨੀ ਚਾਹੋਗੇ” ਦੀ ਥਾਂ ਪ੍ਰੋਗਰਾਮ ਕਹ ਸਕਦਾ ਹੈ “ਜੇ ਯੂਜ਼ਰ ਨੇ ਚੀਨੀ ਚੁਣੀ, ਤਾਂ ਇੱਕ ਚਮਚ ਭਰੋ।”
ਇਹ ਬਦਲਾਅ—ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਲਿਖਣਾ ਕਿ ਮਸ਼ੀਨ ਉਨ੍ਹਾਂ ਨੂੰ ਸਟੋਰ, ਪੜ੍ਹ ਸਕੇ ਅਤੇ ਚਲਾ ਸਕੇ—ਆਧੁਨਿਕ ਕੰਪਿਊਟਿੰਗ ਲਈ ਜ਼ਮੀਨ ਤਿਆਰ ਕਰਦਾ ਹੈ: ਇੱਕ ਡਿਵਾਈਸ, ਬੇਸ਼ੁਮਾਰ ਕੰਮ, ਸਭਿਆਲਗੋਰਿਦਮ ਤੋਂ ਚਲਦੇ ਹੋਏ।
ਅੱਜਕੱਲ੍ਹ ਤੁਸੀਂ ਇਸ ਜਨਰਲ-ਪਰਪਜ਼ ਆਈਡੀਆ ਨੂੰ vibe-coding ਟੂਲਾਂ ਵਿੱਚ ਦੇਖ ਸਕਦੇ ਹੋ: ਹਰੇਕ ਕਦਮ ਨੂੰ ਹੱਥੋਂ ਨਹੀਂ ਲਿਖਦੇ—ਤੁਸੀਂ ਲਕਸ਼ ਦੇ ਦੱਸਦੇ ਹੋ, ਅਤੇ ਸਿਸਟਮ ਉਸ ਨੂੰ executable ਸੌਫਟਵੇਅਰ ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।
ਉਦਾਹਰਨ ਲਈ, Koder.ai ਤੁਹਾਨੂੰ ਚੈਟ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਵੈੱਬ, ਬੈਕਐਂਡ ਅਤੇ ਮੋਬਾਈਲ ਐਪ ਬਣਾਉਣ ਦਿੰਦਾ—ਫਿਰ ਸੋਰਸ ਕੋਡ ਐਕਸਪੋਰਟ, ਡੈਪਲੌਏ ਅਤੇ ਹੋਸਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਇਹ ਸਭ Turing ਦੇ ਫ੍ਰੇਮੇਵਰਕ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ: ਸਿਸਟਮ ਆਖ਼ਿਰਕਾਰ ਪ੍ਰੋਗਰਾਮ ਜਨਰੇਟ ਕਰ ਰਿਹਾ ਹੈ (ਐਲਗੋਰਿਦਮ + ਡੇਟਾ + ਕੰਟਰੋਲ ਫ਼ਲੋ) ਜੋ ਅਸਲ ਸੀਮਾਵਾਂ—ਸਮਾਂ, ਮੈਮੋਰੀ, ਸੁਰੱਖਿਆ ਅਤੇ ਸਹੀਤਾ—ਦੇ ਅੰਦਰ ਚਲਣਾ ਹੈ।
Turing ਮਸ਼ੀਨ ਨੂੰ ਇੱਕ ਸੋਚ-ਪ੍ਰਯੋਗ ਵਜੋਂ ਸਭ ਤੋਂ ਵਧੀਆ ਸਮਝਿਆ ਜਾ ਸਕਦਾ ਹੈ: ਇੱਕ ਜਾਣ-ਬੂਝ ਕੇ ਸਾਦਾ “ਕਲਪਨਾਤਮਕ ਕੰਪਿਊਟਰ” ਜੋ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਕਦਮ-ਦਰ-ਕਦਮ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਗਣਨਾ ਕਰਨ ਦਾ ਕੀ ਅਰਥ ਹੈ। Turing ਇਸ ਡਿਵਾਈਸ ਨੂੰ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਨਹੀਂ ਕਰ ਰਿਹਾ ਸੀ; ਉਹ ਗਣਨਾ ਨੂੰ ਇੰਨਾ ਸਪਸ਼ਟ ਤਰੀਕੇ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਚਾਹੁੰਦਾ ਸੀ ਕਿ ਉਸਦੇ ਬਾਰੇ ਸਾਬਤ ਕੀਤੀਆਂ ਜਾ ਸਕਣ।
ਇੱਥੇ ਇੱਕ ਅਨੰਤ ਲੰਬੀ ਕਾਗਜ਼ੀ ਸਟ੍ਰਿਪ (ਟੇਪ) ਦੀ ਕਲਪਨਾ ਕਰੋ ਜੋ ਖਾਣਿਆਂ ਵਿੱਚ ਵੰਡਿਆ ਹੋਇਆ ਹੈ। ਹਰ ਖਾਣਾ ਇੱਕ ਸਿੰਬਲ ਰੱਖ ਸਕਦਾ ਹੈ—ਜਿਵੇਂ ਖਾਲੀ, 0 ਜਾਂ 1। ਇੱਕ ਰੀਡਿੰਗ ਹੈੱਡ ਹਰ ਵਾਰੀ ਇੱਕ ਖਾਣੇ 'ਤੇ ਖੜਾ ਹੁੰਦਾ ਹੈ।
ਹੁਣ ਇੱਕ ਛੋਟੀ ਸੁਚਨਾ ਕਾਰਡ ਜੋ ਹੈੱਡ ਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਕੀ ਕਰਨਾ ਹੈ। ਮਸ਼ੀਨ ਹਮੇਸ਼ਾ ਕੁਝ ਸੀਮਤ states ਵਿੱਚੋਂ ਇੱਕ ਵਿੱਚ ਹੁੰਦੀ ਹੈ (ਉਨ੍ਹਾਂ ਨੂੰ "ਮੋਡ" ਸਮਝੋ, ਜਿਵੇਂ ਅਗਲਾ ਅੰਕ ਲੱਭ ਰਿਹਾ ਜਾਂ ਮੁਕੰਮਲ).
ਹਰ (ਮੌਜੂਦਾ ਸਟੇਟ + ਮੌਜੂਦਾ ਟੇਪ ਸਿੰਬਲ) ਦੇ ਜੋੜ ਲਈ ਇੱਕ ਨਿਯਮ ਹੁੰਦਾ ਹੈ ਜੋ ਦੱਸਦਾ ਹੈ:
Bas—ਇਨ੍ਹੀ ਨਾਲ, ਠੀਕ ਨਿਯਮਾਂ ਨਾਲ, ਮਸ਼ੀਨ ਕਿਸੇ ਵੀ ਐਲਗੋਰਿਦਮ ਵਾਂਗ ਕੰਪਿਊਟੇਸ਼ਨ ਕਰ ਸਕਦੀ ਹੈ।
Turing ਮਸ਼ੀਨ ਗਣਨਾ ਦੀ ਇੱਕ ਸਾਫ਼ ਪਰਿਭਾਸ਼ਾ ਦਿੰਦਾ ਹੈ: ਨਿਯਮਾਂ ਦਾ ਇੱਕ ਸੀਮਤ ਸੈੱਟ ਜੋ ਮੇਮੋਰੀ 'ਤੇ ਕਿਰਿਆ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ ਗਣਿਤੀ ਮਾਡਲ ਹੈ, ਹਾਰਡਵੇਅਰ ਨਕਸ਼ਾ ਨਹੀਂ।
ਚونکہ ਮਾਡਲ ਬਹੁਤ ਨਿਮਰ ਹੈ, ਇਹ ਸਾਬਤੀਆਂ ਲਈ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ: ਜੇ ਕੁਝ ਇਸ ਆਦਰਸ਼ ਮਸ਼ੀਨ ਨਾਲ ਵੀ ਗਣਨਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਤਾਂ ਆਮ ਕੰਪਿਊਟਰਾਂ ਨਾਲ ਵੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।
ਆਧੁਨਿਕ ਪ੍ਰੋਗਰਾਮ ਟੇਪ ਅਤੇ ਹੈੱਡ ਵਰਗੇ ਨਹੀਂ ਲਗਦੇ, ਪਰ ਮੈਪਿੰਗ ਸਿੱਧੀ ਹੈ: ਮੇਮੋਰੀ ਡੇਟਾ ਰੱਖਦੀ ਹੈ, ਕੰਟਰੋਲ ਫ਼ਲੋ ਸਟੇਟ ਬਦਲਦਾ ਹੈ, ਅਤੇ ਨਿਰਦੇਸ਼ ਸਿੰਬਲ ਬਦਲਦੇ ਹਨ।
ਹੌਲ-ਪ੍ਰੋਸੀਜਰ ਵੀ ਇਸੇ ਪੈਟਰਨ 'ਚ ਆਉਂਦੇ ਹਨ: ਨਿਰੀਤ ਨਿਯਮ ਜੋ ਡੇਟਾ ਪੜ੍ਹਦੇ, ਅਪਡੇਟ ਕਰਦੇ ਅਤੇ ਪਰਿਭਾਸ਼ਿਤ ਕਦਮਾਂ ਵਿੱਚ ਅੱਗੇ ਵਧਦੇ—ਗਣਨਾ ਇੱਕ ਦੋਹਰਾਏ ਜਾ ਸਕਣ ਵਾਲਾ, ਨਿਯਮ-ਚਲਿਤ ਪ੍ਰਕਿਰਿਆ ਹੈ।
ਕੁਝ ਪ੍ਰੋਗਰਾਮਾਂ ਬਾਰੇ ਸਵਾਲਾਂ ਐਸੇ ਲੱਗਦੇ ਹਨ ਕਿ ਉਹਨਾਂ ਦਾ ਨਿਰਣਾ ਹਰ ਵਾਰੀ ਯਾਂਚਿਤ ਤਰੀਕੇ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ। Turing ਨੇ ਦਿਖਾਇਆ ਕਿ ਬਹੁਤ ਸਾਰੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਦੇ ਸਵਾਲਾਂ ਲਈ ਇਹ ਉਮੀਦ ਅਸੰਭਵ ਹੈ—ਨਾ ਕਿ ਅਸੀਂ ਘੱਪਾ ਹੋਏ ਹਾਂ, ਪਰ ਇਸ ਲਈ ਕਿ ਆਮ ਤੌਰ 'ਤੇ ਕੋਈ ਸਰਲ ਢੰਗ ਹੋ ਹੀ ਨਹੀਂ ਸਕਦਾ।
ਇੱਕ ਸਮੱਸਿਆ decidable ਹੈ ਜੇ ਕੋਈ ਵਿਧੀ (ਐਲਗੋਰਿਦਮ) ਹੈ ਜੋ ਹਰ ਇਨਪੁੱਟ ਲਈ ਸਹੀ ਹਾਂ/ਨਹੀਂ ਜਵਾਬ ਦੇ ਦੇਂਦੀ ਤੇ ਹਮੇਸ਼ਾ ਖਤਮ ਹੋ ਜਾਂਦੀ।
ਇੱਕ ਸਮੱਸਿਆ undecidable ਹੈ ਜੇ ਕੋਈ ਐਲਗੋਰਿਦਮ ਸਭ ਮਾਮਲਿਆਂ ਲਈ ਇਹ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਤੁਸੀਂ ਕਈ ਉਦਾਹਰਨ ਹੱਲ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਇੱਕ ਐਸਾ ਯੂਨੀਵਰਸਲ ਤਰੀਕਾ ਨਹੀਂ ਹੋ ਸਕਦਾ ਜੋ ਹਮੇਸ਼ਾ ਸਹੀ ਅਤੇ ਸਮਾਪਤ ਹੋਵੇ।
Halting problem ਪੁੱਛਦੀ ਹੈ:
ਦਿੱਤੇ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮ ਅਤੇ ਉਸਦੇ ਇਨਪੁਟ ਲਈ, ਕੀ ਅਸੀਂ ਹਮੇਸ਼ਾਂ ਦੱਸ ਸਕਦੇ ਹਾਂ ਕਿ ਪ੍ਰੋਗਰਾਮ ਅੰਤ ਵਿੱਚ ਰੁਕੇਗਾ ਜਾਂ ਲੱਗਾਤਾਰ ਚੱਲਦਾ ਰਹੇਗਾ?
Turing ਨੇ ਦਿਖਾਇਆ ਕਿ ਜਵਾਬ ਨਹੀਂ ਹੈ। ਕੋਈ ਵਿਸ਼ਵ-ਪੱਧਰੀ ਚੈੱਕਰ ਜੋ ਹਰ ਪ੍ਰੋਗਰਾਮ ਲਈ ਹਮੇਸ਼ਾ ਸਹੀ ਭਵਿੱਖਬਾਣੀ ਕਰੇ—ਉਹ ਅਸੰਭਵ ਹੈ।
ਜਦੋਂ ਤੁਸੀਂ ਇਹ ਮੰਨ ਲੈਂਦੇ ਹੋ ਕਿ “ਹਰ ਪ੍ਰੋਗਰਾਮ ਲਈ ਟਰਮੀਨੇਸ਼ਨ ਦੀ ਭਵਿੱਖਬਾਣੀ” ਅਸੰਭਵ ਹੈ, ਤਾਂ ਕਈ ਦਿਖਣ 'ਚ ਤਰਕਸੰਗਤ “ਪਰਫੈਕਟ ਵਿਸ਼ਲੇਸ਼ਣ” ਵਾਲੇ ਟੂਲ ਵੀ ਅਸੰਭਵ ਹੋ ਜਾਂਦੇ ਹਨ।
ਇੱਕ "ਯੂਨੀਵਰਸਲ ਬੱਗ ਡਿਟੈਕਟਰ" ਦਾ ਮਤਲਬ ਹੋਵੇਗਾ: ਉਸਨੂੰ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਦਿਉ, ਅਤੇ ਉਹ ਨਿਰਭਰਤਾਪੂਰਵਕ ਦੱਸੇ ਕਿ ਕੀ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਕਿਸੇ ਖਾਸ ਕਿਸਮ ਦੀ ਖ਼ਰਾਬੀ ਹੈ। ਪਰ ਕਈ ਬੱਗ‑ਸਬੰਧੀ ਗੁਣਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਦੁਬਾਰਾ ਲਿਖਿਆ ਜਾ ਸਕਦਾ ਹੈ: “ਕੀ ਇਹ ਪ੍ਰੋਗਰਾਮ ਕਿਸੇ ਖਾਸ ਸਥਿਤੀ ਨੂੰ ਪਹੁੰਚੇਗਾ?”—ਅਤੇ ਇਹ ਹਾਲਟਿੰਗ ਸਮੱਸਿਆ ਨੂੰ encode ਕਰ ਸਕਦਾ ਹੈ।
ਇਸ ਲਈ ਅਸਲ ਟੂਲ ਸਮਝੌਤਾ ਕਰਦੇ ਹਨ: ਉਹ ਅਧੂਰੇ ਹੋ ਸਕਦੇ ਹਨ (ਕੁਝ ਬੱਗ ਛੱਡ ਦੇਂਦੇ), ਕਿਸੇ ਬੇਸ 'ਤੇ galat ਚੇਤਾਵਨੀ ਦੇ ਸਕਦੇ, ਜਾਂ ਕੇਵਲ ਸੀਮਿਤ ਕਿਸਮ ਦੀਆਂ ਭਾਸ਼ਾਵਾਂ/ਨਮੂਨਿਆਂ ਲਈ ਕੰਮ ਕਰ ਸਕਦੇ।
ਇੱਕ ਗੁਣ ਲੋ: “ਇਹ ਪ੍ਰੋਗਰਾਮ ਕਦੇ ਵੀ ਅਨੰਤ ਲੂਪ ਵਿੱਚ ਨਹੀਂ ਫਸਦਾ।” ਜੇ ਕੋਈ ਟੂਲ ਸਾਰੀਆਂ ਪ੍ਰੋਗਰਾਮਾਂ ਲਈ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਾਬਤ ਕਰ ਸਕਦਾ, ਤਾਂ ਉਹ ਹਾਲਟਿੰਗ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਵੀ ਦੇ ਰਹਿਆ ਹੋਵੇਗਾ। ਚੁੱਕੇ ਇਹ undecidable ਹੈ, ਪੂਰੀ ਚੈੱਕਿੰਗ ਸੰਭਵ ਨਹੀਂ।
ਇਸੇ ਲਈ linters, type checkers ਅਤੇ static analyzers ਕੀਮਤੀ ਹਨ—ਪਰ ਉਹ ਜਾਦੂ ਨਹੀਂ।
Turing ਤੋਂ ਬਾਅਦ ਇੱਕ ਮੁੱਖ ਸਬਕ ਇਹ ਹੈ ਕਿ “computable” ਦਾ ਮਤਲਬ “ਉਪਯੋਗੀ” ਨਹੀਂ ਹੁੰਦਾ। ਕੁਝ ਕੰਮ ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ ਸੰਭਵ ਹਨ—ਕੋਈ ਪ੍ਰੋਗਰਾਮ ਹਮੇਸ਼ਾ ਖਤਮ ਹੋਵੇਗਾ—ਪਰ ਉਹ ਅਮਲ ਵਿੱਚ ਬੇਕਦਰ ਹੋ ਸਕਦੇ ਹਨ ਕਿਉਂਕਿ ਉਹਨਾਂ ਨੂੰ ਲੱਗਣ ਵਾਲਾ ਸਮਾਂ ਜਾਂ ਮੈਮੋਰੀ ਬਹੁਤ ਜ਼ਿਆਦਾ ਹੈ।
ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਸੋਚੋ ਜੋ ਹਰ ਸੰਭਵ ਜੋੜੀ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਕੇ ਇੱਕ ਪਹੇਲ ਹੱਲ ਕਰ ਲਏ। ਇਹ ਆਖ਼ਿਰਕਾਰ ਕੰਮ ਕਰੇਗਾ, ਪਰ ਜੇ ਸੰਭਾਵਨਾਵਾਂ ਦੀ ਗਿਣਤੀ ਇਸ ਤਰ੍ਹਾਂ ਵਧਦੀ ਹੈ ਕਿ ਕੰਪਿਊਟਰਾਂ ਦੀ ਤੇਜ਼ੀ ਨਾਲੋਂ ਤੇਜ਼ੀ ਨਾਲ ਵੱਧਦੀ ਰਹੇ, ਤਾਂ “ਆਖ਼ਿਰਕਾਰ” ਯੂਨੀਵਰਸ ਦੀ ਉਮਰ ਤੋਂ ਵੀ ਵੱਧ ਸਮਾਂ ਲੈ ਸਕਦਾ ਹੈ।
ਇਹ ਕੰਪਿਊਟੇਸ਼ਨ ਸੀਮਾਵਾਂ ਦਾ ਪ੍ਰੈਕਟਿਕਲ ਪੱਖ ਹੈ: ਨਹੀਂ ਕਿ ਹੱਲ ਹੋ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਕਿ ਕੀ ਉਹ ਅਸਲ ਜਗਤ ਦੀਆਂ ਸੀਮਾਵਾਂ ਵਿੱਚ ਫਿੱਟ ਹੁੰਦਾ ਹੈ।
ਹਰ ਪ੍ਰੋਗਰਾਮ ਸਰੋਤ ਵਰਤਦਾ ਹੈ:
ਕਾਗਜ਼ 'ਤੇ ਇੱਕ ਛੋਟੀ ਵਾਧ ਦੀ ਹਕੀਕਤ ਅਸਲ ਵਿੱਚ ਬਹੁਤ ਵੱਡੀ ਫਰਕ ਪੈਦਾ ਕਰ ਸਕਦੀ ਹੈ। ਜੇ ਕੋਈ ਤਰੀਕਾ ਦੋਹਣਾ ਕੰਮ ਕਰਦਾ ਹੈ ਜਦੋਂ ਇਨਪੁੱਟ ਦੋ ਗੁਣਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਉਹ ਸਹਿਜ ਰਹੇਗਾ; ਪਰ ਜੇ ਕੰਮ ਵਰਗ ਹੋ ਜਾਂ ਹੋਰ ਵੀ ਬੁਰਾ ਵਧਦਾ ਹੈ, ਤਾਂ ਉਹ ਤੁਰੰਤ ਅਯੋਗ ਹੋ ਜਾ ਸਕਦਾ ਹੈ।
ਕੰਪਿਊਟਰ ਵਿਗਿਆਨੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਇਸ ਗੱਲ 'ਤੇ ਆਧਾਰਿਤ ਗਰੁੱਪ ਕਰਦੇ ਹਨ ਕਿ ਉਹਨਾਂ ਦੀ ਲੋੜੀ ਦਾ ਸਮਾਂ ਅਤੇ ਸਥਾਨ ਕਿਵੇਂ ਵਧਦਾ ਹੈ। ਜਲਜਿਲੇ ਗਣਿਤ ਦੇ ਬਿਨਾਂ ਇਰਾਦਾ ਸਧਾਰਨ ਹੈ:
ਇਹ ਵੰਡਾਂ ਅਕਸਰ complexity classes ਦੇ ਤਹਿਤ ਚਰਚਾ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ—ਲੇਬਲ ਜੋ ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਵੱਖ ਕਰਦੇ ਹਨ ਜੋ ਅਸੀ ਉਮੀਦ ਕਰਦੇ ਹਾਂ ਕਿ ਕੁਸ਼ਲਤਾ ਨਾਲ ਹੱਲ ਹੋ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਜੋ ਨਹੀਂ।
ਕ੍ਰਿਪਟੋਗ੍ਰਾਫੀ ਵਿੱਚ, ਕਠਨਾਈ ਅਕਸਰ ਇੱਕ ਫੀਚਰ ਹੁੰਦੀ ਹੈ। ਬਹੁਤ ਸਾਰੀਆਂ ਸੁਰੱਖਿਆ ਪ੍ਰਣਾਲੀ ਉਹਨਾਂ ਕੰਮਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ ਜੋ ਇੱਕ ਤਰੀਕੇ ਨਾਲ ਕਰਨਾ ਆਸਾਨ ਤੇ ਉਲਟਣਾ ਬਿਨਾਂ ਕੁੰਜੀ ਦੇ ਬਹੁਤ ਮਹਿੰਗਾ ਹੈ।
ਇਸ ਲਈ ਜਦੋਂ ਅਸੀਂ ਕਹਿੰਦੇ ਹਾਂ ਕਿ ਸੀਮਾਵਾਂ ਹਨ, ਉਹ ਸਿਰਫ਼ ਰੁਕਾਵਟ ਨਹੀਂ—ਉਹ ਸੁਰੱਖਿਆ ਡਿਜ਼ਾਈਨ ਦਾ ਹਿੱਸਾ ਵੀ ਹਨ।
Cryptanalysis ਉਹ ਅਭਿਆਸ ਹੈ ਜਿਸ ਵਿੱਚ ਗੁਪਤ ਸੁਨੇਹਿਆਂ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕਿ ਬਿਨਾਂ ਗੁਪਤ ਕੁੰਜੀ ਦੇ ਉਹਨਾਂ ਦਾ ਅਰਥ ਬਹਾਲ ਕੀਤਾ ਜਾ ਸਕੇ। WWII ਦੌਰਾਨ ਇਹ ਕੰਮ ਮਹੱਤਵਪੂਰਕ ਸੀ ਕਿਉਂਕਿ ਗੁਪਤ ਸੰਚਾਰ ਵਿੱਚ ਯੋਜਨਾਵਾਂ, ਹੁਕਮ ਅਤੇ ਖੁਫੀਆ ਸੋਚ ਹੁੰਦੀ ਸੀ—ਹੱਥੋਂ ਹਥੋਂ ਡੀਕੋਡ ਕਰਨਾ ਬਹੁਤ ਢੀਲਾ ਸੀ।
ਜੇ ਤੁਸੀਂ ਸੁਨੇਹਿਆਂ ਨੂੰ ਸਮੇਂ 'ਤੇ ਨਹੀਂ ਪੜ੍ਹ ਸਕਦੇ, ਤਾਂ ਤੁਸੀਂ ਉਸ ਉੱਤੇ ਕਾਰਵਾਈ ਨਹੀਂ ਕਰ ਸਕਦੇ। ਇਸ ਲਈ ਗਤੀ ਅਤੇ ਦੁਹਰਾਏ ਜਾ ਸਕਣ ਵਾਲੇ ਨਤੀਜੇ ਚਤੁਰਾਈ ਨਾਲੋਂ ਬਹੁਤ ਜ਼ਰੂਰੀ ਬਣ ਗਏ।
ਚੰਗੇ cipher ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ ਕਿ ਸੁਨੇਹੇ ਨਿੱਜੀ ਰੈਂਡਮ ਸ਼ੱਪਨ ਦਿੱਸਣ। Cryptanalysis ਉਹ ਥਾਵਾਂ ਲੱਭਦੀ ਹੈ ਜਿੱਥੇ ਅਸਲਤ ਨਿਕਲ ਕੇ ਆਉਂਦੀ ਹੈ: ਭਾਸ਼ਾ ਦੇ ਪੈਟਰਨ, ਦੁਹਰਾਏ ਫਾਰਮੈਟ, ਅਗਾਹ ਹੈਡਰ, ਜਾਂ ਪ੍ਰਣਾਲੀ ਵਰਤਣ ਵਿੱਚ ਮਨੁੱਖੀ ਆਦਤਾਂ।
ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਤਰੀਕਾ ਤਿੰਨ ਚੀਜ਼ਾਂ ਮਿਲਾਉਂਦਾ ਹੈ:
ਇੱਥੇ ਹੀ ਸ਼ੁਰੂਆਤੀ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦੀ ਸੋਚ ਨਜ਼ਰ ਆਉਂਦੀ ਹੈ: ਸਮੱਸਿਆ ਨੂੰ ਠੀਕ ਤਰੀਕੇ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ, ਉਸਨੂੰ ਕਦਮਾਂ ਵਿੱਚ ਘਟਾਓ, ਅਤੇ ਐਸੀਆਂ ਪ੍ਰणਾਲੀ ਬਣਾਓ ਜੋ ਇੰਨਾਂ ਕਦਮਾਂ ਨੂੰ ਮਨੁੱਖਾਂ ਨਾਲ ਔਸ ਸਕਦੀਆਂ ਮਸ਼ੀਨਾਂ ਨਾਲ ਤੇਜ਼ੀ ਨਾਲ ਚਲਾ ਸਕਣ।
ਆਧੁਨਿਕ ਸੁਰੱਖਿਆ ਵੀ ਇੱਕੋ ਦ੍ਰਿਸ਼ਟਿਕੋਣ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ: ਇੱਕ ਵਿਰੋਧੀ ਧਾਰੋ ਜੋ ਚਤੁਰ, ਦਿਰਘ‑ਕਾਲੀ ਅਤੇ ਸੀਮਿਤ ਸੰਸਾਧਨਾਂ ਵਾਲਾ ਹੈ। ਰੱਖਿਆ ਕਰਤਾ ਅਨੁਮਾਨ ਲਗਾਂਦੇ ਹਨ (ਗੁਪਤਤਾ, ਕੁੰਜੀ ਪ੍ਰਬੰਧਨ, ਯੂਜ਼ਰ ਵਰਤਾਰਾ, ਡਿਵਾਈਸ ਦੀ ਅਖੰਡਤਾ), ਅਤੇ ਹਮਲਾਵਰ ਸਭ ਤੋਂ ਕਮਜ਼ੋਰ ਬਿੰਦੂ ਦੀ ਤਲਾਸ਼ ਕਰਦਾ ਹੈ।
ਇਹ ਵੀ ਇੱਕ ਵਪਾਰ-ਬਦਲਦਾ ਪੇਸ਼ਾ ਹੈ।਼ ਮਜ਼ਬੂਤ ਇਨਕ੍ਰਿਪਸ਼ਨ ਕਿਸੇ ਵਾਰ ਉਪਭੋਗਤਾ ਲਈ ਜ਼ਿਆਦਾ ਜਟਿਲਤਾ ਲਿਆ ਸਕਦੀ ਹੈ। ਵੱਧ ਨਿਗਰਾਨੀ ਪ੍ਰਾਇਵੇਸੀ ਸਬੰਧੀ ਚਿੰਤਾਵਾਂ ਖੜੀਆਂ ਕਰ ਸਕਦੀ ਹੈ। ਤੇਜ਼ ਡਿਟੈਕਸ਼ਨ ਵਧੇਰੇ ਗਲਤ ਚੇਤਾਵਨੀ ਲਿਆ ਸਕਦੀ ਹੈ।
Turing ਦੇ ਯੁੱਗ ਨੇ ਇੱਕ ਲੰਮੇ ਸਮੇਂ ਵਾਲਾ ਸਬਕ ਦਿਖਾਇਆ: ਸੁਰੱਖਿਆ ਸਿਰਫ਼ “ਸਰਵੋਤਮ ਐਲਗੋਰਿਦਮ” ਬਾਰੇ ਨਹੀਂ ਹੈ—ਇਹ ਪ੍ਰਣਾਲੀਆਂ, ਇਨਸੈਂਟਿਵਸ, ਅਤੇ ਲੋਕਾਂ ਦੇ ਵਰਤਾਰੇ ਬਾਰੇ ਵੀ ਹੈ।
Turing ਉਹ ਸਮਾਂ ਰਿਹਾ ਜਦੋਂ ਸੁਨੇਹੇ ਸਿੱਧਾ ਜੀਵਨ-ਦੇ-ਮੌਕੇ ਵਿਚ ਫਰਕ ਪੈਦਾ ਕਰਦੇ ਸਨ—ਅਤੇ ਉਹ ਦਬਾਅ ਆਧੁਨਿਕ ਸੁਰੱਖਿਆ ਲਕੜੇ ਨਾਲੋਂ ਮਿਲਦਾ ਜੁਲਦਾ ਹੈ।
ਸੁਰੱਖਿਆ ਆਮ ਤੌਰ 'ਤੇ ਕੁਝ ਸਧਾਰਨ ਧਾਰਣਾਵਾਂ ਵਿੱਚ ਘਟਦੀ ਹੈ:
Turing ਦੇ ਯੁੱਗ ਨੇ ਦਿਖਾਇਆ ਕਿ ਇਹ ਚੀਜ਼ਾਂ ਅਕਸਰ "ਫੋਰ ਗਿਵਨ" ਨਹੀਂ ਮਿਲਦੀਆਂ। ਤੁਹਾਨੂੰ ਇਨ੍ਹਾਂ ਲਈ ਡਿਜ਼ਾਈਨ ਕਰਨਾ ਪੈਂਦਾ ਹੈ—ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਦਬਾਓ ਦੇ ਹੇਠਾਂ ਟੈਸਟ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।
ਆਧੁਨਿਕ cryptography ਅਕਸਰ ਗਣਿਤੀਕ ਕਠਨਾਈ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ: ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ 'ਤੇ ਜੋ ਇੱਕ ਤਰੀਕੇ ਨਾਲ ਕਰਨਾ ਆਸਾਨ ਹਨ ਪਰ ਬਿਨਾਂ ਕੁੰਜੀ ਦੇ ਵਰਤੋਂ ਵਿੱਚ ਬਹੁਤ ਮਹਿੰਗੇ ਹਨ (ਜਿਵੇਂ ਵੱਡੇ ਅੰਕਾਂ ਦਾ factoring)। ਇਹ "ਗਣਿਤੀਕ ਤਾਲਾ" ਹੈ।
ਪਰ ਅਕਸਰ ਅਸਲ ਕਮਜ਼ੋਰੀ ਕੁੰਜੀ ਪ੍ਰਬੰਧਨ ਹੁੰਦੀ ਹੈ। ਕੁੰਜੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਤਰੀਕੇ ਨਾਲ ਬਣਾਉਣਾ, ਸੰਭਾਲਣਾ, ਰੋਟੇਟ ਕਰਨਾ, ਅਤੇ ਲੋਕੇ-ਮੁਕਾਵਲੇ ਸਮੇਂ ਵਾਪਸ ਲੈਣਾ ਜ਼ਰੂਰੀ ਹੁੰਦਾ ਹੈ।
ਚਮਤਕਾਰਿਕ ਅਲਗੋਰਿਦਮ ਵੀ ਇਕ ਲੀਕ ਹੋਈ ਕੁੰਜੀ, ਦੁਹਰਾਇਆ ਪਾਸਵਰਡ ਜਾਂ ਅਣਪੈਚਡ ਸਰਵਰ ਨਾਲ ਠੁਕਰਾਏ ਜਾ ਸਕਦੇ ਹਨ।
ਹਮਲਾਵਰ ਅਨੁਕੂਲ ਹੁੰਦੇ ਹਨ। ਸੁਰੱਖਿਆ ਆਮ ਤੌਰ 'ਤੇ ਪੂਰਨਤਾ ਨਹੀਂ ਹੁੰਦੀ—ਇਹ ਖਤਰੇ ਨੂੰ ਘਟਾਉਣ ਬਾਰੇ ਹੁੰਦੀ ਹੈ: ਹਮਲੇ ਮਹਿੰਗੇ, ਪਤਾ ਲੱਗਣ ਯੋਗ, ਅਤੇ ਨੁਕਸਾਨ ਸੀਮਿਤ ਬਣਾਓ।
ਅੱਜ ਦੇ ਹਮਲਾਵਰ ਉਹ ਕੰਮ ਆਟੋਮੇਟ ਕਰਦੇ ਹਨ ਜੋ ਪਹਿਲਾਂ ਵਿਸ਼ੇਸ਼ਗਿਆਨ ਦੀ ਜਰੂਰਤ ਹੁੰਦੇ: ਪਾਸਵਰਡ ਗੈਸਿੰਗ, ਫਿਸ਼ਿੰਗ, ਅਤੇ ਲੱਖਾਂ ਸਿਸਟਮਾਂ ਦੀ ਸਕੈਨਿੰਗ। ਇੰਟਰਨੈੱਟ ਸਕੇਲ 'ਤੇ, ਛੋਟੀਆਂ ਗਲਤੀਆਂ ਵੱਡੀਆਂ ਘਟਨਾਵਾਂ ਬਣ ਜਾਂਦੀਆਂ ਹਨ—ਗਲਤ ਕਨਫ਼ਿਗਰਡ ਕਲਾਉਡ ਸਟੋਰੇਜ, ਨਕਲ ਕੀਤੀਆਂ ਪਹੁੰਚੀ ਦਰਸ faʻatau, ਜਾਂ ਇੱਕ ਕਰਮੀਚਾਰੀ ਦਾ ਇੱਕ ਕਲੀੱਕ।
ਟਿਕਾਊ ਸਬਕ ਇਹ ਹੈ: ਚੰਗੇ ਗਣਿਤ ਨਾਲ ਦਿਓ, ਕਾਇਦੀ ਅਤੇ ਕਠੋਰ ਓਪਰੇਸ਼ਨਲ ਪ੍ਰਥਾਵਾਂ ਨਾਲ ਮਿਲਾਓ, ਅਤੇ ਮੰਨ ਕੇ ਚਲੋ ਕਿ ਪ੍ਰਣਾਲੀ ਲਗਾਤਾਰ ਹਮਲੇ ਹੇਠ ਰਿਹੈ।
ਜਦੋਂ ਲੋਕ ਕਹਿੰਦੇ ਹਨ ਕਿ ਇੱਕ ਕੰਪਿਊਟਰ "ਕਿੰਨਾ ਕੁ ਕਰ ਸਕਦਾ ਹੈ", ਉਹ ਆਮ ਤੌਰ 'ਤੇ "ਜੋ ਕੁਝ ਤੁਸੀਂ ਸੋਚ ਸਕਦੇ ਹੋ" ਤੋਂ ਵੱਧ ਨਿਰਧਾਰਿਤ ਗੱਲ ਕਰਦੇ ਹਨ। Church–Turing thesis ਇੱਕ ਕਾਰਗੁਜ਼ਾਰੀ ਨਿਯਮ ਹੈ ਜੋ ਇਹ ਲੱਖਦਾ ਹੈ: ਜੇਕਰ ਕੋਈ ਕੰਮ ਇੱਕ ਕਦਮ-ਦਰ-ਕਦਮ ਵਿਧੀ (ਐਲਗੋਰਿਦਮ) ਨਾਲ ਹੱਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਤਾਂ ਉਹ ਇੱਕ Turing ਮਸ਼ੀਨ ਦੁਆਰਾ ਵੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਨਾਂ ਚਾਹੇ ਜਾਣ ਵਾਲੇ ਨਾਂ ਰਾਹੀਂ, ਇਹ ਆਮ ਗਣਿਤੀ ਸਿਧांतਾਂ ਵਾਂਗ ਸਾਬਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ—ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਫਾਰਮਲ ਮਾਡਲ (Turing ਮਸ਼ੀਨ) ਨੂੰ ਇੱਕ ਅਣ-ਫਾਰਮਲ ਧਾਰਣਾ ("ਕਿਸੇ ਵੀ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਵਿਧੀ") ਨਾਲ ਜੋੜਦਾ ਹੈ। ਫਿਰ ਵੀ, ਇਹ ਦਾਅਵਾ ਦਹਾਕਿਆਂ ਦੇ ਤਜਰਬੇ ਨਾਲ ਸਮਰਥਿਤ ਹੈ: ਜਦੋਂ ਲੋਕਾਂ ਨੇ ਨਵੀਂ ਸੋਚੀ-ਸਮਝੀ ਗਣਨਾਤਮਕ ਮਾਡਲਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕੀਤੀ, ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਵੋਹੀ ਗਣਨਯੋਗ ਸਮੈਟ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ।
ਥੀਸਿਸ ਸਾਨੂੰ ਵੱਖ-ਵੱਖ ਕੰਪਿਊਟਰਾਂ ਅਤੇ ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਮੁਕਾਬਲਾ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ ਬਿਨਾਂ ਵਿਵਰਣਾਂ 'ਚ ਖੋਏ। ਜੇ ਦੋ ਪ੍ਰਣਾਲੀ "Turing-complete" ਹਨ, ਤਾਂ—ਕਾਫੀ ਸਮਾਂ ਅਤੇ ਮੈਮੋਰੀ ਮਿਲਣ 'ਤੇ—ਉਹ ਇੱਕੋ ਤਰ੍ਹਾਂ ਦੀਆਂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਗਣਨਾ ਕਰ ਸਕਦੀਆਂ ਹਨ।
ਇਸੀ ਲਈ ਤੁਹਾਡਾ ਫੋਨ, ਲੈਪਟੌਪ ਅਤੇ ਕਲਾਉਡ ਸਰਵਰ ਮੂੜ ਤੌਰ 'ਤੇ ਫੰਡਾਮੈਂਟਲੀ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿਚ ਵੱਖਰੇ ਨਹੀਂ ਹਨ—ਉਹਨਾਂ ਵਿੱਚ ਫਰਕ ਤੇਜ਼ੀ, ਲਾਗਤ ਅਤੇ ਸਕੇਲ ਵਿੱਚ ਹੈ।
Church–Turing ਇਹ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ ਕਿ ਹਰ ਸਵਾਲ ਦਾ ਐਲਗੋਰਿਦਮਿਕ ਹੱਲ ਹੈ। ਕੁਝ ਸਮੱਸਿਆਵਾਂ uncomputable ਹਨ (ਜਿਵੇਂ halting problem), ਜਿਨ੍ਹਾਂ ਲਈ ਕੋਈ ਪ੍ਰੋਗਰਾਮ ਸਭ ਮਾਮਲਿਆਂ ਵਿੱਚ ਸਹੀ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕਦਾ।
ਅਤੇ ਜਦੋਂ ਕੋਈ ਚੀਜ਼ computable ਹੈ, ਉਹ ਅਕਸਰ ਇੰਨੀ ਹੌਲੀ ਹੋ ਸਕਦੀ ਹੈ ਕਿ ਉਹ ਪ੍ਰੈਕਟਿਕਲ ਨਹੀਂ ਰਹਿੰਦੀ—ਇਹ ਇਕ ਵੱਖਰਾ ਮਸਲਾ ਹੈ ਜਿਸਨੂੰ complexity theory ਦੇ ਤਹਿਤ ਦੇਖਿਆ ਜਾਂਦਾ ਹੈ।
Turing ਨੇ ਨੋਟ ਕੀਤਾ ਕਿ “ਕੀ ਮਸ਼ੀਨ ਸੋਚ ਸਕਦੀ ਹੈ?” ਸਵਾਲ ਧੁੰਦਲਾ ਹੈ। “ਸੋਚਣਾ” ਦਾ ਮਤਲਬ ਹੋ ਸਕਦਾ ਹੈ—ਭਾਵਨਾਵਾਂ, ਸਮਝ, ਰਚਨਾਤਮਕਤਾ, ਸਵੇਚਨਾ, ਜਾਂ ਸਿਰਫ਼ ਚੰਗੇ ਜਵਾਬ ਦੇਣਾ। ਜੇ ਅਸੀਂ ਪਰਿਭਾਸ਼ਾ 'ਤੇ ਇਕynyt ਨਹੀਂ ਹੋਏ, ਤਾਂ ਅਸੀਂ ਸਾਫ਼ ਟੈਸਟ ਨਹੀਂ ਬਣਾਉ ਸਕਦੇ।
Turing ਨੇ ਉਸ ਧੁੰਦਲੇ ਸਵਾਲ ਨੂੰ ਇੱਕ ਵਿਆਵਹਾਰਿਕ ਪ੍ਰਸ਼ਨ ਨਾਲ ਬਦਲਣ ਦਾ ਸੁਝਾਅ ਦਿੱਤਾ: ਕੀ ਇੱਕ ਮਸ਼ੀਨ ਗੱਲਬਾਤ ਵਿੱਚ ਹੋਸਿਆਰ ਵਰਤਾਰਾ ਕਰ ਸਕਦੀ ਹੈ?
ਪारੰਪਰਿਕ ਸੈਟਅੱਪ ਵਿੱਚ, ਇੱਕ ਮਨੁੱਖੀ ਨਿਆਂਕ (judge) ਦੋ ਛੁਪੇ ਹੋਏ ਭਾਗੀਦਾਰਾਂ ਨਾਲ ਗੱਲ ਕਰਦਾ ਹੈ: ਇੱਕ ਮਨੁੱਖ ਅਤੇ ਇੱਕ ਮਸ਼ੀਨ। ਜੱਜ ਕਿਸੇ ਵੀ ਪ੍ਰਸ਼ਨ ਪੁੱਛ ਸਕਦਾ ਹੈ, ਫਿਰ ਫੈਸਲਾ ਕਰਨਾ ਹੋਂਦਾ ਹੈ ਕਿ ਕੌਣ ਮਨੁੱਖ ਹੈ। ਜੇ ਜੱਜ ਅਕਸਰ ਫਰਕ ਨਹੀਂ ਕਰ ਪਾਂਦਾ, ਤਾਂ ਮਸ਼ੀਨ ਨੇ ਟੈਸਟ ਪਾਸ ਕਰ ਲਿਆ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ।
ਇਹ ਸਿੱਧਾ-ਸੋਚ ਨਹੀਂ ਕਰਾਉਂਦਾ ਕਿ ਮਸ਼ੀਨ "ਸੋਚਦੀ" ਹੈ—ਪਰ ਇਹ ਇੱਕ ਮਾਪਣਯੋਗ ਲਕੜੀ ਦੇਂਦਾ ਹੈ: ਇੱਕ ਨਿਰਧਾਰਿਤ ਇੰਟਰੈਕਸ਼ਨ ਵਿੱਚ ਅਸਲੀ ਮਨੁੱਖੀ ਵਰਤਾਰਾ ਨਾਲ ਅਟੱਲ ਹੋਣ ਦੀ ਸਮਰੱਥਾ।
Turing Test ਬਾਹਰੀ ਵਿਹੇਵਾਰ ਤੇ ਦੇਖਦਾ ਹੈ। ਇਹ ਇੱਕ ਤਾਕਤ ਹੈ (ਮਾਪਣਯੋਗ ਹੋਣਾ), ਪਰ ਇਸ ਦੀਆਂ ਹੱਦਾਂ ਵੀ ਹਨ:
ਅੱਜਕੱਲ੍ਹ ਦੇ chatbots ਛੋਟੇ-ਛੋਟੇ ਬਦਲ-ਵਤਰਾਂ ਵਿੱਚ ਮਨੁੱਖ ਵਰਗੇ ਲੱਗਦੇ ਹਨ, ਜਿਸ ਨਾਲ Turing ਦਾ ਵਿਚਾਰ ਦੁਬਾਰਾ ਮਾਨਤਾ ਵਿੱਚ ਆ ਗਿਆ ਹੈ। ਪਰ ਇਹ ਵੀ ਮੁਸ਼ਕਲੀਆਂ ਦਿਖਾਉਂਦਾ ਹੈ: ਬੈਂਚਮਾਰਕਾਂ ਨੂੰ ਅੰਦਾਜ਼ਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਸ਼ੈਲੀ ਅਤੇ ਟੈਸਟ ਫਾਰਮੈਟ ਨਾਲ, ਅਤੇ ਇੱਕ ਸਿਸਟਮ ਜੋ ਚੈਟ ਵਿੱਚ ਵਧੀਆ ਲੱਗਦਾ ਹੈ ਉਹ ਲੰਬੇ-ਸਮੇਂ ਦੀ ਤਰਕਸ਼ੀਲਤਾ ਜਾਂ ਤੱਥੀ ਸਹੀਤਾ ਵਿੱਚ ਫੇਲ ਹੋ ਸਕਦਾ ਹੈ।
ਲੰਬੀ ਸਿੱਖਿਆ ਇਹ ਹੈ ਕਿ ਗੱਲਬਾਤ ਆਖ਼ਰੀ ਮਾਪਦੰਡ ਨਹੀਂ—ਸਾਨੂੰ ਸੰਭਾਲੀ ਹੋਈ, ਪਾਰਦਰਸ਼ੀ ਟੈਸਟਿੰਗ ਚਾਹੀਦੀ ਹੈ ਅਤੇ ਇਹ ਸਪੱਸ਼ਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕੋਈ ਵੀ ਟੈਸਟ ਅਸਲ ਵਿੱਚ ਕੀ ਮਾਪਦਾ ਹੈ।
AI ਸਿਸਟਮ ਅਨੰਤ ਲਗਦੇ ਹਨ, ਪਰ ਉਹ ਵੀ ਪ੍ਰੋਗਰਾਮਾਂ 'ਤੇ ਚਲਦੇ ਹਨ—ਇਸ ਲਈ ਉਹ ਉਹੀ ਸੀਮਾਵਾਂ ਵਾਰਸੇ ਵਿੱਚ ਲੈਂਦੇ ਹਨ ਜੋ Turing ਨੇ ਸਪੱਸ਼ਟ ਕੀਤੀਆਂ। ਇਹ ਸੀਮਾਵਾਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ ਕਿ ਕੀ ਹਕੀਕਤ ਵਿੱਚ ਹਾਸਲ ਕਰਨਯੋਗ ਹੈ, ਕੀ ਮਹਿੰਗਾ ਹੈ, ਅਤੇ ਕੀ ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ ਅਸੰਭਵ ਹੈ।
ਕਈ AI ਕੰਮ computable ਹਨ ਪਰ ਮਹਿੰਗੇ: ਇੱਕ ਮਾਡਲ ਨੂੰ ਟ੍ਰੇਨ ਕਰਨਾ, ਉੱਤਰ ਲੱਭਣ ਲਈ ਖੋਜ ਕਰਨਾ, ਜਾਂ ਯੋਜਨਾ ਦਾ ਅਨੁਕੂਲਨ ਬਹੁਤ ਸਮਾਂ ਅਤੇ ਊਰਜਾ ਲੈ ਸਕਦਾ ਹੈ। ਵੱਧ ਡੇਟਾ ਅਤੇ ਤੇਜ਼ ਹਾਰਡਵੇਅਰ ਕਈ ਵਾਰ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ—ਕਦੇ ਕਦੇ ਬਹੁਤ।
ਹੋਰ ਲਕੜੇ ਭੀ ਹਨ ਜੋ ਦੀਪ ਰੁਕਾਵਟਾਂ ਦੇ ਸਾਹਮਣੇ ਆਉਂਦੇ ਹਨ। ਕੁਝ ਸਵਾਲ ਕਿਸੇ ਵੀ ਸਰਵ-ਆਕਾਰ ਵਿਧੀ ਨਾਲ ਸਭ ਮਾਮਲਿਆਂ ਲਈ ਹੱਲ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ (ਅਨਿਰਣਯੋਗਤਾ ਦੀ ਰੂਹ ਵਿੱਚ)। ਉਦਾਹਰਨ ਲਈ, “ਇਸ arbitrary ਸਿਸਟਮ ਨੂੰ ਸਾਬਤ ਕਰੋ ਕਿ ਉਹ ਕਦੇ ਨਾਹ ਫੇਲ ਹੋਵੇ” ਕੁਝ ਵਰਗਾਂ ਲਈ ਕੇਵਲ ਲੰਬੇ ਹੱਥ ਨਾਲ ਅਸੰਭਵ ਹੈ।
ਜਦੋਂ ਇੱਕ ਸਮੱਸਿਆ computable ਹੁੰਦੀ ਹੈ, ਵੀ ਉਹ intractable ਹੋ ਸਕਦੀ ਹੈ: ਲੋੜੀ ਦਾ ਸਮਾਂ ਇਸ ਤਰ੍ਹਾਂ ਵਧਦਾ ਹੈ ਕਿ “ਸਿਰਫ਼ ਹੋਰ ਡੇਟਾ ਜੋੜ ਦੇਣਾ” ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਲੰਬੇ‑ਹੋਰਿਜ਼ਨ ਦੀ ਯੋਜਨਾ, ਵਿਸ਼ਤਰੇਸ਼ਟ ਸਥਿਤੀ ਜਾਂ ਕੁਝ ਕਿਸਮ ਦੀਆਂ worst-case reasoning ਵਿੱਚ ਦਿਖਦਾ ਹੈ।
AI ਅੰਦਾਜ਼ਾ ਲਾ ਸਕਦਾ ਹੈ ਜਾਂ ਅਨੁਮਾਨ ਕਰ ਸਕਦਾ ਹੈ, ਪਰ ਗਾਰੰਟੀਆਂ ਮਹਿੰਗੀਆਂ ਬਣ ਜਾਂਦੀਆਂ ਹਨ।
ਕਿਉਂਕਿ ਪੂਰੀ ਗਾਰੰਟੀਆਂ ਸੀਮਿਤ ਹਨ, ਮੁੱਲਾਂਕਣ ਅਨਿਸ਼ਚਿਤਤਾ ਸੰਭਾਲਣ ਦੇ ਬਾਰੇ ਹੁੰਦਾ ਹੈ: ਤਰੀਕਿਆਂ ਦੀ ਗਲਤੀ ਦਰ ਮਾਪਣਾ, ਦਰੜੀ ਸਥਿਤੀਆਂ 'ਤੇ ਸਟ੍ਰੈੱਸ‑ਟੈਸਟ ਕਰਨਾ, ਅਤੇ ਸਮੇਂ ਨਾਲ ਫੇਲ ਮੋਡਾਂ ਦਾ ਟ੍ਰੈਕ ਰੱਖਣਾ। ਸਭ ਤੋਂ ਮੁਸ਼ਕਲ ਬੱਗ ਆਮ ਬੈਂਚਮਾਰਕਾਂ ਵਿੱਚ ਨਹੀਂ ਪਰ ਐਡਜ ਕੇਸਾਂ ਵਿੱਚ ਮਿਲਦੀਆਂ ਹਨ।
ਸੀਮਾਵਾਂ ਸੁਰੱਖਿਆ ਨੂੰ ਵੀ ਰੂਪ ਦਿੰਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਨਿਯਮਾਂ ਨਾਲ ਹੀ "ਸਭ ਖਰਾਬ ਵਰਤਾਰਾ" ਨਿਕਾਲ ਨਹੀਂ ਸਕਦੇ, ਅਤੇ ਤੁਸੀਂ ਹਰ ਇੰਟਰੈਕਸ਼ਨ ਦੀ ਪੂਰੀ ਜਾਂਚ ਨਹੀੰ ਕਰ ਸਕਦੇ।
Prompt injection, ਡੇਟਾ poisoning ਅਤੇ ਗਲਤ ਉਪਯੋਗ ਇਹ ਯਾਦ ਦਿਲਾਉਂਦੇ ਹਨ ਕਿ ਰੱਖਿਆ ਨੂੰ ਇੱਕ ਤੋਂ ਵੱਧ ਪਰਤਾਂ ਚਾਹੀਦੀਆਂ ਹਨ: ਮਾਨੀਟਰਨਗ, ਪਹੁੰਚ ਨਿਯੰਤਰਣ, red-teaming, ਅਤੇ ਧਿਆਨ ਨਾਲ ਤਿਆਰ ਕੀਤੀ ਪ੍ਰਣਾਲੀ—ਇੱਕ ਪੂਰਾ ਟੈਸਟ ਨਹੀਂ।
Turing ਦਾ ਕੰਮ ਅਕਸਰ ਇਤਿਹਾਸ ਵਜੋਂ ਸਿੱਖਾਇਆ ਜਾਂਦਾ ਹੈ, ਪਰ ਇਹ ਵਧੇਰੇ ਲਾਭਦਾਇਕ ਇੱਕ "ਸਿਧਾਂਤਕ ਰਸਤਾ-ਨਿਰਦੇਸ਼" ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ ਇਹ ਸੁਝਾਉਂਦਾ ਹੈ ਕਿ ਕੰਪਿਊਟਰ ਕੀ ਕਰ ਸਕਦੇ ਹਨ (ਅਤੇ ਕੀ ਨਹੀਂ)।
1) Computability (ਕੀ ਸੰਭਵ ਹੈ)। Turing ਮਸ਼ੀਨ ਇੱਕ ਸਾਫ਼ ਤਰੀਕੇ ਨਾਲ ਦੱਸਦੀ ਹੈ ਕਿ ਕਿਹੜੀਆਂ ਸਮੱਸਿਆਵਾਂ ਕਿਸੇ ਵੀ ਕਦਮ-ਦਰ-ਕਦਮ ਵਿਧੀ ਨਾਲ ਹੱਲ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। Halting problem ਇੱਥੇ ਸਿਰਲੇਖ ਨਤੀਜਾ ਹੈ: ਕੁਝ ਪ੍ਰੋਗਰਾਮ-ਸਬੰਧੀ ਪ੍ਰਸ਼ਨਾਂ ਆਮ ਤੌਰ 'ਤੇ ਹੱਲ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ।
2) Complexity (ਅਸਲ ਜ਼ਮਾਨੇ ਅਤੇ ਸਰੋਤਾਂ ਨਾਲ ਕੀ ਸੰਭਵ ਹੈ)। ਬਹੁਤ ਸਾਰੇ ਕੰਮ computable ਹੋ ਸਕਦੇ ਹਨ ਪਰ ਜਦੋਂ ਇਨਪੁੱਟ ਵੱਧ ਜਾਂਦਾ ਹੈ ਤਾਂ ਸਮਾਂ, ਮੈਮੋਰੀ ਜਾਂ ਊਰਜਾ ਇੰਨੀ ਤੇਜ਼ੀ ਨਾਲ ਵੱਧ ਜਾਂਦੇ ਹਨ ਕਿ ਹੱਲ ਅਯੋਗ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਸੇ ਲਈ "ਛੋਟੇ ਉਦਾਹਰਨ 'ਤੇ ਚੱਲਦਾ ਹੈ" ਦਾ ਮਤਲਬ ਅਕਸਰ "ਅਸਲ ਦੁਨੀਆ ਵਿੱਚ ਨਹੀਂ ਚੱਲੇਗਾ" ਹੁੰਦਾ ਹੈ।
3) Security (ਸੀਮਾਵਾਂ ਸਾਡੇ ਲਈ ਰੱਖਿਆ ਕਿਵੇਂ ਬਣ ਸਕਦੀਆਂ ਹਨ)। ਆਧੁਨਿਕ cryptography ਅਮਲੀ ਸੀਮਾਵਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ: ਇਹ ਨਹੀਂ ਕਿ ਕਿਸੇ ਚੀਜ਼ ਨੂੰ ਤੋੜਨਾ ਅਸੰਭਵ ਹੈ, ਪਰ ਇਹ ਕਿ ਇਸ ਨੂੰ ਸਕੇਲ 'ਤੇ ਕਰਨ ਲਈ ਬਹੁਤ ਮਹਿੰਗਾ ਜਾਂ ਸਮੇਂ‑ਲੰਬਾ ਹੈ। Turing ਦੀ ਕੋਡਬ੍ਰੇਕਿੰਗ ਸਾਨੂੰ ਯਾਦ ਦਿੰਦੀ ਹੈ ਕਿ ਹਮਲਾਵਰ ਗਣਿਤ, ਇੰਜੀਨੀਅਰਿੰਗ ਅਤੇ ਪ੍ਰਚਾਲਨ ਦੇ ਛੋਟੇ-ਛੋਟੇ shortcuts ਵਰਤਦੇ ਹਨ—ਸਿਰਫ਼ ਬਲੈਕ-ਫੋਰਸ ਨਹੀਂ।
ਜਦੋਂ ਤੁਸੀਂ ਕਿਸੇ ਕੰਪਿਊਟਿੰਗ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰੋ, ਤਿਹਨੂੰ ਇਹ ਤਿੰਨ ਸਵਾਲ ਪਹਿਲਾਂ ਪੁੱਛੋ:
ਜੇ ਤੁਸੀਂ ਹੋਰ ਡੂੰਘਾਈ ਵਿੱਚ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਚੰਗੇ ਅਗਲੇ ਵਿਸ਼ੇ ਹਨ:
ਕੰਪਿਊਟਿੰਗ ਵਿੱਚ ਪ੍ਰਗਟੀ ਸੱਚੀ ਹੈ—ਤੇਜ਼ ਹਾਰਡਵੇਅਰ, ਚੰਗੇ ਐਲਗੋਰਿਦਮ, ਮਜ਼ਬੂਤ ਸੁਰੱਖਿਆ ਉਪਕਰਣ। ਪਰ ਸੀਮਾਵਾਂ ਵੀ ਸੱਚੀਆਂ ਹਨ, ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਮਝਣਾ ਇੱਕ ਪ੍ਰਯੋਗਿਕ ਫਾਇਦਾ ਹੈ: ਇਹ ਤੁਹਾਨੂੰ ਸਹੀ ਟੂਲ ਚੁਣਨ, ਯਥਾਰਥਪੂਰਵਕ ਉਮੀਦਾਂ ਰੱਖਣ ਅਤੇ ਉਹ ਦਾਵੇ ਨਾ ਮੰਨਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਜੋ ਗਣਿਤ ਦੀਆਂ ਹੱਦਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹਨ।
ਇੱਕ Turing ਮਸ਼ੀਨ ਗਣਨਾ ਦਾ ਬਹੁਤ ਹੀ ਆਸਾਨਕਾਲੀ, Abstract ਮਾਡਲ ਹੈ: ਇਕ ਟੇਪ (ਮੇਮੋਰੀ), ਇਕ ਪੜ੍ਹਨ/ਲਿਖਣ ਵਾਲਾ ਹੈੱਡ, ਅਤੇ ਇੱਕ ਸੀਮਤ ਨਿਯਮਾਂ ਦਾ ਸੈੱਟ (states)। ਇਹ ਇਸ ਲਈ ਮਹੱਤਵਪੂਰਣ ਹੈ ਕਿ ਇਹ ਇਹ ਦੱਸਦਾ ਹੈ ਕਿ “ਕਾਰਜਕ੍ਰਮ” ਅਮਲ ਵਿੱਚ ਕੀ ਕਰ ਸਕਦਾ ਹੈ—ਕਿਸੇ ਵਿਸ਼ੇਸ਼ ਹਾਰਡਵੇਅਰ ਜਾਂ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ ਤੋਂ ਅਜ਼ਾਦ।
Church–Turing ਧਾਰਨਾ ਐਸਾ ਦਾਵਾ ਹੈ ਕਿ ਜੋ ਕੁਝ ਵੀ ਇੱਕ ਪ੍ਰভাবਸ਼ਾਲੀ, ਕਦਮ-ਦਰ-ਕਦਮ ਵਿਧੀ ਨਾਲ ਗਣਨਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਉਹ Turing ਮਸ਼ੀਨ ਨਾਲ ਵੀ ਗਣਨਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਇੱਕ ਸਖ਼ਤ ਗਣਿਤੀ ਸਿਧਾਂਤ ਨਹੀਂ ਹੈ; ਇਹ ਇਕ ਢਾਂਚਾ-ਨਿਰਧਾਰਕ ਵਿਚਾਰ ਹੈ ਜਿਸਨੂੰ ਸਾਲਾਂ ਦੇ ਅਨੁਭਵ ਨੇ ਸਮਰਥਨ ਦਿੱਤਾ ਹੈ—ਜਦ ਵੀ ਨਵੇਂ ਵਾਜਿਬ ਮਾਡਲ ਆਏ, ਉਹਨਾਂ ਨੇ ਉਹੀ ਗਣਨਯੋਗ ਸਮਿੱਟ ਸੋਚ ਵਾਪਸ ਦਿੱਤੀ।
“Computable” ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੋਈ ਐਲਗੋਰਿਦਮ ਮੌਜੂਦ ਹੈ ਜੋ ਸਹੀ ਜਵਾਬ ਦੇਵੇਗਾ (ਆਖ਼ਿਰਕਾਰ)। “Efficiently computable” ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਉਹ ਜਵਾਬ ਦਿੰਦਾ ਸਮੇਂ ਅਤੇ ਮੈਮੋਰੀ ਦੇ ਹਿਸਾਬ ਨਾਲ ਵਰਤੋਂਯੋਗ ਹੋਵੇ। ਬਹੁਤ ਸਾਰੀਆਂ ਅਸਲੀ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਦੋਨੋਂ ਗੱਲਾਂ ਨੂੰ ਮਿਲਭੁਲ ਕਰਕੇ ਗਲਤ ਨਤੀਜੇ ਹੁੰਦੇ ਹਨ—ਕਿਸੇ ਚੀਜ਼ ਦੇ ਹੱਲ ਹੋਣ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ ਉਹ ਹਮੇਸ਼ਾਂ ਪ੍ਰੈਕਟਿਕਲ ਹੈ।
Halting ਸਮੱਸਿਆ ਇਹ ਪੁੱਛਦੀ ਹੈ ਕਿ:
ਦਿੱਤੇ ਹੋਏ ਕਿਸੇ ਵੀ ਪ੍ਰੋਗ੍ਰਾਮ ਅਤੇ ਉਸਦੇ ਇਨਪੁਟ ਲਈ, ਕੀ ਅਸੀਂ ਹਮੇਸ਼ਾਂ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹਾਂ ਕਿ ਪ੍ਰੋਗ੍ਰਾਮ ਅੰਤੀਮ ਤੌਰ 'ਤੇ ਰੁਕੇਗਾ (halt) ਜਾਂ ਸਦੀਵੀ ਤੌਰ 'ਤੇ ਚੱਲਦਾ ਰਹੇਗਾ?
Turing ਨੇ ਸਾਬਤ ਕੀਤਾ ਕਿ ਇਸ ਦਾ ਜਵਾਬ ਨਾਹੀਂ ਹੈ। ਕੋਈ ਯੂਨੀਵਰਸਲ ਚੈੱਕਰ ਨਹੀਂ ਬਣ ਸਕਦਾ ਜੋ ਹਰ ਪ੍ਰੋਗ੍ਰਾਮ ਅਤੇ ਹਰ ਇਨਪੁਟ ਲਈ ਹਮੇਸ਼ਾ ਸਹੀ ਤੌਰ 'ਤੇ ਹਾਲਟਿੰਗ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰੇ।
ਇਸ ਲਈ ਅਸਲੀ ਟੂਲਾਂ ਨੂੰ ਸਮਝੌਤਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ: ਉਹ
ਇਸੇ ਲਈ ਸ਼ਾਨਦਾਰ static analysis ਕੀਮਤੀ ਹੈ, ਪਰ ਜਾਦੂ ਨਹੀਂ।
ਜਟਿਲਤਾ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜਦੋਂ ਇਨਪੁੱਟ ਵਧਦਾ ਹੈ ਤਾਂ ਸਰੋਤ (ਸਮਾਂ ਅਤੇ ਸਮਰੱਥਾ) ਕਿਵੇਂ ਵਧਦੇ ਹਨ। ਇੱਕ ਛੋਟਾ-ਪੇਪਰ ਤੇ ਸੁਝਾਅ ਅਸਲ ਜਗਤ ਵਿੱਚ ਇੱਕ ਵਿਸ਼ਾਲ ਅੰਤਰ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ—ਜੋ ਕੋਈ ਵਿਧੀ ਛੋਟੇ ਉਦਾਹਰਨ 'ਤੇ ਠੀਕ ਲੱਗਦੀ ਹੈ, ਵੱਡੇ ਡੇਟਾ 'ਤੇ ਅਪ੍ਰਯੋਗਯੋਗ ਬਣ ਸਕਦੀ ਹੈ।
ਮੌਡਰਨ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫੀ ਅਕਸਰ ਉਹਨਾਂ ਸਮੱਸਿਆਵਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਜੋ ਇੱਕ ਕੁੰਜੀ ਨਾਲ ਕਰਨਾ ਆਸਾਨ ਹਨ ਪਰ ਬਿਨਾਂ ਕੁੰਜੀ ਦੇ ਬਹੁਤ ਮਹਿੰਗੇ ਹਨ। ਇਹ “ਮਹਿੰਗਾ” ਹੋਣਾ ਹੀ ਸੁਰੱਖਿਆ ਦਾ ਭਾਗ ਹੈ: ਹਮਲਾਵਰ ਨਿਸ਼ਚਿਤ ਸਮੇਂ/ਬਜਟ ਵਿੱਚ ਹੱਲ ਨਹੀਂ ਲੱਭ ਸਕਦਾ।
Turing ਦੇ ਕੋਡਬ੍ਰੇਕਿੰਗ ਕੰਮ ਨੇ ਇੱਕ ਦਿਰਘਕਾਲੀ ਦ੍ਰਿਸ਼ਟਿਕੋਣ ਸਿਖਾਇਆ: ਸੰਰਚਨਾ, ਅੰਕੜੇਵਾਦ ਅਤੇ ਆਟੋਮੇਸ਼ਨ ਨੂੰ ਮਿਲਾਓ।
ਆਧੁਨਿਕ ਸੁਰੱਖਿਆ ਵੀ ਇਹੀ ਤਰੀਕਾ ਵਰਤਦੀ ਹੈ—ਸਿਰਫ਼ ਇੰਟਰਨੈੱਟ ਸਕੇਲ 'ਤੇ।
Turing Test ਇਹ ਵੇਖਦਾ ਹੈ ਕਿ ਕੀ ਇਕ ਮਸ਼ੀਨ ਸੰਕੁਚਿਤ ਸੈਟਿੰਗ ਵਿੱਚ ਗੱਲਬਾਤ ਰਾਹੀਂ ਮਨੁੱਖ ਵਰਗੀ ਵਿਹੇਵ ਲਈ ਅਟੱਲ ਤੌਰ 'ਤੇ ਮਨੁੱਖ ਨੂੰ ਭਰਮਾਉ ਸਕਦੀ ਹੈ।
ਪਰ ਇਹ ਅੰਦਰੂਨੀ ਅਨੁਭਵ, ਹੋਸ਼ਿਆਰੀ ਜਾਂ ਸੱਚਾਈ ਦੀ ਮਾਪ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਯੋਗ ਹੈ ਕਿ ਟੈਸਟ ਵਿਵਹਾਰਕ ਬੈਂਚਮਾਰਕ ਦੇ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੈ, ਪਰ ਜੋ ਕੁਝ ਇਹ ਮਾਪਦਾ ਹੈ ਉਹ ਸੀਮਤ ਹੈ।
AI ਸਿਸਟਮ ਪਰੋਗ੍ਰਾਮਾਂ ਤੇ ਚਲਦੇ ਹਨ, ਇਸ ਲਈ ਉਹ ਉਹੀ ਗਣਨਾਕੀ ਸੀਮਾਵਾਂ ਵਾਰਸੇ ਵਿਚ ਲੈਦੇ ਹਨ। ਤੁਸੀਂ ਆਮ ਤੌਰ 'ਤੇ "ਇਹ ਸਿਸਟਮ ਹਰ ਸਥਿਤੀ ਵਿੱਚ ਕਦੇ ਫੇਲ ਨਹੀਂ ਹੋਵੇਗਾ" ਵਰਗੀਆਂ ਪੂਰਨ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ ਸਕਦੇ। ਇਸ ਲਈ ਅਸਲ ਕੰਮ ਰਿਸਕ ਮੈਨੇਜਮੈਂਟ, ਟੈਸਟਿੰਗ, ਮਾਨੀਟਰਨਗ ਅਤੇ ਪਰਤਦਾਰ ਰੱਖੇ ਗਏ ਪ੍ਰਣਾਲੀਆਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।