Gravity: یک زبان اسکریپتینگ اپن‌سورس

Gravity: یک زبان اسکریپتینگ اپن‌سورس

Gravity، طبق ادعای ریپازیتوری این زبان در گیت‌هاب، یک زبان اسکریپتینگ قدرتمند با ساپورت تایپ دینامیک است که با زبان C نوشته شده و به جز لایبرری stdlib، عاری از هرگونه دیپندنسی (وابستگی) دیگری است که همین مسئله Gravity را به زبانی کاملاً سبک مبدل کرده است.

آشنایی با خصوصیات زبان Gravity
به طور کلی Gravity زبانی مبتنی بر کلاس یا به اصطلاح Class-based است و سینتکسی مشابه با زبان Swift اپل دارد. از جمله مشخصات این زبان می‌توان به موارد زیر اشاره کرد:

- نوشته شده با زبان C 
- پشتیبانی از برنامه‌نویسی به سَبک Concurrent ،Object-oriented ،Functional ،Procedural و Data-driven 
- امکان کدنویسی به صورت Prototype-based با قابلیت‌های از قبل در نظر گرفته شده در این زبان
- امکان کدنویسی برای پلتفرم‌های iOS و Android
- تایپ دینامیک
- ساپورت قابلیت کلوژر
- برخوردار از گاربج کالکشن
- برخوردار از API به منظور اِمبد کردن در دیوایس‌های مختلف
- دارای یکسری Unit Test به صورت دیفالت (پیش‌فرض)
- دارای مفسر JSON به صورت دیفالت
- عرضه شده تحت لیسانس MIT

به عنوان نمونه سورس‌کد نوشته شده با زبان Gravity داریم:

class Vector {
	// instance variables
	var x = 0;
	var y = 0;
	var z = 0;

	// constructor
	func init (a = 0, b = 0, c = 0) {
		x = a; y = b; z = c;
	}

	// instance method (built-in operator overriding)
	func + (v) {
		if (v is Int) return Vector(x+v, y+v, z+v);
		else if (v is Vector) return Vector(x+v.x, y+v.y, z+v.z);
		return null;
	}

	// instance method (built-in String conversion overriding)
	func String() {
	        // string interpolation support
		return "[\(x),\(y),\(z)]";
	}
}

func main() {
	// initialize a new vector object
	var v1 = Vector(1,2,3);
	
	// initialize a new vector object
	var v2 = Vector(4,5,6);
	
	// call + function in the vector object
	var v3 = v1 + v2;
	
	// returns string "[1,2,3] + [4,5,6] = [5,7,9]"
    	return "\(v1) + \(v2) = \(v3)";
 }

همان‌طور که پیش از این اشاره شد، سینتکس زبان گِرَوِتی مشابه زبان #سوئیفت اپل است.



بهزاد مرادی