نمایش نتایج 1 تا 40 از 329

نام تاپیک: ساخت Compiler و یک زبان برنامه نویسی جدید

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #25

    نقل قول: ساخت Compiler و یک زبان برنامه نویسی جدید

    سلام.
    من داشتم توی گوگل "برنامه نویسی open source" رو جستجو می کردم، که به این انجمن رسیدم و بعدا شانسی این پست رو پیدا کردم.

    من پست آقای lamOverlord رو در اینجا خوندم که در مورد نوشتن یه نسخته جدید از VB نوشته بودند. و بیشتر بخش های این پست رو هم خوندم.

    آقا منم هستم. اصلا خودم دارم سعی می کنم به زبان برنامه نویسی جدید بسازم به اسم Rest. سینتکسی (syntax) که برای Rest در نظر گرفتم می شه گفت تقریبا چیزی شبیه به VB هست. ولی من اصلا VB رو کار نکرده بودم و سینکس رو تاحالا ندیده بودم. و چیزی که من می خواستم بسازم یه ورژن دیگه از python بود که به C یا Assembly تبدیل بشه. من مشکلی که داشتم این بود که نوشتن برنامه توی C سخت بود چون که هی باید سمی کلن می زاشتم و حافظه برنامه رو به صورت دستی free و allocate می کردم. و نوشتن برنامه توی python راحت تره، ولی زمان اجرای برنامه بیشتر می شه. و برنامه بهینه نیست اصلا. کاری که من می خواستم بکنم این بود که یه زبان برنامه نویسی بسازم که سینتکسش در حد پایتون ساده باشه و به C تبدیل بشه و تمام بهینه سازی های لازم رو انجام بده.

    البته سینکسی که در نظر گرفتم از python راحت تره و دیگه مثل پایتون لازم نیست که همه جملات داخل یه بلاک با یه tab جلو بره، به جاش آخر هر بلاک یه end اضافه می کنیم. مثلا اگه تعریف کردن function توی python این شکلی باشه:
    کد HTML:
    def sum(a, b):
        return a + b
    چیزی که توی Rest در نظر گرفته بودم اینه:
    کد HTML:
    def sum(a, b)
        return a + b
    end
    چندین تا زبان برنامه نویسی دیگه هم با سینتکس های ساده تر داره ساخته می شه، وجود دارند که اینا هستن: vlang, nim و crystal

    nim تا یه حد خیلی زیادی جلو رفته و یه کتاب هم برای آموزشش نوشته شده، و به زبان C و javascript هم تبدیل می شه. ولی بهینه نمی شه. یا می شه گفت یه سری قابلیت براش در نظر گرفتن برای بهینه سازی، ولی بهینه سازی حداکثر رو انجام نمی ده. و می تونم بگم که می شه زبان برنامه نویسی نوشت که خیلی بهینه تر باشه.

    crystal هم سینتکس خیلی ساده ای داره و مثل Ruby می مونه و به native byte code تبدیل می شه. سینتکسش رو هم یه نگاهی بکنید، بدک نیست.

    vlang رو زیاد نخوندم در موردش ولی خیلی بهینه شده کامپایل می شه. و سینکس خیلی راحتی نداره.

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

    نمی دونم که می تونیم باهم هم کاری داشته باشیم یا نه، یا اصلا اسم زبانی که می خوایم بسازیم رو، چی بزاریم. ولی من آماده همکاری هستم اگه ایده و نظری دارید بگید که با هم گفت و گو کنیم. و در ضمن اسم Rest رو برای این انتخاب کردم که انگاری که استراحت برنامه نویس ها باشه. بشه توی یه سینتکس ساده برنامه نویسی کرد و به بهترین شکل ممکن بهینه بشه. البته هنوز ایده است تا به پروژه کامل برسه.

    اینجا می تونید سورس Rest رو که دارم می نویسم ببنید. و اینجا هم می تونید طرحی که در نظر گرفتم رو ببنید. اگه چیزی رو متوجه نشدید بگید که توضیح بدم.

    و یه پیشنهاد دارم توی پست هاتون رو که می خوندم:
    بین FASM و MASM شک داشتید که به کدوم کامپایل بشه، به نظر من به NASM کامپایل بشه بهتره. چون که اولا NASM خیلی معروف تره و افراد بیشتری روش کار کردند و open source هم هست، و هم به خاطر این که هم برای ویندوز و هم برای لینوکس کامپایل می کنه. ولی MASM برای لینوکس کامپایل نمی کنه، open source هم نیست و FASM هم به اندازه NASM پیشرفته نیست. یه اسمبلر دیگه هم وجود داره به اسمه GAS که وقتی C یا Cpp می خود کامپایل بشه به اون تبدیل می شه، ولی اصلا راحت نیست و بیشتر برای C ساخته شده. یه راه حل دیگه هم وجود داره اونم اینه که از library هایی که برای تولید byte code استفاده می شه، بهره ببرید که بستگی به این داره که با کدوم راحت تر باشید.

    منتظر نظرتون هستم.
    آخرین ویرایش به وسیله mak12776 : دوشنبه 06 آبان 1398 در 11:17 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •