ডার্ট ১০১ - সূচনা
ডার্ট ১০১ - সূচনা
একটু কাহিনী
২০১১/১২ এর দিকে প্রথম ডার্টের নাম শুনেছিলাম। তেমন একটা আগ্রহ পাইনি তখন কারণ সে সময়ে এটি জাভাস্ক্রীপ্টে কম্পাইল করত আর আমি তখন জাভাস্ক্রিপ্ট থেকে দূরে থাকার চেষ্টা করতাম। এরপর আসে ২০১৫/১৬ আর তখন জাভাস্ক্রিপ্টের সাথে আমার “ছাইড়া-দে-মা-কাইন্দা বাঁচি” সম্পর্ক, কাজেই ডার্ট কেন, অন্য যে কোন জাভাস্ক্রিপ্ট ল্যাংগুয়েজ, লাইব্রেরী কিংবা ফ্রেমওয়ার্ক যা-ই দেখতাম, উল্টা দিকে দৌড়ানোর চেষ্টা করতাম।
এই বছরের প্রথম দিকে ফ্লাটার সম্পর্কে জানতে পাই, প্রথম দেখায় ভালই মনে হয়েছিল কিন্তু ডার্ট দেখে তেমন একটা আগ্রহ পাইনি, ওই যে, যে জিনিস জাভাস্ক্রীপ্টে কম্পাইল্ড হইত তা আর কতটুকুই বা মানবিক হতে পারবে সিনট্যাক্স সম্পর্কে। তার উপর গুগুলের আরেকটা ল্যাংগুয়েজ গো নিয়ে তখন কাজ করি আমি আর সেটাও আমার কাছে মনে হয়েছিল নেহায়েত রুচিহীন এক ল্যাঙ্গুয়েজ। ব্রাউজার বন্ধ করতে এবারও বেশি সময় লাগেনি।
প্রতি বছর আমি একটা নতুন ল্যাঙ্গুয়েজ শেখার চেষ্টা করি, আর ২০১৯ এর জন্যে আমি ঠিক করেছিলাম দুটি ল্যাংগুয়েজ- রাস্ট ও এফ-শার্প। কিন্তু একদিন এক ফাংশনাল প্রোগ্রামিং মিট-আপে একজনের কাছ থেকে শুনলাম যে ডার্ট ২ নাকি জেনেরাল পার্পাস এবং তা জাভাস্ক্রিপ্ট এর গন্ডি থেকে বের হতে পেরেছে। এখন ওই গ্রুপের সবার মতামতকে আমি বেশ গুরুত্ব দিয়ে থাকি, কাজেই সেদিন বাসায় এসে একটু ঘেটে দেখলাম, ভালোই লাগল, তবে বাসা শিফটিং আর নতুন চাকরির চাপে আবারও ব্রেক নিলাম।
ফাস্ট ফরোয়ার্ড গত সপ্তাহ, একজনের সাথে পিজনহোল সর্ট নিয়ে আলোচনা করছিলাম। আর এর অন্যান্য রূপ দেখার জন্য গিকফরগিক সাইট ভিজিট করলাম আর কিছু জাভা কোড দেখলাম। কি মনে করে ভাবলাম, দেখি তো ডার্ট দিয়ে কেমন লাগে এলগোরিদমটি লিখতে, আর সঙ্গে সঙ্গে গেলাম ডার্ট সাইটে আর কিছু কোড দেখলাম। কিন্তু সঙ্গে সঙ্গে ধৈর্যহারা হয়ে ভাবলাম, এত না পড়ে জাভার নলেজ থেকে আন্দাজে একটু গুতাই ডার্টপ্যাডে, আর করলামও তা, এবং অবাক করা বিষয় দাঁড়াল, আমি আন্দাজে যা কোড করলাম তা রান করল সুন্দরভাবেই। এরপর আরও ঘাটাঘাটির পর বুঝতে পারলাম, একজন জাভা প্রোগ্রামার জাভাতে যা থাকলে ভাল হতো মনে করতে পারে (একটু লাগাম লাগানো ভালবাসা, স্কালা লেভেল না কিন্তু) তার সাথে কিছু পাইথনীয় সিম্প্লিসিটি যোগ করলে যা দাঁড়ায় তা হল ডার্ট।
প্রফেশনালি আমি এই মুহূর্তে কাজ করছি এলিক্সির নিয়ে, যা সিনট্যাক্সগত ভাবে খুবই শক্তিশালী। ডার্ট সিন্ট্যাক্সগত ভাবে একটু রক্ষণশীল (জাভার মত অতটা না যদিও), আর সীমাবদ্ধ সিনট্যাক্স নিয়ে আমি এর আগে জাভা ও গো নিয়ে কাজ করেছি, গো নিয়ে আমার অভিজ্ঞতা আগেই বলেছি, এবার আসি জাভা নিয়ে। জাভা শেখা হয় ২০০১ সালে এবং জীবনের প্রথম ১০০০ লাইনের প্রোগ্রাম লিখি জাভাতে (যদিও হয়ত তা পাইথন হলে ১০০/২০০ লাইন হত), প্রথম গ্রুপওয়ার্ক বলেন আর টীমওয়ার্ক বলেন- জাভাতে, প্রথম GUI, প্রথম ওয়েব এপ্লিকেশন- জাভাতে। যতই গালমন্দ দেই না কেন, জাভা দিয়ে অনেক প্রোগ্রামিং অভিজ্ঞতাই শুরু হয় আমার, কাজেই এর প্রতি আমার দুর্বলতা কাজ করে সব সময়েই (পাইথনের মতো না যদিও, এবং প্রফেশনালি তেমন একটা কাজ করিনি জাভাতে তাই হয়ত দুর্বলতা রয়ে গিয়েছে) ডার্ট দিয়ে কোডিং করার সময়ে মনে হচ্ছিল জাভাতে কোডিং করছি পাইথন দিয়ে, মানে দুটোর একটা মিশ্রণ, একের ফিলোসফি অন্যের সিনট্যাক্স। এরপর সিদ্ধান্ত নিলাম, এ নিয়ে আরও ঘাটৰ।
ঘাটাঘাটি করতে গিয়ে সল্ভ করা হল এলগোরিদম, খেলা হচ্ছে এডভেন্ট অফ কোড, আর এরপর আবার আসল ফ্লাটার।
একটু ফ্লাটার
মোবাইল ডেভেলপার আমি কখনোই ছিলাম না। এর কারণ আমি এন্ড্রয়েড প্রোগ্রামিং যেভাবে আমাদের ইউ আই বানাতে শিখায় তার সাথে একমত হতে পারিনি। আবার রিয়াক্ট নেটিভ যে ভাষাতে আপনাকে কোড করতে শিখায় তার সাথে একমত হতে পারিনি। মোবাইল ডেভেলপমেন্ট যে করতেই হবে তা না তবে জেনে রাখতে প্রব্লেম কোথায়? ডার্ট শেখার সময়ে তো আমি ফ্লাটার এর কথা ভুলেই গিয়েছিলাম তবে এর ৪ঠা ডিসেম্বরের ভিডিওটি দেখেছিলাম লাঞ্চ আওয়ারে। কয়েকবার “ইয়েস”, “অসাম” বলে উঠেছিলাম নিজেই দেখার সময়ে। যেমনটা কোডিং আমি করতে চাই সেরকমই অভিজ্ঞতা দেয় ফ্লাটার। তার উপর ডার্ট নিয়ে আমি এর ৬/৭ দিন আগে কোডিং করেছিলাম এবং অভিজ্ঞতা ছিল অনেক ভাল। তো ভাবলাম, একটু মোবাইল ডেভেলপমেন্ট শিখে রাখতে প্রব্লেম কি? এক উইকেন্ড কাজ করে যদি বাংলাদেশে আসার টিকেট ম্যানেজ করা যায় তবে মন্দ না (জোকিং)। কিন্তু পরে মাথায় এক আইডিয়া আসল।
একটু সামাজিকতা
সব সময়েই আমি চেষ্টা করেছি কমিউনিটির জন্য কিছু করতে, ২০১২ - আজ অবধি পাইথন, ২০১৪-১৬ তে ক্লোজার, এবং আজকাল গ্রাফকিউএল ও এলিক্সির। কিন্তু, পাইথন ছাড়া বাকি সবগুলিই ছিল খুবই নিশ কিসিমের টেকনোলোজি। আর সবার টাইম অথবা মানসিকতা থাকে না কখনো কাজে নাও লাগতে পারে এমন কোন টেকের পেছনে কালক্ষেপনের। এমনকি পাইথনও যখন শুরু করি তা ছিল নতুন (আমাদের সাপেক্ষে) এবং ৩/৪ বছর পর তা মেইনস্ট্রিম হয়েছে। এ নিয়ে আমি কয়েক মাস আগে একটা পোস্ট লিখেছিলাম। সে যা-ই হোক, ডার্ট একটা খবই এপ্রোচেবল ল্যাঙ্গুয়েজ। আপনি জাভা অথবা জাভাস্ক্রিপ্ট জানলে ডার্ট শিখতে খুবই কম সময় লাগবে। আর টুলিং ভালোই, বেস্ট প্র্যাকটিসের দিক থেকে তা জাভা/কটলিনের অনুসারী, মানে আপনি “ইফেক্টিভ জাভা” পড়লে ডার্ট এর বেস্ট প্র্যাকটিস সম্পর্কে আইডিয়া পাবেন। আইডিই (ভি এস কোড, আইডিয়া) অনেক ভালো সাপোর্ট দেয়, আর ব্যাকএন্ড থেকে মোবাইল প্রোগ্রামার হতে চাওয়া প্রোগ্রামারের সংখ্যাই বেশি, আর তা যদি হয় সহনীয় ইকোসিস্টেমে এবং আইওএস এন্ড্রয়েড দুটোতেই তাহলে তো কথাই নাই।
মোবাইল ডেভেলপমেন্টে যাই আর না যাই, আমি ডার্ট নিয়ে সময় দিবো সিদ্ধান্ত নিয়েছি, তবে এর মাধ্যমে যদি আমি দুযেকজনের সাথে পরিচিত হতে পারি তাহলে সমস্যা কোথায়? তাই ভাবলাম, আমি যা শিখছি, যেভাবে শিখছি, তা আমি পোস্ট আকারে হোক আর স্ক্রিনকাস্ট আকারে হোক, শেয়ার করবো।
মিট-আপ ব্যবহারকারী তেমন একজনকে চিনি না দেশে, আর কয়েকবার স্ল্যাক খুলতে গিয়ে ধরা খেয়েছি, কাজেই, ফেসবুক গ্রুপ খুললেই সবচেয়ে তাড়াতাড়ি নাগাল পাওয়া যাবে মানুষের, তা-ই করলাম, একটা গ্রুপ খুললাম, কিছু ইউনিট (নতুন ফীচার এসেছে দেখলাম) খুললাম আর সেই উদ্যোগকে মাথায় রেখে আজ এই পোস্ট। একসাথে নতুন কিছু যতবার শিখেছি, রিগ্রেট করিনি, বরং দ্বিগুন গতিতে ও উৎসাহে শিখেছি, এবারও তা হবে আশা করছি, আর প্রথমবারের মত পটেনশিয়ালি মেইনস্ট্রিম কিছু নিয়ে নেমেছি।
একটু পরিকল্পনা
আমার বেশিরভাগ পোস্ট সিরিজে পরিণত হতে পারে না কারণ সেগুলি থাকে আমার জানা বিষয়গুলির মধ্যে, আর সারাদিন একটা জিনিসে কাজ করে তা নিয়ে লিখতে বেশিদিন উৎসাহ পাই না সাধারণত। তবে এবার, প্রথমবারের মতো আমি শিখছি ও লিখছি বাংলাতে, কোন টপিকে, দেশের কমিউনিটিকে মাথায় রেখে, কিন্তু এরপরও যাতে আবারও হাওয়া হয়ে না যাই তাই কিছু প্ল্যানিং করে রেখেছি (যা আমি গ্রুপে আলোচনা করেছিলাম)।
- এবার বড় কোন পোস্ট না, ছোট ছোট (৫ মিনিটে শেষ করা যায় এমন) একাধিক পোস্ট দিব।
- সপ্তাহে একটা হয়ত বড় পোস্ট দিব, তবে তা হবে প্যাটার্ন/প্র্যাকটিস সংক্রান্ত অথবা যখন প্রজেক্ট করব তার চিন্তাধারা নিয়ে।
- এবার আমি স্ক্রিনকাস্ট করার চেষ্টা করব, হয়ত মাঝে মাঝে গ্রুপ চ্যাট করব
- কোড শেয়ারিং হবে সবচেয়ে বেশি, একটা সময় পর লিখালিখি অথবা আড্ডাবাজি কম, কোড/প্রজেক্ট বেশি থাকবে।
এগুলো হলে আশা করব আমি মানুষের সময় নষ্ট করবো না (যেমনটা আজকে করলাম, তবে আজই শেষ এহেন কর্মকান্ডের), আবার নিজেও পাব সময় বের করতে।
প্রথম পোস্ট/স্ক্রিনকাস্ট থাকবে ডার্ট, প্রোগ্রামিং এবং এলগোরিদম নিয়ে। এরপর আস্তে আস্তে ফ্লাটার, রিয়াকটিভ প্রোগ্রামিং অথবা সফটওয়্যার ইঞ্জিনিয়ারিং নিয়ে আলোচনা করব। খুবই ভাল হবে যদি ২/১ জন ফ্রন্ট-এন্ড গুরু অথবা প্রাক্তন মোবাইল ডেভেলপার পাই, শিখতে পারব অনেক কিছু, গ্রাফিক্স ডিজাইনার থাকলেও মন্দ না।
একটু রিসৌর্স
পড়ার সময় হয়তো খেয়াল করেছেন আমি কন্টেক্সচুয়ালি লিংক দিয়েছি যত্রতত্র, এখানে আরও কিছু লিংক দিব যা ঘেটে দেখতে পারেন-
- ডার্ট এর অফিসিয়াল সাইট
- ফ্লাটার এর অফিসিয়াল সাইট
- ডার্টপ্যাড
- ফ্লাটার এর সেই ভিডিও লিংক
- আমাদের ফেইসবুক গ্রুপ
- কিছু এলগোরিদম প্রয়োগ
- এডভেন্ট অফ কোড সমাধান ২০১৬, ২০১৭, ২০১৮
- এক্সেরসিজম ডার্ট চ্যানেল
একটু বিদায়
আজকে এতটুকুই থাক। ডার্ট ও ফ্লাটার দুটোই নতুন, তবে গুগুল এদের পেছনে যেমন রিসোর্স দিচ্ছে, এর (এবং এর সাথে সাথে এর প্রোগ্রামারদের) ভবিষ্যৎ উজ্জ্বল। আর এখনই সময় এদের রপ্ত করার যদি কম্পেটিশনে টিকতে হয় আগামী এক বছরের মধ্যে। আর অন্তত একটা ক্লিন ল্যাংগুয়েজ তো শিখা হবে যা আপনার জাভা(স্ক্রিপ্ট) স্কিলকে উন্নত করবে। তো এই সিরিজের সবচেয়ে বড় এই পোস্টটির জন্যে ক্ষমা চেয়ে আজ এখানেই রাখছি, টেকনিকাল ও সংক্ষিপ্ত পোস্ট নিয়ে আবার আসব আগামীতে।