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 نامعلوم است بجز اثرات جانبی مانند سرعت اجرا و
حافظه ی استفاده شده .