| ক্রম | বিষয় | লিংক |
|---|---|---|
| ১ | Analytical Engine কিভাবে কাজ করতো? | 👉 এখানে দেখুন |
| ২ | Punch Card কি এবং এটি দিয়ে কিভাবে প্রোগ্রাম লিখতো? | 👉 এখানে দেখুন |
| ৩ | Punch Card থেকে ডাটা কিভাবে Ram এ উঠতো? | 👉 এখানে দেখুন |
| ৪ | CPU কিভাবে Pointing Register এর সাহায্যে RAM এর ডাটাকে Execute করে? | 👉 এখানে দেখুন |
| ৫ | কোনটা ৩২ বিট, ৬৪ বিট, ২০ বিট কম্পিউটার কিভাবে বুঝবো? | 👉 এখানে দেখুন |
| ৬ | কম্পিউটারের ডেটা প্রকাশের এককগুলো | 👉 এখানে দেখুন |
| ৭ | What is Process? | 👉 এখানে দেখুন |
এনালিটিক্যাল ইঞ্জিনের মূল কাজ ছিল গাণিতিক হিসাব-নিকাশ করা। এটি যোগ, বিয়োগ, গুণ এবং ভাগের মতো মৌলিক গাণিতিক কাজ করতে সক্ষম ছিল। এটি আধুনিক কম্পিউটারের পূর্বসূরি বা ভিত্তি হিসেবে বিবেচিত হয়।
ইতিহাসঃ
চার্লস ব্যাবেজের অ্যানালিটিক্যাল ইঞ্জিন (Analytical Engine) হলো বিশ্বের প্রথম প্রস্তাবিত জেনারেল-পারপাস কম্পিউটার (সাধারণ উদ্দেশ্যে ব্যবহারযোগ্য গণনাযন্ত্র)। এটি ১৮৩৭ সালে ডিজাইন করা হয়েছিল, কিন্তু সম্পূর্ণ বাস্তবায়িত হয়নি। এটির কাজের পদ্ধতি আধুনিক কম্পিউটারের মতোই ছিল, নিচে সহজভাবে বোঝানো হলো:
১. ইনপুট দেওয়া (Input)
অ্যানালিটিক্যাল ইঞ্জিনে ডেটা এবং নির্দেশনা (প্রোগ্রাম) দেওয়া হতো পাঞ্চ কার্ড (ছিদ্রযুক্ত কার্ড) এর মাধ্যমে। এটি আজকের কী-বোর্ড বা মাউসের মতো কাজ করত।
২. প্রসেসিং ইউনিট (Mill)
এটির মূল গণনাকারী অংশকে "Mill" বলা হতো (আজকের CPU-র মতো)। এটি যোগ, বিয়োগ, গুণ, ভাগ সব ধরনের গাণিতিক অপারেশন করতে পারত।
৩. মেমোরি (Store)
ডেটা সংরক্ষণের জন্য ছিল "Store" (আজকের RAM বা হার্ড ডিস্কের মতো)। এখানে সংখ্যা এবং মধ্যবর্তী ফলাফল জমা রাখা হতো।
৪. কন্ট্রোল মেকানিজম
এটি শুধু গাণিতিক হিসাব করতে পারত না, বরং এটি শর্তসাপেক্ষ সিদ্ধান্তও নিতে পারত। যেমন, যদি একটি সংখ্যা শূন্যের চেয়ে বড় হয়, তবে একটি নির্দিষ্ট কাজ করবে; অন্যথায় আরেকটি কাজ করবে। (if-else লজিকের মতো)।
৫. আউটপুট
চূড়ান্ত ফলাফল (Output) প্রিন্ট করা যেত বা নতুন পাঞ্চ কার্ডে সংরক্ষণ করা যেত, যাতে পরে ব্যবহার করা যায়।
Picture Credit: Chatgpt
পাঞ্চ কার্ডঃ
পাঞ্চ কার্ড ছিল মোটা কাগজের কার্ড, সাধারণত ৭.৩৮ ইঞ্চি লম্বা আর ৩.২৫ ইঞ্চি চওড়া। এই কার্ডে ৮০টা কলাম থাকতো, আর প্রতি কলামে ১২টা সারি। প্রতিটা কলামে ছোট ছোট গর্ত পাঞ্চ করে নির্দিষ্ট অক্ষর বা নির্দেশনা লেখা হতো। এই গর্তগুলোই কম্পিউটার পড়তো। ধরেন, আপনি একটা প্রোগ্রাম লিখতে চান যেটা দুইটা সংখ্যা যোগ করবে। তাহলে এই নির্দেশনাগুলোকে প্রথমে একটা কোডিং ভাষায় (যেমন ফরট্রান বা কোবল) লিখতে হতো।
Picture Credit: Chatgpt
কোড লেখার প্রক্রিয়াটা ছিল এমন:
Picture Credit: Cloude ai
১. কোড হাতে লেখা: প্রোগ্রামার প্রথমে কাগজে হাতে কোড লিখতো। ধরেন, ফরট্রানে একটা লাইন: Z = X + Y। এটা একটা নির্দেশনা যে X আর Y যোগ করে Z তে রাখতে হবে।
২. পাঞ্চিং মেশিনে টাইপ: এরপর একটা পাঞ্চিং মেশিনে (যেটা দেখতে অনেকটা টাইপরাইটারের মতো) বসে কোডের প্রতিটা অক্ষর বা নির্দেশনা টাইপ করা হতো। প্রতিটা অক্ষরের জন্য কার্ডে নির্দিষ্ট জায়গায় গর্ত হতো। যেমন, 'X' লেখার জন্য একটা নির্দিষ্ট প্যাটার্নে গর্ত করা হতো, আর '+' এর জন্য আরেকটা প্যাটার্ন।
৩. কার্ডের স্ট্যাক তৈরি: একটা প্রোগ্রামে অনেক লাইন কোড থাকতে পারে, তাই অনেকগুলো কার্ড লাগতো। প্রতিটা কার্ডে একটা বা কয়েকটা নির্দেশনা থাকতো। এই কার্ডগুলোকে ঠিকঠাক সিরিয়ালে সাজিয়ে একটা স্ট্যাক বানানো হতো।
৪. কম্পিউটারে দেওয়া: এই কার্ডের স্ট্যাকটা কম্পিউটারের কার্ড রিডারে দেওয়া হতো। রিডারটা গর্তগুলো পড়ে বুঝতো কী নির্দেশনা দেওয়া হচ্ছে। গর্তের প্যাটার্ন থেকে কম্পিউটার বাইনারি কোডে রূপান্তর করতো, আর সেই কোড চালিয়ে প্রোগ্রাম রান করতো।
মজার ব্যাপার হলো, এই পাঞ্চ কার্ডে ভুল হলে পুরো কার্ডটা ফেলে নতুন করে লিখতে হতো। একটা কার্ড ভুল জায়গায় চলে গেলে বা ফেলে দিলে পুরো প্রোগ্রাম গোলমাল হয়ে যেতো! 😅 তাই প্রোগ্রামাররা খুব সাবধানে কার্ডগুলো সাজাতো, এমনকি কার্ডে নম্বর লিখে রাখতো যাতে সিরিয়াল ঠিক থাকে।
তো, এভাবেই পাঞ্চ কার্ড দিয়ে প্রোগ্রাম লেখা হতো। এটা ছিল ধীর, কষ্টের কাজ, কিন্তু তখনকার দিনে এটাই ছিল কম্পিউটার প্রোগ্রামিংয়ের একমাত্র উপায়। এখন আমরা কিবোর্ডে টাইপ করে সেকেন্ডের মধ্যে কোড লিখে ফেলি, কিন্তু তখনকার প্রোগ্রামারদের ধৈর্য আর নিষ্ঠার কাছে স্যালুট দিতে হয়, তাই না? 😊
অ্যানালিটিক্যাল ইঞ্জিনের যুগে RAM বলে আলাদা কোনো জিনিস ছিল না, কিন্তু "স্টোর" নামে একটা মেমরি সেকশন ছিল যেটা আজকের RAM-এর মতোই কাজ করত! পুরো প্রক্রিয়াটা এমন ছিল:
Picture Credit: Chatgpt
১. পাঞ্চ কার্ড পড়ার যন্ত্র (কার্ড রিডার):
- কার্ডটাকে এই যন্ত্রের মধ্যে ঢুকানো হতো যেখানে ছিদ্রের অবস্থান অনুযায়ী মেটাল পিন বা আলো তৈরি হত।
- যেমন: কার্ডের ৩ নম্বর পজিশনে ছিদ্র/আলো থাকলে সেটা বাইনারি ১ আর না থাকলে ০ হিসাবে পড়া হতো।
২. ডাটা ট্রান্সফার:
- কার্ড রিডার থেকে ডাটা যেত "কন্ট্রোল ইউনিট"-এ (যেটা আজকের CPU-র মতো কাজ করত)।
- কন্ট্রোল ইউনিট ঠিক করত ডাটাটা কোথায় জমা হবে—স্টোরের (মেমরি) কোন লোকেশনে।
- উদাহরণ: ৫ + ৩ প্রোগ্রামে ৫ কে স্টোরের ০ নম্বর সেল-এ রাখা হতো, ৩ কে ১ নম্বর সেল-এ।
৩. মেমরিতে জমা হওয়া:
- অ্যানালিটিক্যাল ইঞ্জিনের স্টোর অংশটা ছিল গিয়ার, লিভার আর ডায়াল-এর সমষ্টি।
- প্রতিটি সংখ্যা জমা হতো যান্ত্রিক ডায়াল ঘুরিয়ে (ঘড়ির মতো!)—যেমন: ডায়ালে ৫ সেট করলে সেটাই মেমরিতে সেভ হয়ে যেত।
- আজকের RAM-এর মতো ইলেকট্রিক সিগনাল নয়, তখন মেকানিক্যাল মুভমেন্ট দিয়ে ডাটা স্টোর হতো!
ধরুন, আপনি ১০ + ২০ গণনা করতে চান। তখন:
- ১০ এর কার্ড পড়ে স্টোরের সেল ০ এ জমা হতো।
- ২০ এর কার্ড পড়ে স্টোরের সেল ১ এ জমা হতো।
- (+) এর কার্ড পড়ে মিল (প্রসেসর) সেল ০ ও সেল ১-এর ডাটা যোগ করে সেল ২-তে রাখত।
সংক্ষেপে:
পাঞ্চ কার্ড → Card Reader পড়ে → বাইনারি বানায় → RAM/STORE এ পাঠায় → CPU কাজ করে
Pointing Register হলো CPU-এর জন্য একটা "গাইড"। এটা বলে দেয় কোথায় কোন ডেটা আছে, যাতে CPU সেটা নিয়ে কাজ করতে পারে। তারপর CPU ডেটা প্রসেস করে এবং ফলাফল দেয়।
ধাপে ধাপে যেভাবে কাজ হয়:
১. Program Counter (PC)
প্রথমে CPU দেখে, PC (Pointing Register)-তে যেই অ্যাড্রেস আছে, সেখানে RAM-এ কী লেখা আছে।
২. Instruction Fetch
সেই অ্যাড্রেস থেকে CPU RAM-এর ডাটা নেয় — এটাকেই বলে “fetch” করা।
৩. Decode & Execute
ডাটা বা নির্দেশনা CPU বুঝে ফেলে (decode করে) আর সেই অনুযায়ী কাজ করে (execute করে)। যেমন: যোগ করো,গুন করো, লিখো ইত্যাদি।
৪. Program Counter আপডেট হয়
একটা ইনস্ট্রাকশন শেষ হলে, PC নিজে থেকেই পরের অ্যাড্রেসে চলে যায় (ধরেন, প্রথমে 100 থাকলে এখন 104 হয়ে যাবে)। যেন CPU জানে, পরেরবার কোথা থেকে পড়তে হবে।
RAM এ আছে এমন ৩টা লাইন:
100: LOAD A
104: ADD B
108: PRINTতখন: PC = 100 → CPU যাবে 100 নম্বর অ্যাড্রেসে → “LOAD A” নিবে
তারপর PC = 104 → “ADD B” নিবে
তারপর PC = 108 → “PRINT” নিবে
এইভাবে PC বা Pointing Register CPU কে পথ দেখিয়ে RAM থেকে একটার পর একটা নির্দেশনা বের করে আনে।
বিট কী?
বিট হলো কম্পিউটারের ভাষায় ডেটা প্রকাশের সবচেয়ে ছোট একক। এটা হয় 0 অথবা 1। মনে রাখতে হবে, ৮ বিট = ১ বাইট।
এখন যদি বলা হয় একটা কম্পিউটার ৩২-বিট, তার মানে হলো সেই কম্পিউটার একবারে ৩২টি বিট (অর্থাৎ ৩২টি 0 বা 1) নিয়ে কাজ করতে পারে। অর্থাৎ র্যামের একটি সেলে ৩২ টি বিট বা 0,1 পাশাপাশি রাখতে পারে।এরা সর্বোচ্চ ৪ জিবি RAM (2^32 বাইট) অ্যাড্রেস করতে পারে। এটা সাধারণত ছোট ধরনের কাজের জন্য ব্যবহৃত হয়।
একটা কম্পিউটার ৬৪-বিট মানে হলো সেই কম্পিউটার একবারে ৬৪ টি বিট (অর্থাৎ ৬৪টি 0 বা 1) নিয়ে কাজ করতে পারে। অর্থাৎ র্যামের একটি সেলে ৬৪ টি বিট বা 0,1 পাশাপাশি রাখতে পারে।এরা অনেক বেশি RAM অ্যাড্রেস করতে পারে, তাত্ত্বিকভাবে ১৮ কোটি গিগাবাইট (2^64 বাইট)। এটা বড় ধরনের কাজ, যেমন গেমিং, ভিডিও এডিটিং, বা ভারী সফটওয়্যার চালানোর জন্য উপযোগী।
২০ বিট কম্পিউটার আসলে খুব পুরোনো, ১৯৭০-৮০ এর দশকের কথা। এটা সাধারণত পুরোনো মেইনফ্রেম বা মিনি কম্পিউটারে ব্যবহৃত হতো, যেমন PDP-11 সিস্টেম। এগুলোর অ্যাড্রেস বাস ২০ বিটের হতো, মানে এরা ১ মেগাবাইট (2^20 বাইট) পর্যন্ত মেমরি অ্যাড্রেস করতে পারতো।
বিট → বাইট → কিলোবাইট → মেগাবাইট → গিগাবাইট → টেরাবাইট → পেটাবাইট
| একক | সমান | উদাহরণ |
|---|---|---|
| 1 KB (Kilobyte) | 1024 Bytes | ছোট TXT ফাইল |
| 1 MB (Megabyte) | 1024 KB | ছবি, গান |
| 1 GB (Gigabyte) | 1024 MB | মুভি, অ্যাপ |
| 1 TB (Terabyte) | 1024 GB | হার্ডডিস্ক, SSD |
| 1 PB (Petabyte) | 1024 TB | ডেটা সেন্টার |
| 1 EB (Exabyte) | 1024 PB | পুরো ইন্টারনেটের ডেটা! |
একটি প্রোগ্রামের লাইন ১ থেকে শেষ পর্যন্ত এক্সিকিউশন হওয়ার জন্য Ram এর একটা অংশ যেমনঃ (Code Segment,Data Segment,Stack,Heap) এবং CPU এর মধ্যে থাকা Processing unit, Register Set একসাথে মিলে যে কাজ সম্পাদন করে, ঐ কাজের প্রক্রিয়াকে Process বলে।
নোটঃ একটা Physical Computer এর যা যা আছে (Ram,CPU) প্রসেসেরও তা তা আছে তাই প্রসেসরকে Virtual Computer বলা হয়।
Picture Credit: Napkin AI




