گرووی (زبان برنامهنویسی)
گرووی (به انگلیسی: 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()
منابع
- ↑ کتاب Beginning Groovy and Grails, From Novice to Professional
- ↑ «نوار کناری وبگاه رسمی گرووی». بایگانیشده از اصلی در ۱۳ فوریه ۲۰۱۲. دریافتشده در ۲۸ اکتبر ۲۰۱۲.
- ↑ کتاب Grails 1.1 Web Application Development
- ↑ «مستندات گرووی - برنامهنویسی تابعی». بایگانیشده از اصلی در ۸ اکتبر ۲۰۱۲. دریافتشده در ۲۸ اکتبر ۲۰۱۲.
- ↑ «مستندات گرووی - بستارها». بایگانیشده از اصلی در ۲۲ مه ۲۰۱۲. دریافتشده در ۲۸ اکتبر ۲۰۱۲.