ক্লড শ্যাননের মূল ধারনা—বিট, এন্ট্রপি, এবং চ্যানেল ধারণক্ষমতা—শিখুন এবং দেখুন কিভাবে এগুলো সংকোচন, ত্রুটি সংশোধন, নির্ভরযোগ্য নেটওয়ার্ক, ও আধুনিক ডিজিটাল মিডিয়াকে চালিত করে।

আপনি যখনই একটি টেক্সট পাঠান, ভিডিও দেখেন, বা ওয়াই‑ফাইতে যুক্ত হন—শ্যাননের আইডিয়াগুলো ব্যবহার করছেন। আপনার ফোন কোনোভাবে “শ্যানন জানে” বলে নয়; বরং আধুনিক ডিজিটাল সিস্টেমগুলো একটি সহজ প্রতিশ্রুতি থেকে নির্মিত: কাঁচা বাস্তব-জগতের বার্তাকে বিটে রূপান্তর করে, সেই বিটগুলো ত্রুটিপূর্ণ চ্যানেলে পাঠানো যায়, এবং মূল বিষয়বস্তু উচ্চ বিশ্বাসযোগ্যতায় পুনরুদ্ধার করা যায়।
তথ্যতত্ত্ব হল বার্তাগুলোর অঙ্কশাস্ত্র: একটি বার্তায় কতটা পছন্দ/অনিশ্চয়তা আছে, সেটা কতটা দক্ষভাবে উপস্থাপন করা যায়, এবং গোলমাল, অশান্তি, বা জটিলতা বাধা দিলে কিভাবে নির্ভরযোগ্যভাবে প্রেরণ করা যায়।
এখানে গণিত আছে, কিন্তু ব্যবহারিক ধারণা বোঝার জন্য গাণিতিক পটভূমি বাধ্যতামূলক নয়। আমরা প্রতিদিনের উদাহরণ ব্যবহার করে—কেন কিছু ছবি ভালভাবে সংকুচিত হয়, বা সিগনাল দুর্বল হওয়া সত্ত্বেও কল কেন ঠিক শোনায়—তথ্যগুলো बिना জটিল সূত্রে ব্যাখ্যা করব।
এই প্রবন্ধটি চারটি শ্যানন-প্রেরিত স্তম্ভ ঘিরেই:
শেষে আপনি স্পষ্টভাবে ভাবতে পারবেন: কেন উচ্চতর ভিডিও মান বেশি ব্যান্ডউইথ চায়, কেন “ওর বেশি বার” মানে সবসময় দ্রুত ইন্টারনেট নয়, কেন কিছু অ্যাপ ইনস্ট্যান্ট লাগে আর কিছু বাইরে ব্রাফার করে, এবং কেন প্রতিটি সিস্টেমই সীমায় পৌঁছে—বিশেষত বিখ্যাত শ্যানন সীমা-এ।
১৯৪৮ সালে গাণিতিক ও ইঞ্জিনিয়ার ক্লড শ্যানন একটি পেপার প্রকাশ করেন—A Mathematical Theory of Communication—যা ধীরে ধীরে কিভাবে আমরা ডেটা প্রেরণ সম্পর্কে ভাবি তা বদলে দেয়। আর্ট হিসেবেই যোগাযোগ দেখার বদলে তিনি এটাকে একটি ইঞ্জিনিয়ারিং সমস্যায় পরিণত করেন: একটি উৎস বার্তা তৈরি করে, একটি চ্যানেল তা বহন করে, গোলমাল তা দূষিত করে, আর একটি রিসিভার পাঠানো পুনর্গঠন করার চেষ্টা করে।
শ্যাননের মূল কৌশল ছিল তথ্যকে একটি মাপযোগ্য ও মেশিন-উপযোগীভাবে সংজ্ঞায়িত করা। তাঁর কাঠামোতে তথ্য মান বা সত্যতার সাথে সম্পর্কিত নয়—এটি চমক বা অনিশ্চয়তা কেমন কমে সে সম্পর্কে।
আপনি যদি আগেই জানেন কি ঘটতে যাচ্ছে, তাহলে বার্তাটি স্থূলভাবে কম তথ্যবহুল। যদি আপনি প্রকৃতপক্ষে অনিশ্চিত থাকেন, ফল জানলে অনেক বেশি তথ্য পাওয়া যায়।
তথ্য মাপার জন্য শ্যানন বিট (binary digit) প্রচলিত করেন। একটি বিট হল একটি সরল হ্যাঁ/না অনিশ্চয়তা মেটানোর জন্য দরকারি তথ্য।
উদাহরণ: যদি আমি জিজ্ঞেস করি “লাইটটি অন আছে কি?” এবং আপনি আগে কিছুই জানেন না, তাহলে উত্তর (হ্যাঁ বা না) 1 বিট তথ্য সরবরাহ করে। অনেক বাস্তব বার্তা এই ধরণের বাইনারি পছন্দগুলোর দীর্ঘ ক্রমে ভাঙা যায়, সেই কারণেই টেক্সট, ছবি, অডিও—all বিট আকারে সংরক্ষণ ও প্রেরণ করা যায়।
এই প্রবন্ধটি শ্যাননের ধারণাগুলোর ব্যবহারিক অন্তর্দৃষ্টি ও কেন সেগুলো সর্বত্র পাওয়া যায়—সংকোচন, ত্রুটি সংশোধন, নেটওয়ার্ক নির্ভরযোগ্যতা, এবং চ্যানেল ধারণক্ষমতা—এইগুলোর উপর ফোকাস করবে।
এটি ভারী প্রমাণপত্র কভার করবে না। অগ্রভাগে যাওয়ার জন্য জটিল গাণিতিক দক্ষতার প্রয়োজন নেই: তথ্য মাপতে পারলেই আপনি সিস্টেম ডিজাইন করতে পারবেন যা প্রায়ই শ্যাননের তাত্ত্বিক সীমার কাছাকাছি কাজ করে।
এন্ট্রপি, সংকোচন, বা ত্রুটি সংশোধন নিয়ে কথা বলার আগে কয়েকটি সাধারণ শব্দ পরিষ্কার করে নেওয়া ভাল। শ্যাননের ধারণাগুলো তখন সহজে বোঝা যায়।
একটি প্রতীক হল একটি নির্দিষ্ট টোকেন যা আপনি সম্মত হয়েছেন ব্যবহার করবেন। সেই সেটকে বলা হয় আলফাবেট। ইংরেজিতে আলফাবেট হতে পারে অক্ষর (স্পেস ও পাংচুয়েশনসহ)। কম্পিউটার ফাইলের ক্ষেত্রে আলফাবেট হতে পারে 0–255 এর বাইট ভ্যালুগুলো।
একটি বার্তা হল ঐ আলফাবেট থেকে প্রতীকগুলোর একটি ক্রম: একটি শব্দ, বাক্য, ছবির ফাইল, বা অডিও স্যাম্পলের স্ট্রীম।
কনক্রিট রাখতে, একটি ছোট আলফাবেট কল্পনা করুন: {A, B, C}. একটি বার্তা হতে পারে:
A A B C A B A ...
একটি বিট হলো 0 বা 1। কম্পিউটার বিট সংরক্ষণ ও প্রেরণ করে কারণ হার্ডওয়্যার দুটি অবস্থাকে নির্ভরযোগ্যভাবে পৃথক করতে পারে।
একটি কোড হলো প্রতীকগুলিকে বিট (বা অন্যান্য প্রতীকে) উপস্থাপনের নিয়ম। উদাহরণস্বরূপ, আমাদের {A, B, C} আলফাবেটের জন্য একটি সম্ভাব্য বাইনারি কোড হল:
এখন যেকোনো A/B/C-র বার্তাকে বিটের স্ট্রিমে রূপান্তর করা যায়।
এই শব্দগুলো প্রায়ই মিশে যায়:
বাস্তব বার্তাগুলো র্যান্ডম নয়: কিছু প্রতীক অন্যগুলোর তুলনায় বেশি ঘনীভূত। ধরা যাক A ঘটে 70% সময়, B 20%, C 10%. একটি ভাল সংকোচন-স্কিম সাধারণত সাধারণ প্রতীকে ছোট বিট প্যাটার্ন দেবে (A), এবং বিরল প্রতীকে বড় প্যাটার্ন (C)। এই অসমানতা পরবর্তীতে এন্ট্রপি দ্বারা পরিমাপ করা হবে।
শ্যাননের সবচেয়ে পরিচিত ধারণা হল এন্ট্রপি: কোনো উৎসে কতটা “চমক” আছে তা পরিমাপ করার একটি উপায়। এখানে চমক মানে আবেগগত নয়—চমক মানে পূর্বাভাসহীনতা। যত বেশি অনিশ্চিত পরবর্তী প্রতীক, তত বেশি তথ্য তা বহন করে।
ধরা যাক কয়েন উল্টানো দেখছেন।
এই “গড় চমক” ধারণা দৈনন্দিন প্যাটার্নে মানায়: পুনরাবৃত্তি করা টেক্সট ফাইল র্যান্ডম ক্যারেক্টারের ফাইলে অপেক্ষায় সহজেই পূর্বানুমান করা যায়।
সংকোচন সাধারণত সাধারণ প্রতীকে ছোট কোড দান করে এবং বিরল প্রতীকে বড় কোড। যদি উৎসটি পূর্বানুমানীয় (কম এন্ট্রপি) হয়, আপনি বেশি সময় ছোট কোড ব্যবহার করে জায়গা বাঁচাতে পারবেন। যদি উৎস প্রায় র্যান্ডম হয় (উচ্চ এন্ট্রপি), তখন কম কমানোর উপায় থাকে—কিছুই বারবার অনুপস্থিত।
শ্যানন দেখিয়েছেন এন্ট্রপি একটি ধারণাগত ব্যাঞ্চমার্ক: এটি প্রতীক প্রতি গড় বিট সংখ্যার জন্য সর্বনিম্ন সম্ভাব্য সীমা নির্ধারণ করে যখন উৎসটি থেকে ডেটা এনকোড করা হয়।
গুরুত্বপূর্ণ: এন্ট্রপি কোনো সংকোচন অ্যালগরিদম নয়। তা আপনাকে বলবে কি তত্ত্বগতভাবে সম্ভব—আর কখন আপনি সীমার কাছাকাছি পৌঁছেছেন।
সংকোচন ঘটে যখন আপনি এমন একটি বার্তা নেন যেটা কম বিটে বর্ণনা করা যেতে পারে, এবং সত্যিই তা করে ফেলেন। শ্যাননের মূল অন্তর্দৃষ্টি হল: নিম্ন এন্ট্রপি (অর্থাৎ বেশি পূর্বানুমানীয়তা) যেসব ডেটার মধ্যে থাকে সেগুলো সংকোচনের জন্য "জায়গা" থাকে; আর উচ্চ-এন্ট্রপি ডেটা কম সংকুচিত হয়।
পুনরাবৃত্ত প্যাটার্নই স্পষ্ট জয়লাভ: যদি ফাইলে একই ক্রমবার দেখা যায়, আপনি ঐ ক্রম একবার সংরক্ষণ করে বহুবার রেফার করতে পারবেন। কিন্তু পরিষ্কার পুনরাবৃত্তি ছাড়াও তীব্র প্রতীকি ভিন্নতা সহ ডেটা উপকার পায়।
যদি এক টেক্সটে “e” অনেক বেশি আসে, আর “z” খুব কম, তাহলে প্রতিটি অক্ষরের জন্য একই সংখ্যক বিট দেওয়ার দরকার নেই। যত বেশি ফ্রিকোয়েন্সি অসমানতা, তত বেশি পূর্বানুমানযোগ্যতা, এবং তত বেশি সংকোচন-সুবিধা।
অবশ্যই অভ্যন্তরীণভাবে এই অসমানতাগুলো কাজে লাগাতে একটি সহজ উপায় হল পরিবর্তনশীল‑দৈর্ঘ্যের কোডিং:
সতর্কভাবে করলে এতে গড়ে প্রতীক প্রতি বিট সংখ্যা কমে যায়, তথ্য হারানো ছাড়াই।
বাস্তব‑জীবনের লসলেস কম্প্রেসার সাধারণত একাধিক ধারণা মিশ্রিত করে, কিন্তু আপনি সাধারণত এই পরিবারগুলোর নাম শুনবেন:
লসলেস সংকোচন মূলটি সম্পূর্ণভাবে পুনরুদ্ধার করে (উদা., ZIP, PNG)। সফটওয়্যার, ডকুমেন্ট, এবং যেগুলোতে একটুকরো ভুলও সমস্যা করে—সেগুলোর জন্য অপরিহার্য।
লসি (lossy) সংকোচন ইচ্ছাকৃতভাবে এমন তথ্য বাদ দেয় যা মানুষের কাছে সাধারণত খেয়াল না পড়ে (উদা., JPEG ছবি, MP3/AAC অডিও)। লক্ষ্য বদলে যায়: “আগের অভিজ্ঞতার সমান” ফিরে পেতে, ফলে অনেক বেশি ছোট ফাইল পাওয়া যায়।
প্রতিটি ডিজিটাল সিস্টেম একটি ভঙ্গুর অনুমানের ওপর দাঁড়ায়: একটি 0 হল 0, একটি 1 হল 1। বাস্তবে বিট উল্টে যেতে পারে।
প্রেরণে বৈদ্যুতিক হস্তক্ষেপ, দুর্বল ওয়াই‑ফাই সিগনাল, বা রেডিও গোলমাল সিগনালকে ঘুরিয়ে দিয়ে রিসিভারকে ভুল ব্যাখ্যা করতে পারে। স্টোরেজে ছোট ছোট শারীরিক প্রভাব—ফ্ল্যাশ মেমরি পরিধান, অপটিক্যাল মিডিয়ার স্ক্র্যাচ, এমনকি অতিরিক্ত কণিকাও—একটি স্টোর করা চার্জ বা চৌম্বকীয় অবস্থা পরিবর্তন করে দিতে পারে।
ত্রুটি অনিবার্য, তাই ইঞ্জিনিয়াররা ইচ্ছাকৃতভাবে রিডান্ড্যান্সি যোগ করে: অতিরিক্ত বিট যা নতুন তথ্য বহন করে না, কিন্তু ক্ষতি সনাক্ত বা মেরামত করতে সাহায্য করে।
প্যারিটি বিট (দ্রুত সনাক্তকরণ). একটি অতিরিক্ত বিট যোগ করা হয় যাতে 1-গুলোর মোট সংখ্যা জোড় (ইভেন) বা বিজোড় (অড) থাকে। যদি একটি বিট উল্টে যায়, প্যারিটি চেক ফেল করে।
চেকসাম (চাঙ্ক-স্তরে ভাল সনাক্তকরণ). একটিমাত্র বিটের বদলে একটি ছোট সারাংশ সংখ্যার হিসাব রাখা হয় (যেমন অ্যাডিটিভ চেকসাম, CRC)। রিসিভার পুনরায় হিসাব করে তুলনা করে।
রিপিটিশন কোড (সহজ সংশোধন). প্রতিটি বিট তিনবার পাঠান: 0 → 000, 1 → 111। রিসিভার সংখ্যাগরিষ্ঠ ভোট ব্যবহার করে ঠিক করে।
ত্রুটি সনাক্তকরণ উত্তর দেয়: "কিছু খারাপ হয়েছে কি না?" যখন পুনরায় পাঠানো সস্তা—নেটওয়ার্ক প্যাকেটের মতো—তবে এটি প্রচলিত।
ত্রুটি সংশোধন উত্তর দেয়: "মূল বিটগুলো কী ছিল?" যখন পুনরায় পাঠানো ব্যয়বহুল বা অসম্ভব—স্ট্রিমিং অডিও, গভীর-স্পেস কমিউনিকেশন, বা স্টোরেজ—তখন দরকার হয়।
রিডান্ড্যান্সি অপচয় মনে হলেও এটি নির্ভরযোগ্যতার বিনিময়ে গুরুত্বপূর্ণ।
রিয়েল চ্যানেলে—ওয়াই‑ফাই, সেলুলার, ইউএসবি, এমনকি হার্ড ড্রাইভ—গোলমাল ও হস্তক্ষেপ বিট উলটে দিতে পারে বা প্রতীকগুলো ঝাপসা করে ফেলতে পারে। শ্যাননের বড় প্রতিশ্রুতি ছিল চমকপ্রদ: শব্দবিহীন চ্যানেলেও নির্ভরযোগ্য কমিউনিকেশন সম্ভব, যদি আপনি খুব বেশি তথ্য চাইলেন না।
চ্যানেল ধারণক্ষমতা হল চ্যানেলের "গতি সীমা": সর্বোচ্চ হার (বিট/সেকেন্ড) যা আপনি নির্দিষ্ট গোলমাল স্তরে ত্রুটিকে যতটা ইচ্ছা কমিয়ে প্রেরণ করতে পারেন, ব্যান্ডউইথ ও পাওয়ার মতো সীমাবদ্ধতা ধরে রেখে।
এটি কাঁচা সিম্বল রেটের সমান নয় (কত দ্রুত সিগনাল টগল করা হয়) — এটি কতটা অর্থপূর্ণ তথ্য গোলমাল পার হয়ে বাঁচে, যখন আপনি বুদ্ধিমান এনকোডিং, রিডান্ড্যান্সি, এবং ডিকোডিং ব্যবহার করেন।
শ্যানন সীমা হলো সেই সীমা: এর নিচে সঠিক কৌশল নিয়ে আপনি নির্ভরযোগ্যতা যতটা ইচ্ছা বাড়াতে পারেন; এর উপরে আপনি যতই বুদ্ধিমান হন—কিছু ত্রুটি থাকা ছাড়া চলবে না।
ইঞ্জিনিয়াররা উন্নত মোডুলেশন ও ত্রুটি-সংশোধন কোড ব্যবহার করে এই সীমার কাছাকাছি কাজ করতে চায়। আধুনিক সিস্টেমগুলো (LTE/5G, Wi‑Fi) উন্নত কোডিং ব্যবহার করে এই সীমার কাছে অপারেট করে যাতে সংকম বা পাওয়ার অপচয় কম হয়।
এটাকে ভাঙলেট ভারি ট্রাকের মত ভাবুন:
শ্যানন আমাদের কোনও একক “সেরা কোড” দিলেন না; তিনি প্রমাণ করলেন যে সীমা আছে—এবং সেটার দিকে যাওয়ার চেষ্টা করলে লাভ আছে।
শ্যাননের noisy-channel theorem সাধারণত একটি প্রতিশ্রুতি হিসেবে ধরা হয়: যদি আপনি চ্যানেলের ধারণক্ষমতার নিচে ডেটা পাঠান, এমন কোড আছে যা ত্রুটিকে অত্যন্ত বিরল করে তুলতে পারে। বাস্তব ইঞ্জিনিয়ারিং হল সেই "অস্তিত্ব‑প্রমাণ"কে ব্যবহারযোগ্য কৌশলে পরিণত করা—যা চিপ, ব্যাটারি, এবং ডেডলাইন-সীমার মধ্যে বসে।
অধিকাংশ সিস্টেম ব্লক কোড (একসঙ্গে একটি ব্লক বিটকে রক্ষা করে) বা স্ট্রিম-অরিয়েন্টেড কোড (চালিত ক্রমকে রক্ষা করে) ব্যবহার করে।
ব্লক কোডে, প্রতিটি ব্লকের সাথে কৌশলী রিডান্ড্যান্সি যোগ করা হয় যাতে রিসিভার ভুল সনাক্ত ও সংশোধন করতে পারে। ইন্টারলিভিং দিয়ে আপনি পাঠানোর সময় বিটগুলোর ক্রম পরিবর্তন করে ব্যুর্স-নয়েজ (একটিতে অনেক ত্রুটি) কে ছড়িয়ে দেন, ফলে তা বহু ব্লকে ছিটিয়ে যায়—বেতার ও স্টোরেজে জরুরি।
রিসিভার কিভাবে সিদ্ধান্ত নেয় তার ওপরও বড় প্রভাব পড়ে:
সফট ডিসিশন ডিকোডারে আরও তথ্য দেয় এবং নির্ভরযোগ্যতা উল্লেখযোগ্যভাবে বাড়ায়—বিশেষত Wi‑Fi ও সেলুলারে।
গভীর-স্পেস কমিউনিকেশন (যেখানে পুনরায় প্রেরণ মহা-দামি বা অসম্ভব), স্যাটেলাইট, Wi‑Fi, এবং 5G—এই সব জায়গায় ত্রুটি-সংশোধন কোডগুলো শ্যাননের তত্ত্বকে বাস্তবে রূপ দেয়: অতিরিক্ত বিট ও গণনা দিয়ে ড্রপড কল, ধীর ডাউনলোড, এবং অবিশ্বস্ত লিঙ্ক এড়ানো যায়।
ইন্টারনেট কাজ করে যদিও লিংকগুলো অনিয়মিত। ওয়াই‑ফাই ম্লান হয়, সেল সিগন্যাল ব্লক হয়, এবং তার সত্বেও কপার ও ফাইবার গোলমালভোগী—তবুও ইন্টারনেট স্থির। শ্যাননের মূল বার্তা—গোলমাল অনিবার্য, তবু নির্ভরযোগ্যতা অর্জনযোগ্য—নেটওয়ার্কিংয়ে প্রতিফলিত হয় একটি মিশ্র রীতিনীতির মাধ্যমে: ত্রুটি সনাক্ত/সংশোধন এবং পুনরায় প্রেরণ।
ডেটাকে প্যাকেটে ভাগ করলে নেটওয়ার্ক সমস্যা এলাকা এড়াতে পারে এবং ক্ষতি হলে সব কিছু পুনরায় না পাঠিয়ে ক্ষতিগ্রস্ত অংশটুকু পুনরুদ্ধার করা যায়। প্রতিটি প্যাকেটে অতিরিক্ত বিট থাকে (হেডার ও চেক) যাতে রিসিভার বিচার করতে পারে।
একটি সাধারণ প্যাটার্ন হল ARQ (Automatic Repeat reQuest):
কখন একটি প্যাকেট ভুল হয়, তখন দুটো বড় অপশন থাকে:
FEC ল্যাটেন্সি কমাতে সাহায্য করে সেই লিঙ্কগুলোতে যেখানে রিটারাই ব্যয়বহুল (উচ্চ ল্যাটেন্সি বা বিরতিপূর্ণ সংযোগ)। ARQ তখন কার্যকর যখন হারানো বিরল হয়, কারণ প্রতিটি প্যাকেটে ভারী রিডান্ড্যান্সি রাখা অকার্যকর।
নির্ভরযোগ্যতা ব্যবস্থাগুলো ক্ষমতা খায়: অতিরিক্ত বিট, অতিরিক্ত প্যাকেট, এবং অতিরিক্ত অপেক্ষা। পুনরায় প্রেরণ লোড বাড়ায়, যা কনজেশন বাড়িয়ে দেয়; কনজেশন বাড়লে বিলম্ব এবং লস বাড়ে, ফলে আরও রিটারাই লাগে।
ভালো নেটওয়ার্ক নকশা একটি ভারসাম্য খোঁজে: যথেষ্ট নির্ভরযোগ্যতা যাতে সঠিক ডেটা পৌঁছায়, কিন্তু ওভারহেড এতটাই না যে নেটওয়ার্ক ভাঙে এবং থ্রুপুট কমে যায়।
আধুনিক ডিজিটাল সিস্টেমগুলোকে একটি পাইপলাইনের মতো ভাবা যেতে পারে যার দুটি কাজ আছে: বার্তাকে ছোট করা এবং বার্তাটি যাত্রায় টিকে থাকা নিশ্চিত করা। শ্যাননের মূল ধারণা হলো সাধারণত আপনি এসবকে আলাদা করে ভাবতে পারেন—যদিও বাস্তবে পণ্যগুলো মাঝে মাঝে মিশে যায়।
শুরু হয় स्रोत থেকে: টেক্সট, অডিও, ভিডিও, সেন্সর রিডিং। সোর্স কোডিং পূর্বানুমানযোগ্য কাঠামো সরিয়ে দেয় যাতে আপনি বিট অপচয় না করেন। এটি হতে পারে ZIP (ফাইলের জন্য), AAC/Opus (অডিও), বা H.264/AV1 (ভিডিও)।
সংকোচনই যেখানে এন্ট্রপি বাস্তবে আসে: যত বেশি পূর্বানুমানযোগ্য কন্টেন্ট, গড়ে তত কম বিট লাগে।
তারপরে সংকুচিত বিটগুলোকে গোলমাল-চ্যানেল পেরোতে হবে: ওয়াই‑ফাই, সেলুলার, ফাইবার, USB। চ্যানেল কোডিং যত্নসহ অতিরিক্ত রিডান্ড্যান্সি যোগ করে যাতে রিসিভার ত্রুটি সনাক্ত ও সংশোধন করতে পারে। এটি CRC, Reed–Solomon, LDPC এবং অন্যান্য FEC পদ্ধতির জগৎ।
শ্যানন দেখিয়েছেন যে তত্ত্বগতভাবে আপনি সোর্স কোডিংকে সবচেয়ে ভালো সংকোচনের দিকে নিয়ে যেতে পারেন, এবং চ্যানেল কোডিংকে চ্যানেল ধারণক্ষমতার কাছে নির্ভরযোগ্যতার দিক থেকে নিয়ে যেতে পারেন—স্বতন্ত্রভাবে।
প্র্যাকটিসে, আলাদা করা একটি ভাল ডিবাগিং মডেল: যদি পারফরম্যান্স খারাপ হয়, আপনি জিজ্ঞাসা করতে পারেন—এটা কি সংকোচনে (সোর্স কোডিং), লিংকে (চ্যানেল কোডিং), না কি রিটারাই ও বাফারিংয়ে অতিরিক্ত লেটেন্সি হচ্ছে?
যখন আপনি ভিডিও স্ট্রিম করেন, অ্যাপ একটি কোডেক ব্যবহার করে ফ্রেমগুলিকে সংকুচিত করে। ওয়াই‑ফাইতে প্যাকেট হারিয়ে যেতে বা দূষিত হতে পারে, তাই সিস্টেম ত্রুটি সনাক্ত করে, কখনও FEC যোগ করে, এবং কখনও রিটারাই করে (ARQ)। যদি কানেকশন খারাপ হয়, প্লেয়ার নীচু বিটরেট স্ট্রিমে স্যুইচ করে।
বাস্তব সিস্টেমগুলো সময়ের গুরুত্বের কারণে বিভাজনটি অস্পষ্ট করে: রিটারাই অপেক্ষা করলে ব্রাফারিং ঘটবে, এবং ওয়্যারলেস কন্ডিশন দ্রুত বদলে যায়। তাই স্ট্রিমিং স্ট্যাকগুলো সংকোচন, রিডান্ড্যান্সি, এবং অভিযোজন একসাথে ব্যবহার করে—সম্পূর্ণ আলাদা না হলেও শ্যাননের মডেল দ্বারা গাইডেড।
তথ্যতত্ত্ব অনেকবার উদ্ধৃত হয়, এবং কয়েকটি ধারণা অতিরঞ্জিতভাবে সহজীকরণ হয়। এখানে সাধারণ ভুল ধারণা এবং প্রকৃত বাস্তব ইঞ্জিনিয়ারদের ট্রেড‑অফগুলো:
সাধারণ কথোপকথনে “র্যান্ডম” বলতে অনিয়ম বা বিশৃঙ্খলা বোঝায়। শ্যাননের এন্ট্রপি নির্দিষ্টভাবে পরিমাপ করে চমক দেওয়ার মাত্রা একটি সম্ভাব্যতা মডেল ধরে নেওয়ার পরে।
এন্ট্রপি একটা অনুভূতি নয়; এটা মডেল-সংযুক্ত একটি সংখ্যা।
সংকোচন রিডান্ড্যান্সি কমায়। ত্রুটি সংশোধন প্রায়ই উদ্দেশ্যমূলকভাবে রিডান্ড্যান্সি যোগ করে।
শ্যাননের চ্যানেল ধারণক্ষমতা বলে প্রতিটি চ্যানেলের একটি সর্বোচ্চ নির্ভরযোগ্য থ্রুপুট আছে প্রদত্ত গোলমাল-শর্তে। সীমার নিচে থাকলে সঠিক কোডিং দিয়ে ত্রুটি অত্যন্ত ছোট করা যায়; সীমার উপরে গেলে কিছু ত্রুটি থাকা অনিবার্য।
এই কারণেই “যেকোনও গতি‑এ পরিপূর্ণ নির্ভরযোগ্য” সম্ভব নয়: গতি বাড়ালে প্রায়ই ত্রুটি সম্ভাব্যতা বাড়ে, লেটেন্সি বাড়ে (রিটারাই), বা অতিরিক্ত ওভারহেড লাগে (মজবুত কোডিং)।
প্রোডাক্ট বা আর্কিটেকচার মূল্যায়ন করলে জিজ্ঞাসা করুন:
এই চারটা ঠিক করা তুলনামূলকভাবে বেশি কাজ করে ফর্মুলা মনে রাখার চেয়ে।
শ্যাননের মূল বার্তা: তথ্যকে পরিমাপ করা যায়, সরানো যায়, সুরক্ষিত করা যায়, এবং সংকুচিত করা যায় কিছু সাধারণ ধারণা ব্যবহার করে।
আধুনিক নেটওয়ার্ক ও স্টোরেজ সিস্টেম মূলত রেট, নির্ভরযোগ্যতা, লেটেন্সি, ও গণনার মধ্যে একটানা ট্রেড‑অফ করে।
আপনি বাস্তব প্রোডাক্ট—API, স্ট্রিমিং ফিচার, মোবাইল অ্যাপ, টেলিমেট্রি পাইপলাইন—নির্মাণ করলে, শ্যাননের কাঠামো একটি কার্যকর ডিজাইন চেকলিস্ট: যা সংকোচন করা যায় তা সংকুচিত করুন, যা বাধ্যতামূলক সুরক্ষিত করুন, এবং লেটেন্সি/থ্রুপুট বাজেট স্পষ্ট রাখুন। একটি দ্রুত প্রোটোটাইপ তৈরি করে পরবর্তীতে ইটারেট করলে এই বিষয়গুলো দ্রুত পরীক্ষা করা যায়: payload সাইজ, রিটারাই আচরণ, বাফারিং আচরণ—সবই অর্ন্তভুত পরীক্ষার সময় প্রকাশ পায়।
Koder.ai-এর মতো প্ল্যাটফর্ম ব্যবহার করে দলগুলো দ্রুত একটি React ওয়েব অ্যাপ, Go ব্যাকএন্ড সঙ্গে PostgreSQL, এবং এমনকি Flutter মোবাইল ক্লায়েন্ট চ্যাট-চালিত স্পেক থেকে তৌরি করে পরীক্ষার মাধ্যমে বাস্তব‑বিশ্ব ট্রেড‑অফ (মজবুত নির্ভরযোগ্যতা বনাম কম ওভারহেড) পরীক্ষা করতে পারে—পরিকল্পনা মোড, স্ন্যাপশট, ও রোলব্যাকের মত ফিচারগুলো পরিবর্তন করে পরীক্ষা করা সহজ করে।
অধিক পড়া মানে লাভ:
আরো জানতে /blog-এ সম্পর্কিত ব্যাখ্যাগুলি দেখুন, এবং আমাদের পণ্যের কীভাবে কমিউনিকেশন ও সংকোচন-সংক্রান্ত সেটিংস ও API প্রকাশ করে তা জানতে /docs দেখুন। পরিকল্পনা বা থ্রুপুট সীমা তুলনা করতে /pricing-এ যান।
শ্যাননের মূল পরিবর্তনটি ছিল তথ্যকে "অর্থ" বা "গুরুত্ব" হিসেবে না দেখে ঘটা-ঘটনার অনিশ্চয়তা কমানো হিসেবে সংজ্ঞায়িত করা। এটি তথ্যকে পরিমাপযোগ্য করে তোলে, ফলে ইঞ্জিনিয়াররা এমন সিস্টেম ডিজাইন করতে পারেন যা:
একটি বিট হল একটি হ্যাঁ/না অনিশ্চয়তা মেটানোর জন্য দরকারি তথ্যের পরিমাণ। ডিজিটাল হার্ডওয়্যার দুইটি অবস্থাকে নির্ভরযোগ্যভাবে পৃথক করতে পারে, তাই বিভিন্ন ধরণের ডেটা 0 ও 1-এর দীর্ঘ ক্রমে রূপান্তর করে একইভাবে সংরক্ষণ ও প্রেরণ করা যায়।
এন্ট্রপি হল কোনো উৎসের গড় অনিশ্চয়তা মাপ। এটা সংকোচনের ধারনা-গত কারণেই গুরুত্বপূর্ণ:
এন্ট্রপি নিজে কোনো কম্প্রেসার নয়; এটি গড়ে কী সম্ভব তার একটি সীমা বলে দেয়।
সংকোচন সাইজ কমায় কারণ এটি প্যাটার্ন ও অসমান প্রতীয়মানতার সুবিধা নেয়।
এই কারণে টেক্সট, লগ, সোজা গ্রাফিক্স ভালোভাবে সংকুচিত হয়; এনক্রিপ্টেড বা ইতিমধ্যেই সংকুচিত ডেটা সাধারণত কম যায়।
এনকোডিং হল ডেটাকে নির্দিষ্ট ফরমেটে রূপান্তর করা (উদা., UTF-8 বা প্রতীক→বিট ম্যাপ)।
সংকোচন হল গড় বিট সংখ্যা কমানোর জন্য এরকম রূপান্তর, পূর্বানুমানযোগ্যতা কাজে লাগিয়ে।
এনক্রিপশন হল কী দিয়ে ডেটা গুছিয়ে রাখা—লুকানো রাখতে করা হয়; এটি সাধারণত ডেটাকে ‘র্যান্ডম-সদৃশ’ করে তোলে, ফলে সংকোচন কঠিন হয়ে পড়ে।
বাস্তব চ্যানেল ও স্টোরেজ ত্রুটি-প্রবণ। হস্তক্ষেপ, দুর্বল সিগনাল, বা উপকরণগত ক্ষয় ডিভাইসে 0/1 উল্টে দিতে পারে। ইঞ্জিনিয়াররা অতিরিক্ত বিট—পুনরাবৃত্তি বা চেকসাম—যোগ করে ত্রুটি সনাক্ত ও/বা সংশোধন করতে পারে।
ত্রুটি সনাক্তকরণ বলে দেয় "কিছু ভুল হয়েছে"—সোজা এবং সস্তা, সাধারণত পুনরায় প্রেরণের সাথে ব্যবহার করা হয়।
ত্রুটি সংশোধন বলে দেয় "কী ছিল আসল ডেটা"—যখন পুনরায় পাঠানো ব্যয়বহুল বা অসম্ভব, তখন দরকারি।
অনেক সিস্টেমই মিশায়: দ্রুত সনাক্ত করে, কিছু ত্রুটি স্থানীয়ভাবে ঠিক করে, এবং দরকার হলে পুনরায় পাঠায়।
চ্যানেল ধারণক্ষমতা হল কোনো চ্যানেলের "স্পিড লিমিট": নির্দিষ্ট গোলমাল-স্তর ও সীমার মধ্যে তুমিই কত বিট/সেকেন্ড নির্ভরযোগ্যভাবে পাঠাতে পারো, তাও তখন ত্রুটি যতটা ইচ্ছা কমিয়ে আনা যায়।
শ্যানন সীমা বলছে: সীমার নিচে পাঠালে যথেষ্ট ভালো কোডিং-সহ ত্রুটি অত্যন্ত কম করা যায়; সীমার উপরে গেলে সরাসরি ত্রুটি এড়ানো যায় না—কোথাও একটি অপরিহার্য ত্রুটি-ফ্লোর থাকবে।
ইন্টারনেট ডেটাকে ছোট ছোট প্যাকেটে ভেঙে পাঠায়। প্রতিটি প্যাকেটে হেডার ও চেকসাম থাকে; রিসিভার যাচাই করে, ঠিক থাকলে ACK পাঠায়, না থাকলে পুনরায় পাঠায় (ARQ)।
আরও কিছু পদ্ধতি: FEC ব্যবহার করে পুনরায় পাঠানোর ঝামেলা কমানো—বিশেষ করে যেখানে লেটেন্সি বেশি (দূর-স্পেস, স্ট্রিমিং)।
তবে পুনরায় পাঠানো ও অতিরিক্ত বিট নেটওয়ার্ক ক্ষমতা খেয়ে ফেলে, তাই ভাল নকশা ভারসাম্য বজায় রাখে।
কারণ এখানে তুমি রেট, নির্ভরযোগ্যতা, লেটেন্সি, ও ওভারহেড—এই সবের মধ্যে সমঝোতা করছ।
স্ট্রিমিং সিস্টেম সাধারণত বিটরেট ও সুরক্ষা অ্যাডজাস্ট করে (অবস্থা খারাপ হলে নীচে নামে) যাতে সর্বোত্তম ট্রেড-অফ বজায় থাকে।