موضوع مقاله: فکتور (زبان برنامه‌نویسی) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # فکتور (زبان برنامه‌نویسی) | مقدمه: فکتور (به انگلیسی: Factor) یک زبان برنامه‌نویسی پشته گرا است که توسط «اسلاوا پستو» ایجاد شده‌است. | ## بخش 1: فکتور (زبان برنامه‌نویسی) | زبان برنامه‌نویسی Factor یک زبان پویا است و دارای مدیریت خودکار حافظه و همچنین ویژگی‌های قدرتمند «فرابرنامه‌نویسی» است. این زبان برنامه‌نویسی دارای یک پیاده‌سازی واحد است که مرکب از یک کامپایلر بهینه‌ساز خود میزبان و یک محیط توسعه تعاملی است. تاریخچه "اسلاوا پستو" در سال 2003 Factor را به‌عنوان یک زبان برنامه‌نویسی برای یک بازی ویدئویی ایجاد کرد. پیاده‌سازی اولیه این زبان که در حال حاضر به آن JFactor گفته می‌شود، در جاوا پیاده‌سازی و در ماشین مجازی جاوا اجرا شده بود. اگرچه زبان اولیه از نظر "قالب دستورالعمل‌هاً شبیه زبان برنامه‌نویسی Factor جدید است، اما زبان جدید در شرایط عملی بسیار متفاوت بوده و اجرای فعلی آن بسیار سریع‌تر است. در اصل، برنامه‌های Factor بر روی «دست‌کاری اشیاء جاوا» و «قابلیت بازتاب جاوا» متمرکز شده‌اند. از همان ابتدا، فلسفه طراحی تغییر این زبان برنامه‌نویسی به‌منظور مناسب شدن برای برنامه‌های نوشته شده در آن است. با توجه به اینکه پیاده‌سازی و کتابخانه‌های استاندارد Factor دقیق‌تر شده‌اند، نیاز به ویژگی‌های خاص زبان مشخص و اضافه شده‌اند. JFactor فاقد یک «سیستم شیءای» بوده که در آن می‌توان کلاس‌های خود را تعریف کرد، نسخه‌های اولیه Factor اصلی نیز به همین شکل بوده‌اند؛ این زبان از این نظر مشابه اسکیم است. (مترجم: بازتاب یا Reflection در برنامه‌های جاوا این امکان را فراهم می‌سازد که در زمان اجرای یک برنامه بتوان بدون دانستن نام یک کلاس، رابط، فیلد یا متد آن‌ها را فراخوانی کرده و اطلاعاتی دربارهٔ آن‌ها کسب کرد؛ به عبارت دیگر، Reflection عبارت است از توانایی اصلاح ساختار و رفتار برنامه در زمان اجرا (زمانی که برنامه در ماشین مجازی جاوا در حال اجرا است). این قابلیت ابزاری قدرتمند برای نوشتن برنامه‌هایی است که می‌توانند در زمان اجرا تصمیماتی را بگیرند). ویژگی‌های مهم دیگر این زبان عبارت‌اند از کلاس‌های چندگانه، ترکیب کننده درون‌خطی، ماکروها، کلمات تجزیه کننده تعریف شده توسط کاربر و سیستم واژگان مدرن که به‌صورت مرحله به مرحله اضافه شده‌اند بطوریکه کاربرد (سودمندی) آن‌ها مشخص شده‌است. این رابط پیش از ایجاد یک پلاگین برای بخش C پیاده‌سازی هر کتابخانه خارجی که Factor باید با آن ارتباط برقرار کند، انتخاب شده بود و دارای مزایای تشریحی بودن، کامپایل سریع‌تر و نوشتن آسان‌تر است. | ## بخش 2: فکتور (زبان برنامه‌نویسی) | (مترجم: رابط عملکرد خارجی یا foreign function interface مکانیسمی است که وقتی برنامه‌ای به زبانی نوشته می‌شود، می‌تواند روتین‌هایی را فراخوانی کند یا از سرویس‌هایی که به زبان‌های دیگر نوشته شده‌استفاده کند) پیاده‌ساز اولیه جاوای این زبان فقط مشتمل بر یک مفسر بود، اما بعداً یک کامپایلر به «کد بایت» جاوا به آن اضافه شد. در ابتدا، این نسخه فقط شامل یک مفسر بود، اما این مفسر با دو کامپایلر جایگزین شد که در موارد متعددی استفاده می‌شود. (مترجم: وقتی‌که می‌خواهیم برنامه‌ای را اجرا کنیم، کدهای این برنامه توسط کامپایلر جاوا به «بایت کد» (bytecode) تبدیل می‌شوند و درون فایلی با همان نام قبلی اما این بار با پسوند .class ذخیره می‌شوند. کد (کد برنامه در این زبان برنامه‌نویسی) مبتنی بر پروسه‌های کوچک است که word گفته می‌شوند. در کد معمولی، طول این پروسه‌ها 1-3 خط بوده و یک پروسه با بیش از 7 خط طولانی به ندرت استفاده می‌شود. موردی (برنامه‌ای) که اصطلاحاً با یک پروسه در زبان‌های برنامه‌نویسی دیگر بیان می‌شود می‌تواند به‌عنوان چند word در Factor نوشته شود. هر word دارای تعداد مشخصی آرگومان ورودی (متغیر ورودی) و دارای تعداد ثابتی از مقادیر بازگشتی است. آرگومان‌ها با استفاده از "نشانه‌گذاری لهستانی معکوس" از یک پشته اطلاعات به word منتقل می‌شوند. پشته فقط برای سازمان‌دهی فراخوانی worldها و نه به‌عنوان یک ساختمان داده استفاده می‌شود. استفاده از پشته در زبان برنامه‌نویسی Factor مشابه استفاده از پشته در زبان برنامه‌نویسی Forth است؛ به همین دلیل، این دو زبان، (به‌عنوان زبان‌های) پشته‌ای در نظر گرفته می‌شوند. forth از زبان‌های سطح بالاست که باید به زبان ماشین ترجمه شود تا برای کامپیوتر قابل فهم باشد. این دستور رشته را در جریان خروجی فعلی چاپ می‌کند (به‌طور پیش فرض، در واحد ورودی-خروجی یا نشان دهنده گرافیکی). «متغیرهای محلی حوزه لغوی»، امکان ذخیره و دسترسی به داده‌های موقت در یک پروسه را به شما می‌دهند. | ## بخش 3: فکتور (زبان برنامه‌نویسی) | به‌منظور انتقال اشیا در هنگام فراخوانی پروسه بدون استفاده از پشته، متغیرهای دینامیکی حوزه به‌صورت پویا استفاده می‌شوند. به‌عنوان مثال، جریان‌های ورودی و خروجی فعلی در متغیرهای دینامیکی حوزه به‌صورت پویا ذخیره می‌شود. [۵] یک سیستم برای ماکروها و همچنین برای توسعه اختیاری قالب دستورهای زبان برنامه‌نویسی Factor وجود دارد. قالب دستورهای Factor اغلب توسعه داده می‌شوند تا انواع جدیدی از تعاریف word و انواع جدیدی از «لفظ‌ها» برای ساختمان داده قابل استفاده باشد. این زبان نیز در کتابخانه XML به‌منظور فراهم کردن قالب دستورهای لفظی برای تولید XML استفاده شده‌است. به‌عنوان مثال، کلمه زیر یک رشته را دریافت و تولید یک شیء سند XML تولید می‌کند که یک سند HTML با تأکید بر رشته است: (مترجم: لفظ یا لیترال (Literal) به نشانه‌هایی در کد منبع برنامه گفته می‌شود که در زمان کامپایل به مقادیر مشخصی تفسیر می‌شوند؛ به عبارت دیگر لفظ‌ها مقادیر ثابتی هستند که به‌صورت نشانه‌هایی در کد برنامه نوشته می‌شوند. برای نمونه در زبان برنامه‌نویسی پایتون، ۴ یک عدد صحیح لفظی، "ABC" یک رشته لفظی، False یک مقدار بولی لفظی و {۱, ۲} یک تاپل لفظی است. پیاده‌سازی و کتابخانه‌ها زبان برنامه‌نویسی Factor شامل یک کتابخانه استاندارد بزرگ است که به‌طور کامل در این زبان نوشته شده‌است. امروزه، تجزیه کننده و کامپایلر بهینه‌سازی در این زبان (زبان برنامه‌نویسی Factor) نوشته شده‌اند. برخی بخش‌های اساسی این زبان مانند «زباله روب» و بخش‌های اولیه در C++ پیاده‌سازی شده‌اند. [۱۲] برای کامپایل کردن یک برنامه، این برنامه درون یک تصویر بارگذاری شده و تصویر ذخیره می‌شود. یک ابزار خاص در پروسه ایجاد یک تصویر حداقل برای اجرای یک برنامه خاص مشارکت کرده و نتیجه را صورتی که به‌عنوان یک برنامه مستقل باز شود، بسته‌بندی (پکیج) می‌کند. | ## جمع‌بندی | (مترجم: زبان Smalltalk یک زبان شی‌گرا و دارای تایپ پویا و زبان برنامه‌نویسی انعکاسی است که برای هر چه بیشتر آسان نمودن استفاده از کامپیوتر توسط افراد عادی طراحی شده‌است) کامپایلر Factor بهینه‌سازی‌های بسیار پیشرفته‌ای را انجام می‌دهد و به‌عنوان یک هدف برای تحقیق در تکنیک‌های بهینه‌سازی جدید استفاده می‌شود.