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

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

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

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

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

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

গো কেন শিখব?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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