آزمون مرغابی
آزمون مرغابی نمونهای از استدلال استقرایی است با این بیان که: «اگر چیزی شبیه اردک به نظر میرسد، مثل اردک شنا میکند و صدای اردک درمیآورد، آن چیز احتمالاً اردک است»
این آزمون در مواردی بکار میرود که بتوان شی نامعلومی را به وسیلهٔ علایم ذاتی آن شناسایی کرد. همچنین جزء مباحثات بغرنج در مورد اینکه هر چیزی الزاماً آنطور که بنظر میرسد نیست نیز محسوب میشود.
از این منطق در برنامه سازی کامپیوتر نیز، در زبانهایی مانند پایتون و روبی استفاده میشود که به آن نوع یابی مرغابی میگویند.
تاریخچه
شاعر اهل ایندیانا جیمز ویتکام رایلی(به انگلیسی: James Whitcomb Riley) (۱۸۴۹–۱۹۱۶) احتمالاً با کلمات بازی کرده زمانی که نوشتهاست:
زمانی که پرندهای را میبینم که مثل اردک راه میرود، مثل اردک شنا میکند و مثل اردک کواک کواک میکند، من این پرنده را اردک مینامم.
جملهبندی رایجتر عبارت احتمالاً مدتها بعد توسط امیل میزی(به انگلیسی: Emil Mazey)، خزامه دار کارگران متحد خودرو، در یک گردهمایی کار در ۱۹۴۶، زمانی که او فردی را به کمونیست بودن متهم کرد، به وجود آمد.
من نمیتوانم اثبات کنم که شما کمونیست هستید اما زمانی که پرندهای را میبینم که مثل اردک کواک کواک میکند، مثل اردک راه میرود، مثل اردک شنا میکند، پر و پاهای پردهدار دارد و با اردکها رفتوآمد میکند، من قطعاً فرض میکنم که این پرنده اردک است.
عبارت بعداً توسط ریچارد کانینگام پترسن(به انگلیسی: Richard Cunningham Patterson Jr)، سفیر ایالات متحده در گواتمالا، طی جنگ سرد رواج پیدا کرد. زمانی که او این عبارت را برای متهم کردن دولت جاکوب آربنز گازمن (به انگلیسی: Jacobo Árbenz Guzmán) به کمونیست بودن استفاده کرد. پترسون دلیل خود را به این شکل ارائه کرد:
فرض کنید پرندهای را در حال راه رفتن در حیاط یک مدرسه ببینید. این پرنده هیج نشانهای ندارد که بگوید یک مرغابی است. اما پرنده بهطور قطع شبیه مرغابی است. او درون برکه میرود و شما متوجه میشوید که او مثل مرغابی شنا میکند. سپس منقارش را باز میکند و مثل یک مرغابی کواک کواک میکند. اینبار شما یقیناً یه این نتیجه میرسید که این پرنده یک مرغابی است، چه برچسبی داشته باشد یا نه.
مرجع بعدی آزمون مرغابی کاردینال ریچارد کوشینگ (به انگلیسی: Cardinal Richard Cushing)است که از این عبارت در سال ۱۹۶۴ در اشاره به فیدل کاسترو(به انگلیسی: Fidel Castro) استفاده کرد.
داگلاس آدامز(به انگلیسی: Douglas Adams) از این عبارت در کتاب خود، آژانس جامع کارآگاهی دریک جتنلی (به انگلیسی: Dirk Gently's Holistic Detective Agency)تقلید کردهاست.
اگر مثل اردک باشد و مثل اردک کواک کواک کند، ما باید حداقل احتمال دهیم که یک پرنده کوچک آبزی از خانواده اردکها داریم.
نوعیابی مرغابی
در برنامهنویسی کامپیوتر، برای اطمینان از نوع یک متغیر از نوعیابی مرغابی استفاده میشود. این مستلزم آن است که کنترل نوع متغیر به زمان اجرا به تعویق بیفتد و با استفاده از نوعیابی پویا یا بازتابی اجرا شود.
هدف نوعیابی مرغابی این است که مناسب بودن نوع متغیر را برای استفاده در جای مشخص، به وسیله روشهای خاص تعیین کند. اما در نوعیابی عادی، مناسب بودن فقط با نوع شیٔ مشخص میشود.
نمونهٔ مفهومی
شبهکد زیر را در نظر بگیرید:
function calculate(a, b, c) => return (a + b) * c
example1 = calculate (1, 2, 3) example2 = calculate ([1], [2, 3], 2) example3 = calculate ('apples ', 'and oranges, ', 3)
print to_string example1 print to_string example2 print to_string example3
در مثال بالا، متغیرها میتوانند از هر نوعی باشند و تا زمانی که توابع "+" و "*" برای آن شیٔها معنادار باشد مشکلی پیش نخواهد آمد. خروجی چنین کدی در زبان پایتون با روبی به شکل زیر خواهد بود:
9 [1, 2, 3, 1, 2, 3] apples and oranges, apples and oranges, apples and oranges,
نوعیابی مرغابی میتوانند مثل چندریختی کار کند، اما بدون وراثت. تنها محدودیتی که تابع calculate اعمال میکند این است که ورودیها اعمال "+" و "*" را پیادهسازی کنند.
منابع
- ↑ [Heim, Michael (2007). Exploring Indiana Highways. Exploring America's Highway. p. 68. ISBN 978-0-9744358-3-1.],
- ↑ [hSentinel, John (September 29, 1946). "Communist Expose The Case of the Duck". Milwaukee (WI) Sentinel.],
- ↑ Immerman, Richard H. (1982), The CIA in Guatemala: The Foreign Policy of Intervention, Austin, Texas: University of Texas Press, p. 102
- ↑ Platt, Suzy. Respectfully quoted. Library of Congress, Congressional Research Service. ISBN 978-0-88029-768-4. "Attributed to Richard Cardinal Cushing. Everett Dirksen and Herbert V. Prochnow, Quotation Finder, p. 55 (1971). Unverified."
- ↑ Adams, Douglas (1987). Dirk Gently's Holistic Detective Agency.