دانلود مقاله Self system (خود پویایی)

  • Code: # 18303

  • تعداد صفحات: 7
  • فرمت فایل: Word
  • سال: مشخص نشده
  • مقطع: مشخص نشده
  • دسته بندی: کامپیوتر - IT
قیمت جدید: ۷,۰۰۰ تومان
۱۱,۰۰۰ تومان
دانلود
  • خلاصه
  • فهرست
  • خلاصه دانلود مقاله Self system (خود پویایی)

    System - Self :
    از آنجایی که Self به عنوان یک تک فرایند UNIX و یا یک تک برنامه ی Macintosh اجرا می شود بنابراین به دو بخش تقسیم
    می شود :
    1- (VM) virtual machine Self 2- Self world
    اجرای ( VM ) برنامه های Self توسط اشیایی در Self world تعیین می شود و مجموعه ای از متد های اصلی و اولیه که در C++
    نوشته شده اند را تهیه می کند که می توانند توسط متد های Self فراخوانی شوند تا اعمال پایه از قبیل اعمال حسابی اعداد صحیح ،
    کپی کردن اشیا و اعمال مربوط به ورودی و خروجی ( I/O ) را انجام دهند .
    Self world توزیع شده توسط VM کلکسیونی از اجرا های متفاوت اشیای Self به صورت traits و prototypes مانند همانند
    سازی ویژگی ها و فرهنگ واژه ها .

    این اشیا می توانند برای برنامه های شخصی تغییر داده شوند و یا استفاده گردند .

    The translation process - :
    برنامه های Self به دستورالعمل های ماشین در 2 مرحله ترجمه می شوند .

    دستورالعمل های برنامه یا درون محیط برنامه نوشته می
    شوند و یا از فایلی که به اشیای Self تجزیه شده خوانده می شود .

    بعضی از این اشیا ، اشیای داده ای هستند ( data objects ) و
    بقیه متد ها هستند .

    متدها رفتار خاص خود را دارند که توسط bytecodes نمایش داده می شوند .
    bytecodes دستورالعمل هایی هستند برای هر پردازنده ی مجازی ساده ( Simple Virtual Processor ) که دستورالعمل هایی
    مانند Push receiver یا send the ‘x’ message را می فهمند .

    علت بقای VM اینطور وانمود می شود که bytecodes ها
    مستقیماً توسط کامپیوتر اجرا می شوند .

    برنامه نویسان می توانند اعماق Self world را برای سطح های bytecode کاوش کنند ،
    اما نه بیشتر.

    این وانمود سازی آنان را مطمئن می سازد که رفتار برنامه های Self را تنها با نگاه به کد منبع برنامه می توان فهمید .
    مرحله ی دوم از ترجمه ، کامپایل(compilation) واقعی bytecodes ها به دستورالعمل ماشین(machine code) است اینکه
    چطور اجرای bytecodes انجام می شود و به طور کلی در سطح level Self نامعلوم است بجز اثرات جانبی مانند سرعت اجرا و
    حافظه ی استفاده شده .


    در زمان کامپایل ابتدا یک پیغام عملاً فرستاده می شود ، بنابراین اجرای اولین برنامه کندتر از اجرای بعدی خواهد بود .

    Language Reference - : در این بخش به ساختار های نحوی و معنایی Self می پردازیم که تغییراتی پس از نسخه ی اولیه روی آن اعمال شده است و درکی پایه از مفهوم شی گرایی فرض گردیده است .

    نحو(Syntax ) توسط (Extended Backus-Naur Form (EBNF توصیف شده است .

    سمبل های نهایی درون Courier ( پیام رسان) و بین تک کوتیشن ' ' ) ) ظاهر می شوند اما بایستی درون کد بدون کوتیشن ( ' ' ) نوشته شوند .

    سمبل های غیر نهایی به صورت italic هستند .

    جدول زیر meta-symbols را توصیف می کند : - Objects : اشیا یک موجودیت بنیادی از Self هستند .

    هر موجودیت در برنامه های Self توسط یک یا چند شی نشان داده می شود ، حتی کنترل توسط اشیا انجام می شود .

    بلوک ها بستار های Self هستند که برای اجرای ساختار کنترلی تعریف شده توسط کاربر استفاده می شوند .

    یک شی ترکیبی از دسته ای از Slots (می تواند خالی باشد) و بطور اختیاری کد Code است .

    یک Slot ، یک جفت name-value است .

    Slot ها شامل شامل اشاره گر ها به سایر اشیا هستند .

    زمانی که یک Slot در طول یک message lookup پیدا می شود شی موجود درون Slot ارزیابی می شود .

    از آنجایی که هر چیزی درون Self به صورت شی است ، هیچ یک از اشیا هدفی مشابه با دیگر اشیا را ندارد .

    انواع معینی از اشیا به تعداد کافی درتخصصی کردن نقش ها و وظیفه ها به بخش های فنی و نحوی کارا ، اتفاق می افتند .

    در این بخش دو نوع شی معرفی شد که با عنوان data objects یا (plain” objects“) و دو نوع شی همراه با کد با عنوان Ordinary methods و block Methods مشخص می شوند .

    - Syntax : لغات شی درون پرانتز قرار می گیرند و شامل هر چیزی که شی را توصیف می کند ازقبیل لیستی ازSlot های محدود شده به (‘ | ’) ، کدهایی که در موقع ارزیابی شی اجرا می شوند ، هستند برای مثال : هر دو Slot و کد اختیاری هستند ، هر یک از ‘( | | )’ و ‘( )’ مشخص کننده ی یک شی خالی هستند .

    اشیای بلوکی ( Block objects ) مانند سایر اشیا نوشته می شوند با این تفاوت که به جای پرانتز از [ ] استفاده می شود برای مثال : یک Slot list شامل یک سلسله توصیف کننده Slot descriptors است که با نقطه از هم جدا شده اند و نقطه ی پایان Slot list اختیاری است همچنین یک Slot list می تواند خالی باشد .

    کد یک شی نیز یک سلسله عبارت است که با نقطه ازهم مجزا شده اند، هر عبارت شامل یک سری ازmessage sends , literals است .آخرین عبارت درون کدِ یک شی ممکن است با عملگر ‘^’ زود تر معرفی گردد .

    - Data objects : Data object ها اشیایی بدون کد هستند که می توانند دارای هر تعدادی از Slot ها باشند برای مثال شی زیر دارای دو Slot با نام X,Y است .

    یک شی داده ای Data objects زمانی که ارزیابی شود خودش را باز می گرداند .

    - Code: کد تسلسلی از عبارات است .

    این عبارات به صورت صحیح ارزیابی می شوند و مقدار نتیجه دور انداخته می شود مگر اینکه این مقدار تعیین کننده ی نتیجه ی ارزیابی نهایی کد باشد .

    آرگومان های واقعیِ یک ارسال پیغام (message send) ، از چپ به راست قبل از اینکه پیغام ارسال شود ارزیابی می شوند به عنوان مثال در عبارت زیر : ابتدا 1 ارزیابی می شود سپس 5 * i و پس از آن 2 * j و بعد از آن نیز [|:k | k print] .

    نهایتاً پیغام to:By:Do: ارسال می شود .

    - Methods : Ordinary methods یا(simply “methods”) متد های معمولی متد هایی هستند که درون سایر کد ها جاسازی نشده اند .

    یک متد می تواند slot هایی به عنوان آرگومان داشته باشد (argument slots) و یا دارای Slot های محلی باشد .

    یک متد معمولی معمولاً یک Slot آرگومانِ پدرِ مجازی که Self نامیده می شود ، دارد .

    متد های معمولی در Self معادل با متدهای Smalltalk هستند .

    اگر یک Slot شامل یک متد باشد مراحل زیر به هنگام ارزیابیSlot به عنوان نتیجه ی یک ارسال پیغام ، انجام می شود : 1- شی متد همانند سازی می شود و یک شی فعالیت متد ( method activation object ) جدید شاملSlot ها یی برای آرگومان های متد و محلی ایجاد می شود .

    2- Slot پدرِ کپی شده (self parent slot) مقدار دهی اولیه به گیرنده ی پیغام می شود .

    3- Slot های آرگومان کپی شده (argument slots) اگر وجود داشته باشند با مقادیر آرگومان های واقعی مقدار دهیِ اولیه می شوند .

    4- کد مربوط به متد درون فضای این شی فعالیت اجرا می شود .

    برای مثال متد را در نظر بگیرید : این متد یک اسلات آرگومان دارد (Slot arg) و مربع این آرگومان را به عنوان خروجی بر می گرداند .

    - Blocks : بلوک ها بستار های Self هستند ، که برای اجرای ساختار کنترلی تعریف شده توسط کاربر استفاده می شوند .

    بلوک ها که محدود به [ ] هستند دو نوع شی را تعریف می کنند : 1- block method object : شامل کد بلوک بوده و احاطه کردن block data object .

    2- block data object : شامل یک اشاره گر پدر ( اشاره به شی ای دارای رفتار مشترک با اشیای بلوک ) و یک Slot دارای شی Block method .

    بر خلاف شی یک متد معمولی، شی متد بلوکی(block method object) دارای Self Slot نیست به جای آن یک اسلاتِ پدر بی نام دارد که توسط شی فعالیت برای احاطه ی لغویِ بلوک یا متد ، مقداردهیِ اولیه می شود .

    بنابراین implicit-receiver messages فرستاده شده درون یک متد بلوکی حوزه ی لغوی هستند .

    اسلاتِ پدرِ بدون نام شی متد بلوکی در سطح SELF نامعلوم هستند و به طور صریح قابل دسترس نیستند .

    برای مثال بلوک [ 3 + 4 ] اینگونه است : انتخاب کننده ی(Selector) متد بلوکی بر پایه ی تعداد آرگومان ها است .

    اگر بلوک آرگومانی نداشته باشد انتخاب کننده value است .

    اگر یک آرگومان بگیرد انتخاب کننده value: است .

    اگر دو آرگومان بگیرد انتخاب کننده value:With: است و برای آرگومان های بیشتر انتخاب کننده فقط با تعداد کافیWith: مطابق با تعداد آرگومان ها ،گسترش می یابد .

    ارزیابی بلوک دارای دو فاز است .

    در فاز اول ، شی بلوکی ایجاد می شود چون بلوک ارزیابی شده است (از آرگومان ها برای یک ارسال پیغام استفاده می شود ).

    بلوک همانند سازی می شود و یک اشاره گر به رکورد فعالیت برای احاطه ی حوزهی لغوی خود می دهد (رکورد فعالیت جاری).

    در فاز دوم متد های بلوک ارزیابی می شوند به خاطر ارسال بلوک مناسب و متفاوت از پیغام مقدار Value .

    متد بلوکی بعد از آن همانند سازی می شود و Slot های آرگومان آن کامل(پر) می شوند .

    slot پدر بدون نام متد همانند سازی شده با استفاده از اشاره گر حوزه ی تعیین شده در فاز یک مقدار دهی اولیه می شود و نهایتاً کد بلوک اجرا می شود .

    یک خطا برای ارزیابی متد بلوکی بعد از رکورد فعالیت برای احاطه ی حوزه ی لغوی بر میگردد ، چنین بلوکی یک non-lifo block نامیده می شود چون بازگشت از آن، از مفهوم last-in, first-out در شی فعالیت تخطی کرده است .

    این محدودیت عموماً برای تخصیص دادن رکورد فعالیت به پشته ایجاد می شود .

    در نسخه های بعدی Self این محدودیت کمتر خواهد شد حداقل برای بلوک هایی که متغیر ها درون حوزه ی آنها قابل دسترس نیستند کمتر خواهد شد .

    - Read-only slots : نام Slot از علامت ' = ' پیروی می کند و یک عبارت ، یک read-only slot ارزیابی شده توسط نتیجه ی ارزیابی عبارت در زمینه اصلی را نشان می دهد .

    برای مثال یک نقطه ی ثابت ممکن است بدین گونه تعریف شود : نقطه ی نتیجه، دارای سه Slot فقط خواندنی ( Read-Only) مقداردهی شده است .

    مرجع : Sun System

  • فهرست دانلود مقاله Self system (خود پویایی)

  • ثبت سفارش
    عنوان محصول
    قیمت