Home » » প্রোগ্রামিং ল্যাংগুয়েজ

প্রোগ্রামিং ল্যাংগুয়েজ

প্রোগ্রামিং ল্যাংগুয়েজ / Programming Language

প্রোগ্রামিং ল্যাংগুয়েজ

প্রোগ্রামকরণের ভাষা (Programming language): কোনো কম্পিউটারের অভ্যন্তরে প্রক্রিয়াকারকের (processor) মাধ্যমে অনুপ্রবেশী উপাত্তমালাকে প্রক্রিয়াকরণ করে বাঞ্ছিত ফল লাভের উদ্দেশ্যে কম্পিউটারের ভাষায় কর্মসূচি রচনাকে বলা হয় সাথে লঞ্চ প্রণয়ন ভহলে একটু  প্রোগ্রামিং (programming) বা প্রোগ্রাম/কর্মসূচিকরণ। যে বিশেষ ভাষায় এই কর্মসূচি প্রণয়ন করা হয় সেই ভাষাকে বলা হয় প্রোগ্রামটির ভাষা বা কর্মসূচি প্রণয়নের ভাষা। অন্য কথায় যে ধরনের প্রতীক (notations) ব্যবহার করে অ্যালগরিদমকে কম্পিউটারের সাথে পারস্পরিক যোগাযোগ করতে পারি সেই প্রতীকমালাকে বলা হয় কর্মসূচি প্রণয়ন ভাষা বা ইংরেজিতে Programming language। এটি সম্পাদন করতে হলে এক সেট ধারবাহিক নির্দেশমালা তৈরি করতে হয় যা উপাত্তমালার উপর প্রক্রিয়াকরণ কাজে প্রযুক্ত হবে।

সাধারণত কম্পিউটার অতি নিম্নমাত্রার যান্ত্রিক ভাষার  (machine language) মাধ্যমে প্রক্রিয়া করে থাকে, যে ভাষা অতি  সরল কতিপয় নির্দেশের সমষ্টি (LOAD, ADD, ইত্যাদি) এবং উপাত্ত কতিপয় সংখ্যাবাচক প্রতীক ও সরল বর্ণ-প্রতীকের সমষ্টি মাত্র। নিচে একটি যান্ত্রিক কোডের নমুনা প্রদর্শিত হলো যা (B-C) এর পরম মানকে A এর উপর আরোপ করবে :

প্রোগ্রামিং-ল্যাংগুয়েজ

যান্ত্রিক ভাষায় কর্মসূচি লেখা রচনাকারীর জন্য অত্যন্ত ক্লেশকর। তাদেরকে অবশ্য অস্বাভাবিক সংখ্যা ভিত্তির (যেমন ৮) সীমাবদ্ধ সংখ্যা প্রতীকে লিখতে হবে, কার্যসম্পাদনের জন্য উপাত্তসমূহকে স্মৃতি থেকে রেজিস্টারে স্থানান্তর করতে হবে। পরিচালন ক্রিয়ার জন্য তাদেরকে অবশ্য যান্ত্রিক পরিচালন কোডসমূহের সঙ্গেও পরিচিত হতে হবে। সবশেষে তাদেরকে অবশ্যই প্রকাৰ্যসমূহের (operands) নির্দেশাবলির ঠিকানা জানতে হবে।

সমাবেশকারী বা অ্যাসেমল্লার ভাষার (assembler language) উদ্ভাবন অবশ্য প্রোগ্রামরচনাকারী ও যন্ত্রের মধ্যে অনেক সহজ আদান-প্রদানের সুযোগ সৃষ্টি করেছে; এই ভাষায় সংখ্যাবাচক ও অবস্থানিক প্রসঙ্গ (পরিচালন কোড ও ঠিকানার পরিবর্তে) ইত্যাদির পরিবর্তে প্রতীকী নির্দেশ ব্যবহার করা যায়। এর ফলে বর্তমান নির্দেশাবলিতে কোনো পরিবর্তন না এনেও অতিরিক্ত উপাত্ত ও নির্দেশাবলি কর্মসূচিতে প্রবেশ করানো যায়। নিচের উদাহরণে সমাবেশকারী ভাষার প্রতীকে লেখা নির্দেশাবলি B.C'এর পরম মানকে A'এর উপর আরোপ করা যায় :

প্রোগ্রামিং-ল্যাংগুয়েজ

কিন্তু দুঃখের বিষয় অ্যাসেমব্রার ভাষার কার্যকারিতা খুব প্রশস্ত নয়, ফলে এই ভাষার সাহায্যে কম্পিউটারের সাথে অ্যালগরিদমের যোগাযোগ খুব বেশি দূর অগ্রসর হওয়া যায় না। এখনো একজন প্রোগ্রাম রচনাকারীকে অ্যালগরিদমকে একটি বিশেষ যন্ত্রের জন্য। যুৎসই ও উপযোগী করে তুলতে হিমশিম খেতে হয়। উদাহরণস্বরূপ, যদি কোনে অভিব্যক্তিকে (expression) প্রকাশ করতে যা। পাওয়া যায় তার অতিরিক্ত রেজিস্টারের প্রয়োজন হয় তাহলে প্রোগ্রামারকে অস্থায়ীভাবে পরিবর্ত (variables) তৈরি করতে হয় অভিব্যক্তিটির আংশিক ফলাফল ধারণ করার জন্য। উচ্চ স্তরের ভাষাসমূহ এ ব্যাপারে প্রোগ্রামারের অনেক অসুবিধা দূর করেছে এবং এই ভাষার সাহায্যে কম্পিউটারের সাথে প্রোগ্রামারের সহজ আদান-প্রদান সম্ভব কারণ এই ভাষার এমন সব কাঠামোগত সুবিধা আনয়ন করা হয়েছে যা কম্পিউটারের যান্ত্রিক স্থাপত্যকৌশলকে প্রচ্ছন্ন করে দিয়েছে। গাণিতিক অভিব্যক্তি, এই ভাষার সাহায্যে প্রায় বীজগাণিতিক সূত্রের মতোই লেখা যায়, ফলে কোনো রেজিস্টারে কোনো আংশিক প্রক্রিয়াকৃত ফল রাখা হয়েছে, অথবা প্রক্রিয়াকরণের জন্য কতগুলো রেজিস্টারের প্রয়োজন তা নিয়ে প্রোগ্রাম রচয়িতাকে মাথা ঘামাতে হয় না।


কর্মসূচি প্রণয়ন ভাষার গড়ন বা কাঠামো (Structure of the programming language) : 

ব্যাখ্যামূলক চিত্রে একটি কর্মসূচির (programme) উপাংশসমূহ এবং তাদের মধ্যে সম্পর্ক দেখানো হয়েছে। একটি কর্মসূচি প্রণয়ন ভাষার মৌলিক নির্বাহীযোগ্য এককই হলো ‘কর্মসূচি বা প্রোগ্রাম (programme)। একটি কর্মসূচিতে অন্তর্ভুক্ত থাকে : উপাত্ত ও প্রণালী (procedure) সম্পর্কে ঘোষণা এবং যা যা নির্বাহ করতে হবে সেসব বক্তব্যের আনুক্রমিক উল্লেখ। কর্মসূচি প্রণয়ন ভাষা লক্ষ্যবস্তুর (objects) অথবা পূর্ণসংখ্যা জাতীয় মানের বা নথি অর্থাৎ ফাইলসমূহের নানা ধরনের বৈচিত্রময় কার্যাদি সম্পন্ন করে (manipulation) লক্ষ্যবস্তুর প্রসঙ্গ টানা হয় তাদের। নাম দিয়ে। এই নামসমূহকে বলা হয় শনাক্তকারী (identifiers)। ধ্রুব লক্ষ্যবস্তুসমূহ যেমন সংখ্যা 2, পরিবর্তিত হয় না। পরিবর্তনশীল। লক্ষ্যবস্তুসমূহ ধারণ করতে পারে অন্যতর লক্ষ্যবস্তু অথবা অন্য লক্ষ্যবস্তুর নাম।


অভিব্যক্তি বা প্রকাশ (expression) : 

অভিব্যক্তি বা প্রকাশ হলো অভিলক্ষ্য বস্তু (objects) এবং প্রকারিকাসমূহের (operations) সন্নিবেশ যা থেকে উৎপাদিত হয় নতুনতর এক বা একাধিক অভিলক্ষ্যবস্তু যেমন 5+3 = ৪ ,এখানে 5 ও 3 হলো দুটি লক্ষ্যবস্তু আর + হলো যোগকরণ প্রকারিকা – এদের সন্নিবেশে নতুন লক্ষ্যবস্তু ৪ উৎপন্ন হলো। অথবা একটি বীজগাণিতিক প্রকাশ বিবেচনা করা যাক : a/b + c = x; এখানে a, b, c হলো তিনটি লক্ষ্যবস্তু প্রথমে a কে b দিয়ে ভাগ করে উৎপাদিত লক্ষ্যের সাথে c যোগ করে আমরা উৎপাদন করি x নামের একটি নতুন লক্ষ্যবস্তু। অভিব্যক্তিকে নানা ধরনের আকারে বা রূপে প্রকাশ করা যেতে পারে। অন্তঃস্থাপন (infix) প্রকারিকাসমূহ তাদের প্রকার্যের (operands) মাঝখানে স্থান পায়। অন্যদিকে পশ্চাৎস্থাপন (prefix) প্রকারিকা তার প্রকার্যকে অনুসরণ করে থাকে। দ্বিভিত্তিক প্রকারিকার (binary operators) ক্ষেত্রে প্রোগ্রামিং ভাষা অন্তঃস্থাপন অঙ্কপাতন (notation) গ্রহণ করে থাকে, অন্যদিকে এককভিত্তিক (unary) প্রকারিকার জন্য ভাষা অধিস্থাপন (prefix) প্রকারিকা গ্রহণ করে।


বক্তব্য (statement): 

বক্তব্য বা স্টেটমেন্ট হলো মানবীয় ভাষার বাক্যের সমতুল্য। প্রোগ্রামিং ভাষার বক্তব্য দু'ধরনের হতে পারে : নির্বাহী অর্থে (execution) অথবা অনির্বাহী অর্থে ব্যবহৃত হয়। কিছু বক্তব্য আবার নির্দেশমূলক। গুরুত্বপূর্ণ বক্তব্যের মধ্যে রয়েছে : আরোপন বক্তব্য (assignment statement), জটিল বক্তব্য (compound statement); শত অরোপী বক্তব্য (conditional statement), পুনুরাবৃত্তিমূলক বক্তব্য (repetitive statement), এবং ‘যাও’ নির্দেশক বক্তব্য (GOTO statement)।

 আরোপন বক্তব্যের কাজ হলো কোনো পরিবর্ত রাশির উপর বিশেষ মান আরোপ করা। নিম্নে লিখিত বক্তব্যটিতে B দ্বারা চিহ্নিত লক্ষ্যবস্তুর মানটিকে A দ্বারা চিহ্নিত লক্ষ্যবস্তুর উপর আরোপ করা হয়েছে :

(১)

A:= B

দুই পার্শ্বের মূল্যায়নের ক্রমধারা ভাষা থেকে ভাষার মধ্যে ব্যত্যয় হয় কোনো কোনো ভাষা বাম থেকে ডান দিকে মূল্যায়ন করে, আবার অন্য ভাষায় এই ক্রমধারা অনিশ্চিত। কোনো কোনো ভাষার বৈশিষ্ট্য রয়েছে একটি বক্তব্যের মাধ্যমে একই মানকে বিভিন্ন পরিবর্ত রাশির উপর আরোপ করা যায়। অন্য অনেক ভাষায় ‘আরোপনকে অন্য যে কোনো প্রকারিকার মতোই বিবেচনা করে।

জটিল বক্তব্যে (২নং রূপ দেখুন) একগুচ্ছ আনুক্রমিক  বক্তব্যকে অন্তর্ভুক্ত করা যায় :

(২)

BEGIN stmt 1; stmt 2 ; ......stmtn END    

এই জটিল বক্তব্যটিকে একটি একক বক্তব্য হিসাবে ভাষা বিচার করবে। এই দলভুক্ত বক্তব্যগুলো যে ক্ৰমে লেখা হয়েছে। নির্বাহকালে সেই অনুক্রমেই সম্পাদিত হবে।

ইংরেজি ভাষার অনুরূপ IF বা ‘যদি ব্যবহার করে শর্তাধীন বক্তব্য তৈরি করা যেতে পারে প্রোগ্রামিং ভাষায়; নিচে একটি উদাহরণ দেওয়া হলো :

(৩)

IF expression THEN statement

প্রথম অভিব্যক্তিতে (expression) যে শর্ত আরোপ করা হয়েছে, তা সত্য হলে THEN পরবর্তী অভিব্যক্তিটি নির্বাহ হবে নচেৎ তা হবে না; ঐ অভিব্যক্তিকে অতিক্রম করে নির্বাহ পরবর্তী বক্তব্যে উপনীত হবে। অনেক ভাষাতেই একাধিক বিকল্প নির্বাহের সুযোগ রয়েছে এ ধরনের শর্তাধীন বক্তব্যে। নিচের উদাহরণটি দেখুন:

(৪)

IF expression THEN stmt 1 ELSE stmt 2 

IF পরবর্তী প্রকাশটি যদি সিদ্ধ হয় তাহলে THEN এর অনুযায়ী বক্তব্য stmt। নির্বাহ হবে আর প্রকাশটি অসত্য হলে ELSE পরবর্তী বক্তব্যটি অর্থাৎ stmt 2 নির্বাহ হবে। অর্থাৎ যে কোনো অবস্থাতেই শর্তটি সত্য বা অসত্য যাই হােক IF পরবর্তী বক্তব্য (যে কোনো একটি) নির্বাহ হবে।

কম্পিউটারের মধ্যে উপাত্ত প্রক্রিয়াকরণের একটি বড় সুবিধা হলো এই যন্ত্র দ্বারা একই কাজ বারবার সম্পাদন করা যায় : FOR ও WHILE ধরনের বক্তব্য ব্যবহার করে পুনরাবৃত্তিমূলক কাজ সম্পাদন সম্ভব।

(৫)

For variable identifier : = expression TO expression

DO statement

WHILE বক্তব্য ব্যবহার করা হয় যখন পুনরাবৃত্ত নির্বাহটি নির্ভর করে সত্যতার শর্তের উপর (কিন্তু কতবার পুনরাবৃত্তি হবে তা আগে থেকে জানা নেই)— অর্থাৎ যতক্ষণ শর্ত সিদ্ধ ততক্ষণ নির্বাহ চলতেই থাকবে। যখন WHILE পরবর্তী অভিব্যক্তিটি অসত্য হবে তখন নির্বাহ পরবর্তী বক্তব্যে চলে যাবে।

(৬)

WHILE expression DO Statement

প্রায় সব উচ্চতর প্রোগ্রামিং ভাষাতেই নির্বাহের এক স্তর থেকে অন্য যে কোনো স্তরে (উপরে বা নিচে) GOTO বক্তব্যের নির্দেশে উপনীত হওয়া যায়; তবে এটিকে নিচুমানের নিয়ন্ত্রণ বক্তব্য হিসাবে বিবেচনা করা হয় এবং এর ব্যবহার যতদূর সম্ভব সীমিত রাখা কাঙ্ক্ষিত।

(৭)

GOTO identifier

এই নির্দেশ দ্বারা শনাক্তকারী স্থানে নির্বাহী ধাপ স্থানান্তর করা সম্ভব।


প্রণালী (procedure) : 

যখন কোনো সমস্যা দীর্ঘ ও জটিল আকার ধারণ করে তখন এটিকে কতিপয় উপসমস্যায় বিভক্ত করা বেশ সুবিধাজনক, এবং প্রতিটি উপসমস্যাকে স্বতন্ত্রভাবে সমাধান করা যায়। সমস্যা সমাধানের এ ধরনের উপস্থাপনাকে সমর্থন দেওয়া হয়।

প্রণালী ঘোষণার (procedure declaration) মাধ্যমে। এই প্রণালীর অভ্যন্তরে থাকে এক গুচ্ছ একত্রিত আনুক্রমিক বক্তব্য এবং বক্তব্যসমূহের সাথে সংশ্লিষ্ট থাকে শনাক্তকারী। প্রণালীতে অন্তরীণাবদ্ধ বক্তব্যসমূহের দ্বারা হিসাবকৃত বিবরণ প্রণালী শনাক্তকারী আবদ্ধকরণের মাধ্যমে সারসংক্ষেপ হিসাবে ধরে রাখে। একই ধরনের কোড মাত্র একবার ব্যবহারের অনুমোদন করে প্রণালী প্রোগ্রামকে অনাবশ্যক বড় হওয়া থেকে বিরত রাখে।


উপাত্তের ধরন বা প্রকৃতি (Data type) : 

উপাত্ত প্রকৃতি বলতে আমরা বুঝি মানের একটি সেট এবং প্রকরণ যা তাদের উপর সম্পাদন করা যায়। উপাত্ত প্রকৃতি প্রোগ্রাম রচনাকারীকে দুটি সুবিধা দান করে থাকে; বিমূর্তন ও সত্যকরণ (abstract and authentication) উপাত্ত প্রকৃতি প্রোগ্রাম রচনাকারী থেকে প্রতিনিধিত্বমূলক বিশদ বিবরণকে লুকিয়ে রাখে যাতে প্রোগ্রাম রচনাকারীকে উৎকণ্ঠিত না হতে হয়। প্রতীকসমূহ ASCII or EBCDIC কোডে লেখা হয়। তারা বামদিকে ঝুকে রয়েছে এবং ব্লাঙ্ক বা কঁকা ভর্তি অথবা ডানদিকে ঝুকে রয়েছে এবং শূন্য ভর্তি (Zero Filled) (যান্ত্রিক শব্দের ভিত্তিতে)। উপাত্ত প্রকৃতির ধারণা ‘অনাবশ্যকতা’র বােঝা থেকে রেহাই দিতে পারে। কোনো অভিব্যক্তিতে (expression) কোনো পরিবর্ত রাশির প্রকার্য (operand) রূপে আবির্ভাব ইঙ্গিত দেয় যে এটি বিশেষ জাতের উপাত্ত যা বর্তমানে এটি কোন জাতের তার সাথে যাচাই করে দেখা সম্ভব; উদাহরণস্বরূপ (A+B) অভিব্যক্তিটি ইঙ্গিত দিচ্ছে যে, A ও B এরা হয় পূর্ণ সংখ্যা (integer) অথবা সদ বা প্রকৃত সংখ্যা (real)।

স্কেলারসমূহ হলো উপাত্তসমূহের অদৃশ্য একক; এদেরকে একটি একক সম্পূর্ণ সত্তা হিসাবে বিবেচনা করা হয়। অধিকাংশ ভাষাতেই রয়েছে কতিপয় স্কেলার ধরন। এদের মধ্যে প্রায়শ ব্যবহৃত সাধারণ জাত হলো : পূর্ণসংখ্যা, সদ বা প্রকৃত, বুলীয়ান (Boolean), এবং চিহ্ন ও অক্ষর (Character)। যদিও সাধারণত পরিবর্ত রাশি লক্ষ্যবস্তুর মান ধারণ করে, তবু এরা কতিপয় লক্ষ্যবস্তুর নামকেও ধরে রাখতে পারে। যেসব পরিবর্ত এ ধরনের মান ধরে রাখতে সক্ষম তারা প্রসঙ্গ’ (reference) বা নির্দেশক (pointing) নামে অভিহিত।

পরস্পর সম্পর্কিত মানসমূহের সংগ্রহকে ‘সমষ্টিভূত’ জাত বা প্রকৃতি (aggregate type) দিয়ে প্রতিনিধিত্ব করানো যায়। এদেরকে লক্ষ্যবস্তুর জাত—যারা তাদের উপাদান এবং কিভাবে এই উপাদানসমূহে পৌছানো যায় তদ্বারা বৈশিষ্ট্যায়িত করা যায়। একটি সংগ্রহের উপাদানসমূহ সমসত্ত্ব বিশিষ্ট বা বিষমসত্ত্ববিশিষ্ট হতে পারে। এবং সংগ্রহটিতে তার অবস্থান থেকে তাদের নির্বাচন করা যায় অথবা তাদের সাথে একটি নাম সংশ্লিষ্ট করা যেতে পারে।


পরিবত্যের উপর সংযোজী বৈশিষ্ট্য (binding attributes to variable):

 ধ্রুব ও পরিবর্ত উভয় লক্ষ্যবস্তুর থাকে মান ও বৈশিষ্ট্য (attributes)। কোনো লক্ষ্যবস্তুর বৈশিষ্ট্যাদির মধ্যে গুরুত্বপূর্ণ কয়েকটি হলো : এর জাত বা প্রকৃতি, সুযোগ, এবং বিস্তৃতি (extent)।

অধিকাংশ প্রোগ্রামিং ভাষায়, একই শনাক্তকারীকে প্রোগ্রামের বিভিন্ন অংশে নির্দিষ্ট লক্ষ্যবস্তুর নাম হিসাবে ব্যবহার করা যায়। শনাক্তকারীর সুযোগ বা ব্যাপ্তি হলো প্রোগ্রামের যে অংশে এটি দেখা দেয় সেখানে এটি একই অর্থ বহন করে। সাধারণভাবে প্রোগ্রামের

অংশটিকে বলা হয় ‘সুযোগ একক (scope unit) এবং একে বলা হয়। প্রণালী বা জটিল বক্তব্য (compound statement)। লক্ষ্যবস্তুসমূহের সেটটিকে বলা হয় পরিবেশ (environment) যা দিয়ে ‘সুযোগ এককে’ প্রসঙ্গ টানা যেতে পারে।  উপাত্ত প্রকৃতিকে (data type) লক্ষ্যবস্তুর সাথে সম্পর্কিত করা যায় স্থৈতিকভাবে ঘোষণার মাধ্যমে, অথবা গতীয়ভাবে আরোপণ বক্তব্যাদির মাধ্যমে। স্থৈতিক জাতের ভাষাসমূহে-কোনো লক্ষ্যবস্তুর সাথে সম্পৃক্ত জাত বা ধরন বস্তুটির পরিসরের মধ্যে একই থাকে।  একটি পরিবর্ত রাশির বিস্তৃতি বা আয়ুষ্কাল (life time) হলো প্রোগ্রামটির নির্বাহ-কাল’ যে সময়ে ঠিকানা বা সংরক্ষণ বণ্টন করা হয়। স্থৈতিক সংরক্ষণ (static storage) সৃষ্টি হয় প্রোগ্রাম নির্বাহের শুরুতে এবং নির্বাহ না পরিসমাপ্ত হওয়া পর্যন্ত এই বণ্টন বিনষ্ট হয়। পরিবর্ত রাশির জন্য স্থানিক সংরক্ষণ (local storage) স্থান সৃষ্টি হয় পরিবর্ত্যরাশিসমূহের ঘোষণা সম্বলিত ব্লক বা প্রণালীতে প্রবেশের সাথে সাথে এবং বের হওয়ার পর বিনষ্ট হয়ে যায়। চলমান সংরক্ষণ (dynamic storage) প্রোগ্রামিং ভাষায় অন্তর্ভুক্ত বিশেষ বক্তব্যমালার (statements) নির্বাহের মাধ্যমে সৃষ্টি ও ধ্বংসাধিত


প্যারামিটার বা রাশি (parameter): 

প্যারামিটারের মাধ্যমে আহবানকারী প্রতিবেশের সাথে ও আহূত প্রতিবেশের মধ্যে তথ্য আদান-প্রদান করা হয়। অবশ্য এটি অস্থানিক পরিবর্তের (non local variables) প্রসঙ্গ টেনেও সম্পাদন করা যায় তবে প্যারামিটারের মাধ্যমে যোগাযোগ স্থাপনের ফলে একটি প্রণালী (procedure) বিভিন্ন পরিবর্ত নিয়ে কাজ করতে সক্ষম যখনই ঐ পরিবর্তকে আহ্বান করা যায়। রূপগত প্যারামিটার (formal parameter) বস্তুত একটি শনাক্তকারী রাশি যাকে একটি প্রণালী সংজ্ঞায় স্থানীয়ভাবে ঘোষণা করা হয়; প্রকৃত প্যারামিটার হলো (actual parameter) প্রণালী আহ্বান বক্তব্যের অন্তর্ভুক্ত অভিব্যক্তি বা প্রকাশ (expression)।


অপেক্ষক (functions) : 

অপেক্ষক ঘোষণা (function declaration) আসলে প্রণালী ঘোষণার অনুরূপ। একটি প্রণালী তার ফলাফল যোগাযোগ করে থাকে এর প্যারামিটারসমূহের উপর মান আরোপ করে। কিন্তু অপেক্ষক এভাবে যোগাযোগ স্থাপন করে না। একটি অপেক্ষক বিনির্দিষ্ট মানের মাধ্যমে যোগাযোগ স্থাপন করে থাকে, একে বলা হয় ফল (result)। অপেক্ষকের এই ফল প্রায়শ নির্দেশ করা হয় অপেক্ষক নামের উপর একটি মান আরোপ করে।

যখন কোনো প্রণালী অথবা অপেক্ষক অন্তর্ভুক্ত বক্তব্য কোনো অস্থানিক পরিবর্তের অথবা প্রসঙ্গের, অথবা নাম প্যারামিটারের মান পরিবর্তন করে তখন আমরা বলি প্রণালীটিতে পার্শ্বক্রিয়া (side effect) রয়েছে। প্রণালীতে অন্তর্ভুক্ত এ ধরনের আরোপণকে অবশ্য পার্শ্বক্রিয়া বলা সঠিক নয়, কারণ প্রণালীতে এ ধরনের আরোপণ অন্তর্ভুক্ত করতেই হবে তার ফলাফল আদান-প্রদানের উদ্দেশ্যে। অপেক্ষকে পার্শ্বক্রিয়া আরো অবাঞ্ছিত কারণ এসব পার্শ্বক্রিয়া কোনো অভিব্যক্তির হিসাবকরণের ফলকে অনিশ্চিত করে তোলে। সুতরাং অপেক্ষকে পার্শ্বক্রিয়া পাশ কাটিয়ে যাওয়া ভালো প্রোগ্রামিং অভ্যাস এবং যখন পার্শ্বক্রিয়া বাঞ্ছিত তখন অপেক্ষকের পরিবর্তে প্রণালী। ব্যবহার করা অধিকতর যুক্তিযুক্ত।


প্রয়োগমুখী ও লক্ষ্যবস্তু দিকবিন্যস্ত ভাষা (Applicative and object oriented language) :

অধিকাংশ প্রোগ্রামিং ভাষাই অনুজ্ঞাসূচক; কারণ এদের প্রোগ্রামের অন্তর্ভুক্ত অধিকাংশ বক্তব্যই হলো লক্ষ্যবস্তুতে মান আরোপণমূলক। যেমন বলা যায় ALGOL, PL/1, FORTRAN, Aa, COBOL, Pascal  ভাষাই অনুজ্ঞাসূচক বা আদেশমূলক। অন্য দুই প্রকারের ভাষা রয়েছে একটিকে বলা যায় প্রয়োগমুখী এবং অন্যটি লক্ষ্যবস্তু  দিকবিন্যাসী (object oriented) । সাধারণভাবে ব্যবহৃত কোনো ভাষাই অবশ্য বিশুদ্ধ অনুজ্ঞাসূচক, বা প্রয়োগমুখী বা লক্ষ্যবস্তু  অভিমুখী নয়, কাজেই প্রত্যেক ভাষাতেই কমবেশি এই তিন বৈশিষ্ট্য থাকতে পারে।

একটি বিশুদ্ধ প্রয়োগমুখী ভাষার বৈশিষ্ট্য হলো—এতে কোনো বক্তব্য (statements) থাকবে না, থাকবে কেবল পার্শ্বপ্রতিক্রিয়াহীন। 

অভিপ্রকাশ বা Expressions। প্রয়োগমুখী” কথাটি যে প্রসঙ্গে  ব্যবহৃত হয় তা হলো একটি অ্যালগরিদমকে বিনির্দিষ্ট করার। লক্ষ্যে অন্যান্য অপেক্ষকের ফলাফলের উপর অপেক্ষকাদির পুনরাবৃত্তিক প্রয়োগ। LISP, APL, এবং VAL প্রয়োগমুখী ভাষার  চমৎকার উদাহরণ। লক্ষ্যবস্তুকে উদ্দেশ্য করে লিখিত ধারাবাহিক বক্তব্য সম্বলিত কর্মসূচি লেখা হয় লক্ষ্যবস্তু দিকবিন্যাসী ভাষায়। কোনো আদেশ গ্রহণকারী লক্ষ্যবস্তুটি অন্তঃস্থ প্রণালীকে জাগ্রত করে এই আদেশের প্রতি সাড়া দেয়। আরোপণ বক্তব্যগুলোকে লক্ষ্যবস্তুর উদ্দেশ্যে নিয়োজিত আদেশসূচক বাক্য দ্বারা প্রতিস্থাপন করা হয়,—লক্ষ্যবস্তুকে বলা হয় তাদের মান পরিবর্তন করতে।


নতুন ধরনের উপাত্ত সংজ্ঞাদান :

প্রণালী ও অপেক্ষক ঘোষণাদি নতুন প্রকরণের (operation) সংজ্ঞা দান করে যা বিদ্যমান লক্ষ্যবস্তুর উপর পরিচালনা করা হয়। ধরন ঘোষণাদি (type declaration) একটি প্রোগ্রামিং ভাষায় নতুন লক্ষ্যবস্তু ও প্রকরণ সংযোজন করে। ব্যবহারকারী কর্তৃক সংজ্ঞায়িত ধরন সমাধান সমূহকে সমস্যা অভিমুখী (problem oriented) ভাষায় উপস্থাপন করতে সামর্থ্য জোগায়, যন্ত্র অভিমুখী কোনো পদে নয়। AlGOL 68 ও Pascal জাতীয় ঘোষণাদি একজন কর্মসূচি প্রণেতাকে (programmer) উপাত্ত প্রকৃতির নতুন লক্ষ্যবস্তুর প্রতীকী উপস্থাপনে সামর্থ্য দেয়, আর AIGOL 68 প্রকরণাদির সংজ্ঞা প্রদানে অনুমোদন দেয়।


বিশেষ ভাষাসমুহ (particular languages) : 

বহুলভাবে ব্যবহৃত উচ্চতর ভাষাগুলোর মধ্যে উল্লেখযোগ্য কয়েকটি RGIT: FORTRAN, ALGOL, COBOL, BASIC, PL/1, APL, SNOBOL, LISP, Pascal, C, 47 Ada!  ১৯৫০'এর মাঝামাঝিতে FORTRAN ভাষার উদ্ভব ঘটে—মূলত বিজ্ঞানের জটিল সমস্যার সংখ্যাবাচক সমাধান প্রাপ্তির উদ্দেশ্যে। এই লক্ষ্য অর্জনের জন্য ভাষার উপাত্ত ও নিয়ন্ত্রণ উপাংশাদি বেশ সরল যাতে ব্যবহারকারীকে কম্পিউটারের হার্ডওয়ার সম্পর্কে সামান্যই জানতে হয়। FORTRAN এর নিয়ন্ত্রণ গড়ন বিশেষভাবে আদিম; কোনো জটিল বাক্য বা পুনরাবৃত্তিমূলক উন্মুক্ত বক্তব্যাদি এই ভাষায় স্থান পায় নি। দুটি শর্তজ্ঞাপক বাক্য (পাটিগাণিতিক ও যৌক্তিক IF সমূহ) এবং একটি বদ্ধ পুনরাবৃত্তিক বাক্য (DO) GOTO এবং লেবেল প্রদায়ী কাজ থেকে প্রোগ্রামারকে মুক্তি দিতে সক্ষম।

বিজ্ঞানের গাণিতিক হিসাবের কাজে উপযোগী ALGOL এর উদ্ভাবন ঘটে ১৯৫০-এর শেষদিকে এবং ১৯৬০-এর প্রথমদিকে। প্রথমদিকে এই ভাষার গড়নের চমৎকার শৈলী অন্যান্য নতুন ভাষার ভিত্তি প্রণয়ন করেছে যেমন— ALGOL 6৪ ও Pascal, এবং এর নিয়ন্ত্রণ গড়নটিকে হুবহু গ্রহণ করা হয়েছে PL1 এবং FORTRAN এর পরবর্তী ভাষাগুলোতে। ALGOL-ই হলো প্রথম ভাষা যার বাক্য গঠন রীতি প্রথাগত ব্যাকরণভিত্তিক এই ব্যাকরণকে বলা হয় ‘ব্যাককাস-নাউর রূপরেখা’ (Backus-Naur Form) বা সংক্ষেপে BNF—এই নামাঙ্কন করা হয় দু’জন মূল উদ্ভাবকের নাম অনুসারে। ALGOL'এর নিয়ন্ত্রণ বক্তব্যসমূহ (২৫) এ উল্লিখিত বাক্যাদির অনুরূপ। তবে সকল পুনরাবৃত্তিক বাক্যসমূহে মূলত FOR বাক্যের ভিন্নভিন্ন রূপ মাত্র; আর নিয়ন্ত্রণ বাক্যগুলো সুযোগের বা বিস্তৃতির (scope) একক (units) মাত্র যার অভ্যন্তরে নিজস্ব স্থানীয় পরিবর্ত রাশিসমূহের ঘোষণাদি স্থান পায়।

COBOL ভাষা ১৯৫৯ ও ১৯৬০ সালে কম্পিউটারের সাহায্যে ব্যবসা সংক্রান্ত কাজের উদ্দেশ্যে উদ্ভাবিত হয়। FORTRAN এর মতোই কাৰ্যদক্ষতাই ছিল মূল বিবেচ্য বিষয় এই ভাষা উদ্ভাবনের পশ্চাতে। যেহেতু ভাষাটি প্রণয়নের সময় এর প্রয়োগ এলাকা ছিল বিবেচনার মধ্যে, তাই হিসাব-গণনা বিনির্দিষ্টকরণে (যেমন অভিপ্রকাশ, অপেক্ষক, এবং প্যারামিটার) দুর্বলতা এ ভাষার একটি বৈশিষ্ট্য, অন্যদিকে উপাত্ত বর্ণনায় ও অন্তর্মুখ/বহির্মুখ (Inut/output) ইত্যাদির ক্ষেত্রে সরলতা এর বৈশিষ্ট্য। ভাষাটির স্পষ্টভাবে লক্ষণীয় বৈশিষ্ট্য হলো COBOLপ্রোগ্রামের ইংরেজি ভাষা সদৃশ বাক্যরীতি (syntax) এবং সমগ্র প্রোগ্রামটির রয়েছে ৪টি বিভাজন।

১৯৬০ সালে ডারমাউথ কলেজে (Dartmouth college) BASIC ভাষার উন্নয়ন ঘটে; এর লক্ষ্য ছিল অবিজ্ঞান বিষয় নিয়ে পড়াশুনা করছে এমন সব ছাত্র যাতে একটি সরল ভাষার মাধ্যমে অনেকটা কথােপকথনের ভঙ্গিতে কম্পিউটার ব্যবহার করতে পারে। BASIC প্রোগ্রামে সদরাশি ‘অক্ষর উপাত্ত (string) এবং এক ও দ্বিমাত্রিক ক্রমসজ্জা উপাত্ত ব্যবহার করা যায়। মাত্রা (dimension) বাক্য (DIM) দিয়ে অক্ষর উপাত্তের দৈর্ঘ্য ক্রমসজ্জার উপচিহ্নকে (subscript) নির্দিষ্টভাবে চিহ্নিত করা সম্ভব। একটি মাত্র অক্ষর (letter) দিয়ে একটি পরিবর্ত্যরাশিকে অভিহিত করা, আর পরিবর্তটি যদি সংখ্যানির্দেশক হয় তাহলে এরপর একটি চিহ্ন ব্যবহার করতে হয় (যেমন A! সদরাশি বুঝাতে), আর অক্ষরসুচক পরিবর্ত বুঝাতে $ চিহ্নটি ব্যবহৃত হয় (যেমন N$)। সুতরাং দেখা যাচ্ছে প্রকার বা ধরন স্থৈতিকভাবে পরিবর্তের সাথে সংশ্লিষ্ট।  

বহুমুখী বিস্তৃততর প্রয়োগের উদ্দেশ্যে PL1 ভাষাটি ১৯৬০'র দিকে প্রণীত হয়। বহুমুখী ব্যবহারের মধ্যে রয়েছে বৈজ্ঞানিক, ব্যবসা সংক্রান্ত প্রয়োগ এবং পদ্ধতিগত। PL1 অন্য অনেক ভাষার বৈশিষ্ট্য আত্তীকৃত করেছে—যেমন FORTRAN থেকে প্যারামিটার অনুবদ্ধকরণ এবং ফর্মাকৃত অন্তর্মুখ/বহির্মুখ বাক্য (Input/output statements), ALGOL থেকে সুবিধা বিধি (cope rules), পরিবর্ত রাশির বিস্তৃতি, পুনরাবৃত্তিক প্রণালীসমূহ ও নিয়ন্ত্রণ গড়ন; COBOL থেকে--রেকর্ড গড়ন ও চিত্র উপাত্ত ধরন। অন্যভাষার প্রয়োজনাতিরক্তি বৈশিষ্ট্যাদিকে স্থান দিয়ে ভাষাটিকে শেখার জন্য দুর্বোধ্য করে তোলা হয়েছে, ফলে ব্যবহারকারীরা

তাদের প্রয়োজন অনুযায়ী Fortran, Cobol or Algol শিখতে উদ্বুদ্ধ হয়েছে,—আর উল্লিখিত ভাষাগুলোকে PL1 উপগুচ্ছ হিসাবে গণ্য করা যেতে পারে। APL ১৯৫০-৬০’এর সময়ে উদ্ভাবিত হয়েছিল; একটি প্রতিক্রিয়াধর্মী (interactive) ভাষা যার প্রকারিকাসমূহ একজাতের সংখ্যা বা অক্ষর-এর সমসত্ব উপাদানবিশিষ্ট মসজ্জা (array) গ্রহণ করে এবং ফল উৎপাদন করে। একমাত্র নিয়ন্ত্রণ গঠন হলো GOTO বাক্য, কিন্তু এর প্রয়োগধর্মী চরিত্রের উন্নতমান  এই সীমা তুচ্ছ জ্ঞান করা যায়। যদিও APL প্রায়শ অনুজ্ঞাসূচক বাক্যাদির ক্রমধারা তাহলেও APL কর্মসূচি সাধারণভাবে লক্ষ্যবস্তুর ক্রমসজ্জার উপর কাজ করতে পারে এবং নতুন লক্ষ্যবস্তু সজ্জা উৎপাদনে সমর্থ। সুতরাং এই ভাষার পুনরাবৃত্তিক গঠনের প্রয়োজন অনুভূত হয় না যা প্রায়শ Algol সদৃশ ভাষার জন্য অত্যাবশ্যক।

অক্ষর বা নামসূচক উপাত্ত প্রক্রিয়াকরণ সীমিত উদ্দেশ্য নিয়ে ১৯৬০'এর দিকে SNOBOL ভাষার সৃষ্টি। এই ভাষার প্রকৃত অর্থে কোনো নিয়ন্ত্রণসূচক গঠন নেই। এর পরিবর্তে রয়েছে সাফল্য (success) বা ব্যর্থতা (fails) সূচক বাক্যাদি এবং সাফল্য অথবা ব্যর্থতার উপর নির্ভর করে GOTO বাক্যের সাহায্যে পছন্দমতো নতুন বাক্যে গমন করা যেতে পারে। নামবাচক অর্থাৎ অক্ষর সম্বলিত প্রক্রিয়াকরণে এই ভাষার বাক্যাদির রয়েছে অত্যন্ত ক্ষমতাশালী সামর্থ্য।

LISP আবিস্কৃত হয় ১৯৫০'এর শেষদিকে; এটি কৃত্রিম  বুদ্ধিবৃত্তিক সম্প্রদায়ের কাছে বহুল ব্যবহৃত ভাষা। মৌলিক ধরন বা জাত (basic type) LISP তে স্বল্পতম, যা ধারাবাহিকভাবে দফা (items) রূপে বন্ধনীর মধ্যে নির্দেশিত থাকে। LISP এর ক্ষমতার উৎস হলো তালিকা দ্বারা চিহ্নিত প্রত্যেক বিষয়ের উপস্থাপনা (representations) LISP এর জন্য ক্ষমতাশালী হাতিয়ার ও বিস্তৃতির পরিবেশ। পরীক্ষামূলক কর্মসূচি লেখার জন্য LISP একটি অতি উপযোগী ভাষা, কারণ অবাঞ্ছিত কোনো কিছুকে নিয়ন্ত্রণ করার অসাধারণ নমনীয়তা রয়েছে এই ভাষার। কিন্তু এর মূল সীমাবদ্ধতা হলো—এটি ধীরলয়ে চলে এবং স্মৃতির বিশাল অংশ ব্যবহার করে থাকে। 

প্রোগ্রামিং-ল্যাংগুয়েজ

Pascal রচিত হয় ১৯৬৯ সালে; এর লক্ষ্য ছিল এমন একটি ভাষা তৈরি করা যার সাহায্যে সুশৃঙ্খলভাবে প্রোগ্রামিং শিক্ষা দান সহজ হবে এবং এর সাথে সংশ্লিষ্ট থাকবে এমনসব গড়ন যা বিশুদ্ধতার সাথে এবং কার্যকরভাবে বাস্তবায়িত করা যাবে। হিসাবে ২-৫ ও ৬’র উল্লিখিত ব্যাক্যাদির সদৃশ নিয়ন্ত্রণ বাক্য হলো Pascal এর বৈশিষ্ট্য। তবে Case বাক্যটিকে একটি অতিরিক্ত নির্বাচন বাক্য (selection statement) রূপে এই ভাষার অন্তর্ভুক্ত করা হয়েছে। এই বাক্যের মাধ্যমে কোনো নির্বাচন অভিপ্রকাশের মানের উপর ভিত্তি করে কতিপয় বাক্যাদির মধ্য থেকে একটি বিকল্প বাক্যের নির্বাহ সম্ভব। C" নামে প্রচলিত ভাষার উদয় ঘটে ১৯৭২'-এর উদ্দেশ্য ছিল UNIX পরিচালন পদ্ধতিকে ব্যবহার উপযোগী করা। নানা দিক থেকে এটি Pascal‘এর অনুরূপ। C'-এর অন্তর্ভুক্ত বৈশিষ্ট্যাদি হলো ধরন বা জাত (type), রেকর্ড (বলা হয় গড়ন বা Structures), CASE বাক্য, প্রসঙ্গজ্ঞাপক পরিবর্ত রাশি। অন্য ভাষার সাথে c এর পার্থক্য হলো--এর। প্রসঙ্গজ্ঞাপক পরিবর্ত রাশির বহুল ব্যবহার-যাদেরকে ক্রমসজ্জার (arays) সমতুল্য হিসাবে সংজ্ঞা দেওয়া হয়েছে।

Ada আবিস্কৃত হয় ১৯৭০ সালে; দৃঢ়ভাবে প্রোথিত ব্যবস্থাদির (embedded systems) উন্নয়নের সমর্থনের জন্য একটি নতুন কম্পিউটার ভাষা প্রণয়নের লক্ষ্যে আমেরিকার প্রতিরক্ষা বিভাগ আয়োজিত একটি প্রতিযোগিতার ফসল হলো Ada I Pascal কে ভূমি হিসাবে গ্রহণের মুখ্য কারণ হলো—উল্লিখিত প্রয়োজনের লক্ষ্যে প্রয়োগাদির প্রয়োজনসমূহ এই ভিত্তি বিশ্বস্ততার সাথে ও কার্যকরভাবে বাস্তবায়ন করতে পারে।

0মন্তব্য(গুলি):

একটি মন্তব্য পোস্ট করুন

Comment below if you have any questions

Contact form

নাম

ইমেল*

বার্তা*

-->