সি, সি++, জাভা। কোনটা আর কয়টা ল্যাঙ্গুয়েজ শিখব?
তুমি গল্প বলতে পার…
তুমি জান কিভাবে কোন কথার পর কোন কথা বললে শ্রোতা-পাঠক আকৃষ্ট হবে। কখন কোথায় গল্পের টুইস্ট দিতে হবে। গল্পের উত্থান-পতন বা টেম্পারেচার তুমি নিয়ন্ত্রণ করতে পার টেকনিক্যাল্যি। পাঠক কখনো চরম টেনশনে পড়ে যাবে “কী হয়, কী হয়” ভেবে। আবার কখনো তোমার গল্পের প্রেমিকার চপল হাসি আর কপট অভিমান দেখে পাঠকের বুকটা শূন্য-শূন্য লাগবে।
আচ্ছা… এই যে গল্প বলা বা গল্প লিখা এটা কী কোন নির্দিষ্ট ভাষার উপর খুব বেশি নির্ভর করে? তুমি যদি বাংলায় ভাল লিখতে জান তাহলে একই মনের ভাবটা তো তুমি ইংরেজিতেও লিখতে পারবে। এ জন্য ইংরেজির কিছু ভোকাবুলারি আর গ্রামার জানতে হবে। কিন্তু তুমি যদি বাংলাতেও সেভাবে ভাল লিখতে না পার তাহলে আন্তর্জাতিক ভাষা হিসেবে ইংরেজি কি তোমাকে কোন বিশেষ সুবিধা দিবে?
সাধারনত লিখালিখি শুরুটা কিন্তু সবাই করে মাতৃভাষায়।
আর প্রোগ্রামিং ল্যাঙ্গুয়েজের ক্ষেত্রে মাতৃভাষা হিসেবে বলতে পার C কে। অনেকেই সি’কে বলেন mother of Programming Language (যদিও অনেকের দ্বিমত আছে)। বেশির ভাগ compiler, JVM এবং OS Kernel সি ল্যাঙ্গুয়েজ দিয়ে ডেভেলপ করা।
সি একটি মিড লেভেল ল্যাঙ্গুয়েজ। এটি মেশিন ল্যাঙ্গুয়েজের অনেক কাছাকাছি। এর মাধ্যমে তুমি সিসটেম প্রোগ্রামিং করতে পারবে অর্থাৎ অপারেটিং সিসটেম লেভেলে কাজ করতে পারবে। কম্পিউটারের মেমরি-রেজিস্টারে এক্সেস করতে পারবে। একদম ভেঙ্গে-চুরে প্রোগ্রামিং শেখার জন্য বা লজিক ডেভেলপ করার জন্য আসলে সি এর বিকল্প নেই। এজন্য বলা হয় “যে সি ভাল ভাবে পারে সে অন্য যে কোন ল্যাঙ্গুয়েজ খুব সহজে নিজে নিজে শিখতে পারে”। এ কথাটা আবার অন্য যে কোন ল্যাঙ্গুয়েজের ক্ষেত্রেও বলা চলে। মোট কথা কোন একটা ল্যাঙ্গুয়েজে যদি তুমি ভাল হও, এটা দিয়ে যা ইচ্ছা করতে পার তাহলে অন্য যে কোন ল্যাঙ্গুয়েজ তোমার কাছে বড় কোন ব্যাপার হবে না।
অনেকের কাছ থেকেই কমন প্রশ্ন পাই “ভাই, সি শিখব নাকি জাভা শিখব? জাভা তো নাম্বার ওয়ান ল্যাঙ্গুয়েজ। সি এর কি ভাত আছে?”
আসলে সি শিখে এরপর যখন জাভা শিখতে যাবেন তখন আপনার নতুন করে যেটা শিখতে হবে তা হচ্ছে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP). আপনি জাভা শিখলেন কিন্তু OOP শিখলেন না তাহলে জাভার আসলে কী শিখলেন? খালি ইনপুট-আউটপুট? এইটার কি ভাত আছে মনে করেন? যে কোন জাভার কোর্সে আমার জানা মতে মূল ফোকাস থাকে OOP. আর আপনার লজিক্যাল চিন্তা ভাবনায় ঝামেলা আছে। রিয়েল লাইফ একটা প্রবলেমকে কিভাবে কোডে কনভার্ট করতে গ্যাঞ্জাম লাগে। কী করতে হবে বুঝতেছেন কিন্তু কেমনে করতে হবে বুঝতেছেন না। একটা ম্যাথ বা জ্যামিতির প্রবলেমকে কিভাবে কোডে রূপান্তর করতে হয় আপনি জানেন না, ইকুয়েশন সলভ করতে পারছেন কিন্তু কোড লিখতে পারছেন না, এর চেয়ে বড় দুঃখ আর কী হতে পারে? এইসব প্র্যাক্টিসের জন্য আপনার শুরু করা উচিত সি ল্যাঙ্গুয়েজ। এমন কি ওরাকল তাদের SE 6 এর বইয়ের শুরুতে লিখে দিয়েছে যে “আমরা ধরে নিলাম আপনি সি/সি++ জানেন, সেই হিসেবেই বইটা লিখা হয়েছে”। একদম শুরুতেই OOP এর কন্সেপ্ট বুঝতে আপনার অসুবিধা হতে পারে ফলে আপনি হতাশ হয়ে প্রোগ্রামিংই ছেড়ে দিতে পারেন। তাই প্রোগ্রামিং জগতে পা রাখুন প্রোগ্রামিং এর মাতৃভাষা সি দিয়ে।
ভার্সিটির শুরুতেই সি থাকে। কিন্তু “ভার্সিটি স্টুডেন” হবার উত্তেজনায় শুরুর দিনগুলো জীবন থেকে হারিয়ে যায় প্রোগ্রামিং এর যথাযথ প্র্যাক্টিস ছাড়াই। অনেক অনেক লজিক্যাল ব্যাপার-স্যাপার, অনেক ব্যাসিক জিনিসপত্র অজানা থেকে যায়। পরের প্রোগ্রামিং রিলেটেড কোর্সগুলো তখন মূর্তিমান আতংক হয়ে দাঁড়ায়। Data Structure, Algorithm কোর্সগুলোতে আপনি হয়ত A+ পেয়েছেন কিন্তু কোর্সগুলোর কোন ইমপ্লেমেন্টেশন করতে পারছেন না ব্যাসিক প্রোগ্রামিং এ দূর্বলতার জন্য। হতাশ হয়ে চিন্তা করছেন “ওয়েব ডিজাইন/ডেভেলপমমেন্ট, এন্ড্রয়েড ডেভেলপমেন্টে প্রোগ্রামিং লাগে না। তাইলে এগুলাই শুরু করি”। অথবা প্রথম প্যারার গল্পের মত চিন্তা করছেন জাভা নাম্বার ওয়ান ল্যাঙ্গুয়েজ এইটাই শিখতে হবে। কিন্তু আপনার গোড়াতেই গলদ থাকলে এই শক্তিশালী ল্যাঙ্গুয়েজ আপনাকে কতটা সাহায্য করতে পারবে? আপনি গল্প বলায় পারদর্শী না হলে গল্প বলাটা শিখবেন নাকি আন্তর্জাতিক ভাষা ইংরেজিটা শিখবেন সেটা আসলে আপনার হাতে।
এজন্য আমি পরামর্শ দেই ভার্সিটি লাইফের প্রথম আড়াই-তিন বছর শুধু প্রবলেম সলভ করেন লজিক ডেভেলপ করেন। সম্ভব হলে এই সময়টুকু শুধু অনলাইজ জাজে প্রবলেম সলভ করেন। এরপর যখন কোন একটা প্ল্যাটফর্মে ডেভেলপমেন্টের কাজ শুরু করবেন তখন সেটা আপনার জন্য খুব একটা কঠিন বিষয় হবে না। ওয়েব/মোবাইল/ডেস্কটপ যেখানেই কাজ করেন ভাল করতে পারবেন। আর যারা এই ট্র্যাকেই আছেন আশেপাশের মানুষের কথায় হতাশ হবেন না। হাল ছাড়বেন না। প্রয়োজনের বেশি অর্থের পিছনে ছুটবেন না। ভার্সিটির এই কয়টা দিন কষ্ট করলে একটা সুন্দর ভবিষ্যতের স্বপ্ন কিন্তু আপনি দেখতেই পারেন।
Comments
Post a Comment