گرووی (زبان برنامه‌نویسی)

گرووی (به انگلیسی: Groovy) زبان برنامه‌نویسی پویایی است که برای ماشین مجازی جاوا ایجاد شده‌است، و هم می‌تواند مفسر اجرا شود، یا اینکه کامپایل شود.[۱] این زبان از زبان‌هایی مانند روبی، پایتون، پرل، اسمال‌تاک، و همچنین جاوا تأثیر گرفته‌است.[۱]

گرووی
طراحی شده توسطجمیز استراچان
ظهوریافته در۲۰۰۳
انتشار پایدار
۲.۰.۵
۴ اکتبر ۲۰۱۲؛ ۱۱ سال پیش (۲۰۱۲-04}})
بن‌سازه رایانشماشین مجازی جاوا
سیستم‌عاملچندسکویی
پروانهپروانه آپاچی نسخه ۲
وبگاه

گرووی توسط اسپرینگ‌سورس، که بخشی از وی‌ام‌ویر است توسعه داده می‌شود.[۲]

ویژگی‌های گرووی

برنامه‌نویسی شی‌گرا

همه چیز در گرووی یک شی است.[۳] گرووی تمام عملگرها را به صورت فراخوانی تابع پیاده‌سازی می‌کند. این باعث می‌شود که کد زیر:

1 + 1

به صورت زیر اجرا شود:

1.plus(1)

این به معنی این است که می‌توان در گرووی عملگرها را رونویسی کرد. در زیر مثالی از رونویسی عملگر plus را مشاهده می‌کنید:

class Score {   int value;   public Score plus (Score other) {      return new Score(value: value + other.value)   }}Score myScore = new Score(value: 88)Score yourScore = new Score(value: 89)Score totalScore = myScore + yourScoreassert totalScore == 177

برنامه‌نویسی تابعی

برنامه‌نویسی تابعی سبکی از برنامه‌نویسی است که بر روی استفاده از توابع، بدون استفاده از متغیرهای حالت و گام‌های رویه‌ای، برای حل مسایل محاسباتی تأکید می‌کند.

توابع گرووی می‌توانند برای تعریف توابعی به کار روند که هیچ گام رویه‌ای ندارند.[۴] به عنوان مثال تابع فاکتوریل را می‌توان به صورت زیر پیاده‌سازی کرد:

def fac(n) { n == 0 ? 1 : n * fac(n - 1) }

بستارها

یک بستار در گرووی تکه‌ای از کد است که تعریف می‌شود و در نکته‌ای دیگر اجرا می‌شود.[۵] بستارها می‌توانند به متغیرهای حوزه‌ای که بستار در آن تعریف شده دسترسی داشته باشد. به این متغیرها، متغیرهای آزاد می‌گویند. به نمونه زیر توجه کنید:

def adder(n) {   return { num -> num + n }}def add5 = adder(5)println add5(7) // prints 12

پویا بودن

در گرووی می‌توان ساختار کلاس‌های تعریف شده را در زمان اجرا تغییر داد. می‌توان در زمان به یک کلاس متغیر یا تابع جدید اضافه کرد.[۳]

نوع‌گذاری قوی و نوع‌گذاری شل

هنگام تعریف یک متغیر در گرووی نیازی به مشخص کردن نوع آن نیست.[۳] به عنوان نمونه:

def someObject = "some value";

هنگامی که کد بالا به بایت‌کد جاوا ترجمه می‌شود، معادل کد زیر در جاوا خواهد بود:

GroovyObject someObject = "some value";

همچنین نوع‌گذاری قوی نیز در گرووی پشتیبانی می‌شود.[۳] به عنوان نمونه کد زیر نیز در گرووی مجاز است:

String someObject = "some value";

یکپارچه‌سازی مستقیم با جاوا

کلاس‌های گرووی به بایت‌کد جاوا ترجمه می‌شوند، و می‌توان کلاس‌های جاوا را در گرووی، و کلاس‌های گرووی را در جاوا استفاده کرد.[۳] به عنوان نمونه در زیر یک کلاس در جاوا و یک کلاس در گرووی مشاهده می‌کنید که از یکدیگر استفاده می‌کنند:

کلاس تعریف شده در جاوا:

public class AClassInJava {    public static void main(String[] args) {        new AClassInJava().printMessage();        new AClassInGroovy().printMessage();    }    public void printMessage() {       System.out.println("Hello from Java");    }}

و کلاس تعریف شده در گرووی:

class AClassInGroovy{    def printMessage() {        println "Hello from Groovy"    }}new AClassInJava().printMessage()new AClassInGroovy().printMessage()

منابع

پیوند به بیرون

🔥 Top keywords: