প্রোগ্রামিং ভাবনা

14 278

আমরা কি অনুভব করি কী অভাবনীয় একটা সময়ে আমরা বাস করছি? এইতো একটু আগে আমি ডানে ঘুরে তাকালাম, আর পাঁচ ফুট দূরেই জানালার কাঁচে দেখুনতে পেলাম নিজের প্রতিবিম্ব। আমার ছবিটা কাঁচে প্রতিফলিত হয়ে আবার আমার কাছে ফিরে আসতে অতিক্রম করলো প্রায় দশ ফুট। এটুকু যেতে আসতে আলোর সময় লাগলো দশ ন্যানো সেকেন্ড [২]। আমার ল্যাপটপের প্রসেসরের ক্লক স্পিড যদি ১ গিগা হার্জ হতো তাহলে এই অতি ক্ষুদ্র সময়ে সে প্রায় দশটা ছোট ছোট গণনার কাজ করে ফেলতে পারতো! কিন্তু আমার কম্পিউটারের স্পিড প্রায় ২ গিগা হার্জ। এবং তার প্রসেসরের কোর আছে ৪ টা অর্থাৎ এই সময়েই সে, ৮০ টা গণনা কাজ শেষ করে ফেলেছে [৩]। এ প্রসঙ্গে ভাবা যেতে পারে
অ্যাপোলো ১১ নভোযানের কথা যেটাতে করে প্রথম মানুষ চাঁদে পৌছায়। এই নভোজানের নিয়ন্ত্রণকারী কম্পিউটার পুরো ৮ দিনের মিশনে যতগুলো গণনা কাজ করেছে, তা আমার এই ল্যাপটপ করতে পারবেন মাত্র ৩ মিনিটে [৪]! আমি নিশ্চিত আপনি যে কম্পিউটারের সামনে বসে এই লেখাটা পড়ছেন সেটার ক্ষমতাও এর কাছা-কাছি। কিন্তু কই, আমরা তো চাঁদে চলে যাচ্ছি না। এমনকি চাঁদে চন্দ্রবিন্দুর সাথে তুলনীয় কোনো “অ-সাম” কাজও করতে পারছিনা আমরা কেউই। কী অভাবনীয় এক শক্তির আধার হাতে নিয়ে বসে আছি তা আমরা উপলব্ধি করছি না। আর যারা একটু আধটু উপলব্ধি করি তারাও সেটা ব্যবহারে ব্যর্থ হই কারণ আমরা প্রোগ্রামিং জানি না। আর জানলেও, কখনো নিজের কম্পিউটারের ক্ষমতার আলটিমেট ব্যবহার কী করতে পারি তা নিয়ে ভাবি না আমরা কেউ। কম্পিউটারের সাহায্যে কী অভাবনীয় সব কাজ কর্ম করা হচ্ছে এবং নিজেদের অজান্তেই তার কতকিছু আমরা ব্যবহার করছি সেসব নিয়ে লিখবো অন্য কখনো। আজকের এই লেখাটি যারা প্রোগ্রামিং শিখতে চায় তাদের জন্য। অনেকটা প্রশ্ন-উত্তর ফরম্যাটে লেখা [৫]। পাঠকরা যদি নিজেদের প্রশ্নের উত্তর মূল লেখায় না পান, তাহলে মন্তব্যের ঘরে জিজ্ঞেস করলেন পরবর্তী ভার্সনে আপডেট করে নেওয়া হবেন। তাহলে শুরু করা যাক,

১) প্রথম কোন প্রোগ্রামিং ভাষাটি শিখবো ? সি, সি++, পাইথন, জাভা, হ্যাসকেল, প্যাসকেল, লিসপ, অ্যাসেম্বলি, ম্যাটল্যাব, আর, ফরট্রান …. ব্লা ব্লা ব্লা ?

উত্তর:- সি

কারণ:- আমি ধরে নিচ্ছি, আপনি আপনার  বাবা-মা বা বন্ধু-বান্ধবকে ইম্প্রেস করার জন্য প্রোগ্রামিং শিখতে চাইছেন না। অথবা শুধু ঘরে বসে আউটসোর্সিং করে বড়লোক হওয়াই আপনার উদ্দেশ্য নয়। আমি ধরে নিচ্ছি, আপনি প্রোগ্রামিং শিখতে চাইছেন কারণ বাংলাদেশ যখন চন্দ্রযান পাঠাবে তার নিয়ন্ত্রণকারী কম্পিউটারের অপারেটিং সিস্টেম লিখবেন আপনি, অথবা আপনি হয়তো ছোট্ট একটা রোবট বানাতে চান যেটা আপনার টুকিটাকি কাজ করে দেবে। আপনি হয়তো চান লক্ষকোটি টাকা দামে বিদেশ থেকে আনা জীবন রক্ষাকারী মেডিক্যাল ইকুইপমেন্ট কম খরচে দেশে বসেই তৈরি করতে[৭]। আপনি হয়তো এমন একজন এক্সপার্ট হতে চান যে বিভিন্ন কল কারখানা অটোমেটেড করে ফেলতে পারে। অথবা আপনি হয়তো চান কৃত্রিম বুদ্ধিমত্তা নিয়ে গবেষণা করতে… (এই তালিকা অনেক বড় হতে পারে)। অর্থাৎ আপনি যদি চান, কম্পিউটারের সাহায্যে আপনি আসেপাশের প্রকৃতির সাথে মিথোস্ক্রিয়া করতে তাহলে সি-ই আপনার প্রথম প্রোগ্রামিং ভাষা। সি, এর মত এত পরিষ্কারভাবে আর কোনো ভাষাই কম্পিউটারকে আমাদের সামনে তুলে ধরতে দেখিনি। অ্যাসেম্ব্লি বা মেশিন ল্যাঙ্গুয়েজে হয়তো কম্পিউটারের নাড়ি নক্ষত্রের উপর আরো বেশি নিয়ন্ত্রণ পাওয়া যায়। কিন্তু ওর জন্য প্রয়োজনীয় সুদীর্ঘ্য ডিটেইল বেশিরভাগ সময়ই মূল চিত্রটা ঢেকে ফেলে। প্রথম শেখা কম্পিউটার ভাষাও অনেকটা মাতৃভাষার মত। পরবর্তী জীবনে অন্য অনেক ভাষা নিয়ে কাজ করলেনও, মূল অ্যালগরিদমটা আপনি হয়তো সি-তেই ভাববেন। সি, প্রতিটি ভেরিয়েবলকে কোনো রাখঢাক না করেই তুলে দেয় আমাদের হাতে। শিখিয়ে দেয়, এত শক্তিশালী কম্পিউটারের দুর্বলতার স্থান কোনগুলো। ফলে আপনি যখন কম্পিউটারের সাহায্যে আপনার হাতে বানানো কোনো যন্ত্রকে নিয়ন্ত্রণ করতে চাইবেন, তখন সি এর জ্ঞান আপনাকে এগিয়ে নেবে অনেকখানি। সি জানলে, আপনি অন্যান্য হাই লেভেল ভাষাকে অ্যাপ্রিশিয়েট করতেও শিখবেন। এবং তাদের শক্তি বা দুর্বলতাটাও বুঝতে পারবেনন।

 

২) আমি একবার একটি প্রোজেক্টের জন্য সি (বা ম্যাটল্যাব বা আর বা ম্যাথমেটিকা বা জাভা) ব্যবহার করেছি । আমি কি এখন প্রোগ্রামিং শিখতে গিয়ে বাড়তি সুবিধা পাবো ?

 

উত্তর:- এই তো কামটা সেরেছেন। আপনার জন্য প্রোগ্রামিং শেখা একেবারে নতুন কারো চেয়ে অনেকগুণ কঠিন হয়ে গেছে ।

 

কারণ:- কোনো একটা প্রোগ্রামিং ভাষা শেখা। আর কোনো একটা প্রোগ্রামিং ভাষা ব্যবহার করে কিছু-মিছু করে ফেলা এক কথা নয়। যেমন আমি হয়তো, ইন্টারনেট ঘেটে কিছু ফ্রেঞ্চ কথা শিখে প্যারিসের কোনো মুদি দোকান থেকে ঠিক ঠিক দুই কেজি আলু কিনে আনলাম। কিন্তু এর মানেই আমি ফ্রেঞ্চ শিখে ফেলেছি তা নয়। প্রোগ্রামিং ভাষার ক্ষেত্রে ব্যাপারটা আরো করুণ। কারণ প্রোগ্রামিং ভাষার শুরুতে, নানান টাইপের ভেরিয়েবল কোনটার কাজ কী, কিভাবে দুইটি সংখ্যা যোগ করা যায়। একটা স্ট্রিং-কে কিভাবে উলটো করে লেখা যায়। কত ভিন্ন ভিন্ন উপায়ে লুপ ঘোরাণো সম্ভব। একটা তালিকা থেকে নির্দিষ্ট কোনো উপাদান কিভাবে সব চেয়ে দ্রুত খুঁজে বের করা যায়। পয়েন্টার কিভাবে কাজ করে। নেগেটিভ সংখ্যার বাইনারি প্রকাশ কীভাবে করে। ফাংশন। রিকার্সন। এইসব খুটিনাটি খুব নিখুত ভাবে শিখতে হয়। এবং এগুলোতে পার্ফেকশন আনতে মাসের পর মাস সাধণা করতে হয়। ওদিকে, অতীতে হয়তো, এর ওর কোড থেকে কিছু অংশ নিয়ে, একটু এদিক ওদিক করে, আপনি বড় কোনো সিমুলেশন করে ফেলেছেন। সেইসব বড় বড় কাজের স্মৃতি, আপনাকে এসব খুটিনাটি শেখার সময় অধৈর্য্য করে তুলবে। আমি আমার অনেক বন্ধুকেই, শুধুমাত্র এই কারণে সঠিকভাবে প্রোগ্রামিং শিখতে ব্যর্থ হতে দেখেছি। এই ফাঁদ কাটিয়ে ওঠার উপায় আপনাকে নিজের মত করে বের করতে হবেন। তবে এ বিষয়ে আমার টিপ্স হলো, নিজের জন্য কিছু বেঞ্চমার্ক ঠিক করা। ধরুন, নিজেকে প্রশ্ন করলেনন, যে ভাষাটি আপনি শিখছেন, সেই ভাষায় কি আপনি একটা সিম্পল “নোট প্যাড” (টেক্স্ট এডিটর) প্রোগ্রাম বানাতে পারবেন; যেটার সাহায্যে টেক্সট ফাইল খোলা যায়, এডিট করা যায়, কোনো শব্দ সার্চ করা যায়, রিপ্লেস করা যায়, নতুন কিছু টাইপ করা যায় এবং পরিবর্তিত লেখাটা সেইভও করা যায়? এটা যেদিন বানাতে পারবেন, বা সত্য-সত্যই বানাতে পারার মত কনফিডেন্ট হতে পারবেন। সেইদিন আপনি ঐ ভাষাটা মোটামুটি আয়ত্ব করে ফেলেছেন।

 

) শুনেছি প্রোগ্রামার হতে হলে খুব ক্রিয়েটিভ হতে হয় । আমার তো অতো ক্রিয়েটিভ নেই, আমি কি পারবো ?

 

উত্তর:- একদম বাজে কথা।

 

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

 

)  প্রোগ্রামিং ভাষা শেখার সবচেয়ে উপযুক্ত বয়স কোনটা ?

 

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

 

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

 

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

 
উত্তর:- ওরে কে কোথায় আছিস ওকে দুটো টাকা দে, কারণ ও সব কিছুতে সবার আগে লাভ খোঁজে।

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

 
৬) আমি ফিজিক্স, কেমিস্ট্রি, ম্যাথ বা বায়োলজি পড়ছি, কম্পিউটার প্রোগ্রামিং শিখে আমার কী হবেন ?

 

উত্তর:- আপনি হয়তো এসব বিষয়ে পড়েছেন কিন্তু গবেষণা করছেন না, বা এসব বিষয়ের সাম্প্রতিক গবেষণা নিয়ে খোঁজ খবর রাখেন না। তাই এই প্রশ্ন করলেন।

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

 
৭) প্রোগ্রামিং শিখে চাকরি পাবো কোথায় ?

 

উত্তর:- যে প্রোগ্রামিং জানে, সে চাকরী খোঁজে না। চাকরীই তাকে খোঁজে।

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

 

 

৮) টিস ইউওরসেল্ফ সি ইন ২১ ডেইজ নামক একটি বই কিনেছি । এটা পড়ে কি প্রোগ্রামিং শিখতে পারবেন ?

 

উত্তর:- না, পারবেন না। ঠিক যেমন টিচ ইউরসেল্ফ ফ্রেঞ্চ ইন ২১ ডেইজ পড়ে একুশ দিনে ফরাসি ভাষা শিখতে পারবেন না তেমন।

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

 
৯) সি শেখার জন্য কোন বই পড়বো ?

উত্তর:- ইংরেজীতে হার্বার্ট শিল্ডের টিচ ইয়োরসেল্ফ সি [১০] বইটা দিয়ে শুরু করা যেতে পারেন। এ ছাড়া বাংলায় সুবিন ভাই এর বই[৮] , এবং অন্য আরো কিছু বই আছে। কয়েকটা ঘাটাঘাটি করে দেখুনতে হবেন কোনটা ভালো লাগে।

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

 
১০) প্রোগ্রামিং বই কিভাবে পড়ে ?

 

উত্তর:- আগাপাশতলা।

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

 
১১) আমি আউটসোসিং করতে চাই । কিন্তু আপনি শুরুতে যেভাবে বললেন মনে হলো আউটসোসিং কে বাতিল করে দিলেন ।

 
উত্তর:- আমি মোটেই তা বলিনি। আউট সোর্সিং করা খুবই ভালো। কিন্তু “ঘরে বসে আউট সোর্সিং করে বড় লোক হবো”, শুধু এরকম চিন্তা করে প্রোগ্রামিং শিখতে আসলে আপনি প্রোগ্রামিং এর অনেক মজা মিস করবেন। এবং সম্ভবত ভালো প্রোগ্রামার হয়ে উঠতে পারবেন না।

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

 

 
১২) এইসব ল্যাপটপ ডেস্কটপ কম্পিউটার আমার ভালো লাগে না । আমার লাগবে সুপার কম্পিউটার । কিন্তু সেটা আমি কোথায় পাবো ?

 

উত্তর:- একেবারে শুরুতেই সুপার কম্পিউটারের অ্যাক্সেস আপনি পাবেন না। কিন্তু সুপারকম্পিউটারের মত কম্পিউটার আসলে আপনার হাতের নাগালেই আছে।

 
কারণ:- সুপার কম্পিউটারে লক্ষ লক্ষ প্রসেসর থাকে, যারা একই সঙ্গে কাজ করে। ফলে এক ক্লক সাইকেলেই লাখ খানেক কাজ হয়ে যায়। নরমাল কম্পিউটারের প্রোগ্রামিং আর সুপার কম্পিউটারের প্রোগ্রামিং একটু আলাদা হয়। কিন্তু জেনে অবাক হবেন, গেইম খেলার জন্য উচ্চক্ষমতার যে গ্রাফিক্স কার্ডগুলো আপনি ব্যবহার করো সেগুলো ব্যবহার করে আপনি প্যারালাল প্রোগ্রামিং করতে পারেন। সি বা সিপ্লাসপ্লাসেই! [৬] যেটা আপনাকে প্রস্তুত করতে পারে, সত্যিকারের সুপার কম্পিউটার ব্যবহার করে বড় কোনো সমস্যা সমাধানের জন্য!

 
১৩) প্রোগ্রামিং করলেন কি স্কুলের পড়ার ক্ষতি হয় ?

উত্তর:- না।

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

১৪) আমার বাবা (অথবা মা, বড়, ভাই, আপু) মনে করে প্রোগ্রামিং করে করে আমি সময় নষ্ট করছি । তারা দিনে আমাকে একঘন্টার বেশি কম্পিউটার চালাতে দেয় না । আমি কীভাবে কম্পিউটার প্রোগ্রামিং শিখবো ?

উত্তর:- সম্ভবত আপনি সময় নষ্ট করছেন ঠিকই। কিন্তু প্রোগ্রামিং করে নয়। অন্যকোনো ভাবে। ফলে আপনার রেজাল্ট খারাপ হচ্ছে।

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

সূএাবলী-
[১] Weiser, M. The Computer for the 21st Century. Scientific American ,
September, 1991.
[২] ন্যানো সেকেন্ডে আলো যায় 3×10^8×10^(-9)m = 30 cm = 11.81 inch
=~ 1 foot
[৩] আসলে একটি ইন্স্ট্রাকশন সম্পন্ন হয় ঠিকই । আমরা হিসাবে সুবির্দ্বাথে সেটাকে ধরেছি । এক গিগা হার্জ মানে প্রতি ন্যানো সেকেন্ডে একটা করে ক্লক পাল্স ।
[৪] অ্যাপোলোর পুরো মিশনের সময় ছিলো, 8 দিন 03 ঘন্টা 18 মিনিট 35 সেকেন্ড । তার কম্পিউটারের ক্লক স্পিড ছিলো ১ মেগাহার্জ । এক ক্লকে একটির বেশি মাইক্রোইনস্ট্রাকশন সম্পন্ন করা সম্ভব নয় । ফলে এই পুরো অভিযানের সময় সে যতগুলো মাইক্রো ইনস্ট্রাকশন চালাতে পারলো হিসাব করলে দেখা যায়, আমার ল্যাপটপ সেটা পারবেন ৩ মিনিটের একটু কম সময়ে । এছাড়াও আমার কম্পিউটারের রেজিস্টার সংখ্যা, পাইপ লাইনিং, বাস উইড্থ, হিসাবে করলে, ঐ পরিমান কাজ আসলে কয়েক সেকেন্ডে করতে পারার কথা এটার !
[৫] এগুলো আমার একান্তই ব্যক্তিগত মতামত । এতদিনের অভিজ্ঞতায় যতটুকু জেনেছি, শিখেছি তার আলোকে লেখা । যে প্রশ্নগুলো আলোচনা করেছি, আমার দেওয়া উওরগুলোর তাদের শেষ উওর নয় । কারণ শেষ কথা বলে কোন কথা নেই । হা হা হা….

লেখাটি http://www.grandhelper.blogspot.com/ এর সি প্রোগ্রামিং বিভাগ থেকে copy and paste করা হয়েছে ।
শেষ কথা : আমার ফেইসবুক পেজে লাইক দিতে এখানে ক্লিক দিন http://www.facebook.com/grandhelper
আমার ব্লগ থেকে ঘুরে আসতে চাইলে এখানে ক্লিক দিন http://www.grandhelper.blogspot.com

Series Navigation[ সি প্রোগ্রামিং :- অধ্যায় শূন্য ] শুরুর আগে >>
14 মন্তব্য
  1. নাঈম প্রধান বলেছেন

    ভাল একটি পোস্ট । 🙄 শেয়ার করার জন্য ধন্যবাদ।

    1. sabuj4u বলেছেন

      @নাঈম প্রধান: আপনাকে অনেক অনেক ধন্যবাদ একটি মূল্যবান comment করার জন্য ।

  2. দিপু রায়হান বলেছেন

    thanks for shear….

    1. sabuj4u বলেছেন

      @দিপু রায়হান: আপনাকে অনেক অনেক ধন্যবাদ একটি মূল্যবান comment করার জন্য ।

  3. লিটন হাফিজুর বলেছেন

    অনেক কিছু জানতে পারলাম।শেয়ার করার জন্য ধন্যবাদ সবুজ ভাই।

    1. sabuj4u বলেছেন

      @লিটন হাফিজুর: আপনাকে ধন্যবাদ পড়ার জন্য ।

  4. ইফতি মাহমুদ বলেছেন

    সেইরকম পোস্ট । 🙂

    1. sabuj4u বলেছেন

      @ইফতি মাহমুদ: অসংখ্য ধন্যবাদ এমন সুন্দর কমেন্ট করার জন্য ।

  5. আকাশ বলেছেন

    সুন্দর!!

    1. sabuj4u বলেছেন

      @আকাশ: খুব ভাল লাগল ।

  6. Om বলেছেন

    Osadharon………..

    1. sabuj4u বলেছেন

      @Om: ইয়াহু । আপনার মন্তব্য খুব ভাল লাগল ।

  7. rafarayhan বলেছেন

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

    1. sabuj4u বলেছেন

      @rafarayhan: ওপেনসোর্স এবং কিনতে ও পাবেন বাজারে । আর চাইলে আমার হেল্প নিতে পারেন । আপনার মন্তব্য পড়ে আমার খুব ভাল লাগল । ধন্যবাদ ।

উত্তর দিন