موضوع مقاله: قانون آف‌ساید (مبتنی بر تورفتگی) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # قانون آف‌ساید (مبتنی بر تورفتگی) | مقدمه: قانون خارج از سمت، نحو یک زبان برنامه نویسی کامپیوتر را توصیف می کند که مرزهای یک بلوک کد را از طریق تورفتگی تعریف می کند. | ## بخش 1: قانون آف‌ساید (مبتنی بر تورفتگی) | این اصطلاح توسط پیتر لندین ابداع شد، احتمالاً به عنوان جناس در مورد قانون آفساید در فوتبال انجمن . زبان قانون خارج از سمت با زبانی با فرم آزاد که در آن تورفتگی معنای نحوی ندارد و تورفتگی کاملاً یک موضوع سبک است، مقایسه می شود. تعریف پیتر لندین در مقاله خود در سال 1966 " 700 زبان برنامه نویسی بعدی "، قانون آفساید را اینگونه تعریف کرد: "هر نشانه بدون فاصله در سمت چپ اولین نشانه در خط قبلی به عنوان شروع یک اعلان جدید در نظر گرفته می شود." مثال در زیر نمونه ای از بلوک های تورفتگی در پایتون آمده است. بدنه بند if از خط 3 شروع می شود زیرا یک سطح اضافی تورفتگی دارد و به خط 4 ختم می شود زیرا خط 5 یک سطح کمتر فرورفته است. Indentation این نشانه‌ها در زبان‌هایی که از پرانتز برای بلوک‌ها استفاده می‌کنند، مطابق با پرانتز باز { و بستن بریس } هستند و به این معنی است که عبارت دستور زبان به استفاده از پرانتز یا تورفتگی بستگی ندارد. این مستلزم این است که حالت نگهدارنده lexer، یعنی سطح تورفتگی فعلی، و بنابراین می‌تواند تغییرات در تورفتگی را هنگامی که این تغییر می‌کند، تشخیص دهد، و بنابراین گرامر واژگانی بدون متن نیست: INDENT و DEDENT به اطلاعات متنی سطح تورفتگی قبلی بستگی دارند. جایگزین ها جایگزین اصلی برای تعیین حدود بلوک‌ها با تورفتگی، که با استفاده گسترده و تأثیر زبان C رایج شده است، نادیده گرفتن کاراکترهای فضای خالی و علامت‌گذاری بلوک‌ها به صراحت با براکت‌های فرفری (یعنی { و } ) یا برخی از جداکننده‌های دیگر است. | ## بخش 2: قانون آف‌ساید (مبتنی بر تورفتگی) | Lisp و سایر زبان‌های مبتنی بر بیان S ، عبارات را از عبارات متمایز نمی‌کنند و پرانتز برای کنترل محدوده تمام عبارات داخل زبان کافی است. مانند زبان‌های براکت فرفری، فضاهای خالی عمدتاً توسط خواننده (یعنی تابع خواندن) نادیده گرفته می‌شود. ساختار صریح کد Lisp به تورفتگی خودکار اجازه می دهد تا یک نشانه بصری برای خوانندگان انسانی تشکیل دهد. در برخی از زبان ها (اما نه پاسکال)، این بدان معنی است که خطوط جدید مهم هستند (برخلاف زبان‌های پرانتزی فرفری)، اما تورفتگی اینطور نیست. در فرترن ، هر بلوک همچنین می‌تواند نام بلاک منحصربه‌فرد خود را داشته باشد که سطح دیگری از صراحت را به کد طولانی اضافه می‌کند. یک نوع جالب از این در Modula-2 رخ می دهد، یک زبان پاسکال مانند که تفاوت بین بلوک های یک و چند خطی را حذف می کند. این اجازه می دهد تا بلوک بازکننده ( { یا BEGIN ) برای همه به جز بلوک سطح عملکرد، صرفاً به یک نشانه پایان دهنده بلوک ( } یا END ) رد شود. | ## بخش 3: قانون آف‌ساید (مبتنی بر تورفتگی) | سفارشی برای این است که نشانه end در همان سطح تورفتگی بقیه بلوک قرار می گیرد و ساختار بلوکی بسیار خوانا می دهد. یکی از مزیت های رویکرد فرترن این است که خوانایی کدهای طولانی، تودرتو یا پیچیده را بهبود می بخشد. گروهی از خروجی ها یا براکت های بسته به تنهایی هیچ نشانه زمینه ای در مورد بسته شدن بلوک ها ارائه نمی دهد، که نیاز به عقب نشینی و بررسی دقیق تر در حین اشکال زدایی دارد. با این حال، ویرایشگرهای کد منبع مدرن اغلب نشانگرهای بصری، مانند برجسته کردن نحو ، و ویژگی هایی مانند تا کردن کد را برای کمک به این اشکالات ارائه می دهند. طراح مارتین اودرسکی گفت که این مهم‌ترین راهی بود که اسکالا 3 بهره‌وری خود را بهبود بخشید، این که برنامه‌ها را بیش از 10 درصد کوتاه‌تر می‌کند و برنامه‌نویسان را در جریان نگه می‌دارد و استفاده از آن را توصیه می‌کند. | ## جمع‌بندی | زبان های برنامه نویسی قابل توجه زبان های برنامه نویسی قابل توجه با قانون آف ساید: ای‌بی‌سی آگدا بو کبرا کافی‌اسکریپت همگرا شوند کاری سنجد اف شارپ ، در نسخه های اولیه، زمانی که #light مشخص شده است.