- রুবি একটি গতিশীল, অবজেক্ট-ওরিয়েন্টেড, বহু-প্যারাডাইম ভাষা যা ডেভেলপারদের উৎপাদনশীলতা এবং সুবিধা সর্বাধিক করার জন্য ডিজাইন করা হয়েছে।
- এর ইকোসিস্টেমে রয়েছে রুবি অন রেল, হাজার হাজার রত্ন, এবং কর্মক্ষমতা এবং নমনীয়তা উন্নত করার লক্ষ্যে বিভিন্ন বাস্তবায়ন এবং ভার্চুয়াল মেশিন।
- রুবি ওয়েব ডেভেলপমেন্ট এবং অটোমেশনে পারদর্শী, পঠনযোগ্য সিনট্যাক্স, শক্তিশালী মেটাপ্রোগ্রামিং এবং একটি অত্যন্ত সক্রিয় বিশ্বব্যাপী সম্প্রদায়ের সাথে।
- রেলস উন্নয়ন ত্বরান্বিত করার জন্য DRY নীতি এবং কনফিগারেশন কনভেনশনের উপর নির্ভর করে, চাহিদাপূর্ণ প্রকল্পগুলিতে রুবির ব্যবহারকে উৎসাহিত করে।
রুবি একটি বিশেষ স্থান অর্জন করেছে উন্নয়নের জগৎ সরলতা, ক্ষমতা এবং অবিশ্বাস্যভাবে সক্রিয় সম্প্রদায়ের সমন্বয়ের জন্য ধন্যবাদ, রুবি একটি জনপ্রিয় ভাষা হয়ে উঠেছে। যদিও এটি সবচেয়ে মূলধারার ভাষা নাও হতে পারে, অনেক জনপ্রিয় অ্যাপ্লিকেশন এবং পরিষেবা রুবি কোড দ্বারা চালিত হয় এবং প্রায়শই, রুবি অন রেল সার্ভার সাইডে চলে।
বছর ধরে, রুবি ইউকিহিরো "ম্যাটজ" মাতসুমোতোর ব্যক্তিগত প্রকল্প থেকে সরে গেছে এটি হাজার হাজার রত্ন, একাধিক ভাষা বাস্তবায়ন এবং ট্রেন্ডসেটিং ফ্রেমওয়ার্ক সহ একটি পরিপক্ক বাস্তুতন্ত্রে পরিণত হয়েছে। আপনি যদি ওয়েব ডেভেলপমেন্ট, টাস্ক অটোমেশনে আগ্রহী হন, অথবা আরও মার্জিত এবং পঠনযোগ্য কোড লিখতে চান, তাহলে এই ভাষা কী অফার করে তা বোঝা অনেক দরজা খুলে দিতে পারে।
রুবির উৎপত্তি এবং ভাষার দর্শন
রুবি ১৯৯০ এর দশকের গোড়ার দিকে জাপানে জন্মগ্রহণ করেন।১৯৯৩ সালের ২৪শে ফেব্রুয়ারী রুবির জন্ম, যখন ইউকিহিরো "ম্যাটজ" মাতসুমোতো একটি নতুন ভাষা নিয়ে কাজ শুরু করেন। তার উদ্দেশ্য ছিল পার্ল, স্মলটক, আইফেল এবং লিস্পের মতো বিভিন্ন ভাষার সেরা বৈশিষ্ট্যগুলিকে একত্রিত করা, তবে প্রোগ্রামারের অভিজ্ঞতাকে অগ্রাধিকার দেওয়া। ১৯৯৫ সালে রুবিকে প্রকাশ্যে উন্মোচন করা হয় এবং নামটি বন্ধুদের মধ্যে একটি অভ্যন্তরীণ রসিকতা ছিল, পার্ল (মুক্তা) এবং রুবি নিয়ে একটি নাটক।
তারপর থেকে, ভাষা বিকশিত হয়েছে, বিভিন্ন শাখা এবং সংস্করণের মধ্য দিয়ে গেছে।১.৮ এবং ১.৯ সিরিজ গুরুত্বপূর্ণ মাইলফলক হিসেবে চিহ্নিত: রুবি ১.৮.৭_p২৪৮ ছিল ১.৮ শাখার শেষ স্থিতিশীল সংস্করণগুলির মধ্যে একটি, যেখানে ১.৯.২_p১৮০ উল্লেখযোগ্যভাবে কর্মক্ষমতা উন্নত করেছে নতুন YARV ভার্চুয়াল মেশিনের জন্য ধন্যবাদ, যা ৩১ ডিসেম্বর, ২০০৬ তারিখে কোড ট্রিতে একীভূত হয়েছিল এবং রুবি ১.৯ নামে প্রকাশিত হয়েছিল। অন্যান্য প্রতিষ্ঠিত ভাষার সাথে গতির ব্যবধান কমাতে এই অগ্রগতি গুরুত্বপূর্ণ ভূমিকা পালন করেছিল।
ম্যাটজের দর্শন সবসময় স্পষ্ট ছিল: রুবি প্রোগ্রামারের উৎপাদনশীলতা এবং আনন্দের জন্য ডিজাইন করা হয়েছেসিস্টেমগুলিকে মেশিনের উপর নয়, মানুষের উপর ফোকাস করা উচিত এই ধারণা অনুসরণ করে, রুবি প্রায়শই "সর্বনিম্ন আশ্চর্য নীতি" এর সাথে যুক্ত হয়েছে, যেন ভাষাটি অভিজ্ঞ ব্যবহারকারীদের বিভ্রান্তি এড়াতে ডিজাইন করা হয়েছে। যাইহোক, ম্যাটজ নিজেই স্পষ্ট করেছেন যে তার আসল রেফারেন্স পয়েন্ট হল "সর্বনিম্ন আশ্চর্য" এর একটি ব্যক্তিগত মান: যদি সামঞ্জস্যপূর্ণ অভ্যন্তরীণ যুক্তি বজায় রাখা হয়, তাহলে যারা এই মানদণ্ডে অভ্যস্ত হয়ে ওঠেন তারা কম অপ্রত্যাশিত আচরণের সম্মুখীন হবেন।
জনসাধারণের আলোচনায়, ম্যাটজ জোর দিয়ে বলেছেন যে তার লক্ষ্য ছিল প্রোগ্রামিং উপভোগ করাতাত্ত্বিক মতবাদ মেনে চলার পরিবর্তে পুনরাবৃত্তিমূলক কাজ এবং বিভ্রান্তি কমানোর ফলে একটি অত্যন্ত অভিব্যক্তিপূর্ণ ভাষা তৈরি হয়েছে, যার নকশা পছন্দগুলি কেউ কেউ খুব স্বাভাবিক বলে মনে করেন এবং অন্যরা প্রথমে কিছুটা বিরক্তিকর বলে মনে করেন, তবে খুব শক্তিশালী অভ্যন্তরীণ সংগতি রয়েছে।
রুবি একটি বস্তু-ভিত্তিক এবং বহু-দৃষ্টান্তমূলক ভাষা হিসেবে
রুবির অন্যতম বৈশিষ্ট্য হল এর চরম বস্তু-ভিত্তিক পদ্ধতি।একেবারে সবকিছুই একটি বস্তু, যার মধ্যে ক্লাস, পূর্ণসংখ্যা, বুলিয়ান, এমনকি শূন্যও রয়েছে। বস্তু মডেলের "বাইরে" কোনও আদিম প্রকার নেই এবং আপনি যে কোনও ফাংশন লিখবেন তা আসলে কোনও বস্তুর সাথে সম্পর্কিত একটি পদ্ধতি।
রুবিতে ভেরিয়েবলগুলি সর্বদা বস্তুর উল্লেখ, বস্তুর নিজেরা নয়এই ভাষাটি গতিশীলভাবে আবদ্ধ উত্তরাধিকার, মডিউলের মাধ্যমে মিক্সিন এবং সিঙ্গেলটন পদ্ধতি প্রদান করে, যা আপনাকে একটি একক উদাহরণের জন্য নির্দিষ্ট আচরণ সংজ্ঞায়িত করতে দেয়। কোনও ঐতিহ্যবাহী একাধিক উত্তরাধিকার নেই, তবে মিক্সিন হিসাবে আমদানি করা মডিউলগুলি অতিরিক্ত জটিলতা ছাড়াই এই ব্যবহারের বেশিরভাগ ক্ষেত্রেই কাজ করে।
উপরন্তু, রুবি বিভিন্ন প্রোগ্রামিং স্টাইল সমর্থন করেএটি এটিকে একটি বহু-প্যারাডাইম ভাষা করে তোলে। আপনি "গ্লোবাল" স্তরে ফাংশন সংজ্ঞায়িত করে (যা আসলে অবজেক্টের পদ্ধতি) প্রক্রিয়াগত-শৈলীর কোড লিখতে পারেন, সম্পূর্ণ অবজেক্ট-ভিত্তিক পদ্ধতি গ্রহণ করতে পারেন, অথবা বেনামী ফাংশন, ব্লক, ক্লোজার এবং ধারাবাহিকতা সহ কার্যকরী কৌশল ব্যবহার করতে পারেন। এই পদ্ধতির সাথে কার্যত প্রতিটি বিবৃতি একটি মান শৃঙ্খল খুব ভালভাবে ফেরত দেয়।
সবচেয়ে উন্নত ভূখণ্ডে, রুবি আত্মদর্শন, প্রতিফলন এবং রূপক প্রথম শ্রেণিরানটাইমে আপনি অবজেক্টগুলি পরিদর্শন করতে পারেন, গতিশীলভাবে পদ্ধতি তৈরি করতে পারেন, বিদ্যমান ক্লাসগুলি পরিবর্তন করতে পারেন, অথবা ফ্লাইতে ইনস্ট্যান্স আচরণ পরিবর্তন করতে পারেন। কার্যকরভাবে ব্যবহার করা হলে, এটি আপনাকে অভ্যন্তরীণ DSL, নমনীয় ফ্রেমওয়ার্ক এবং খুব শক্তিশালী সরঞ্জাম তৈরি করতে দেয়, যদিও কোডবেসকে অতিরিক্ত জটিলতা এড়াতে কিছু শৃঙ্খলার প্রয়োজন হয়।
রুবির টাইপিং গতিশীল। এটি জোরালোভাবে টাইপ করা হয়েছে, তাই আপনাকে স্পষ্ট টাইপ ঘোষণা করতে হবে না, তবে ভাষাটি অনিরাপদ নীরব রূপান্তর সম্পাদন করে না। এটি টাইপ পলিমরফিজম (ডাক টাইপিং) এর উপর নির্ভর করে: যতক্ষণ পর্যন্ত একটি বস্তু প্রত্যাশিত পদ্ধতিতে সাড়া দেয়, ততক্ষণ এটি অন্যটির জায়গায় ব্যবহার করা যেতে পারে। এটি বিভিন্ন স্বাক্ষরের উপর ভিত্তি করে ক্লাসিক ফাংশন ওভারলোডিংয়ের প্রয়োজনীয়তা এড়ায়, যা আমরা স্ট্যাটিক্যালি টাইপ করা ভাষায় দেখতে পাই।
রুবির মূল প্রযুক্তিগত বৈশিষ্ট্য
রুবি দৈনন্দিন ব্যবহারের জন্য ডিজাইন করা বিস্তৃত বৈশিষ্ট্য অফার করে। আধুনিক সফটওয়্যার ডেভেলপমেন্টের। পরিবর্তনশীল স্তরে, ভাষা চারটি স্কোপের মধ্যে পার্থক্য করে: গ্লোবাল, ক্লাস, ইনস্ট্যান্স এবং লোকাল, প্রতিটির নিজস্ব উপসর্গ বা কনভেনশন রয়েছে যা স্পষ্ট করে তোলে যে প্রতিটি ডেটা কোথায় থাকে এবং কীভাবে এটি ব্যবহার করা হয়।
ত্রুটি নিয়ন্ত্রণের জন্য, রুবি সম্পূর্ণ ব্যতিক্রম হ্যান্ডলিং অন্তর্ভুক্ত করেএটি অপ্রত্যাশিত পরিস্থিতির মুখোমুখি হলে শক্তিশালী এবং পঠনযোগ্য কোড লেখা সহজ করে তোলে। পদ্ধতিতে পাস করা ইটারেটর এবং ব্লক (ক্লোজার)ও উল্লেখযোগ্য, যা সংগ্রহগুলি অতিক্রম করার, রূপান্তর প্রয়োগ করার বা পুনর্ব্যবহারযোগ্য লজিকের ছোট ছোট অংশ সংজ্ঞায়িত করার জন্য একটি খুব মার্জিত উপায় প্রদান করে।
টেক্সট নিয়ে কাজ করার ক্ষেত্রে, রুবি স্থানীয়ভাবে রেগুলার এক্সপ্রেশনগুলিকে একীভূত করে পার্লের মতোই একটি সিনট্যাক্সের কারণে, এটি স্ট্রিং ভ্যালিডেশন, পার্সিং এবং ফিল্টারিংয়ের মতো কাজগুলিকে ব্যাপকভাবে সহজ করে তোলে। অপারেটর ওভারলোডিং, স্বয়ংক্রিয় আবর্জনা সংগ্রহ এবং বিভিন্ন ধরণের অপারেটিং সিস্টেমে চলমান ভাষার উচ্চ বহনযোগ্যতার মাধ্যমে এটি আরও উন্নত হয়।
রুবিও অনুমতি দেয় থ্রেড ব্যবহার করে একযোগে সম্পাদনঅনেক ক্লাসিক বাস্তবায়নে (যেমন সংস্করণ ১.৮), এটি অপারেটিং সিস্টেমের পরিবর্তে ইন্টারপ্রেটার দ্বারা পরিচালিত "সবুজ থ্রেড" এর উপর ভিত্তি করে তৈরি হয়েছিল। সময়ের সাথে সাথে, অন্যান্য বাস্তবায়ন এবং আরও উন্নত কনকারেন্সি মডেল আবির্ভূত হয়েছে, তবে সাধারণ ধারণা হল আপেক্ষিক স্বাচ্ছন্দ্যে যুগপত কাজগুলি পরিচালনা করতে সক্ষম হওয়া।
আরেকটি আকর্ষণীয় পয়েন্ট হল শেয়ার্ড লাইব্রেরি এবং DLL-এর গতিশীল লোডিং বেশিরভাগ প্ল্যাটফর্মে, বৃহৎ স্ট্যান্ডার্ড লাইব্রেরি স্ট্যান্ডার্ড হিসেবে আসে, সাথে ডিপেন্ডেন্সি ইনজেকশন এবং রানটাইমে অবজেক্ট পরিবর্তন করার ক্ষমতাও থাকে। ধারাবাহিকতা এবং জেনারেটরের মতো বৈশিষ্ট্যগুলিও অন্বেষণ করা হয়েছে, যা জটিল এক্সিকিউশন ফ্লো মডেল করার সময় আরও নমনীয়তা যোগ করে।
রুবি সিনট্যাক্স এবং অন্যান্য ভাষার সাথে তুলনা
রুবির বাক্য গঠন প্রায়শই পার্ল বা পাইথনের কথা মনে করিয়ে দেয়।কোঁকড়া বন্ধনীর পরিবর্তে কীওয়ার্ড দ্বারা স্পষ্টভাবে চিহ্নিত ব্লক সহ, এবং পঠনযোগ্যতার উপর স্পষ্ট জোর দেওয়া হয়েছে। ক্লাস এবং পদ্ধতিগুলি সংরক্ষিত শব্দ দিয়ে সংজ্ঞায়িত করা হয় যেমন class o defলাইন ব্রেকগুলিকে সাধারণত বাক্যের সমাপ্তি হিসেবে ব্যাখ্যা করা হয়, যদিও উপযুক্ত সময়ে সেমিকোলনও ব্যবহার করা যেতে পারে।
পার্লের বিপরীতে, রুবিতে পরিবর্তনশীল উপসর্গগুলি তাদের ব্যাপ্তি নির্দেশ করে (গ্লোবাল, ইনস্ট্যান্স, ক্লাস, ইত্যাদি) এর ডেটা টাইপের পরিবর্তে। C এর তুলনায়, এটি সিনট্যাকটিক নয়েজ হ্রাস করে এবং পাইথনের তুলনায়, ইন্ডেন্টেশনের কোনও শব্দার্থিক অর্থ নেই: এটি পঠনযোগ্যতার জন্য গুরুত্বপূর্ণ, তবে এটি কোড ব্লক নির্ধারণ করে না।
পাইথন এবং পার্লের মধ্যে সবচেয়ে অদ্ভুত পার্থক্যগুলির মধ্যে একটি হল যে রুবি সকল ইনস্ট্যান্স ভেরিয়েবলকে ব্যক্তিগত রাখে। ক্লাসের মধ্যে। অ্যাক্সেস সর্বদা পদ্ধতির মাধ্যমে হয়, যা অত্যন্ত সংক্ষিপ্তভাবে ঘোষণা করা যেতে পারে attr_reader, attr_writer o attr_accessorযেহেতু এই পদ্ধতিগুলি বন্ধনী ছাড়াই ব্যবহার করা যেতে পারে, তাই কোডের বাকি অংশ পরিবর্তন না করেই কোনও সম্পত্তিতে সরাসরি অ্যাক্সেস থেকে মেথড কলে যাওয়া তুচ্ছ।
উদাহরণস্বরূপ, পাইথনে, যদি আপনি একটি পাবলিক অ্যাট্রিবিউট ব্যবহার থেকে একটি পরিচালিত সম্পত্তিতে স্যুইচ করেন, আপনাকে ক্লাসের অভ্যন্তরীণ কোড পর্যালোচনা করতে হবে। ডেটা অ্যাক্সেস করার পদ্ধতি পরিবর্তন করতে। রুবি সমস্ত ইনস্ট্যান্স ভেরিয়েবলকে ব্যক্তিগত রাখতে বাধ্য করে এবং গেটার এবং সেটার তৈরি করার জন্য একটি খুব সহজ উপায় প্রদান করে সেই প্রাথমিক সিদ্ধান্ত এড়ায়। এটি এই ধারণাটিকে আরও শক্তিশালী করে যে ক্লাসের বাইরে থেকে আপনি বার্তা (কল পদ্ধতি) পাঠান এবং সরাসরি অভ্যন্তরীণ অবস্থা পরিচালনা করেন না।
চরিত্র সমর্থন সম্পর্কে, রুবি দীর্ঘদিন ধরে আংশিক ইউনিকোড সাপোর্ট করে আসছিল।বিশেষ করে পুরোনো সংস্করণগুলিতে, যদিও এটি UTF-8 সামঞ্জস্যতা প্রদান করেছিল। আধুনিক সংস্করণগুলির সাথে, আন্তর্জাতিক ওয়েব এবং অ্যাপ্লিকেশন ডেভেলপমেন্টের বর্তমান মানের সাথে খাপ খাইয়ে নেওয়ার জন্য ইউনিকোড স্ট্রিংগুলির পরিচালনা আরও শক্তিশালী করা হয়েছে।
অফিসিয়াল টুলস, লাইসেন্স এবং ডিপ্লয়মেন্ট ইকোসিস্টেম
অফিসিয়াল রুবি ডিস্ট্রিবিউশনে শুরু থেকেই ব্যবহারিক টুল অন্তর্ভুক্ত থাকে।এবং সবচেয়ে বেশি ব্যবহৃত একটি হল irb (ইন্টারেক্টিভ রুবি শেল)। এই ইন্টারেক্টিভ কমান্ড-লাইন ইন্টারপ্রেটার আপনাকে সম্পূর্ণ প্রকল্প ফাইল তৈরি না করেই কোড পরীক্ষা করতে, ছোট ছোট পরীক্ষা চালাতে বা আচরণ ডিবাগ করতে দেয়।
ওপেন সোর্স পরিচালনা করতে, রুবি তার ইতিহাস জুড়ে বিভিন্ন লাইসেন্সিং মডেল ব্যবহার করেছেঐতিহ্যগতভাবে, দোভাষী এবং লাইব্রেরিগুলি একটি অবিচ্ছেদ্য দ্বৈত লাইসেন্সের অধীনে বিতরণ করা হত: GPL এবং রুবি লাইসেন্স। সংস্করণ 1.9.3 থেকে শুরু করে, একটি ভিন্ন দ্বৈত লাইসেন্স সংমিশ্রণ গৃহীত হয়েছিল: রুবি পাবলিক লাইসেন্সের সাথে দুটি-ধারার BSD লাইসেন্স। এর লক্ষ্য ছিল আইনি জটিলতা ছাড়াই রুবিকে একীভূত করতে চাওয়া কোম্পানি এবং প্রকল্পগুলিকে আরও নমনীয়তা প্রদান করা।
অন্যান্য বহুল ব্যবহৃত ভাষার তুলনায় পারফরম্যান্সের পার্থক্য তৈরিতে অনুপ্রাণিত করেছিল বিভিন্ন ভার্চুয়াল মেশিন এবং রুবি বাস্তবায়নতাদের মধ্যে, JRuby আলাদাভাবে দাঁড়িয়ে আছে, ভাষাটিকে জাভা প্ল্যাটফর্মে নিয়ে এসেছে এবং এর সমগ্র ইকোসিস্টেম, অথবা রুবিনিয়াসের সাথে একীকরণের অনুমতি দিয়েছে, যা Smalltalk ভার্চুয়াল মেশিন দ্বারা অনুপ্রাণিত এবং একটি অত্যন্ত বস্তু-ভিত্তিক এবং অপ্টিমাইজ করা পরিবেশ প্রদানের উপর দৃষ্টি নিবদ্ধ করে।
ভাষার মূল বিকাশকারীরা বিশেষ সহায়তা দিয়েছেন YARV ভার্চুয়াল মেশিনইতিমধ্যেই উল্লেখ করা হয়েছে, এটি ছিল শাখা ১.৯ থেকে পরবর্তী কর্মক্ষমতা উন্নতির ভিত্তি। সামগ্রিকভাবে, এই পরিসরের বাস্তবায়ন রুবিকে বিভিন্ন কার্যকরী পরিবেশ এবং কর্মক্ষমতা প্রয়োজনীয়তার সাথে আরও ভালভাবে খাপ খাইয়ে নিতে সাহায্য করেছে।
ভাষার মূল অংশ ছাড়াও, রুবি ইকোসিস্টেম একাধিক বহিরাগত সম্পদ দ্বারা শক্তিশালী হয়ডেডিকেটেড পোর্টাল, বিভিন্ন ভাষায় ডকুমেন্টেশন, লাইব্রেরি বিতরণের জন্য RubyGems এর মতো সাইট, আঞ্চলিক সম্প্রদায় (যেমন ল্যাটিন আমেরিকা এবং স্পেনের গোষ্ঠী) এবং ম্যানুয়াল যা এমনকি উইকিবুক বা কমিউনিটি রিপোজিটরির মতো প্ল্যাটফর্মেও পাওয়া যেতে পারে।
রুবি বনাম পাইথন: মিল এবং পার্থক্য
যখন কেউ ব্যাকএন্ড ডেভেলপমেন্টের জন্য কোন ভাষা শিখবেন তা নিশ্চিত না হনরুবি এবং পাইথনের মধ্যে তুলনা প্রায় সবসময়ই উঠে আসে। উভয় ভাষাই উচ্চ-স্তরের অনুবাদিত, সাধারণত সার্ভার সাইডে ব্যবহৃত হয় এবং একাধিক প্ল্যাটফর্মে চলে, তাই সাধারণ ব্যবহারে তাদের মধ্যে অনেক মিল রয়েছে।
উন্নয়ন অভিজ্ঞতার দিক থেকে, উভয়ই একটি পরিষ্কার এবং মোটামুটি পঠনযোগ্য বাক্য গঠন প্রদান করেইন্টারেক্টিভ শেল (রুবিতে IRB, পাইথনে REPL), Emacs-এ এডিটিং মোডের সাথে ইন্টিগ্রেশন, এমবেডেড ডকুমেন্টেশন টুল এবং gdb-স্টাইল ডিবাগিংয়ের জন্য সমর্থন। উভয় ক্ষেত্রেই, আমরা গতিশীলভাবে টাইপ করা এবং দৃঢ়ভাবে টাইপ করা বস্তুর কথা বলছি, যা তুলনামূলকভাবে সংক্ষিপ্ত কোড তৈরি করার জন্য ডিজাইন করা হয়েছে।
তবে, গুরুত্বপূর্ণ সূক্ষ্মতা রয়েছে: পাইথনকে প্রায়শই একটি "সাধারণ-উদ্দেশ্যমূলক" ভাষা হিসেবে বিবেচনা করা হয়, ডেটা সায়েন্স, সিস্টেম স্ক্রিপ্টিং, অটোমেশন এবং একাডেমিক পরিবেশে ব্যাপক ব্যবহার সহ, অন্যদিকে রুবি ওয়েব ডেভেলপমেন্টের সাথে আরও স্পষ্টভাবে যুক্ত হয়ে উঠেছে, মূলত রুবি অন রেলের চাপের কারণে।
কাঠামো সম্পর্কে, রুবি মূলত রুবি অন রেলের উপর নির্ভর করে ওয়েব ইকোসিস্টেমে একটি প্রধান রেফারেন্স পয়েন্ট হিসেবে, যদিও অন্যান্যগুলি বিদ্যমান। পাইথন, তার অংশ হিসাবে, জ্যাঙ্গোকে তার সবচেয়ে প্রতিনিধিত্বমূলক ফ্রেমওয়ার্কগুলির মধ্যে একটি হিসাবে ব্যবহার করেছে, তবে এর মধ্যে ফ্লাস্ক, ফাস্টএপিআই এবং আরও অনেক বিকল্প রয়েছে, যা এর বিকল্পগুলির পরিসরকে আরও প্রসারিত করে।
এটাও প্রায়শই বলা হয় যে পাইথনের লাইব্রেরির বিস্তৃত পরিসর রয়েছেবিশেষ করে মেশিন লার্নিং, বৈজ্ঞানিক কম্পিউটিং এবং অটোমেশনের মতো ক্ষেত্রগুলিতে। অন্যদিকে, রুবি অ্যাজাইল ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের ক্ষেত্রে উজ্জ্বল, যেখানে একটি সম্প্রদায় এই ধরণের প্রকল্পগুলিকে ত্বরান্বিত করে এমন সরঞ্জাম তৈরি এবং ভাল ডিজাইন অনুশীলনগুলিকে প্রচার করার উপর অত্যন্ত মনোযোগী।
রুবি কী এবং আজ এটি কীসের জন্য ব্যবহৃত হয়?
ব্যবহারিক দৃষ্টিকোণ থেকে, রুবি একটি গতিশীল, ওপেন-সোর্স ভাষা যা উৎপাদনশীলতার উপর খুব মনোযোগী।এর লক্ষ্য হল প্রোগ্রামিংকে আরও সহজ, আরও উপভোগ্য এবং আরও দক্ষ করে তোলা, অপ্রয়োজনীয় শব্দচয়ন এবং অযৌক্তিক জটিলতা এড়িয়ে চলা। এই কারণেই এটি স্পষ্ট বাক্য গঠন, পঠনযোগ্যতা এবং একটি শক্তিশালী বস্তু-ভিত্তিক পদ্ধতির উপর এত জোর দেয়।
এই সংমিশ্রণটি তৈরি করে রুবি এমন সফ্টওয়্যার তৈরির জন্য বিশেষভাবে আকর্ষণীয় যেখানে পুনরাবৃত্তির গতিকে মূল্য দেওয়া হয়। এবং তাৎক্ষণিকভাবে প্রয়োজনীয়তা পরিবর্তনের সহজতা। ওয়েব অ্যাপ্লিকেশন থেকে শুরু করে অটোমেশন স্ক্রিপ্ট, অভ্যন্তরীণ সরঞ্জাম সহ, এর নমনীয়তা এটিকে বিস্তৃত পরিস্থিতিতে কাজ করতে দেয়।
ওয়েব ক্ষেত্রে, রুবি অন রেলস ভাষার প্রধান প্রদর্শনী হয়েছেরেলগুলি দ্রুত অ্যাপ্লিকেশন তৈরির জন্য কনভেনশন, পূর্বনির্ধারিত কাঠামো এবং একটি অত্যন্ত সুসংহত স্ট্যাক প্রদান করে। পুনরাবৃত্তিমূলক কনফিগারেশনের বেশিরভাগ অংশ পরিচালনা করে, এটি দলগুলিকে অবকাঠামোগত উপাদানগুলিকে ম্যানুয়ালি একত্রিত করার পরিবর্তে ব্যবসায়িক যুক্তির উপর মনোনিবেশ করতে দেয়।
ওয়েব জগতের বাইরে, রুবি প্রায়শই স্ক্রিপ্টিং এবং অটোমেশনের জন্য ব্যবহৃত হয়।এর সংক্ষিপ্ত বাক্য গঠন এবং প্রচুর পরিমাণে উপলব্ধ রত্নগুলির জন্য ধন্যবাদ, ফাইল প্রক্রিয়াকরণ, ডেটা রূপান্তর, পরিষেবা সংহতকরণ বা স্থাপনা প্রক্রিয়া পরিচালনার জন্য স্ক্রিপ্ট তৈরি করা সহজ। অনেক ক্ষেত্রে, একটি ছোট রুবি স্ক্রিপ্ট লেখা আরও জটিল সমাধানের আশ্রয় নেওয়ার চেয়ে বেশি সুবিধাজনক।
সাধারণভাবে, রুবি ছোট, চটপটে প্রকল্প এবং বৃহত্তর এন্টারপ্রাইজ অ্যাপ্লিকেশন উভয়ের জন্যই উপযুক্ত।দলটি যদি তার দর্শন এবং আশেপাশের বাস্তুতন্ত্রের সাথে স্বাচ্ছন্দ্য বোধ করে, তাহলে এর পঠনযোগ্যতা এবং ধারাবাহিকতা দীর্ঘমেয়াদে সুস্থ কোডবেস বজায় রাখতে সাহায্য করে যখন সর্বোত্তম অনুশীলনগুলি অনুসরণ করা হয়।
রুবি ভাষার মূল সুবিধা
রুবির সবচেয়ে মূল্যবান সুবিধাগুলির মধ্যে একটি হল কোড পঠনযোগ্যতা।সিনট্যাক্সটি এমনভাবে ডিজাইন করা হয়েছে যাতে প্রোগ্রামগুলি এক ধরণের কাঠামোগত ছদ্ম-ইংরেজির সাথে সাদৃশ্যপূর্ণ হয়, যা লেখক এবং পাঠক উভয়ের জন্যই তাদের ব্যবহারকারী-বান্ধব করে তোলে। এটি ডেভেলপারদের মধ্যে সহযোগিতা উন্নত করে এবং রক্ষণাবেক্ষণ খরচ কমায়।
দ্বিতীয়ত, রুবি খুব দ্রুত বিকাশের সুযোগ দেয়।একই কার্যকারিতা অর্জনের জন্য, সাধারণত বেশি ভার্বোজ ভাষার তুলনায় কম লাইন কোডের প্রয়োজন হয়। এর সাথে যোগ করুন রেলের "নিজেকে পুনরাবৃত্তি করবেন না" দর্শন এবং এর ডিফল্ট নিয়মাবলীর ব্যবহার, এবং ধারণা থেকে একটি কার্যকরী প্রোটোটাইপ তৈরিতে সময় বেশ কম হতে পারে।
আরেকটি শক্তিশালী দিক হলো গভীর বস্তুর অভিযোজনএটি যুক্তিকে আরও ভালোভাবে গঠন করতে, উপাদানগুলির পুনঃব্যবহারকে উৎসাহিত করতে এবং আরও মডুলার সিস্টেম তৈরি করতে সাহায্য করে। ক্লাস, মডিউল, মিক্সিন এবং মেটাপ্রোগ্রামিং একত্রিত হয়ে অত্যন্ত অভিব্যক্তিপূর্ণ সমাধান তৈরি করে, তবে শর্ত থাকে যে নির্দিষ্ট স্থাপত্য নীতিগুলি বজায় রাখা হয়।
La রুবি সম্প্রদায় খুবই সক্রিয়। এবং এটি কার্যত যেকোনো প্রয়োজন মেটাতে বিশাল রত্ন (প্যাকেজড লাইব্রেরি) তৈরি করেছে: প্রমাণীকরণ, পরীক্ষা, API ইন্টিগ্রেশন, তৃতীয় পক্ষের পরিষেবা, স্থাপনার সরঞ্জাম এবং আরও অনেক কিছু। এছাড়াও, টিউটোরিয়াল, ডকুমেন্টেশন এবং ফোরাম রয়েছে যেখানে সাহায্য খুঁজে পাওয়া সহজ। পরীক্ষা-চালিত উন্নয়ন.
অবশেষে, রুবিতে মেটাপ্রোগ্রামিং খুব নমনীয় ডিজাইনের দরজা খুলে দেয়রানটাইমে কোডটি পরিদর্শন এবং পরিবর্তন করা যেতে পারে, যার ফলে আপনি DSL সংজ্ঞায়িত করতে, পুনরাবৃত্তিমূলক প্যাটার্নগুলি স্বয়ংক্রিয় করতে এবং পরিস্থিতি অনুসারে ক্লাস বা মডিউলগুলির আচরণকে অভিযোজিত করতে পারবেন। এই ক্ষমতা, বিজ্ঞতার সাথে ব্যবহার করা হলে, অন্যান্য ভাষায় যথেষ্ট বেশি কোডের প্রয়োজন হয় এমন কাজগুলিকে ব্যাপকভাবে সহজ করে তোলে।
রুবি অন রেল এবং রুবি ইকোসিস্টেমে এর ভূমিকা
রুবি অন রেলস হল সেই কাঠামো যা রুবিকে বিশ্বব্যাপী মানচিত্রে স্থান দিয়েছেওয়েব অ্যাপ্লিকেশন তৈরি ত্বরান্বিত করার জন্য সরঞ্জামের একটি সেট হিসেবে জন্মগ্রহণকারী, Rails দুটি মৌলিক নীতির উপর নির্মিত হয়েছিল: "নিজেকে পুনরাবৃত্তি করবেন না" এবং "কনভেনশন ওভার কনফিগারেশন"।
অনুশীলনে, এর অর্থ এটি রেলস নিয়মের উপর ভিত্তি করে আপনি কী করতে চান তা অনুমান করার চেষ্টা করে।এটি আপনার প্রচুর স্পষ্ট কনফিগারেশন সাশ্রয় করে। আপনি যদি এই নিয়মগুলি অনুসরণ করেন, তাহলে আপনি ন্যূনতম কোডের সাথে খুব দ্রুত অগ্রগতি করতে পারবেন। একটি কার্যকরী অ্যাপ্লিকেশন তৈরি করার জন্য আপনার যা যা প্রয়োজন তার প্রায় সবকিছুই রেলে রয়েছে: ফোল্ডার স্ট্রাকচার, রাউটিং সিস্টেম, ভিউ ইঞ্জিন, ডাটাবেস অ্যাক্সেস, মাইগ্রেশন এবং আরও অনেক কিছু।
এই পদ্ধতির জন্য ধন্যবাদ, রেলস আরও কার্যকারিতা অর্জনের জন্য কম কোড লেখা সম্ভব করেছে। অন্যান্য অনেক কাঠামোর তুলনায়। এই "মতামতযুক্ত সফ্টওয়্যার" যুক্তি দেয় যে কাজ করার একটি পছন্দনীয় উপায় আছে, এবং একটি ধারাবাহিক এবং উৎপাদনশীল কর্মপ্রবাহ প্রদানের জন্য এটির উপর নির্ভর করে, যা অন্যান্য আধুনিক কাঠামোকে অনুপ্রাণিত করেছে।
রেলের সাথে কাজ করার জন্য প্রয়োজনীয় প্রযুক্তিগুলির মধ্যে রয়েছে রুবি ভাষা নিজেই, লাইব্রেরি ম্যানেজার হিসেবে রুবিজেমস এবং একটি এসকিউএল ডাটাবেসসেখান থেকে, প্রকল্পের চাহিদা অনুসারে অন্যান্য উপাদান (ওয়েব সার্ভার, ক্যাশিং সিস্টেম, সার্চ ইঞ্জিন ইত্যাদি) যোগ করা যেতে পারে।
রেলের আসল প্রভাব দেখা যায় যে প্রাথমিক দিনগুলিতে টুইটারের মতো প্রধান পরিষেবা, Airbnb, Groupon, Shopify, GitHub, অথবা SoundCloud তারা রুবি এবং রুবি অন রেল ব্যবহার করেছে কোন না কোনভাবে। এটি প্রমাণ করে যে স্ট্যাকটি এমন অ্যাপ্লিকেশন তৈরির জন্য পুরোপুরি বৈধ যা কার্যকারিতা এবং স্কেলেবিলিটি উভয়েরই দাবি করে।
রুবি সহ ডেভেলপমেন্ট পরিবেশ এবং পূর্ব-কনফিগার করা প্যাকেজ
আরও ব্যবহারিক স্তরে, অনেক ক্লাউড প্ল্যাটফর্ম রুবি আগে থেকে ইনস্টল করা টেমপ্লেট অফার করে। যাতে আপনি প্রায় তাৎক্ষণিকভাবে কাজ শুরু করতে পারেন। একটি সাধারণ উদাহরণ হল একটি সার্ভার ইমেজ থাকা, উদাহরণস্বরূপ CentOS 7-এ, যেখানে ইতিমধ্যেই Ruby, Rails এবং মাত্র কয়েকটি ক্লিকেই ওয়েব অ্যাপ্লিকেশন স্থাপনের জন্য প্রয়োজনীয় সবকিছু অন্তর্ভুক্ত রয়েছে।
এই প্যাকেজগুলিতে সাধারণত থাকে রুবি ভাষা, রুবিজেমস এবং রুবি অন রেলস গিট এবং সাবভার্সনের মতো সংস্করণ নিয়ন্ত্রণ সরঞ্জামগুলির পাশাপাশি কনফিগার করা হয়েছে, এবং IDE নির্বাচনএছাড়াও, উৎপাদন পরিবেশের জন্য SQLite এর মতো হালকা ডাটাবেস এবং MySQL এর মতো আরও শক্তিশালী পরিচালক রয়েছে।
সার্ভার বিভাগে, এটি খুঁজে পাওয়া সাধারণ পূর্বনির্ধারিত অ্যাপাচি বা এনগিনেক্স অ্যাপ্লিকেশনগুলি পরিবেশন করার জন্য, অন্যান্য প্রকল্পের সাথে সামঞ্জস্যপূর্ণ হলে অথবা বিদ্যমান অবকাঠামোর পুনঃব্যবহারের প্রয়োজন হলে PHP এবং phpMyAdmin ব্যবহার করা হয়। কিছু স্ট্যাকে উন্নত অনুসন্ধান কার্যকারিতা বাস্তবায়নের জন্য Sphinx এর মতো সার্চ ইঞ্জিনও অন্তর্ভুক্ত থাকে।
এর সাথে, রেল ইকোসিস্টেমের জন্য নির্দিষ্ট লাইব্রেরি ইনস্টল করা আছে যেমন নোকোগিরি (এক্সএমএল/এইচটিএমএল প্রসেসিং), আরম্যাগিক (ইমেজ ম্যানিপুলেশন), রেক (অটোমেশন টাস্ক), মংরেল বা থিন অ্যাপ্লিকেশন সার্ভার হিসেবে, এবং সাধারণ উদ্দেশ্যে যেমন ইমেজম্যাগিক, ওপেনএসএসএল, সিআরএল বা ওপেনএলডিএপি প্যাকেজও ব্যবহার করা যেতে পারে।
এই ধরণের ছবি এবং টেমপ্লেট এগুলি ডেভেলপার এবং কোম্পানিগুলির কাছে খুবই আকর্ষণীয়। তারা কোড লেখার উপর মনোযোগ দিতে চায়, পরিবেশের প্রতিটি অংশকে শুরু থেকে কনফিগার করার জন্য সময় ব্যয় করার উপর নয়। বিশেষ করে স্টার্টআপগুলির জন্য, এই প্রাথমিক সময় সাশ্রয় যথেষ্ট পার্থক্য আনতে পারে।
রুবি ডেভেলপার এবং কমিউনিটি প্রোফাইল
রুবি এমন ব্যবহারকারীদের আকর্ষণ করে যারা উৎপাদনশীলতা, পরিষ্কার কোড এবং মার্জিত সমাধানকে মূল্য দেয়।অনেক ওয়েব ডেভেলপার যারা রেল বেছে নেন তারা কনফিগারেশনের চেয়ে প্রচলিত দর্শনের সাথে এবং প্রতিটি প্রকল্পে চাকা পুনরায় উদ্ভাবন না করার ধারণার সাথে ভালভাবে খাপ খায়।
রুবি এবং রেলস সম্প্রদায়গুলি সারা বিশ্বে ছড়িয়ে পড়েছে, ব্যবহারকারী গোষ্ঠী, সম্মেলন এবং স্থানীয় সমিতিগুলির সাথে স্প্যানিশ ভাষাভাষী দেশ এবং আরও অনেক জায়গায়। ভাষাটির জন্য একচেটিয়াভাবে নিবেদিত পোর্টাল, স্বেচ্ছাসেবকদের দ্বারা রক্ষণাবেক্ষণ করা ভাণ্ডার এবং ইংরেজি এবং স্প্যানিশ উভয় ভাষায় উপলব্ধ প্রশিক্ষণ সংস্থান রয়েছে।
সমান্তরাল, রুবি প্রশিক্ষণ ইকোসিস্টেম ক্রমবর্ধমান হচ্ছেরুবি এবং রেলকে মূল প্রযুক্তি হিসেবে অন্তর্ভুক্ত করে এমন কোর্স, মাস্টার্স ডিগ্রি এবং বিশেষায়িত ওয়েব ডেভেলপমেন্ট প্রোগ্রাম অফার করে, এই স্ট্যাকে অভিজ্ঞতা সম্পন্ন পেশাদারদের চাহিদা প্রবল, বিশেষ করে যেসব কোম্পানি অ্যাজিল ডেভেলপমেন্ট চক্র এবং সহজে রক্ষণাবেক্ষণযোগ্য ডিজিটাল পণ্যকে মূল্য দেয়।
যদিও স্প্যানিশ বাজারে, অন্যান্য বিস্তৃত ভাষার তুলনায় এর উপস্থিতি কম হতে পারে।এর অর্থ হল নির্দিষ্ট কিছু ক্ষেত্রে সরাসরি প্রতিযোগিতা কম। যারা ভাষার দর্শন উপভোগ করেন, তাদের জন্য এটি বিশেষীকরণের জন্য একটি আকর্ষণীয় সুযোগ হতে পারে।
প্রবেশ স্তর সম্পর্কে, রুবিকে বেশ নতুনদের জন্য উপযুক্ত বলে মনে করা হয়এর সিনট্যাক্স কিছুটা পাইথনের মতো, কোডটি সাধারণত বেশ পরিষ্কার, এবং ডাটাবেস সংযোগ বা রেলের মতো ফ্রেমওয়ার্কের কনফিগারেশন খুব ভালভাবে নথিভুক্ত। প্রোগ্রামিংয়ে নতুন অনেক ডেভেলপার সরাসরি রুবি দিয়ে শুরু করেন এবং খুব গভীর পূর্ব জ্ঞান ছাড়াই দরকারী প্রকল্প তৈরি করতে সক্ষম হন।
রুবি এখনও সবচেয়ে সম্মানিত প্রোগ্রামিং ভাষাগুলির মধ্যে একটি। যারা এটি প্রতিদিন ব্যবহার করেন তাদের দ্বারা, পঠনযোগ্যতা, শক্তি এবং একটি অত্যন্ত পরিপক্ক ওয়েব ইকোসিস্টেমের সমন্বয়ে, তাই এটি এমন প্রকল্পগুলির জন্য একটি শক্ত বাজি হিসাবে রয়ে গেছে যেগুলিকে প্রযুক্তিগত মানের ত্যাগ ছাড়াই দ্রুত বাজারে আসতে হবে।
সুচিপত্র
- রুবির উৎপত্তি এবং ভাষার দর্শন
- রুবি একটি বস্তু-ভিত্তিক এবং বহু-দৃষ্টান্তমূলক ভাষা হিসেবে
- রুবির মূল প্রযুক্তিগত বৈশিষ্ট্য
- রুবি সিনট্যাক্স এবং অন্যান্য ভাষার সাথে তুলনা
- অফিসিয়াল টুলস, লাইসেন্স এবং ডিপ্লয়মেন্ট ইকোসিস্টেম
- রুবি বনাম পাইথন: মিল এবং পার্থক্য
- রুবি কী এবং আজ এটি কীসের জন্য ব্যবহৃত হয়?
- রুবি ভাষার মূল সুবিধা
- রুবি অন রেল এবং রুবি ইকোসিস্টেমে এর ভূমিকা
- রুবি সহ ডেভেলপমেন্ট পরিবেশ এবং পূর্ব-কনফিগার করা প্যাকেজ
- রুবি ডেভেলপার এবং কমিউনিটি প্রোফাইল