যান্ত্রিক ভাষা
কম্পিউটার বিজ্ঞানে যান্ত্রিক ভাষা (ইংরেজি: Machine code বা machine language) হচ্ছে এক ধরনের নিম্ন-স্তরের প্রোগ্রামিং ভাষা যা কোন কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিট বা সিপিইউ সরাসরি বুঝতে পারে। যান্ত্রিক ভাষা দ্বিমিক বা বাইনারি কোডে লেখা হয়, অর্থাৎ ০ ও ১-এর সমন্বয়ে যান্ত্রিক ভাষার বিভিন্ন নির্দেশগুলি লেখা হয়। এই নির্দেশগুলি কী হবে তা সিপিইউ-এর প্রস্তুতকারক কোম্পানি ও মডেলের উপর নির্ভর করে, যেমন- এএমডি প্রসেসরের জন্য যান্ত্রিক ভাষা ইন্টেল প্রসেসরের যান্ত্রিক ভাষার চেয়ে আলাদা। যান্ত্রিক ভাষায় প্রোগ্রাম লেখা অত্যন্ত দুরূহ। প্রোগ্রামারকে প্রতিটি বিটের হিসাব রাখতে হয়। কেবল ০ ও ১-এ লেখা বলে প্রোগ্রামের ভুলত্রুটি ধরতেও অসুবিধা হয়। মার্কিন গণিতবিদ গ্রেস মারি হপার ১৯৫২ সালে এই সমস্যাগুলি দূর করার লক্ষ্যে অ্যাসেম্বলি ভাষা উদ্ভাবন করেন। অ্যাসেম্বলি ভাষা থেকে যান্ত্রিক ভাষায় অনুবাদের জন্য বিশেষ ধরনের অনুবাদক প্রোগ্রাম ব্যবহার করা হয়, যাদের নাম দেয়া হয়েছে অ্যাসেম্বলার। অ্যাসেম্বিলি ভাষায় যান্ত্রিক ভাষার কিছু কিছু নির্দেশ বাইনারী সংখ্যায় প্যদারে বদলে সরাসরি ইঙরেজী ভাষায় প্রদান করা হত যেমন যোগ করার নির্দেশ প্রদান করতে হলে যান্ত্রিক ভাষায় 100010 লিখতে হত কিন্তু অ্যাসেম্বলি ভাষায় সরাসরি ADD লিখলেই চলত । বাইনারী সংখ্যা অর্থাৎ শুধুমাত্র 0 এবং 1 এর মাধ্যমে রচিত যে কম্পিউটার প্রোগ্রাম সরাসরি প্রথম প্রজন্মের ভাষা বলতে যান্ত্রিক ভাষাকে বোঝানো হয়। সেন্ট্রাল প্রসেসিং ইউনিট কর্তৃক নির্বাহিত হতে পারে তাকে যান্ত্রিক ভাষা বলে। কম্পিউটারে মৌলিক ভাষা বলতেই যান্ত্রিক ভাষাকে বোঝানো হয়। কম্পিউটারকে প্রদত্ত যে কোন নির্দেশনা যান্ত্রিক ভাষায় পরিবর্তন ব্যতীত নির্বাহ সম্ভব নয়। এ প্রেক্ষিতে এসেম্বলী ভাষা অথবা যে কোন উচ্চতর ভাষায় রচিত কম্পিউটার প্রোগ্রাম যান্ত্রিক ভাষায় রূপান্তরিত হবার মাধ্যমেই নির্বাহ করা হয়। যান্ত্রিক ভাষায় রচিত প্রোগ্রামকে অবজেক্ট প্রোগ্রাম (Object Program) এবং অন্যভাষায় রচিত প্রোগ্রামকে উৎস প্রোগ্রাম (Source Program) বলা হয়। কম্পিউটারের প্রোগ্রামিং ভাষার সূচনাতে বাইনারী কোডের মাধ্যমে এই যান্ত্রিক ভাষায় কম্পিউটারকে নির্দেশনা প্রদান করা হলেও এই প্রক্রিয়াটি ছিলো অত্যন্ত কষ্টকর, সময়সাপেক্ষ, ও ত্রুটিপূর্ণ। বাইনারী সংখ্যা মনে রাখা যেহেতু অনেকটা অসম্ভব, সেহেতু প্রোগ্রামিং এর ত্রুটির সম্ভাবনাও বেশি ছিল এবং ত্রুটি সনাক্তকরণও ছিলো অসম্ভব। মেশিন ভাষা এবং এসেম্বলী ভাষা যন্ত্রনির্ভর। অর্থাৎ, এক কোম্পানির কম্পিউটারের জন্য মেশিন ভাষা বা মেশিন নির্দেশ ও এসেম্বলী নির্দেশ এক নাও হতে পারে। উদাহরণস্বরূপ মেশিন কোড 00000101 দ্বারা সিপিইউ এর নামের প্রসেসর রেজিস্টার এর মান একক হ্রাস করার নির্দেশনা প্রদান করা হয়, যেটি এসেম্বলী ভাষায় DEC B নির্দেশের মাধ্যমে নির্দেশিত হয়। সাধারণত যান্ত্রিক ভাষার নির্দেশ অপারেশন কোড ফিল্ড, J-type (jump), I-type (immediate), R-type (register) এবং function এর সমন্বয়ে গঠিত হতে পারে। MIPS (32 Bit) আর্কিটেকচার অনুযায়ী register 1 এবং register 2 এ বিদ্যমান মান যোগ করে register 6 এ স্থাপনের জন্য মেশিন ভাষায় 000000 00001 00010 00110 00000 100000 নির্দেশ ব্যবহৃত হয়। রেজিস্টার register 3 এ যে মান বিদ্যমান রয়েছে সেটি থেকে থেকে 68 মেমরী সেল (Memory Cell) দূরতে বিদ্যমান মেমরী সেলে রক্ষিত মানটিকে register 8 এ load (সঞ্চালন) করার জন্য মেশিন ভাষায় 100011 00011 01000 00000 00001 000100 নির্দেশ প্রদান করা হয়। মেমরীর 1024 এড্রেসে Jump করার জন্য ব্যবহৃত মেশিন কোড হল 000010 00000 00000 00000 10000 000000।