موضوع مقاله: ایفوریا (زبان برنامه‌نویسی) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ایفوریا (زبان برنامه‌نویسی) | مقدمه: ابتدا در Atari ST توسعه یافت (اگرچه به صورت عمومی منتشر نشده بود)، اولین نسخه تجاری برای پلتفرم ۱۶ بیتی DOS و نرم‌افزار مالکیتی بود. | ## بخش 1: ایفوریا (زبان برنامه‌نویسی) | دید کلی ایفوریا یک زبان رویه ای با اهداف عمومی است که بر روی سادگی، خوانایی، توسعه سریع و عملکرد از چند طریق متمرکز است. سادگی - فقط از چهار نوع داده داخلی استفاده می‌کند و بازیافت حافظه را به صورت خودکار اجرا می‌کند. خوانایی - کلمات کلیدی ساده انگلیسی را به جای استفاده از علائم نگارشی برای ترسیم ساختارها ترجیح می‌دهد. (برای کارآمد کردن حافظه) تاریخچه ایفوریا به عنوان یک پروژه شخصی برای اختراع یک زبان برنامه‌نویسی از ابتدا ساخته شد، توسط رابرت کریگ در Atari Mega-ST ایجاد شد. بسیاری از ایده‌های طراحی برای این زبان از پایان‌نامه کارشناسی ارشد کریگ در علوم کامپیوتر در دانشگاه تورنتو ناشی شده‌است. پایان‌نامه کریگ به شدت تحت تأثیر کار جان بکوس در مورد زبانهای برنامه‌نویسی تابعی (FP) بود. کریگ اجرای اصلی آتاری خود را به سیستم عامل ۱۶ بیتی DOS منتقل کرد و Euphoria برای اولین بار، نسخه ۱٫۰، در ژوئیه ۱۹۹۳ تحت مجوز اختصاصی منتشر شد. امکانات با اهداف و ویژگی‌های طراحی زیر تصور و توسعه یافته‌است: سهولت یادگیری و با سازه‌های سطح بالا سازگار اجرای حافظه مسطح ۳۲ بیتی برای جلوگیری از مدیریت پیچیده حافظه و محدودیت آدرس دهی اندازه رفع اشکال در پشتیبانی و خطای زمان اجرا زیرنویس و بررسی نوع تایپ متغیر شل و سخت برنامه‌نویسی از طریق شی گرایی به عنوان انواع (تعریف شده توسط کاربر یا موارد دیگر) تفسیر شده، با مدیریت خودکار حافظه و بازیافت زباله مجموعه ناهمگن (توالی) کتابخانه گرافیکی DOS (نسخه‌های زبان Euphoria تا و شامل ۳٫۱٫۱) رفع اشکالگر سیستم پایگاه داده یکپارچه کنترل سطح پایین حافظه تابع لفاف‌پیچی مستقیم کتابخانه‌های C (یا دسترسی به آنها) حالت‌های اجرا مترجم مترجم C (E2C) برای اجراهای مستقل یا پیونددهنده پویا کامپایلر و مفسر بایت‌کد Binder کد منبع Euphoria را به مترجم متصل می‌کند تا یک نسخه اجرایی ایجاد کند. | ## بخش 2: ایفوریا (زبان برنامه‌نویسی) | موارد استفاده ایفوریا به راحتی تسهیل کار با مجموعه داده‌های پویا از انواع مختلف را فراهم می‌کند و به ویژه برای رشته و پردازش تصویر بسیار مفید است. از ایفوریا در آزمایش‌های هوش مصنوعی، مطالعه ریاضیات، برای آموزش برنامه‌نویسی و پیاده‌سازی فونت‌هایی با هزاران نویسه استفاده شده‌است. انواع داده ایفوریا دارای دو نوع داده اساسی است: Atom(اتم) - یک عدد، به عنوان یک عدد صحیح امضا شده ۳۱ بیتی یا یک نقطه شناور IEEE 64 بیتی اجرا می‌شود. تعداد عناصر در یک دنباله ثابت نیست (به عنوان مثال، لازم نیست اندازه برداری / آرایه اعلام شود). با استفاده از مقدار شاخصی که در پرانتز مربع محصور شده‌است، به عناصر جداگانه ارجاع داده می‌شود. عناصر داخل توالی‌های جاسازی شده با مقادیر اضافی شاخص ترمز ارجاع داده می‌شوند، بنابراین X[3 2]به عنصر دوم موجود در توالی اشاره دارد که عنصر سوم X است. ایفوریا دارای دو نوع داده اضافی از پیش تعریف شده‌است: Integer (عدد صحیح) - یک اتم، محدود به مقادیر صحیح امضا شده ۳۱ بیتی در محدوده -۱۰۷۳۷۴۱۸۲۴ تا ۱۰۷۳۷۴۱۸۲۳ (-۲ ^ ۳۰ تا ۲ ^ ۳۰–۱). انواع داده‌های عدد صحیح کارآمدتر از انواع داده‌های اتمی هستند، اما نمی‌توانند حاوی مقادیر یکسانی از مقادیر باشند. | ## بخش 3: ایفوریا (زبان برنامه‌نویسی) | کاراکترها به صورت عدد صحیح ذخیره می‌شوند، به عنوان مثال، کدگذاری ASCII-'A دقیقاً همان کدگذاری ۶۵ است. Object(شی) - نوع داده آرایه است که ممکن است حاوی هر یک از موارد فوق باشد (به عنوان مثال، اتم، توالی یا عدد صحیح) و ممکن است در طول زمان اجرا به نوع دیگری تغییر کند. با این حال، از آنجا که رشته‌های تحت‌اللفظی معمولاً در برنامه‌نویسی مورد استفاده قرار می‌گیرند، Euphoria شخصیت‌های محصور شده با دو نقل قول را به عنوان دنباله ای از اعداد صحیح تفسیر می‌کند. در صورت یافتن، با الحاق تمام عناصر قبل از آن با تمام عناصر بعد از آن، آن را حذف می‌کند. از آنجا که متغیرهای قدیمی و جدید به عنوان اجسام تعریف شده‌اند، می‌توانند اتم یا توالی باشند. دیگر نیازی به تخصیص یا تخصیص دقیق حافظه نیست و هیچ گونه احتمال نشت حافظه وجود ندارد. یک دنباله ممکن است شامل مجموعه ای از هر نوع باشد، و این را می‌توان قطعه قطعه کرد (برای گرفتن زیرمجموعه ای از داده‌ها در یک توالی) و در عبارات بدون نیاز به توابع خاص به هم پیوست. با این حال، پارامترها مجاز به تغییر محلی هستند (به عنوان مثال، در داخل فراخوان) که بسیار کارآمد اجرا می‌شود زیرا توالی‌ها دارای معنای خودکار کپی بر روی نوشتن هستند. | ## جمع‌بندی | به عبارت دیگر، هنگامی که توالی را به روال منتقل می‌کنید، در ابتدا فقط یک ارجاع به آن منتقل می‌شود، اما در مرحله معمول این پارامتر دنباله را تغییر می‌دهد توالی کپی می‌شود و روال فقط یک نسخه از نسخه اصلی را به روز می‌کند.