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

دسته بندی: زبان برنامه نویسی

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

تاریخچه زبان روبی

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

معرفی زبان روبی

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

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

معماری روبی

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

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

ویژگی های روبی

با وجود اینکه طراحی روبی بر اصل عدم غافلگیری استوار است، به‌طور طبیعی برخی امکانات آن از زبان‌هایی مانند سی و پرل متفاوت است. نام‌هایی که با حرف بزرگ شروع می‌شوند به عنوان ثابت (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

مثال های روبی

مثال کلاسیک 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

 

آیا این نوشته را دوست داشتید؟