ML/I
এমএল/1 (ম্যাক্রো ল্যাঙ্গুয়েজ/ওয়ান) একটি শক্তিশালী সাধারণ উদ্দেশ্যের ম্যাক্রো প্রসেসর। এম. এল/1-এর সাধারণ ব্যবহারগুলির মধ্যে রয়েছেঃ একটি প্রোগ্রামিং ভাষা থেকে অন্য একটি প্রোগ্রামিং ভাষায় সোর্স কোড অনুবাদ করে টেক্সট ফাইলগুলি সম্পাদনা, সংশোধন, সংশোধন বা পুনরায় গঠন করা যা একটি সোর্স-কোড প্রিপ্রোসেসর হিসাবে কাজ করে যাতে ব্যবহারকারী একটি বিদ্যমান প্রোগ্রামিং ভাষায় নতুন সিনট্যাক্টিক ফর্ম যুক্ত করতে পারে যা প্রোগ্রাম সোর্স-কোড প্যারামিটারাইজেশনকে সমর্থন করে (যেমন। একটি পরামিতি নির্ধারণ করতে পারে যে ডিবাগিং বিবৃতিগুলি প্রোগ্রামের সোর্স কোডে অন্তর্ভুক্ত করা হবে কিনা যা সংকলককে দেওয়া হয়) এমএল/1 1966 সালে পিটার জে দ্বারা তৈরি করা হয়েছিল। ইংল্যান্ডের কেমব্রিজ বিশ্ববিদ্যালয়ে পিএইচডি গবেষণার অংশ হিসাবে ব্রাউন। 1984 সালে, কেন্ট বিশ্ববিদ্যালয়ের পিটার ব্রাউনের সহকর্মীদের মধ্যে একজন রবার্ট ডি. ইগার, 1981 সালে বিসিপিএল-এ এবং পরে 1984 সালে সি-তে এমএল/আই পুনর্লিখন করেন, যা এর বহনযোগ্যতা বৃদ্ধি করে। লক্ষ্য করুন যে পিটার ব্রাউনের ভাষার আসল নাম ছিল এমএল/আই, যেখানে (আইবিএম-এর পিএল/আই-এর মতো) শেষ অক্ষরটি রোমান সংখ্যা "আই", আরবি সংখ্যা "1" নয়। তবে পরবর্তী বেশিরভাগ প্রয়োগকে এমএল/1 বলা হয় (যেখানে শেষ অক্ষরটি আরবি সংখ্যা "1")। তারপর থেকে, ভিএমএস, এমভিএস, এমএস-ডস, ওএস/2 এবং ইউনিক্স সহ অনেক প্ল্যাটফর্ম এবং অপারেটিং সিস্টেমে এমএল/1 পোর্ট করা হয়েছে। এম. এল/1-এর বাস্তবায়নে, বব ইগার পিটার ব্রাউনের গবেষণাপত্রে মূলত নির্দিষ্ট বৈশিষ্ট্য এবং ক্ষমতা যোগ করেছেন। এই সংস্করণটি এমএল/1 ওয়েবসাইট, http://www.ml1.org.uk-এর মাধ্যমে একাধিক প্ল্যাটফর্মের জন্য উপলব্ধ। এমএল/1 ওয়েবসাইটটি এমএল/1 সম্পর্কে আরও তথ্য সরবরাহ করে, পাশাপাশি ডকুমেন্টেশন (একটি টিউটোরিয়াল, সহজ প্রারম্ভিক গাইড এবং সম্পূর্ণ ব্যবহারকারী ম্যানুয়াল সহ) প্রদান করে। যদিও বিশ্বে এমএল/1 ব্যবহারকারীর মোট সংখ্যা কম, সারা বিশ্বে এমএল/1 ব্যবহারকারী রয়েছে এবং বব মার্কিন যুক্তরাষ্ট্র, কানাডা, অস্ট্রেলিয়া, নিউজিল্যান্ড, জার্মানি, হল্যান্ড এবং ভারতে এমএল/1 ব্যবহারকারীদের সাথে যোগাযোগ করেছে। 1976 সালের একটি গবেষণাপত্রে, অ্যান্ড্রু এস. ট্যানেনবাউম এম. এল/আই-কে সংকলক-সংকলক হিসাবে ব্যবহার করার বর্ণনা দিয়েছেন। সংক্ষিপ্ত বিবরণ এমএল/আই সম্পূর্ণ বিনামূল্যে ইনপুট গ্রহণ করে, তথ্যকে লাইন বা রেকর্ডের একটি সিরিজের পরিবর্তে বাইটের একটি প্রবাহ হিসাবে বিবেচনা করে। ম্যাক্রো সম্প্রসারণ নির্দেশ করার জন্য কোনও নির্দিষ্ট পতাকার প্রয়োজন হয় না, যা এটিকে নির্বিচারে পাঠ্য প্রক্রিয়াকরণের জন্য বিশেষভাবে কার্যকর করে তোলে। পাঠ্যের প্রতিস্থাপন সহজ হতে পারে (যেমন। পি. আই. জি-কে ডি. ও. জি দ্বারা প্রতিস্থাপিত করতে হবে) অথবা জটিল (যেমন। শেষ পূর্ণ বিরতির পরে তৃতীয় এবং চতুর্থ কমার মধ্যে আইটেমটি কিছু কাউন্টারের বিষয়বস্তু দ্বারা প্রতিস্থাপন করুন)। এমএল/আই পোর্টেবল সফ্টওয়্যারের বেশ কয়েকটি আইটেম বাস্তবায়নের জন্য ব্যবহৃত হয়েছিল, যার মধ্যে এটিও ছিল। এটি মূলত একটি বিশেষ বর্ণনামূলক ভাষায় লেখা হয়েছিল, তারপরে প্রতিটি লক্ষ্য ব্যবস্থার জন্য উপযুক্ত ভাষায় ম্যাপ করা হয়েছিল। এই ম্যাপিংটি এমএল/আই ব্যবহার করে করা হয়েছিল। এই বর্ণনামূলক ভাষার দুটি ভিন্ন রূপ ছিল; উচ্চ স্তর এবং নিম্ন স্তর। এই ম্যাপিংয়ের পরে এমএল/আই প্রায়শই 16-বিট স্থাপত্যের মিনি কম্পিউটারের নতুন প্রজন্মের জন্য এসআইএল (সিস্টেম বাস্তবায়ন ভাষা, যেমন সি) বাস্তবায়নের জন্য ব্যবহৃত হত। এমএল/1 কিভাবে কাজ করে সবচেয়ে মৌলিক ভাষায়, এখানে এমএল/1 কিভাবে কাজ করে। ব্যবহারকারী ইনপুট টেক্সট সম্বলিত একটি ফাইল সহ এমএল/1 সরবরাহ করে। অন্য একটি ফাইলে (অথবা, ঐচ্ছিকভাবে, একই ফাইলে) ব্যবহারকারী এমএল/1 ম্যাক্রোর একটি সেট সরবরাহ করে। ম্যাক্রো এমএল/1 দোভাষীকে বলে যে ব্যবহারকারী ইনপুট পাঠ্যে কী সন্নিবেশ, মুছে ফেলা, সম্প্রসারণ, অনুবাদ এবং অন্যান্য পরিবর্তন করতে চায়। যখন ইনপুট টেক্সটে এমএল/1 চালানো হয়, তখন এমএল/1 এমএল/1 ম্যাক্রোর নির্দেশাবলী অনুসরণ করে, টেক্সট পরিবর্তন করে এবং পরিবর্তিত টেক্সট সহ একটি নতুন ফাইল লেখে। এম. এল/1-এর স্বতন্ত্র বৈশিষ্ট্যগুলি এমন বেশ কয়েকটি উপায় রয়েছে যার মধ্যে এম. এল/1 সহজ "স্ক্যান এবং প্রতিস্থাপন" ইউটিলিটিগুলির চেয়ে বেশি শক্তিশালী। এমএল/1 অক্ষর-স্ট্রিং ভিত্তিতে পাঠ্য প্রক্রিয়াকরণ করে না; এটি একটি শব্দের উপর শব্দ দ্বারা পাঠ্য প্রক্রিয়াকরণ করে (অথবা, এমএল/1 এর পরিভাষায়, "পরমাণু দ্বারা পরমাণু" ভিত্তিতে)। অনেক প্রয়োগের জন্য, একটি পাঠ্যকে অক্ষরের ক্রমের পরিবর্তে পরমাণুর ক্রম হিসাবে প্রক্রিয়া করতে সক্ষম হওয়া অত্যন্ত কার্যকর। উদাহরণস্বরূপ, ধরুন, আমরা একটি প্রোগ্রামিং ভাষা থেকে একটি প্রোগ্রাম অনুবাদ করতে চাই যার একটি ডি. ও. এন্ড সিনট্যাক্স রয়েছে, এমন একটি ভাষায় যার একটি বি. ই. জি. আই. এন. এন্ড সিনট্যাক্স রয়েছে। তাই আমরা "ডু" কে "বিগিন" দিয়ে প্রতিস্থাপন করতে চাই। যদি আমরা একটি সাধারণ স্ক্যান-এবং-প্রতিস্থাপন ইউটিলিটি দিয়ে প্রতিস্থাপন করি, তবে "ডিও" স্ট্রিংয়ের সমস্ত ঘটনা "শুরু"-এ পরিবর্তিত হবে, যার মধ্যে "নথি" (যা "শুরু" হয়ে যাবে) এর মতো শব্দের মধ্যে এম্বেড করা যে কোনও "ডিও" রয়েছে। এমএল/1-এর ক্ষেত্রে, এর বিপরীতে, এটি ঘটবে না কারণ "ডিও" স্ট্রিংটি কেবল তখনই পাঠ্য-প্রতিস্থাপনকে ট্রিগার করবে যখন এটি একটি শব্দ হিসাবে উপস্থিত হয় (অর্থাৎ, যখন এটি স্পেস, ট্যাব, নতুন লাইন বা বিরামচিহ্ন অক্ষরের মতো সীমানা দ্বারা পূর্ববর্তী এবং অনুসরণ করা হয়)। এমএল/1, লাইন-বাই-লাইন ভিত্তিতে কাজ করার পরিবর্তে, পাঠ্যের নিদর্শনগুলিকে স্বীকৃতি দেয় যা বেশ জটিল, নেস্টেড, একাধিক সীমানা সহ এবং অনেক লাইন বিস্তৃত হতে পারে। উদাহরণস্বরূপ, এম. এল/1 সাধারণ প্রোগ্রামিং ভাষা আই. এফ. থেন-এর মতো একটি প্যাটার্ন প্রক্রিয়া করতে পারে। ELSE. ENDIF কাঠামো যা একাধিক লাইন বিস্তৃত করে এবং এতে এমবেডেড টেক্সট থাকে যা নিজেই একটি নেস্টেড IF অন্তর্ভুক্ত করতে পারে। ELSE. ENDIF কাঠামো। এম. এল/1 অন্তর্নির্মিত মন্তব্য এবং আক্ষরিক উদ্ধৃতিগুলি চিনতে পারে এবং সেগুলিকে পরিবর্তন থেকে রক্ষা করতে পারে। সাধারণ স্ক্যান-এবং-প্রতিস্থাপন ইউটিলিটিগুলি নির্বিচারে স্ট্রিং পরিবর্তন করে, সেগুলি প্রোগ্রামের পাঠ্যে কীওয়ার্ড বা পরিবর্তনশীল নাম হিসাবে, কোনও মন্তব্যে এম্বেড করা বা উদ্ধৃত আক্ষরিক হিসাবে ঘটে। এই ধরনের জটিল প্যাটার্নগুলি মোকাবেলা করার জন্য, এম. এল/1-কে নিজস্বভাবে একটি প্রোগ্রামিং ভাষা হতে হবে। অন্যান্য প্রোগ্রামিং ভাষার মতো, এমএল/1 ভেরিয়েবল এবং অ্যাসাইনমেন্ট স্টেটমেন্ট, জিওটিও এবং লেবেল, আইএফ সমর্থন করে। তারপর পরীক্ষা এবং লুপ। এই বৈশিষ্ট্যগুলি এমএল/1-কে একটি অস্বাভাবিক মাত্রার শক্তি এবং নমনীয়তা দেয়। সীমাবদ্ধতা এমএল/1 কেস-সংবেদনশীল, তাই এটি কেস-অসংবেদনশীল পাঠ্য প্রক্রিয়াকরণকে সমর্থন করে না। তথ্যসূত্র বাহ্যিক লিঙ্ক http://www.ml1.org.uk ম্যাক্রো প্রোগ্রামিং ভাষা