পিএল/ওয়ান

পিএল/ওয়ান (প্রোগ্রামিং ল্যাঙ্গুয়েজ ১, কখনও কখনও পিএল/১ নামে লেখা হয়) একটি প্রক্রিয়াগত প্রোগ্রামিং এবং আজ্ঞাসূচক প্রোগ্রামিং কম্পিউটার প্রোগ্রামিং ভাষা, যা প্রাথমিকভাবে আইবিএম দ্বারা তৈরি। এটি বৈজ্ঞানিক, প্রকৌশল, ব্যবসা এবং সিস্টেম প্রোগ্রামিংয়ের জন্য ডিজাইন করা হয়েছে। ১৯৬০-এর দশকে প্রবর্তনের পর থেকে এটি একাডেমিক, বাণিজ্যিক এবং শিল্প সংস্থাগুলোর দ্বারা ধারাবাহিকভাবে ব্যবহৃত হয়ে আসছে।
পিএল/ওয়ান-এর এএনএসআই মান, এক্স৩.৫৩-১৯৭৬, ১৯৭৬ সালে প্রকাশিত হয়।
পিএল/ওয়ান-এর প্রধান ক্ষেত্রগুলো হলো ডেটা প্রসেসিং, সংখ্যাতাত্ত্বিক গণনা, বৈজ্ঞানিক কম্পিউটিং এবং সিস্টেম প্রোগ্রামিং। এটি পুনরাবৃত্তি, স্ট্রাকচারড প্রোগ্রামিং, লিংকড ডাটা স্ট্রাকচার পরিচালনা, ফিক্সড-পয়েন্ট অরিথমেটিক, ফ্লোটিং-পয়েন্ট, কমপ্লেক্স অরিথমেটিক, ক্যারেক্টার স্ট্রিং পরিচালনা এবং বিট স্ট্রিং পরিচালনাকে সমর্থন করে। ভাষার সিনট্যাক্স ইংরেজির মতো এবং জটিল ডেটা ফরম্যাট বর্ণনা করার জন্য উপযুক্ত, যেখানে এগুলো যাচাই এবং পরিচালনার জন্য বিস্তৃত ফাংশন ব্যাবহার করা যায়।
পিএল/ওয়ান প্রোগ্রামিং ভাষার কোডিং এর উদাহারণ:
/* Declare the variable */
DECLARE Year FIXED;
/* Assign a value to the variable */
Year = 2007;
/* Conditional check and output */
IF Year >= 2006 THEN
ELSE
আউটপুট:
» অনিকেত প্রান্তর আর্টসেলের সবচে জোস গান
১৯৫০ এবং ১৯৬০-এর দশকের শুরুতে, ব্যবসায়িক এবং বৈজ্ঞানিক ব্যবহারকারীরা বিভিন্ন কম্পিউটার হার্ডওয়্যারের জন্য আলাদা প্রোগ্রামিং ভাষা ব্যবহার করতেন। ব্যবসায়িক ব্যবহারকারীরা অটোকোডার থেকে কমট্রান এবং পরবর্তীতে কোবোল-এ অগ্রসর হন, অন্যদিকে বৈজ্ঞানিক ব্যবহারকারীরা ফোরট্রান, অ্যালগল, জর্জ এবং অন্যান্য ভাষায় প্রোগ্রাম করতেন। আইবিএম সিস্টেম/৩৬০ (১৯৬৪ সালে ঘোষণা এবং ১৯৬৬ সালে সরবরাহ) উভয় ব্যবহারকারীর জন্য একটি সাধারণ মেশিন আর্কিটেকচার হিসেবে ডিজাইন করা হয়, যা বিদ্যমান সমস্ত আইবিএম আর্কিটেকচার প্রতিস্থাপন করে। একইভাবে, আইবিএম চেয়েছিল একটি একক প্রোগ্রামিং ভাষা যা সমস্ত ব্যবহারকারীর প্রয়োজন মেটাবে। তারা আশা করেছিল যে ফোরট্রান বাণিজ্যিক প্রোগ্রামারদের প্রয়োজনীয় বৈশিষ্ট্য অন্তর্ভুক্ত করতে সম্প্রসারিত করা যেতে পারে।
অক্টোবর ১৯৬৩-এ একটি কমিটি গঠিত হয় যা মূলত নিউ ইয়র্কের তিনজন আইবিএম কর্মী এবং বৈজ্ঞানিক ব্যবহারকারীদের গ্রুপ শেয়ার-এর তিন সদস্য নিয়ে গঠিত হয়। কমিটি ফোর্ট্রান-এর এই সম্প্রসারণের প্রস্তাব দিয়েছিল। কিন্তু ফোর্ট্রান-এর সীমাবদ্ধতার কারণে এটি সম্ভব হয়নি এবং তারা অ্যালগল-ভিত্তিক একটি নতুন প্রোগ্রামিং ভাষা ডিজাইন শুরু করে, যার নাম ছিল এনপিএল।
এই নামটি যুক্তরাজ্যের ন্যাশনাল ফিজিক্যাল ল্যাবরেটরোরেটরন্যাশনাল ফিসিক্যাল ল্যাবরেটরি) সঙ্গে দ্বন্দ্ব তৈরি হয় এবং এটি সংক্ষেপে এমপিপিএল (মাল্টিপারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ) নামকরণ করা হয়। ১৯৬৫ সালে এর নাম পরিবর্তন করে পিএল/ওয়ান রাখা হয় (যেখানে আই একটি রোমান সংখ্যা)। এর প্রথম সংজ্ঞা ১৯৬৪ সালের এপ্রিল মাসে প্রকাশিত হয়।
আইবিএম এনপিএল-কে একটি সূচনা পয়েন্ট হিসেবে গ্রহণ করে এবং এর নকশা এমন একটি স্তরে উন্নীত করে যেখানে প্রথম কম্পাইলার লেখা সম্ভব হয়। NPL-এর সংজ্ঞা পরিধি এবং বিশদ বিবরণে অসম্পূর্ণ ছিল।
পিএল/ওয়ান ভাষার নিয়ন্ত্রণ প্রাথমিকভাবে নিউ ইয়র্ক প্রোগ্রামিং সেন্টারের হাতে এবং পরে আইবিএম ইউকে ল্যাবরেটরি, হার্সলিতে স্থানান্তরিত হয়।
শেয়ার এবং গাইড ব্যবহারকারী গ্রুপগুলো ভাষা সম্প্রসারণে জড়িত ছিল এবং তাদের পিএলআই প্রকল্পগুলোর মাধ্যমে আইবিএমের ভাষা নিয়ন্ত্রণ প্রক্রিয়ায় ভূমিকা রাখে। একটি বড় ভাষা সংজ্ঞায়িত করার অভিজ্ঞতা পিএল/ওয়ান-এর একটি আনুষ্ঠানিক সংজ্ঞার প্রয়োজনীয়তা দেখায়। ১৯৬৭ সালে আইবিএম ল্যাবরেটরি ভিয়েনায় একটি প্রকল্প চালু করা হয়, যার লক্ষ্য ছিল একটি স্পষ্ট এবং সম্পূর্ণ সংজ্ঞা তৈরি করা।
এটি পরবর্তীতে উন্নয়নের জন্য বৃহৎ আকারের প্রথম আনুষ্ঠানিক পদ্ধতিগুলোর একটি, ভিয়েনা ডেভেলপমেন্ট মেথড (ভিডিএম)-এর দিকে নিয়ে যায়।
ফ্রেড ব্রুকস পিএল/ওয়ান-এ CHARACTER ডেটা টাইপ নিশ্চিত করার জন্য কৃতিত্ব পেয়েছেন।
ভাষাটি প্রথমবার বিশদভাবে ১৯৬৫ সালে নিউ ইয়র্কে লেখা ম্যানুয়াল "পিএল/ওয়ান ল্যাঙ্গুয়েজ স্পেসিফিকেশন. সি২৮-৬৫৭১"-এ নির্ধারিত হয় এবং পরে ১৯৬৭ সালে হার্সলিতে লেখা "পিএল/ওয়ান ল্যাঙ্গুয়েজ স্পেসিফিকেশন. জিওয়াই৩৩-৬০০৩"-এর মাধ্যমে প্রতিস্থাপিত হয়। আইবিএম ৬০-এর দশকের শেষ এবং ৭০-এর দশকের শুরুতে পিএল/ওয়ান উন্নয়ন চালিয়ে যায় এবং এটি জিওয়াই৩৩–৬০০৩ ম্যানুয়ালে প্রকাশ করে। এই ম্যানুয়ালগুলোমাল্টিক্স গ্রুপ এবং অন্যান্য প্রাথমিক বাস্তবায়নকারীদের দ্বারা ব্যবহৃত হয়।
প্রথম কম্পাইলার ১৯৬৬ সালে সরবরাহ করা হয়। পিএল/ওয়ান-এর স্ট্যান্ডার্ড ১৯৭৬ সালে অনুমোদিত হয়।
পিএল/ওয়ান-এর লক্ষ্যসমূহ ভাষাটির প্রাথমিক উন্নয়ন চলাকালীন সময়ে বিকশিত হয়। কোবোল-এর রেকর্ড হ্যান্ডলিং এবং রিপোর্ট লেখার সাথে প্রতিযোগিতার জন্য এটি অপরিহার্য ছিল। ভাষাটির কার্যকারিতা বিস্তৃত হয়ে সিস্টেম প্রোগ্রামিং এবং ইভেন্ট-চালিত প্রোগ্রামিং-এর অন্তর্ভুক্ত হয়।
পিএল/ওয়ান-এর অতিরিক্ত লক্ষ্য ছিল: 
এই লক্ষ্য অর্জনের জন্য, পিএল/ওয়ান সমসাময়িক ভাষাগুলো থেকে ধারণা গ্রহণ করে এবং নতুন বৈশিষ্ট্য যোগ করে একটি সংক্ষিপ্ত এবং পাঠযোগ্য সিনট্যাক্স নিয়ে আসে। ভাষার বৈশিষ্ট্য এবং নীতিগুলো পিএল/ওয়ান-এর চরিত্র তৈরি করে এবং এর লক্ষ্য পূরণে গুরুত্বপূর্ণ ভূমিকা পালন করে:
পিএল/ওয়ান ভাষাটি এমনভাবে ডিজাইন করা হয়েছে যাতে এটি সমস্ত প্রোগ্রামারের প্রয়োজন মেটাতে সক্ষম হয়, ভাষাটি যেকোনো সমস্যায় প্রয়োগ করা হোক না কেন। এই সারাংশ এএনএসআই পিএল/ওয়ান এবং এএনএসআই পিএল/ওয়ান জেনারেল পারপাস সাবসেট স্ট্যান্ডার্ড General-Purpose Subset Standard থেকে নেওয়া হয়েছে।
একটি পিএল/ওয়ান প্রোগ্রাম একাধিক প্রোসিডিউর নিয়ে গঠিত, প্রতিটি প্রোসিডিউর বিবৃতিগুলোর একটি ক্রম হিসেবে লেখা হয়। codice_1 কন্সট্রাক্টটি প্রোগ্রাম অনুবাদের সময় অন্যান্য উৎস থেকে পাঠ্য অন্তর্ভুক্ত করতে ব্যবহৃত হয়। সমস্ত স্টেটমেন্ট টাইপ এখানে সংক্ষিপ্তভাবে উপস্থাপন করা হয়েছে, যা ভাষার একটি ওভারভিউ দেয় (স্ট্যান্ডার্ড এই গঠন ব্যবহার করে)।
নামগুলো নিম্নলিখিত ডেটা টাইপগুলোর প্রতিনিধিত্ব করতে ডিক্লেয়ার করা যেতে পারে, হয় একক মান হিসেবে বা অ্যারে আকারে, যেখানে প্রতিটি মাত্রার জন্য লোয়ার-বাউন্ড এবং আপার-বাউন্ড থাকে, বা স্ট্রাকচারের আকারে (নেস্টেড স্ট্রাকচার, অ্যারে এবং স্কেলার ভেরিয়েবলের সমন্বয়ে): 
codice_2 টাইপে নিম্নলিখিত বৈশিষ্ট্য রয়েছে: 
codice_3 টাইপের বেস, স্কেল, প্রিসিশন এবং স্কেল ফ্যাক্টর codice_4-এ এনকোড করা থাকে। মোডটি আলাদাভাবে নির্ধারিত হয় এবং codice_4 উভয় রিয়াল এবং ইমাজিনারি অংশে প্রয়োগ করা হয়।
মানগুলো নির্দিষ্ট অপারেশন এবং বিল্টইন ফাংশন ব্যবহার করে লেখা এক্সপ্রেশন দ্বারা গণনা করা হয়। এগুলো একক মানের পাশাপাশি অ্যাগ্রিগেটেও প্রয়োগ করা যায়। ব্যবহারকারী-নির্ধারিত প্রোসিডিউরগুলো একইভাবে অ্যাগ্রিগেট এবং একক মানের ওপর কাজ করতে পারে এবং সেগুলো রিটার্ন করতে পারে। অ্যাসাইনমেন্ট স্টেটমেন্ট এক বা একাধিক ভেরিয়েবলে মান অ্যাসাইন করে।
পিএল/ওয়ান-এ কোনো রিজার্ভড ওয়ার্ড নেই। একটি স্টেটমেন্ট সেমিকোলন দিয়ে শেষ হয়। স্টেটমেন্টের সর্বোচ্চ দৈর্ঘ্য নির্ধারিত হয় বাস্তবায়ন অনুযায়ী। কমেন্ট প্রোগ্রামের যেকোনো স্থানে উপস্থিত হতে পারে যেখানে স্পেস অনুমোদিত এবং এটি ফরওয়ার্ড স্ল্যাশ, অ্যাস্টেরিক্স দিয়ে শুরু হয় এবং অ্যাস্টেরিক্স, ফরওয়ার্ড স্ল্যাশ দিয়ে শেষ হয় (যেমন: codice_6)।
স্টেটমেন্টগুলোর আগে লেবেল-প্রিফিক্স থাকতে পারে, যা এন্ট্রি নাম (codice_7 এবং codice_8 স্টেটমেন্ট) বা লেবেল নাম পরিচয় করিয়ে দেয়। এটি একটি কন্ডিশন প্রিফিক্সও থাকতে পারে যা একটি গণনামূলক শর্ত সক্রিয় বা নিষ্ক্রিয় করে (যেমন: codice_9)। এন্ট্রি এবং লেবেল নামগুলো একক পরিচয় বা সাবস্ক্রিপ্ট লিস্টসহ পরিচয় হতে পারে (যেমন: codice_10)।
একটি স্টেটমেন্টের ক্রম একটি codice_11 স্টেটমেন্ট দ্বারা শুরু এবং codice_12 স্টেটমেন্ট দ্বারা শেষ হলে একটি "গ্রুপ" হয়ে যায়। গ্রুপগুলো নেস্টেড গ্রুপ এবং বিগিন ব্লক অন্তর্ভুক্ত করতে পারে। codice_13 স্টেটমেন্ট একটি গ্রুপ বা একক স্টেটমেন্টকে codice_14 অংশ এবং codice_15 অংশ হিসেবে নির্ধারণ করে। গ্রুপটি পুনরাবৃত্তির একক।
বিগিন ব্লক (codice_16) ব্লকের জন্য স্থানীয় নাম এবং অভ্যন্তরীণ প্রোসিডিউরের জন্য ডিক্লারেশন অন্তর্ভুক্ত করতে পারে। একটি প্রোসিডিউর codice_8 স্টেটমেন্ট দিয়ে শুরু হয় এবং codice_12 স্টেটমেন্ট দিয়ে গঠনগতভাবে শেষ হয়। একটি প্রোসিডিউরের দেহে ব্লক, গ্রুপ এবং স্টেটমেন্টের ক্রম থাকে এবং প্রোসিডিউরের জন্য স্থানীয় নাম এবং প্রোসিডিউরের বাইরের codice_19 নামের জন্য ডিক্লারেশন অন্তর্ভুক্ত থাকে।
একটি "ON-ইউনিট" হল একটি একক স্টেটমেন্ট বা স্টেটমেন্টের একটি ব্লক, যা একটি বা একাধিক "শর্ত" ঘটলে কার্যকর করার জন্য লেখা হয়।
একটি পরিচিতির ঘোষণায় নিম্নলিখিত বৈশিষ্ট্যগুলো থাকতে পারে (তবে এগুলো পারস্পরিকভাবে সামঞ্জস্যপূর্ণ হতে হবে): 
বর্তমান মাইক্রো ফোকাস এবং বিশেষত আইবিএম-এর কম্পাইলারগুলো স্ট্যান্ডার্ড সংস্করণের উপর ভিত্তি করে অনেক সম্প্রসারণ প্রয়োগ করে। আইবিএম এক্সটেন্ডেড কম্পাইলারের ইমপ্লিমেন্টেশন উপ-অংশে সংক্ষিপ্তভাবে উল্লেখ করা হয়েছে। যদিও কিছু সম্প্রসারণ এই কম্পাইলারগুলোর জন্য সাধারণ, একটি বর্তমান মানের অভাবের কারণে সামঞ্জস্যতা নিশ্চিত করা যায় না।
ভাষার স্ট্যান্ডার্ডাইজেশন ১৯৬৬ সালের এপ্রিল মাসে ইউরোপে ইউরোপিয়ান কম্পিউটার ম্যানুফ্যাকচারার্স অ্যাসোসিয়েশন (একমা) টিসি১০-এর মাধ্যমে শুরু হয়। ১৯৬৯ সালে আমেরিকান ন্যাশনাল স্ট্যান্ডার্ডস ইনস্টিটিউট (এএনএসআই) একটি "কম্পোজিট ল্যাঙ্গুয়েজ ডেভেলপমেন্ট কমিটি" গঠন করে, যা "Kludge" নামে পরিচিত ছিল এবং পরে এক্স৩জে১ পিএল/ওয়ান নামে পরিচিত হয়।
স্ট্যান্ডার্ডাইজেশন একমা টিসি/১০ এবং এএনএসআই এক্স৩জে১-এর একটি যৌথ প্রচেষ্টা হয়ে ওঠে। জিওয়াই৩৩-৬০০৩ ডকুমেন্টের একটি সাবসেট IBM-এর মাধ্যমে যৌথ প্রচেষ্টার কাছে প্রস্তাব করা হয় এবং এটি স্ট্যান্ডার্ডাইজেশনের ভিত্তি ডকুমেন্ট হয়ে ওঠে। ভিত্তি ডকুমেন্ট থেকে মূলত বহিষ্কৃত বৈশিষ্ট্যগুলোর মধ্যে ছিল কম্পিউটার মাল্টি-টাস্কিং এবং প্রোগ্রাম অপটিমাইজেশন বৈশিষ্ট্যের জন্য অ্যাট্রিবিউট (যেমন নরম্যাল এবং অ্যাবনরম্যাল)।
ভিত্তি ডকুমেন্ট পরিবর্তনের প্রস্তাব উভয় কমিটির মাধ্যমে ভোটের মাধ্যমে গৃহীত হয়। যদি কমিটিগুলোর মধ্যে মতানৈক্য হয়, তাহলে চেয়াররা, শুরুতে মাইকেল মার্কটি (জেনারেল মোটর্স) এবং সি.এ.আর. হোয়ার (ইন্টারন্যাশনাল কম্পিউটারস লিমিটেড) তা সমাধান করতেন। IBM ছাড়াও, হানিওয়েল, কন্ট্রোল ডাটা কর্পোরেশন, ডাটা জেনারেল, ডিজিটাল ইকুইপমেন্ট কর্পোরেশন, প্রাইম কম্পিউটার, বারোজ কর্পোরেশন, আরসিএ, এবং ইউনিভ্যাক X3J1-এ অংশগ্রহণ করেছিল। এছাড়া ইস্টম্যান কোডাক, মিত্র, ইউনিয়ন কার্বাইড, বেল ল্যাবরেটরিজ, এবং বিভিন্ন সরকারি ও বিশ্ববিদ্যালয় প্রতিনিধিও অংশ নেয়।
ভাষা উন্নয়নের সময়, কমিটি লক্ষ্য করে যে ইংরেজি পাঠ্য আকারে লেখা ডকুমেন্টে বেশ কিছু সমস্যা রয়েছে। একটি একক আইটেমের আলোচনা একাধিক স্থানে উপস্থিত হতে পারে, যা মাঝে মাঝে অসঙ্গতিপূর্ণ হতো। তাই ডেভিড বিচ (আইবিএম), রবার্ট ফ্রাইবার্ঘাউস (হানিওয়েল), মিলটন বারবার (সিডিসি), এম. ডোনাল্ড ম্যাকলারেন (আর্গোন ন্যাশনাল ল্যাবরেটরি), ক্রেইগ ফ্র্যাঙ্কলিন (ডাটা জেনারেল), লইস ফ্র্যাম্পটন (ডিজিটাল ইকুইপমেন্ট কর্পোরেশন), এবং সম্পাদক ডি.জে. অ্যান্ড্রুজ (আইবিএম) পুরো ডকুমেন্ট পুনরায় লিখতে উদ্যোগ নেন।
স্ট্যান্ডার্ডটি একটি "পিএল/ওয়ান মেশিন" ব্যবহার করে একটি সেমি-ফর্মাল সংজ্ঞা হিসেবে রচিত হয়। এটি ছিল প্রথম প্রোগ্রামিং ভাষা স্ট্যান্ডার্ড, যা সেমি-ফর্মাল সংজ্ঞা আকারে লেখা হয়।
একটি "পিএল/ওয়ান জেনারেল-পারপাস সাবসেট" ("সাবসেট-জি") স্ট্যান্ডার্ড এএনএসআই দ্বারা ১৯৮১ সালে প্রকাশিত হয় এবং এর একটি সংশোধনী ১৯৮৭ সালে প্রকাশিত হয়। এই জেনারেল-পারপাস সাবসেটটি পিএল/ওয়ান বাস্তবায়নের জন্য একটি মূল ভিত্তি হিসেবে ব্যাপকভাবে গ্রহণ করা হয়।