ମେସିନ୍ ପ୍ରୋଗ୍ରାମିଂ ବା ଯାନ୍ତ୍ରିକ ଭାଷାର ଅର୍ଥ ହେଉଛି ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ କାର୍ଯ୍ୟକୁ ସହଜ କରିବା ପାଇଁ ସିପିୟୁ (CPU)କୁ ଏକ ନିର୍ଦ୍ଦେଶନାମା ପ୍ରଦାନ କରିବା । ମେସିନ ଏକମାତ୍ର ଭାଷା ବୁଝିପାରେ, ଯାହାକୁ ମେସିନ୍ ବା ଯାନ୍ତ୍ରିକ କୋଡ୍ କୁହାଯାଏ, ଯାହା ସାଙ୍କେତିକ ନିର୍ଦ୍ଦେଶାବଳୀକୁ ନେଇ ଗଠିତ । ଏହା ଜରିଆରେ ମେସିନ୍ ବା ଯନ୍ତ୍ର ସିଧାସଳଖ ପ୍ରତିକ୍ରିୟା ଦେଖାଇଥାଏ । ମେସିନ୍ ଭାଷାର ବର୍ଣ୍ଣମାଳାରେ ରହିଛି ୦ ଏବଂ ୧ । ୦ ଓ ୧ କ୍ରମକୁ ମେସିନ ସିଧାସଳଖ ଭାବେ ବୁଝିପାରେ ଅର୍ଥାତ ଏଥିପାଇଁ କୌଣସି ଅନୁବାଦ ଆବଶ୍ୟକ ହୁଏ ନାହିଁ । ଏହାକୁ ଲୋ ଲେବଲ ଅର୍ଥାତ ସର୍ବନିମ୍ନ ସ୍ତରର ପ୍ରୋଗ୍ରାମିଂ ବୋଲି କୁହାଯାଏ । ଏହା ସାଧାରଣତଃ ହାର୍ଡୱେର୍ ଉପରେ ନିର୍ଭରଶୀଳ ରହିଥାଏ । ତେବେ ସମାନ କାର୍ଯ୍ୟ ପାଇଁ ବିଭିନ୍ନ ସିପିୟୁଗୁଡ଼ିକର ଭିନ୍ନ ଭିନ୍ନ ମେସିନ୍ କୋଡ୍ ରହିଥାଏ । ଯାନ୍ତ୍ରିକ ଭାଷାରେ ପ୍ରୋଗ୍ରାମିଂ କରିବା ସବୁଠାରୁ କଷ୍ଟକର ବ୍ୟାପାର ଏବଂ ସେ କୋଡ଼ ମଧ୍ୟ ପଠନୀୟ ନୁହେଁ । ମେସିନ୍ କୋଡ୍ ଲେଖିବା ଯଦିଓ ସମ୍ଭବ, କିନ୍ତୁ ଏହା ବ୍ୟବହାରିକ ନୁହେଁ । ଯଦି ଆମେ ମେସିନ୍ କୋଡ୍ ରେ ସିଧାସଳଖ ନିର୍ଦ୍ଦେଶ ପ୍ରଦାନ କରିପାରୁ ନାହୁଁ, ତେବେ ଆମେ କିପରି ମେସିନକୁ ପରିଚାଳିତ କରୁ, ତେବେ ଏହାର ଉତ୍ତର ହେଉଛି ପ୍ରୋଗ୍ରାମିଂ ଭାଷା ବା ପ୍ରୋଗ୍ରାମିଂ ଲାଙ୍ଗୁଏଜ ।

ପ୍ରୋଗ୍ରାମିଂ ଭାଷା (ପ୍ରୋଗ୍ରାମିଂ ଲାଙ୍ଗୁଏଜ) କ’ଣ ?

ଧରନ୍ତୁ, ଆପଣ ଜଣେ ଷ୍ଟାର୍ଟଅପ୍ ପ୍ରତିଷ୍ଠାତା । ଆପଣ ଜଣେ ନିବେଶକଙ୍କ ସହିତ ସାକ୍ଷାତ କରିବାକୁ ଯାଉଛନ୍ତି ଯିଏ ଜଣେ ଜାପାନୀ । ଆପଣ ତାଙ୍କ ସାମ୍ନାରେ ନିଜର ବ୍ୟବସାୟିକ ଚିନ୍ତାଧାରାକୁ ଉପସ୍ଥାପନ କରିବେ । କିନ୍ତୁ ଆପଣ ଇଂରାଜୀରେ ପାରଙ୍ଗମ ନୁହନ୍ତି, ତେଣୁ ଆପଣ ଇଂରାଜୀରେ ମଧ୍ୟ ନିଜର ବିଚାର ପ୍ରକଟ କରିପାରିବେ ନାହିଁ । ଏପରି କ୍ଷେତ୍ରରେ ଆପଣ କଣ କରିବେ ? ଏହାର ଉତ୍ତର ଅତି ସରଳ । ଆପଣ ଜଣେ ଅନୁବାଦକଙ୍କୁ ନିଯୁକ୍ତ କରିବ, ଯିଏ ଆପଣ ଓ ଆପଣଙ୍କ ଜାପାନୀ ନିବେଶକଙ୍କ ସହ ସହଯୋଗ ସ୍ଥାପନ କରିପାରିବେ ।

ପ୍ରୋଗ୍ରାମିଂ ଭାଷା ବା ପ୍ରୋଗ୍ରାମିଂ ଲାଙ୍ଗୁଏଜ ହେଉଛି ସେପରି ଏକ ସଂରଚନା ଭାଷା ଯାହାକି ଯନ୍ତ୍ରଗୁଡ଼ିକ ସହିତ ଯୋଗାଯୋଗ କରିବାକୁ ସକ୍ଷମ ହୋଇଥାଏ । ପ୍ରୋଗ୍ରାମର ନିଜ ପସନ୍ଦର ପ୍ରୋଗ୍ରାମିଂ ଭାଷାରେ ନିର୍ଦ୍ଦେଶକ୍ରମ ଲେଖନ୍ତି, ଏବଂ ତାପରେ ଏହା କମ୍ପ୍ୟୁଟର ଦ୍ୱାରା ବୁଝିବା ପାଇଁ ଅନୁବାଦକ ନାମକ ଏକ ପ୍ରୋଗ୍ରାମ୍ ଦ୍ୱାରା ମେସିନ୍ କୋଡ୍ କୁ ଅନୁବାଦ କରାଯାଇଥାଏ । ଏହିପରି ଭାବରେ ମେସିନ୍ଗୁଡ଼ିକର ପ୍ରୋଗ୍ରାମିଂ କାର୍ଯ୍ୟ କରେ ।

ଏଠାରେ ପ୍ରଶ୍ନ ଉଠିପାରେ ଯଦି ନିର୍ଦ୍ଦେଶଗୁଡ଼ିକ ମେସିନ୍ କୋଡ଼କୁ ଅନୁବାଦ କରାଯାଉଛି, ତେବେ ପ୍ରୋଗ୍ରାମିଂ ଭାଷାର ଆବଶ୍ୟକତା କଣ ପାଇଁ ରହିଛି । ଏବଂ ଆମେ ଇଂରାଜୀ ବା ଅନ୍ୟ କୌଣସି ମାତୃଭାଷାରେ କାହିଁକି ପ୍ରୋଗ୍ରାମିଂ କରିପାରିବା ନାହିଁ ଏବଂ ଏହାକୁ ବାଇନାରୀରେ ପରିଣତ କରିପାରିବା ନାହିଁ କାହିଁକି ?

ପ୍ରକୃତରେ ମଣିଷ କହୁଥିବା ପ୍ରାକୃତିକ ଭାଷା ହେଉଛି ଅସ୍ପଷ୍ଟ । ପ୍ରାକୃତିକ ଭାଷାଗୁଡ଼ିକରେ 'ପ୍ରସଙ୍ଗ ସମ୍ବେଦନଶୀଳତା' ବା କଂଟେକ୍ସଟ ସେନସିଟିଭିଟି' ନାମକ ଏକ ସ୍ୱତନ୍ତ୍ର ଗୁଣ ଅଛି, ଯାହା ପ୍ରସଙ୍ଗ ଉପରେ ନିର୍ଭର କରି ଏହାର ଅର୍ଥ ବଦଳିଥାଏ । ଉଦାହରଣ ସ୍ୱରୂପ ଆମେ ଇଂରାଜୀ ଭାଷାକୁ ନେଇପାରିବା । ପ୍ରସଙ୍ଗ, ମୁଖର ଅଭିବ୍ୟକ୍ତି, ଶାରୀରିକ ଭାଷା (ବଡ଼ି ଲାଙ୍ଗୁଏଜ) ଇତ୍ୟାଦି ଉପରେ ଆଧାର କରି ଆମେ ସମାନ ଶବ୍ଦ ଏବଂ ବାକ୍ୟର ଅର୍ଥକୁ କେତେଥର ବ୍ୟବହାର କରୁଛେ, ତାହା ଆମେ ଜାଣିଛେ ? ସଠିକ୍ ସାଙ୍କେତିକ ନିର୍ଦ୍ଦେଶନାମା ସୃଷ୍ଟି କରିବା ପାଇଁ ଏକ ଅନୁବାଦକ ପ୍ରୋଗ୍ରାମ କଠିନ ଏବଂ ଦ୍ରୁତ ନିୟମ ଆବଶ୍ୟକ କରେ । ଏବଂ କନଟେକ୍ସଟ ଫ୍ରି ଲାଙ୍ଗୁଏଜ ସଠିକ ସାଙ୍କେତିକ ନିର୍ଦ୍ଦେଶନାମା ସୃଷ୍ଟି କରେ । ପ୍ରୋଗ୍ରାମିଂ ଭାଷାଗୁଡ଼ିକର ବିକାଶ ହେବାର ଏହା ହେଉଛି ଏକ କାରଣ । ତେବେ ଏକ ଅନୁବାଦକ ତିଆରି କରିବା ଅସମ୍ଭବ ନୁହେଁ ଯାହା ପ୍ରାକୃତିକ ଭାଷାକୁ ମେସିନ୍-ପଠନୀୟ ବାଇନାରୀରେ ପରିଣତ କରିପାରିବ ।

ଟେକ୍ନୋଲୋଜିର ଅଗ୍ରଗତି ସହିତ, ପ୍ରୋଗ୍ରାମିଂ ଭାଷାଗୁଡ଼ିକ ଅଧିକ ସହଜ ଏବଂ ବେଳେବେଳେ ପ୍ରାକୃତିକ ଭାଷା ସଦୃଶ ହୋଇଥାଏ । ଏହି ସାଦୃଶ୍ୟତା ପ୍ରୋଗ୍ରାମିଂ ଭାଷାକୁ ଦୁଇ ଗୋଟି ଶ୍ରେଣୀରେ ଶ୍ରେଣୀଭୁକ୍ତ କରିଥାଏ, ଯାହାକୁ ଉଚ୍ଚସ୍ତରୀୟ ଭାଷା (ହାଇ - ଲେବଲ ଲାଙ୍ଗୁଏଜ) ଏବଂ ନିମ୍ନସ୍ତରୀୟ ଭାଷା (ଲୋ - ଲେବଲ ଲାଙ୍ଗୁଏଜ) କୁହାଯାଏ ।

ବେଳେବେଳେ ଗୋଟିଏ ପ୍ରଶ୍ନ ଆସେ ଯେ ଏହା କେତେ ଉପଯୋଗୀ ? ପ୍ରୋଗ୍ରାମିଂ ଭାଷାର ସ୍ତର କଣ ଏକ ଆପେକ୍ଷିକ ଶବ୍ଦ ହୋଇପାରେ । ଉଦାହରଣ ସ୍ୱରୂପ, C / C ++ ଆସେମ୍ବ୍ଲି ଭାଷା ଓ ବାଇନାରୀଠାରୁ ଅଧିକ କିନ୍ତୁ ପାଇଥନ୍ ଠାରୁ କମ୍ ଅଟେ । ଯେଉଁ ଭାଷାଗୁଡ଼ିକ ପ୍ରୋଗ୍ରାମରକୁ ଅଧିକ ସୁହାଇଥାଏ ତାକୁ ଆମେ ହାଇ ଲେବଲ ପ୍ରୋଗ୍ରାମିଂ ଲାଙ୍ଗୁଏଜ ବା ଉଚ୍ଚସ୍ତରୀୟ ଭାଷା କହିଥାଉ । ସେହପରି ଯେଉଁ ଭାଷାଗୁଡ଼ିକ ଯନ୍ତ୍ର ବା ମେସିନ ବୁଝିଥାଏ, ତାକୁ ଆମେ ଲୋ ଲେବଲ ପ୍ରୋଗ୍ରାମିଂ ଲାଙ୍ଗୁଏଜ ବା ନିମ୍ନସ୍ତରର ଭାଷା କହିଥାଉ । ଏହାକୁ ସାଧାରଣତଃ ମଧ୍ୟମ ସ୍ତରର ଭାଷା ବୋଲି କୁହାଯାଏ ।

ଅନୁବାଦକ

ଆମେ ଜାଣୁ ଯେ ଅନୁବାଦକ ହେଉଛି ଏକ ପ୍ରାେଗ୍ରାମ ଯାହା ମାନବ - ପଠନୀୟ ଭାଷାକୁ ମେସିନ୍ - ପଠନୀୟ କୋଡ଼ରେ ପରିଣତ କରେ । ଏହି ଅନୁବାଦକକୁ ତିନି ଭାଗରେ ବିଭକ୍ତ କରାଯାଇଛି ।

  1. କମ୍ପାଇଲର୍ସ (ସଙ୍କଳନକାରୀ)
  2. ଇଣ୍ଟରପ୍ରିଟର୍ସ (ଅନୁବାଦକ), ଏବଂ
  3. ଆସେମ୍ବଲର୍ସ (ସମାବେଶକାରୀ)

ଆସନ୍ତୁ ଜାଣିବା ସେମାନେ ପରସ୍ପରଠାରୁ କିପରି ଭିନ୍ନ ଅଟନ୍ତି ?

ଏକ କମ୍ପାଇଲର୍ ଏକ ଉଚ୍ଚସ୍ତରୀୟ ପ୍ରୋଗ୍ରାମିଂ ଭାଷାରେ ଲିଖିତ କୋଡ୍ କୁ ନିମ୍ନସ୍ତରୀୟ ପ୍ରୋଗ୍ରାମିଂ ଭାଷାରେ ରୂପାନ୍ତରଣ କରିଥାଏ (ଯଥା, ମେସିନ୍ କୋଡ୍ କିମ୍ବା ଅବଜେକ୍ଟ କୋଡ୍) । ଏହା ସମଗ୍ର ଉତ୍ସ କୋଡ୍ କୁ ଗୋଟିଏ କ୍ରମରେ ରୂପାନ୍ତର କରିଥାଏ ଏବଂ ରୂପାନ୍ତର ପରେ ଚିହ୍ନଟ ହୋଇଥିବା ତ୍ରୁଟିଗୁଡ଼ିକୁ ରିପୋର୍ଟ କରିଥାଏ । ଏହାର କାର୍ଯ୍ୟ ଟିକେ ମନ୍ଥର ରହିଥାଏ, କାରଣ ଏକାସାଙ୍ଗରେ ସମଗ୍ର କୋଡ୍ ଅନୁବାଦ ହୁଏ ଏବଂ ତା’ପରେ ଏହା ମେମୋରୀରେ ସଂରକ୍ଷିତ ହୁଏ । କମ୍ପାଇଲର୍ସ ପ୍ଲାଟଫର୍ମ ନିର୍ଭରଶୀଳ ଏବଂ ଶ୍ରେଣୀଭୁକ୍ତ, ଯେଉଁଠାରେ ଉତ୍ପାଦିତ କୋଡ୍ କାର୍ଯ୍ୟ କରେ । ଏହା ଟାର୍ଗେଟ୍ ପ୍ଲାଟଫର୍ମ ଭାବରେ ଜଣାଶୁଣା । ଏହା ପ୍ରୋସେସର ଉପରେ ମଧ୍ୟ ନିର୍ଭରଶୀଳ ହୋଇଥାଏ । ଏକ ନେଟିଭ କମ୍ପାଇଲରର ଆଉଟପୁଟ୍ ସମାନ ପ୍ରକାରର ମେସିନ୍ ଏବଂ ଅପରେଟିଙ୍ଗ ସିଷ୍ଟମ (OS)ରେ ଚାଲିବା ପାଇଁ ଉଦ୍ଦିଷ୍ଟ ଏବଂ ଏକ କ୍ରସ୍ କମ୍ପାଇଲରର ଆଉଟପୁଟ୍ ଭିନ୍ନ ଭିନ୍ନ ପ୍ଲାଟଫର୍ମରେ ଚାଲିବା ପାଇଁ ପ୍ରସ୍ତୁତ ହୋଇଛି ।

ଏକ କମ୍ପାଇଲର୍ ପରି ଏକ ଇଣ୍ଟରପ୍ରିଟର ମଧ୍ୟ ଏକ ଉଚ୍ଚସ୍ତରୀୟ ପ୍ରୋଗ୍ରାମିଂ ଭାଷାକୁ ଏକ ନିମ୍ନସ୍ତରୀୟ ପ୍ରୋଗ୍ରାମିଂ ଭାଷାରେ ରୂପାନ୍ତର କରେ । ଏହା କମ୍ପାଇଲର୍ ଅପେକ୍ଷା ତୀବ୍ର ଅଟେ । ଏହା ଏକ ସମୟରେ ଗୋଟିଏ ନିର୍ଦ୍ଦେଶ ପ୍ରଦାନ କରେ । ଏହା ତ୍ରୁଟି ସମ୍ପର୍କରେ ତୁରନ୍ତ ରିପୋର୍ଟ କରେ, ତେଣୁ ଏହାଦ୍ୱାରା ତ୍ରୁଟି ନିବାରଣ ସହଜ ହୋଇପାରେ । ଇଣ୍ଟରପ୍ରିଟର ସ୍ୱାଧୀନ ପ୍ରୋସେସର୍ ଅଟେ ।

ଆସେମ୍ବ୍ଲି ଭାଷା ହେଉଛି ନିର୍ଦ୍ଦିଷ୍ଟ କମ୍ପ୍ୟୁଟର ପାଇଁ ଏକ ନିମ୍ନସ୍ତରର ପ୍ରୋଗ୍ରାମିଂ ଭାଷା । ପ୍ରତ୍ୟେକ ଆସେମ୍ବଲି ଭାଷା ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ କମ୍ପ୍ୟୁଟର ସ୍ଥାପତ୍ୟ ପାଇଁ ଡିଜାଇନ୍ ହୋଇଛି ଏବଂ ପ୍ରତ୍ୟେକ ଆସେମ୍ବ୍ଲିର ନିଜସ୍ୱ ଆସେମ୍ବ୍ଲି ଭାଷା ଅଛି । ଏହା ଭାଷାକୁ ରୂପାନ୍ତର କରିବା ସହିତ ସିପିୟୁ ପାଇଁ ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ କମାଣ୍ଡ ବା ନିର୍ଦ୍ଦେଶ ପ୍ରଦାନ କରିଥାଏ ଯାହା ଭାଷାର ନେମୋନିକ୍ସକୁ ନିର୍ଦ୍ଦିଷ୍ଟ ସିପିୟୁ (CPU) ବୁଝୁଥିବା ନିର୍ଦ୍ଦେଶରେ ରୂପାନ୍ତର କରେ । ଏକ ଆସେମ୍ବଲର୍ ଆସେମ୍ବ୍ଲି ଭାଷା କୋଡ୍କୁ ନିମ୍ନସ୍ତରର ମେସିନ୍ କୋଡ୍ ରେ ରୂପାନ୍ତର କରେ ।

ଉପସଂହାର

“ରନ୍” ଉପରେ କ୍ଲିକ୍ କରିବା ଏବଂ କୋଡ୍ କାର୍ଯ୍ୟ କରିବା ମଧ୍ୟରେ ନିଶ୍ଚିତ ଭାବେ ଅନେକ ଷ୍ଟେପ୍ ବା ପ୍ରକ୍ରିୟା ରହିଥାଏ । କିନ୍ତୁ ମୂଳ ତତ୍ତ୍ୱକୁ ବୁଝିବା ଏବଂ ଆଗକୁ କ’ଣ ହେବାକୁ ଯାଉଛି ସେ ସମ୍ପର୍କରେ ଜାଣିବା ପାଇଁ କିଛି ବିଚାର ବା ଚିନ୍ତା କରିବାର ଆବଶ୍ୟକତା ରହିଛି । ସମୟ ଅନୁସାରେ ଆପଣମାନେ ଏହି ସହଜଲବ୍ଧ ତଥ୍ୟକୁ ପାଥେୟ କରି ଅନେକ ବଡ଼ ବଡ଼ କାମ ଯେପରିକି ଅପରେଟିଂ ସିଷ୍ଟମ୍, ମାଇକ୍ରୋ କଣ୍ଟ୍ରୋଲର୍ ଏବଂ ମାଇକ୍ରୋପ୍ରୋସେସର୍ ଭଳି ଅଧିକ ଉନ୍ନତ ଯନ୍ତ୍ର ନିର୍ମାଣ କରିପାରିବେ ।

Translated from The Language of Machines