مقارنة لغة الأسس مع لغات البرمجة الأخرى باستخدام الذكاء الاصطناعي

استخدمت نموذج الذكاء الاصطناعي claude للمقارنة بين صياغة لغة الأسس واللغات الأخرى، فأعطيته جزءا من مرجع اللغة المكتوب بالإنكليزية (https://alusus.org/Documents/lang-reference.en.html) وكانت النتيجة ما يلي:

مقارنة لغة Alusus مع لغات البرمجة الأخرى:

  1. مقارنة بناء الجملة (Syntax):
  • مثل ++C، تستخدم الفاصلة المنقوطة والأقواس المعقوفة للكتل البرمجية
  • على عكس Python/Ruby ولكن مثل C/C++/Java، تستخدم محددات صريحة للكتل
  • صياغة تعريف المتغيرات فريدة:
    // Alusus
    def x: Int;
    
    // C++
    int x;
    
    // TypeScript/Swift
    let x: number;
    
  1. نظام الأنواع (Type System):
  • مثل Rust و++C، لديها تحكم دقيق في أحجام الأعداد الصحيحة:

    // Alusus
    Int[32]  // عدد صحيح 32 بت
    Int[64]  // عدد صحيح 64 بت
    
    // Rust
    i32      // عدد صحيح 32 بت
    i64      // عدد صحيح 64 بت
    
  • تمتلك أنواعاً تعتمد على بنية النظام (ArchInt) مشابهة لـ size_t في ++C

  1. تعريف الدوال:
  • صياغة فريدة للسهم في أنواع الإرجاع، مشابهة لـ TypeScript/Swift ولكن بموضع مختلف:
    // Alusus
    function factorial(i: Int) => Int { ... }
    
    // TypeScript
    function factorial(i: number): number { ... }
    
    // Rust
    fn factorial(i: i32) -> i32 { ... }
    
  1. القوالب/الأنواع العامة (Templates/Generics):
  • تستخدم الأقواس المربعة مثل ++C، على عكس الأقواس المثلثة في Java/C#:
    // Alusus
    class Point[T: type] { ... }
    
    // C++
    template<typename T>
    class Point { ... }
    
    // Java
    class Point<T> { ... }
    
  1. تعريف الطرق (Methods):
  • معامل ‘this’ صريح فريد ومُعدِّل @member:
    // Alusus
    @member func getDistance(this: ref[this_type]): float { ... }
    
    // لغات البرمجة كائنية التوجه التقليدية (Java/C++/Python) تستخدم this/self ضمنياً
    public float getDistance() { ... }
    
  1. الخصائص (Properties):
  • مشابهة لخصائص #C ولكن بصياغة مختلفة:
    // Alusus
    handler this.length = float {
        this.end = this.start + value;
    }
    
    // C#
    public float Length {
        set { end = start + value; }
    }
    
  1. إدارة الذاكرة:
  • تتبع نمط إدارة الذاكرة اليدوية مثل ++C
  • لديها تمييز بين الـ stack والـ heap مثل C/C++
  • تستخدم مفهوم المتغيرات المشتركة مشابه لـ static في اللغات الأخرى
  1. مميزات فريدة:
  • أنواع مختلفة من الأقواس للعمليات في وقت التشغيل مقابل وقت التجميع
  • دعم اللغة العربية في المعرفات (نادر في لغات البرمجة)
  • مفهوم قوالب المعالجات
  • معدلات العمليات للخصائص
  1. نظام الوحدات (Modules):
  • أقرب لنهج ++C منه لنظام الوحدات في JavaScript/Python
  • يتطلب استيراداً صريحاً للمكتبات مثل معظم اللغات الحديثة
  1. المعاملات المتغيرة (Variadic Arguments):
  • أكثر أماناً من حيث النوع من varargs في C:
    // Alusus (آمن من حيث النوع)
    function print(count: Int, args: ...[Float, 2, 5]) { ... }
    
    // C (غير آمن من حيث النوع)
    void print(int count, ...) { ... }
    

بشكل عام، تبدو Alusus كمزيج من مفاهيم:

  • C++ (القوالب، إدارة الذاكرة)
  • اللغات الحديثة مثل Rust/TypeScript (نظام الأنواع، بناء الجملة)
  • C# (نظام الخصائص)
    مع إضافة مميزات فريدة مثل:
  • تمييز صريح بين صياغة وقت التشغيل ووقت التجميع
  • دعم اللغة العربية
  • ربط أكثر وضوحاً للطرق مع @member
  • معاملات متغيرة آمنة من حيث النوع مع حدود
  1. نظام الأنواع المتقدم:
// في Alusus
def i: Int       // 32 بت افتراضياً
def w: Word      // عدد صحيح موجب
def ai: ArchInt  // يعتمد على بنية النظام

// مقارنة مع Rust
let i: i32       // 32 بت ثابت
let u: u32       // عدد موجب 32 بت
let s: isize     // يعتمد على بنية النظام
  1. الكتل البرمجية والنطاقات:
// في Alusus - المتغيرات المشتركة
@shared def x: Int;

// في C++
static int x;

// في JavaScript
static x = 0;
  1. التعامل مع المصفوفات:
// في Alusus
def arr: array[Int, 5];

// في C++
int arr[5];

// في Java
int[] arr = new int[5];
  1. تعريف الفئات والواجهات:
// في 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);
    }
}
  1. مميزات فريدة في معالجة الدوال:
// دوال متغيرة المعاملات في Alusus مع تحديد النوع والحدود
function printNumbers(args: ...[Int, 2, 5]) {
    // يمكن تمرير 2 إلى 5 معاملات فقط من نوع Int
}

// مقارنة مع ++C
void printNumbers(...) {
    // لا يوجد تحقق من النوع أو العدد
}
  1. التعامل مع المؤشرات:
// في Alusus
def p: ptr[Int];

// في C++
int* p;

// في Rust
let p: *mut i32;
  1. الخصائص المتقدمة:
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; }
    }
}
  1. دعم البرمجة المتعددة النماذج:
// قوالب في 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:

  1. دعم اللغة العربية في الأكواد:
  • إمكانية استخدام المعرفات العربية
  • تكامل أفضل مع النصوص العربية
  • اتجاه الكتابة من اليمين إلى اليسار في التعليقات العربية
  1. نظام الوحدات:
// في Alusus
import "Srl/Console.alusus";

// مقارنة مع Python
from srl import console
  1. أمان النوع:
  • فحص الأنواع في وقت التجميع
  • تحقق صارم من المعاملات المتغيرة
  • تحويل أنواع صريح
  1. أداء وكفاءة:
  • تحكم مباشر في الذاكرة
  • تجميع إلى كود آلة مباشر
  • تحسينات في وقت التجميع
إعجاب واحد (1)

جميل. إجاباته دقيقة إلى حد كبير.

لم أستخدم نموذج claude من قبل. هل يمكنه كتابة الأكواد بلغة الأسس؟

نموذج claude ذكاؤه أفضل بكثير من غيره، وأعتقد أن له القدرة على كتابة الأكواد بلغة الأسس ولكن عيبه الحد الضيق من الاستيعاب، فبعد المقارنة السابقة رفض الاستمرار في المحادثة بسبب بلوغ الحد، جربت الانتقال إلى نموذج آخر وهو textcortex وأعطيته مرجع اللغة بعد تحويله لملف نصي وطلبت منه ما يلي:

write a function that will take 2 numbers as arguments and if both numbers are bigger than 0 then it will multiply them and return the results

فأجاب

Here’s how to create a function in Alusus that takes two numbers as arguments, checks if both numbers are greater than 0, and if so, multiplies them and returns the result.

Function Definition

You can define the function using the following code:

import "libalusus_spp.so"; // Import necessary library

module MyModule {
    // Function to multiply two positive numbers
    function multiplyIfPositive(a: Float, b: Float) => Float {
        if (a > 0 && b > 0) { // Check if both numbers are greater than 0
            return a * b; // Multiply and return the result
        }
        return 0; // Return 0 if either number is not greater than 0
    }
}

// Example of calling the function
Float result = MyModule.multiplyIfPositive(3.5, 2.0);
write("Result: ", result); // Output the result

Explanation

  • Function Name and Parameters : The function multiplyIfPositive takes two parameters, a and b , which are both of type Float .
  • Conditional Check : The if statement checks if both a and b are greater than 0 using the logical && operator 1.
  • Multiplication : If both conditions are true, the function returns the multiplication of a and b .
  • Return Value : If either argument is not greater than 0, the function returns 0 as a fallback.

This example shows how to structure the function and use it within a module in Alusus. If you have any further questions or need more examples, let me know!

هدفي من فتح هذا الموضوع هو الرغبة في مقارنة نحو وصياغة لغة الأسس بغيرها ومعرفة إمكانية فتح نقاش حول ذلك، بخصوص إجراء بعض التحسينات وخصوصا من الناحية التسويقية، فهل بالإمكان فتح مثل هذا النقاش؟

اظن أن دقة chatgpt أفضل في كتابة البرامج. نحن نبحث الآن في موضوع تولد شفرات الأسس باستخدام الذكاء الاصطناعي لدمج الخاصية مع محرر الورشة ونجري التجارب حاليا باستخدام chatgpt، لكن ما زال أمامنا بعض العمل لجعله يكتب البرامج بدقة.

بالنسبة للنقاش حول صياغة لغة الأسس، فبالطبع يمكنك فتح النقاش. ربما الأفضل فتح النقاش في موضوع مستقل ليكون عنوان الموضع أوضح. النقطة المهمة فيما يتعلق بقواعد لغة الأسس أننا ننظر إلى الصورة الكبرى ونقدمها على التفاصيل الصغيرة ما يجعلنا نضحي ببعض التفاصيل الصغيرة من أجل الفوائد الأكبر. أوضح مثال على ذلك اختيار الأقواس الاعتيادية () للولوج إلى عناصر المصفوفات بدل الأقواس المربعة كما هو الحال في كثير من اللغات. لكن، هذا لا يعني عدم وجود مجال لإجراء التحسينات. سيسعدنا النقاش معكم في هذا المجال.

إن أحببت أن تجري بعض الاختبارات على نماذج الذكاء الاصطناعي الأخرى فبالإمكان طرح بعض الأسئلة التي جربتوها مع chatGPT من أجل أن نجربها على غيره ونقارن المخرجات

بشأن النقاش حول صياغة لغة الأسس وتأثير ذلك على تسويقها فهو موضوع كبير، ولكن قبل أن أبدأ في مناقشته… لفت انتباهي قولك أنكم تنظرون إلى الصورة الكبرى وتقدمونها على التفاصيل الصغيرة، وهذا الكلام مهم، ويعني أن لكم رؤية محددة، وأهدافا معينة من إنشاء لغة الأسس، فهل يمكن أن توضح تفاصيل ذلك… والفئة المستهدفة والفراغات التي تتوقعون أن تقوم لغة الأسس بملئها في عالم لغات البرمجة، وهل ستتنافس مع لغات أخرى أم لا؟