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)";
}
همانطور که پیش از این اشاره شد، سینتکس زبان گِرَوِتی مشابه زبان #سوئیفت اپل است.