Skip to content

Shad7ows/Alif

 
 

Repository files navigation

Alif Windows Build Alif Unix Build Telegram Badge



لغة ألف

لغة برمجة عربية مفسرة واضحة وسهلة التعلم متعددة الأغراض وعابرة للمنصات


الموقع الإلكتروني: https://aliflang.org

المحتويات:

النبذة:

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

التاريخ:

  • عام 2010 >> بدأت الفكرة عام 2010 لدى حسن دراكه
  • عام 2018 >> وبعد جهد وعمل لمدة ثمان سنوات في عام 2018 تم إصدار لغة ألف النسخة الأولى (1.0)
  • عام 2019 >> ثم بعد سنة في عام 2019 تم إصدار النسخة الثانية (2.0)
  • عام 2020 >> ثم في عام 2020 تم إصدار النسخة الثالثة (3.0) وهي نسخة تجريبية حيث توقف تطويرها في 2022
  • عام 2022 >> بدأ التطوير على النسخة المفسرة من اللغة وهي النسخة الخامسة من قبل محمد وعبدالرحمن الخطيب, حيث يجري العمل عليها حتى الآن

تنبيه: كل إصدار من الإصدارات السابقة التي تسبق الإصدار الخامس مستقل عن الآخر ولكن من بعد الإصدار الخامس أصبحت تصدر إصدارات متصلة مكملة لبعضها.
والفرق الأساسي بين الإصدارات السابقة والإصدار الخامس أن الإصدارات السابقة كانت ذات غايات تعليمية في حين أن الإصدار الخامس يهدف إلى منافسة اللغات العالمية..
النسخ الفرعية من النسخة الخامسة ستكون متوافقة وإمتداد للنسخة الخامسة.

الفلسفة:

استلهمت لغة ألف منطقها من فلسفة لغة (python) حيث نؤمن بأن "الوقت المستغرق في فهم الشيفرة يجب أن يكون أقل من وقت الكتابة", ومن أجل تحقيق هذا تم إعتماد ثلاث مبادئ ينطلق منها التطوير والتغيير:

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

ثم هنالك ثلاثة شروط يجب أن يحققها أي تطوير أو تغيير..

’’البديهية، سرعة التنفيذ، سرعة الكتابة‘‘

  • الشرط الأول: (البديهية)
    • أن تكون لغة ألف أقرب ما يمكن إلى اللغة العربية البشرية الطبيعية
  • الشرط الثاني: (سرعة التنفيذ)
    • تسريع تنفيذ السطر باستخدام أحدث وأقوى خوارزميات علوم الحاسوب
  • الشرط الثالث: (سرعة الكتابة)
    • التوازن بين قرب لغة ألف إلى اللغة الطبيعية وسرعة كتابة الأسطر

الوثائق:

يمكنك زيارة قسم التوثيقات في موقع ألف للإطلاع على الوثائق: https://aliflang.org/docs/

مثال:

هذا مثال للعبة إكس-أو مكتوبة بلغة ألف

اللوح = [" " لاجل _ في مدى(9)]

دالة عرض_اللوح():
	اطبع(م"{اللوح[0]} | {اللوح[1]} | {اللوح[2]}")
	اطبع("--+---+--")
	اطبع(م"{اللوح[3]} | {اللوح[4]} | {اللوح[5]}")
	اطبع("--+---+--")
	اطبع(م"{اللوح[6]} | {اللوح[7]} | {اللوح[8]}")

دالة هل_ممتلئ():
	ارجع " " ليس في اللوح

دالة هل_رابح(لاعب):
	تشكيلات_الفوز = [
	[0, 1, 2], [3, 4, 5], [6, 7, 8],
	[0, 3, 6], [1, 4, 7], [2, 5, 8],
	[0, 4, 8], [2, 4, 6] ]
	
	لاجل تشكيل في تشكيلات_الفوز:
		اذا اللوح[تشكيل[0]] == اللوح[تشكيل[1]] == اللوح[تشكيل[2]] == لاعب:
			ارجع صح
	ارجع خطأ


دالة اقصى_احتمال(اللوح, العمق, قصوى):
	اذا هل_رابح("O"):
		ارجع 1
	اذا هل_رابح("X"):
		ارجع -1
	اذا هل_ممتلئ():
		ارجع 0

	اذا قصوى:
		افضل_نتيجة = عشري("-لانهائي")
		لكل ب في مدى(9):
			اذا اللوح[ب] == " ":
				اللوح[ب] = "O"
				النتيجة = اقصى_احتمال(اللوح, العمق + 1, خطأ)
				اللوح[ب] = " "
				افضل_نتيجة = اقصى(النتيجة, افضل_نتيجة)
		ارجع افضل_نتيجة
	والا:
		افضل_نتيجة = عشري("لانهائي")
		لكل ب في مدى(9):
			اذا اللوح[ب] == " ":
				اللوح[ب] = "X"
				النتيجة = اقصى_احتمال(اللوح, العمق + 1, صح)
				اللوح[ب] = " "
				افضل_نتيجة = ادنى(النتيجة, افضل_نتيجة)
		ارجع افضل_نتيجة

دالة حركة_الجهاز():
	افضل_نتيجة = عشري("-لانهائي")
	افضل_حركة = عدم
	لكل ب في مدى(9):
		اذا اللوح[ب] == " ":
			اللوح[ب] = "O"
			النتيجة = اقصى_احتمال(اللوح, 0, خطأ)
			اللوح[ب] = " "
			اذا النتيجة > افضل_نتيجة:
				افضل_نتيجة = النتيجة
				افضل_حركة = ب
	اللوح[افضل_حركة] = "O"

دالة العب():
	اطبع("مرحبا بك في لعبة إكس أو")
	عرض_اللوح()
	بينما صح:
		حركة_اللاعب = صحيح(ادخل("إلعب حركتك (0-8): "))
		اذا حركة_اللاعب > 8:
			اطبع("ادخل رقم بين 0 و 8 فقط")
			استمر
		اذا اللوح[حركة_اللاعب] != " ":
			اطبع("الفراغ ممتلئ, إختر غيره!")
			استمر
		اللوح[حركة_اللاعب] = "X"

		عرض_اللوح()
		اذا هل_رابح("X"):
			اطبع("لقد ربحت, هذا رائع!")
			توقف
		اذا هل_ممتلئ():
			اطبع("تعادل, حاول مرة اخرى")
			توقف

		اطبع("لحظة, الجهاز يفكر!")
		حركة_الجهاز()
		عرض_اللوح()
		اذا هل_رابح("O"):
			اطبع("الجهاز ربح, ههههه")
			توقف
		اذا هل_ممتلئ():
			اطبع("تعادل, حاول مرة اخرى")
			توقف

العب()
	

بناء اللغة:

نظام ويندوز (Windows):

  • أولاً: قم بتحميل برنامج visual studio إصدار 2014 فما فوق. يمكنك تحميله من خلال الرابط: https://visualstudio.microsoft.com/downloads/
  • ثانياً: قم بتحميل الشفرة المصدرية من مجتمع ألف على Github : https://github.com/alifcommunity/Alif5
  • ثالثاً : افتح ملف winBuild الموجود على ملف Alif بعدها قم بتشغيل ملف Alif.sln
  • سيتم تشغيل مشروع ألف على برنامج visual studio
  • ملاحظة : يجب توفر حزمة desktop development with c++ الموجودة على visual studio installer

نظام لينكس (Linux):

  • يجب توفر مترجم c++
  • يمكنك تثبيته على ubuntu بإستخدام الأمر:
sudo apt install build-essential
  • قم بتحميل الشفرة المصدرية من مجتمع ألف على github : https://github.com/alifcommunity/Alif5
  • قم بفتح ملف linuxBuild ومن ثم تقوم بفتح الطرفية cmd في نفس مسار الملف
  • بعد ذلك تقوم بكتابة امر ⌨️
make

سيتم بناء لغة alif ضمن مجلد build في وضع الإصدار release لمعرفة أوضاع البناء يمكن تمرير الأمر ⌨️

make help 

ولتنفيذ ملف ألف قم بتمرير اسم الملف

./alif filename.alif

نظام ماك (Mac):

  • يجب توفر مترجم c++
  • يمكنك تثبيته على mac عن طريق تثبيت XCode
  • قم بتحميل الشفرة المصدرية من مجتمع ألف على github : https://github.com/alifcommunity/Alif5
  • قم بفتح ملف linuxBuild ومن ثم تقوم بفتح الطرفية cmd في نفس مسار الملف
  • بعد ذلك تقوم بكتابة امر ⌨️
make

سيتم بناء لغة alif ضمن مجلد build في وضع الإصدار release لمعرفة أوضاع البناء يمكن تمرير الأمر ⌨️

make help 

ولتنفيذ ملف ألف قم بتمرير اسم الملف

./alif filename.alif

المجتمع:

يمكنك الإنضمام إلى مجتمع ألف الموجود في التيليغرام من خلال الرابط: https://t.me/aliflang

About

Alif5 - Arabic Programming Language

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 71.2%
  • C 28.5%
  • Other 0.3%