آموزش روبی (Ruby)

آموزش روبی

در این صفحه می خوانید:

معرفی زبان روبی (Ruby)

روبی یک زبان برنامه نویسی تفسیر شده، سطح بالا و همه منظوره و زبان شی گرا خالص است. روبی دارای سینتکس مشابهی با بسیاری از زبان های برنامه نویسی مانند سی (C) و جاوا (Java) است، بنابراین برنامه نویسان جاوا و C برای یادگیری راحت هستند. عمدتا از تمامی سیستم عامل هایی مانند ویندوز، مک، لینوکس پشتیبانی می کند. به تعبیر دیگر یک زبان اسکریپت تفسیری است که بدون اینکه برنامه را به دستورالعمل های زبان ماشین کامپایل کند در بسیاری از پیاده سازی های آن مستقیما و آزادانه دستورات را اجرا می کند. برنامه نویسان روبی نیز به RubyGems قدرتمند دسترسی دارند که یک فرمت استاندارد برای برنامه های Ruby و کتابخانه ها را فراهم می کند. شرکت هایی مانند توییتر و Soundcloud، Goodreads و Kickstarter در زمینه محصولات خود از روبی استفاده می کنند.

ماتسوموتو گفته است که روبی برای افزایش بهره وری برنامه نویسان و سرگرمی طراحی شده است و به دنبال اصول طراحی رابط کاربری خوب است. در بحث Google Tech در سال 2008، ماتسوموتو همچنین اظهار داشت: "امیدوارم روبی به هر برنامه نویس در جهان کمک کند تا تولید کننده شود و از برنامه نویسی لذت ببرد و خوشحال شود. این هدف اولیه زبان روبی است." او همچنین تاکید می کند که طراحی سیستم ها نیاز به تاکید بر نیازهای انسانی دارد نه کامپیوتر. اغلب مردم، به ویژه مهندسان کامپیوتر، بر روی ماشین ها تمرکز می کنند. آنها فکر می کنند، با انجام این کار، ماشین با سرعت بیشتری کار می کند و دستگاه به طور موثر تر به اجرا در خواهد آمد." آنها روی ماشین ها تمرکز می کنند. اما در حقیقت، ما باید بر انسان ها تمرکز کنیم و اینکه چگونه انسان ها را در مورد برنامه نویسی یا کارکرد دستگاه ها سرپرستی کنیم. ما اساتید هستیم و ماشین ها خدمه هستند.

تاریخچه زبان روبی (Ruby)

روبی توسط Yukihiro Matsumoto یا "ماتس" در ژاپن در اواسط دهه 1990 ایجاد شد. این برنامه برای بهره وری بیشتر برنامه نویس طراحی شده است و این ایده که برنامه نویسی برای برنامه نویس ها باید سرگرم کننده باشد. Ruby همچنان محبوبیت خود را برای استفاده از آن در توسعه برنامه های وب افزایش می دهد. فریمورک روبی آن ریلز ساخته شده با زبان روبی توسط دیوید هانسون، لذت برنامه نویسی در روبی را به بسیاری از مردم معرفی کرد. روبی دارای یک جامعه پر جنب و جوش است که از مبتدی ها حمایت می کند و مشتاق تولید کد با کیفیت بالا است.

معماری زبان روبی (Ruby)

نحو روبی عموما شبیه پرل و پایتون است. تعریف کلاس ها و متد ها توسط کلمات کلیدی انجام می شوند. بارزترین تفاوت روبی از سی و پرل این است که کلمات کلیدی (بجای براکت) برای تعریف بلوک‌های کد استفاده می‌شوند. در مقایسه با پرل متغیرها الزاماً با یک علامت خاص شروع نمی‌شوند و وقتی از چنین علائمی استفاده شود علامت حوزه دید متغیر را تغییر می‌دهد. همچنین برای مقاصد عملی، تفاوت بین expressions و statements وجود ندارد. سطر جدید به‌عنوان پایان یک جمله بکار برده می‌شود در حالی که برای این کار می‌توان از یک سمی کالون (;) نیز استفاده کرد. تورفتگی‌ها بر خلاف پایتون معنی خاصی ندارند.

یکی از تفاوت ها با پایتون و پرل این است که روبی تمام متغیرهای نمونه خود را به طور کامل به کلاس نگه می دارد و تنها از طریق روش های دسترسی attr_writer، attr_reader و غیره آنها را به نمایش می گذارد. بر خلاف روش های Getter و Setter در زبان های دیگر مانند ++C و جاوا روش های دسترسی در روبی را می توان با استفاده از یک خط کد از طریق metaprogramming ایجاد کرد. با این حال روش های دسترسی می توانند به صورت سنتی ++C و جاوا نیز ایجاد شوند. طراحی روبی باعث شده است همه متغیرهای نمونه به صورت خصوصی باشند، بلکه یک راه ساده برای اعلام مجموعه و دریافت روش ها را فراهم می کند. این در راستا این ایده مطرح می شود که در روبی، هرگز به طور مستقیم به اعضای داخلی یک کلاس از خارج از کلاس دست نخواهد یافت و در عوض، یک پیام به کلاس می فرستد و یک پاسخ دریافت می کند.

ویژگی های زبان روبی (Ruby)

با وجود اینکه طراحی روبی بر اصل عدم غافلگیری استوار است، به‌طور طبیعی برخی امکانات آن از زبان‌هایی مانند سی و پرل متفاوت است. نام‌هایی که با حرف بزرگ شروع می‌شوند به عنوان ثابت (constant) در نظر گرفته می‌شوند، بنابراین متغیرهای محلی بایستی با حروف کوچک آغاز شوند. در مورد سرعت، عملکرد روبی در قیاس با بسیاری از زبان‌های کامپایل شده پایین‌تر است (همانند هر زبان تفسیر شده دیگر) و همچنین در قیاس با زبان‌های اسکریپتی اصلی مانند پرل و پایتون همین حالت وجود دارد. هرچند که در نسخه‌های آینده روبی به صورت بایت کد (bytecode) کامپایل خواهد شد و بر روی YARV مخفف (Yet Another Ruby VM) اجرا خواهد شد.

در حال حاضر حافظه بکار رفته در برنامه‌های نوشته شده در روبی کمتر از حافظه بکار رفته در همان برنامه‌ها که با پرل و پایتون نوشته شده‌اند، است. حذف پرانتزهای متدها در روبی ممکن است به نتایج غیرمنتظره‌ای در متدهایی با چند آرگومان منجر شود. توجه کنید که توسعه دهندگان روبی اشاره کرده‌اند که حذف پرانتزها در متدهایی با چند آرگومان در آینده ممنوع خواهد شد. در هر صورت حذف پرانتزها در متدهای تک آرگومان توصیه می‌شود.

از دیگر ویژگی های روبی می توان به موارد زیر اشاره کرد:

  • کاملاً شی گرا
  • داینامیک
  • نحو کوتاه و انعطاف‌پذیر
  • چهار سطح از حوزه دید متغیر شامل global, class ,instance ,local
  • پشتیبانی از iterators و closures بر اساس تبادل بلوک‌های کد
  • پشتیبانی محلی از regular expressions (شبیه پرل) در سطح زبان
  • سربارگزاری عملگرها
  • جمع‌آوری زباله خودکار
  • پیاده‌سازی در همه سیستم‌عامل اصلی
  • پشتیبانی شراکتی از multi-threading در تمام پلتفرم‌های با استفاده از green threads
  • پشتیبانی کامل از یونیکد و رمزنگاری‌های شخصیت چند گانه
  • کتابخانه‌های اشتراکی DLL در اکثر پلتفرمها
  • اتصال بومی API ها در C
  • پوسته تعاملی روبی (REPL)
  • بسته مدیریت متمرکز از طریق RubyGems
  • کتابخانه استاندارد بزرگ
  • قابلیت continuations و generators

مفاهیم زبان روبی (Ruby)

روبی شی گرا است: هر مقدار یک شی است، از جمله کلاس ها و نمونه هایی از مواردی که بسیاری از زبان های دیگر آنها را بدوی معرفی می کنند (مانند عدد صحیح، بولین و "تهی"). متغیرها همیشه به اشیاء اشاره می کنند. هر تابع یک متد است و متد ها همیشه به یک شی اشاره می کنند. متد های تعریف شده در سطح بالا تبدیل به متد هایی برای کلاس Object می شوند. از آنجا که این کلاس اجداد هر کلاس دیگر است، چنین متد هایی را می توان در هر شی فراخوانی کرد. آنها همچنین در همه scope ها قابل مشاهده هستند، و به طور مؤثر به عنوان متد "گلوبال" عمل می کنند. روبی از وراثت با متد اعزام پویا، mixins و روش های مجرد پشتیبانی می کند (متعلق به آن است و به جای اینکه در کلاس تعریف شود، یک نمونه واحد است). گرچه روبی از وراثت چندگانه پشتیبانی نمی کند، کلاس ها می توانند ماژول ها را به عنوان mixins وارد کنند.

روبی به عنوان یک زبان برنامه نویسی چند پارادایم توصیف شده است: این برنامه نویسی رویه ای را میسر می سازد (تعیین توابع / متغیرهای خارج از کلاس باعث می شود تا آنها بخشی از ریشه شوند، "خود" شی) با برنامه نویسی شی گرا (همه چیز یک شی باشد) یا برنامه نویسی تابعی باشد. این زبان از introspection،reflection و metaprogramming و همچنین پشتیبانی از موضوعات مبتنی بر interpreter پشتیبانی می کند. Ruby از تایپ پویا برخوردار است و از چند شکلی پارامتری پشتیبانی می کند. سینتکس Ruby، شبیه به پرل است و از لحاظ معنایی مشابه Smalltalk است، اما با پایتون تفاوت زیادی دارد.

کاربرد زبان روبی (Ruby)

Ruby بیشتر برای ساخت برنامه های وب استفاده می شود. با این حال، بنابراین بسیاری از کاربردهای دیگر مانند تحلیل داده (Data Analysis)، نمونه سازی اولیه و اثبات مفاهیم را دارد. احتمالاً بارزترین پیاده سازی از روبی فریمورک وب روبی آن ریلز است که با Ruby ساخته شده است. Homebrew، ابزاری بسیار محبوب برای نصب بسته های نرم افزاری بر روی macOS، همچنین در روبی نوشته شده است. نرم افزار امنیتی Metasploit نیز وجود دارد که به شما امکان می دهد وب سایت ها و برنامه های کاربردی را برای چگونگی دستیابی به آنها به آسانی آزمایش کنید.

می توانید درست مثل کاربرد آنچه که از هر زبان برنامه نویسی عمومی استفاده می کنید، از Ruby استفاده کنید. چند نمونه شامل برنامه های وب، سرورهای وب، سیستم های نرم افزاری، کار پایگاه داده، تهیه نسخه پشتیبان، تجزیه، حتی زیست شناسی و پزشکی خواهد بود. بنابراین می توانید از Ruby برای انجام کارهای زیادی استفاده کنید. این امکان را برای شما فراهم می کند تا شروع به کار کنید، برخی ایده ها را امتحان کنید و اینکه آیا به یک زبان تخصصی تر نیاز دارید یا نه، کمک کند.

مزایا و معایب زبان روبی (Ruby)

Ruby یک زبان برنامه نویسی همه منظوره است که برای ساختن وب سایت های بزرگی مانند گیت هاب (GitHub) و Shopify استفاده شده است.

مزایای زبان روبی (Ruby)

  • سینتکس

Ruby توسط توسعه دهندگان نرم افزار و بهره وری از آنها در mind ایجاد شده است. به همین دلیل سادگی و خوانایی ویژگی های اصلی این زبان برنامه نویسی است. شما به راحتی می توانید کد نوشته شده در روبی را درک کنید.

  • فرآیند توسعه سریع با Gems

Ruby gems کتابخانه های گسترده ای هستند که عملکردهای خاصی را برای برنامه های وب شما ایجاد می کنند. تقریباً برای هر کار می توانید یک راه حل مناسب پیدا کنید. در نتیجه، آنها زمان لازم برای توسعه وب را به میزان قابل توجهی کاهش می دهند. هم اکنون 153،841 gems وجود دارد و این تعداد مرتبا در حال رشد است.

  • جامعه مشتاق

این یکی از ویژگی های بارز روبی است. اعضای فعال دائم در حال نوشتن راهنماهای فنی دقیق و ایجاد درس هستند. آنها همچنین کنفرانس ها و جلسات مختلفی را برگزار می کنند که در آن رمزگذارها می توانند تجربه خود را به اشتراک بگذارند و به یافتن بهترین راه حل برای موضوعات پروژه شما کمک می کنند.

  • روبی زبانی شی گرا است.

شی گرایی یکی دیگر از مزایای بزرگ روبی است. این ویژگی باعث می شود که توسعه نرم افزار، دیباگینگ، استفاده مجدد و نگهداری نرم افزار نسبت به سایر زبان ها آسانتر شود. در نتیجه، توسعه دهندگان برای پیاده سازی عملکرد مورد نیاز به زمان کمتری نیاز دارند. آنها می توانند در عوض بر آنچه که محصولات نرم افزاری خود را منحصر به فرد می کند، تمرکز کنند.

معایب زبان روبی (Ruby)

  • محبوبیت کمتری در مقایسه با سایر زبان های برنامه نویسی دارد.
  • تعداد توسعه دهندگان روبی به طور پیوسته در حال افزایش است. با این حال، این زبان برنامه نویسی هنوز در پشت Java و PHP قرار دارد.
  • سرعت اجرا کند است.

تحلیل داده (Data Analysis) با روبی (Ruby)

تحلیل داده (Data Analysis)

تجزیه و تحلیل داده ها فرایندی برای بازرسی، پاکسازی، تبدیل و مدل سازی داده ها با هدف کشف اطلاعات مفید، اطلاع رسانی در مورد نتیجه گیری و حمایت از تصمیم گیری است. تجزیه و تحلیل داده ها دارای چندین جنبه و رویکرد است که شامل تکنیک های متنوعی تحت نام های مختلف است و در حوزه های مختلف اقتصادی، علمی و علوم اجتماعی مورد استفاده قرار می گیرد. در دنیای تجارت امروز، تجزیه و تحلیل داده ها در تصمیم گیری علمی و کمک به کسب و کار موثرتر عمل می کند.

daru (تجزیه و تحلیل داده ها در Ruby) یک کتابخانه برای ذخیره سازی، تجزیه و تحلیل، دستکاری و ویژوال سازی داده ها در روبی است.

نمونه کد های زبان روبی (Ruby)

مثال کلاسیک Hello world:

 puts "Hello World!"

ایجاد و استفاده از یک آرایه:

a = [1, 'hi', 3.14, 1, 2, [4, 5]]
 a[2]                      # 3.14
 a.reverse                 # [[4, 5], 2, 1, 3.14, 'hi', 1]
 a.flatten.uniq            # [1, 'hi', 3.14, 2, 4, 5]

کد زیر یک کلاس بنام Person را تعریف می‌کند.

class Person
   def initialize(name, age)
     @name, @age = name, age
   end

def <=>(person) @age <=> person.age end

def to_s "#{@name} (#{@age})" end

attr_reader :name, :age end

group = [ Person.new("John", 20), Person.new("Markus", 63), Person.new("Ash", 16) ]

puts group.sort.reverse

آیا این نوشته را دوست داشتید؟
teamtreehouse-build-an-address-book-in-ruby

آموزش ساخت Address Book در روبی


در این دوره، شما با استفاده از Ruby یک برنامه Address Book خط فرمان ساده ایجاد خواهید کرد. شما می توانید از مهارت های زیادی که در دوره های قبلی آموخته...

1398/10/26 379 بازدید
teamtreehouse-ruby-basics

آموزش مبانی Ruby


روبی یک زبان برنامه نویسی با تمرکز بر سادگی و بهره وری است. روبی یک سینتکس زیبا دارد که قابل خواندن است و نوشتن آن آسان می باشد. در این دوره، ما یاد خ...

1398/10/20 541 بازدید
skillshare-intro-to-ruby-for-game-development

معرفی روبی برای توسعه بازی


طراحی و توسعه بازی با زبان برنامه نویسی روبی سرگرم کننده و عالی است. در این دوره با استفاده از کتابخانه Gosu برای روبی، بازی سفینه فضایی و wack-a-mole...

1398/04/07 1189 بازدید
teamtreehouse-ruby-modules-include-and-extend

آموزش ماژول های روبی - Include و Extend


در این کارگاه با تفاوت های بین Include و Extend در هنگام کار با ماژول ها در Ruby آشنا می شوید. روبی یک زبان برنامه نویسی پویا، مفسر، شی گرا و همه منظ...

1397/09/09 686 بازدید
teamtreehouse-introduction-to-bundler

آشنایی با Bundler


Bundler مدیریت وابستگی نرم افزاری برای Ruby است. در این کارگاه با مشکلاتی که Bundler حل می کند، نحوه کارکرد Bundler و نحوه استفاده از Bundler در پروژه...

1397/07/20 615 بازدید
packtpub-scripting-essentials-for-devops-video

آموزش اصولی اسکریپت نویسی برای DevOps 


در این دوره با 3 زبان اسکریپت نویسی Bash، Python و Ruby، نحوه نوشتن اسکریپت، بیشترین بهره از زبان پایتون، برنامه نویسی پویا با Ruby، پارادایم های برنا...

1397/06/03 2448 بازدید
teamtreehouse-building-web-apps-with-sinatra-course

آموزش ساخت اپلیکیشن های وب با Sinatra 


سیناترا دومین و محبوب ترین فریمورک وب است که در روبی (پس از Rails) نوشته شده است. Sinatra بسیار ساده تر از Rails است، و یک راه عالی برای توسعه وب می ب...

1397/05/28 874 بازدید
teamtreehouse-ruby-2-0-walkthrough

کارگاه آشنایی با Ruby 2.0


در این کارگاه با Ruby 2.0 و ویژگی های جدید آن آشنا می شوید. روبی یک زبان برنامه نویسی پویا، مفسر، واکنش گرا، شی گرا و همه منظوره است....

1397/05/09 762 بازدید
teamtreehouse-ruby-loops-course

آموزش Ruby Loops


در Ruby Loops، شما یاد می گیرید که چگونه به صورت خودکار statements  را با استفاده از روبی تکرار کنید. شما در مورد ساختار Loops، همچنین while loops، un...

1397/05/03 573 بازدید
teamtreehouse-deployment-with-capistrano-course

آموزش استقرار با Capistrano 


استقرار یک اپلیکیشن وب در یک سرور تولید شامل مراحلی است که هر بار یک نسخه جدید را منتشر می کنید نیاز به تکرار دارید، مانند تغییرات از Git و راه اندازی...

1397/05/02 695 بازدید
teamtreehouse-ruby-enumerable

کارگاه آشنایی با Ruby Enumerable


در این کارگاه با ماژول Ruby Enumerable و نمونه های مختلفی از نحوه کار آن آشنا می شوید. Enumerable یکی از ماژول های Ruby است. در روبی، یک ماژول مجموعه...

1397/04/31 685 بازدید
teamtreehouse-ruby-basics-course

آموزش اصول و مبانی زبان روبی


روبی یک زبان برنامه نویسی است که بر سادگی و بهره وری تمرکز دارد و نحو ظریفی دارد که برای خواندن و نوشتن طبیعی است.  در این دوره با چگونه با روبی کار ک...

1397/04/31 824 بازدید
teamtreehouse-ruby-collections-course

آشنایی با Ruby Collections


در این دوره با collections در روبی، ساختارهای داده برای ایجاد collections در روبی: آرایه ها و هش ها و نوشتن برنامه های ساده روبی آشنا می شوید. سرفصل:...

1397/04/31 619 بازدید
teamtreehouse-ruby-core-and-standard-library-course

آموزش Ruby Core و Standard Library 


در این دوره با  قطعات مختلفی که توزیع Ruby را تشکیل می دهند آشنا می شوید. Standard Library در برنامه نویسی کامپیوتر کتابخانه ای است که در سراسر پیاده ...

1397/04/31 564 بازدید
teamtreehouse-practice-ruby-numeric-types

تمرین انواع عددی در روبی


در این کارگاه با مبانی Ruby، انواع عددی مانند Fixnum و Float و همچنین عملیات ریاضی آشنا می شوید. روبی یک زبان برنامه نویسی پویا، مفسر، واکنش گرا، شی ...

1397/04/31 430 بازدید
teamtreehouse-ruby-objects-and-classes-course

آموزش کلاس ها و آبجکت های روبی


Ruby به عنوان یک زبان برنامه نویسی شی گرا شناخته می شود. اما منظور از شی گرا چیست؟ در این دوره ما اصول اولیه Ruby Class را پوشش خواهیم داد. همچنین با ...

1397/04/30 566 بازدید
teamtreehouse-ruby-gems-course

آموزش Ruby Gems


Gems کتابخانه هایی هستند که می توانید در برنامه های Ruby خود که قابلیت های اضافی را ارائه می دهند استفاده کنید. gems زیادی در اکوسیستم روبی وجود دارند...

1397/04/30 526 بازدید
teamtreehouse-ruby-metaprogramming-introduction

کارگاه آشنایی با متاپروگرمینگ روبی


در این کارگاه، ما برخی از اصول اولیه متاپروگرمینگ در روبی را بررسی می کنیم. Metaprogramming یک تکنیک است که با آن می توانید کدی را بنویسید که بتواند ...

1397/04/30 587 بازدید
teamtreehouse-ruby-modules-course

آموزش ماژول های روبی


ماژول ها در هنگام برنامه نویسی در Ruby یک ابزار بسیار قدرتمند هستند. ماژول ها به شما این امکان را می دهد که رفتار کلاس ها را اضافه کنید، constants نگه...

1397/04/26 498 بازدید
teamtreehouse-practice-ruby-methods

آموزش متدهای روبی


در این کارگاه با زبان برنامه نویسی روبی، نحوه تعریف و فراخوانی متدهای Ruby آشنا می شوید. یک متد در روبی یک مجموعه ای از عبارات است که یک مقدار را به ...

1397/04/24 466 بازدید