Skip to content

Latest commit

 

History

History
461 lines (366 loc) · 12.2 KB

README_AR.md

File metadata and controls

461 lines (366 loc) · 12.2 KB

The One Programming Language

The One لغة برمجة 💚 💙 🧡 🤍 💖 🖤

Onelang.org | مركز المساعدة

Patreon Discord Twitter Instagram License Facebook

English   عربي   Español   فارسی   Filipino   Français   Italiano   日本語   한국어   русский   Türkçe   Українська

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

سيصدر المترجم للغة الواحدة "ONE" في غضون أشهر قليلة

-----------------------------------------------------

جدول المحتويات

  1. ميزات One
  2. خريطة الطريق
  3. أمثلة التعليمات البرمجية
  4. البدء
  5. مشاركة
  6. الرخصة

-----------------------------------------------------

➤ مميزات لغة One

  • البساطة
  • ترجمة
  • القدرة على إنشاء ملف الإخراج (x86_64, i386)
  • برمجة الأنظمة
  • متوسطة المستوى
  • برمجة الشبكات و API
  • تدعم برمجة الويب (في المستقبل)
    • الإنشاء التلقائي للرمز المقابل لكل من CSS و HTML. لذلك لن تضطر إلى تعلم أكثر من لغة واحدة لتطوير موقع ويب
    • يستخدم المتغيرات في CSS ، حتى نتمكن من الحصول على الألوان أو الأحجام من قاعدة البيانات
    • تصغير نتائج الصفحة تلقائيًا
  • أداء وسرعة عالية
  • تدعم رمز التجميع المضمن (في المستقبل)
  • لا يتطلب منك مكتبات وأدوات محددة على نظام المستخدم في الوضع العادي (في المستقبل)
  • لا يتطلب مكتبات وقت تشغيل خارجية في الوضع العادي (في المستقبل)
  • لا يتطلب من المترجمين الخارجيين القيام بالتجميع (في المستقبل)

-----------------------------------------------------

➤ خارطة الطريق

قواعد اللغة متوفرة . هنا.

  •    المعجم / المحلل اللغوي (في الغالب)
  •    شجرة AST
  •    VM
  •    مولد الشفرة (استلهم من LLVM-C)
  •    قم بتطوير مكتبة وقت التشغيل وإضافة ميزات
  •    تصميم إطار عمل للغة
  •    أعد كتابة المترجم بلغة ONE

-----------------------------------------------------

➤ التعليمات البرمجية

main {
   ret 0
}

التحويل الى C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 0;
}

i32 main {
   ret 10
}

التحويل الى C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 10;
}

main {
   string in = "Hello, World!"
   __ in
   return in.length
}

التحويل الى C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   char *in = "Hello, World!";
   printf("%s\n", in);
   return (int) strlen(in);
}

أمثلة أخرى:

import web
home {
    _ "Hi, Welcome"
}
error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ "<h1>404></h1>"
}
main {
    if system.args.length === 2 {
        port = system.args[1]
    } else  {
        port = 8080;
    }
    web.route.add("/", home)
    web.route.add("*", error)
    web.listen(port)
    return 0
}

أمثلة أخرى:

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}

vs

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    page {
        title: 'Error 404'
        label {
            type: 'h1'
            _ "Not found!"
        }
    }
}

تطوير CLI القديم

main:
   // __ "Hello, World!"
   _ "Hello,"
   io.write(' ')
   io.write("World")
   __ '!'
end
@start
customName:
   _ "Hello, World!\n"
end
@start
void app:
   __ "Hello, World!"
end
@start
int customName:
   _ "Hello, World!\n"
   return 0
end

تطوير واجهة المستخدم الرسومية القديمة: (الويب ، البرامج)

تم تصميم هذه البنية فقط لمواقع الويب والبرامج الأصلية. في المستقبل ، سيكون متاحًا أيضًا لتطبيقات الأجهزة المحمولة (الأصلية). (native).
الهياكل المتنقلة لم تكتمل بعد وتتطلب المزيد من التفكير والاهتمام.

مثال لإثبات عمل اللغة:

title "Name - Main"
description "Descriptions"
/*
Keyword tag not used in the software, only on the web.
*/
keyword "keywords"
style {
  * {
    margin 0
    padding 0
  }
  header {
    width "100%"
    height "auto"
  }
  list {
    color "red"
  }
  list item {
    display "inline"
    padding "10px"
    background "yellow"
  }
}
header {
  list {
    item {
      _ "Home"
    }
    item {
      _ "About"
    }
    item {
      _ "Contact Us"
    }
  }
}

التحويل إلى CSS / HTML / JS:

<html>
  <head>
    <title>Name - Main</title>
    <meta name="description" content="Descriptions" />
    <meta name="keyword" content="keywords" />
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      header {
        width 100%;
        height: auto;
      }
      ul {
        color: red;
      }
      ul li {
        display: inline;
        padding: 10px;
        background: yellow;
      }
    </style>
  </head>
  <body>
    <header>
      <ul>
        <li>Home</li>
        <li>About</li>
        <li>Contact Us</li>
      </ul>
    </header>
  </body>
</html>

-----------------------------------------------------

➤ البدء

الرجوع الى هذا الرابط لبدء تعلم أساسيات اللغة.

انظمة التشغيل المدعومة

  • GNU / Linux
  • Windows
  • macOS (Not complete)
  • BSD

-----------------------------------------------------

➤ شارك

نرحب بجميع أنواع المساهمات ، بما في ذلك تصحيح الأخطاء وطلبات التعديل وتحسينات الوثائق وما إلى ذلك. لطرح سؤال أو فتح مناقشة أو إنشاء مشكلة , نرجو الإنضمام إلى سيرفر الدسكورد الخاص بنا . One Discord Server.

إذا لم تكن على دراية بكيفية تقديم طلب تعديل على GitHub ، فيرجى قراءة هذا . الدليل.

إذا كنت قد قررت المساهمة ، يرجى قراءة الإرشادات هنا أولاً. هنا.
يمكنك أيضًا المساعدة في تطوير One من خلال تقديم بعض التبرعات على ❤️ Patreon.

شكرا لجميع المساهمين!!

إذا كنت ترغب في المساهمة في تطوير هذا المشروع, يمكنك مراسلتنا على: [email protected]


تم إنشاؤه بواسطة Max Base @ 2019 -----------------------------------------------------

➤ الرخصة

One تم إصدارها بموجب رخصة جنو العمومية العامة v3.0. يرجى الرجوع إلى الشروط والأحكام الموجودة في ملف الترخيص المتضمن في المشروع.