اجرای فایل .js
۱۴۰۱ مرداد ۲۶, چهارشنبه ساعت ۶:۴۶خب الان فایل .js رو به صورت جدا از فایل .do اجرا میکنم. فعلا کمی باگ دارم که باید اونها رو برطرف کنم.
خب الان فایل .js رو به صورت جدا از فایل .do اجرا میکنم. فعلا کمی باگ دارم که باید اونها رو برطرف کنم.
آیا میشه dolang رو کامپال کرد ؟
بله. کامپایل شدن کلا ساختار پیچیده ای نیست و یک سری استاندارد برای سیستم عامل های مختلف هست که سیستم عامل به صورت پیش فرض اونها رو به همین شیوه ای که ما در زبان jit اجرا میکنیم، اجرا میکنه.
مثلا استاندارد لینوکس elf و coff هست. ( elf جایگزین coff هست که در یونیکس قبلا استفاده میشده ... )
یا ویندوز هم استاندارد خودش رو دارد.
مثلا زبان جاوا به جای اینکار استاندارد خودش رو تعریف کرده که شما به javac فایل رو کامپال میکنید و با java اون رو اجرا میکنید ...
dolang رو هم میشه به هر دو روش پیاده سازی کرد. من مد نظرم هست که بایت کد استاندارد cpu رو به همین شکلی که خروجی میدم با اطلاعات بیشتری ذخیره کنم و مثلا با یک اسمبلر ساده برنامه رو اجرا کنم. اینکار صد در صد در سرعت اجرا شدن برنامه تاثیر زیاده داره ...
برای اینکه بتونم باگهایی که داخل برنامه هست رو برطرف کنم باید با dolang برنامه های کاربردی بنویسم که بشه از اون ها استفاده کرد. مثلا با ایجاد بستر استفاده از mysql و یا یک http server ساده یا یک json parser ساده میشه خیلی از باگ ها رو برطرف کرد.
خب این قسمت رو هم انجام دادم. بعد از انجام && باید not یا ! هم پیاده سازی کنم. بعد از اون به سراغ += میرم. این قسمت رو که تموم کنم به بررسی memory leak برای کلاس ها داخل scope میرسم و اون رو تموم میکنم. بعدش هم پیاده سازی let و بعد از اون هم بررسی نهایی و تست های نهایی رو انجام میدم و پروژه رو برای x86 میبندم و به سراغ x64 میرم ...
یک نکته ای که خیلی بد جا افتاده رو من اینجا بگم
اسمبلی سخت نیست. نوشتن کد با اسمبلی سخت هست
یا مثلا brain fuck سخت نیست. نوشتن کد با brain fuck سخت هست
این ایجاد ذهنت خوب باعث میشه اگر دوست داشته باشید اسمبلی یاد بگیرید بدونید که اصلا چیز پیچیده و سختی نیست
این قسمت رو هم تکمیل کردم
main() {
var s3 = "test";
print( s3[1] );
print("\n");
print( s3[1]+"\n" )
s3[0] = 'a';
s3[1] = 'd';
print( s3 )
}
این امکان رو اضافه کردم که از خط جدید بشه به عنوان پایان دستور استفاده کرد ( شبیه به js ) با این تفاوت که خللی در string های به صورت چند خطی به وجود نمیاد. این به نظر من مشکل js هست که مطمئنا اوایل کار نتونستن اون رو برطرف کنن و به این شکل مونده ...
صفحه اختصاصی dolang در گیت هاب
خب تمامی قسمت های مربوط به کلاس ها و توابع و متغییر ها و ... پیاده سازی شد.
httpServer.do مثال خیلی خوبی هست که با تکمیل اون میتونم یک httpServer خیلی ساده پیاده سازی کنم.
برای تموم شدن پروژه در قسمت x86 باید پیاده سازی let و operator ها رو انجام بدم. تا پروژه برای قسمت x86 قابل استفاده باشه. البته این رو هم بگم که تایپ های float, long, hex رو هم باید در برنامه پیاده سازی کنم. این قسمت ها خودش در بک کار خیلی زمانبر هست. من این قسمت ها رو گذاشتم برای آخر کار چون جذابیتش برام کمتر از پیاده سازی کلاس و ... بود.
این قسمت رو هم تکمیل کردم.
چند تا جا چند تا باگ دارم که اونها رو باید برطرف کنم تا پروژه به عنوان dolang تکمیل بشه.
برای js یک پروژه دیگه تعریف میکنم و به صورت مجزا اون رو توسعه میدم
main() {
test();
}
test() {
print("here");
}
class test {
a() {
this.b();
}
b() {
print("in b\\n");
}
}
main() {
var a = new test;
a.a();
}