সবাই যে ভাবে উৎসাহ দিচ্ছিলো তাতে আবার লেখার জন্য বসে পড়তে বাধ্য হলাম! যাইহোক আগেরদিন আপনাদের একটা ছোট্ট এসাইনমেন্ট দিয়েছিলাম। সেটার কি খবর?
আবার একটু ভূমিকা রুবি হচ্ছে ইন্টারপ্রেটেড ল্যাংগুয়েজ। এটাকে কম্পাইল করতে হয় না। মানে হচ্ছে আপনি সিম্পলি একটা টেক্সট ফাইল দিয়ে বলবেন যে এটায় যে কোড আছে তা এক্সিকিউট করে দেয়ার জন্য, রুবি ইন্টারপ্রেটের সাথে সাথে আপনার হুকুম পালন করবে। সি বা ওই টাইপ ল্যাংগুয়েজ গুলা কম্পাইল করে নিতে হয়। কম্পাইলের সমস্যা হলো অনেক সময় লাগে কম্পাইল হতে, আউটপুট দেখতেও সময় লাগে। ইন্টারপ্রেটেড ল্যাংগুয়েজ এ সেই সমস্যা নেই। রিয়েলটাইম ফীডব্যাক পাওয়া যাচ্ছে, এতে শেখাটা খুব সহজ এবং ইন্টারএকটিভ হয়। এছাড়া কাজের সময়ও খুব হেল্পফুল হয়। কম্পাইলড ল্যাংগুয়েজ হলে একটা প্রোগ্রামে কোন এরর আছে কিনা সেটা দেখার জন্য প্রত্যেকবার পুরো প্রোগ্রাম কম্পাইল করতে হচ্ছে, যা খুবই সময় সাপেক্ষ, তারপরও আবার প্রোগ্রাম রান করে চেক করতে হবে! ইন্টারপ্রেটেড ল্যাংগুয়েজে আপনি সরাসরি রান করে দেখতে পারবেন কোথায় কি অবস্থা! আরেকটা বড় সুবিধা হলো, প্রোগ্রাম ডিস্ট্রিবিউশন। একটা রুবি প্রোগ্রাম আলাদা প্ল্যাটফর্ম (যেমন ম্যাক/লিনাক্স) এর জন্য আলাদা করে কম্পাইল/টুইক করার দরকার নেই। যে প্রোগ্রাম পনার লিনাক্স মেশিনে চলবে সেটা মোটামুটি ৯৯% শিওর একটা ম্যাশ মেশিনেও চলবে। উইন্ডোজে একটু ঝামেলা করতে পারে, তবে ৮৫%-৯০% রুবি প্রোগ্রাম এজ ইজ উইন্ডোজো রান করবে। কোন পরিবর্তন করার দরকারই হবে না!
তো এখন কথা হচ্ছে কিভাবে আপনার মেশিনকে রুবি এর উপযোগী করবেন। আপনার যে কোন ধরণের মেশিনই হোক, আপনি সেটায় রুবি চালাতে পারবেন। ARM থেকে শুরু করে ম্যাক সব জায়গায় রুবি এর পোর্ট আছে।
তবে রুবি প্রোগ্রামিংয়ের জন্য আমি পার্সোনালি ইউনিক্স বেজড এনভার্ণমমেন্ট (লিনাক্স / বিএসডি / ম্যাক) রিকমেন্ড করবো। আপনি আপনার উইন্ডোজ মেশিনেও কাজ করতে পারবেন আরামসেই। কিন্তু কিছু ঝামেলা হতেই পারে, যেহেতু রুবির জন্মই হয়েছে ইউনিক্স এনভার্ণমমেন্ট মাথায় রেখে! ছোট্ট একটা উদাহরণ দেই, যেমন ইউনিক্স লাইক প্ল্যাটফর্মগুলাতে ডিরেক্টরী পাথ নির্দেশ করটা হয় ফরোয়ার্ড স্ল্যাশ ([inline-code]/[/inline-code]) দিয়ে, কিন্তু উইন্ডোজে ব্যবহার করা হয় ব্যাকস্ল্যাশ ([inline-code][/inline-code])। প্রথমদিকে আপনার উইন্ডোজেও কোন সমস্যা হবে না, তবে এডভান্সড লেভেলে গিয়ে একটু ঝামেলায় পড়তে পারেন। আরেকটা ব্যাপার হলো, আমি নিজে উইন্ডোজ ইউজার না, সো আমাকে প্রবলেম বললেও আমি তেমন একটা হেল্প করতে পারবো না।
ইউনিক্স বেজড এনভার্ণমমেন্ট (লিনাক্স / বিএসডি / ম্যাক) এ রুবি সেটআপ এইগুলা প্রত্যেকটা ডিস্টিবিউশনে আলাদা ভাবে রুবি ইন্সটল করা যায়। যৈমন ম্যাকে বাই ডিফল্ট রুবি আসে। ডেবিয়ান লিনাক্সে [inline-code]apt[/inline-code] দিয়ে ইন্সটল করে নিতে পারবেন। সেন্ডওএস/রেডহ্যাটে এ [inline-code]yum[/inline-code] আর BSD তে [inline-code]pkg/port[/inline-code] দিয়ে ইন্সটল করে নিতে পারবেন খুব সহজেই। কিন্তু আমি সবগুলা আলাদা আলাদা কাভার না করে, একসাথে কাভার করবো। এজন্য আমরা RVM (Ruby Version Manager) নামে একটা টুলস ব্যবহার করবো। প্রথমেই নিশ্চিত করুন আপনার সিস্টেমে Bash, cURL ইন্সটল করা আছে। যেমন FreeBSD তে Bash থাকে না। আবার অনেক লিনাক্স ডিস্টিবিউশনে cURL থাকে না। এছাড়া এক্সট্রা হিসেবে Git ও ইন্সটল করে ফেলতে পারেন। রুবি এর মত আধুনিক টুলস নিয়ে কাজ করবেন আর গিট ইউজ করবে না, সেটা কিভাবে হয়! যাইহোক, সবকিছু রেডি থাকলে এবার আপনার টার্মিনাল ওপেন করে নিচের কমান্ডটা রান করুনঃ
\curl -sSL https://get.rvm.io | bash -s stable
ইন্সটলেশন শেষ হলে এবার এই কমান্ডটা রান করুনঃ
source ~/.rvm/scripts/rvm
ব্যস, হয়ে গেলো! এবার আপনার টার্মিনালে এই কমান্ডটা রান করে দেখুন রুবি ইন্সটলেশন সাকসেসফুল কিনা।
ruby -v
সব ঠিকঠাক থাকলে নিচের মত আউটপুট পাওয়ার কথাঃ
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
আপনার ক্ষেত্রে কিছুটা ভিন্ন হতে পারে, তবে মূল কথা হচ্ছে ইন্সটলড রুবি এর ভার্সন দেখতে পারবেন এটা দিয়ে। আচ্ছা আরেকটা কমান্ড আছে, এটা খুবই গুরুত্তপূর্ণ। টার্মিনালে [inline-code]irb[/inline-code] লিখে এন্টার দিন, আউটপুট মিলিয়ে দেখুনঃ
2.2.1 :001 >
এখানে প্রথম পার্টটা হচ্ছে আপনার রুবি এর ভার্সন নাম্বার। মিলে গেলে এবার [inline-code]exit[/inline-code] লিখে এন্টার দিন!
আপনার কাজ আপাতত শেষ। নিচে দেখুন এডিটর নামে একটা পার্ট আছে, ওটা পড়া শুরু করে দিন।
আর আপনার ইউজার ডিরেক্টরীতে Ruby নামে একটা ফোল্ডার বানিয়ে রাখুন।
mkdir ~/Ruby
এখানেই আমরা আমাদের সকল রুবি কোড সেভ করে রাখবো পরবর্তীতে।
উইন্ডোজে রুবি সেটআপ ওকে, এইবার উইন্ডোজ ইউজাররা এইদিকে আসুন। আপনারা আবার পরে বইলেন না, আমি আপনাদের সতর্ক করি নাই! যাই হোক, এখনো যদি আপনারা শিওর থাকেন যে উইন্ডোজেই শিখবেন তাহলে RubyInstaller থেকে থেকে আপনার পিসির আর্কিটেকচার অনুযায়ী লেটেস্ট ভার্সনটা নামিয়ে নিন। এরপর নরমালি উইন্ডোজে যেভাবে জিনিসপত্র ইন্সটল করে সেভাবে করে ফেলুন। ইন্সটলেশন শেষ হলে [inline-code]cmd[/inline-code] ওপেন করুন। নিচের কমান্ড রান করে দেখুন ঠিকঠাক মত ভার্সন দেখায় কিনা।
ruby -v
অবশ্যই irb কমান্ডও রান করে দেখুন সব ঠিক আছে কিনা। [inline-code]irb[/inline-code] রান করলে নিচের মত আউটপুট দেয়ার কথাঃ
2.2.1 :001 >
সব ঠিক থাকলে [inline-code]exit[/inline-code] লিখে কাজ শেষ করুন।
এই বিষয়ে কোন হেল্প লাগলে ওদের ডকস ঘাটুক প্লীজঃ https://github.com/oneclick/rubyinstaller/wiki/FAQ
আর আপনার ইউজার ডিরেক্টরীতে Ruby নামে একটা ফোল্ডার বানিয়ে রাখুন। এখানেই আমরা আমাদের সকল রুবি কোড সেভ করে রাখবো পরবর্তীতে।
(টেক্সট/কোড) এডিটরস কোড লেখার জন্য যৈ কোন একটা টেক্সট এডিটর হলেই হবে। তবে টেক্সট এডিটরই লাগবে। মাইক্রোসফট অফিসের মত কোন এপ হলে কাজ হবে না। উইন্ডোজে যে নোডপ্যাড আছে এটা দিয়েও হবে। কিন্তু এধরণের এডটর গুলোর একটা সমস্যা হলো, একেবারেই সাদামাটা। আমি মাঝে মাঝে দিনে ৫-৭ ঘন্টা কোড লিখি। সো এত সাদামাটা জিনিস আমার পছন্দ না। Rubyist দের মধ্যে সবচেয়ে জনপ্রিয় এডিটর ছিলো TextMate, কিন্তু এটার ভার্সন ২ আর কখনো আলোর মুখ দেখেনি! সবার জন্য আমার রিকমেন্ডেশন হচ্ছে SublimeText 3 বা Atom এর মত মডার্ণ কোন এডিটর। দুটো এডিটরই খুবই ভালো এবং উইন্ডোজ/লিনাক্স/ম্যাক সব জায়গার জন্য এভেইলএবল। আমার পছন্দ হলো Vim, এটাও রুবিয়িস্টদের পছন্দের একটা এডিটর। তবে এটার ইনিশিয়াল লার্ণিং কার্ভ একটু বড় বিধায় সবার জন্য রিকমেন্ড করা যাচ্ছে না। তবে আগ্রহ পেলে জিনিসটা ঘেটে দেখতে পারেন সময় করে। খুবই পাওয়ারফুল একটা টুল। আমার মতে, Vim যতখানি না একটা এডিটর তারচেয়ে বেশি হচ্ছে টাইপ করার স্টাইল। একবার ইউজডটু হয়ে গেলে যে কোন জায়গায় এটাকে মিস করবেন ফর শিওর!
সারমার্ম আজ থেকে আপনার খুব প্রিয় দুটো জিনিস হচ্ছে Terminal/cmd আর আপনার কোড/টেক্সট এডিটর। এই দুটোর সাথে বন্ধুত্ব করে ফেলুন, প্রোগ্রামার হিসেবে আপনার জীবন অনেক ভালো হবে!
তো জিনিসপত্র নিয়ে রেডি হন। এরপর দিন আমার আসল রুবি কোড নিয়ে ঘাটাঘাটি শুরু করে দিবো! আর কোন সমস্যা হলে কমেন্টে জানাবেন অবশ্যই।
What's on your mind?
17 Comments
VIM নিয়ে মজার এক্সপেরিন্স আছে সহজে একবার খুলে ফেলছিলাম কিন্তু বন্ধ কিভাবে করতে হয় না জানায় আমার সার্ভার রিস্টার্ট দিতে হইছে! ঐ যে একটা ভয় পেয়েছিলাম এখনো ভয় কাটে নাই! যাইহোক খাজুরে আলাপ না করি! ইউনিক্স মানেই টার্মিনাল এর মজা যে ইউনিক্স চালায় টার্মিনাল চালায় নাহ! সে অনেক কিছুই মিস করে! যাইহোক চালায় যান দেখি সিরিজ শেষ করতে পারি নাকি!
So far your writing is up to the mark. You are keeping it simple which is really great and important. Don't change the writing pattern. Don't let people learn the hard way, let them love it first, then they will explore by themselves. Nice initiative. Good luck.
Never mind but this article is claiming compiler the worst thing ever :) Compiler and interpreter both have some advantages and disadvantages you know.
উমম, ওটা আমার ইন্টেনশন ছিলো না। এডভান্টেজ অবশ্যই আছে, ইনসেন স্পীড দরকার হলে কম্পাইল্ড ল্যাংগুয়েজের উপরে কোন কথা নেই। তবে আমি মূলত ওয়েব প্রোগ্রামিংয়ের কনটেক্সট থেকে কথা বলতেছিলাম, আর একেবারেই যারা নতুন শিখতে চায় তাদের জন্য মূলত।
বুঝতেছি না কোনটা ইউজ করবো। সাব্লাইম টেক্সট নাকি ভিম।
ভিম এর সাইট আজগুবি মনে হলো, তাই সাবলাইম টেক্সট ইন্সটল দিলাম। দেখি এবার কতদিন ধৈর্য রাখতে পারি।
সাবলাইম টেক্সট ভালো চয়েজ। ভিম প্রথমদিকে শেখাটা একটু প্যারা লাগতে পারে।
নিয়মিত চাই, আমার ওয়েব প্রোগ্রামিং এক্সপেরিয়েন্স শূন্যের কোঠায়। আপনার পোস্ট দেখে শুরু করে দিলাম :)
Awesome .... আমরা আরও চাই এমন লিখা...
I would say to go with Rubymine, productivity is an important fact and an editor has some roles on this. I adviced my fellow developers to use Rubymine, which specially made for Rubyiest!
I would love to request to share the Ruby installation details using command line without rvm for the first time. Ruby has powerful cli tools and learners should be adopted. Lets make of fun showing the thing a little hard way to make the journey the easier after the end of the day. Please don't mind about my comments, I highly appreciates your journey, I am so excited seeing someone has begun the journey! If you need any help let me know! Thanks.
Sr. Ruby Engineer (at Evatix), & Consultants (Freelance)
RubyMine আমি ইচ্ছে করেই এড়িয়ে গিয়েছি। বেসিক এ বি সি ডি শেখার সময় যতটা লীন থাকা যায় ততই বেটার আমার মতে। আর RVM vs সিস্টেম রিপো এটা একটু কনফিউজিং যদিও। আমি আসলে ঠিক বুঝি নাই এখানে কি মিস করতে পারে ইউজাররা।
মাইন্ড খাওয়ার কিছু নাই, আমি নিজেও শিখতেছি। আর লেখালেখি শুরু করার এটাও একটা উদ্দ্যেশ্য যে, ভুলগুলো বের হওয়া। :)
Great, try the hardest way :)