‘‘The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it.’’
-Mark Weiser [১]
আমরা কি অনুভব করি কী অভাবনীয় একটা সময়ে আমরা বাস করছি? এইতো একটু আগে আমি ডানে ঘুরে তাকালাম, আর পাঁচ ফুট দূরেই জানালার কাঁচে দেখতে পেলাম নিজের প্রতিবিম্ব। আমার ছবিটা কাঁচে প্রতিফলিত হয়ে আবার আমার কাছে ফিরে আসতে অতিক্রম করলো প্রায় দশ ফুট। এটুকু যেতে আসতে আলোর সময় লাগলো দশ ন্যানো সেকেন্ড [২]। আমার ল্যাপটপের প্রসেসরের ক্লক স্পিড যদি ১ গিগা হার্জ হতো তাহলে এই অতি ক্ষুদ্র সময়ে সে প্রায় দশটা ছোট ছোট গণনার কাজ করে ফেলতে পারতো! কিন্তু আমার কম্পিউটারের স্পিড প্রায় ২ গিগা হার্জ। এবং তার প্রসেসরের কোর আছে ৪ টা অর্থাৎ এই সময়েই সে, ৮০ টা গণনা কাজ শেষ করে ফেলেছে [৩]। এ প্রসঙ্গে ভাবা যেতে পারে অ্যাপোলো ১১ নভোযানের কথা যেটাতে করে প্রথম মানুষ চাঁদে পৌছায়। এই নভোজানের নিয়ন্ত্রণকারী কম্পিউটার পুরো ৮ দিনের মিশনে যতগুলো গণনা কাজ করেছে, তা আমার এই ল্যাপটপ করতে পারবে মাত্র ৩ মিনিটে [৪]! আমি নিশ্চিত তুমি যে কম্পিউটারের সামনে বসে এই লেখাটা পড়ছো সেটার ক্ষমতাও এর কাছা-কাছি। কিন্তু কই, আমরা তো চাঁদে চলে যাচ্ছি না। এমনকি চাঁদে চন্দ্রবিন্দুর সাথে তুলনীয় কোনো “অ-সাম” কাজও করতে পারছিনা আমরা কেউই। কী অভাবনীয় এক শক্তির আধার হাতে নিয়ে বসে আছি তা আমরা উপলব্ধি করছি না। আর যারা একটু আধটু উপলব্ধি করি তারাও সেটা ব্যবহারে ব্যর্থ হই কারণ আমরা প্রোগ্রামিং জানি না। আর জানলেও, কখনো নিজের কম্পিউটারের ক্ষমতার আলটিমেট ব্যবহার কী করতে পারি তা নিয়ে ভাবি না আমরা কেউ। কম্পিউটারের সাহায্যে কী অভাবনীয় সব কাজ কর্ম করা হচ্ছে এবং নিজেদের অজান্তেই তার কতকিছু আমরা ব্যবহার করছি সেসব নিয়ে লিখবো অন্য কখনো। আজকের এই লেখাটি যারা প্রোগ্রামিং শিখতে চায় তাদের জন্য। অনেকটা প্রশ্ন-উত্তর ফরম্যাটে লেখা [৫]। পাঠকরা যদি নিজেদের প্রশ্নের উত্তর মূল লেখায় না পান, তাহলে মন্তব্যের ঘরে জিজ্ঞেস করলে পরবর্তী ভার্সনে আপডেট করে নেওয়া হবে। তাহলে শুরু করা যাক,
১) প্রথম কোন প্রোগ্রামিং ভাষাটি শিখবো? সি/ সি++/ পাইথন/ জাভা/ হ্যাসকেল/ প্যাসকেল/ লিসপ/ অ্যাসেম্ব্লি/ ম্যাটল্যাব / আর/ ফরট্রান/ … ব্লা ব্লা ব্লা?
উত্তর:- সি
কারণ:- আমি ধরে নিচ্ছি, তুমি তোমার বাবা-মা বা বন্ধু-বান্ধবকে ইম্প্রেস করার জন্য প্রোগ্রামিং শিখতে চাইছো না। অথবা শুধু ঘরে বসে আউটসোর্সিং করে বড়লোক হওয়াই তোমার উদ্দেশ্য নয়। আমি ধরে নিচ্ছি, তুমি প্রোগ্রামিং শিখতে চাচ্ছো কারণ বাংলাদেশ যখন চন্দ্রযান পাঠাবে তার নিয়ন্ত্রণকারী কম্পিউটারের অপারেটিং সিস্টেম লিখবে তুমি, অথবা তুমি হয়তো ছোট্ট একটা রোবট বানাতে চাও যেটা তোমার টুকিটাকি কাজ করে দেবে। তুমি হয়তো চাও লক্ষকোটি টাকা দামে বিদেশ থেকে আনা জীবন রক্ষাকারী মেডিক্যাল ইকুইপমেন্ট কম খরচে দেশে বসেই তৈরি করতে[৭]। তুমি হয়তো এমন একজন এক্সপার্ট হতে চাও যে বিভিন্ন কল কারখানা অটোমেটেড করে ফেলতে পারে। অথবা তুমি হয়তো চাও কৃত্রিম বুদ্ধিমত্তা নিয়ে গবেষণা করতে… (এই তালিকা অনেক বড় হতে পারে)। অর্থাৎ তুমি যদি চাও, কম্পিউটারের সাহায্যে তোমার আসেপাশের প্রকৃতির সাথে মিথোস্ক্রিয়া করতে তাহলে সি-ই তোমার প্রথম প্রোগ্রামিং ভাষা। সি, এর মত এত পরিষ্কারভাবে আর কোনো ভাষাই কম্পিউটারকে আমাদের সামনে তুলে ধরতে দেখিনি। অ্যাসেম্ব্লি বা মেশিন ল্যাঙ্গুয়েজে হয়তো কম্পিউটারের নাড়ি নক্ষত্রের উপর আরো বেশি নিয়ন্ত্রণ পাওয়া যায়। কিন্তু ওর জন্য প্রয়োজনীয় সুদীর্ঘ্য ডিটেইল বেশিরভাগ সময়ই মূল চিত্রটা ঢেকে ফেলে। প্রথম শেখা কম্পিউটার ভাষাও অনেকটা মাতৃভাষার মত। পরবর্তী জীবনে অন্য অনেক ভাষা নিয়ে কাজ করলেও, মূল অ্যালগরিদমটা তুমি হয়তো সি-তেই ভাববে। সি, প্রতিটি ভেরিয়েবলকে কোনো রাখঢাক না করেই তুলে দেয় আমাদের হাতে। শিখিয়ে দেয়, এত শক্তিশালী কম্পিউটারের দুর্বলতার স্থান কোনগুলো। ফলে তুমি যখন কম্পিউটারের সাহায্যে তোমার হাতে বানানো কোনো যন্ত্রকে নিয়ন্ত্রণ করতে চাইবে, তখন সি এর জ্ঞান তোমাকে এগিয়ে নেবে অনেকখানি। সি জানলে, তুমি অন্যান্য হাই লেভেল ভাষাকে অ্যাপ্রিশিয়েট করতেও শিখবে। এবং তাদের শক্তি বা দুর্বলতাটাও বুঝতে পারবে।
২) আমি একবার একটা প্রোজেক্টের জন্য সি( / ম্যাটল্যাব/ আর/ ম্যাথমেটিকা/ জাভা) ব্যবহার করেছি। আমি কি এখন প্রোগ্রামিং শিখতে গিয়ে বাড়তি সুবিধা পাবো?
উত্তর:- এই তো কামটা সেরেছ। তোমার জন্য প্রোগ্রামিং শেখা একেবারে নতুন কারো চেয়ে অনেকগুণ কঠিন হয়ে গেছে।
কারণ:- কোনো একটা প্রোগ্রামিং ভাষা শেখা। আর কোনো একটা প্রোগ্রামিং ভাষা ব্যবহার করে কিছু-মিছু করে ফেলা এক কথা নয়। যেমন আমি হয়তো, ইন্টারনেট ঘেটে কিছু ফ্রেঞ্চ কথা শিখে প্যারিসের কোনো মুদি দোকান থেকে ঠিক ঠিক দুই কেজি আলু কিনে আনলাম। কিন্তু এর মানেই আমি ফ্রেঞ্চ শিখে ফেলেছি তা নয়। প্রোগ্রামিং ভাষার ক্ষেত্রে ব্যাপারটা আরো করুণ। কারণ প্রোগ্রামিং ভাষার শুরুতে, নানান টাইপের ভেরিয়েবল কোনটার কাজ কী, কিভাবে দুইটি সংখ্যা যোগ করা যায়। একটা স্ট্রিং-কে কিভাবে উলটো করে লেখা যায়। কত ভিন্ন ভিন্ন উপায়ে লুপ ঘোরাণো সম্ভব। একটা তালিকা থেকে নির্দিষ্ট কোনো উপাদান কিভাবে সব চেয়ে দ্রুত খুঁজে বের করা যায়। পয়েন্টার কিভাবে কাজ করে। নেগেটিভ সংখ্যার বাইনারি প্রকাশ কীভাবে করে। ফাংশন। রিকার্সন। এইসব খুটিনাটি খুব নিখুত ভাবে শিখতে হয়। এবং এগুলোতে পার্ফেকশন আনতে মাসের পর মাস সাধণা করতে হয়। ওদিকে, অতীতে হয়তো, এর ওর কোড থেকে কিছু অংশ নিয়ে, একটু এদিক ওদিক করে, তুমি বড় কোনো সিমুলেশন করে ফেলেছ। সেইসব বড় বড় কাজের স্মৃতি, তোমাকে এসব খুটিনাটি শেখার সময় অধৈর্য্য করে তুলবে। আমি আমার অনেক বন্ধুকেই, শুধুমাত্র এই কারণে সঠিকভাবে প্রোগ্রামিং শিখতে ব্যর্থ হতে দেখেছি। এই ফাঁদ কাটিয়ে ওঠার উপায় তোমাকে নিজের মত করে বের করতে হবে। তবে এ বিষয়ে আমার টিপ্স হলো, নিজের জন্য কিছু বেঞ্চমার্ক ঠিক করা। ধরো, নিজেকে প্রশ্ন করলে, যে ভাষাটি তুমি শিখছো, সেই ভাষায় কি তুমি একটা সিম্পল “নোট প্যাড” (টেক্স্ট এডিটর) প্রোগ্রাম বানাতে পারবে; যেটার সাহায্যে টেক্সট ফাইল খোলা যায়, এডিট করা যায়, কোনো শব্দ সার্চ করা যায়, রিপ্লেস করা যায়, নতুন কিছু টাইপ করা যায় এবং পরিবর্তিত লেখাটা সেইভও করা যায়? এটা যেদিন বানাতে পারবে, বা সত্য-সত্যই বানাতে পারার মত কনফিডেন্ট হতে পারবে। সেইদিন তুমি ঐ ভাষাটা মোটামুটি আয়ত্ব করে ফেলেছ।
৩) শুনেছি প্রোগ্রামার হতে হলে খুব ক্রিয়েটিভ হতে হয়। আমার তো অতো ক্রিয়েটিভিটি নেই, আমি কি পারবো?
উত্তর:- একদম বাজে কথা।
কারণ:- প্রোগ্রামিং শিখতে গেলে, যে দুইটা জিনিস লাগে তা হলো নিষ্ঠা, আর সততা। জিদ ধরে লেগে থাকতে হয়। বেশিরভাগ শিক্ষার্থী যাদের দেখে মনে হয়, অনেক চেষ্টা করেও প্রোগ্রামিং ঠিক মত আয়ত্ব করতে পারলো না, তারা স্রেফ নিজের কাছে অসৎ। তাই পারেনি। হয়তো কিছু একটা ধারণা পুরোপুরি পরিষ্কার হয়নি কিন্তু সে এগিয়ে গেল পরের টপিকে। এবং নিজেকে মিথ্যা প্রবোধ দিলো যে সে আগের জিনিসটা বুঝেছে। ফলে পরে উচ্চতর কোনো সমস্যা সমাধান করতে গিয়ে সে আটকে যাবে। হয়তো সে বুঝবেও না যে, অতীতে যে মামুলি জিনিসটা সে উপেক্ষা করেছিলো, সেটার কারণেই সে আজ আটকে আছে। সে ভাববে, সে হয়তো যথেষ্ট ক্রিয়েটিভ নয়। এ ছাড়া আমরা আরেকটা কথাও ভাবতে পারি। কেউ লিখতে পারলেই তো রবীন্দ্রনাথ ঠাকুর হয়ে ওঠে না। কিন্তু চেষ্টা সাধণা করলে, যে কোনো ভাষাতেই যে কেউ দক্ষতা অর্জন করতে পারে। কিন্তু মানুষের ভাষা নিয়ে আসলে খুব বেশি কিছু করার নেই। কবিতা লেখা, বা গান, বা গল্প, বা রচনা- প্রবন্ধ-ভাষণ দেওয়া, আড্ডাবাজি এসবের বাইরে তেমন কিছু না। কিন্তু কম্পিউটার ভাষায় দক্ষতা থাকলে এত হাজার কোটি ভিন্ন ভিন্ন জিনিস করা সম্ভব যে, তার কোনো না কোনোটা তোমার মন মত হবে। আর তখন নিজের সৃষ্টিশীলতা কোথা থেকে যে এসে হাজির হবে সেটা বুঝতেও পারবে না।
৪) প্রোগ্রামিং ভাষা শেখার সবচেয়ে উপযুক্ত বয়স কোনটা?
উত্তর:- যে বয়সে তোমার মনে হবে, “আরেহ! আমি তো এটা বুদ্ধিমান প্রাণী। বুদ্ধি খাটিয়ে অসাধারণ সব কাজকর্ম তো চাইলে আমি করতেই পারি!” সেই বয়সই প্রোগ্রামিং শেখার সব চেয়ে উপযুক্ত বয়স। কেউ হয়তো ক্লাস ফোর ফাইভেই নিজের বুদ্ধিমত্তা সম্পর্কে সচেতন হয়ে উঠবে আবার কেউ হয়তো বুড়ো হয়ে মরে যাবে কিন্তু খেয়াল করবে না যে সে একটা বুদ্ধিমান প্রাণী ছিলো।
কারণ:- গণিত, কম্পিউটার প্রোগ্রামিং, মিউজিক, জিমন্যাস্টিক্স এসব জিনিস যতো আগে থেকে শিখতে শুরু করা যায় ততোই ভালো। আন্তর্জাতিক প্রোগ্রামিং প্রতিযোগীতা, গণিত অলিম্পিয়াড বা অলিম্পিক এসবে যারা সেরাদের সেরা হয় তাদের বেশিরভাগই একেবারে ছোট থেকেই ওসব শিখতে শুরু করেছে। তবে প্রতিযোগীতামূলক ভাবে কিছু করা আর সৃষ্টিশীল কিছু করা এক কথা নয়। তাই অনেক পরে যারা শেখে, তারাও অভাবনীয় সব সৃষ্টিশীল কাজ করতে পারে এবং অহরহ করছে তাদের প্রোগ্রামিং স্কিল এর সাহায্যে। এমনকি ষাটোর্ধ বা পঞ্চাশোর্ধ কেউও চাইলে প্রোগ্রামিং শিখতে পারে। এ ধরনের কার্যক্রম তাদের ব্রেইনকে আরো অনেকদিন সক্রিয় রাখবে। এবং একটা কিশোর কম্পিউটার প্রোগ্রামিং শিখে যে আনন্দ পায়, সেই আনন্দটা সেও পেতে পারবে ঐ বয়সেও।
৫) আমি ভাষাতত্ত/বায়োলজি/মেডিক্যাল/অর্থনীতি/ সিভিল ইঞ্জিনিয়ারিং /চারুকলা/ সামাজিক বিজ্ঞান/বিবিএ… ইত্যাদিতে পড়েছি। কম্পিউটার প্রোগ্রামিং শিখে আমার কী লাভ?
উত্তর:- ওরে কে কোথায় আছিস ওকে দুটো টাকা দে, কারণ ও সব কিছুতে সবার আগে লাভ খোঁজে।
কারণ:- তুমি কি নোয়াম চমস্কির নাম শুনেছ? সে একজন ভাষাতাত্তিক ও দার্শনিক। কম্পিউটার বিজ্ঞানেও তার মৌলিক অবদান আছে। আজকাল ভাষাত্ত্ব সামাজিক বিজ্ঞান, এসবের অত্যাধুনিক গবেষণা হচ্ছে লক্ষ লক্ষ মানুষের তথ্য উপাত্ত বিশ্লেষণ করে। যা কম্পিউটার ছাড়া সম্ভব নয়। জেনেটিক্স, অনুজীব বিজ্ঞান, ফার্মাসিউটিক্যাল্স, অত্যাধুনিক অস্ত্রপচার পদ্ধতি, কৃষি, ইত্যাদি সকল জীব বিজ্ঞান সংশ্লিষ্ঠ বিষয়ের গবেষণা এখন কম্পিউটার ছাড়া কল্পনাও করা সম্ভব নয়। নগর পরিকল্পনাবিদ, ভূতাত্বিক, খনি অনুসন্ধান কারী, নতুন ধরনের সেতূ নির্মান কারী, গ্লোবাল ওয়ার্মিং এর কারণে সমুদ্রের উচ্চতা বেড়ে গেলে কিভাবে সেটা সামলাবো সেসব নিয়ে গবেষণাকারী কম্পিউটার ছাড়া একটুও এগোতে পারবে না। লিওনার্দো দ্য ভিঞ্চি যে সময়ে জন্মেছিলো, সেই সময়ে ছবি আঁকার সবচেয়ে সেরা/লেইটেস্ট পদ্ধতি ছিলো তেল রঙ এ আঁকা। তিনি সেটাই ব্যবহার করেছেন। এমনকি সেই রঙএর উন্নয়ন কিভাবে করা যায় সেটা নিয়েও গবেষণা করেছেন। এ যুগের লিওনার্দ দ্য ভিঞ্চিরা কাজ করবে কম্পিউটার গ্রাফিক্সে। এবং এ ক্ষেত্রে কম্পিউটার প্রোগ্রামিং জানলে কতটা বাড়তি সুবিধা পাওয়া সম্ভব সেটা বাইরে থেকে বোঝা সম্ভব নয়। সাম্প্রতিক অর্থনৈতিক মান্দার পরে, বড় বড় কোম্পানিগুলো বুঝে গেছে, কোট টাই পরে সুন্দর সুন্দর প্রেজেন্টেশন দেওয়ার চেয়েও গুরুত্বপূর্ণ স্কিল হলো মার্কেট প্রেডিকশন করতে পারা। এখন মার্কেট এত হাজারটা জিনিশের সাথে এমন ভাবে জড়িত, যে কম্পিউটারের সাহায্য ছাড়া সেগুলোর উপর কোনো রকম নিয়ন্ত্রণই সম্ভব নয়। আমরা বাংলাদেশে থেকে এসব হয়তো উপলব্ধি করি না। যেদিন উপলব্ধি করবো, সেইদিন আমাদের দেশটা আর এমন থাকবে না।
৬) আমি ফিজিক্স/ কেমিস্ট্রি/ ম্যাথ/ বায়োলজি পড়ছি কম্পিউটার প্রোগ্রামিং শিখে আমার কী হবে?
উত্তর:- তুমি হয়তো এসব বিষয়ে পড়েছ কিন্তু গবেষণা করছো না, বা এসব বিষয়ের সাম্প্রতিক গবেষণা নিয়ে খোঁজ খবর রাখো না। তাই এই প্রশ্ন করলে।
কারণ:- তুমি ফিজিক্স বা কেমিস্ট্রিতে পাশ করে ফেলেছ কিন্তু কম্পিউটার প্রোগ্রামিং জানো না। এর মানে হলো বিজ্ঞানী হিসাবে তুমি নিশ্চিত ভাবেই প্রথম শ্রেণীর কিছু হতে পারবে না। লার্জ হ্যাড্রন কলাইডার, গ্রাফেন, কোয়ান্টাম অপটিক্স, কোল্ড অ্যাটম, যে কোনো বিষয়ে গুগল করলেই দেখবে, কম্পিউটার ছাড়া ওসব গবেষণা স্রেফ অচিন্তনীয়। কেমিস্ট্রির ক্ষেত্রেও তাই। ইন ফ্যাক্ট এ যুগে কেমিস্ট্রি গবেষণা টেস্ট টিউবের চেয়ে বেশি হয় কম্পিউটারে। যেখানে নানান রকম নিউমেরিক্যাল মেথডের জয়-জয়কার। আর গণিতের ক্ষেত্রেও কাটিং এজ রিসার্চ করতে প্রোগ্রামিং না জানার বিকল্প নেই। কেন বা কীভাবে সেটা লিখবো অন্য কোনো সময়। বায়োলজি প্রসঙ্গটা এসেছে আগের প্রশ্নে, এর কারণ সাধারণভাবে দেখলে বায়োলজিকে গণিত, কম্পিউটার এসবের থেকে অনেক দূরের বিষয় মনে হয়। কিন্তু এই ধারণা যে কত বড় ভুল!
৭) প্রোগ্রামিং শিখে চাকরী পাবো কোথায়?
উত্তর:- যে প্রোগ্রামিং জানে, সে চাকরী খোঁজে না। চাকরীই তাকে খোঁজে।
কারণ:- তুমি যে একাডেমিক ব্যাকগ্রাউন্ডেরই হও না কেন সৎ ভাবে চেষ্টা করলে প্রোগ্রামিং শিখতে ফেলতে পারবেই। এবং আজকাল, নিজেকে একজন সুযোগ্য প্রোগ্রামার প্রমাণ করার জন্য বড় কোনো বিশ্ববিদ্যালয়ের ডিগ্রি থাকার দরকার নেই। অনলাইনেই সেটা প্রমাণ করার হাজারটা উপায় আছে। এত এত বিশ্ববিদ্যালয় থেকে হাজার হাজার কম্পিউটার বিজ্ঞানে পাশ করা ছেলেমেয়েকে হয়তো বের হতে দেখ। তাদের অনেকের মধ্যে চাকরী নিয়ে হতাশাও দেখা যায় প্রায়ই। তারাও যদি ঠিক ভাবে প্রোগ্রামিং শিখতো তাহলে এমন হতো না। কম্পিউটার বিজ্ঞান, কম্পিউটার ইঞ্জিনিয়ারিং এসব যারা পড়ে, তারা নানান রকম বিষয়ে ভালো গ্রেড পাওয়ার চাপে, প্রোগ্রামিং ঠিক মত শেখে না। প্রোগ্রামিংকেও অন্য আর দশটা বিষয়ের মত মনে করে। স্রেফ এই ভুলটা কাটিয়ে উঠতে পারলেই আমাদের দেশের আইটি ইন্ডাস্ট্রি অন্য যে কোনো দেশের সাথে পাল্লা দিতে পারতো।
৮) টিচ ইউওরসেল্ফ সি ইন ২১ ডেইজ নামক একটা বই কিনেছি। এটা পড়ে কি প্রোগ্রামিং শিখতে পারবো?
উত্তর:- না, পারবে না। ঠিক যেমন টিচ ইউরসেল্ফ ফ্রেঞ্চ ইন ২১ ডেইজ পড়ে একুশ দিনে ফরাসি ভাষা শিখতে পারবে না তেমন।
কারণ:- মাস ছয়েক নিয়মিত খাটাখাটনি না করে প্রোগ্রামিং শিখতে চাওয়াটা স্রেফ হঠকারিতা। আর ছয় মাস, অনেক সময় হলেও খুব বেশি সময় নয়। ছয়মাস আগের নিজেকে কল্পনা করো। তখন প্রোগ্রামিং শিখতে শুরু করলে এখন তুমি সেটা শিখে ফেলতে। অবশ্য নানাবিধ অ্যালগরিদম, ডাটা স্ট্রাকচার এসবে পারংগমতা আসতে সময় লাগতো আরো বেশি। তবে এই জার্নি কষ্টকর হলেও, পুরো সময়টা এত বেশি আনন্দময় হবে, যার সাথে খুব অল্প কিছুরই তুলনা চলে। প্রোগ্রামিং শেখার পিছনে সময় ব্যয় করে কেউ কখনো আফসোস করেনি।
৯) সি শেখার জন্য কোন বই পড়বো?
উত্তর:- ইংরেজীতে হার্বার্ট শিল্ডের টিচ ইয়োরসেল্ফ সি [১০] বইটা দিয়ে শুরু করা যেতে পারো। এ ছাড়া বাংলায় সুবিন ভাই এর বই[৮] , এবং অন্যা আরো কিছু বই আছে। কয়েকটা ঘাটাঘাটি করে দেখতে হবে কোনটা ভালো লাগে।
কারণ:- একেক বই একেক জনের কাছে আবেদন সৃষ্টি করে। কোনো বিষয়ে পড়ে তেমন ভালো না লাগলে, শুরুতেই ভাবা ঠিক না যে বিষয়টা বোরিং। বরং খুব সম্ভবত তুমি যে বইটা পড়ছো, সেটা তোমার মন মত লেখা হয়নি। হাল না ছেড়ে একই বিষয়ে অন্য কোনো লেখকের অন্য কোনো বই চেষ্টা করে দেখ। এ ছাড়া ইন্টারনেটে অনেক রিসোর্স পাবে [৯]।
১০) প্রোগ্রামিং বই কীভাবে পড়ে?
উত্তর:- আগাপাশতলা।
কারণ:- বেশির ভাগ বইয়ের ভুমিকায়, বা প্রিফেইসে, বইটি কীভাবে পড়বে তা বলা থাকবে। তবে নিজের প্রথম প্রোগ্রামিং ভাষা পুরোপুরি শেখার ক্ষেত্রে যেটা সব সময় সত্যি, সেটা হলো কোনো পাতা না পড়ে পরের পাতায় যাওয়া যাবে না। প্রতিটি অধ্যায়ের সবগুলো এক্সারসাইজ নিজে করতে হবে। কোনো পাতায় কোড দেওয়া থাকলে সেটা নিজ হাতে টাইপ করে চালিয়ে দেখতে হবে। (কোনো অবস্থাতেই কপি পেস্ট করা যাবে না)। একবার উদাহরণের কোড রান হয়ে যাবার পরে তার নানান অংশ নিজের ইচ্ছে মত বদলে বদলে এক্সপেরিমেন্ট করতে হবে। প্রতিটি পরিবর্তনের ফলে আউটপুটে কী বদল হচ্ছে, সেটা থেকে বুঝতে হবে কোডের কোন অংশের কাজ কী। অনেক সময় কোনো অধ্যায় পড়ে মনে হতে পারে সব বুঝে গেছি। কিন্তু সাঁতারের নিয়ম বুঝে ফেলা আর সাঁতার কাটতে পারা যেমন এক কথা নয়, প্রোগ্রামিংও তেমন।
১১) আমি আউটসোর্সিং করতে চাই। কিন্তু আপনি শুরুতে যেভাবে বললেন মনে হলো আউটসোর্সিং কে বাতিল করে দিলেন।
উত্তর:- আমি মোটেই তা বলিনি। আউট সোর্সিং করা খুবই ভালো। কিন্তু “ঘরে বসে আউট সোর্সিং করে বড় লোক হবো”, শুধু এরকম চিন্তা করে প্রোগ্রামিং শিখতে আসলে তুমি প্রোগ্রামিং এর অনেক মজা মিস করবে। এবং সম্ভবত ভালো প্রোগ্রামার হয়ে উঠতে পারবে না।
কারণ:- আমাদের দেশটা উন্নত বিশ্বের মত হয়ে যাবার আগ পর্যন্ত দেশে বসে প্রোগ্রামিং করে কর্মসংস্থানের জন্য বেশির ভাগ প্রোগ্রামারকেই আউটসোর্সিং করতে বা আউটসোর্সিংকারী প্রতিষ্ঠানে চাকরী করতে হবে। এবং ঠিক কী ধরনের কাজ তুমি পাচ্ছ তার উপর নির্ভর করে তোমাকে ব্যবহার করতে হবে নানান রকম প্রোগ্রামিং ভাষা। কিন্তু কম্পিউটারের প্রকৃত শক্তি সম্পর্কে জানতে। সেই শক্তি নিজের ইচ্ছেমাফিক ব্যবহার করতে সি জানার বিকল্প নেই।
১২) এইসব ল্যাপটপ ডেস্কটপ কম্পিউটার আমার ভালো লাগে না। আমার লাগবে সুপার কম্পিউটার। কিন্তু সেটা আমি কোথায় পাবো?
উত্তর:- একেবারে শুরুতেই সুপার কম্পিউটারের অ্যাক্সেস তুমি পাবে না। কিন্তু সুপারকম্পিউটারের মত কম্পিউটার আসলে তোমার হাতের নাগালেই আছে।
কারণ:- সুপার কম্পিউটারে লক্ষ লক্ষ প্রসেসর থাকে, যারা একই সঙ্গে কাজ করে। ফলে এক ক্লক সাইকেলেই লাখ খানেক কাজ হয়ে যায়। নরমাল কম্পিউটারের প্রোগ্রামিং আর সুপার কম্পিউটারের প্রোগ্রামিং একটু আলাদা হয়। কিন্তু জেনে অবাক হবে, গেইম খেলার জন্য উচ্চক্ষমতার যে গ্রাফিক্স কার্ডগুলো তুমি ব্যবহার করো সেগুলো ব্যবহার করে তুমি প্যারালাল প্রোগ্রামিং করতে পারো। সি বা সিপ্লাসপ্লাসেই! [৬] যেটা তোমাকে প্রস্তুত করতে পারে, সত্যিকারের সুপার কম্পিউটার ব্যবহার করে বড় কোনো সমস্যা সমাধানের জন্য!
এখনকার মত এখানেই থামি। সবার প্রোগ্রামিং আনন্দময় হোক…
সূত্রাবলী-
[১] 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://en.wikipedia.org/wiki/CUDA
[৭] http://www.sachalayatan.com/sporsho/43507
[৮] http://cpbook.subeen.com/
[৯] http://www.shikkhok.com/কোর্স-তালিকা/সি-প্রোগ্রামিং/
[১০] http://www.amazon.com/Teach-Yourself-C-Herbert-Schildt/dp/0078823110
প্রোগ্রামিং এর বিষয়ে এত জোরালো লেখাগুলো পড়ে লেখকের চিন্তাভাবনাকে ধন্যবাদ জানাই। প্রোগ্রামিংকে অনেকেই পেশা হিসেবে নিচ্ছে আবার কেউ শখ করে যাচ্ছে পড়ে যখন নিজের সাথে খাপ খাওয়াতে পারছেনা তখন ফিরে আসতে চাইছে। প্রোগ্রামিং এর ব্যাপারটা অনেক মজাদার যদি পরিশ্রম আর মেধাকে কাজে লাগানো যায়
প্রোগ্রামিং নিয়ে লেখাটার জন্যে অপনাকে অনেক ধন্যবাদ।
ছোট থেকেই ইচ্ছা ছিল প্রোগ্রমিং শেখার যদিও সুযোগের অভাবে সেটা আর করা হয়নি। তথাপি কিছুকাল পূর্বে আমি একটা ডেস্কটপ নিয়েছি। সেই সুবাদে আবার পুরাতন শখটা মাথাচারা দিয়ে উঠেছে। লেখকের কাছে জানতে চাইব ভালো প্রোগ্রামিং শেখার জন্য বই পড়াই কি যথেষ্ঠ? নাকি কোন প্রতিষ্ঠান থেকে কোর্স করা যেতে পারে? অার অনেকেই বলে থাকেন বাংলা বই পড়ে অথবা শুধু বই পড়ে নাকি ভালো প্রোগ্রামিং শেখা যায়না। এর যৌক্তিকতা কতটুকু?
ভাইয়া সুন্দর একটি লেখা উপহার দেয়ার জন্য আপনাকে অসংখ্য ধন্যবাদ। কিন্তু আমার একটা প্রব্লেম হল কি, আমি ইংরেজিতে খুবই দূর্বল। আমি কি পারব প্রোগ্রামিং শিখতে। যেহেতু প্রোগ্রামিংয়ের উপর বাংলা বই খুব বেশী নেই। ধরতে গেলে আমি ইংরেজি বুঝিই না। আর এই জিনিসটা আমার মাথায় ঢোকে না। তাছাড়া প্রোগ্রামিংয়ে আমার আগ্রহ আছে এবং চেষ্টা করে যাচ্ছি।
বিজ্ঞানের ছাত্র নয় এমন কেউ প্রোগ্রামিং শিখতে পারবে?
;-( আমার কিছু হেল্প লাগবে। তাই programming পারেন এমন কেঊ please please আমার এই account এ এক টু যোগাযোগ করুন। please …
http://m.facebook.com/shamsabir420
ভাইয়া আমি জাভা নিয়ে পড়াশুনা করছি। এবং আমি যতটুকু জেনেছি এবং নিজের চোখে দেখেছি তাতে সব ল্যাংগুয়েজের মধ্যে তেমন কোন পার্থক্য নেই । তাহলে সি এর আসল সুবিধাটুকু কোথায় ? আর সব কিছু বিবেচনা করলে পাইথনকি ভাল নয় ? তবে হ্যা সি তে কাজ করে মজা অনেক এটা সত্যি কথা 🙂
@তরুন প্রজন্ম,
প্রশ্নটা লেখককে করেছেন তবে আমি কিছুটা বলার চেষ্টা করি। ল্যাংগুয়েজের মধ্যে তেমন পার্থক্য নেই এটা মনে হয় ঠিকনা, যেমন ধরেন জাভা দিয়ে বড় বড় অ্যাপ্লিকেশন বানালেও সেটা দিয়ে অপারেটিং সিস্টেম বানানোর কথা চিন্তা করার মতো লোক তেমন পাওয়া যাবেনা। পাইথন খুবই দারুণ একটা ল্যাংগুয়েজ কোনো সন্দেহ নাই কিন্তু যেখানে রানটাইমটা খুব ক্রিটিকাল(যেমন এমবেডেড সিস্টেম এর কোড বা অপারেটিং সিস্টেমের টাস্ক শিডিউলার) সেখানে পাইথনের থেকে অনেক ভালো পারফরম্যান্স পাওয়া সম্ভব সি দিয়ে। একটা ল্যাংগুয়েজ কতটা ভালো সেটা আসলে নির্ভর করে আপনি সেটা দিয়ে কি কাজ করতে চান এবং কোন কোন প্যারামিটারকে (রানটাইম পারফরমেন্স, ডিবাগিং এর সুবিধা, কোড কতটা সহজে করা যাচ্ছে, রিইউজেবিলিটি ইত্যাদি ইত্যাদি) গুরুত্ব দিচ্ছেন তার উপর। প্রোগ্রামিং ল্যাংগুয়েজ আরো ধরণের আছে, যেমন লজিক প্রোগ্রামিং এর জন্য বিশেষ একটা ল্যাংগুয়েজ আছে “প্রলোগ” যার সিনট্যাক্স সি, পাইথন ইত্যাদির ধারে কাছেও না।
@রামগড়ুড়ের ছানা, প্রথমে ভাইয়া আপনাকে ধন্যবাদ জানাই।সি এস ই তে আমি নব্য। তাই আইডিয়া খুব বেশি ভাল না। তবে জাভা দিয়ে যে বললেন অপারেটিং সিস্টেম বানানো যাই না সেটা মনে হয় ভুল ধারণা । কারণ জাভাও এস জাভা দিয়ে লেখা ।তবে এখনো জাভা নিয়ে বানানোর অপারেটিং সিস্টেমের মান ভাল হয় না । চেষ্টা চলছে।আর প্রলোগ সম্পর্কে কি একটু বিস্তারিত জানাবেন ?
@তরুন প্রজন্ম,
বানানো যায়না সেটা আমি বলিনি, বলেছি এটার জন্য সি অনেক বেশি উপযুক্ত। আর জাভাওস এ যে জাভা ভার্চুয়াল মেশিন ব্যবহার করা হয় সেটা কিন্তু আবার অন্য ল্যাংগুয়েজে লেখা (খুব সম্ভবত সি তে)। সিস্টেম প্রোগ্রামিং এর রাজত্ব এখনও সি এর হাতেই আছে।
আর্টিফিসিয়াল ইন্টেলিজেন্স এর কোর্স কখনো করলে প্রোলগ নিয়ে কাজ করবেন। মূলত logic programming এর জন্য এটা ব্যবহার করা হয়। সি-জাভা যেমন প্রসিডিউরাল ল্যাংগুয়েজ, প্রলোগ,SQL ইত্যাদি হলো ডিক্লেরেটিভ ল্যাংগুয়েজ। প্রলোগের সাহায্যে লজিক বর্ণনা করা হয়। যেমন ধরেন আপনি কম্পিউটারকে বুঝিয়ে দিলেন যে “পুরুষ প্যারেন্টকে বাবা বলা হয় এবং বাবার বাবাকে দাদা বলা হয়”, এরপর আপনি আপনার ১৪ জেনারেশনের সবার নাম এবং কে কার ছেলে বলে দিলেন। এবার আপনি ফ্যামিলির দুইজনের নাম বলে দিলে সে লজিক খাটিয়ে বলে দিবে তাদের মধ্যে সম্পর্ক কি (যেমন ক হলো খ এর দাদার দাদা)। এই ল্যাংগুয়েজে loop-if-else এর ব্যাপারস্যাপার নাই, খালি কার সাথে কার রিলেশন কি এগুলো ডিফাইন করে দিতে হয়। ব্যাপারটা হলো আপনার প্রোগ্রামে থাকবে কিছু লজিক, লজিক খাটিয়ে কি করতে হবে সেটা না, সেটা আপনি কুয়েরি চালিয়ে বের করবেনা।
@রামগড়ুড়ের ছানা, কিছুটা বুঝলাম । তারমানে এপ্লিকেশনের জন্য জাভা ভাল আর সিস্টেম প্রোগ্রামিং এ গেলে সি ?
অসাধারন লেখা… (Y)
খুবই সুন্দর, এঙ্গেইজিং এবং অনুপ্রেরণাদায়ী একটি লিখা। আগেই ছিলেন, তথাপিও সাম্প্রতীককালে আরেকটু বেশী হয়ে উঠেছেন, আপনি আমার দৃষ্টিতে এমন একজন লেখক যার লেখা দেখলেই কিনা আমি ক্লিক করে খুলে পড়ি। চমতকার!!
test 03
আমাদের ভার্সিটিতে জাভা দিয়ে শুরু করে। শুরু হিসেবে জাভাও খারাপ না 🙂
@শর্মী আমীনঃ)কিন্তু সি এর মজাই আলাদা আপু :p আর আমাদের ভার্সিটিতে যতই বলুক না কেন পৃথিবীতে জাভা এগিয়ে যাচ্ছে আমি দেখেছি বেশিরভাগ ল্যাংগুয়েজ কিন্তু সি তেই লেখা 🙂
চমৎকার লেখা। তবে আমি এটুকু যোগ করতে চাই, প্রোগ্রামিং এ দক্ষ হতে গেলে কিছুটা প্রাসংগিক গণিতও শিখে নেয়া চাই। যেমন- নুথের কনক্রিট ম্যাথমেটিকস বইটির কথা বিশেষভাবে বলব।
সত্যিই অসাধারণ একটা লেখা এই টা , আমি সি এস ই এর তৃতীয় বর্ষের ছাত্র ।
” শুনেছি প্রোগ্রামার হতে হলে খুব ক্রিয়েটিভ হতে হয়। আমার তো অতো ক্রিয়েটিভিটি নেই, আমি কি পারবো? ”
এর উত্তরের প্যারা টা খুব বেশি ভাল লেগেছে , আসলে আমাদের ইউনিভার্সিটিতেই মাঝে মাঝে দেখা যায় সিলেবাস অসম্পূর্ণ , অনেক কিছু স্কিপ করে করে পড়ান হয় । আর এ সি এম করার কথা দুই একজন স্যার বললেও , বেশিরভাগ স্যারেরা বলে , সি জি পি এ ভাল করে যত তাড়াতাড়ি বের হতে পারবা ততই তোমাদের জন্য মঙ্গল ।
লেখাটা খুব বেশি ভাল লেগেছে , এত গুল বাস্তব প্রশ্নের উত্তর একবারে পাওয়া গেল ।
Very good and interesting writing :-s . I think your writing is not just for youngsters but for elders and grownups too. And age is not a factor but seeking knowledge is the main thing. I hope to get more update from you in the long run regarding this. Well done (Y)
পবর্তীতে ইংরেজি মন্তব্য বাঙলা ব্লগে প্রকাশ করা হবে না।
-মুক্তমনা মডারেটর
দারুনভাবে গুছিয়ে লিখছেন, আরও আগে লেখা উচিত ছিল , তা হইলে এতদিনে ভালো প্রোগ্রামার হইয়া যাইতাম।
টিউনটা পড়ে অনেক ভাল লাগল।
চমৎকার! (Y)
খুবই শুন্দর লিখেছেন।আমি কয়েক দিন হল প্রোগ্রামিং শেখা শুরু করেছি।
আমার প্রশ্ন হল সি++ এর জন্য কোন কম্পাইলার ভাল হবে?
ভিজুয়াল স্টুডিও কেমন?
আর শেখার জন্য বই ভাল নাকি ইন্টারনেট ?
@নাফিস সাজিদ,
হ্যাঁ, শুরুতে ভিজুয়াল স্টুডিও ভালো একটা আইডিই (IDE)। তবে এটা অনেক বড় বড় প্রোজেক্ট বানানোর উদ্দেশ্যে তৈরি। তাই ইন্টারফেস দেখে কনফিউজ্ড হয়ে যাবার সম্ভাবনা থাকে। কোডব্লক্স ব্যবহার করতে পারেন আর সিপ্লাস প্লাসের জন্য বিশ্বের সেরা কম্পাইলার হলো GNU এর g++ কিন্তু প্রাথমিক পর্যায়ে এসব নিয়ে মাথা না ঘামালেও চলবে।
আর প্রথম প্রোগ্রামিং শেখার জন্য বই এর বিকল্প নেই। ইন্টারনেটে কোনো ভিডিওটিউটোরিয়াল ফলো করলেও সঙ্গে কোনো বই পড়া উচিত। একবার একটা প্রোগ্রামিং ল্যাংগুয়েজে এক্সপার্ট হয়ে যাবার পরে নতুন কোনো ল্যাংগুয়েজ ইন্টারনেট থেকেই শিখে ফেলা সম্ভব।
@তানভীরুল ইসলাম,
ধন্যবাদ।তবে কোন কম্পাইলার যদি নির্দিষ্ট করে দিতেন তাহলে ভাল হয়।
আপনার উপদেশগুলোর জন্য আবারো ধন্যবাদ।
@নাফিস সাজিদ,
নতুন অনেকে ide আর কম্পাইলার এ দুটো জিনিস গুলিয়ে ফেলে। ভিজুয়াল স্টুডিও হলো ide যেটা visual c compiler ব্যবহার করে। কোডব্লকসে আপনি gcc,visual সব কম্পাইলারই ব্যবহার করতে পারবেন। gcc হলো gnu c compiler, লিনাক্সসহ সব unix-like অপারেটিং সিস্টেমে এটাকে standard হিসাবে ব্যবহার করা হয়। যাইহোক তানভীর ভাই যেটা বলেছেন, এটা নিয়ে মাথা ঘামানোর কিছু নাই এখন।
আপনি herverdt schildt বা deitel এর বই পড়তে পারেন, খুবই ভালো মানের বই এই দুইটা, “৩০ ঘন্টায় সি শিখুন” টাইপের বই থেকে দূরে থাকবেন। বই আমার সাইট থেকে ডাউনলোড করতে পারেন।
@রামগড়ুড়ের ছানা, ভাল লিঙ্ক দিয়েছেন রামগড়ুড়ের ছানা।বইগুলি ডাউনলোড করে নেব সব।যদিও জানিনা মাথায় ঢুকবে কিনা। প্রোগ্রামিং শেখার আমার খুবই শখ।ধন্যবাদ 🙂 ।
@রামগড়ুড়ের ছানা,
ধন্যবাদ বিষয়টি বুঝিয়ে দেয়ার জন্য।আপনার সাইট থেকে herbert shildt এর বইটি ডাউনলোড করলাম।
প্রোগ্রামিং শেখার পিছনে উপযুক্ত যুক্তি দেখানোর জন্য অনেক অনেক ধন্যবাদ। (Y)
কিছু ছাত্র চাইলে এই বুঝগুলোর পাশ থেকে চলে আসে কারণ, তার মাথার মধ্যে ডিগ্রী, সিলেবাস আর মার্কস এর এলগরিদম করা হয়। সঠিক সোর্স ও সঠিক দিকনির্দেশনার কারণের যাদের মনোবল ভেঙে যাচ্ছিল তাদের জন্য একটি বাইবেল বলতে পারি নিঃসন্দেহে। আর এই বুঝগুলো কবে যে আমাদের শিক্ষাক্ষেত্রে নীতিনির্ধারকদের মধ্যে দেখা যাবে, সেদিনই মনে হয় আমরা কিছু করতে পারবো। আমাদের থেকে কাঙ্খিত আউটপুট আসবে।
@বিশ্বজিত,
পড়ার জন্য ধন্যবাদ। আমাদের দেশের বেশিরভাগ মানুষেরই চাইলেও আত্মউন্নয়নের সুযোগ নেই। যাদের সেই সুযোগটা আছে, তারা যদি তা ব্যবহার করতো তাহলে এক সময় নিশ্চিত ভাবেই অন্যদের জন্যও কর্ম সংস্থান হয়ে যেত। আশাকরি অনেকেই প্রোগ্রামিং শিখতে সচেষ্ট হবে।
(Y)
কী দুর্দান্ত লেখা ভীরু!
লেখার ভাষা, স্টাইল আসলে এমনই হওয়া উচিৎ।
আমি জাভায় প্রোগ্রাম করি কাজের সূত্রে। আমার প্রথম প্রোগ্রামিং ল্যাঙ্গুয়েজ ছিল জিডাব্লিউ বেসিক। পরে অবশ্য সি, সি++, ভিজুয়াল বেসিক শিখেছিলাম। বুয়েটে মেকা ডিপার্টমেন্টে ফরট্রান পরানো হত। ফরট্রান ৭৭, তারপর ফরট্রান ৯০…। ভাল প্রোগ্রামিং জানলে পোলাপাইনের কাছে বহুত দাম! 🙂
তারপর তো প্রোগ্রামিং টোগ্রামিং চুলায় তুলে রেখে বিজ্ঞান নিয়ে হাবিজাবি লিখি। এক সময় রামগড়ুড়ের ছানাের লেখা দেখে অনুপ্রাণিত হয়ে ভাবছিলাম আমিও প্রোগ্রামিং এর উপর কিছু পোস্ট দেই। কিন্তু বুঝলাম আমারে দিয়ে আসলে হবে না। আপনার আর শাফুর মত আমি লিখতে পারব না নিঃসন্দেহে।
এই লেখাটা যে ছোটদের – যাদের কথা মাথায় রেখে লিখেছেন, তাদের কত কাজে আসবে… আপনি নিজেও হয়তো জানেন না।
@অভিজিৎ,
আমার প্রথম প্রোগ্রামিং ল্যাঙ্গুয়েজ ছিলো কিউ বেসিক। কম্পিউটার কেনার সময় হাজার হাজার জিনিশ কপি করে দিতো ওরা তখন। তার মধ্যে কিউ বেসিকের একটা কম্পাইলারও ছিলো। কিভাবে, কিভাবে সেটা গুতিয়ে খানিকটা শিখেছিলাম। এর পরে কম্পিউটার টুমরোর একটা সিডির মধ্যে জাভার জেডিকে, আর একটা ফ্রী ইবুক ছিলো “থিঙ্কিং ইন জাভা” ওটা দেখে কিছু জাভা শিখি। তবে অবজেক্ট ওরিয়েন্টএড ল্যাঙ্গুয়েজের অ্যাডভান্স্ড কিছুই বুঝতে পারতাম না। পরে সত্যিকারে ভালোমত প্রোগ্রামিং শিখেছি সি দিয়ে। আর তারপর এই জীবনে, কত ভাষায় যে কত কোড লিখলাম….
মন ছুয়ে গেল লেখাটা।
সবচেয়ে ভাল লেগেছে “প্রোগ্রামিং শিখতে গেলে, যে দুইটা জিনিস লাগে তা হলো নিষ্ঠা, আর সততা। জিদ ধরে লেগে থাকতে হয়। বেশিরভাগ শিক্ষার্থী যাদের দেখে মনে হয়, অনেক চেষ্টা করেও প্রোগ্রামিং ঠিক মত আয়ত্ব করতে পারলো না, তারা স্রেফ নিজের কাছে অসৎ।”
আমি আমার বাকি জীবন প্রোগ্রামিং নিয়ে থাকতে চাই।
আমি যদি বাংলদেশের শিক্ষা মন্ত্রি হতাম আপানার এই লেখাটা প্রতিটা স্কুলের নোটিশ বোর্ডে দিয়ে দেয়ার ব্যাবস্থা করতাম।
মাহমুদ
@মাহমুদ,
লেখাটা ভালো লেগেছে জেনে ভালো লাগলো খুব। পরিচিতদের মধ্যে যারা আগ্রহী হতে পারে মনে করেন, তাদের সাথে শেয়ার করবেন। 🙂
বাই দ্য ওয়ে, স্কুলের ছেলেমেয়েরা কি নোটিশ বোর্ডে কী লেখা থাকে সেসব মন দিয়ে পড়ে? আমি তো জীবনেও নোটিশবোর্ডের আশেপাশে হাটাচলা করেছি বলে মনে পড়ে না 😛
চমৎকার লিখেছেন । ফ্রেশারদের খুব কাজে দেবে ।
@মিশু,
ধন্যবাদ 🙂
@তানভীরুল ইসলাম,
খুব ভাল লেগেছে আপনার উপস্থাপনা ও বলার ভঙ্গীটা। কমপিউটার প্রোগ্রামিং নাম শুনলেই ডর করে তাই মুখ ফিরিয়ে নিয়েছিলাম কিছুই বুঝবোনা বলে। কিন্তু আপনার আকর্ষণীয় বলার ভঙ্গী দেখে আটকা পড়ে গেলাম আর শেষ পর্যন্ত পড়েই ফেললাম। এ যেন ইনজেকশনে ভীত রোগাক্রান্ত শিশুকে সুইটের ভেতরে ইনজেকশন ঢুকায়ে খাওয়ানো। এই গুণ সকলের থাকেনা, কিছু শিক্ষকদের সাথে কাজ করার সুবাদে তা টের পেয়েছি। ব্লগে যে কয়জন এই গুণে গুণান্বিত লেখক দেখেছি তম্মন্ধে আপনি, অভিজিৎ, মইনুল রাজু ও বন্যা অন্যতম।
ইচ্ছে, ধর্য্য আর সাধনা এই তিনটি গুণ আমি মনে করি কিছু শেখার মূল চাবিকাটি। লেখা চলুক, মাগনা যখন পাইছি দেখি কিছু শিখতে পারি কিনা। আর লেখার জন্যে- (Y) (F)
@আকাশ মালিক,
ধন্যবাদ আপনাকে 🙂
পোস্টার বানায়া ভার্সিটিগুলার সিএসই ডিপার্টমেন্টের ঢোকার রাস্তায় ঝুলায়া রাখনের কাম 8)
@রাতুল মিনহাজ,
ধন্যবাদ। পোস্টার বানানোর কিছু নেই। আগ্রহীদের সাথে শেয়ার করলেই হবে। 🙂
আর শুধু সিএসই কেন? যে কোনো ডিপার্টমেন্ট থেকেই বিশ্বমানের কিছু করতে গেলে এখন প্রোগ্রামিং জানা অপরিহার্য।
কী কাজে লাগবে তার চেয়ে বড় কথা, এরকম মজার একটা জিনিস থেকে নিজেকে বঞ্চিত করা ঠিক না। জীবন তো একটাই।
@তানভীরুল ইসলাম,
সিএসই ডিপার্টমেন্টের কথা বিশেষ করে বলার কারণও আছে 🙂
অন্য ডিপার্টমেন্টগুলোর প্রোগ্রামিং শেখা মানুষ দু’ধরণের। একদল পড়ার খাতিরে প্রোগ্রামিং শেখে, প্রোগ্রামিং আর কখনও তেমনভাবে ব্যবহারও করা হয়ে ওঠে না হয়ত তাদের। আর আরেকদল ভালবেসেই প্রোগ্রামিং শেখে, চালিয়ে যায় সৌখিন শিল্পের মত করে 🙂 আপনি যে পয়েন্টগুলো নিয়ে কথা বলেছেন, এই দুই দলের কারও-ই সেগুলো নিয়ে চিন্তা করার দরকার নেই।
সমস্যা হল সিএসই ডিপার্টমেন্ট নিয়ে। এখানে তো ভালবেসে প্রোগ্রামিং করেন এমন মানুষ আছেনই, অন্যদলটা হল ওই দুরদর্শী চিন্তাভাবনার ফলাফল হিসেবে সিএসইকে বেছে নেয়া মানুষ। সমস্যাটা মূলত এদের নিয়েই 🙂 না কোন মৌলিক সৃষ্টি পাওয়া যায় এমন মানুষদের কাছ থেকে, না তারা বিশেষ কোনভাবে চিন্তাও করে বিষয়টা নিয়ে। ফলাফল হল এমন ওয়েব ডেভেলপার যারা ওয়ার্ডপ্রেসের থিম বানিয়ে ফেলছে HTML না জেনে, কিংবা জাভার বিশাল API ব্যবহার করে এন্ড্রয়েড ভেজে ফেলছে, কিন্তু জানে এটাও একটা লিনাক্স :O
উদাহরণ হয়ত বেশি-ই “অন্যরকম” দিয়ে ফেললাম! কিন্তু সারমর্ম তো বুঝেছেনই 🙂 আপনি যেমন বলেন, এই পয়েন্টগুলো আসলে কাজে দেবে শুধু তাদেরই যারা প্রোগ্রামিং-এ মজা পাবে, যারা স্বেচ্ছায় এই বিষয়টা সম্বন্ধে জানতে সিএসই বা এরকম বিষয়গুলোয় পড়তে আসে, শুধু ভবিষ্যত চাকরির কথা ভেবেই না।
আমার আপাত সমস্যা হচ্ছে গিয়ে, আমি একদা সি শেখার চেষ্টা করেছিলাম, তখন আমার কম্পিউটারও ছিল না। সিন্ট্যাক্স আর মুল বিষয়গুলোর সাথে হালকা পরিচিত হয়েই আপনার বলা দ্বিতীয় পয়েন্টের মত আমি অধৈর্য্য হয়ে পড়ছি বারবার। মাঝখানে পাইথন নিয়ে ঘাঁটাঘাঁটি করতে গিয়ে সি এর ওপর একধরণের অনীহা এসে পড়েছে 🙁 এমন না যে আমি সি পছন্দ করি না, কিংবা ভাল লাগে না কোন কারণে। জীবনে প্রথম প্রোগ্রামিংয়ের সাথে পরিচয় সি দিয়ে হওয়ায় এর প্রতি বরং একধরণের ভালবাসাই কাজ করে। এখন শুধু আপনার কথা মত জিনিশটাকে কাজে লাগানো দরকার 🙂
দারুন লিখেছেন। ভাল লাগল পড়ে।
@মোঃ শিবলী সাদিক,
ধন্যবাদ 🙂
কলেজ ফ্রেশারদের খুব কাজে দেবে এই পোস্ট – বিশেষত বিজ্ঞান কিংবা প্রকৌশলে মেজর করার ইচ্ছে যাদের।
পোস্টে (Y)
@সংবাদিকা,
ধন্যবাদ আপনাকে 🙂
অসাধারণ লিখা, অনেকেই আমাকে প্রশ্ন করে (কিংবা আমি বুঝে নেই তাদের মাথায় এই প্রশ্ন টা ঘুরছে!) যে প্রোগ্রামিং করে কী হবে? তার যুতসই উত্তর দেয়া হয়েছে এই পোস্ট এ. অনেক সুন্দর লিখেছেন.
@আনা ফারিহা,
পড়া এবং মন্তব্যকরার জন্য ধন্যবাদ। আপনার প্রোগ্রামিং আনন্দময় হোক 🙂
চমৎকার!
@রৌরব,
ধন্যবাদ (F)
দারুণ, খুবই দরকার ছিলো এরকম একটা লেখা। আলোচনা করা মতো অনেক কিছু আছে লেখাটায়।
পছন্দ হয়েছে কথাটা। শুনতে মজা লাগলেও সমস্যাটা গুরুতর, সবকিছুতে লাভ খোজাটা আমাদের অভ্যাস হয়ে দাড়িয়েছে, উইকি তে লিখবো, লাভ কি? টিউটোরিয়াল লিখবো, লাভ কি? প্রোগ্রামিং শিখবো, লাভ কি? সবাই instant লাভের আশায় আছে, সূদুরপ্রসারী চিন্তা খুব কমই দেখি আশেপাশের মানুষের মধ্যে।
আউটসোর্সিং নিয়ে আমার ব্যক্তিগত কিছু মতামত আছে। cse পড়ার অাগে থেকেই আউটসোর্সিং এর কথা শুনেছি যদিও acm বা ইনফরমেটিক্স অলিম্পিয়াডের কথা কেও বলেনি। বছরে এখন মিলিয়ন মিলিয়ন ডলার বাংলাদেশের তরুণরা সৎপথে আয় করতেসে, দেশের বৈদেশিক মুদ্রা বাড়তেসে। কিন্তু এতে কি আমাদের আইটি সেক্টর খুব আগায় যাচ্ছে? অধিকাংশ (আমার ধারণা ৯০%) আউটসোর্সিং এর কাজ হলো মূলত seo, ওয়েব ডিজাইন, ওয়ার্ডপ্রেস জাতীয় প্ল্যাটফর্মে ওয়েবসাইট তৈরি, ডাটাবেসের কাজ, অল্প কিছুদিন php,html ইত্যাদি শিখে সহজেই এগুলা করা যায়। এগুলা যারা করে অধিকাংশ সি/সি++ শিখতে চায়না, কম্পিউটার আর্কিটেকচার, অ্যালগোরিদম,গণিত,ডিজাইন প্যাটার্ন সম্পর্কে ভালো ধারণা নাই অথচ এগুলো উপর যদি তারা জোর দিতো তাহলে দেশে বসেই অনেক অনেক ভালো ভালো প্রডাক্ট তৈরি করতে পারতো(কেও কেও করছেও)। টাকার আকর্ষনে শুরুতেই php শিখে ওয়েব ডেভেলপিং করতে বসে যাওয়া আমি মনে করি মারাত্নক একটি ভূল, বিশ্বের বড় বড় কোডারদের সবার অ্যালগোরিদম এবং গণিতের জ্ঞান অসাধারণ, এ ব্যাপারে সচেতনতা সৃষ্টি করা খুবই দরকার।
টেকটিউনস জাতীয় টেক ব্লগগুলোতে ওয়েব ডিজাইন আর পাইরেটেড সফটওয়্যার ক্র্যাক করা জাতীয় লেখাতে ভরা, অ্যালগোরিদম নিয়ে লেখা কোথায়? নেটওয়ার্কিং, আর্কিটেকচার, সিস্টেম প্রোগ্রামিং এর বেসিক নিয়ে বাংলা লেখা কোথায়? প্রোগ্রামিং শিখলে ফ্রিল্যান্সিং করে টাকা কামানো যাবে একথা বলা হচ্ছে সব সাইটে,পত্র-পত্রিকায়, আপনার মতো মেডিকেল ইকুয়েপমেন্ট বানানো, গবেষণা করার কথা বলার লোক খুবই কম।
@রামগড়ুড়ের ছানা,
হা হা হা, টাকা নিয়ে কথাটা পুরোপুরি আমার নয়। সক্রেটিস, প্লেটো নাকি ইউক্লিডের মনে করতে পারছি না। জ্যামিতি শেখা সম্পর্কে এমন কিছু একটা বলেছিলো, লাভ খুঁজতে থাকা এক ছাত্রকে।
আসলেই ইনস্টান্ট লাভের আশায় শর্টকাট মারতে গিয়ে কীভাবে পুরো একটা জাতিই ক্ষতিগ্রস্থ হয়ে যেতে পারে, তার জ্বলজ্যান্ত উদাহরণ আমরা। শেয়ার বাজার, মাল্টি লেভেল মার্কেটিং, দলে দলে কমার্স পড়া, ছাত্ররাজনীতির নামে সন্ত্রাস, ইত্যাদি ইত্যাদি সবই এই ইনস্টান্ট “কফির” খেলা। 🙁
একটা কৌতূহলী মন, আর একটা কম্পিউটার থাকলেই ঘরে বসে, কী অসাধারণ সব গবেষণা করা সম্ভব, তা নিয়ে একটা লেখা তৈরি করার কথা ভাবছি। 🙂
@তানভীরুল ইসলাম,
আপনার বাংলা ocr এর কাজগুলা কিভাবে করেছেন একটু বিস্তারিত বলতে পারবেন? আপনার সাইটে কি কি করেছেন সেগুলা আছে কিন্তু কিভাবে করেছেন সেগুলো বিস্তারিত নেই। বেশ আগ্রহ জেগেছে কাজটা দেখে।
@রামগড়ুড়ের ছানা,
ওসিআর এর কোডগুলোতে টুকিটাকি ডকুমেন্টেশন করেছি। তোমাকে পাঠাবো, দেখলেই বুঝতে পারবে। github এ তোলার কথা ভাবছি। তখন চাইলে অংশ নিতে পারবে। 🙂