مهمترین باگ های برنامه نویسی
در این نوشتهعلمی، نگاهی میاندازیم به ۴ نوع از باگها که نام خود را از پژوهشگران دارای شهرت گرفتهاند؛ مجموعهبندی این باگها مورد جالبی هست و پیرو خواهیم روئت کرد که باگهای ساخت شده در پروسه کدنویسی تا چه اندازه میتوانند عجیب باشند! در نوشتهیعلمیای دارای اسم و رسم، آقای Jim Gray، باگها را به ۲ دستهٔ Bohrbugs و Heisenbugs، براساس نام ۲ دانشمند دارای شهرت تقسیمبندی کرده است اما امروزه، ما گونه های باگهای بیشتری را می شناسیم و با آنان سروکار داریم؛ براین اساس به ۲ دستهٔ دیگر هم نگاهی خواهیم داشت و هر ۴ مورد را بابیان مثال رسیدگی خواهیم کرد.
Bohrbug
بیشتر باگهایی طراحی سایت در مشهد که با آن ها واکنش داریم، مجدداً قابلایجاد کرد میباشند و با عنوان Bohrbugs شناخته میشوند؛ این باگها نام خود را از دانشمندی به نام Niels Bohr گرفتهاند که در سال 1913 یک مدل اتمی بی آلایش و قابلشعور ارائه داد. در مدل آقای Bohr، چیزهایی مثل مسیر تکان و مقدار انرژی یک الکترون در یک اتم، قابل پیشبینی میباشند.
بهطور مشابه، Bohrbugها هم قابل پیشبینی هستند؛ بهعبارت دیگر، در صورتی زیر همان موقعیت قبل نرمافزار را اعمال فرمایید، دوباره ساخت میگردند. برای مثال، وقتی بهخاطر اینکه از یک موجودیت null استفاده میکنید و بالتبع اپلیکیشنٔ شما کرش میکند، حتماً بار دیگر نرم افزار برای یک ورودی دیگر با مقدار null در همین نصیب کرش خواهد کرد؛ پس معین می باشد که این باگ بهراحتی قابل ساخت مجدد و بالتبع قابل دیباگ کردن است.
Heisenbug
همهٔ دولوپرهای حرفهای با این موضوع مواجه شدهاند وقتیکه اپلیکیشن را دوباره انجام میکنند، باگی که باعث شده بود نرم افزار کرش کند، ناپدید گردیده است! صرفنظر از اینکه چقدر عملکرد می کنید و زمان خود را صرف کشف کردن دوبارهٔ همان باگ میکنید، البته باگ از دست شما فرار میکند و دوباره خود را نشانه نمیدهد.
این نوع از باگها اسم خود را از دانشمند معروف آقای Werner Heisenberg گرفتهاند که بهخاطر «اصل عدم قطعیت» یا اصطلاحاً Uncertainty Principle شناخته گردیده است؛ براساس این اصل، در یک زمان مشخص، امکان اندازهگیری مکان و سرعت یک الکترون درون یک اتم، بهصورت دقیق و یا تقریبی وجود ندارد.
وقتی شما میخواهید عملیات دیباگینگ، ایزولهسازی و یا رسیدگی دقیق برای یافت کردن نقص را اعمال دهید و باگها خلق متفاوتی از خود آرم میدهند، بهاین نام شناخته میگردند؛ برای مثال، در شرایطیکه متغیرهایتان را مقداردهی نخستین نکنید، ممکن این واقعه رخ دهد. زمانی نرمافزار انجام میگردد، به متغیرهایی که مقداردهی نخستین نشدهاند دسترسی خواهد داشت و این سبب ساز ایجاد باگ می شود اما این درحالی هست که وقتی می خواهید اپلیکیشن را دیباگ نمایید، اپ احتمالاً درست عمل خواهد کرد چراکه بخش اعظمی از دیباگرها، متغیرهایی که مقداردهی نخستین نشدهاند را با ۰ مقداردهی میکنند و همین باعث میشود که شما با باگ موردنظر برخورد نکنید.
Mandelbugs
وقتی علت تولید باگ بسیار پیچیده و غیرقابل ادراک باشد و باگ رفتاری غیرطبیعی از خود نشان میدهد، آنرا Mandelbugs مینامند. این باگها نام خود را از روی نام آقای Benoît Mandelbrot گرفتهاند که بهعنوان پدر علم هندسه فراکتال شناخته میگردد (فراکتالها، ساختارهای پیچیده و شبیه به خود میباشند). یک باگ در سیستمعامل که به فرصتبندی وابسته هست، مثالی از این نوع باگها است.
Schroedinbug
گاهیاوقات به سورسکد نگاه میاندازید و متوجه میشوید که باگ یا مشکلی وجود دارااست که در مرحلهٔ نخستین به هیچ وجهً نباید اجازهٔ ایفا شدن برنامه را بدهد؛ وقتی میخواهید همین کد را اجرا کنید، باگ موردنظر بیاندیشه ظاهر می گردد و اپ متوقف می شود. هرچند این مورد یه خرده غیرمعمول بهنظر میرسد، اما چنین باگهایی گاهیتایم ها شکل میدهند و با نام Schroedinbug شناخته میگردند (معمولاً این نوع باگها از روند اولٔ تستهای کیفیت اپلیکیشن رد میشوند و خود را علامت نمیدهند).
باگهای نوع Schroedinbug، نام خود را از دانشمند دارای شهرت آقای Erwin Schrödinger گرفتهاند که ایدهٔ «آزمایش تئوری گربه» را ارائه کرد؛ در فیزیک کوانتوم، ذرههای کوانتوم مانند اتمها، می توانند در ۲ موقعیت یا بیشتر وجود داشته باشند ولی شرودینگر توصیه کرد که در اشیاء کلاسیکتری مانند گربه که از اتمهای بسیاری ساخته شده، وجود داشتن در ۲ شرایط، ناممکن می باشد. وی یک اکران را توصیه میکند که در آن یک گربه در داخل جعبهای در بسته، یاور با شیشهای با محتوای سم (که به یک اتم رادیواکتیو متصل می باشد) قرار دارد.
چنانچه نیمهعمر اتم به اتمام برسد، شیشه شکسته میشود و سم به بیرون نشت میکند و باعث مرگ گربه میگردد؛ البته درِ جعبه بسته هست و به این ترتیب نمیقدرت اظهارکرد گربه زنده هست یا مرده. از اینرو، تا وقتیکه درِ جعبه باز شود، گربه میتواند در ۲ موقعیت قرار داشته باشد: زنده یا مرده. در فیزیک کوانتوم، بدین گزینه اصطلاحاً Superposition State میگویند، به شکلی که گربه هم زنده هست و هم مرده!
برگردیم به مشاجره باگها؛ تنهاً با مشاهدهٔ نقص در کد، شما دست به تشکیل داد چندین تغییرات میزنید که درینوضعیت یا اپ انجام میگردد و یا فعالیت نمیکند. بنابراین این نوع از باگها با عنوان Schroedinbug شناخته میشوند.
انواع باگهای دیگری هم وجود دارند که در قالب این ۴ دسته قرار نمیگیرند که از آن گزاره میاقتدار به باگهای بهاصطلاح Aging-Related اشاره کرد که صرفا زمانی صورت میدهند که نرم افزار برای برهه زمانی طولانی کار کند! در نقطه پایان هم ممکن است این سؤال برای شما پیش آمده باشد که به هیچ عنوانً اصطلاح Bug (بهمعنا حشره) از چه زمانی در صنعت گسترشٔ نرم افزار باب شد؛ برای یافتن پاسخ به این سؤال، توصیه میکنیم به نوشتهعلمیٔ آشنايى با دريابان گريس مارى هوپر، هر که برای اولین بار اصطلاح Bug را باب کرد! مراجعهنمایید.
شما چه میپندارید، آیا باگهایی که تاکنون با آنها برخورد داشتهاید دراین مجموعهبندی قرار میگیرند؟ تجربهٔ خود در واکنش با باگهای عجیبی که ساعتها شما را درگیر کرده است را می توانید در بخش نظرها با ما و سایر کاربران فراتک درمیان بگذارید.
مهمترین باگ های برنامه نویسی
در این نوشتهعلمی، نگاهی میاندازیم به ۴ نوع از باگها که نام خود را از پژوهشگران دارای شهرت گرفتهاند؛ مجموعهبندی این باگها مورد جالبی هست و پیرو خواهیم روئت کرد که باگهای ساخت شده در پروسه کدنویسی تا چه اندازه میتوانند عجیب باشند! در نوشتهیعلمیای دارای اسم و رسم، آقای Jim Gray، باگها را به ۲ دستهٔ Bohrbugs و Heisenbugs، براساس نام ۲ دانشمند دارای شهرت تقسیمبندی کرده است اما امروزه، ما گونه های باگهای بیشتری را می شناسیم و با آنان سروکار داریم؛ براین اساس به ۲ دستهٔ دیگر هم نگاهی خواهیم داشت و هر ۴ مورد را بابیان مثال رسیدگی خواهیم کرد.
Bohrbug
بیشتر باگهایی طراحی سایت در مشهد که با آن ها واکنش داریم، مجدداً قابلایجاد کرد میباشند و با عنوان Bohrbugs شناخته میشوند؛ این باگها نام خود را از دانشمندی به نام Niels Bohr گرفتهاند که در سال 1913 یک مدل اتمی بی آلایش و قابلشعور ارائه داد. در مدل آقای Bohr، چیزهایی مثل مسیر تکان و مقدار انرژی یک الکترون در یک اتم، قابل پیشبینی میباشند.
بهطور مشابه، Bohrbugها هم قابل پیشبینی هستند؛ بهعبارت دیگر، در صورتی زیر همان موقعیت قبل نرمافزار را اعمال فرمایید، دوباره ساخت میگردند. برای مثال، وقتی بهخاطر اینکه از یک موجودیت null استفاده میکنید و بالتبع اپلیکیشنٔ شما کرش میکند، حتماً بار دیگر نرم افزار برای یک ورودی دیگر با مقدار null در همین نصیب کرش خواهد کرد؛ پس معین می باشد که این باگ بهراحتی قابل ساخت مجدد و بالتبع قابل دیباگ کردن است.
Heisenbug
همهٔ دولوپرهای حرفهای با این موضوع مواجه شدهاند وقتیکه اپلیکیشن را دوباره انجام میکنند، باگی که باعث شده بود نرم افزار کرش کند، ناپدید گردیده است! صرفنظر از اینکه چقدر عملکرد می کنید و زمان خود را صرف کشف کردن دوبارهٔ همان باگ میکنید، البته باگ از دست شما فرار میکند و دوباره خود را نشانه نمیدهد.
این نوع از باگها اسم خود را از دانشمند معروف آقای Werner Heisenberg گرفتهاند که بهخاطر «اصل عدم قطعیت» یا اصطلاحاً Uncertainty Principle شناخته گردیده است؛ براساس این اصل، در یک زمان مشخص، امکان اندازهگیری مکان و سرعت یک الکترون درون یک اتم، بهصورت دقیق و یا تقریبی وجود ندارد.
وقتی شما میخواهید عملیات دیباگینگ، ایزولهسازی و یا رسیدگی دقیق برای یافت کردن نقص را اعمال دهید و باگها خلق متفاوتی از خود آرم میدهند، بهاین نام شناخته میگردند؛ برای مثال، در شرایطیکه متغیرهایتان را مقداردهی نخستین نکنید، ممکن این واقعه رخ دهد. زمانی نرمافزار انجام میگردد، به متغیرهایی که مقداردهی نخستین نشدهاند دسترسی خواهد داشت و این سبب ساز ایجاد باگ می شود اما این درحالی هست که وقتی می خواهید اپلیکیشن را دیباگ نمایید، اپ احتمالاً درست عمل خواهد کرد چراکه بخش اعظمی از دیباگرها، متغیرهایی که مقداردهی نخستین نشدهاند را با ۰ مقداردهی میکنند و همین باعث میشود که شما با باگ موردنظر برخورد نکنید.
Mandelbugs
وقتی علت تولید باگ بسیار پیچیده و غیرقابل ادراک باشد و باگ رفتاری غیرطبیعی از خود نشان میدهد، آنرا Mandelbugs مینامند. این باگها نام خود را از روی نام آقای Benoît Mandelbrot گرفتهاند که بهعنوان پدر علم هندسه فراکتال شناخته میگردد (فراکتالها، ساختارهای پیچیده و شبیه به خود میباشند). یک باگ در سیستمعامل که به فرصتبندی وابسته هست، مثالی از این نوع باگها است.
Schroedinbug
گاهیاوقات به سورسکد نگاه میاندازید و متوجه میشوید که باگ یا مشکلی وجود دارااست که در مرحلهٔ نخستین به هیچ وجهً نباید اجازهٔ ایفا شدن برنامه را بدهد؛ وقتی میخواهید همین کد را اجرا کنید، باگ موردنظر بیاندیشه ظاهر می گردد و اپ متوقف می شود. هرچند این مورد یه خرده غیرمعمول بهنظر میرسد، اما چنین باگهایی گاهیتایم ها شکل میدهند و با نام Schroedinbug شناخته میگردند (معمولاً این نوع باگها از روند اولٔ تستهای کیفیت اپلیکیشن رد میشوند و خود را علامت نمیدهند).
باگهای نوع Schroedinbug، نام خود را از دانشمند دارای شهرت آقای Erwin Schrödinger گرفتهاند که ایدهٔ «آزمایش تئوری گربه» را ارائه کرد؛ در فیزیک کوانتوم، ذرههای کوانتوم مانند اتمها، می توانند در ۲ موقعیت یا بیشتر وجود داشته باشند ولی شرودینگر توصیه کرد که در اشیاء کلاسیکتری مانند گربه که از اتمهای بسیاری ساخته شده، وجود داشتن در ۲ شرایط، ناممکن می باشد. وی یک اکران را توصیه میکند که در آن یک گربه در داخل جعبهای در بسته، یاور با شیشهای با محتوای سم (که به یک اتم رادیواکتیو متصل می باشد) قرار دارد.
چنانچه نیمهعمر اتم به اتمام برسد، شیشه شکسته میشود و سم به بیرون نشت میکند و باعث مرگ گربه میگردد؛ البته درِ جعبه بسته هست و به این ترتیب نمیقدرت اظهارکرد گربه زنده هست یا مرده. از اینرو، تا وقتیکه درِ جعبه باز شود، گربه میتواند در ۲ موقعیت قرار داشته باشد: زنده یا مرده. در فیزیک کوانتوم، بدین گزینه اصطلاحاً Superposition State میگویند، به شکلی که گربه هم زنده هست و هم مرده!
برگردیم به مشاجره باگها؛ تنهاً با مشاهدهٔ نقص در کد، شما دست به تشکیل داد چندین تغییرات میزنید که درینوضعیت یا اپ انجام میگردد و یا فعالیت نمیکند. بنابراین این نوع از باگها با عنوان Schroedinbug شناخته میشوند.
انواع باگهای دیگری هم وجود دارند که در قالب این ۴ دسته قرار نمیگیرند که از آن گزاره میاقتدار به باگهای بهاصطلاح Aging-Related اشاره کرد که صرفا زمانی صورت میدهند که نرم افزار برای برهه زمانی طولانی کار کند! در نقطه پایان هم ممکن است این سؤال برای شما پیش آمده باشد که به هیچ عنوانً اصطلاح Bug (بهمعنا حشره) از چه زمانی در صنعت گسترشٔ نرم افزار باب شد؛ برای یافتن پاسخ به این سؤال، توصیه میکنیم به نوشتهعلمیٔ آشنايى با دريابان گريس مارى هوپر، هر که برای اولین بار اصطلاح Bug را باب کرد! مراجعهنمایید.
شما چه میپندارید، آیا باگهایی که تاکنون با آنها برخورد داشتهاید دراین مجموعهبندی قرار میگیرند؟ تجربهٔ خود در واکنش با باگهای عجیبی که ساعتها شما را درگیر کرده است را می توانید در بخش نظرها با ما و سایر کاربران فراتک درمیان بگذارید.