زبان آقای هاشمی تلاشی است برای تولید یک زبان برنامهنویسی بومی، مناسب برای کسانی که قصد شروع برنامه نویسی را دارند.
اولین بار در تاریخ ۲۸ آذر ۱۳۹۸ در توییتی از طرف خالق این زبان به وجود آمدن آن به اطلاع عموم رسید.
دلیل انتخاب نام آقای هاشمی برای این زبان، علاقه شدید خالق زبان به شخصیتهای کتاب تعلیمات اجتماعی دبستان، که با نام خانواده آقای هاشمی شناخته میشوند، عنوان شده.
هر چند به نظر میاید که فعالیت آقای هاشمی در اداره پست ایران نیز تاثیر بسزایی در انتخاب نامش برای این زبان را ایفا کرده است!
در بخشهای بعدی این مستندات با خود زبان و ویژگیهای منحصر به فردی که آقای هاشمی در اختیار قرار میدهد آشنا خواهیم شد.
.نصب آقای هاشمی بسیار ساده است، شما تنها نیاز دارید که فایل اجرایی آخرین نسخه را از گیتهاب آقای هاشمی
دانلود
.کنید
لطفا توجه داشته باشید که به طور پیش فرض این فایل اجازه اجرا ندارد. پس اولین مرحله اجازه اجرا دادن به این فایل خواهد بود.
برنامههای قابل اجرا توسط این زبان باید در فایلهایی با پسوند file_name.hashem ذخیره شده باشند.
حالا میتونیم با هم برنامه درود جهان را با این زبان بنویسیم تا بیشتر با سینتکس این زبان آشنا بشیم.
ابتدا فایلی با نام dorood-jahan.hashem ایجاد کنید که حاوی کدی که در پایین آمده باشد.
همانطور که مشاهده میکنید ساختار زبان آقای هاشمی بسیار مشابه با زبانهای شبه C است.
برای اجرای برنامه بالا تنها کافی است آدرس فایل را به hashem بدهید.
اگر در اجرای مراحل بالا مشکلی داشتید حتما برای آقای هاشمی
ایشو
بسازید تا بتونیم زودتر مشکلات رو حل کنیم.
برای تعریف متغیر تنها کافی است که نام متغیر را نوشته و سپس آن را مقداردهی کنیم.
برای افزودن کامنت در این زبان از دو شیوه استفاده میگردد. یا استفاده از دو اسلش برای افزودن جزئیات (مانند نتیجه بچاپ در کد بالا) یا خط مورب و یک ستاره برای یک فضای کامنت شده. توجه: قسمت های کامنت شده تنها برای مطالعه انسان و غیر قابل پردازش برای زبان آقای هاشمی هستند
از خط مورب و دو ستاره برای تولید مستندات استفاده میشود.
با استفاده از دستوراتی همچون اگر
age
و تا
ta
میتوانیم بر جریان برنامه نظارت داشته باشیم.
contron flow
به شکل نمونه در برنامه زیر در صورت درست بودن شرط متن چاپ شده خروجی
doroste
خواهد بود ولی در صورت نادرست بودن
dorost nist, ye fekri barash bokon
چاپ خواهد شد
با استفاده از کلیدواژه تا تا زمانی که شرط ما صحیح باشد خطوط نوشته شده در داخل حلقه اجرا خواهد شد. در حلقه زیر اعداد از یک تا ۱۰ با یکدیگر جمع شده و نتیجه در یک متغیر ذخیره میگردد.
توابع در زبان برنامهنویسی آقای هاشمی با bebin تعریف میشوند.
در ادامه ساختار یک تابع را مشاهده میکنید.
پس از کلمهکلیدی bebin نام تابع، در اینجا esme_functione_bebin نوشته شده است.
سپس ورودیهای مورد نظر برای تابع را داخل پرانتز مشخص میکنیم.
توجه داشته باشید که مقادیری که درون پرانتز تعریف شده است، برای اسکوپ داخلی تابع، قابل دسترسی هستند و اصطلاحا local هستند.
تعریف تابع، مشابه چیزی که در بالا مشاهده میکنید،به خودی خود قرار نیست نتیجهای در بر داشته باشد. بنابرین، میبایست تابع مورد نظر «صدا زده شود» یا «call» بشود.
به این ترتیب ما خواهیم توانست بارها از قابلیت تابع در کدهای خودمان استفاده کنیم بدون آنکه مجبور شویم تمام دستورات را بنویسم. فقط کافی است تابع صدا زده شود.
تابع azinja
در زبان برنامهنویسی آقای هاشمی، یک تابع خاص وجود دارد به نام azinja و این نام برای شروع برنامهها رزرو شده است.
به عبارت دیگر، azinja زمانی که یک فایل .hashem را در خط فرمان سیستم عامل خودتان اجرا میکنید، هستهی زبان آقای هاشمی باید نقطهی شروعی را انتخاب کند و به اجرای
برنامه بپردازد. این سوال که هسته زبان آقای هاشمی ازکجا شروع میکند پاسخش bebin azinja است.
مثال
یک نمونه تابع برای جمع دو عدد. این کد در فایلی با نام jam_adad_ha.hashem ذخیره میکنیم.
اجرای همین قطعه کد زبان هاشمی و نتیجه آن را در ادامه میبینید.
توابع بازگشتی
توابع بازگشتی یا recursive به توابعی گفته میشود که خودشان را صدا میزنند.
در ریاضیات از این حالت برای تعریف تابع
فاکتوریل
و یا برای
نمایش سری فیبوناچی
استفاده میشود.
پیاده سازی کد بازگشتی فاکتوریل در زبان برنامه نویسی آقای هاشمی :
خروجی:
استفاده حرفهای تر از توابع
برای محاسبه ترکیب ریاضی و محاسبه تعداد حالت های ممکن برای انخاب k عضو از یک مجموعه n عضوی فرمول زیر را به کار میبریم
اما در این فرمول سه بار از فاکتوریل استفاده شده است و ما در یک تابع جدید، تنها کافی است سه بار تابع factorial مثال قبلی را فراخوانی کنیم
برای تعریف کردن یک رشته متنی (string) میتوان از علامت " استفاده کرد.
شروع و پایان یک رشته متنی میبایست با کاراکتر نقل قول (کوتیشن مارک یا " مشخص شود).
رشتههای متنی در زبان برنامه نویسی آقای هاشمی، از استاندارد utf-8 پشتیبانی میکنند. به عنوان نمونه، نحوه کار با رشتهها را در نمونه کد زیر مشاهده می کنید:
خروجی
کاراکترهای خاص
در صورتی که بخواهیم داخل رشته، از کاراکترهای خاص استفاده کنیم، این کاراکترها را با علامت فرار (اسکیپ، خط مورب رو به عقب، و یا بک-اسلش \) نمایش میدهیم.
در مثال زیر، بین کاراکترهای درود و جهان یک کاراکتر \n مشاهده میکنید. این کاراکتر به معنای خط جدید بوده (new line) و در خروجی نیز بخش دوم در خط جدید نمایش داده شده است.
خروجی
چند نمونه از کاراکترهایی که با علامت فرار \ نمایش داده میشوند را در جدول زیر مشاهده مینمایید.
تعریف بلوک متنی
در صورتی که بخواهیم متن طولانیای در قالب رشته بنویسیم، اضافه کردن \n از خوانایی هاشمیاسکریپت های نوشته شده میکاهد.
بنابرین، راهکار جایگزین می تواند استفاده از سه علامت نقل قول در آغاز و پایان رشته باشد ("""). در این حالت قادر خواهیم بود داخل متن خط جدید تعریف کنیم
(کلید Enter بزنیم)
قبل از jfarzand به معرفی مختصری درباره json بپردازیم.
جیسان (به انگلیسی: JSON) مخفف JavaScript Object Notation (نشانهگذاری شیء جاوااسکریپت)، یک استاندارد باز متنیِ سبک برای انتقال دادهها است به گونهای که برای
انسان نیز خوانا باشد. جیسان از زبان اسکریپتنویسی جاوااسکریپت در نشاندادن ساختمان دادههای ساده و آرایههای انجمنی
مشتق شدهاست. با وجود ارتباط عمیقی که با جاوااسکریپت دارد، جیسان مستقل از زبان است و مفسرهایش تقریباً
برای هر زبانی موجود هستند.
در زبان آقای هاشمی، با تاکید بر نفی سکسیزم و جنسیت زدگی، کلمه son که منحصرا به فرزند ذکور اشاره میکند، حذف گردیده و farzand جایگزین آن شده است.
استفاده از jfarzand
خروجی
همانطور که مشاهده میکنید، استفاده از jfarzand از طریق فضای نام نیز ممکن است. چنان چه به کلیدی از یک شئ jfarzand اشاره شود،در حالی که کلید مذکور پیشتر تعریف نشده باشد، خروجی POOCH خواهد بود.
زبان برنامهنویسی آقای هاشمی اجازه تعریف expressionهایی که نتیجه آنها مقداری Boolean است را به برنامهنویسان میدهد.
اما تا به این لحظه چون لیترالی برای نمایش مقدار نیافته بودیم، امکان انتساب مقدار به صورت مستقیم وجود نداشت.
تیم طراحی زبان برنامهنویسی آقای هاشمی به این نتیجه رسیده که مانند بقیه زبانها از کلمه کلید false استفاده کند و جایگزینی برای آن مشخص نکند
ولی مقدار true در زبان برنامهنویسی آقای هاشمی وجود نخواهد داشت، چرا که این لیترال بیانگر این حقیقت نیست که مقدار قطعیت ۱۰۰ درصدی دارد.
به همین دلیل تصمیم گرفته شد این کلمه کلیدی با کلمه کلیدی zirsakht جایگزین شود.
دلیل انتخاب کلمه zirsakht
ما به دنبال سمبلی ایرانی بودیم که نامش بیانگر صحت و درستی ۱۰۰ درصدی باشد. در میان انتخابهای روی میز، یگانه شرکت ارتباطات زیرساخت ایران توجه ما را به خودش جلب کرد.
زیر ساختی که در زیر مشکلات فراوانی که کشورهای همسایه با قطع کردن اینترنت و ارتباطهای شبکه برایش ایجاد کردند هیچ وقت خم به ابرو نیاورد و همیشه به ما اطمینان کامل داده که زیر ساخت ایران موردی نداره و همه چی عالیه و مشکل جای دیگهاست.
از این روی تصمیم گرفتیم به پاس تقدیر از زحمات شبانهروز کارمندان این شرکت، و با کمال میل، از لیترال zirsakht برای نمایش مقدار درست در زبان برنامهنویسی آقای هاشمی استفاده کنیم.