প্ৰগ্ৰামিং ভাষা

**প্ৰগ্ৰামিং ভাষা** বা **প্ৰগ্ৰামিং লেংগুৱেজ** () হ’ল এটা কৃত্ৰিম ভাষা যাৰ দ্বাৰা কোনো এলগৰিথম প্ৰকাশ কৰিব পৰা যায় বা কম্পিউটাৰ প্ৰ’গ্ৰাম লিখিব পৰা যায়। এই ভাষাৰ দ্বাৰা কোনো এটা যন্ত্ৰৰ সৈতে সংযোগ স্থাপন কৰি তাক বিশেষ নিৰ্দেশ প্ৰদান কৰা হয়। এই ভাষা কম্পিউটাৰ প্ৰগ্ৰামিংত ব্যাৱহাৰ কৰা হয়। প্ৰগ্ৰামিং ভাষাৰ সহায়ত কোনো এলগৰিথম এটিক যন্ত্ৰৰ ব্যাৱহাৰিতা আৰু নিয়ন্ত্ৰণ কৰিব পাৰি। চমুকৈ, প্ৰগ্ৰামিং লেংগুৱেজ মানে কম্পিউটাৰক নিৰ্দেশনা প্ৰদান কৰিব পৰা এটা কৃত্ৰিম ভাষা। কম্পিউটাৰৰ এই প্ৰগ্ৰামিং ভাষা বা লেংগুৱেজক তিনিটা ভাগত ভগাব পাৰি-
#মেচিন লেংগুৱেজ (Machine Language),
#এচেম্বলি লেংগুৱেজ (Assembly Language), আৰু
#হাই-লেভেল লেংগুৱেজ (High-Level Language)

প্ৰগ্ৰামিং লেংগুৱেজৰ সংখ্যা অলেখ যদিও চি, জাভা, পাইথন আদি কেইটামান উল্লেখযোগ্য উদাহৰণ। 

কেইটিমান প্ৰোগ্ৰামিং ভাষাৰ উদাহৰণ:
* ভিজুৱেল বেচিক 
* ফৰট্ৰান 
* চি (C)
* চি++ 
* জাভা (Java)
* পাস্কেল (Pascal)
* পাইথন (Python)
* ৰুবি (Ruby)
* ক'ব'ল 
* জাভাস্ক্ৰীপ্ত 

প্ৰগ্ৰামিং ভাষাসমূহক ইয়াৰ বাক্য গঠন (ৰূপ) আৰু অৰ্থবিজ্ঞান (অৰ্থ)ৰ দ্বাৰা বৰ্ণনা কৰা হয়, সাধাৰণতে আনুষ্ঠানিক ভাষাৰ দ্বাৰা সংজ্ঞায়িত। ভাষাসমূহে সাধাৰণতে বৈশিষ্ট্যসমূহ যেনে এটা ধৰণ ব্যৱস্থাপ্ৰণালী, চলকসমূহ, আৰু ভুল নিয়ন্ত্ৰণৰ বাবে ব্যৱস্থাসমূহ প্ৰদান কৰে। প্ৰগ্ৰেমসমূহ এক্সিকিউট কৰিবলৈ এটা প্ৰগ্ৰামিং ভাষাৰ প্ৰণয়নৰ প্ৰয়োজন হয়, যেনে এটা দোভাষী বা এটা কম্পাইলাৰ। এটা দোভাষকে প্ৰত্যক্ষভাৱে উৎস ক'ড এক্সিকিউট কৰে, আনহাতে এটা কম্পাইলাৰে এটা এক্সিকিউটেবল প্ৰগ্ৰাম উৎপন্ন কৰে।

কম্পিউটাৰ আৰ্কিটেকচাৰে প্ৰগ্ৰামিং ভাষাৰ ডিজাইনত প্ৰবল প্ৰভাৱ পেলাইছে, জনপ্ৰিয় ভন নিউমেন আৰ্কিটেকচাৰত ভাল প্ৰদৰ্শন কৰিবলৈ আটাইতকৈ সাধাৰণ ধৰণৰ (আৱশ্যকীয় ভাষা—যিবোৰে এটা নিৰ্দিষ্ট ক্ৰমত কাৰ্য্যসমূহ প্ৰণয়ন কৰে) বিকশিত কৰা হৈছে। প্ৰাথমিক প্ৰগ্ৰামিং ভাষাসমূহ হাৰ্ডৱেৰৰ সৈতে ঘনিষ্ঠভাৱে জড়িত আছিল যদিও, সময়ৰ লগে লগে সিহঁতে অধিক সৰলতাৰ বাবে প্ৰণয়নৰ বিৱৰণ লুকুৱাবলৈ অধিক বিমূৰ্ততা বিকশিত কৰিছে।

হাজাৰ হাজাৰ প্ৰগ্ৰামিং ভাষা—সততে আৱশ্যকীয়, কাৰ্য্যকৰী, যুক্তি বা বস্তুমুখী হিচাপে শ্ৰেণীভুক্ত কৰা হৈছে—বিবিধ ব্যৱহাৰৰ বাবে বিকশিত কৰা হৈছে। প্ৰগ্ৰামিং ভাষা ডিজাইনৰ বহু দিশত ট্ৰেডঅফ জড়িত থাকে—উদাহৰণস্বৰূপে, ব্যতিক্ৰম নিয়ন্ত্ৰণে ভুল নিয়ন্ত্ৰণ সৰল কৰে, কিন্তু পৰিৱেশন খৰচত। প্ৰগ্ৰামিং ভাষা তত্ত্ব হৈছে কম্পিউটাৰ বিজ্ঞানৰ উপক্ষেত্ৰ যিয়ে প্ৰগ্ৰামিং ভাষাৰ ডিজাইন, ৰূপায়ণ, বিশ্লেষণ, বৈশিষ্ট্য নিৰ্ণয় আৰু শ্ৰেণীবিভাজনৰ বিষয়ে অধ্যয়ন কৰে।

## সংজ্ঞাসমূহ

প্ৰগ্ৰামিং ভাষা প্ৰাকৃতিক ভাষাৰ পৰা পৃথক কাৰণ প্ৰাকৃতিক ভাষা মানুহৰ মাজত পাৰস্পৰিক ক্ৰিয়া-কলাপৰ বাবে ব্যৱহাৰ কৰা হয়, আনহাতে প্ৰগ্ৰামিং ভাষা এনেদৰে ডিজাইন কৰা হয় যাতে মানুহে যন্ত্ৰৰ সৈতে নিৰ্দেশনা যোগাযোগ কৰিব পাৰে। 

কম্পিউটাৰ ভাষা শব্দটো কেতিয়াবা "প্ৰগ্ৰামিং ভাষা"ৰ সৈতে বিনিময়ত ব্যৱহাৰ কৰা হয়। কিন্তু লেখকৰ মাজত এই শব্দবোৰৰ ব্যৱহাৰ বেলেগ বেলেগ। 

এটা ব্যৱহাৰত প্ৰগ্ৰামিং ভাষাক কম্পিউটাৰ ভাষাৰ এটা উপগোট হিচাপে বৰ্ণনা কৰা হৈছে।  একেদৰে কম্পিউটিঙত ব্যৱহৃত কিন্তু প্ৰগ্ৰামিং ভাষা বুলি গণ্য নকৰা ভাষাক বুজাবলৈ "প্ৰগ্ৰামিং ভাষা" শব্দটোৰ বিপৰীতে "কম্পিউটাৰ ভাষা" শব্দটো ব্যৱহাৰ কৰিব পাৰি। বেছিভাগ ব্যৱহাৰিক প্ৰগ্ৰেমিং ভাষাই টুৰিং সম্পূৰ্ণ, আৰু সেইবাবেই ইহঁতে কি প্ৰগ্ৰাম গণনা কৰিব পাৰে তাৰ সমতুল্য। 

আন এটা ব্যৱহাৰে প্ৰগ্ৰামিং ভাষাক বিমূৰ্ত মেচিন প্ৰগ্ৰামিং কৰাৰ বাবে তাত্ত্বিক নিৰ্মাণ হিচাপে গণ্য কৰে আৰু কম্পিউটাৰ ভাষাক ভৌতিক কম্পিউটাৰত চলোৱা ইয়াৰ এটা উপগোট হিচাপে গণ্য কৰে, যিবোৰৰ সীমিত হাৰ্ডৱেৰ সম্পদ থাকে।জন চি ৰেইনল্ডছে জোৰ দি কয় যে আনুষ্ঠানিক নিৰ্দিষ্টকৰণ ভাষাসমূহ যিমানেই প্ৰগ্ৰামিং ভাষা সিমানেই এক্সিকিউচনৰ বাবে উদ্দেশ্য কৰা ভাষা। তেওঁ এইটোও যুক্তি আগবঢ়ায় যে কম্পিউটাৰৰ আচৰণত প্ৰভাৱ পেলোৱা টেক্সচুৱেল আৰু আনকি গ্ৰাফিকেল ইনপুট ফৰ্মেটসমূহ প্ৰগ্ৰামিং ভাষা, যদিও ই সাধাৰণতে টুৰিং-সম্পূৰ্ণ নহয়, আৰু মন্তব্য কৰে যে প্ৰগ্ৰামিং ভাষাৰ ধাৰণাসমূহৰ বিষয়ে অজ্ঞানতাই ইনপুট ফৰ্মেটত বহুতো ত্ৰুটিৰ কাৰণ।

## ইতিহাস
### প্ৰাথমিক উন্নয়ন
১৯৪০ চনৰ শেষৰ ফালে প্ৰথম প্ৰগ্ৰেমেবল কম্পিউটাৰ উদ্ভাৱন কৰা হয় আৰু ইয়াৰ লগে লগে প্ৰথম প্ৰগ্ৰেমিং ভাষাও উদ্ভাৱন কৰা হয়। আদিম কম্পিউটাৰবোৰ প্ৰথম প্ৰজন্মৰ প্ৰগ্ৰামিং ভাষা (১জিএল), মেচিন ভাষা (প্ৰচেছৰৰ দ্বাৰা প্ৰত্যক্ষভাৱে এক্সিকিউট কৰিব পৰা সৰল নিৰ্দেশনা)ত প্ৰগ্ৰেম কৰা হৈছিল। এই ক'ড ডিবাগ কৰাটো অতি কঠিন আছিল আৰু বিভিন্ন কম্পিউটাৰ চিষ্টেমৰ মাজত পৰ্টেবল নাছিল। প্ৰগ্ৰামিংৰ সহজতা উন্নত কৰিবলৈ মেচিন ভাষাৰ পৰা বিচ্ছিন্ন হৈ এছেম্বলি ভাষা (বা দ্বিতীয় প্ৰজন্মৰ প্ৰগ্ৰামিং ভাষা—২জিএল) উদ্ভাৱন কৰা হয়, যাতে মানুহৰ বাবে প্ৰগ্ৰেমসমূহ সহজে বুজিব পৰা যায়, যদিও ইয়াৰ দ্বাৰা পৰ্টেবিলিটি বৃদ্ধি কৰা হোৱা নাছিল।

প্ৰথম অৱস্থাত হাৰ্ডৱেৰ সম্পদ দুৰ্লভ আৰু ব্যয়বহুল আছিল, আনহাতে মানৱ সম্পদ কম আছিল। সেয়েহে ব্যৱহাৰ কৰিবলৈ সময়সাপেক্ষ, কিন্তু অধিক কাৰ্যক্ষমতাৰ বাবে হাৰ্ডৱেৰৰ ওচৰত থকা জটিল ভাষাক অনুকূল কৰা হৈছিল।  
উচ্চ পৰ্যায়ৰ প্ৰগ্ৰেমিং ভাষা (তৃতীয় প্ৰজন্মৰ প্ৰগ্ৰেমিং ভাষা—৩জিএল)ৰ প্ৰৱৰ্তনে প্ৰগ্ৰেমিংত এক বৈপ্লৱিক পৰিৱৰ্তন আনিলে। এই ভাষাবোৰে হাৰ্ডৱেৰৰ সবিশেষবোৰ বিমূৰ্ত কৰি পেলাইছিল, ইয়াৰ পৰিৱৰ্তে মানুহে অধিক সহজে বুজিব পৰা এলগৰিদম প্ৰকাশ কৰিবলৈ ডিজাইন কৰা হৈছিল। উদাহৰণস্বৰূপে, গাণিতিক অভিব্যক্তিসমূহ এতিয়া প্ৰতীকী সংকেতত লিখিব পাৰি আৰু পিছলৈ মেচিন ক'ডলৈ অনুবাদ কৰিব পাৰি যিটো হাৰ্ডৱেৰে এক্সিকিউট কৰিব পাৰে। ১৯৫৭ চনত ফৰ্ট্ৰান (FORmula TRANslation) আৱিষ্কাৰ হয়। প্ৰায়ে প্ৰথম সংকলিত উচ্চ পৰ্যায়ৰ প্ৰগ্ৰেমিং ভাষা বুলি গণ্য কৰা হয়, ফৰ্ট্ৰান একবিংশ শতিকালৈকে ব্যৱহাৰ হৈ আছে।

### ১৯৬০ আৰু ১৯৭০ চনৰ দশক

১৯৬০ চনৰ আশে-পাশে প্ৰথম মেইনফ্ৰেম—সাধাৰণ উদ্দেশ্যৰ কম্পিউটাৰ—বিকশিত কৰা হয় যদিও ইয়াক কেৱল পেছাদাৰী ব্যক্তিয়েহে চলাব পাৰিছিল আৰু খৰচ আছিল অত্যন্ত। ডাটা আৰু নিৰ্দেশনাসমূহ পাঞ্চ কাৰ্ডৰ দ্বাৰা ইনপুট কৰা হৈছিল, অৰ্থাৎ প্ৰগ্ৰেম চলি থকাৰ সময়ত কোনো ইনপুট যোগ কৰিব পৰা নাছিল। এই সময়ত বিকশিত হোৱা ভাষাসমূহ সেয়েহে নূন্যতম পাৰস্পৰিক ক্ৰিয়াৰ বাবে ডিজাইন কৰা হৈছে।   মাইক্ৰ'প্ৰচেছৰ আৱিষ্কাৰৰ পিছত ১৯৭০ চনত কম্পিউটাৰৰ মূল্য নাটকীয়ভাৱে সস্তা হৈ পৰে। নতুন কম্পিউটাৰেও অধিক ব্যৱহাৰকাৰীৰ পাৰস্পৰিক ক্ৰিয়াৰ অনুমতি দিছিল, যিটো নতুন প্ৰগ্ৰামিং ভাষাৰ দ্বাৰা সমৰ্থিত হৈছিল।

১৯৫৮ আৰু ১৯৬০ চনত ALGOL (ALGOrithmic Language) মুক্তি পোৱাৰ পিছত, ই এলগৰিদমৰ বৰ্ণনাৰ বাবে কম্পিউটিং সাহিত্যত প্ৰামাণিক হৈ পৰে। যদিও ইয়াৰ বাণিজ্যিক সফলতা সীমিত আছিল, বেছিভাগ জনপ্ৰিয় আৱশ্যকীয় ভাষা—C, Pascal, Ada, C++, Java, আৰু C#কে ধৰি—প্ৰত্যক্ষ বা পৰোক্ষভাৱে ALGOL 60 ৰ পৰা অহা।

### ১৯৮০ৰ পৰা ২০০০ চনলৈকে

১৯৮০ চনৰ ভিতৰত ব্যক্তিগত কম্পিউটাৰৰ আৱিষ্কাৰে প্ৰগ্ৰামিং ভাষা ব্যৱহাৰ কৰা ভূমিকাসমূহৰ ৰূপান্তৰ ঘটায়। ১৯৮০ চনত প্ৰৱৰ্তিত নতুন ভাষাসমূহৰ ভিতৰত আছিল C++, C ৰ এটা চুপাৰছেট যিয়ে C প্ৰগ্ৰেমসমূহ কম্পাইল কৰিব পাৰে কিন্তু ক্লাছ আৰু উত্তৰাধিকাৰো সমৰ্থন কৰে। আডা আৰু অন্যান্য নতুন ভাষাই সমকালীনতাৰ বাবে সমৰ্থন প্ৰৱৰ্তন কৰে। জাপান চৰকাৰে তথাকথিত পঞ্চম প্ৰজন্মৰ ভাষাসমূহত যথেষ্ট বিনিয়োগ কৰিছিল যিয়ে লজিক প্ৰগ্ৰামিং কনষ্ট্ৰাক্টত সমকালীনতাৰ বাবে সমৰ্থন যোগ কৰিছিল, কিন্তু এই ভাষাসমূহে অন্যান্য সমকালীনতা সমৰ্থনকাৰী ভাষাসমূহতকৈ বেছি প্ৰদৰ্শন কৰিছিল।

### ২০০০ৰ দশকৰ পৰা বৰ্তমানলৈকে
২০০০ চনৰ সময়ছোৱাত নতুন প্ৰগ্ৰামিং ভাষাৰ বিকাশত মন্থৰতা আহিল যিয়ে ব্যাপক জনপ্ৰিয়তা লাভ কৰে। 
এটা উদ্ভাৱন আছিল সেৱা-মুখী প্ৰগ্ৰামিং, যিটো বিতৰণ কৰা ব্যৱস্থাপ্ৰণালীৰ শোষণ কৰিবলৈ ডিজাইন কৰা হৈছিল যাৰ উপাদানসমূহ এটা নেটৱৰ্কৰ দ্বাৰা সংযুক্ত। সেৱাসমূহ বস্তুভিত্তিক প্ৰগ্ৰামিং বস্তুৰ সৈতে একে, কিন্তু এটা পৃথক প্ৰক্ৰিয়াত চলে।  
C# আৰু F#-এ আৱশ্যকীয় আৰু কাৰ্য্যকৰী প্ৰগ্ৰামিংৰ মাজত ধাৰণাসমূহক ক্ৰছ-পৰগাছা কৰে।
২০১০ চনৰ পিছত কেইবাটাও নতুন ভাষা—ৰাষ্ট, গ', চুইফট, জিগ আৰু কাৰ্বনে—পাৰফৰমেন্স-ক্ৰিটিকেল চফ্টৱেৰৰ বাবে প্ৰতিযোগিতাত অংশগ্ৰহণ কৰে যাৰ বাবে ঐতিহাসিকভাৱে চি ব্যৱহাৰ কৰা হৈছিল। নতুন প্ৰগ্ৰামিং ভাষাৰ বেছিভাগেই ষ্টেটিক টাইপিং ব্যৱহাৰ কৰে আনহাতে কেইটামান নতুন ভাষাই ৰিং আৰু জুলিয়াৰ দৰে ডাইনামিক টাইপিং ব্যৱহাৰ কৰে।

## লগতে চাওক
* চি (প্ৰগ্ৰামিং লেংগুৱেজ)
* জাভা

## লগতে পঢ়ক

* 
* Raphael Finkel: *[http://www.nondot.org/sabre/Mirrored/AdvProgLangDesign/ Advanced Programming Language Design] *, Addison Wesley 1995.
* Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: *[[Essentials of Programming Languages]]*, The MIT Press 2001.
* Maurizio Gabbrielli and Simone Martini: "Programming Languages: Principles and Paradigms", Springer, 2010.
* David Gelernter, Suresh Jagannathan: *Programming Linguistics*, The MIT Press 1990.
* Ellis Horowitz (ed.): *Programming Languages, a Grand Tour* (3rd ed.), 1987.
* Ellis Horowitz: *Fundamentals of Programming Languages*, 1989.
* Shriram Krishnamurthi: *[[Programming Languages: Application and Interpretation]]*, online publication.
* Bruce J. MacLennan: *Principles of Programming Languages: Design, Evaluation, and Implementation*, Oxford University Press 1999.
* John C. Mitchell: *Concepts in Programming Languages*, Cambridge University Press 2002.
* Benjamin C. Pierce: *[[Types and Programming Languages]]*, The MIT Press 2002.
* Terrence W. Pratt and Marvin V. Zelkowitz: *Programming Languages: Design and Implementation* (4th ed.), Prentice Hall 2000.
* Peter H. Salus. *Handbook of Programming Languages* (4 vols.). Macmillan 1998.
* Ravi Sethi: *Programming Languages: Concepts and Constructs*, 2nd ed., Addison-Wesley 1996.
* Michael L. Scott: *Programming Language Pragmatics*, Morgan Kaufmann Publishers 2005.
* Robert W. Sebesta: *Concepts of Programming Languages*, 9th ed., Addison Wesley 2009.
* Franklyn Turbak and David Gifford with Mark Sheldon: *Design Concepts in Programming Languages*, The MIT Press 2009.
* Peter Van Roy and Seif Haridi. *[[Concepts, Techniques, and Models of Computer Programming]]*, The MIT Press 2004.
* David A. Watt. *Programming Language Concepts and Paradigms*. Prentice Hall 1990.
* David A. Watt and Muffy Thomas. *Programming Language Syntax and Semantics*. Prentice Hall 1991.
* David A. Watt. *Programming Language Processors*. Prentice Hall 1993.
* David A. Watt. *Programming Language Design Concepts*. John Wiley & Sons 2004.

## তথ্য সংগ্ৰহ

## বাহ্যিক সংযোগ

* 99 Bottles of Beer A collection of implementations in many languages.
* 

শ্ৰেণী:পোখালি (কম্পিউটাৰ বিজ্ঞান)
শ্ৰেণী:কম্পিউটাৰ বিজ্ঞান
*