কম্পিউটার বিজ্ঞান

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

কম্পিউটার বিজ্ঞান জ্ঞানের একটি শাখা যেখানে তথ্যগণনার তাত্ত্বিক ভিত্তির গবেষণা করা হয়, এবং কম্পিউটার ব্যবস্থাসমূহে এগুলো বাস্তবায়ন ও ব্যবহার করা হয়।

সূচিপত্র

[সম্পাদনা] ইতিহাস

আধুনিক কম্পিউটার বিজ্ঞানের উৎস হিসেবে ইংরেজ বিজ্ঞানী চার্লস ব্যাবেজের কাজকে উল্লেখ করা যায়। ব্যাবেজ ১৮৩৭ সালে একটি প্রোগ্রামযোগ্য যান্ত্রিক গণনাযন্ত্র বা ক্যালকুলেটর প্রস্তাব করেছিলেন। তবে তারও আগে ১৬২৩ সালে ভিলহেল্ম শিকার্ড প্রথম যান্ত্রিক ক্যালকুলেটর তৈরি করেছিলেন বলে জানা যায়, যদিও এটি প্রোগ্রামযোগ্য ছিল না। ১৯ শতকে জর্জ বুল উদ্ভাবিত বুলিয়ান বীজগণিত দ্বিমিক বা বাইনারি পদ্ধতি ব্যবহার করে বিদ্যুৎ বর্তনী তৈরির গাণিতিক ভিত্তি প্রদান করে।

১৯৪০-এর দশকে ইলেকট্রনিক ডিজিটাল কম্পিউটারের আবির্ভাবের আগ পর্যন্ত কম্পিউটার বিজ্ঞানকে বিজ্ঞান বা প্রকৌশলবিদ্যার চেয়ে একটি আলাদা শাস্ত্র হিসেবে গণ্য করা হত না। তবে এর পর থেকে এটি অনেক শাখা প্রশাখার জন্ম দিয়েছে, যেগুলো একান্তই কম্পিউটার বিজ্ঞান সম্বন্ধীয়।

অ্যালগোরিদম তত্ত্ব, গাণিতিক যুক্তিবিজ্ঞান, ও প্রোগ্রাম সংরক্ষণের ক্ষমতাবিশিষ্ট ইলেক্ট্রনিক কম্পিউটারের উদ্ভাবন - এই তিনের সম্মিলনে ১৯৪০-এর দশকের শুরুতে কম্পিউটার বিজ্ঞানের জন্ম হয়। ১৯৩০-এর দশকে অ্যালান টুরিং, আলোন্‌জো চার্চকুর্ট গ্যোডেলের অ্যালগোরিদম তত্ত্বসমূহ ও এগুলো যন্ত্রে বাস্তবায়ন সংক্রান্ত গবেষণা, তারও ৬০ বছর আগে অগাস্টা অ্যাডা কিং (কাউন্টেস অফ লাভলেস)-এর উদ্ভাবিত অ্যালগোরিদম, ১৯২০-এর দশকে ভ্যানিভার বুশের উদ্ভাবিত অ্যানালগ কম্পিউটার, এবং ১৯৩০-এর দশকে হাওয়ার্ড আইকেনকনরাড ৎসুজে কর্তৃক উদ্ভাবিত ইলেকট্রনিক কম্পিউটার - এ সবই কম্পিউটার বিজ্ঞানের জন্মে ভূমিকা রাখে। ১৯৪০-এর দশকের শেষের দিকে জন ভন নিউম্যানের রচনাবলি নতুন এই শাস্ত্রের তাত্ত্বিক ভিত্তি সুদৃঢ় করে।

১৯৪০-এর দশকের শেষে ও ১৯৫০-এর দশকের শুরুর দিকে কম্পিউটার বিজ্ঞানের আদি পর্যায়ে গবেষণার লক্ষ্য ছিল বিজ্ঞান ও প্রকৌশলের জন্য ব্যবহৃত গণনা করার প্রক্রিয়াগুলোকে স্বয়ংক্রিয় রূপ দেওয়া। কোন প্রক্রিয়ায় গণনা করলে তাড়াতাড়ি সঠিক ফল পাওয়া যাবে, তা বের করার জন্য বিজ্ঞানী ও প্রকৌশলীরা গণনার বিভিন্ন তাত্ত্বিক মডেল তৈরি করেন। এসময় কম্পিউটার বিজ্ঞান এবং গণিতের সাংখ্যিক বিশ্লেষণ নামক শাখার মধ্যে বহু মিল ছিল, যে শাখায় গণনার নির্ভুলতা ও যথার্থতা নিয়ে গবেষণা করা হত।

১৯৫০ ও ১৯৭০-এর দশকের মধ্যবর্তী সময়ে কম্পিউটারের ব্যবহার বৃদ্ধি পায়। কম্পিউটার বিজ্ঞানীরা এসময় কম্পিউটারের ব্যবহার সরল করার উদ্দেশ্যে এক ধরনের কৃত্রিম ভাষা তথা প্রোগ্রামিং ভাষাসমূহের উদ্ভাবন করেন এবং কম্পিউটার ও কম্পিউটার ব্যবহারকারীর মধ্যে যোগসূত্র স্থাপনকারী অপারেটিং সিস্টেম প্রোগ্রামের প্রচলন করেন। তাঁরা কম্পিউটারের নতুন ব্যবহারিক ক্ষেত্র সন্ধান ও নতুন ধরনের কম্পিউটার ডিজাইন নিয়েও গবেষণা চালান। এসময় প্রথম কম্পিউটার নেটওয়ার্ক সৃষ্টি করা হয় এবং গণনা ও মনের চিন্তাধারার মধ্যে সম্পর্ক নিয়ে গবেষণা শুরু হয়। কম্পিউটার বিজ্ঞানের পরিসর যথেষ্ট বৃদ্ধি পায় এবং ১৯৬০-এর দশকের শুরুর দিকেই পাশ্চাত্যের বিশ্ববিদ্যালয়গুলোতে কম্পিউটার বিজ্ঞান বিভাগ চালু ও ডিগ্রী প্রদান শুরু হয়।

১৯৭০-এর দশকে কম্পিউটার চিপ প্রস্তুতকারকেরা ব্যাপকভাবে মাইক্রোপ্রসেসর উৎপাদন করতে শুরু করেন। মাইক্রোপ্রসেসর হল কম্পিউটারের ভেতরে অবস্থিত প্রধান তথ্য প্রক্রিয়াকারী কেন্দ্র। এই নতুন প্রযুক্তি কম্পিউটার শিল্পব্যবস্থায় বিপ্লব আনে; কম্পিউটার তৈরির খরচ বহুলাংশে কমে যায় এবং কম্পিউটার তথ্য প্রক্রিয়াকরণের দ্রুতি বহুগুণে বৃদ্ধি পায়। মাইক্রোপ্রসেসরের ওপর ভিত্তি করেই সৃষ্টি হয় ব্যক্তিগত কম্পিউটার বা পিসি। পিসি-র আবির্ভাবের পর কম্পিউটার অ্যাপ্লিকেশনের ব্যবহার বহুগুণে বেড়ে যায়। ১৯৭০-এর শুরু থেকে ১৯৮০-র দশকের পুরোটা জুড়ে কম্পিউটার বিজ্ঞানের পরিধির ব্যাপক প্রসার ঘটে। কম্পিউটিং শিল্পে উদ্ভাবিত নতুন নতুন প্রযুক্তি চালনার জন্য এবং ব্যক্তিগত কম্পিউটারে ব্যবহার্য নতুন অ্যাপ্লিকেশনগুলো তৈরির জন্য এর কোন বিকল্প ছিল না। এভাবে কম্পিউটার বিজ্ঞানের অতীতের গবেষণাগুলোর ফলাফল ব্যক্তিগত কম্পিউটারের প্রসারের মাধ্যমে ধীরে ধীরে সাধারণ জনগণের কাছে পৌঁছাতে শুরু করে।

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

[সম্পাদনা] লক্ষ্য

কম্পিউটার বিজ্ঞানের লক্ষ্য বিচিত্র। জনসাধারণকে বর্তমান কম্পিউটারগুলো চালনা শিক্ষা দেয়া থেকে শুরু করে ভবিষ্যতমুখী প্রযুক্তি, যেগুলো কয়েক দশকেও বাস্তবায়নের সম্ভাবনা নেই, সেগুলো নিয়ে গবেষণা – এ সবই কম্পিউটার বিজ্ঞানের আওতায় পড়ে। সব বিশেষ বিশেষ লক্ষ্যেরই মূল লক্ষ্য তথ্যের উন্নত ব্যবহারের মাধ্যমে মানবজাতির বর্তমান ও ভবিষ্যতের উন্নতিসাধন।

তত্ত্ব, প্রকৌশল ও পরীক্ষা নিরীক্ষা – এ তিনের সমন্বয়েই কম্পিউটার বিজ্ঞান। কম্পিউটার বিজ্ঞানীরা একটি তত্ত্ব দাঁড় করান, তারপর সেই তত্ত্বের ওপর ভিত্তি করে হার্ডওয়্যার ও সফটওয়্যারের সমন্বয়ে একটি কম্পিউটার ব্যবস্থা তৈরি করেন এবং তারপর সেটি পরীক্ষা করে দেখেন।

অনেকের মনে হতে পারে যে কম্পিউটার পরীক্ষানিরীক্ষার আবার প্রয়োজন কি? কম্পিউটারকে যা আদেশ দেওয়া হয় তা-ই সে পালন করে। কিন্তু প্রকৃতপক্ষে বাস্তব বিশ্বে কম্পিউটারের নানা জটিল ব্যবহারের সময় কম্পিউটারের অনেক অজানা আচরণ পরিলক্ষিত হয় যেগুলোর পূর্বাভাস দেওয়া যায় না। পরীক্ষা নিরীক্ষা আর বৈজ্ঞানিক পদ্ধতি অনুসরণ তাই কম্পিউটার বিজ্ঞানের গুরুত্বপূর্ণ অংশ।

[সম্পাদনা] শাখা

কম্পিউটার বিজ্ঞানকে নিচের শাখাগুলোতে ভাগ করা যায়:

  1. অ্যালগোরিদম ও উপাত্ত কাঠামোসমূহ
  2. প্রোগ্রামিং ভাষাসমূহ
  3. কম্পিউটার স্থাপত্য
  4. অপারেটিং ব্যবস্থা ও নেটওয়ার্ক
  5. সফটওয়্যার প্রকৌশল
  6. ডাটাবেস ও তথ্য আনয়ন
  7. কৃত্রিম বুদ্ধিমত্তা ও রোবটবিজ্ঞান
  8. গ্রাফিক্‌স
  9. মানুষ-কম্পিউটার মিথষ্ক্রিয়া
  10. গণনামূলক বিজ্ঞান
  11. প্রাতিষ্ঠানিক তথ্যবিজ্ঞান
  12. জীব-তথ্যবিজ্ঞান

[সম্পাদনা] অ্যালগোরিদম ও উপাত্ত সংগঠনসমূহ

অ্যালগোরিদম ও উপাত্ত সংগঠনসমূহ ব্যবহার করেই কম্পিউটার প্রোগ্রাম রচনা করা হয়। প্রথিতযশা কম্পিউটার বিজ্ঞানী নিকলাউস ভির্টের একটি সুবিখ্যাত বইয়ের নাম ছিল Algorithms + Data Structures = Programs (১৯৭৫)। অ্যালগোরিদম (algorithm) হল সুনির্দিষ্ট ও সসীম সংখ্যক ধাপবিশিষ্ট পদ্ধতি, যা সসীম সময়ের মধ্যে ও সসীম পরিমাণ কম্পিউটার মেমরি ব্যবহার করে কোন সমস্যার সমাধান করে। অতিব্যবহৃত অ্যালগোরিদমগুলোর মধ্যে আছে কোন উপাত্ত সংগ্রহ অনুসন্ধান (searching), উপাত্ত বিন্যস্তকরণ (sorting), মেট্রিক্স গুণন ও অন্যান্য সাংখ্যিক অপারেশনসমূহ, ইত্যাদি। কোন উপাত্ত সংগঠন (data structure) হল তথ্যের একটি নির্দিষ্ট ধরনের সুবিন্যস্ত রূপ, যা উপাত্তের বিভিন্ন মানের মধ্যে সম্পর্ক স্থাপন করে। লিস্ট, অ্যারে, রেকর্ড, স্ট্যাক, কিউ, ট্রি, ইত্যাদি কিছু বহু-ব্যবহৃত উপাত্ত সংগঠন।

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

জটিল অ্যালগোরিদম এবং বাস্তব অভিজ্ঞতাভিত্তিক সমস্যাগুলির ক্ষেত্রে পরীক্ষা-নিরীক্ষার সহায়তা নেয়া হয়। অ্যালগোরিদমসমূহকে টেস্ট কেসের সুইট দিয়ে মূল্যায়ন করা হয়। বিভক্তি-ও-বিজয় অ্যালগোরিদম, লোভী অ্যালগোরিদম, ডাইনামিক প্রোগ্রামিং, সসীম অবস্থার যন্ত্র ইন্টারপ্রেটার, স্ট্যাক যন্ত্র ইন্টারপ্রেটার, অভিজ্ঞতাভিত্তিক অনুসন্ধান ও দৈবকৃত অ্যালগোরিদমের আচরণ নির্ধারণে পরীক্ষা-নিরীক্ষা ব্যাপক সাহায্য করেছে। এছাড়াও পরীক্ষার মাধ্যমে সমান্তরাল ও বিতরণকৃত অ্যালগোরিদমের কর্মদক্ষতা সম্পর্কে অন্তর্দৃষ্টি লাভ করা সম্ভব হয়েছে।

[সম্পাদনা] প্রোগ্রামিং ভাষাসমূহ

অ্যালগোরিদম ও উপাত্ত সংগঠনগুলো কম্পিঊটারে বাস্তবায়িত করার জন্য সফ্‌টওয়্যার প্রকৌশলীরা প্রোগ্রাম রচনা করেন। এই প্রোগ্রামগুলো লিখতে গিয়ে তাঁরা যেসব কৃত্রিম ভাষার সাহায্য নেন, তাদেরকে প্রোগ্রামিং ভাষা বলা হয়। মানুষের মুখের স্বাভাবিক ভাষা দ্ব্যর্থবোধক এবং এ ভাষার পদসংগঠন ও শব্দার্থ বহুভাবে অনুধাবন করা যায়, তাই এটি প্রোগ্রাম লেখার জন্য উপযুক্ত নয়। এর পরিবর্তে সরল ও দ্ব্যর্থহীন কৃত্রিম প্রোগ্রামিং ভাষার আশ্রয় নেয়া হয়। কম্পিউটার বিজ্ঞানীরা এমন প্রোগ্রামিং ভাষা উদ্ভাবনের চেষ্টা করেন, যা দিয়ে সহজে প্রোগ্রাম লেখা যায় এবং প্রোগ্রামে ভুলের পরিমাণ কম হয়। প্রোগ্রামিং ভাষাগুলোকে যন্ত্রের ভাষায় ভাষান্তরিত করে নিতে হয়, যাতে কম্পিউটার প্রোগ্রামের নির্দেশগুলো পালন করতে পারে। কম্পিউটার বিজ্ঞানীরা আরও ভাল ভাষান্তরকরণ অ্যালগোরিদম বের করার চেষ্টা করেন, যাতে যন্ত্রের ভাষায় ভাষান্তরিত প্রোগ্রামগুলো আরও দক্ষভাবে সম্পাদন করা যায়।

কম্পিউটার বিজ্ঞানের একেবারে আদি পর্যায়ে বাইনারী সংখ্যাভিত্তিক যান্ত্রিক ভাষায় (machine language) কম্পিউটারের হার্ডওয়্যারকে নির্দেশ দেয়া হত। এরপর কাজের সুবিধার জন্য প্রথম যেসব প্রোগ্রামিং ভাষা তৈরি করা হয়, তাদের নাম অ্যাসেম্বলি ভাষা। এগুলি যান্ত্রিক ভাষা থেকে খুব একটা বেশি পৃথক ছিল না। ১৯৫০-এর দশক থেকে ব্যবহারকারীরা আরও স্বাচ্ছন্দ্যদায়ী প্রোগ্রামিং ভাষা লেখা শুরু করেন। এদের মধ্যে ফোরট্রান ভাষাটি ছিল অন্যতম। ফোরট্রান প্রোগ্রামারদেরকে গাণিতিক অপারেশন ছাড়াও বীজগাণিতিক এক্সপ্রেশন লেখার সুযোগ দেয়। ১৯৬০-এর দশকে ফোরট্রানের একটি সরলীকৃত সংস্করণ বেসিক তৈরি করা হয়, এবং এটি নতুনদের শেখার জন্য প্রথম প্রোগ্রামিং ভাষা হিসেবে স্কুল-কলেজে ব্যাপক জনপ্রিয়তা লাভ করে। ফোরট্রান উদ্ভাবনের কাছাকাছি সময়ে আরেকটি ভাষা কোবোল তৈরি করা হয়, যেটি সাধারণ ব্যবসায়িক রেকর্ড, নথিপত্র, ও অন্যান্য ব্যাবসায়িক প্রক্রিয়া দেখাশোনা করার জন্য ব্যবহার করা হয়।

কোবোল ও ফোরট্রান এবং এদের উত্তরসূরী প্যাসকাল ও সি হল নির্দেশমূলক ভাষা (Imperative language)। অর্থাৎ এগুলোতে কম্পিউটারকে কতগুলি প্রত্যক্ষ নির্দেশ দেয়ার মাধ্যমে কাজ করানো হয়; এটা যান্ত্রিক ভাষার সাথে অনেকটাই তুলনীয়। এই ধারার আরও দুটি ভাষা হল অ্যাডা ও অ্যালগল। এছাড়াও আরেক ধরনের ভাষা আছে যেগুলি ফাংশনভিত্তিক (Functional), অর্থাৎ প্রোগ্রামের ভিতরের অংশবিশেষ বা ফাংশন কল করে প্রোগ্রামিং-এর লক্ষ্য পূরণ করা হয়। ফাংশনভিত্তিক ভাষার মধ্যে সবচেয়ে পরিচিত হচ্ছে লিস্প; এমএল ও হ্যাস্কেল-ও ফাংশনভিত্তিক ভাষা। পরবর্তীতে বস্তু-সংশ্লিষ্ট (Object Oriented অব্জেক্ট-ওরিয়েন্টেড) ভাষা উদ্ভাবন করা হয় যেখানে উপাত্ত ও মেথড আধারে আবৃত করা হয়, এবং এই আধারকে বলা হয় অবজেক্ট বা বস্তু। এই ধারায় একাধিক অবজেক্টের মধ্যে বার্তা আদানপ্রদান করে প্রোগ্রামিঙের লক্ষ্য পূরণ করা হয়। স্মলটক, সি++, আইফেল, ভিজুয়াল বেসিক, জাভা, ইত্যাদি বস্তু-সংশ্লিষ্ট ভাষার উদাহরণ। এছাড়াও আছে উপাত্ত-প্রবাহ (Dataflow ডাটাফ্লো) ভাষা যেমন সিসাল, ভাল, ইদ নুভো, লজিক প্রোগ্রামিং ভাষা যেমন প্রোলগ, স্ট্রিং প্রসেসিং ভাষা যেমন - স্নোবল ও আইকন, এবং সহবর্তমানতাভিত্তিক (concurrency-based) প্রোগ্রামিং ভাষা যেমন - কনকারেন্ট প্যাসকাল, অকাম, এসআর, মডুলা-৩।

প্রোগ্রামিং ভাষার তত্ত্বে আলোচিত বিষয়গুলির মধ্যে রয়েছে:

  • উপাত্ত টাইপ, অপারেশন, অপেরান্ড, নিয়ন্ত্রণ কাঠামোসমূহ, সম্প্রসারণযোগ্য ভাষাকৌশল যার সাহায্যে নতুন উপাত্ত টাইপ ও অপারেশন সৃষ্টি করা যায়।
  • উচ্চস্তরের ভাষা থেকে মেশিন ভাষায় অনুবাদ, কম্পাইলার, ভাষা প্রক্রিয়াকারক।
  • বিমূর্তায়ন, সিনট্যাক্স বা অন্বয়তত্ত্ব, সেমান্টিক্‌স বা অর্থবিজ্ঞান, প্র্যাগম্যাটিক্‌স বা প্রয়োগতত্ত্ব।
  • ব্যাকরণ, বিধিগত ভাষাসমূহ, স্বয়ংক্রিয়ক তত্ত্ব, টুরিং যন্ত্র, ল্যাম্‌ডা ক্যালকুলাস, পাই ক্যালকুলাস, বিধেয়মূলক যুক্তিবিজ্ঞান।
  • নিয়মিত এক্সপ্রেশন, টাইপ তত্ত্ব, চম্‌স্কি স্তরক্রম
  • স্থির টাইপিং, চলমান টাইপিং
  • ফাংশনভিত্তিক প্রোগ্রামিং, পদ্ধতিভিত্তিক প্রোগ্রামিং, বস্তু-সংশ্লিষ্ট প্রোগ্রামিং, যুক্তি নির্ধারণ, উপাত্ত ধারা।

[সম্পাদনা] কম্পিউটার স্থাপত্য

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

[সম্পাদনা] অপারেটিং সিস্টেম ও নেটওয়ার্ক

অপারেটিং সিস্টেম হল কম্পিউটারের সার্বিক পরিচালনায় নিয়োজিত প্রোগ্রামসমষ্টি। অপারেটিং সিস্টেম ব্যবহারকারী ও কম্পিউটারের মধ্যকার যোগসূত্র (interface) প্রদান করে, কম্পিউটারের স্মৃতিতে অন্যান্য প্রোগ্রাম স্থাপন করে এবং কম্পিউটার কীভাবে সেগুলো চালাবে তা দেখাশোনা করে, কম্পিউটারের বিভিন্ন সম্পদ, যেমন - ডিস্ক পরিসর (disk space) ব্যবস্থাপনা করে, অননুমোদিত ব্যবহার থেকে কম্পিউটারকে রক্ষা করে, এবং সংরক্ষিত উপাত্তের নিরাপত্তা নিশ্চিত করে। কম্পিউটার বিজ্ঞানীরা কীভাবে অপারেটিং ব্যবস্থা আরও সহজে ব্যবহার করা যায়, সংবেদনশীল উপাত্তের ব্যবহারাধিকার প্রতিরোধ করে কীভাবে অন্যান্য উপাত্ত অংশীদারযোগ্য করা যায়, কীভাবে কম্পিউটারের স্মৃতি ও সময়ের আরও দক্ষ ব্যবহার করা যায়, তার চেষ্টা করেন।

[সম্পাদনা] সফটওয়্যার প্রকৌশল

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

[সম্পাদনা] ডাটাবেস ও তথ্য আনয়ন ব্যবস্থাসমূহ

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

তথ্য আনয়ন ব্যবস্থা (information retrieval system) বলতে এক ধরনের ডকুমেন্ট-সমষ্টিকে বোঝায় যে ডকুমেন্টগুলো পরিষ্কারভাবে বিন্যস্ত নয়,অথচ এগুলো থেকে বিভিন্ন ধরনের তথ্য বা উপাত্ত অনুসন্ধান করা প্রয়োজন,যেমন - কোন সংবাদপত্রে প্রকাশিত বহু নিবন্ধের সমষ্টি। কম্পিউটার বিজ্ঞানীরা এই ডকুমেন্টগুলো থেকে উপাত্তের নির্ঘণ্ট (index) বের করার অ্যালগোরিদম রচনা করেন। নির্ঘণ্ট রচনার পর এগুলো থেকে সহজে উপাত্ত ও তথ্য আনয়নের জন্য বিভিন্ন ধরনের কৌশল প্রয়োগ করা হয়। তথ্য আনয়ন ব্যাবস্থার সাথে সম্পর্কিত আরেকটি ক্ষেত্র হচ্ছে উপাত্ত খনন (data mining), যেখানে বিপুল পরিমাণ উপাত্তের মধ্য থেকে বিভিন্ন বিন্যাস (pattern) শনাক্ত করার উপায়গুলো বের করা হয়; এই শনাক্তকৃত বিন্যাসগুলো পরবর্তীতে সংশ্লিষ্ট ক্ষেত্রে নানা সিদ্ধান্ত গ্রহনে সাহায্য করে।

ডাটাবেস ও আনয়ন ব্যবস্থাসমূহের গবেষণায় যে সমস্ত তত্ত্ব প্রয়োগ করা হয়, তাদের মধ্যে আছে সাম্পর্কিক বীজগণিত (relational algebra), সাম্পর্কিক ক্যালকুলাস (relational calculus), সহবর্তমানতা তত্ত্ব (concurrency theory), ক্রমায়নযোগ্য আদান-প্রদান (serialiable transaction), ডেডলক প্রতিরোধ (deadlock prevention), সময়-সামঞ্জস্যীকৃত হালনাগাদ (synchronized upadte), নিয়ম-ভিত্তিক সিদ্ধান্তগ্রহণ (rule-based inference), বিন্যস্তকরণ (sorting), অনুসন্ধান (searching), নির্ঘণ্ট তৈরিকরণ (indexing), কর্মদক্ষতা বিশ্লেষণ (performance analysis), তথ্যের গোপনীয়তা (information privacy) ও তথ্য ব্যবহারকারীর পরিচয় যাচাইকরণ (authentication)।

উপাত্তের যৌক্তিক গঠন ও বিভিন্ন উপাত্ত উপাদানের মধ্যে সম্পর্ক বোঝার জন্য বিভিন্ন উপাত্ত মডেল ব্যবহার করা হয়, যেমন - বস্তুভিত্তিক, রেকর্ডভিত্তিক ও বস্তু-সাম্পর্কিক।

[সম্পাদনা] প্রাতিষ্ঠানিক তথ্যবিজ্ঞান

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

[সম্পাদনা] জীব-তথ্যবিজ্ঞান

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

[সম্পাদনা] কৃত্রিম বুদ্ধিমত্তা

মানুষের বুদ্ধিমত্তা ও ইন্দ্রিয়ের কার্যপদ্ধতি কীভাবে কম্পিউটার ও যন্ত্রের সাহায্যে অনুকরণ করা যায়, তা কৃত্রিম বুদ্ধিমত্তা শাখার আলোচ্য বিষয়। বুদ্ধিমত্তা সম্পর্কে আমাদের ধারণা আরও উন্নত করার জন্য এই শাখায় মানুষের আচরণের কম্পিউটার মডেল তৈরি করা হয়। কৃত্রিম বুদ্ধিমত্তা শাখার বিভিন্ন উপশাখার মধ্যে রয়েছে যন্ত্র শিখন (machine learning), সিদ্ধান্ত উপনয়ন (inference), বোধন (cognition), জ্ঞান উপস্থাপন (knowledge representation), সমস্যা সমাধান (problem solving), ঘটনাভিত্তিক যুক্তিপ্রদান (case based reasoning), স্বাভাবিক ভাষা অনুধাবন (natural language understanding), উক্তি শনাক্তকরণ (speech recognition), কম্পিউটার দৃষ্টি (computer vision), কৃত্রিম নিউরাল নেটওয়ার্ক (artificial neural network), ইত্যাদি।

[সম্পাদনা] রোবটবিজ্ঞান

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

[সম্পাদনা] কম্পিউটার গ্রাফিক্‌স

ভৌত এবং কাল্পনিক বস্তু ও তাদের গতি দ্বিমাত্রিক পর্দা বা ত্রিমাত্রিক হলোগ্রামে কম্পিউটারের মাধ্যমে প্রদর্শনের গবেষণাকে কম্পিউটার গ্রাফিক্‌স বলা হয়। কীভাবে দক্ষভাবে স্বয়ংক্রিয় উপায়ে বস্তুসমূহের ছবি তৈরি করা যায়, কীভাবে বাস্তব সময়ে (real time) জটিল বস্তুসমূহের চলন পর্দায় দেখানো যায়, কীভাবে তথ্যসেটসমূহ প্রদর্শন করা যায় যাতে মানুষের বুঝতে সুবিধা হয়, কীভাবে সিমুলেশন তৈরি করা যায় যাকে বাস্তব থেকে আলাদা করতে কষ্ট করতে হয়, ইত্যাদি এই শাখার আলোচ্য বিষয়।

কম্পিউটার গ্রাফিক্‌স গণিতের গণনামূলক জ্যামিতি শাখার প্রভূত সহায়তা নিয়ে থাকে। প্রদর্শন পর্দায় কীভাবে বস্তুসমূহের অভিক্ষেপ ফেলা যায়, অভিক্ষেপ থেকে লুকানো রেখাগুলি কী করে সরানো যায়, কীভাবে মসৃণতা, ছায়া, প্রতিফলন ও স্বচ্ছতা সৃষ্টি করা যায়, ইত্যাদি সংক্রান্ত নতুন নতুন অ্যালগোরিদম এ শাখায় উদ্ভাবন করার চেষ্টা করা হয়। জটিল প্রাকৃতিক দৃশ্যাবলীর অনুকরণ করার জন্য বিশৃঙ্খলা তত্ত্বের সাহায্য নেয়া হয়। পর্দায় আলোর রঙের ব্যাপারে রঙ তত্ত্বের সাহায্য নেয়া হয়। নমুনা তত্ত্ব ব্যবহার করে অবাঞ্ছিত কোলাহল দূর করে পরিচ্ছন্ন ছবি তৈরি করা হয়। এছাড়া রৈখিক বীজগণিত, পদার্থবিজ্ঞান, গাণিতিক বিশ্লেষণ, অরৈখিক ব্যবস্থা, এ সবই কম্পিউটার গ্রাফিক্‌সে কাজে আসে।

মনিটরের পর্দায় ছবি বা বর্ণ-সাংখ্যিক ক্যারেক্টার (Alphanumeric) দুই-ই প্রদর্শিত হতে পারে। কম্পিউটারের মেমরিতে যেকোন ছবি সাধারণত দুইভাবে সংরক্ষিত হতে পারে: র‌্যাস্টার গ্রাফিক্‌সভেক্টর গ্রাফিক্‌স। র‌্যাস্টার গ্রাফিক্‌সে যেকোন ছবি অনেকগুলি বিন্দুসমষ্টির একটি মেট্রিক্স হিসেবে গণ্য করা হয়। প্রতিটি বিন্দুর রঙ, উজ্জ্বলতা ও অন্যান্য তথ্য মেমরিতে এক বা একাধিক বিট আকারে রক্ষিত থাকে। একেকটি ছবির জন্য এভাবে যে বিপুল সংখ্যক মেমরির প্রয়োজন হয়, তা দক্ষভাবে ব্যবহারের জন্য কম্পিউটার গ্রাফিক্‌সের বিশেষায়িত প্রোগ্রামগুলিতে বিশেষ ধরনের অ্যালগোরিদম ব্যবহার করা হয়। ভেক্টর গ্রাফিক্‌সে একটি ছবি অনেকগুলি রেখার সমষ্টি হিসেবে পরিগণিত হয়। প্রতিটি রেখা-সংক্রান্ত তথ্য মেমরিতে রক্ষিত থাকে। ৯০-এর দশক থেকে কম্পিউটার মনিটরে র‌্যাস্টার প্রযুক্তিই ব্যবহৃত হয়। এমনকি ভেক্টর প্রযুক্তিতে তৈরি ছবিও র‌্যাস্টারে পরিণত করে নেয়া হয়। র‌্যাস্টার পদ্ধতির সীমাবদ্ধতা হল এতে কোনাকুনি রেখাগুলি কাছ থেকে খাঁজ-কাটা দেখায়।

কম্পিউটার গ্রাফিক্‌সের ব্যবহার সবচেয়ে বেশি পরিলক্ষিত হয় বিনোদন শিল্পে। স্পেশাল ইফেক্ট, কম্পিউটার অ্যানিমেশন, সিমুলেশন, ইত্যাদি কম্পিউটার বিজ্ঞানের এই শাখার অবদান। কম্পিউটার গ্রাফিক্‌সের গবেষণা বেশ কিছু গ্রাফিক্‌স মান বা স্ট্যান্ডার্ডের জন্ম দিয়েছে যেমন GKS, PHIGS, VDI, ইত্যাদি। এছাড়াও রয়েছে মান প্রিণ্টার ভাষা যেমন- পোস্টস্ক্রিপ্ট। ওয়েব পেজে ভার্চুয়াল রিয়ালিটির জন্য মান ভাষা VRML সৃষ্টি করা হয়েছে। চিকিৎসকদের সাহায্য করার জন্য তৈরি করা হয়েছে ত্রিমাত্রিক ভিজুয়ালাইজার।

[সম্পাদনা] আরও দেখুন

Wikiversity
উইকিভার্সিটিতে
Portal:Computer Science বিষয়ে বিস্তারিত তথ্য রয়েছে।
এই নিবন্ধটি অসম্পূর্ণ। আপনি চাইলে এটিকে সমৃদ্ধ করতে পারেন