استخدمت نموذج الذكاء الاصطناعي claude للمقارنة بين صياغة لغة الأسس واللغات الأخرى، فأعطيته جزءا من مرجع اللغة المكتوب بالإنكليزية (https://alusus.org/Documents/lang-reference.en.html) وكانت النتيجة ما يلي:
مقارنة لغة Alusus مع لغات البرمجة الأخرى:
- مقارنة بناء الجملة (Syntax):
- مثل ++C، تستخدم الفاصلة المنقوطة والأقواس المعقوفة للكتل البرمجية
- على عكس Python/Ruby ولكن مثل C/C++/Java، تستخدم محددات صريحة للكتل
- صياغة تعريف المتغيرات فريدة:
// Alusus def x: Int; // C++ int x; // TypeScript/Swift let x: number;
- نظام الأنواع (Type System):
-
مثل Rust و++C، لديها تحكم دقيق في أحجام الأعداد الصحيحة:
// Alusus Int[32] // عدد صحيح 32 بت Int[64] // عدد صحيح 64 بت // Rust i32 // عدد صحيح 32 بت i64 // عدد صحيح 64 بت -
تمتلك أنواعاً تعتمد على بنية النظام (ArchInt) مشابهة لـ size_t في ++C
- تعريف الدوال:
- صياغة فريدة للسهم في أنواع الإرجاع، مشابهة لـ TypeScript/Swift ولكن بموضع مختلف:
// Alusus function factorial(i: Int) => Int { ... } // TypeScript function factorial(i: number): number { ... } // Rust fn factorial(i: i32) -> i32 { ... }
- القوالب/الأنواع العامة (Templates/Generics):
- تستخدم الأقواس المربعة مثل ++C، على عكس الأقواس المثلثة في Java/C#:
// Alusus class Point[T: type] { ... } // C++ template<typename T> class Point { ... } // Java class Point<T> { ... }
- تعريف الطرق (Methods):
- معامل ‘this’ صريح فريد ومُعدِّل @member:
// Alusus @member func getDistance(this: ref[this_type]): float { ... } // لغات البرمجة كائنية التوجه التقليدية (Java/C++/Python) تستخدم this/self ضمنياً public float getDistance() { ... }
- الخصائص (Properties):
- مشابهة لخصائص #C ولكن بصياغة مختلفة:
// Alusus handler this.length = float { this.end = this.start + value; } // C# public float Length { set { end = start + value; } }
- إدارة الذاكرة:
- تتبع نمط إدارة الذاكرة اليدوية مثل ++C
- لديها تمييز بين الـ stack والـ heap مثل C/C++
- تستخدم مفهوم المتغيرات المشتركة مشابه لـ static في اللغات الأخرى
- مميزات فريدة:
- أنواع مختلفة من الأقواس للعمليات في وقت التشغيل مقابل وقت التجميع
- دعم اللغة العربية في المعرفات (نادر في لغات البرمجة)
- مفهوم قوالب المعالجات
- معدلات العمليات للخصائص
- نظام الوحدات (Modules):
- أقرب لنهج ++C منه لنظام الوحدات في JavaScript/Python
- يتطلب استيراداً صريحاً للمكتبات مثل معظم اللغات الحديثة
- المعاملات المتغيرة (Variadic Arguments):
- أكثر أماناً من حيث النوع من varargs في C:
// Alusus (آمن من حيث النوع) function print(count: Int, args: ...[Float, 2, 5]) { ... } // C (غير آمن من حيث النوع) void print(int count, ...) { ... }
بشكل عام، تبدو Alusus كمزيج من مفاهيم:
- C++ (القوالب، إدارة الذاكرة)
- اللغات الحديثة مثل Rust/TypeScript (نظام الأنواع، بناء الجملة)
- C# (نظام الخصائص)
مع إضافة مميزات فريدة مثل: - تمييز صريح بين صياغة وقت التشغيل ووقت التجميع
- دعم اللغة العربية
- ربط أكثر وضوحاً للطرق مع @member
- معاملات متغيرة آمنة من حيث النوع مع حدود
- نظام الأنواع المتقدم:
// في Alusus
def i: Int // 32 بت افتراضياً
def w: Word // عدد صحيح موجب
def ai: ArchInt // يعتمد على بنية النظام
// مقارنة مع Rust
let i: i32 // 32 بت ثابت
let u: u32 // عدد موجب 32 بت
let s: isize // يعتمد على بنية النظام
- الكتل البرمجية والنطاقات:
// في Alusus - المتغيرات المشتركة
@shared def x: Int;
// في C++
static int x;
// في JavaScript
static x = 0;
- التعامل مع المصفوفات:
// في Alusus
def arr: array[Int, 5];
// في C++
int arr[5];
// في Java
int[] arr = new int[5];
- تعريف الفئات والواجهات:
// في Alusus
class Point {
def x: Float;
def y: Float;
@member func getDistance(this: ref[this_type]): Float {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
}
// في TypeScript
class Point {
x: number;
y: number;
getDistance(): number {
return Math.sqrt(this.x * this.x + this.y * this.y);
}
}
- مميزات فريدة في معالجة الدوال:
// دوال متغيرة المعاملات في Alusus مع تحديد النوع والحدود
function printNumbers(args: ...[Int, 2, 5]) {
// يمكن تمرير 2 إلى 5 معاملات فقط من نوع Int
}
// مقارنة مع ++C
void printNumbers(...) {
// لا يوجد تحقق من النوع أو العدد
}
- التعامل مع المؤشرات:
// في Alusus
def p: ptr[Int];
// في C++
int* p;
// في Rust
let p: *mut i32;
- الخصائص المتقدمة:
class Rectangle {
def width: Float;
def height: Float;
// خاصية المساحة للقراءة فقط
handler this.area: Float {
return this.width * this.height;
}
}
// مقارنة مع #C
class Rectangle {
public float Width { get; set; }
public float Height { get; set; }
public float Area {
get { return Width * Height; }
}
}
- دعم البرمجة المتعددة النماذج:
// قوالب في Alusus
class Container[T: type] {
def value: T;
@member func getValue(this: ref[this_type]): T {
return this.value;
}
}
// مقارنة مع Java
class Container<T> {
private T value;
public T getValue() {
return value;
}
}
مميزات فريدة إضافية في Alusus:
- دعم اللغة العربية في الأكواد:
- إمكانية استخدام المعرفات العربية
- تكامل أفضل مع النصوص العربية
- اتجاه الكتابة من اليمين إلى اليسار في التعليقات العربية
- نظام الوحدات:
// في Alusus
import "Srl/Console.alusus";
// مقارنة مع Python
from srl import console
- أمان النوع:
- فحص الأنواع في وقت التجميع
- تحقق صارم من المعاملات المتغيرة
- تحويل أنواع صريح
- أداء وكفاءة:
- تحكم مباشر في الذاكرة
- تجميع إلى كود آلة مباشر
- تحسينات في وقت التجميع