পাইথন – ইতিহাস, বর্তমান ও ভবিষ্যৎ

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

গিডো ফন রোসাম (Guido van Rossum) একটি ডিস্ট্রিবিউটেড সিস্টেম নিয়ে কাজ করতেন সিডাব্লিউআই-তে (Centrum Wiskunde & Informatica – CWI)। সেখানে তিনি সি ও ইউনিক্স শেল ব্যবহার করতেন। এগুলোর বিভিন্ন সীমাবদ্ধতা নিয়ে হতাশ ছিলেন তিনি। সি ভাষায় মেমোরি ব্যবস্থাপনার বিশাল ঝামেলা, প্রতি নতুন প্রজেক্টে কিছু নির্দিষ্ট কাজ বারবার করতে হতো, প্রয়োজনীয় লাইব্রেরির অভাবসহ নানা সীমাবদ্ধতা ছিল। ইউনিক্স শেল সাধারণ কাজ-কর্মের জন্য চমৎকার হলেও জটিল লজিক্যাল সমস্যা নিয়ে কাজ করার উপযুক্ত ছিল না।

তাই তিনি সিদ্ধান্ত নিলেন যে নিজেই একটি প্রোগ্রামিং ভাষা তৈরি করবেন, যা হবে সহজে ব্যবহারযোগ্য, পাঠযোগ্য ও শক্তিশালী। সিডাব্লিউআই-তে তিনি তিন বছর একটি দলের সঙ্গে কাজ করেছিলেন যারা এবিসি (ABC) নামের একটি ইন্টারপ্রেটেড ভাষা তৈরি করেছে। সেই সুবাদে তিনি ইন্টারপ্রেটার তৈরির মৌলিক বিষয়াদি শিখেছিলেন। মৌলিক বিষয়াদি জানা থাকায় তিনি সরাসরি ভাষা তৈরি করা শুরু করে দেন। এবিসি তৈরি হতে মোটামুটি তিন বছর সময় লাগলেও রোসাম মাত্র তিন মাসে পাইথনের একটা কাঠামো দাঁড় করিয়ে ফেলেন। এই তিন মাস তিনি পাইথনের পেছনে পূর্ণ সময় দিতে পারেননি। সিডাব্লিউআই-তে কাজের পাশাপাশি তিনি পাইথন প্রজেক্টে কাজ করেছেন। alt.sources নামের একটি নিউজগ্রুপে ১৯৯১ সালে তিনি প্রথম পাইথন উন্মুক্ত করেন।

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

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

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

পাইথনের ব্যাপক বিস্তৃতির একটি উল্লেখযোগ্য কারণ হচ্ছে, এতে অল্প কোড লিখে অধিক কাজ করা যায়। সি++ বা সি-র তুলনায় অনেক কম কোড লিখে সমপরিমাণ কাজ করা যায়। পাইথনে বড় বড় প্রজেক্টও রক্ষণাবেক্ষণ করা যায় সহজে। ডেভেলপাররা স্বল্প সময়ে বড় প্রজেক্ট করতে তাই পাইথনকে বেছে নেওয়া শুরু করলেন।

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

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

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

বর্তমানে পাইথনের ব্যবহার এত ব্যাপক যে, হঠাৎ এর হারিয়ে যাওয়ার বা নতুন কোনো ভাষা দিয়ে প্রতিস্থাপিত হয়ে যাওয়ার কোনো সম্ভাবনা অন্তত নিকট ভবিষ্যতে নেই। তাই যাদের ইচ্ছা আছে, তারা নির্দ্বিধায় পাইথন দিয়ে কাজ করা শুরু করতে পারেন। পাইথনের ভবিষ্যত নিয়ে আপাতত চিন্তা করতে হবে না।

বাংলা ভাষায় পাইথন শেখার জন্য ইন্টারনেটে বেশ কিছু রিসোর্স রয়েছে – 

লেখক – মোশারফ হোসেন।

ক্লাউড কম্পিউটিং

এই লেখায় ক্লাউড কম্পিউটিং নিয়ে প্রাথমিক আলোচনা করা হয়েছে।

সফটওয়্যারের জগতে ক্লাউড কম্পিউটিং (Cloud Computing) একটি পরিচিত নাম। তবে প্রথমেই জানিয়ে রাখি যে, এর সঙ্গে ক্লাউড বা মেঘের কোনো সম্পর্ক নেই।

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

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

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

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

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

ক্লাউড সেবাদাতা প্রতিষ্ঠানগুলো বর্তমানে বিভিন্ন রকম সেবা প্রদান করতে পারে –

  • Infrastructure as a Service
  • Platform as a Service
  • Software as a Service

Infrastructure as a Service – এক্ষেত্রে মূলত বিভিন্ন হার্ডওয়্যারভিত্তিক সেবা প্রদান করা হয়। যেমন, প্রসেসিং ক্ষমতা, মেমোরি, হার্ড ডিস্ক, নেটওয়ার্ক – এসবের ওপর ভিত্তি করে প্রয়োজনমত কনফিগারেশনের এক বা একাধিক কম্পিউটার ভাড়া নেওয়া যায়।

Platform as a Service – এখানে হার্ডওয়্যারের পাশাপাশি কম্পিউটিং প্ল্যাটফর্ম, যেমন নির্দিষ্ট অপারেটিং সিস্টেম ও অন্যান্য সফটওয়্যার ইনস্টল করে দেওয়া হয়। ব্যবহারকারীকে নিজে থেকে সেসব সফটওয়্যার ইনস্টল ও কনফিগারেশনের ঝামেলায় যেতে হয় না।

Software as a Service – এখানে বিভিন্ন সফটওয়্যার ক্লাউডে ইনস্টল করে দেওয়া থাকে। ব্যবহারকারী ইন্টারনেট ব্রাউজারের মাধ্যমে সেসব সফটওয়্যার ব্যবহার করেন এবং এজন্য নিয়মিত একটি ফি প্রদান করেন। যেমন মাইক্রোসফটের অফিস ৩৬৫। আবার গুগলের বিভিন্ন সেবা, যেমন সার্চ ইঞ্জিন, জিমেইল, গুগল ড্রাইভ ইত্যাদিও সফটওয়্যার এজ আ সার্ভিস বা সংক্ষেপে স্যাস (SaaS)-এর উদাহরণ। আবার বিভিন্ন ডেটাবেজ নির্মাতা প্রতিষ্ঠানও এই মডেলে তাদের ডেটাবেজ ব্যবহারের সুবিধা দিয়ে থাকে।

পৃথিবীতে অনেক প্রতিষ্ঠানই ক্লাউডভিত্তিক সেবা প্রদান করে। তাদের মধ্য, অ্যামাজন ওয়েব সার্ভিস, গুগল ক্লাউড প্ল্যাটফর্ম, মাইক্রোসফট অ্যাজুর, আলি ক্লাউড ইত্যাদি জনপ্রিয়।

আশা করি, ক্লাউড কম্পিউটিং কী জিনিস, সেটির প্রাথমিক ধারণা পাঠকরা এই লেখা থেকেই পেয়ে যাব। নিচের ভিডিওতে এডব্লিউএস নিয়ে বিস্তারিত আলোচনা আছে –

সিজার সাইফার

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

ওপরের চিত্রে আমরা দেখতে পাচ্ছি, মূল টেক্সট (Plaintext)-কে এনক্রিপ্ট করলে তাকে বলে সাইফারটেক্সট (Ciphertext). আর সাইফারটেক্সট ডিক্রিপ্ট করলে আমরা আবার মূল টেক্সট অর্থাৎ প্লেইনটেক্সট পাই।

বর্তমানে ডেটা এনক্রিপশনের জন্য অনেক জটিল অ্যালগরিদম আছে। মজার ব্যাপার হচ্ছে শত শত বছর আগেও মানুষ ডেটা এনক্রিপ্ট করতো। এরকম পুরনো একটি পদ্ধতি হচ্ছে সিজার সাইফার, যা রোমান সম্রাট জুলিয়াস সিজারের আমলে প্রচলিত হয়।

সিজার সাইফার পদ্ধতিতে একটি টেক্সটের সঙ্গে একটি সংখ্যা দেওয়া হয়, যাকে কি (key) বলা হয়। কি-এর মান যত, টেক্সটের অক্ষরগুলো তত ঘর পরের অক্ষর দিয়ে বদলে দেওয়া হয়। যেমন, কি-এর মান যদি 2 হয়, তখন abc-কে লেখা হবে cde (a-এর জায়গায় c, b-এর জায়গায় d, c-এর জায়গায় e)। এই কি এর মান কেবল প্রেরক ও প্রাপক জানে, যার ফলে অন্য কেউ এই টেক্সটের মর্মোদ্ধার করতে পারে না। যদিও বর্তমান প্রেক্ষিতে এটি অত্যন্ত দুর্বল একটি অ্যালগরিদম, কিন্তু ঐতিহাসিক প্রেক্ষাপট বিবেচনা করলে এটি অত্যন্ত গুরুত্বপূর্ণ এবং কম্পিউটার বিজ্ঞানের শিক্ষার্থীদের জন্য এটি অবশ্যপাঠ্য।

ধরা যাক, প্লেইনটেক্সট হচ্ছে Kill the King. আর কি হচ্ছে 1. তাহলে প্রতিটি অক্ষর ইংরেজি বর্ণমালায় তার পরবর্তী অক্ষর দিয়ে বদলে দেওয়া হবে। তখন সাইফারটেক্সট হবে Ljmm uif Ljoh. আবার কেউ যদি জানে যে কি-এর মান হচ্ছে 1, তখন সে সহজেই সাইফারটেক্সট থেকে প্লেইনটেক্সট বের করে ফেলতে পারবে।

এখন কেউ যদি এতদূর পড়ার পরে নিজেই একটি প্রোগ্রাম লিখে কাজটি করতে চায়, তার জন্য দ্বিমিক অনলাইন জাজে দুটি সমস্যা আছে –

সমস্যাগুলো সি, সিপ্লাস প্লাস, জাভা কিংবা পাইথন ব্যবহার করে সমাধান করা যাবে।

আপনার সন্তানকে কীভাবে গণিতে দক্ষ করে গড়ে তুলবেন

গণিতের দক্ষতা নিঃসন্দেহে ভালো, তবে গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার মধ্যে বিস্তর ফারাক রয়েছে।

আমরা এশিয়ার মানুষরা, যারা যুক্তরাষ্ট্রে থাকি তারা প্রায়ই গর্ব করি যে গণিতে আমাদের দক্ষতা আমেরিকানদের চেয়ে ভালো। গণিতের দক্ষতা নিঃসন্দেহে ভালো, তবে গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার মধ্যে বিস্তর ফারাক রয়েছে। গত কয়েক বছরে আমি একটি জিনিস লক্ষ করেছি, যুক্তরাষ্ট্রের শিক্ষাব্যবস্থা সমস্যা সমাধানের দক্ষতার ওপর জোর দেয় বেশি।

গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার মধ্যে পার্থক্য কী?

আমি যদি বাংলাদেশে প্রাথমিক বিদ্যালয়ের একটি শিশুকে জিজ্ঞাসা করি, ৩৬৫-কে ৭ দিয়ে ভাগ করলে কত হবে, শিশুটি সঙ্গে সঙ্গে আমাকে ভাগফল ও ভাগশেষ বলে দিতে পারে। কিন্তু যদি জিজ্ঞাসা করি যে, এক বছরে কয়টি সপ্তাহ আছে, তখন সে প্রশ্ন বুঝতে পারে না। যদিও সে জানে যে ৩৬৫ দিনে এক বছর এবং সাত দিনে এক সপ্তাহ হয়।

প্রথম প্রশ্নটির উত্তর দিতে গণিতের দক্ষতা লাগে। দ্বিতীয়টির ক্ষেত্রে লাগে সমস্যা সমাধানের দ্ক্ষতা। এটি একটি সাধারণ উদাহরণ, আশা করি এ থেকে গণিতের দক্ষতা ও সমস্যা সমাধানের দক্ষতার পার্থক্য পরিষ্কার হয়ে গেছে।

আমাদের কোনটায় জোর দেওয়া উচিত—গণিত নাকি সমস্যা সমাধানের দক্ষতায়?

এর উত্তর হচ্ছে ‘দুটোই’। গণিত হচ্ছে সমস্যা সমাধানের একটি টুল (tool) বা যন্ত্র। আপনি যখন আপনার সন্তানকে স্কুলে যোগ, বিয়োগ, গুণ ও ভাগ শেখান, সেই সময় তাকে সমস্যা সমাধানের সঙ্গেও পরিচয় করিয়ে দিন।

শিশুকে কীভাবে সমস্যা সমাধানের সঙ্গে পরিচয় করিয়ে দেওয়া যায়?

সমস্যা সমাধানের সঙ্গে পরিচয় করানোর জন্য খুব কৌশলী হওয়ার প্রয়োজন নেই, একটু মনযোগই যথেষ্ট। এক্ষেত্রে অনেকেই জানতে চাইবেন এর জন্য বাচ্চাকে কোন কোন বই পড়ানো যায়।

আমি মনে করি যে, বইপত্র কিংবা কোচিং সেন্টার ইত্যাদি বাচ্চাকে সমস্যা সমাধান শেখানোর ভালো উপায় নয়। জোর করে কিছু শেখাতে গেলে হিতে বিপরীত হতে পারে। বরং পারিবারিক কার্যক্রমের মাধ্যমে বাচ্চাকে সমস্যা সমাধান করতে শেখানোই সবচেয়ে ভালো পদ্ধতি।

দৈনন্দিন কার্যক্রমের মাধ্যমে সমস্যা সমাধান শেখানোর উদাহরণ

আমি এখানে কিছু উদাহরণ দিলাম।

  • একটি কলার দাম ৪ টাকা ও একটি পেয়ারার দাম ৫ টাকা হলে ঝুড়ির কলা ও পেয়ারার দাম কত? [ঝুড়িতে সত্যি সত্যি ২টি কলা ও ৪টি পেয়ারা রেখে আপনার বাচ্চাকে প্রশ্নটি করতে পারেন। অবস্থাভেদে প্রশ্নটি পরিবর্তন করে নিন।]
  • বাচ্চার পছন্দের প্রাণিদের নিয়ে প্রশ্ন তৈরি করুন। ধরা যাক, আমার বাচ্চা হাতি পছন্দ করে। আমি তাকে জিজ্ঞাসা করতে পারি যে, রাঙামাটির বনে ৫০ সদস্যের একটি হাতির দল বসবাস করতো। সেখান থেকে অর্ধেক হাতি বান্দরবান চলে গেল। খাগড়াছড়ি থেকে ১০টি হাতি রাঙামাটি গেল। রাঙামাটিতে এখন কয়টি হাতি আছে?
  • খাদ্যের ক্যালরি গণনা করতে দেওয়া একটি ভালো সমস্যা হতে পারে। এটি গাণিতিক সমস্যা সমাধানকে স্বাস্থ্যকর জীবনযাপনের সাথে যুক্ত করবে। যেমন: একবাটি ভাতে কতটুকু ক্যালরি রয়েছে, এ রকম সামান্য একটু গবেষণা বাচ্চার জন্য অনেক আনন্দদায়ক হতে পারে। বাচ্চাকে জিজ্ঞাসা করতে পারেন যে সে আজ কতটুকু ক্যালরি গ্রহণ করেছে।

ওপরের উদাহরণগুলো এই লেখার স্বার্থে আমি তৈরি করলাম। আপনারা আপনাদের পরিবেশ ও অবস্থা বুঝে শিশুকে সমস্যা সমাধান করতে দেবেন। আমাদের মনস্তত্ত্ব হতে হবে “আনন্দে আনন্দে শিক্ষা”। সব সময় সচেতনভাবেই শেখাতে হবে এমন নয়। বাচ্চাকে নিয়ে খাওয়ার সময়, বিকেলে খেলার সময় বা বাজারে যাওয়ার সময়ও শেখানো যায়। আপনার বাচ্চাকে কীভাবে সমস্যা সমাধান করা শেখাবেন তা আপনিই ভালো বলতে পারবেন। কোনো বই, শিক্ষক বা বিদ্যালয় আপনার বাচ্চাকে আপনার চেয়ে ভালো শেখাতে পারবে না।

সমস্যা সমাধান ও বিশ্লেষণী ক্ষমতা

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

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

প্রাথমিক গণিত-সংশ্লিষ্ট সমস্যা সমাধানের ধাপ

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

  • সমস্যাটিকে বিশ্লেষণ করা: সমস্যার বিশ্লেষণ সমস্যাটিকে বুঝতে সহায়তা করে। সমাধানের জটিলতা যেমনই হোক না কেন, সমস্যাটি শিশুর কাছে আকর্ষণীয় হতে হবে। সমস্যা না বুঝে সমাধান করতে গেলে সে সহজেই বিরক্ত হয়ে যাবে। প্রথম প্রথম আপনারা বাচ্চাকে বিশ্লেষণ করতে সাহায্য করতে পারেন, তবে একটা সময়ে তাকে নিজে নিজেই বিশ্লেষণ করতে সমর্থ হতে হবে।
  • সমাধানের রূপরেখা তৈরি: এ পর্যায়ে শিশুটি সমস্যাটিকে বিভিন্ন অংশে ভাগ করে গাণিতিক প্রক্রিয়ার (যোগ, বিয়োগ, গুণ, ভাগ) পরিকল্পনা করবে।
  • হিসাব করা: এ পর্যায়ে সে গাণিতিক হিসাবগুলো করবে। এ পর্যায়েই সে তার গাণিতিক দক্ষতা কাজে লাগাবে।
  • সমাধান যাচাই করা: এ পর্যায়টি প্রায়ই উপেক্ষা করা হয়। এ পর্যায়ে বাচ্চাটি তার ফলাফলকে যাচাই করে দেখবে। এটি নানাভাবে করা যায়। একটি পদ্ধতি হচ্ছে আগের ধাপগুলো পুনরায় করা। অন্য একটি পদ্ধতি হতে পারে বিপরীত হিসাবকরণ। এটি শুরুতে কঠিন মনে হতে পারে, তবে অনুশীলনের মাধ্যমে আয়ত্ব করা সম্ভব। যেমন: ৩০ থেকে ১০ বিয়োগ করে যদি সে ২০ উত্তর পায়, তাহলে সে ২০-এর সাথে ১০ যোগ করে দেখতে পারে যে উত্তর ৩০ হয় কি না। নিজের সমাধান যাচাই করা শিখতে পারলে শিশুর কাছে গণিতের এক নতুন দিগন্ত উন্মোচিত হবে।

শিশুদের গণিত শেখানোর সময় সবচেয়ে বড় যে ভুলটি আমরা করি

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

শিশুর ভেতরে সমস্যা সমাধানের দক্ষতা তৈরির জন্য কিছু টিপস

  • সমস্যা সমাধানের জন্য পারিবারিক পরিবেশ তৈরি করা।
  • বাস্তব জীবনভিত্তিক গাণিতিক সমস্যা সমাধান করতে বলা।
  • শিশুর আগ্রহের ওপর ভিত্তি করে সমস্যা তৈরি করে দেওযা (হাতির সমস্যাটির মতো)।
  • সমস্যা সমাধানকে একটি আনন্দদায়ক পারিবারিক কার্যক্রমে পরিণত করা।
  • সমস্যা সমাধান যে কেবল শিশুদের দক্ষতা বাড়াবে তাই নয়, এটি তাদের জন্য চমৎকার স্মৃতি হয়ে থাকবে। বাচ্চারা বাবা-মার সঙ্গ চায়। সমস্যা সমাধানের মাধ্যমে আপনি তাদের সঙ্গে চমৎকার সময় কাটাতে পারেন। কোনো শিক্ষকই এক্ষত্রে আপনার বিকল্প হতে পারে না (হওয়া উচিতও নয়)।

—ড. শাহরিয়ার হোসেন

মূল লেখা – https://computing4all.com/education/the-biggest-mistake-while-teaching-kids-math/, অনুবাদ করেছেন মোশারফ হোসেন।

এসকিউলাইট – সহজ ডেটাবেজ

সহজ ডেটাবেজ এসকিউলাইট!

এসকিউলাইট (SQLite) হচ্ছে একটি রিলেশনাল ডেটাবেজ। সেই সঙ্গে এটি ফ্রি ও ওপেন সোর্স। ২০০০ সালে ডক্টর রিচার্ড হিপ এটি তৈরি করেন। এসকিউলাইট তৈরিতে সি প্রোগ্রামিং ভাষা ব্যবহার করা হয়েছে।

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

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

এসকিউলাইটের সবচেয়ে বড় সুবিধা হচ্ছে এটির ব্যবহার বেশ সহজ-সরল আর ইনস্টল করাও খুব সহজ। এটি ক্লায়েন্ট-সার্ভার আর্কিটেকচারে তৈরি করা হয় নি, তাই সফটওয়্যারের সঙ্গে এটি দিয়ে দেওয়া যায় সহজেই।

এসকিউলাইটে রিলেশনাল ডেটাবেজের প্রায় সকল বৈশিষ্ট্যই রয়েছে এবং এসকিউএল (Structured Query Language)-এর অধিকাংশ জিনিসই এখানে ব্যবহার করা হয়েছে। তাই এটি ব্যবহার করার পর কেউ যদি অন্য ডেটাবেজের ব্যবহার শিখতে চায়, তখন তার বিপদে পড়তে হবে না।

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

এসকিউলাইট ব্যবহার করতে হলে যে টার্মিনালে (কমান্ড লাইনে) ব্যবহার করতে হবে, এমন কোনো কথা নেই। অনেক ডেস্কটপ অ্যাপ্লিকেশন দিয়ে এটি ব্যবহার করা যায় (যেমন – https://sqlitebrowser.org/)।

ডেটাবেজ শেখার সময়, “মশা মারতে কামান দাগার” মতো ওরাকল বা বিশাল কোনো ডেটাবেজ সফটওয়্যার ব্যবহার না করে এসকিউলাইট ব্যবহার করলেই ডেটাবেজ শেখাটা সহজ ও কার্যকর হবে। পরবর্তী সময়ে প্রফেশনাল কাজে অন্য কিছু শেখার দরকার পড়লে সেসময় শিখে নেওয়া যাবে।

গো (Go) প্রোগ্রামিং ভাষা

গো (বা গোল্যাঙ্গ) হচ্ছে গুগলের তৈরি একটি প্রোগ্রামিং ভাষা।

গো হচ্ছে গুগলের তৈরি একটি ওপেনসোর্স প্রোগ্রামিং ভাষা। গো (Go) নামটি বেশ কমন হওয়ায় একে গোল্যাঙ্গ (Golang)ও বলা হয়। ২০০৯ সালের নভেম্বর মাসে গো প্রথম রিলিজ করা হয়।

আমি এই প্রোগ্রামিং ভাষার নাম আগে জানলেও কখনও নিজে থেকে ঘাঁটাঘাঁটি করা হয় নি। ২০১৫ সালের মাঝামাঝি যখন সিঙ্গাপুরের গ্রাব (Grab)-এ যোগ দিই, তখন দেখলাম, এখানে ব্যাকএন্ডে গো হচ্ছে মূল প্রোগ্রামিং ভাষা। তার আগো নোডজেএস (Node.JS) ব্যবহার করা হত। যাই হোক, তখন গো শেখা শুরু করলাম। আস্তে-আস্তে জানতে পারলাম যে, বিশ্বের আরো অনেক বড় বড় কোম্পানী (যেমন উবার) তাদের ব্যাকএন্ডে গো ব্যবহার করে। গত চার বছরে ওয়েব-ভিত্তিক সফটওয়্যার তৈরিতে গো-এর ব্যবহার আরো অনেক বেড়েছে। আর গুগল নিজেও এই ভাষা ব্যবহার করছে অনেক জায়গায়।

গো কেন জনপ্রিয় হয়ে উঠছে?

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

গো কেন শিখব?

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

গো কিভাবে শিখব?

আমি ধরে নিচ্ছি, যে গো শিখবে, সে ইতিমধ্যে কমপক্ষে একটি প্রোগ্রামিং ভাষায় কয়েকবছর কাজ করেছে।

প্রথমেই গো ট্যুরের ওয়েবসাইটে গিয়ে ট্যুর শেষ করে ফেলতে হবে। এটি শুরু করার জন্য চমৎকার।

তারপরে বই পড়তে চাইলে Go Programming Language বইটি পড়া যেতে পারে। বইটে বেশ ভালো এবং আমার মতে পড়া উচিত।

এখন, কেউ যদি অনলাইন কোর্স করতে স্বাচ্ছন্দবোধ করে, তাহলে কোর্সেরাতে গো-এর তিনটি কোর্স আছে, সেগুলো করে ফেলতে হবে। এই কোর্সগুলো আমি করেছি, ভালোই লেগেছে।

এরপর Go by Example ওয়েবসাইটে গিয়ে প্রতিটি উদাহরণ পড়ে বুঝতে হবে এবং সঙ্গে সঙ্গে কোড করতে হবে। দেখে কোড করলেও সমস্যা নেই, চর্চাটা তো হবে।

এরপর Effective Go পড়তে হবে। এটি পড়ার সময় ঘুম আসে, তাও পড়তে হবে। এটি ঠিকঠাক পড়ার পরে গো-তে কাজ শুরু করে দেওয়া যাবে।

কারো কারো মনে হতে পারে, একটা সহজ-সরল প্রোগ্রামিং ভাষা শেখার জন্য এত কষ্ট করব? আসলে একটু কষ্ট করে ভালোভাবে শিখে নিলে কাজের মান অনেক ভালো হবে, আর সেটা খুব গুরুত্বপূর্ণ। তাই ভালোভাবে শেখাই ভালো।

কম্পিউটার বিজ্ঞান ও প্রোগ্রামিং নিয়ে প্রচলিত কিছু ভুল ধারণা

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

এই আর্টিকেলে আমি প্রোগ্রামিং ও কম্পিউটার বিজ্ঞান সংশ্লিষ্ট কিছু ভুল ধারণা উপস্থাপন ও ব্যাখ্যা করব।

ভুল ধারণা ১: প্রোগ্রামিং শিখতে চাইলে গণিতে খুব দক্ষ হতে হবে

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

ভুল ধারণা ২: বিজ্ঞান বা প্রকৌশল বিষয়ে না পড়লে প্রোগ্রামিং শেখা যায় না

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

ভুল ধারণা ৩: প্রোগ্রামিং ভাষা জানলেই মোটা অঙ্কের টাকা কামানো যায়

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

একটু বিস্তারিত বলি। মনে করুন, আমি একজন বিখ্যাত ছুতারের কাছ থেকে আসবাবপত্র বানানো শিখলাম। এটি শিখতে আমার ছয়মাস সময় লাগল। এখন আমার দক্ষতা আছে এবং আমি জঙ্গলে ঘুরছি। আমার এই দক্ষতা আমাকে টাকা দেবে? না, এক পয়সাও দেবে না, যদি না আমি ভালো ভালো আসবাব (ফার্নিচার) তৈরি করতে পারি। আমি যদি এটিকে শখ হিসেবে শিখতাম, তাহলে নিজের জন্য কয়েকটি আসবাব তৈরি করেই খুশি থাকতাম। কিন্তু যদি এই দক্ষতা দিয়ে টাকা কামাতে যাই, তাহলে দক্ষতাকে এমন পর্যায়ে নিয়ে যেতে হবে যেন আমার তৈরি আসবাবগুলো বাজারে অন্যদের তৈরি আসবাবের সাথে প্রতিযোগীতা করতে পারে।

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

আপনি যদি নিজের জন্য টুল বানানোর জন্য প্রোগ্রামিং ব্যবহার করেন তাহলে আপনাকে গ্রাহক সন্তুষ্টি নিয়ে চিন্তা করতে হবে না। আপনার সফটওয়্যারের জন্য প্রোগ্রামারদের মোটা অঙ্কের টাকা পরিশোধ করতে হবে না। এভাবে আপনি প্রবলেম সলভিং আয়ত্ব করতে থাকবেন। পেশাধারী ডেভেলপার হয়ে লক্ষ লক্ষ টাকা কামাতে হবে—প্রোগ্রামিং শেখার লক্ষ্যটা যেন সব সময় এটা না হয়।

ভুল ধারণা ৪: কম্পিউটার বিজ্ঞান একটি জটিল বিষয়

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

ভুল ধারণা ৫: প্রোগ্রামিং শুধু ছেলেদের জন্য

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

ভুল ধারণা ৬: কম্পিউটার বিজ্ঞান পড়লেই গেম তৈরি করতে পারব

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

এক নজরে ধারণাগুলো:

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

ড. মাহমুদ শাহরিয়ার হোসেন (সহকারী অধ্যাপক, ইউনিভার্সিটি অব টেক্সাস এট এল পেসো)-এর মূল লেখাটি পাওয়া যাবে এখানে https://bit.ly/2ENReAp। লেখাটি অনুবাদ করেছেন মোশারফ হোসেন।

সি শেখার গাইডলাইন!

বাংলা ভাষায় সি প্রোগ্রামিং ভাষা দিয়ে প্রোগ্রামিং শেখার গাইডলাইন

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

সি শেখার শুরুতেই এখন যেটা করা উচিত, এক ঘণ্টার সি ভিডিওটা দেখে ফেলা উচিত। এখানে কিছু কিছু বুঝা যাবে, আবার কিছু কিছু জিনিস নতুনরা হয়ত একেবারেই বুঝবে না – তাতে ঘাবড়ে যাবার কিছু নেই। বরং সম্ভব হলে পুরো ভিডিওটা দুইবার দেখতে হবে। এই ভিডিও দেখলে সি নিয়ে একটা ধারণা তৈরি হবে।

তারপর সি শেখা শুরু করতে হবে। প্রোগ্রামিংয়ে যারা একেবারেই নতুন, তাদের জন্য আমি “কম্পিউটার প্রোগ্রামিং ১ম খণ্ড” নামে একটি বই লিখেছি। এখানে জটিল-কঠিন-ভয়াবহ জিনিসগুলো বাদ দিয়ে বরং মৌলিক জিনিসগুলোর ওপর জোর দেওয়া হয়েছে। আশা করি, বইটি কেউ যদি দুইবার করে পড়ে ফেলে, তাহলে তার বেসিক শক্ত হয়ে যাবে। বইটি রকমারি ডট কম থেকে অর্ডার করা যাবে, এছাড়া আর কোথা থেকে পাওয়া যাব সেটি জানা যাবে দ্বিমিক প্রকাশনীর ওয়েবসাইটে। আবার বইটি ইন্টারনেটে ফ্রিও পড়া যাবে, cpbook.subeen.com ওয়েবসাইট থেকে।

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

সি তো শিখতেছি, কিন্তু ভিডিও দেখে শিখতে পারলে ভালো হত – কারো কারো এমনটি মনে হতে পারে। তাদের জন্য আছে দ্বিমিক কম্পিউটিংয়ের ফ্রি অনলাইন কোর্স “প্রোগ্রামিংয়ে হাতেখড়ি”। ভিডিওগুলো আমার ইউটিউব চ্যানেলেও দেখা যাবে।

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

এখন, প্রোগ্রামিং শেখার পাশাপাশি, প্রবলেম সলভিংও করতে হবে। শুরুতে সহজ প্রবলেম সলভ করাই ভালো। এজন্য তৈরি করা আছে দ্বিমিক অনলাইন জাজ। এই ভিডিওগুলো দেখলে সেখানে শুরু করা সহজ হবে। প্রবলেমগুলো নিজে নিজে সমাধান করতে পারলেই সবচেয়ে ভালো, আর তা না পারলে “৫২টি প্রোগ্রামিং সমস্যা ও সমাধান” বইটি পড়া যেতে পারে।

প্রবলেম সলভিং করতে করতে গিয়ে মনে হবে, একটু ডেটা স্ট্রাকচার ও অ্যালগরিদম জানলে ভালো হতো। সি দিয়ে ডেটা স্ট্রাকচার ও অ্যালগরিদমের সঙ্গে পরিচিত হওয়ার জন্য আমার লেখা “কম্পিউটার প্রোগ্রামিং ৩য় খণ্ড – ডেটা স্ট্রাকচার ও অ্যালগরিদম পরিচিতি” বইটি পড়তে পারো। বই পড়ার পাশাপাশি ইউটিউবে আমার ভিডিও লেকচারগুলোও কাজে আসবে বলে আমি মনে করি।

ওপরের কাজগুলো ঠিকঠাকভাবে করলে আমি মনে করি সি প্রোগ্রামিং ভাষা দিয়ে প্রোগ্রামিং শেখা – এই পথে তুমি বহুদূর এগিয়ে যাবে। তারপরও কেউ আরেকটি বই পড়তে চাইলে আমি বলব The C Programming Language বইটি পড়ার জন্য।

লিঙ্ক –

প্রোগ্রামিং আপনার জন্য নয়

যে ১০টি লক্ষণ থাকলে বুঝতে হবে প্রোগ্রামিং আপনার জন্য নয়

প্রোগ্রামিংয়ে আগ্রহীদের একটি কমন প্রশ্ন হচ্ছে—আমি কি প্রোগ্রামিংয়ে সফল হতে পারব? যখন কেউ ক্যারিয়ার বদলাতে চায়, বা সফটওয়্যার ডেভেলপমেন্টে আগ্রহী হয় এবং এ দিকে আসতে কী লাগবে তা জানতে কৌতূহলী হয়, তখন প্রোগ্রামিংয়ের প্রশ্নটিই সবার প্রথম চলে আসে।

কম্পিউটিংয়ে আনুষ্ঠানিক লেখাপড়া ছাড়া কাউকে এটি বোঝানো কঠিন। কেউ যদি ভালো প্রোগ্রামার না হয়, তো এটা ভাবা স্বাভাবিক যে সে আসলে ভালো করে শুরুই করেনি। অনেকটা এ রকম যে, আপনি একজন অভিনেতা হতে চান এবং সন্দেহ করেন যে আপনি আসলে ভালো অভিনয় করতে পারবেন কি না।

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

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

নিচের তালিকাটি আপনাকে খুঁজে বের করতে সাহায্য করবে যে আপনি প্রোগ্রামিং করার উপযোগী কি না, এবং এই অবস্থা বদলাতে চাইলে আপনাকে কী করতে হবে।

১) কৌতূহলের অভাব

আপনার যদি কম্পিউটার এবং টেকনোলজির প্রতি আগ্রহ না থাকে, আপনি কখনোই প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

কোনোকিছু শেখার প্রথম শর্ত হচ্ছে, শেখার বিষয়টির প্রতি সক্রিয় আগ্রহ থাকা। আপনার মন যদি প্রযুক্তি নিয়ে কৌতূহলী না হয়, তাহলে সফল প্রোগ্রামার হতে যে গভীর জ্ঞানের প্রয়োজন হয়, আপনার তা অর্জন করার শক্তি থাকবে না।

নিজেকে জিজ্ঞাসা করুন যে সত্যি প্রোগ্রামিং আপনাকে আকৃষ্ট করে কি না। যদি আপনার উত্তর হয় ‘না’, তবে অবশ্যই এমন কিছু খুঁজে বের করা উচিত যা আপনাকে আকৃষ্ট করে। যদি উত্তর হয় ‘হ্যাঁ’, তবে নতুন কিছু খুঁজে বের করুন যা আগে কখনো লক্ষ করেননি।

২) আত্ম-নিয়ন্ত্রণ ও দ্রুত সমাধান খুঁজে বের করার ক্ষমতা না থাকা

আপনি যদি নিজে নিজে প্রবলেম সলভ করার দক্ষতা তৈরি না করেন তো আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

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

ইন্টারনেটে দরকারী সব তথ্য পাওয়া যায়। এই বিশাল তথ্যভাণ্ডারে প্রবেশের একটি বিশাল দরজা রয়েছে: গুগল (google.com)। আপনি যা চান তাই গুগলের সাহায্যে পেতে পারেন। এর জন্য শুধু জানতে হবে গুগল কীভাবে ব্যবহার করতে হয়।

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

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

৩) অধ্যবসায়ের অভাব

সমস্যায় পড়লে আপনি যদি সহজেই হাল ছেড়ে দেন, তাহলে প্রোগ্রামার হিসেবে আপনি কখনোই সফল হতে পারবেন না।

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

একের পর এক সমস্যার মোকাবিলা করা কঠিন ও হতাশাজনক হতে পারে। আপনি যদি এতে বিরক্ত হন তাহলে পরবর্তী সমস্যা মোকাবিলা করার শক্তি পাবেন না। জিনিসগুলো কেন কাজ করছে না এটা খুঁজে বের করা আক্ষরিকভাবেই আপনার দায়িত্ব।

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

আপনার জানা প্রয়োজন যে, সমস্যাগুলো আসলে সমস্যা নয়, চ্যালেঞ্জ। প্রত্যেকটি চ্যালেঞ্জের মোকাবিলা আপনাকে গভীর জ্ঞান দেয়, সেই সাথে নতুন চ্যালেঞ্জ মোকাবিলা করার দক্ষতাও বৃদ্ধি করে।

৪) সমস্যা সমাধানের পর সফলতার অনুভূতি না থাকা

কোনো সমস্যা সমাধানের পর যদি আপনার মাঝে উত্তেজনা ও সফলতার কোনো অনুভূতি না জন্মায় তো আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

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

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

যখনই আপনি কোনো সমস্যা লড়াই করে সমাধান করবেন, সেটা যত ছোটই হোক, নিজেকে বাহবা দিন। এই অনুভূতি আপনাকে পরবর্তী সমস্যা মোকাবিলা করার শক্তি যোগাবে।

৫) শেখা ও বোঝার ক্ষেত্রে ধৈর্য না থাকা

শেখার ক্ষেত্রে যদি আপনার ধৈর্য না থাকে এবং সবকিছুই দ্রুত ও সহজে শিখতে চান তাহলে আপনি কখনো প্রোগ্রামিংয়ে সফল হবেন না।

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

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

৬) চিন্তা করতে গিয়ে ক্লান্ত/বিরক্ত হয়ে যাওয়া

আপনি যদি চিন্তা করায় অলস হন এবং মনোযোগ দিয়ে চিন্তা করাকে বিরক্তিকর জিনিস মনে করেন তো আপনি কখনো সফল প্রোগ্রামার হতে পারবেন না।

প্রোগ্রামিং একটি চিন্তার কাজ। মানুষ হিসেবে আমরা চিন্তায় পারদর্শী। আমরা সারাদিন চিন্তা করি, তবুও আমরা চিন্তা করায় অলস। একটা বিষয়ে দীর্ঘ সময় চিন্তা করা কঠিন, যদি না আপনি এতে অভ্যস্ত হন।

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

প্রোগ্রামিং করার সময় আপনি ক্লান্ত হয়ে যাবেন। ব্যায়াম করার মতো চিন্তা করতেও শারীরিক শক্তি খরচ হয়। মানসিক পরিশ্রম (চিন্তা) করার অভ্যাস না থাকলে স্থির থাকা কঠিন। কিন্তু এটা জিমে যাওয়ার মতো, যতই যাবেন ততই শক্তিশালী হবেন।

আপনার মস্তিষ্ক একটি পেশির মতো— যতই ব্যবহার করবেন, ততই এটি চিন্তা করতে পারবে। যতই বিভিন্ন বিষয় জানবেন, ততই মানসিক ধারণা বাড়বে, সমাধান খোঁজা তত সহজ হবে।

৭) নিজের জন্য চিন্তা করতে না পারা

আপনি যদি চান যে অন্যরা আপনার জন্য ভাবুক, এবং যদি নিজের অবস্থা ভালো করে দেখতে অনিচ্ছুক হন, আপনি কখনো সফল প্রোগ্রামার হবেন না।

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

কোনটা কাজ করে এবং কোনটা করে না, সে বিষয়ে আপনার নিজের মতামত গড়ে তুলতে হবে। আপনাকে জানতে হবে কেন আপনি মনে করেন আপনার সমাধান কাজ করবে, এবং এর উপকারীতা কী। আপনার নিজের সমাধানের পক্ষে যুক্তি প্রদানের ক্ষমতা থাকতে হবে। যদি আপনি সমাধান বদলান, তবে যেন নতুন জিনিসগুলো গ্রহণ করতে পারেন।

নিজের অভিজ্ঞতা ও যৌক্তিক চিন্তন দক্ষতার দ্বারা নিজস্ব দৃষ্টিভঙ্গি তৈরি করুন। যুক্তিসংগত অনুমান করুন, একটি অবস্থান নিন এবং নতুন তথ্য এলে তা গ্রহণ করতে প্রস্তুত থাকুন।

৮) অনড়, সংকীর্ণ এবং/বা অগোছালো চিন্তা

মাঝে মাঝে দুটি দিক আমি শিক্ষার্থীদের মাঝে দেখতে পাই। একটি হচ্ছে দৃঢ় এবং সংকীর্ণ চিন্তা। এরা সাহায্য গ্রহণ করতে অস্বীকার করে, ফিডব্যাক দেওয়ার পরও পরিবর্তিত হয় না। সবকিছু এক দিক থেকে বিচার করে এবং যেকোনো পরামর্শ এড়িয়ে যায়।

দ্বিতীয় দিক হচ্ছে অগোছালো চিন্তা। ছাত্ররা অনেক সময় কোনো কিছুকে অযথাই জটিল করে তোলে। তাদের কোড চরম অগোছালো এবং বোঝা কঠিন হয়। সমস্যা নিয়ে প্রয়োজনের চেয়ে বেশি চিন্তা করে এবং দশ লাইনের জায়গায় একশ লাইন কোড লিখে বসে থাকে।

প্রোগ্রামিং করতে গিয়ে এই দুই মেরু যখন একসাথে হয়, ফলাফল হয় তখন চরম, জোর করে জোড়া-তালি দিয়ে ঠিক করার মতো। যা দরকার তা হলো পুনরায় সমাধানে ফিরে যাওয়া, পুনরায় বিচার করা, প্রথমবার চেষ্টা করা পদ্ধতি বাতিল করা এবং পুনরায় সাজানো।

অন্য সম্ভাবনা দেখতে না পাওয়া বা সমালোচনা ঠিকভাবে গ্রহণ না করা উন্নতির অন্তরায়। অগোছালো হলে আপনার কাজ ধীরগতির হবে। কাজের সার্বিক মানও খারাপ হবে।

আপনাকে পেছনে ফিরে যেতে হবে। কীভাবে এগোচ্ছেন তা দেখতে হবে। কীভাবে আরো ভালো করতে পারেন? এমন কিছু কি করতে পারেন যাতে আপনার জীবন সহজ হয়? কিছু কি বাদ যাচ্ছে যা আপনাকে সাহায্য করতে পারতো?

৯) ভালো ও খারাপ উত্তরের পরিধি না জেনে ‘সঠিক’ উত্তর খোঁজা

আপনি যদি প্রোগ্রামিংকে সমাধানের ক্ষেত্র হিসেবে না বিবেচনা করে শুধু ‘সঠিক’ উত্তর খোঁজার লক্ষে ব্যবহার করেন, আপনি কখনো প্রোগ্রামার হিসেবে সফল হতে পারবেন না।

কোনো দক্ষতা বা প্রোগ্রামিং শেখার সময় অনেকে জানতে চায় যে তারা যা করেছে তা সঠিক কি না। উত্তর হচ্ছে, ”এটা নির্ভর করে”।

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

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

১০) খুঁটিনাটিতে মনোযোগ না দেওয়া

আপনি যদি ক্ষুদ্র ক্ষুদ্র বিষয়গুলোতে মনোযোগ না দেন তো সফল প্রোগ্রামার হতে পারবেন না।

কম্পিউটার সূক্ষ্ম যন্ত্র। কম্পিউটার প্রোগ্রাম করার সময় প্রয়োজনীয় কমান্ড এমনভাবে দিতে হয় যেন কম্পিউটার গ্রহণ পারে। নাহলে কম্পিউটার কাজ করবে না। এক্ষেত্রে মাঝামাঝি ধরনের কিছু নেই—হয় কাজ করবে, নয় করবে না।

এর মানে এই যে, যখন প্রোগ্রামিং করবেন তখন খুঁটিনাটির দিকে মনোযোগ দিতে হবে। প্রত্যেকটি স্পেস, ব্র্যাকেট, বা সেমিকোলন নিয়ম মতো দিতে হবে। জায়গা ছাড়া কিছু বসাবেন, কিছুই কাজ করবে না। কম্পিউটার যখন কোনো এরর দেখায়, আপনাকে সেটা মনোযোগ দিয়ে দেখতে হবে এবং বুঝতে হবে এতে আসলে কী বলছে। আপনি যদি তা না করেন, তাহলে ঘণ্টার পর ঘণ্টা ভুল খুঁজে মরতে হতে পারে।

খুঁটিনাটি সবই লক্ষ রাখতে হবে, আপনাকে সেটা মানতে হবে। যখন মানবেন, তখন আপনি আপনার কোড স্ক্যান করে সব ত্রুটি দূর করতে পারবেন। এমন টুল ব্যবহার করতে পারবেন যা দ্রুত ইস্যু বের করতে আপনাকে সাহায্য করবে।

বোনাস: ব্যবসায়ী-মনস্ক হওয়া

এটি একটি পার্শ্ব-পর্যবেক্ষণ। যেসব শিক্ষার্থী ব্যবসায়ী-মনস্ক হয় তারা বেশিরভাগই পদ্ধতির চেয়ে ফলাফলের ওপর জোর দেয়। এমন কিছু চায় যা তাদের ব্যবসা প্রসারিত করবে। দীর্ঘ সময় ধরে কিছু শেখাকে তারা তাদের লক্ষ অর্জনের বাধা হিসেবে দেখে।

এ ধরনের শিক্ষার্থীদের প্রোগ্রামার হিসেবে গড়ে তোলা কঠিন। তাদের মধ্যে একটা অস্থিরতা কাজ করে। সত্যিকারভাবে প্রযুক্তিকে জানতে যে শিক্ষা প্রয়োজন তা গ্রহণে তারা অনিচ্ছুক হয়। প্রযুক্তিকে তারা কোনো কাজ সম্পন্ন করার মাধ্যম হিসেবে (প্রান্তিক ব্যবহারকারী) দেখতে পছন্দ করে।

আমি দেখেছি কিছু শিক্ষার্থী খুব বেশি ব্যবসা-মনস্ক, শিখতে হিমশিম খায়। মাঝে মাঝে তারা দ্রুত ফ্রিল্যান্স ক্লায়েন্টের কাছ থেকে এমন কাজ নিয়ে বসে যেটা নিজে করতে পারবে না। তারপর সেটা করার জন্য বিভিন্ন রিসোর্স/টেমপ্লেট খুঁজে মরে বা কাজটিই অন্য কাউকে দিয়ে দেয়। তারা প্রোগ্রামার হিসেবে ভালো নয়, কিন্তু কাজ যোগাড় করতে পারে দক্ষতার সাথে।

তো আমি যা যোগ করব, শিক্ষার্থীরা যারা ব্যবসা করতে ইচ্ছুক, বিক্রি করতে দক্ষ, লোক পটাতে ওস্তাদ, তারা হয়তো অন্যদের চেয়ে বেশি যুদ্ধ করবে প্রোগ্রামিং করতে গিয়ে। তাদের প্রকৃতিই হচ্ছে আর্থিক সুযোগ খোঁজা। প্রোগ্রামিংয়ের মতো দীর্ঘ সময়ের খুঁটিনাটিযুক্ত বিষয় তাদের অধৈর্য করে তোলে।

উপসংহার

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

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

অনুবাদ – মোশারফ হোসেন।

[Jonathan Bluks রচিত মূল লেখাটি পাওয়া যাবে এখানেhttps://bit.ly/2DdU6VF]

ওয়েবের ত্রিশ বছর, এর পরে কী?

তথ্য ব্যবস্থাপনা সিস্টেম নিয়ে আমার মূল প্রস্তাব থেকে ত্রিশ বছর পর বিশ্বের অর্ধেক মানুষ আজ ইন্টারনেটের সঙ্গে যুক্ত। এই সময়ে আমরা অনেক দূর এসেছি। এখন এটি ভাবার সময় যে, আর কতদূর আমাদের যেতে হবে।

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

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

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

কোনো সমস্যা সমাধান করতে হলে প্রথমে সমস্যাটিকে ভালো করে চিহ্নিত করতে হবে। আমি মোটামুটি নিচের তিনটি সমস্যা দেখতে পাই যেগুলো আজকের ওয়েবকে কলুষিত করছে:
১) বিদ্বেষপূর্ণ ইচ্ছা – রাষ্ট্র নির্দেশিত সাইবার হামলা, হ্যাকিং, সাইবার অপরাধ, হয়রানি ইত্যাদি।
২) বিকৃত উদ্দীপনা সৃষ্টিকারী সিস্টেম – যেখানে ব্যবহারকারীর মূল্যবোধকে বলি দেওয়া হয়। যেমন: ক্লিকবেট জাতীয় বাণিজ্য এবং অপতথ্য প্রচার।
৩) ভালো কোনো সিস্টেমের অনাকাঙ্ক্ষিত নেতিবাচক পরিস্থিতি – কোনো বিষয়ের ওপর ব্যক্তি/দলের ক্রোধান্বিত ও একপেশে বক্তব্য।

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

শুধু সরকার, সামাজিক যোগাযোগ মাধ্যম বা মানুষের প্রকৃতিকে দোষ দিলে হবে না। সমস্যার লক্ষণগুলোর পেছনে ছুটলে আমাদের হতাশা ছাড়া আর কিছুই আসবে না। আমাদের নজর দিতে হবে সমস্যার গোড়ায়। আর এটি করতে হলে পুরো বিশ্বকে একত্রে এগিয়ে আসতে হবে।

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

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

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

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

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

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

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

ওয়েব সবার জন্য এবং সমষ্টিগতভাবে আমরাই একে পরিবর্তনের ক্ষমতা রাখি। এটি হয়তো সহজ হবে না। তবে আমরা যদি অল্প স্বপ্ন দেখি এবং অনেক বেশি কাজ করি, তাহলেই আমরা আমাদের কাঙ্ক্ষিত ওয়েবকে পাব।

– অনুবাদঃ মোশারফ হোসেন [ইংরেজি থেকে অনূদিত। স্যার টিম বার্নার্স-লি রচিত মূল লেখাটি আছে এখানে – https://bit.ly/2VRCKWb]