تخطَّ إلى المحتوى

ابدأ من C

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

في C في ميم
int64_t، double، bool عدد (64 بت بإشارة)، كسر، منطقي
char * منتهٍ بصفر نص: UTF-8 بطوله، وطول يعدّ الأحرف لا البايتات
struct هيكل: يُمرَّر بالقيمة
مصفوفة ثابتة / مصفوفة تنمو مصفوفة[نوع, حجم] (تُنسخ عند الإسناد) / قائمة[نوع]
malloc / free الحجز من مخصص (ضمني في الغالب) / حرر(س)
T * وNULL مؤشر[نوع] بـ جديد ومحتوى، ولاشيء؛ لا حساب عناوين
void * من مكتبة مؤشر_خام، ولا يُقرأ إلا داخل خطر
رمز إرجاع وerrno !نوع وخطأ.اسم، ومعالجته إلزامية
goto cleanup خاتمه وخاتمه_عند_خطأ
#include استورد
printf اطبع بالفواصل، ورياضيات.نسق ونسق_عدد للتنسيق
تجاوز غير معرَّف خطأ تشغيل برمز 3 (و--wrap-overflow للالتفاف)
استدعاء مكتبة C خارجي بأنواع C صريحة
دالتان من مكتبة C
خارجي "m" داله جذر_c(س كسر) كسر باسم "sqrt"
خارجي داله طول_c(ن نص) حجم باسم "strlen"
اطبع(جذر_c(2.0))
اطبع("ميم بالبايتات: ", طول_c("ميم"), "، وبالأحرف: ", طول("ميم"))
مخرجات مسجّلة من المجمّعmeem 17_خارجي.م · meem 0.10.0+b01b55f
1.4142135623730951ميم بالبايتات: 6، وبالأحرف: 3
التجاوز خطأ لا سلوك غير معرَّف
كبير = 9223372036854775807
اطبع(كبير)
اطبع(كبير + 1)
مخرجات مسجّلة من المجمّعmeem ذاكرة_تجاوز.م · meem 0.10.0+b01b55f
9223372036854775807
[خطأ تشغيل E0341] سطر 3:11 - تجاوز العدد الصحيح حدود 64 بت في العملية '+' (للالتفاف بدل الخطأ شغّل مع --wrap-overflow)  اطبع(كبير + 1)

رمز الخروج: 3

في فهرس الأخطاء: E0341

ما سيفاجئك (من تجربة كتابة برامج حقيقية بـ 0.9.1، ومُراجَع على 0.10.0)

رابط إلى قسم «ما سيفاجئك (من تجربة كتابة برامج حقيقية بـ 0.9.1، ومُراجَع على 0.10.0)»
  • وضعان كما في Zig: meem برنامج.م يشغّله بكاشف ذاكرة يكشف الاستعمال بعد التحرير والتحرير المزدوج بسطريهما، وmeem build يبني بلا كاشف، وفيه الاستعمال بعد التحرير عبر اسم آخر سلوك غير معرَّف كما في C. ابنِ بـ --debug لتبقي الكاشف.
  • حرر لا يتبع: تحرير قائمة قوائم يترك الداخلية، كـ free على مصفوفة مؤشرات.
  • لا بايتات: طول وجزء بالأحرف، ولا نوع «بايتات».
  • لا أنواع معمّمة: الكومة تُكتب لنوع واحد.
  • هيكل_سي يُعرَّف قبل التصريح الذي يستعمله، والخطأ الأول قد تتبعه رسائل مضلِّلة.
  • الخطأ اسم بلا بيانات، ولا تتبّع لمساره.
  • لا printf ولا دوال بعدد متغير من الوسائط، ولا هياكل بالقيمة إلى C.
  • البناء الساكن (musl) أبطأ من --dynamic في البرامج الكثيرة الحجز.
  • الحدود والتجاوز مفحوصة افتراضياً، برسالة بالسطر والمعرّف.
  • خاتمه وخاتمه_عند_خطأ بترتيب صحيح عبر الدوال.
  • ملف تنفيذي ساكن بعشرات الكيلوبايتات، يُبنى في نحو ثانية.
  • أداء الشيفرة الخوارزمية بمستوى C (دايكسترا وشجرة بحث).
  • خارجي سطر لكل دالة، والرمز يُفحص عند الترجمة.

الذاكرة في ميم · ما هو خطر؟ · ميم مقابل C وZig · استدعاء C