سوسک ها در کامپیوتر چه می کنند؟
سوسک ها موجودات چندش آوری هستند، گرچه مثل خیلی از حشرات دیگر دارای آفرینشی شگفت آور و بسیار جان سخت هستند اما اکثر انسان ها خاطره خوشی با یک سوسک ندارند. یک دسته از این آدم ها، برنامه نویسان کامپیوتر هستند. شاید با خود بگویید سوسک چه ربطی به کامپیوتر و برنامه نویسی دارد؟! اما یکی از مهم ترین بخش های برنامه نویسی به ویژه در آموزش و یادگیری همین سوسک ها هستند. برای اینکه بفهمید چطور سوسک ها انقدر نقش مهمی در برنامه های کامپیوتری بازی می کنند بگذارید تاریخچه کوتاهی از کامپیوترها را مرور کنیم.
در ابتدای شکل گیری کامپیوترها که می توان آن را آغاز عصر رایانه نامید، کامپیوترها مثل چرتکه مکانیکی بودند. هنوز پای قطعات الکترونیک به دنیای کامپیوتر باز نشده بود و کدها به شکل
امروزی نبودند؛ بلکه برای کد نوشتن و کار با کامپیوترهای مکانیکی باید از کارت های مخصوص پانچ شده (سوراخ دار) استفاده می کردند. در آن زمان کامپیوترها بسیار بزرگ تر از مدل های امروزیِ خود بودند. بعد از حضور قطعات الکترونیکی هم همچنان کامپیوترها غول پیکر بودند. چون قطعات الکترونیکی به مرور کوچک و کوچکتر شده اند و تمام قطعات در ابتدا بسیار بزرگ تر از نمونه های امروزی بودند. گاهی اوقات سوسک های مزاحم به داخل ساختمان کامپیوترها می رفتند در آن جا لانه گزینی کرده و تخم می گذاشتند و حضورشان باعث خراب شدن بخشی از دستگاه می شد. به همین منظور افرادی که با کامپیوترها سر و کار داشتند مجبور می شدند داخل این دستگاه ها را بررسی کرده و سوسک ها را پیدا کنند. پس از پیدا کردن و کشتن و تمیز کردن، دستگاه کامپیوتر به درستی کارش را ادامه می داد. سوسک در زبان انگلیسی Bug نامیده می شود. در زبان انگلیسی برای اینکه اسم را به انجام دادن کاری تبدیل کنند معمولاً به آخر آن کلمه یک “ing” اضافه می کنند. پس کلمه Bugging یعنی بلایی که سوسک ها بر سر کامپیوترها می آوردند در واقع ایجاد اشکال در روند کاری کامپیوترها. یک پیشوند کاربردی هم به نام “De” وجود دارد. این پیشوند در ابتدای هر فعل یا کاری بیاید معنای آن را به زدودن و برطرف کردن تغییر می دهد. بنابراین کلمه “Debugging” یعنی از بین بردن سوسک ها.
اولین “Bug” رایانه ای یک اشکال واقعی و فیزیکی بود، پروانه بید. در سال 1947، دریاسالار خانمِ گریس موری هاپر در حال کار بر روی ماشین حساب رله ای دانشگاه هاروارد ، یک رایانه الکترومکانیکی، بود. گریس هاپر داستان را تعریف می کند: اوضاع بد پیش می رفت. در یکی از مدارهای رایانه که در شیشه محصور شده بود مشکلی وجود داشت. سرانجام ، کسی عاملِ دردسر یعنی یک پروانه بید را پیدا کرد که بین نقاط رله شماره 70 پنل F گیر افتاده بود. با استفاده از یک پَنس ، پروانه دو اینچی را در آوردیم. از آن به بعد، وقتی مشکلی در کامپیوتر رخ داد، می گفتیم که حتماً سوسکی وجود دارد.
رفته رفته به پیشرفت صنایع الکترونیک، کامپیوترها از قطعات کوچکتر ساخته شدند و جمع و جورتر شدند؛ وقتی زبان های برنامه نویسی روی کار آمدند و کدها داخل کامپیوتر های نسل جدید نوشته می شد تا کارهایی را بر مبنای یک الگوریتم از پیش طراحی شده انجام دهند، ممکن بود برنامه نویسان در طراحی مراحل یا شیوه نوشتار دچار خطاهایی بشوند. این خطاها از مسخره ترین چیزها مثل فراموش کردن بستن یک پرانتز در متن برنامه تا مشکل جدی در راه حل ارائه شده، عملکرد برنامه را دچار مشکل می کرد. به دلیل اینکه در گذشته سوسک ها با مزاحمت هایشان در کار برنامه کامپیوتر اشکال ایجاد می کردند متخصصان علوم کامپیوتر به اشکالات نرم افزاری برنامه نویسی هم کلمه “باگ” را نسبت دادند. از آن به بعد هر وقت برنامه ای درست کار نمی کرد می گفتند: باید آن را اشکال زدایی یا “دیباگ” کنیم.
گفته می شود در این کاغذ تاریخی اپراتورهای دستگاه آن حشره را ثبت کرده است و یاداشتی نوشته اند :
First actual case of bug being found
یعنی اولین نوع باگ پیدا شد.
سلام دوستِ عزیز؛ گفتم بهت بگم که نگی نگُفتی! اینجا همین پایین یه مقاله خیلی جانانه درباره الگوریتم داریم که بهت توضیح دادیم الگوریتم رو دانشمند ایرانی خوارزمی چطور ابداع کرده؟! بِپا نخونده از دنیا نری!
دیباگ کردن یک مهارت بسیار پیشرفته و مهم در برنامه نویسی است. توانمندی شما در رفع اشکال نشان دهنده درک عمیق شما از برنامه نویسی و کد زدن است. یک دیباگر “Debugger” حرفه ای مهارت حل مساله را به خوبی آموخته و در آن قوی شده است و مفهوم الگوریتم را به درستی درک کرده است؛ برای همین می تواند خیلی سریع اشکال یا باگِ برنامه را یافته و آن را حل کند. معمولاً پیدا کردن مشکلات نوشتاری ساده است، اما فهمیدن مشکلاتی که ناشی از طراحی روش حل مساله یا الگوریتم است بسیار وقت گیر و نیازمند حوصله و دقت بالایی است.
دیباگر بودن نه تنها در برنامه نویسی بلکه در مشاغل دیگر هم نشان دهنده حرفه ای بودن شماست. مثلاً شکافتن یک لباس دوخته شده توسط خیاط یا تعمیر یک میز چوبی توسط نجار گاه سخت تر از ساختن آن وسیله یا محصول از ابتداست. چون قبل از هر چیز باید اشکال را پیدا کنید و بعد برای برطرف کردنش چاره ای بیندیشید.
دقیقاً دیباگ کردن برنامه های کامپیوتری هم به همین روش است. ابتدا باید با دقت و تفکر عمیق تری صورت مساله را دوباره بررسی کنید. مراحل را یک به یک به عقب برگردانید. بعضی مراحل برنامه را حذف کنید و خروجی آن را بدون بخشی از برنامه چک کنید. ورودی های مختلف به برنامه بدهید و خروجی را بررسی کنید. تا بالاخره بتوانید مشکل را پیدا کرده و آن را حل کنید. در خیلی مواقع وقتی مشکل یک قسمت را حل می کنید بقیه قسمت ها دچار مشکل می شوند؛ چون مشکلات الگوریتمی به هم پیوسته هستند و پاسخ هر مرحله در مرحله دیگر مورد استفاده قرار می گیرد، مجبور می شوید مراحل دیگر را هم درست کنید.
یک دیباگر برنامه نویسی را با پوست و گوشت و استخوان درک کرده و در رده های حرفه ای تر می تواند کدهای دیگران را به راحتی دیباگ کند.
اصرار برای دیباگ کردن برنامه های اشتباه یا دارای خطا یکی از بهترین و پربازده ترین کارها برای یادگیری برنامه نویسی است به این دلیل که شما مشکلاتی را برطرف می کنید که خودتان آن ها را ایجاد کرده اید. اگر هر برنامه ای که طراحی کردید یا نوشتید مشکلی در اجرا داشت را از ابتدا بررسی و خطاهای آن را رفع کنید نکته ها، تکنیک ها و ترفندهای آموزنده زیادی درباره چگونه برنامه نوشتن و حل کردن مسئله ها یاد خواهید گرفت.
دیدگاهتان را بنویسید