قطع‌کردن (برنامه‌نویسی) کیست؟ توضیح بده.
در طراحی زبان رایانه ای، قطع کردن(به انگلیسی: stropping) روشی است که توالی ای از حروف را به داشتن خاصیتی ویژه مانند واژه رزروشده، نوع خاصی از متغیر یا مکان حافظه علامت گذاری می‌کند و به این ترتیب فضای نام متفاوتی از اسم‌های معمولی (شناساگرها) خواهند داشت تا از مشابهت غلط آن‌ها جلوگیری شود. این روش در بیشتر زبان‌های مدرن استفاده نمی‌شود - به جای آن کلمات کلیدی، کلمات رزرو شده هستند و نمی‌توان به عنوان شناساگر از آن‌ها استفاده کرد. استروپینگ اجازه می‌دهد تا از همان دنباله حروف هم به عنوان کلمات کلیدی و هم به عنوان شناساگر استفاده کرد، و به این ترتیب عمل تجزیه را ساده‌تر می‌کند. برای مثال اجازه می‌دهد نام متغیری if باشد، بدون اینکه با کلمه کلیدی if تداخل داشته باشد.استروپینگ در درجه اول در دهه ۱۹۶۰ با الگول و زبانهای مرتبط همراه بود. اگرچه این روش استفاده‌های مدرن دارد، اما با سایر تکنیک‌های مشابه که از نظر ظاهری شباهت زیادی دارند، به راحتی اشتباه گرفته می‌شود.تاریخچه.روش قطع کردن در توسعه الگول در دهه ۱۹۶۰ پدید آمد که از آن برای تمایزهای تایپی مختلف (boldface و underline) استفاده می‌شد که در زبان نشر استفاده می‌شده‌است و نمی‌تواند مستقیماً در زبان سخت‌افزاری نشان داده شود. یک ماشین‌تحریر می‌تواند دارای نویسه‌های bold باشد، اما در مورد کدگذاری در کارت‌های پانچ، هیچ کاراکتر Boldای وجود ندارد. اصطلاح «قطع کردن» در الگول ۶۰، از اپاستروف به وجود آمد، زیرا برخی از پیاده سازیهای الگول ۶۰ از آپوستروف‌ها در اطراف متن استفاده می‌کردند تا نشان دهندهٔ مهم بودن آن باشند. برای مثال codice_1 نشان دهندهٔ کلمهٔ کلیدی «اگر» است. این روش در الگول۶۸ نیز بسیار مهم است، که در آن روش‌های مختلف بریدن، معروف به رژیم‌های بریدن(stropping regimes)، استفاده شده‌است. آپاستروف‌های اصلی الگول ۶۰ به‌طور گسترده مورد استفاده قرار نگرفت در صورتی که حروف بزرگ بیش‌تر رایج بود. مانند codice_2 و codice_3 که روش بریدن برای همهٔ این‌ها اعمال می‌شود.دستور زبان.گسترهٔ وسیعی از دستور زبان‌های مختلف برای قطع کردن استفاده شده‌است:در حقیقت، اغلب اینگونه است که چندین قرارداد قطع کردن ممکن است در یک زبان مورد استفاده قرار گیرد. به عنوان مثال، در الگول۶۸ انتخاب بین "بریدن"های مختلف را می‌توان با یک دستورالعمل کامپایلر (عملگر در واژه‌شناسی الگول) که به صورت "نقطه" (POINT)، "بالایی"(UPPER)، "نقل و قول"(QUOTE) یا "عطف به"(RES) نامیده می‌شوند، انتخاب کرد.نظام‌های مختلف قواعد یک ویژگی واژگانی برای کاراکترهای منقطع شده (stropped) هستند، هر چند در برخی موارد، این تفسیرها، تفاسیر ساده‌ای دارند: در آپاستروف تنها(single apostrophe) و نظام نقطه‌ای، اولین کاراکتر به عنوان یک کاراکتر فرار عمل می‌کند، در حالی که در نظام‌های آپاستروف، به عنوان حائل عمل می‌کنند.مثال دیگر:برنامه‌های ALGOL 68RS حتی در یک پردازنده یک زبان نیز می‌توانند از چندین نوع روش قطع کردن استفاده کنند.مثال‌های سبک‌های مختلف الگول ۶۸.توجه داشته باشید به دستورالعمل پیشرو pr (مخفف pragmat)، که خود به سبک نقطه یا نقل قول قطع می‌شوند، و همچنین برای کامنت (از "") تنظیم شده‌است - به الگول ۶۸: عناصر مهم زبانی مراجعه کنید.زبان‌های دیگر.به دلایل مختلف فورترن‎۷۷ دارای این مقادیر "منطقی" و عملگرها است: .TRUE., .FALSE., .EQ., .NE., .LT., .LE., .GT., .GE., .EQV., .NEQV., .OR., .AND., .NOT..AND., .OR. و .XOR. همچنین در تست‌های ترکیبی در عبارت‌های codice_3 و codice_13 در پرونده‌های دسته ای که تحت پردازنده‌های خط فرمان JP Software مانند 4DOS , 4OS2 و 4NT / Take Command اجرا می‌شوند، استفاده شده‌اند.استفادهٔ مدرن.اکثر زبان‌های مدرن کامپیوتر از روش قطع کردن (stropping) استفاده نمی‌کنند، با دو استثنا قابل توجه:استفاده از زبانهای زیادی در Microsoft's .NET Common Language Infrastructure (CLI) به روشی برای استفاده از متغیرها به زبانی متفاوت نیاز دارد که ممکن است در یک زبان مکالمه کلمات کلیدی باشند. این کار گاهی اوقات با پیشوندهایی مانند codice_14 در #c یا شناسه در براکت‌ها در ویژوال بیسیک دات‌نت انجام می‌شود.دومین نمونه مهم در بسیاری از پیاده‌سازی‌های ساختار، جستجوی زبان است. در این زبانها کلمات محفوظ با محدود کردن واژگان از آنها به عنوان ستون، جدول یا نام متغیر قابل استفاده هستند. به صورت استاندارد کلمات محصور شده با " " مشخص می‌شوند اما در عمل مکانیسم دقیق با اجرا تغییر می‌کند؛ برای مثال، مای‌اس‌کیوالاجازه می‌دهد که واژه‌های رزرو شده در زمینه‌های دیگر با استفاده از محصور کردن آنها توسط backticks انجام شود یا مایکروسافت اس‌کیوال سرور از براکت‌های مربعی استفاده می‌کند.قطع کردن(stropping) نیز می‌توانند در زبان برنامه‌نویسی Nim مورد استفاده قرار گیرند. در زبان Nim کلمه رزرو شده می‌تواند به عنوان یک شناسه با ضمیمه کردن آن در براکت استفاده شود.نمونه‌های دیگری نیز وجود دارند. برای مثال، Web IDL از یک زیرخط codice_15 برای نشانه‌گذاری شناسه‌ها استفاده می‌کند که در غیر این صورت با کلمات محفوظ برخورد می‌کند.قطع نکردن توسط کامپایلر.در ابتدا در کامپایلر، قطع نکردن (unstropping) در طول مرحله بازسازی خط اول رخ می‌داد، که همچنین فضاهای خالی را نیز از بین می‌برد. پس از آن تجزیه و تحلیل بدون اسکنر (بدون نشانه گذاری) دنبال شد که در دهه ۱۹۶۰، برای الگول استاندارد بود. در استفاده مدرن، قطع نکردن(unstropping) به عنوان بخشی از تحلیل واژگانی انجام می‌شود. یک امر واضح این است اگر فرد واژگان را به دو مرحله اسکنر و ارزیاب متمایز کند: اسکنر رشته قطع شده(stropped) را در طبقه‌بندی به درستی دسته‌بندی می‌کند و سپس ارزیاب هنگام محاسبه مقدار از تکنیک جدانکردن (unstrops) استفاده می‌کند. به عنوان مثال، در زبانی که زیرخط codice_15 در اول کلمه برای بریدن شناسه‌ها برای جلوگیری از برخورد با کلمات محفوظ استفاده می‌شود، دنباله codice_17 به عنوان یک شناسه (نه به عنوان کلمه رزرو شده در صورت) توسط اسکنر طبقه‌بندی می‌شود سپس ارزیاب این مقدار را به عنوان نوع-نشانه codice_18 مقدار خواهد داد.تکنیک‌های مشابه.تعدادی روش مشابه وجود دارند که به‌طور کلی با پیشوند یا پسوند گذاری شناسه، برخوردهای مختلف با آن را نشان دهند ولی از لحاظ مفهوم با یکدیگر متفاوتند. به‌طور دقیق قطع کردن (stropping) متشکل از نمایش‌های مختلف برای یک اسم، در فضاهای نام متفاوت است و در مرحله نشان گذاری کردن رخ می‌دهد.از حروف بزرگ برای کلمات کلیدی همچنان به عنوان یک قرارداد برای نوشتن دستور زبان برای واژگان و تجزیه استفاده می‌شود - علامت گذاری کلمه رزرو شده به عنوان کلاس نشانگر IF، و سپس بیان عبارت "if-then-else" با codice_19 که در آن اصطلاح‌های با حروف بزرگ کلمات کلیدی هستند و اصطلاحاتی که فقط حرف اول آن‌ها بزرگ است نمادهای غیر پایانی در یک قاعده تولید هستند (نمادهای پایانی با حروف کوچک مشخص می‌شوند).قرارداد نامگذاری.ممکن است از قراردادهای نامگذاری برای جلوگیری از تصادم استفاده شود که به صورت معمول از زیرخط پیشوند یا پسوند استفاده می‌شود. زیرخط پیشوندی اغلب برای نشان دادن اعضای خصوصی در برنامه‌نویسی شی گرا استفاده می‌شود.این اسامی ممکن است توسط کامپایلر تفسیر شوند و تأثیراتی داشته باشند، هرچند این کار معمولاً در مرحله تجزیه و تحلیل معنایی انجام می‌شود، نه مرحله نشانه گذاری. به عنوان مثال، در پایتون، یک زیرخط پیشوندی، یک شاخص خصوصی ضعیف است، در حالی که دو زیرخط برجسته روی یک ویژگی کلاس، دستکاری نام را نشان می‌دهد.کلمات رزرو شده.زبان‌های مدرن به‌طور کلی از واژه‌های رزرو شده به جای قطع کردن (stropping) برای تمایز کلمات کلیدی از شناسه‌ها به عنوان کلمات کلیدی استفاده می‌کنند. این برجسته‌ترین قسمت در زبان C است، در جایی که شناسه‌ها از شناسه‌هایی که از زیرخط (underscore) شروع می‌شوند جداست، اگرچه جزئیات دقیق شناسه در یک دامنه محفوظ است. به‌طور مشابه در ++C هر شناسه ای که حاوی دو زیرخط باشد برای هرگونه استفاده محفوظ است، در حالی که شناسه‌ای که با تأکید زیر شروع می‌شود در فضای جهانی محفوظ است؛ بنابراین می‌توان با استفاده از کلمه رزرو شده codice_20کلمه کلیدی جدید codice_21 را اضافه کرد. در حالی که این از نظر سطحی شبیه به قطع کردن (stropping) است، معنی‌شناسی متفاوتی دارند. به عنوان یک کلمه محفوظ، رشته codice_20 شناسه codice_20 را در فضای نام شناسه مشترک نشان می‌دهد. در قطع کردن(Stropping) (با پیشوند کلمات کلیدی توسط codice_24)، رشته codice_20 کلمه کلیدی codice_21 را در یک نام جداگانه برای کلید واژه‌ها نشان می‌دهد؛ بنابراین با استفاده از کلمات رزرو شده، علائم codice_20 و codice_21 (شناسه، foo__) و (شناسه، foo) - مقادیر مختلفی در همان دسته هستند - در حالی که در تکنیک قطع کردن(stropping) نشانه‌های codice_20 و codice_21 (کلمه کلیدی، foo) و (شناسه، foo) - مقادیر یکسان در دسته‌های مختلف. این مسئله همان مشکل برخورد فضای نام را به گونه‌ای حل می‌کند که برای یک برنامه‌نویس نیز یک‌سان است، اما از نظر دستور زبان و اجرای رسمی تفاوت دارد.امضاها.یک پدیده نحو مشابه اما از نظر معنایی متفاوت امضاءها هستند که در عوض خصوصیات متغیرها را نشان می‌دهد. این موارد در پرل(Perl)، روبی (Ruby) و زبان‌های مختلف دیگر برای شناسایی ویژگی‌های متغیرها / ثابت‌ها مشترک است:در Perl برای تعیین نوع متغیر و در Ruby برای تشخیص متغیرها از ثابت و نشان دادن دامنه. توجه داشته باشید تکنیک معناشناختی متغیر را تحت تأثیر قرار می‌دهد، نه نحو بودن این که آیا آن یک شناسه یا کلمه کلیدی است.موازی با زبان انسان.قطع کردن (stropping) در زبانهای برنامه‌نویسی رایانه ای مورد استفاده قرار می‌گیرد تا کار کامپایلر (یا به عبارت دقیق تر پارسر) آسانتر شود؛ یعنی در توانایی رایانه‌های نسبتاً کوچک و کند در دسترس در روزهای اولیه محاسبات در قرن بیستم باشد. با این حال، روشهای مشابه برای کمک به درک مطلب برای افراد نیز به‌طور معمول مورد استفاده قرار می‌گیرند. برخی از نمونه‌ها عبارتند از: