এটা তোলে ধরনের প্রশ্নের উত্তর করা কঠিন "হয় এক্স একটি ওয়াই ", যদি এর বিতর্ক ব্যবহার নির্ভরশীল অংশগ্রহণকারীদের এক্স এবং ওয়াই । এটি হতে পারে যে কয়েকটি সংজ্ঞার জন্য উত্তরটি হ্যাঁ "হ্যাঁ", এবং কিছু সংজ্ঞার জন্য উত্তরটি "না" হয়। বিশেষত যদি উত্তরটি বিভিন্ন সংজ্ঞা পৃথক করে এমন প্রযুক্তিগত তথ্যের উপর নির্ভর করে । এছাড়াও এই আলোচনায় কিছু ভুল তথ্য রয়েছে, সুতরাং দয়া করে দীর্ঘ উত্তর দিয়ে ধৈর্য ধরুন।
" প্রোগ্রামিং ল্যাঙ্গুয়েজ " বলতে আমরা কী বুঝি ?
একটি সহজ উত্তর "প্রোগ্রাম তৈরি করতে ব্যবহৃত একটি ভাষা" হতে পারে। অবশ্যই, তবে: কি ধরণের প্রোগ্রাম? এমন কোনও ভাষা সম্পর্কে যা কিছু ধরণের প্রোগ্রাম তৈরিতে ব্যবহৃত হতে পারে তবে অন্যান্য ধরণের প্রোগ্রাম নয়? চরম ঘটনাগুলি চিত্রিত করার জন্য এখানে দুটি নির্দিষ্ট উদাহরণ দেওয়া হল:
1) এম নামে একটি কাল্পনিক ভাষা এইভাবে কাজ করে: প্রোগ্রামটিতে যদি "m" একক অক্ষর থাকে তবে এটি মাইনসুইপারের একটি খেলা তৈরি করে। বাকি সমস্ত একটি বাক্য গঠন ত্রুটি।
স্বজ্ঞাতভাবে বলতে গেলে, "প্রোগ্রামিং ল্যাঙ্গুয়েজ" বলার অর্থ এই নয় । তবে এম এর বিপণন বিভাগ যুক্তি দিতে পারে যে এটি প্রযুক্তিগতভাবে সংজ্ঞাটি পূরণ করে, কারণ এটি একটি প্রোগ্রাম তৈরি করতে ব্যবহার করা যেতে পারে। অবশ্যই, সংকলকটি আপনার জন্য কিছু সমালোচনাপূর্ণ অংশ করে, তবে এটি সংকলকরা তাই করেন, তাই না? সি ভাষার একটি সংকলক কয়েকগুলি সহজ শব্দের কয়েক ডজন প্রসেসরের নির্দেশে অনুবাদ করে। এম সংকলকটি আরও এগিয়ে যায় এবং আপনার কাজটিকে আরও সহজ করে তোলে।
2) আপনি যদি বিখ্যাত টার্বো পাসকালের মূল সংস্করণটি ইনস্টল করেন তবে আপনি বিভিন্ন ধরণের প্রোগ্রাম লিখতে পারেন। তবে আপনি এমন একটি গেম লিখতে পারবেন না যা ওয়েব ব্রাউজারে চলে, কারণ প্রয়োজনীয় এপিআই কেবল সেখানে নেই।
সুতরাং ঠিক কী জিনিসটি যা টার্বো পাস্কালকে একটি প্রোগ্রামিং ভাষা করে তোলে, তবে এম তা নেই? সহজ কথায় বলতে গেলে এম এর চেয়ে আপনি পাস্কেলে আরও কিছু করতে পারেন তবে কল্পনা করুন আমাদের একটি এমএনইটি আছে যা একটি ওয়েব ব্রাউজারে মাইনসুইপার গেম তৈরি করে। সুতরাং এখন আমাদের কাছে এমন কিছু রয়েছে যা পাস্কল করতে পারে এবং এমনেট পারে না, তবে আমাদের কাছে এমন কিছু আছে যা এমএনটেট করতে পারে এবং পাস্কল পারে না। কেন আমাদের পাস্কেলের সুবিধাগুলি গুরুত্বপূর্ণ এবং এমনেট এর অপ্রাসঙ্গিক সুবিধার বিবেচনা করা উচিত?
উত্তরটি হ'ল আপনি প্যাসকেলে সমস্ত ধরণের অ্যালগরিদম লিখতে পারেন তবে এম বা এমনেটে আপনি অ্যালগরিদম লিখতে পারবেন না । অবশ্যই, এম আপনার কমান্ড "এম" সংকলন করে এবং সি আপনার কমান্ড "স্ট্রিম্প" সংকলন করে। তবে আপনি বৃহত্তর প্রসঙ্গে "স্ট্রিম্প" রাখতে পারেন, উদাহরণস্বরূপ দুটি ফাইলের সাথে লাইন ধরে তুলনা করতে পারেন, বা হাজার স্ট্রিং পড়তে পারেন এবং তাদের বর্ণমালা অনুসারে বা আরও ভাল লক্ষ লক্ষ জিনিস বাছাই করতে পারেন। এবং কোনও স্পষ্টতই কোনও অ্যালগরিদমে প্রদত্ত আদেশগুলি ব্যবহার করার ক্ষমতা যা একটি প্রোগ্রামিং ভাষার সারমর্ম তৈরি করে।
একটি অ্যালগরিদম ঠিক কী, এবং আরও গুরুত্বপূর্ণ, "কোনও অ্যালগোরিদম" কী? কম্পিউটার বিজ্ঞানে আমরা টুরিং-সম্পূর্ণ শব্দটি ব্যবহার করি । ধারণাটি হ'ল এখানে কম্পিউটারের ভাষাগুলির একটি সেট রয়েছে, যেখানে তাদের প্রত্যেকে সেগুলির সকলকে অনুকরণ করতে সক্ষম হয় । এই ভাষাগুলির মধ্যে একটি হ'ল টুরিং মেশিন, এ কারণেই তাদের এ জাতীয় বলা হয়। পাস্কাল আছে, সি আছে, জাভা আছে, পাইথন আছে, লিসপ আছে, ছোট্টাক আছে, এমনকি এক্সএসএলটি আছে। আমাদের প্রকল্পিত M এবং M.NET হয় না আছে। যে কোনও বিশ্ববিদ্যালয়ে একটি শালীন কম্পিউটার সায়েন্স কোর্স সরবরাহ করে আপনি এটি সম্পর্কে আরও শিখতে পারেন, তবে ধারণাটি হল যে একটি টিউরিং-সম্পূর্ণ ভাষা কিছু করতে পারেযদি আপনি তাদের ন্যূনতম প্রয়োজনীয় এপিআই দেন তবে অন্য টিউরিং-সম্পূর্ণ ভাষা করতে পারে। (আপনি যদি পাস্কালকে কিছু ওয়েব ব্রাউজারের এপিআই দেন তবে আপনি ওয়েব ব্রাউজারে সমস্ত ধরণের গেম তৈরি করতে পারেন M আপনি একটি প্রোগ্রামিং ভাষা থেকে সমস্ত এপিআই সরিয়ে ফেলেন, গুরুত্বপূর্ণ জিনিসটি যা থাকে তা।
" নিয়মিত অভিব্যক্তি " বলতে আমরা কী বুঝি ?
বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজ এগুলিকে কিছুটা ভিন্নভাবে প্রয়োগ করে। তবে মূল ধারণাটি ছিল নিয়মিত প্রকাশগুলি তথাকথিত নিয়মিত ভাষাগুলি প্রকাশ করে । মনে রাখবেন যে আমরা এখানে প্রোগ্রামিং ভাষা সম্পর্কে কথা বলি না, তবে (ছদ্ম-) মানব ভাষা সম্পর্কে। কল্পনা করুন যে আপনি কিছু বিদেশী উপজাতি এমন একটি ভাষায় কথা বলতে দেখতে পেয়েছেন যা কেবলমাত্র "বা", "বাবা", "বাবাবা" এবং এই জাতীয় শব্দের সমন্বয়ে রয়েছে। আপনি এই ভাষাটি মৌখিকভাবে "এক বা একাধিকবার পুনরাবৃত্তি" বা "(বা) +" হিসাবে নিয়মিত অভিব্যক্তি ব্যবহার করে মৌখিকভাবে বর্ণনা করতে পারেন।
নিয়মিত এক্সপ্রেশনগুলি প্রকাশ করার কথা: "কিছুই নয়", "এই চিঠি", "এটি, এরপরে" "," এটি বা এটি "," এটি, এক বা একাধিকবার পুনরাবৃত্তি ", এবং" এটি নয় "। - এটি গাণিতিক সংজ্ঞা। অন্য যে কোনও কিছুই হ'ল পূর্ববর্তী উপাদানগুলি থেকে তৈরি একটি সুবিধাজনক শর্টকাট। উদাহরণস্বরূপ "এটি, দুই বা তিনবার পুনরাবৃত্তি করা" অনুবাদ করা যেতে পারে "এটি এর পরে, এরপরে (এটি বা কিছুই নয়)", তবে "বা {২,৩}" লেখার চেয়ে এটি "বাবার চেয়ে আরও সুবিধাজনক হতে পারে" (বি। এ)?".
বাস্তব জীবনে, "নিয়মিত এক্সপ্রেশন" কার্যকরী একটি আদর্শ বাস্তবায়ন আরো এই তুলনায়। উদাহরণস্বরূপ, গাণিতিক সংজ্ঞা ব্যবহার করে, "আবা", "আবাবা", "আবাবা" এবং এরকম একটি ভাষা - "ক" এর পরে যে কোনও সংখ্যার পরে, "বি", তার পরে একই সংখ্যার "এ" "s - হয় না নিয়মিত ভাষা। তবে, বর্তমানে ব্যবহৃত অনেক "নিয়মিত এক্সপ্রেশন" এটি "(a +) বি \ 1" হিসাবে লেখা, "আমরা আগে যে একই জিনিস পেয়েছি" এর অতিরিক্ত ধারণাটি ব্যবহার করে এটি সনাক্ত করতে পারে। এই অতিরিক্ত ধারণা ব্যবহার করে, আমরা উদাহরণ গঠিত শব্দ সনাক্ত জন্য, কিছু শান্ত জিনিস করতে পারেন প্রধানমন্ত্রী চিঠি সংখ্যা। তবুও, আমরা কোনও অ্যালগরিদম করতে পারি না ... কারণ ব্যাখ্যা করার জন্য,
সুতরাং, মূল বিষয়টিতে ফিরে আসুন: নিয়মিত এক্সপ্রেশন হয় (যেমন সংজ্ঞায়িত হয়: চমস্কি শ্রেণিবদ্ধের নিয়মিত ভাষাগুলির বিবরণ; বা হিসাবে: প্রাক্তন, আরও \ 1 ক্রিয়াকলাপ) একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ (সংজ্ঞায়িত: টুরিং-সম্পূর্ণ)? উত্তর না হয় । না, আপনি নিয়মিত অভিব্যক্তি ব্যবহার করে কোনও অ্যালগরিদম বাস্তবায়ন করতে পারবেন না এবং যে কোনও অ্যালগরিদম বাস্তবায়নের সক্ষমতা হ'ল কম্পিউটার বিজ্ঞান অধ্যয়নরত লোকেরা সাধারণত প্রোগ্রামিং ভাষার মর্ম হিসাবে বুঝতে পারে।
অবশ্যই, যে কোনও পৃথক সংজ্ঞা জোর দিয়ে উত্তর পরিবর্তন করতে পারে । আমি শুরুতে যেমন লিখেছি, প্রযুক্তিগত বিশদগুলি এখানে গুরুত্বপূর্ণ। আপনি যদি এগুলি ভুল পান তবে আপনি একটি ভুল উত্তর পান get
এবং যদি আপনি হয় না প্রযুক্তিগত বিবরণ আগ্রহী, উত্তর হতে পারে: আপনি নিয়মিত এক্সপ্রেশন (এবং অন্য কিছুই) একটি প্রোগ্রাম করতে ব্যবহার করতে পারি? না, তবে কেন এটিকে প্রোগ্রামিং ভাষা বলবেন? (তবে এর মতো একটি উত্তর এখানে ডাউনলোড এবং মুছে ফেলা হয়েছিল, এ কারণেই আমি এই দীর্ঘ সংস্করণটি লিখেছি))
সম্পাদনা: এছাড়াও, যে কোনও নতুন সংযোজিত নতুন বৈশিষ্ট্যগুলি সহ "নিয়মিত অভিব্যক্তিগুলির" নিজস্ব নিজস্ব বৈকল্পিক প্রয়োগ করে একটি গ্রন্থাগার তৈরি করতে পারে। কিছু মুহুর্তে, নতুন সিস্টেমগুলি পুরো সিস্টেমটিকে ট্যুরিং-সম্পূর্ণ হওয়ার পক্ষে যথেষ্ট হতে পারে। একটি তুচ্ছ উদাহরণ হ'ল কিছু নতুন বাক্য গঠন ব্যবহার করে টিউরিং-সম্পূর্ণ ভাষা এম্বেড করা হবে; তবে এটি স্পষ্টতই কম ঘটতে পারে। এটি ইতিমধ্যে ঘটেছে।