خب میبخشید که توضیحی ندادم و باید اینکارو میکردم. این زبان به صورت مفسر هست و یک کامپایلر نیست برای همین قواعدی که فرمودید متفاوت هست. از این رو کد به صورت کد سطح پردازشگر در نمیاد و به نوع پردازنده بستگی نخواهد داشت و در پلتفرمهای متفاوت هم بسته به ادرس دهی ها و اختلافات جزءی متفاوت هست که به سادگی قابل پیاده سازی هست. زبان پایتون هم تا حدودی به همین صورت هست. برام جالب بود با یک نگاه تونستید یک نمای کلی از اونچه انجام شده حالا درست یا غلطش بدست بیارید معلومه مطالعه خوبی در این زمینه کامپایلرها داشته اید. از ایده های شما استقبال میکنیم.
تشکر از توضیحاتی که دادید.

خب یک زبان باید قواعد صرفی و نحوی خودش رو داشته باشه:
این کد هم از این رو که صرف و نحوش متفاوت هست یک زبان متفاوت هست. تقریبا این زبان کلمه کلیدیش خیلی کم هست و نمیشه اونو از این نظر مشابه بقیه زبان ها دونست و اونها هم کلمات کلیدی ضروری هستند که نیاز به متفاوت بودنشون نیست. مثلا کلمات کلیدی this super print format count if else while return
خب اینها نیاز به تفسیر متفاوتی ندارند. در زبان هایی که نام بردید شما باید تعریف کنید که یک کلاس الان باید یک شیء جدید باشه یا نه و از اپراتور new استفاده میکنید ولی در اینجا خود زبان این رو تشخیص میده و اونو ایجاد میکنه و همچنین قابلیت هایی داره که در کد نوشته شده که در صفحه ذکر شده موجود بود نیست و توان برنامه نویس رو افزایش میده. اینکه کلمات مشابهی استفاده شده دلیل به مشابه بودنش نیست. به عنوان مثال یک حلقه در همه زبان ها نیاز هست و نیازی نیست تفسیر متفاوتی ازش ارائه بشه. یا مثلا به صورت خودکار این زبان هوشمند هست. در سی پلاس پلاس برای این کار از تمپلیت استفاده میکنید در اینجا تمام مقادیر به صورت هوشمند هستند. دقیقا نمیدونم شما چه انتظاری دارید از یک زبان جدید. هر چند حجمش کم هست ولی خب از یک پروژه دانشجویی خیلی بیشتر هست و در فکر گسترشش هستم منتها کاری نیست که یک نفر انجامش بده دلچسب باشه هر چند یک نفر هم میتونه. فعلا هم توابع کتاب خوانه ای زیادی نداره.
دقیقا منهم موافقم که تفسیر مجدد رویه های برنامه نویسی که در زبانهای استاندارد وجود دارد به یک فرم جدید به هیچ وجه کار عاقلانه ای نیست مگر که زبان کاربرد خاصی داشته باشه که نحو و صرف رویه های استاندارد در آن متفاوت باشه مثل زبان ruby , haskell
و اگر هم در تاپیک قبلی اشاره نداشتم تصور من این بود که شما در حال طراحی یک زبان جدید و کامپایلر هستید.

زبان باید مدیریت حافظه مخصوص خودش رو داشته باشه:
مدیریت حافظه به صورت پویا هست به این معنا که بتونه فریم های حافظه و پشته ها رو به حداقل برسونه.که یک متغیر هر نوع داده ای رو میپیره و حافظه خاصش رو خودش کنترل میکنه و اینکه به عنوان مثال یه رشته یا یک نوشته نیاز به یک حافظه یکپارچه نداره بلکه هر کاراکترش میتونه مقدار متفاوتی از حافظه و از جای متفاوتی از حافظه باشه که این کنترل حافظه رو خیلی باز و راحت کرده. در زبان هایی که نام بردید خب حافظه هر چند تخصیصش دینامیک هست اما مقدار تخصیص شده به صورت پشت سر هم هست مثلا اگه یک ساختار ایجاد کردید در این زبان ها یک قسمت ثابت از حافظه به اون ساختار اختصاص داده میشه یعنی اگر اون ساختار شامل ده متغیر هست این متغیر ها یک قسمت متناوب از حافظه رو اشغال میکنند برای همین شما میتونید اونها رو با ارزش دهی کردن به یک نوع متفاوت تبدیل کنید. در اینجا به صورت متناوب حافظه اختصاص داده نمیشه. با اینکه مدیریت حافظه دینامیک داره یعنی برای هر داده ای مقادیر متغیر ها متفاوت هست در عین حال سرعت خوبی داره و جای کار داره.میشه قابلیتی در مفسر ایجاد کرد که داده هایی که مدتی استفاده نمیشه با دستگاه ذخیره ساز منتقل بشه و در عین حال کاهش سرعتی ایجاد نشه
خوب حالا سوال این هست! تخصیص حافظه متغیرهای اتوماتیک یا محلی در stack هست؟ اگر اینطور هست زمانی که بر فرض مثال شما هر کدام از بایت های یک رشته را دریک خانه از حافظه ذخیره میکنید قطعا باید یک مدیر کنترل حافظه ای هم داشته باشید که دائما در حال جایگشت گذاری های مناسب در آدرس های حافظه هست که خوب این کار به بازدهی صدمه میزنه.
ویا اصولا چه نیازی به چنین آدرس دهی بوده؟
خوب همانطور که می دانید استک در پلت فورمهای مختلف ظرفیت های مختلفی هم داره! پس یک چالش مدیر حافظه کنترل این ظرفیت است.
حالا حافظه heap که تقریبا حافظه ای بزرگ هست و بستگی به مقدار حافظه ماشین و توان آدرس دهی سیستم عامل هست. را چطور کنترل میکنه ؟ مباحثی مثل padding byte هایی که کامپایلر C++‎ , C در حافظه ایجاد میکنند جهت آدرس دهی های معتبر را چگونه پیش بینی کرده اید؟ بله متوجه هستم که شما در حال تولید یک زبان مفسری هستید ولی به هرحال وقتی میگید که آدرس دهی های شما در آدرس های مختلف ذخیره میشه این مسائل پیش خواهد آمد.و البته خیلی مسائل دیگر در آدرس دهی ها که سالهاست دانشمندان کامپیوتر را با چالش مواجه کرده است به همین علت آدرس دهی هایی که در حال حاضر در کامپایلرها وجود دارد بی شک کمترین اشکال را دارد و بیشترین سازگاری را با حافظه داخلی ماشین و همچنین حافظه های کش پردازنده و همچنین ثبات های پردازشگر را دارا می باشند.

حقیقت امر این هست که دنبال الگوبرداری نبودم هر چند برخی الگوها از زبان پایتون و wren و سی گرفتم که اون هم به باطن زبان برمیگرده. خب اینکه بخوای توابع با نامهای متفاوت باشه صرفا کار جدیدی تعریف نمیشه برای همین من توابع رو مشابه بقیه زبان ها نام گذاری کردم که همین باعث میشه فکر کنید الگو برداری هست. اون روش هایی که در برنامه نویسی راحتی برنامه نویس رو در پی داشته سعی کردم در این زبان باشه و شامل نقاط قوت اونها باشه و در عین حال قوانین خاص اونها رو نداشته باشه تا برنامه نویس نیازی به مطالعه زیاد برای یادگیری زبان نداشته باشه بلکه بیشتر روی باطن زبان متمرکز بودم. یا مثلا مقادیر بازگشتی تابع میتونه در یک تابع میتونه از هر نوعی باشه میتونه کلاس یاشه یا یک عدد باشه یا یک مقدار کاراکتری خاص ویا یک رشته و ارایه و همینطور مقادیر ورودی هم تعریف محدودیت خاصی نداره
منهم با این حرف شما موافقم و اینکه زبانهای برنامه نویسی خیلی پیچیده و سخت مثل C,C++‎,Ruby را بتوان به یک زبان ساده تر تبدیل کرد کار ارزشمندی ولی همیشه این نکته را باید توجه کنید که بازدهی نباید خیلی فدای راحتی کد نویسی بشه البته که خواه ناخواه کمی از بازدهی را از دست میدید ولی به هرحال اگر میزان بازدهی خوب نباشه قطعا استقبال خوبی نمیشه از این زبان.