Search This Blog

নতুন এক প্রোগ্রামিং ভাষা গুগল গো

Tuesday, August 16, 2011

গুগল গো: নতুন এক প্রোগ্রামিং ভাষা।

গো: গুগলের নতুন প্রোগ্রামিং ভাষা


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

অথচ ঘটেছে তাই। ‘গো’ নাম দিয়ে একেবারে নতুন একটা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষার জন্ম দিল গুগল। বলা যায় জনপ্রিয় প্রোগ্রামিং ভাষা সি++ এবং পাইথনের এক ধরনের সংমিশ্রণের মাধ্যমেই গো-র যাত্রা শুরু করল গুগল।

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

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

গো প্রোগ্রামিং ভাষায় ‘হ্যালো ওয়ার্ল্ড’ গো-তে ‘Hello World’ লেখার সিনট্যাক্স হল নিম্নরুপ:

package main

import “fmt”

func main() {

fmt.Printf(“Hello, ??n”)

}

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

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

গো রুটিনসমূহ (Goroutines)-এর মাধ্যমে গো- তে থ্রেডিং-এর প্রয়োগ ঘটানো হয়েছে। গো স্টেটমেন্ট যদি আগে থাকে তাহলে যে কোনো ফাংশন কল পৃথক আরেকটি গো রুটিনে একই সঙ্গে (concurrently) রান করে। এখানে চ্যানেল নামে একটি বৈশিষ্ট্য প্রয়োগ করা হয়, যাতে এ ধরনের রুটিনগুলোর মধ্যে আরো ভাল যোগাযোগ এবং সিনক্রোনাইজেশন করা যায়।

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

আগেই বলা হয়েছে, গো-তে পাইথন ল্যাংগুয়েজ-এর ছাপ আছে। গুগল সবসময়ই পাইথনকে একটু বিশেষভাবে ফেভার করে। পাইথনের মত গো-ও স্লাইস সাপোর্ট করে, যার সুবাদে সহজ একটি সিনট্যাক্স দিয়ে একটি অ্যারে-র নির্দিষ্ট অংশকে রেফার করা যায়। ফলে ১০০ এলিমেন্ট সমৃদ্ধ “a” নামের একটি অ্যারেতে a[23,42]-এর মানে হচ্ছে এলিমেন্ট ২৩ থেকে ৪২ পর্যন্ত এলিমেন্টগুলো নিয়ে আরেকটি অ্যারের সৃষ্টি হবে। এছাড়া অ্যারের দৈর্ঘ্যকে অভ্যন্তরীনভাবে ট্র্যাক করে। ফলে অ্যারের ব্যবহারও সহজ হয়। গুগলের বাদবাকি প্রায় সব পণ্যের মত গো-ও বেটা ভারসন দিয়েই যাত্র শুরু করেছে, এখনও সফটঅয়্যার প্রোডাকশনের জন্য এটিকে ব্যবহার করা যাচ্ছে না।

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

0 comments:

Post a Comment