
প্রযুক্তি আমাদের জীবন কে অনেক সহজ করে দিয়েছে। সেকেন্ডের মধ্যে পৃথিবীর এক স্থান হতে অন্য জায়গায় যোগাযোগ করা যায় এমনকি মিনিটের মধ্যে অনেক বড় বড় হিসাব গুলো একদম সহজেই সমাধান করা যায়। আসলে আমরা কি কখনো ভেবে দেখেছি যে কম্পিউটার গুলো বা ওয়েবসাইট গুলো কিভাবে কাজ করে। আপনার মনে কি কখনো প্রশ্ন এসেছিল যে ক্যালকুলেটর এত তাড়াতাড়ি কিভাবে নির্ভুল উত্তর দিতে পারে? আপনি যদি না জেনে থাকেন তাহলে জেনে নিন প্রোগ্রামিং কি? কত প্রকার ও কি কি? আশা করি আপনি অনেক কিছু শিখতে পারবেন।
আসলে কোনো ডিভাইস বা কম্পিউটার একা একা কোনো কাজ করতে পারে না। তাদের কে একটি নির্দেশনা দেয়া লাগে তারা সেই নির্দেশনা মতেই কাজ করে থাকে। এটাকে প্রোগ্রামিং বলা হয়। নিচে আমি প্রোগ্রামিং কি? প্রোগ্রামিং কেন প্রয়োজন? ইত্যাদি বিষয় নিয়ে কথা বলবো। কথা না বাড়িয়ে চলুন আমাদের মেইন টপিকে চলে যাই।
প্রোগ্রামিং কি?
প্রোগ্রামিং হলো কম্পিউটার বা বিভিন্ন ডিভাইসকে কাজ করানোর উদ্দেশ্যে নির্দেশনা দেওয়ার প্রক্রিয়া।
যারা প্রোগ্রামিং করেন তাদেরর প্রোগ্রামার বলা হয়। আমি উপরে বলেছি যে কম্পিউটার একা একা কোনো কাজ করতে পারে না। তাকে যে নির্দেশনা দেয়া হয় সে ঠিক মতোই কাজ করে থাকে। যেমন ধরুনঃ আমরা যখন ক্যালকুলেটর এর মধ্যে কোনো যোগ – বিয়োগ এর হিসাব ইনপুট করি তখন ক্যালকুলেটর তার ভিতরে থাকে নির্দেশনা মতে কাজ করে একদম নির্ভুল হিসাব টা আমাদের সামনে দেখায়। এসবই হয় প্রোগ্রামিং ল্যাঙ্গুয়েজ এর জন্য।
আমার এই আর্টিকেল বাংলাতে লেখা হয়েছে যার জন্য আমরা যারা বাংলা বুঝি তারা খুব সহজেই আমার লেখাটি পড়তে এবং বুঝতে পারছেন। পৃথিবীতে অনেক ভাষা রয়েছে যেমনঃ হিন্দি, ইংরেজি, জাপানী ইত্যাদি। কিন্তু সমস্যা হলো যে আমরা মানুষরা এসব ভাষা বুঝলেও একটি রোবট বা মেশিন বা কম্পিউটার এসব ভাষা বুঝে না। কম্পিউটার শুধু বাইনারি ল্যাঙ্গুয়েজ বুঝে। এই ল্যাঙ্গুয়েজই হলো প্রোগ্রামিং।
প্রোগ্রামিং ভাষা কি?
প্রোগ্রাম ল্যাঙ্গুয়েজ এর বিষয়ে ওপরে আমি বিস্তারিত তথ্য তুলে ধরেছি।
সাধারনত কম্পিউটার আমাদের ভাষা বুঝতে পারেনা।
তাই, কম্পিউটার দিয়ে যেকোনো কাজ করানোর জন্য যদি আমরা আমাদের নিজেদের ভাষা ব্যবহার করি তাহলে তারা আমাদের কথা মতো কাজ করতে পারবে না।
তবে, এক বিশেষ ধরণের ভাষা রয়েছে যেটা প্রত্যেকটি কম্পিউটার বা মেশিন বুঝতে পারে।
সেটা হলো বাইনারি ল্যাঙ্গুয়েজ যেখানে ০-৯ পর্যন্ত ব্যবহার করা হয়। কিন্তু এই ভাষা ব্যবহার করে কম্পিউটার এর জন্য নির্দেশ তৈরি করাটা প্রচুর কষ্টের ব্যাপার।
কিন্তু কিছু আধুনিক ও উন্নত ভাষা যেমন “C”, “C ++”, “Python”, “Java” ইত্যাদি ব্যবহার করে আমরা কম্পিউটারের জন্য নির্দেশনা বা প্রোগ্রাম সহজেই তৈরি করা যায়। আমরা যখন জাভা বা পাইথন বা সি প্লাস দিয়ে কোনো প্রোগ্রাম করলে সেটা পরে বাইনারি ল্যাঙ্গুয়েজ এ রুপান্তর করা হয়। যার জন্য কম্পিউটার সহজেই প্রোগ্রাম রিড করতে পারে এবং সেই অনুযায়ী কাজ করতে পারে।
প্রোগ্রামিং ল্যাঙ্গুয়েজ হলো মানুষদের সাথে কম্পিউটার এর যোগাযোগ করার একটি মাধ্যম।
একটা প্রোগ্রামিং ভাষা শিখতে কী কী বিষয় মাথায় রাখতে হবে?
প্রোগ্রামিং এর যগৎটা এতটা বিশাল যে ভেবে নেওয়া যায় এটা একটা খুল-কিনারা হিন সমুদ্রের মত। যথই শিখবেন তথই শিখতে ইচ্ছে করবে। আবার অনেকেই বিরক্ত হয়ে এটাকে শেষ পর্যন্ত ধরে রাখতে পারে না। বিষয়টা অনেকটা এমন যে আপনার সাগরের মধ্যখানে থাকতে খুব ভালো লাগছে আবার অন্যদিকে ভিতরে ভিতরে প্রচন্ড ভয় করতেছে। তো আমাদের কি কি বাধা আমাদেরকে মেনে নিতে হবে অথবা এড়িয়ে চলতে হবে।
তো প্রোগ্রামিং শেখার সময় এই বাধাগুলো কী কী? চলুন জেনে আসি।
১) বিরাট মহৎ কোন উদ্দেশ্য নির্দিষ্ট করে প্রোগ্রামিং না শেখা
প্রোগ্রামিং শেখার প্রতিবন্ধতাগুলো খোঁজার আগে প্রোগ্রামিং শেখার learning process বা motivation নিয়ে কথা বলা দরকার। তুমি কেন প্রোগ্রামিং শিখবে? তুমি অবশ্যই এজন্য প্রোগ্রামিং শিখবে না যে অমুকে বলেছে “programming is cool!” বা প্রোগ্রামিং শিখে বিল গেটস হওয়া যায় অনেক টাকা বেতন পাওয়া যায় ইত্যাদি।
তুমি প্রোগ্রামিং শিখবে তোমার নিজের কোন একটা প্রবলেম সলভ করার জন্য। তোমার দৈনন্দিন জীবনের কোন কাজকে automate করার জন্য বা improve করার জন্য। তুমি প্রোগ্রামিং শিখতে পার স্রেফ তোমার আনন্দের জন্য। চিন্তা করার চেয়ে আনন্দের আর কিছু হতে পারে না।
দীর্ঘ সময় একটা প্রবলেমে আটকে থাকার পর চিন্তার একটা পর্যায়ে এটা সলভ হয়ে গেলে যে নির্মল আর অনাবিল আনন্দ পাওয়া যায় সেটা এক্সপেরিয়েন্স করার জন্য। তোমার লক্ষ্য যদি হয় ‘হাজার হাজার ডলার’ কামানো, তাহলে তোমার শেখাটা শুধু এই ডলার কামানোর দিকেই ধাবিত হবে। অর্থের পাশাপাশি জীবনে দরকার কিছুটা প্রশান্তি-সুখ। একটা সময় পর্যন্ত তোমার হাতে টাকা আসলে মনে হতে পারে এটাই আসলে সুখ।
অপরপক্ষে তুমি যদি নতুন একটা বিষয় শেখার আনন্দটা নিজের মধ্যে প্রতিষ্ঠা করতে পারো, প্রোগ্রামিং এর চমৎকার জগতটাকে যদি আপন করে নিতে পার জাস্ট একটা খেলার মত করে। তাহলে বিশ্বাস করো, তুমি শেখার আনন্দ যেমন পাবে তোমার হাতে টাকাও আসবে। পুরো ব্যাপারটাই মনস্তাত্বিক।
তুমি টাকা কামানোর জন্য প্রোগ্রামিং করলে টাকা কামাতে পারবা, আবার আনন্দের জন্য প্রোগ্রামিং করলেও টাকা কামাতে পারবা। প্রথম ক্ষেত্রে একটা পর্যায়ে লাইফটা বোরিং মনে হবে, দ্বিতীয় ক্ষেত্রে লাইফটাকে এঞ্জয় করতে পারবে। এখন তোমার উপর পুরোটাই নির্ভর করে। তুমি কী করতে চাও, কিভাবে করতে চাও সেটা তোমাকেই বের করতে হবে। আর দশটা মানুষ যে পথে সফল হয়েছে তোমার পথটা সেরকম নাও হতে পারে। তোমার সফল হবার পথ তোমাকেই বের করে নিতে হবে।
যদি তুমি প্রোগ্রামিংটাকে পছন্দ কর কিন্তু এটাতে ক্যারিয়ার গড়তে চাও না তাহলে অনেক সময়ই এটা তোমাকে পথ হারিয়ে ফেলতে বাধ্য করতে পারে। একটা প্রোজেক্ট করতে গিয়ে কঠিন কোন প্রবলেমে আটকে গেলে তোমার কাছে মনে হতে পারে যে ‘প্রোগ্রামিং আমার জন্য না’ বা ‘প্রোগ্রামার হবার জন্য আমার জন্ম হয় নি’ ইত্যাদি।
যদি তোমার মাথায় কোন একটা প্রোজেক্ট আইডিয়া থাকে বা বেশ কঠিন একটা প্রবলেম সলভ করার ব্যাপারে চিন্তা কর তাহলে তুমি মনকে এভাবে প্রস্তুত করতে পার যে “আমি জানি এটা সলভ করা খুব একটা আনন্দের বিষয় না। কিন্তু যেভাবেই হোক আমি এটাকে সলভ করবোই। এর জন্য আমি আমার নিজেকে যতটা সম্ভব খাটাবো। একটা সময় অবশ্যই বাধাগুলো অতিক্রম করা সম্ভব হবেই!
”জানোই তো “ধারে না কাটলে, ভারে কাটে…”।
২) কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে শুরু করব
নতুনদের সবার একটা কমন একটা প্রশ্ন হচ্ছে “ কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে শুরু করবো? সি নাকি সি++? জাভা নাকি এক নম্বর ল্যাঙ্গুয়েজ? তাহলে জাভাই শুরু করি, কী বলেন?” এই টাইপের প্রশ্নগুলোর একমাত্র কারণ হচ্ছে প্রশ্নকর্তা আসলে নিজেই জানে না সে কেন প্রোগ্রামিং শিখতে চাচ্ছে।
যদি তোমার মাথায় কোন নির্দিষ্ট প্রোজেক্টের আইডিয়া থাকে তাহলে তোমার কী শেখা উচিত সেটা বলাটা সহজ। যেমন আপনি যদি Android App ডেভেলপ করার ইচ্ছা থাকে বা এন্ড্রয়েডের জন্য কোন একটা এপের আইডিয়া আছে সেটা আপনি বানাতে চাচ্ছেন তাহলে আপনি Java শিখতে পারেন। আবার আইফোনের জন্য এপ বানানোর ইচ্ছা হলে তুমি Objective C বা Swift শিখতে পার। ওয়েবের কোন কাজ করতে চাইলে HTML, CSS, PHP, JavaScript শেখা যেতে পারে। আবার আপনার যদি উদ্দেশ্য হয় এই মুহুর্তেই সফটওয়্যার বা এপ ডেভেলপ না বরং প্রোগ্রামিং এর লজিক ডেভেলপ করা বা ACM problem solve করা। তাহলে সি/সি++ শিখতে পারো।
এরপরেও যদি তুমি মাইন্ড সেট না করতে পারো তাহলে কোন অভিজ্ঞ প্রোগ্রামারের সাথে কথা বল। তিনি তোমার কাছ থেকে কথা বের করে নিয়ে তোমাকে ভাল পরামর্শ দিতে পারবেন। আসলে তুমি যে কোন একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ ঠিকঠাক মত শিখলে এটা তুমি পরবর্তীতে যে কোন ল্যাঙ্গুয়েজেই কাজে লাগাতে পারবা। কিছু syntax শুধু নতুন করে শিখতে হবে।
৩) প্রবলেম বুঝতে পারছি কিন্তু সমাধান করতে পারছি না
এটা আসলে নতুন প্রোগ্রামারদের একটা জাতীয় সমস্যা। এটা নিয়ে বেশি ভয় পাওয়ার কিছু নাই। আমরা সাধারণত থিওরি পড়ি এরপর সেটাকে implement করার জন্য কোড করি। কিন্তু অনেক সময়েই দেখা যায় algorithm-টার স্টেপগুলো বুঝতে পারছি কিন্তু কোড করতে পারছি না। এর কারণ আর কিছু নয়, জাস্ট skill এর অভাব। অর্থাৎ এই এলগোটা করার মত পর্যাপ্ত দক্ষতা তৈরি হয় নাই।
যেমন ধরেন সাঁতারের উপর তুমি পড়াশোনা করলে। কিছু ঘাটাঘাটি করে তুমি কিন্তু চাইলে বিরাট বড় সাঁতারের কোচের মত লেকচারও দিতে পারবে। তোমার লেকচার শুনে অনেকে হয়ত প্র্যাক্টিস করে ভাল সাঁতারু হতে পারবে। যদিও তুমি নিজেই সাঁতার জানো না। তোমার শুধু সাঁতারের স্টেপ, থিওরি ইত্যাদি জানলেই হবে না। তোমাকে পুকুরে নেমে কিছু ঘোলা জলও গলধকরণ করতে হবে।
আপনি যদি কোড করতে না পেরে নিজেকে গালাগালি করতে থাকো। বা চিন্তা কর যে “এসব কোডিং-ফোডিং আমারে দিয়া হবে না”, “এগুলা অনেক কঠিন”, “আমার আসলে ব্রেইন ভাল না”, “আমি ট্যালেন্ট না, বলদা একটা”… ইত্যাদি। তাহলে এর থেকে বাজে জিনিস কিন্তু আর হয় না। তোমার প্রাপ্তির ঝুলি ভারি হওয়ার ক্ষেত্রে তুমি কতটা disciplined আর তোমার প্রচেষ্টার ধারাটা কেমন এই দুইটা জিনিস কিন্তু বেশি দায়ী। কোন একটা প্রোজেক্ট বা প্রবলেম সলভ করার জন্য তুমি নিচের স্টেপগুলো ফলো করতে পারোঃ
তুমি সত্যিই সলভ করতে চাও বা কোন একটা প্রোজেক্ট করতে চাও এমন কিছু সিলেক্ট কর। মানে কারো চাপিয়ে দেয়া কোন কাজ না। যেই কাজটা তুমি ভালবেসে করতে পারবে সেরকম একটা প্রোজেক্ট চিন্তা কর।
পুরো প্রোজেক্টের কাজগুলোকে ছোট ছোট task এ ভাগ কর। যেমন ধর একটা সাইট বানাতে চাচ্ছ তার একটা টাস্ক হতে পারে “লগিন পেজ বানানো”। সাধারণত টাস্কগুলো হতে হয় প্রোজেক্টের সর্বনিম্ন ইউনিক। ২০-২৫ লাইনের কোডের মধ্যে একেকটা টাস্ক শেষ করা ভাল।
একটা টাস্ক নিয়েই কাজ করো। এক সাথে একাধিক টাস্কের কথা চিন্তা করলে মাথায় গিট্টু লেগে যাবে। যখন কোন একটা টাস্কের ব্যাপারে মোটামুটি নিশ্চিত হবে যে এটা কাজ করবে, কোনরকম বাঘ-ভাল্লুক (bug) এর মধ্যে নাই। তখনই পরের task টা শুরু করবে।
কোন একটা টাস্কের কোড শুরু করার আগে অবশ্যই ঐ টাস্কের থিওরিগুলো জেনে নিবে। যেমন ধর তোমার একটা টাস্ক হচ্ছে কোন ইউজার কোন দেশের কোন শহর থেকে তোমার এপটা ব্যবহার করছে সেটা জানা। তাহলে কোড শুরু করার আগে তোমার জেনে নেয়া উচিত GPS কিভাবে কাজ করে? latitude ও longitude কী? এই দুইটা মান থেকে কিভাবে কোন জেলা বা শহরের নাম পাওয়া যায়? এজন্য কোন কোন API পাওয়া যায় বা কোন টেকনোলজিটা ব্যবহার করা হয়? ইত্যাদি।
৪) কোডের ভবিষ্যত নিয়ে তোমার কোন ধারনা না রাখা
“কোডের আবার ভবিষ্যত কী? কোড করেছি, কাজ করছে। ব্যস! পরের প্রোজেক্ট বা পরের টাস্ক শুরু করি!” বেশির ভাগ শিক্ষার্থীই এই কাজটা করে। তুমিও যদি এটা করো তাহলে বেশ কিছু বিষয় শেখার সুযোগ তোমার হাতছাড়া হয়ে যাবে।
একেকটা টাস্ক শেষ করার পর আপনি নিজেকে এই প্রশ্নগুলো করতে পারোঃ
এই কোডের ক্ষেত্রে কি কোন edge case আছে যার জন্য কোডটা কাজ করবে না? অথবা কোড কাজ করলেও পুরো এপ্লিকেশনটা যখন রান করবে তখন এই কোডের জন্য কোন ঝামেলা হবার কি কোন চান্স আছে?
আমার কোডটা কি clean enough? বছরখানেক পরে এই কোডের চেহারা দেখলে চিনতে পারবো তো? যে কোন ধরণের modification বা edit করার দরকার হলে করা যাবে তো? এই টাস্কের কোন আপডেটের কারণে এপের অন্য কোন টাস্কের কাজ আটকে যাবে না তো?
আমার approach-টা কি best approach? নাকি এর থেকেও ভাল কোন উপায়ে এটা করা যায়? অন্য আর কোন্ ভাবে এই একই জিনিস করা যায়? সেই সিসটেমের সুবিধা-অসুবিধাগুলো কী কী?
আমার এই মডিউলটা অন্য আরেকটা মডিউলের সাথে কিভাবে কাজ করছে? একটা আরেকটার উপর কতখানি dependent? একটার কারণে আরেকটার উপর কোন বাজে প্রভাব পড়বে না তো?
৫) সঠিক ধারণা না থাকা একটা কাজকে কিভাবে এগিয়ে নিয়ে যাওয়া যায়
প্রায়ই দেখা যাবে যে কোন একটা কাজ কিভাবে শুরু করবে সেটা বুঝতেই পারছো না। তখন সার্চ দিবে “হাউ টু ইমপ্লিমেন্ট অমুক?” লিখে। এরপর সরাসরি কোডটা কপি করে বসায় দিবে। কাজও হয়ত হয়ে যাবে। কিন্তু পরবর্তীতে একই টাইপের আরেকটা কাজের ক্ষেত্রেও কিন্তু তোমাকে এই একই ভাবে কোড কপি করা লাগবে। তাই না বুঝে কোড কপি করার অভ্যাস বাদ দিতে হবে।
যদি তোমার কাজটা সত্যিই ঠিকঠাক ভাবে শেষ করতে চাও তাহলে তোমাকে খুঁজে বের করতে হবে কেন তুমি এখানে আটকে আছো? এই stuck হয়ে থাকার কয়েকটা সম্ভাব্য কারণ হতে পারে এরকমঃ
১. তুমি থিওরিগুলো ঠিকঠাক মত জানো নাঃ
Language Syntax জানো না
কোন একটা API কিভাবে কাজ করে বা কোন library/method কিভাবে ব্যবহার করতে হয় জানো না
programming paradigms (for example: asynchronous programming)
how the system works (for example: HTTP requests are a crucial thing to understand in Web development)
এসব ক্ষেত্রে তোমার কাজ হচ্ছে থিওরিগুলোকে আবারো ভাল ভাবে স্টাডি করা।
২. তোমার টাস্কগুলো অনেক বড় বড় হয়ে গেছে। এগুলোকে ভেঙ্গে আরো ছোট করতে হবে।
৩. তুমি আসলে টাস্কগুলো বুঝতেই পারো নাই। হয়ত দ্রুত পড়ে গেছ বা তোমার কাছে মনে হয়েছে “আরে এটা তো বুঝছিই!” কিন্তু আসলে হয়ত সেই টাস্কটা ঠিক তুমি যেভাবে চিন্তা করছো সেরকম না।
৬) ডিভাগিং এ দক্ষ না হওয়া
এটা কম্পিউটার প্রোগ্রামিং এর ক্ষেত্রে প্রাচীনতম সমস্যা। এমন কি অনেক বছর ধরে প্রোগ্রামার হিসেবে যিনি কাজ করছেন তার ক্ষেত্রেও এমনটা ঘটতেই পারে। এজন্য তোমাকে শিখতে হবে debug করা। Debugging নামের একটা সম্পূর্ণ বইই আছে! তোমাকে শেখা উচিত কিভাবে ডিবাগ করতে হয়। এর চেয়ে বেশি শেখা উচিত কিভাবে ডিবাগিং বিষয়টাকে ভালবাসা যায়। ইউনিভার্সিটি বা অনলাইন কোর্সগুলোর খুব কম কোর্সেই ডিবাগ করার ব্যাপারে কিছু বলা থাকে। প্রথম প্রথম এই বিষয়টা খুব painful হতে পারে। কিন্তু এটা কাজ করার জন্য সারা জীবনই লাগবে।
কোন একটা bug ধরার পর fix করলে। উচিত হবে এই বাগের ব্যাপারে একটা নোট রাখো। আস্তে আস্তে এই নোটের তালিকাটা বাড়তে থাকবে। তুমি একটা প্যাটার্ন ধরতে পারবে যে কী টাইপের ভুলগুলো তুমি বেশি করো। সে অনুযায়ী পরে কোড করার সময় সতর্ক হতে পারবে।
৭) তুমি জানো না কিভাবে সাহায্য নিতে হয়
যখন কোন একটা প্রবলেমে আটকে গেলে তখন সার্চ করলে বা কাউকে জিজ্ঞেস করলে। সে তোমাকে সলিউশনটা দিয়ে দিল। তুমি তা ব্যবহার করে প্রবলেমটা সলভ করে ফেললে। এরপর আরেকটা প্রবলেম নিয়ে বসলে। এটা কক্ষনো করো না!
তুমি হয়ত কোডগুলো দেখলে লাইন বাই লাইন পড়ে কোডটা বুঝে ফেলবে। কিন্তু তুমি জানতে পারবে না যে এটা সলভ করেছে তার চিন্তার ধারাটা কেমন ছিল? সে কিভাবে চিন্তা করে কোন পথে এগিয়ে এই সমাধানে এসেছে সেটা কিন্তু জানা দরকার। তাই যে তোমাকে সলিউশনটা দিল সম্ভব হলে তার সাথে আলোচনা করো। সে কোন লাইনে চিন্তা করেছে সেটা জানো।
এটাই StackOverFlow এর একটা খারাপ দিক। সব জায়গায় কোড বা সলিউশন পেয়ে যাবা। কিন্তু সলিউশনটা কিভাবে পাওয়া গেছে সেটা কখনোই জানতে পারবা না। তাই কোন একটা সলিউশন পাওয়ার পর নিজে নিজেই চেষ্টা করো শুরু থেকে ভেবে সলিউশন পর্যন্ত আসতে।
৮) কোডের থিওরি জানি কিন্তু সঠিকভাবে ব্যবহার করতে পারি না
“আবারো এটা হল?” আমি তোমাকে মনে করিয়ে দিতে চাই এই আর্টিকেলটাও একটা theory টাইপ জিনিস। এটা ততক্ষণ তোমার কোন উপকারে আসবে না যতক্ষণ না তুমি এটাকে apply করো। একবার না, বারবার এপ্লাই করতে হবে, যতক্ষণ না পর্যন্ত এটা তোমার রুটিনে পরিণত হয়।
প্রোগ্রামিং এমন একটা বিষয়, যেটা তোমার মধ্যে একটা ভাল অভ্যাস গড়ে তুলবে। আর তা হচ্ছে যে কোন সমস্যা থেকে নিজেকে টেনে তুলতে পারা।
আরো পড়ুনঃ ChatGPT কি? কিভাবে কাজ করে? বিস্তারিত
প্রোগ্রামিং কত প্রকার
প্রোগ্রামিং কে ৩ ভাগে ভাগ করা যায়। যেমনঃ
১/ Machine languages
২/ Assembly languages
৩/ High-level languages
এবার আমরা এই তিনটি বিভাগ নিয়ে একটু আলোচনা করে নিই।
❒Machine language কি?
আগেকার সময়ে কম্পিউটার ল্যাঙ্গুয়েজ তৈরি করার ক্ষেত্রে কেবল machine language ব্যবহার করা হতো।
এই ভাষাকে first generation language ডাকা হয়।
মেশিন ল্যাঙ্গুয়েজ ব্যবহার করে তৈরি করা কম্পিউটার প্রোগ্রামে কিছু series of binary patterns যেমনঃ 010011101 ব্যবহার করা হয়।
এই বাইনারি pattern গুলোর মাধ্যমেই কম্পিউটারের জন্য তথ্য,টাস্ক ও নির্দেশনা তৈরি করা হয়।
আমি ওপরে বলেছি যে কম্পিউটার কেবল বাইনারি ল্যাঙ্গুয়েজ কে বুঝতে পারে
এবং এই বাইনারি ভাষার ক্ষেত্রে আমরা কম্পিউটারকে “0” এবং “1” ব্যবহার করে নির্দেশা দিয়ে থাকি, যাকে আমরা মেশিন ভাষা (machine language) বলে থাকি।
এই বাইনারি ভাষাতে তৈরি করা প্রোগ্রাম গুলো একটি কম্পিউটারে খুব সহজেই রান করা যেতো তবে এই বাইনারি প্রোগ্রাম লিখতে একজন প্রোগ্রামারকে অনেক গুলো কোড মনে রাখতে হতো যা অনেক কষ্ট কর কাজ। তবে এখন অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে যেগুলো করতে যে কোডিং করতে হয় তা অনেক সহজ। এসব প্রোগ্রামিং ভাষা দিয়ে কোনো প্রোগ্রাম তৈরি করলে কম্পিউটার প্রথমে সেটাকে তার নিজের ভাষা বাইনারি ল্যাঙ্গুয়েজে রুপান্তর করে এবং পরে তার আউট পুট প্রদান করে।
❒Assembly languages কি?
প্রোগ্রামারদের জন্য প্রোগ্রামিং করাটা আরো সহজ করার উদ্দেশ্যেই এই প্রোগ্রামিং ভাষাটিকে তৈরি করা হয়েছিল।
এই ভাষাতে প্রোগ্রাম গুলোকে “Mnemonics” হিসেবে লিখা হয়।
যেমন, “NOV”, “ADD”, “SUB” ইত্যাদি।
কম্পিউটার কেবল বাইনারি ল্যাঙ্গুয়েজ বুঝতে পারে বিদ্বায় অ্যাসেম্বলি ল্যাঙ্গুয়েজ গুলোকে ব্যবহারে আনার আগে মেশিন ল্যাঙ্গুয়েজে অনুবাদ করতে হয়।
কেবল তখন একটি কম্পিউটার সেই assembly ভাষা দিয়ে তৈরি করা প্রোগ্রামটি বুঝতে পারবে।
Assembly থেকে machine language এ অনুবাদ করার ক্ষেত্রে ব্যবহার করা অনুবাদকটিকে বলা হয় “assembler“
❒High-level languages কি ?
একজন প্রোগ্রামারের কাছে এই হাই লেভেল ল্যাঙ্গুয়েজ গুলো অনেক আধুনিক এবং সহজেই মনে রাখা যেতে পারে।
কারণ, এই ধরণের ভাষা যেমন, “C”, “C++”, “JAVA”, “PYTHON” ইত্যাদি English ভাষার মতোই।
ইংরেজি শব্দ, নাম্বার এবং বিভিন্ন symbols ব্যবহার করে এই ভাষা লিখা হয়।
তাই, এই আধুনিক ভাষা গুলো প্রোগ্রামিং এর ক্ষেত্রে মনে রাখাটা অনেক সহজ ব্যাপার।
এ ক্ষেতেও আমরা হাই লেভেল ল্যাঙ্গুয়েজ দিয়ে কোনো প্রোগ্রাম তৈরি করে কম্পিউটার এ ইনপুট করলে কম্পিউটার প্রথমে সেটাকে মেশিন ল্যাঙ্গুয়েজে রুপান্তর করে তারপর সেই নির্দেশনা অনুযায়ী আউটপুট শো করে।
❒প্রোগ্রামিং কিভাবে শিখব
এতক্ষণ আমি প্রোগ্রামিং নিয়ে অনেক কিছু কথা বললাম এখন আমরা কিভাবে প্রোগ্রামিং শিখতে পারি সেই বিষয়টি নিয়ে কথা বলবো।
আপনি যদি প্রোগ্রামিং শিখতে চান তাহলে আপনাকে প্রথমে নিশ্চিত করতে হবে কোন প্রোগ্রামিং ল্যাঙ্গুয়েজটি আপনি ভালো পারেন। আমি আপনাকে সাজেস্ট করবো যে ল্যাঙ্গুয়েজটি সবচেয়ে সহজ সেটি দিয়ে শিখা শুরু করা।
তারপর ইউটিউব ভিডিও দেখে এবং বিভিন্ন ব্লগ পড়ে এর বিষয়ে বেসিক বিষয় গুলো জেনে নিবেন।
প্র্যাকটিস এর জন্য প্রয়োজনীয় সফটওয়্যার আপনার মোবাইল বা কম্পিউটার এ ইনস্টল করে নিবেন।
প্রতিদিন যা যা শিখবেন তা এইসব সফটওয়্যারে লিখে প্র্যাকটিস করবেন।
নিজের একটি প্রোগ্রাম তৈরি করার চেষ্টা করুন। আপনি যদি ভালো কোনো কোচিং সেন্টার থেকে কোর্স করে নিতে পারেন তাহলেই সবচেয়ে ভালো হয়।
প্রথম দিকে কাজ শিখতে হয়তো ভালো লাগবে না আপনার মনকে শক্ত করে কাজ শিখতে হবে।
❒প্রোগ্রামিং শিখা কি ঠিক কাজ হবে
বর্তমান প্রযুক্তির যুগে কম্পিউটার প্রোগ্রামার দের চাহিদা প্রচুর। আমাদের চারপাশের অনেকেই ডিজিটাল মার্কেটিং, ব্লগিং ইত্যাদি কাজ শিখলেও প্রোগ্রামিং শিখা একটু কঠিন হওয়ায় অনেক কম লোকই প্রোগ্রামিং শিখে। তাই আপনি যদি একজন ভালো প্রোগ্রামার হতে পারেন তাহলে অনলাইনে বিভিন্ন মার্কেট প্লেসে ফ্রিলান্সার হিসেবে কাজ পাওয়ার সাথে সাথে বিভিন্ন কোম্পানির প্রোগ্রামার হয়েও অনেক বেশি টাকা বেতনের চাকরি করতে পারবেন। দিন দিন এর চাহিদা আরো বাড়বে।
সবশেষ কথা
আশা করি প্রোগ্রমিং নিয়ে আপনার মধ্যে একটা ধারণা তৈরী করতে হয়েছে। সবচেয়ে বড় বিষয় হচ্ছে নিজের মধ্যে শিখার এবং লেগে থাকার আগ্রহটা থাকতে হবে তাহলে আপনি অবশ্যই অনেক দূর এগিয়ে যেতে পারবেন এবং নিজেকে একজন সফল প্রোগ্রামার হিসেবে তৈরী করতে পারবেন। প্রোগ্রমিং নিয়ে আপনার কোন প্রশ্ন থাকলে কমেন্ট বক্সে করতে পারেন এবং এই গাইডলাইনটি আপনার বন্ধুদের সাথে শেয়ার করতে পারেন। সময় নিয়ে পড়ার জন্য ধন্যবাদ।