سی--
این مقاله در حال ترجمه از ویکی انگلیسی است. لطفا آن را ویرایش یا حذف نکنید.
—c شبیه زبان برنامه نویسی c است. پدیدآورندگان آن، محققان زبانهای تابعی، سیمون پایتون جونز و نورمن رامسی، آن را طراحی کردند تا بهطورعمده با کامپایلرهای زبانهای سطح بالا به جای نوشته شده توسط برنامه نویسها استفاده شوند. برخلاف بسیاری دیگراززبانهای متوسط، نمایش آنهامتن ساده اسکی است، بایت کد یا شکلهای دیگر باینری نیست.
طراحی
—c یک زبان اسمبلی قابل حمل است که طراحی شده برای سهولت کاراجرای یک کامپایلر که باکیفیت بالا کدماشین را با داشتن کامپایلر تولید کد—c تولید میکند، تفویض کار سخت ترتولیدکد سطح پایین وبهینهسازی به کامپایلر—c. کار با—c دراواخر ۱۹۹۰ شروع شد. از آنجا که نوشتن یک کد سفارشی ژنراتوریک چالش را در خود دارد، وکامپایلر برگشت تمام میشود در دسترس پژوهشگران در آن زمان بود پیچیده و ضعیف هستند، پروژههای متعدد کامپایلرهایی نوشته بود که با کد C تولید شده بود. برای مثال کامپایلر اصلی Modula – ۳. اگرچه C یک انتخاب ضعیف برای زبانهای تابعی است، دنبالهٔ بازگشتی، بازیافت صحیح یا پردازش استثنا کارآمد. را پشتیبانی نمیکند. --c تعریفی محکم وساده تر به جای C است که همهٔ این چیزهارا پشتیبانی میکند. خلاقترین ویژگی آن زمان اجرا رابط است که اجازهٔ نوشتن بازیافت قابل حمل را میدهد، سیستم پردازش استثناو سایر ویژگیهای زمان اجرا که با هر کامپایلر—c کار میکنند. نحو زبانها به شدت از Cاقتباس میکنند. آن ازقلم میاندازد یاویژگیهای استاندارد Cرا تغییر میدهد، مثل: توابع variadic یا اشاره گرها و وضع سیستم تایپ C، زیرا آنهااز ویژگیهای ضروری—c جلوگیری میکنند و با سهولت که ابزارهای کدنسل میتوانند آن را تولید کنند. اسم این زبان یک شوخی است، تصور میشودکه—c شکل کوتاه شدهٔ زبان C است، همانطور که ++c اساساً" شکل گستردهای ازC است.(در - -C و++c اپراتورهای "- -" و"+ +" به ترتیب یک واحد کم ویک واحد اضافه میکند.)
--c یک نشان platform برای کامپایلر Glasgow Haskell است ویک انطباق—c سرانجام تبدیل میشود به مسیرکدنسل اصلی. بعضی از توسعه دهندگان—c، شامل: سیمون پایتون جونز، دیاس و نورمن رامسی، همچنین کار یا در کار کامپایلر Glasgow Haskell. کدهای GHC و توسعه پایهٔ پژوهشهای Microsoft در کمبریج، اگرچه آن یک پروژهٔ Microsoft نیست. طراحی
--c یک "زبان اسمبلی قابل انتقال" است که برای سهولت پیادهسازی کامپایلرهایی که کد ماشینی با کیفیت بالا تولید می کنند طراحی شده است. این کار با واگذاری تولید کد سطح پایین و بهینه سازی برنامه به یک کامپایلر C-- انجام می شود. نحو زبان به شدت از C وام می گیرد در حالی که ویژگی های استاندارد C مانند توابع متغیر، نحو اشارهگر، و جنبههای سیستم نوع C را حذف میکند یا تغییر میدهد، زیرا آنها ویژگی های ضروری C-- و سهولت تولید کد را مختل می کنند.
نام این زبان یک جوک است، که نشان می دهد همان طور که C++ یک شکل بسط یافته از C است، C-- شکل کاهش یافتهای از C است. (-- به معنای "کاهش" و ++ به معنای "افزایش" است).
سیستم نوع
سیستم تایپ --c برای انعکاس محدودیتهای اعمالشده توسط سختافزار به جای قراردادهای تحمیلشده توسط زبانهای سطح بالاتر طراحی شدهاست. مقدار ذخیرهشده در یک رجیستر یا حافظه ممکن است تنها یک نوع داشته باشد: بردار بیتی. با این حال، بردار بیتی یک نوع پلیمورفیک است که در چند سایز وجود دارد، به عنوان مثال ۸بیت، ۳۲ بیت، یا ۶۴ بیت. یک خانواده مجزای ۳۲ یا ۶۴ بیتی از نوع ممیز شناور پشتیبانی میشود. علاوهبر نوع بردار بیتی، --c یک بول با نوع بولین را فراهم میکند، که میتواند توسط عبارات محاسبه و برای جریان کنترل استفاده شود اما نمیتواند در یک رجیستر یا حافظه ذخیره شود. همانطور که در زبان اسمبلی هر نظم از نوع بالاتر، مانند تمایز بین علامتدارها، غیرعلامتدارها، float، و نشانگر(pointer) توسط اوپراتورهای --c و یا سایر ساختارهای نحوی اعمال میشود. --c مورد بررسی قرار نمیگیرد، همچنین قرارداد فراخوانی شده را اجرا یا چک نمیکند.
نسخه ۲ --c تمایز بین نوع بردار و ممیز شناور را حذف میکند. این نوع را میتوان با یک برچسب "نوع" برای تشخیص، در میان چیزهای دیگر، یک متغیر عدد صحیح در مقابل تایپ شناور و رفتار ذخیره آن (گلوبال یا محلی) توصیف کرد. اولی در مورد اهدافی مفید است که مقادیر جداگانه برای مقادیر صحیح و ممیز شناور دارند. انواع خاصی برای اشارهگر و کلمه بومی معرفی شدند، اگرچه آنها به یک بردار بیتی با طول وابسته به هدف نگاشته شدهاند.
پیادهسازی
صفحه مشخصات --c فهرستی از چند پیادهسازی از --c را نشان میدهد. کامپایری به نام Quick --c که بسیار پرکاربرد بود، در سال ۲۰۱۳ متوقف شد.
haskell: برخی از توسعه دهندگان --c، از جمله سایمن پیتن جونز، ژوآو دایاس، و نورمن رمزی روی GHC کار کرده یا کار میکنند، که توسعه آنها با گسترش زبان --c همراه است که منجر به شکلدهی به گویش cmm میشود که باعث استفاده از پیشپردازندهی C برای ارگونومیکها است. بکاندهای GHC موظف هستند --c را از طریق llvm IR، slow C، و یا اجرای بومی بکاند به کد قابلاجرا تبدیل کنند. علیرغم قصد اصلی، GHC بسیاری از بهینهسازیهای عمومی خود را در --c انجام میدهد. همانند دیگر کامپایلرهای IR، نمایش --c را میتوان به عنوان دیباگ کردن در نظر گرفت. البته، بهینهسازیهای هدف خاص بعدا ً توسط بک اند انجام شد.
جستارهای وابسته
- BCPL
- Low Level Virtual Machine ماشین سطح پایین مجازی
پیوند به بیرون
- (Official website -(Archive
منابع
- ویکیپدیای انگلیسی. /wiki/%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7:--c