امروزه پایتون به عنوان یکی از پرکاربردترین زبانهای برنامه نویسی در زمینههای مختلف مورد استفاده قرار میگیرد. با این وجود به برخی از عبارتهای کاربردی موجود در این زبان برنامه نویسی، از جمله عبارت goto ، کمتر پرداخته شده است. از این رو در این مقاله کاربرد و نحوه استفاده از دستور goto در پایتون به زبان ساده شرح داده میشود.
پایتون و دستورات آن
در طول چند سال اخیر، از میان زبانهای برنامه نویسی مدرنی که در حال حاضر وجود دارند، پایتون به شکل قابل توجهی به محبوبیت رسیده است. این محبوبیت بیشتر به دلیل انعطافپذیری بالای زبان برنامه نویسی پایتون به وجود آمده است. چون بر خلاف اغلب زبانهای برنامه نویسی، برنامه نویسان در پایتون ملزم به رعایت قوانین نحوی سنتی نیستند و به دنبال آن، سادگی کار با پایتون باعث شده است که امروزه این زبان برنامه نویسی کاربردی به عنوان یکی از پر استفادهترین زبانها در بازار کار و صنعت به شمار برود. از برنامه نویسان مبتدی گرفته تا حرفهایهای باتجربه، اغلب همگی از پایتون به عنوان زبان انتخابی برای برنامه نویسی استفاده میکنند.
برنامه نویسانی که به صورت دراز مدت از زبان برنامه نویسی پایتون استفاده میکنند، بر این باور هستند که در پایتون، طیف متنوع و مختلفی از عبارات و متعاقباً عملکرد بهبودیافتهای ارائه شده است. با این وجود، با توجه به اینکه تعداد عبارات رایج مورد استفاده در پایتون بسیار زیاد است، برخی از دستورات مفید به اندازه کافی مورد توجه قرار نمیگیرند. یکی از این نمونهها دستور goto در پایتون به حساب میآید. اکنون در ادامه این مقاله به معرفی و آموزش دستور goto در پایتون پرداخته شده است.
دستور goto در پایتون
عبارت goto در پایتون یک قطعه کد یا سینتکس مهم است که امکان پرش یا عبور (بدون اجرا) را از چند عبارت یا یک قطعه کد در بدنه برنامه برای برنامه نویس فراهم میسازد. از لحاظ فنی، دستور goto در پایتون به منظور پرش بدون قید و شرط از محل دستور goto به نقطه مقصد به کار میرود. لازم به ذکر است که منظور از مقصد همان نقطهای است که در تابع در حال کامپایل تعیین میشود.
به طور کلی، نحوه کارکرد دستور goto در پایتون نسبتاً قابل فهم و ساده است. به این دلیل که این دستور با استفاده از کلمه کلیدی «goto» به همراه نام برچسب الگو ترکیب میشوند و بر اساس نیاز کاربران، امکان سفارشیسازی (Customization) نیز وجود دارد. تا زمانی که متن نام برچسب قالب (Template Label Name) از کلمه کلیدی «goto» تشکیل نشده باشد، میتوان آن را در هر جایی از بدنه برنامه قرار داد. این یعنی، فرقی نمیکند که کسی برچسب را بالای دستور goto، یا در این مورد خاص، زیر آن قرار دهد.
دستور goto در پایتون بسیار کاربردی است و به صورت گسترده توسط تعداد زیادی از برنامه نویسان پایتون به کار میرود. با وجود تمام مزیتهای دستور goto در پایتون ، معمولاً استفاده از این عبارت برای اهداف ممیزی (Auditing) توصیه نمیشود. به این دلیل که وجود یک عبارت goto در یک محتوای ممیزی، منجر به دشوار شدن ردیابی جریان برنامه خواهد شد. در چنین شرایطی، در صورتی که لازم باشد یک برنامه نویس در هر زمانی یک بخش از محتوای برنامه را تغییر دهد، آنگاه تعیین مکان دقیق آن بخش به یک کار دشوار تبدیل میشود.
منظور از ممیزی فرآیندی است که در آن گزارشها بررسی میشوند. ممیزی به منظور تایید اینکه سیستم در وضعیت مطلوبی قرار دارد یا برای پاسخ به سوالاتی در مورد چگونگی رسیدن سیستم به یک وضعیت خاص، به کار میرود. با توجه به اینکه استفاده از دستور goto در پایتون مستلزم پرش از یک بخش یا بلوک انتخابی از تابع است، برنامه نویس برای ردیابی جریان برنامه و محدود کردن مکان دقیقی که قرار است اصلاح در آن انجام شود، با مشکلات مختلفی مواجه میشود.
تاریخچه دستور goto در پایتون
پیدایش دستور goto در پایتون تاریخچه جالبی دارد. به طور عمده، این باور وجود دارد که در زمان انتشار اولیه عبارت goto در آوریل 2004 (فروردین – سال ۱۳۸۳)، قرار بود از آن به عنوان شوخی و سرگرمی استفاده شود. با این وجود، برنامه نویسان پس از پی بردن به کاربرد سینتکسهای موجود آن زمان، دستور goto را به صورت جدی پذیرفتند. به همین دلیل، دستور goto در پایتون رفته رفته رشد کرد و تا به امروز، به صورت گسترده مورد حمایت اغلب برنامه نویسان قرار گرفته است.
تا این بخش از آموزش دستور goto در پایتون ، برخی از تعاریف مقدماتی و پیشنیاز مربوط به آن شرح داده شدند. در ادامه این مقاله، تعدادی از فیلمهای مربوط به آموزش زبان برنامه نویسی پایتون به طور خلاصه و مختصر معرفی شدهاند. هر یک دورههای آموزشی زیر میتوانند بسته به نیاز به عنوان مجموعهای از ابزارهای تکمیلی برای افزایش مهارتهای برنامه نویسی پایتون در زمینههای مختلف مورد استفاده قرار بگیرند.
دستور goto در پایتون و تکرارهای آن
به طور کلی، زمانی که در مورد تکرار (Iteration) دستور goto در پایتون صحبت میشود، منظور کد یا نحو مشابه دیگری است که کم و بیش عملکردی مشابه دستور goto دارد. در حوزه برنامه نویسی با پایتون، این معیارها توسط عبارت Comefrom برآورده میشوند. دستور Comefrom، به عنوان یک کد، مشابه دستور goto در پایتون عمل میکند. به بیان ساده، هر دو عبارت Goto و Comefrom با هدف ارائه انعطافپذیری بیشتر به برنامه اصلی و تسهیل اجرای آن ایجاد شدهاند.
از این رو، برنامه نویس کنترل بیشتری روی ساز و کارهای جریان برنامه دارد و هر زمانی که صلاح بداند، امکان اعمال آزادی خود در ساختار برنامه را دارد. در نتیجه، راهکار مطلوبی برای افزایش دسترسی به درجات مختلف جریان کنترل اصطلاحات به وجود میآید. لازم به ذکر است که عمدتاً تا این مقطع زمانی این دسترسیها برای کاربران خارجی و عملاً خارج از محدوده، بسته بودند.
به منظور استفاده از goto در پایتون و حتی دستور Comefrom، ابتدا لازم است کتابخانه اصلی وارد (Import) شود. به طور کلی برای وارد کردن کتابخانه اصلی، روش بسیار ساده و آسان است. به این ترتیب، با استفاده از دستور در زمان from goto import goto, Comefrom, label کتابخانه اصلی به پروژه Import میشود. با وجود اینکه در پایتون به خاطر سپردن هیچ ساختار نحوی پیچیدهای ضروری نیست، اما با داشتن کدهایی، مانند آنچه ذکر شد، امکان بهرهوری از مزایای زیادی فراهم میشود. در حقیقت، اجرای دستورات به همراه وارد کردن کتابخانه اصلی، بسیار مهم و کلیدی است. به همین دلیل، به واسطه آشنایی با چنین کدهایی، صرفهجویی قابل توجهی در مصرف زمان کاربر مورد نظر خواهد شد. پس از وارد شدن کتابخانههای مربوطه به بدنه کلی برنامه، میتوان از هر دو دستور goto و Comefrom در برنامه به شکل مناسب استفاده کرد.
پیش از پیادهسازی دستور goto در پایتون ، ابتدا لازم است درک کاملی از آنچه با اجرای آن به دست میآید وجود داشته باشد. این فلسفه فقط به محتوای دستور goto در پایتون محدود نمیشود، بلکه به تمام دستورات این چنینی در این زبان برنامه نویسی تعمیمپذیر است. علاوه بر اینکه وضوح در مورد عملکرد دستورات مختلف، اعمالی مانند بهینهسازی کد و زمان اجرا را تسهیل میدهد و به شدت منجر به بهبود خوانایی کلی برنامه نیز میشود. این موضوع به نوبه خود مستقیماً در مهارتهای کدنویسی رقابتی برنامه نویسان منعکس خواهد شد.
هر زمان که دستور goto در پایتون توسط برنامه نویس فراخوانی شود، لازم است مفسر کدی را تفسیر کند که در آن لحظه مورد استفاده نیست. به بیان ساده، آن بلوک کد خاص یا خط کد خاصی که قصد اجرای آن وجود دارد با علامتگذاری آن در بخش مربوطه تعیین میشود. به این علامتگذاری «برچسب» (Label) گفته میشود. تگهای (Tagهای) برچسب در پایتون به طور افزایشی تصادفی هستند و به طور کلی، به عنوان شناسههای پایتون دلخواه مشاهده میشوند. به منظور درک بهتر ساختار کلی دستور goto در پایتون ، نمای کلی آن در ادامه آمده است:
...
label:
...
goto label;
...
دستور goto در پایتون (محاسبه شده)
دستور goto محاسبه شده یکی از پرکاربردترین و رایجترین انواع دستور goto در پایتون است. به طوری که تعداد زیادی از برنامه نویسان پایتون از آن در برنامههای مختلف استفاده میکنند. هنگام استفاده از دستور goto محاسبه شده، لازم است اندیس (Index) پایتون را در ابتدای برنامه یا کد توسط برنامه نویس ذکر شود. از این رو، قرار است برنامه نویس با استفاده از هشتگ به شاخص مذکور مراجعه کند. اساساً برنامه نویسان نام یک برچسب را به یک متغیر در طول زمان اجرا اختصاص میدهند و پس از آن، در صورت لزوم، میتوانند با کمک یک ستاره به آن ارجاع دهند.
دستور Comefrom
با وجود اینکه دستور Comefrom به طور گسترده و عمومی به عنوان نسخه بازنویسی شده دستور goto در پایتون در نظر گرفته میشود، اما با بررسی دقیقتر، مشخص است که عملکرد Comefrom کاملاً نقطه مقابل دستور goto در پایتون به حساب میآید. در اصطلاح عامیانه و برای راحتی خواننده عمومی، عملکرد Comefrom با کمک جمله زیر به بهترین شکل، خلاصه و درک میشود.
“هرگاه به برچسب X رسید، به جای آن، به اینجا بروید.”
همانطور که مشاهده میشود، با توجه به اینکه ماهیت عملکرد Comefrom مشابه دستور goto در پایتون است، با استفاده از هر دو دستور، امکان نادیده گرفتن بخش یا بخشهایی از کد وجود دارد. معمولاً دستور Comefrom به عنوان یک نسخه بازنویسی از دستور goto در پایتون در نظر گرفته میشود.
با این وجود، با کمک مثالهای مرتبط میتوان عملکرد واقعی عبارت Comefrom را به بهترین وجه ممکن توضیح داد. به منظور واضحتر شدن کارکرد این دستور، در ادامه توضیح نظری مختصری ارائه میشود. در برنامه مفروض است که با استفاده از دستور Comefrom، هر زمان که یک مفسر به برچسب تعیین شده برسد، از اجرای خط بعدی کد صرف نظر میشود و در عوض، به برچسب بعدی در بدنه برنامه، به طور مستقیم پرش خواهد داشت.
نکته حائز اهمیت این است که به طور کلی، استفاده از عبارت Comefrom به عنوان یک رویکرد کمکی برای رفع اشکال در برنامه نویسی به حساب میآید. مستقل از این موضوع، معمولاً استفاده از عبارت Comefrom در زمینههای گستردهتر منع میشود. این مسئله در درجه اول به این دلیل است که در بیشتر مواقع، استفاده از عبارت Comefrom در چنین ساختاری منجر به نتایج ناخوشایندی خواهد شد. در بخش بعدی از آموزش دستور goto در پایتون ، به برخی از محدودیتهای جزئی این دستور اشاره شده است.
دستور goto در پایتون و محدودیتهای آن
معمولاً در اکثر پلتفرمهای کدنویسی، مجموعهای از محدودیتها روی عملکرد دستورات و سایر خطوط کد موجود در بدنه اعمال میشوند. در این زمینه، پایتون نیز استثنا نیست و در آن، برای دستور goto و تکرار آن، یعنی دستور Comefrom تعدادی محدودیت ایجاد شده است.
در نتیجه، در طرحبندیهای وسیعتر، استفاده از هر دوی این دستورات محدویتهای خاصی دارد. برخی از رایجترین محدودیتهایی که به هر دوی این دستورها تعمیم داده میشوند به شرح زیر است.
- با وجود اینکه با استفاده از دستور goto در پایتون یا عبارت Comefrom امکان نادیده گرفتن بخش یا بخشهایی از کد وجود دارد، اما در واقعیت، اجازه پرش به وسط یک حلقه داده نمیشود. علاوه بر این، در عبارت پایانی پایتون نیز استفاده از هر یک از این عبارات در هر مقطع زمانی منع میشوند.
- برنامه نویس در هیچ نقطهای از زمان نمیتواند از دستورات goto یا comefrom برای پرش بین توابع یا ماژولها در پایتون به صورت فعال استفاده کند.
- نمیتوان از دستورات goto و comefrom برای پرش به یک خط استثنا (Exception Line) استفاده کرد. عمدتاً این موضوع به این دلیل است که خط استثنای مربوطه در وهله اول وجود ندارد. در بیشتر مواقع این محدودیت زمانی مشاهده میشود که برنامه نویس باید از یک حلقه عمیق تودرتو خارج شود. از سوی دیگر، پس از بروز مشکل یا شکست، لازم است پاکسازی انجام شود. بنابراین، با بررسی این دو مورد، واضح است که این محدودیت برای دستور goto در پایتون و همچنین عبارت Comefrom وجود دارد.
جمعبندی
با بررسی شرایط حاکم بر بازار کار فعلی، مشخص است که برنامه نویسی به ویژه با استفاده از پایتون، یکی از مهارتهای درآمدزا و آیندهدار به حساب میآید. به همین دلیل یادگیری این زبان برنامه نویسی به عنوان یک گام مهم در جهت رشد و شکوفایی در این حوزه تلقی میشود.
در این مقاله ابتدا مفاهیم پراهمیت مرتبط با دستور goto در پایتون بررسی شدند و در بخشهای بعدی به برخی از مزیتها و محدویتهای این دستور اشاره شد. علاوه بر این، در بخشهای میانی این مطلب دستور Comefrom نیز به طور کلی و مختصر معرفی شد. همانطور که به آن اشاره شد، دستور goto در پایتون در برخی شرایط خاص، به منظور ممیزی و اشکالزدایی به کار میرود و تا حد زیادی قابلیتهای مطلوب مختلفی در دسترس کاربران قرار میدهد.
با وجود اینکه دستور goto در پایتون به طور عمده در زمینه برنامهنویسی مقدار کمی مورد استفاده قرار میگیرد، اما همچنان فارغ از محدودیتهای آن، به کارگیری این عبارت میتواند نتایج نسبتاً شگفتانگیزی را به ارمغان آورد. از این رو، به نوعی فراگیری نحوه کارکرد دستور goto در پایتون به عنوان یک آموزش کاربردی در جهت رشد مهارتهای برنامه نویسی با پایتون در نظر گرفته میشود.
در نهایت، با توجه به کاربرد این زبان برنامه نویسی همهمنظوره در حوزههای مختلف و همچنین وجود فریمورکها و کتابخانههای متعدد آن، یادگیری استفاده از دستورات شاخص پایتون میتواند به رشد دانش برنامه نویسی افراد کمک و آنها را چندین گام به حرفهای شدن در این حوزه نزدیکتر کند.