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

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

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

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

ویژگی‌های گرووی[ویرایش]

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

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

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 + yourScore

assert 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()

منابع[ویرایش]

پیوند به بیرون[ویرایش]