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

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
گرووی
گونه رویه‌ای
شئ‌گرا
برنامه‌نویسی تابعی
منتشر شده در ۲۰۰۳
طراح(ها) جمیز استراچان
آخرین نسخه پایدار ۲.۰.۵  (۴ اکتبر ۲۰۱۲؛ ۶۹۸ روز پیش)
سیستم‌عامل چندسکویی
سکو ماشین مجازی جاوا
تاثیر گرفته از جاوا، پایتون، روبی، پرل، اسمال‌تاک، آبجکتیو-سی
اجازه‌نامه پروانه آپاچی نسخه ۲
وب‌گاه 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()

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

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