TGViewer
سماموس: نوشته‌های یوسف مهرداد بی‌بالان سماموس: نوشته‌های یوسف مهرداد بی‌بالان @bibalan_com · 297 subscribers
Post #360 1.35K
قانون هایروم (Hyrum’s Law)-بخش اول

طی چند سال گذشته و به دلیل همکاری‌ام برای انتقال (migration) زیرساخت‌های سطح‌ پایین یکی از پیچیده‌ترین سیستم‌های نرم‌افزاری روی کره‌ی خاکی به نکات مهمی درباره‌ی تفاوت بین رابط (interface) و پیاده‌سازی آن (implementation) برخورد کرده‌ام. معمولن ما رابط (interface) را تجریدی (abstraction) برای ارتباط با سیستم می‌دانیم و پیاده‌سازی (implementation) را هم روشی می‌‌دانیم که سیستم کارش را انجام می‌دهد. برای نمونه فرمان و پدال‌های گاز و ترمز در خودرو مانند رابط عمل می‌کنند و چرخ‌ها و موتور هم مانند پیاده‌سازی هستند (ارتباط ما با خودرو از طریق فرمان و پدال‌ها است ولی خودرو به کمک موتور و چرخ‌ها کار خواسته‌شده را انجام می‌دهد). چنین مفهومی به دلایل متعددی مفید است که مهم‌ترین‌اش این است که پیچیدگی بسیاری از سیستم‌های پرکاربرد خیلی سریع به حدی می‌رسد که فهم و شناخت کامل آن برای یک فرد یا گروه دشوار می‌گردد و تجرید‌ها (abstraction) برای مدیریت این پیچیدگی بسیار مهم و حیاتی‌اند.

تعریف سطح درستِ تجرید (abstraction)، موضوع کاملن جداگانه‌ای است که در اینجا به آن نمی‌پردازیم (کتاب نفر ماه افسانه‌ای -Mythical Man-Month- را ببینید). نکته مهم این است که وقتی یک تجرید (abstraction) تعریف شد ما دوست داریم آن را غیرقابل تغییر، شفاف و تفسیرناپذیر بدانیم. به عبارت دیگر، هر رابط (interface) از دیدگاه نظری باید مرز شفافی بین استفاده‌کنندگان یک سیستم و پیاده‌سازی داخلی سیستم ترسیم کند. اما از دیدگاه عملی، با رشد تعداد استفاده‌کنندگان و استفاده از سیستم، این نظریه نقض می‌شود و استفاده‌کنندگان شروع به اعتماد و اتکا به جزییات پیاده‌سازی می‌کنند. این جزییات یا دانسته از طریق رابط (interface) به بیرون درز کرده یا خود استفاده‌کنندگان موقع استفاده از سیستم آنها را کشف کرده و فهمیده‌اند. «قانون تجریدهای دارای نشتی اسپولسکی» (Spolsky’s Law of Leaky Abstractions) توضیح می‌دهد که چگونه استفاده‌کنندگان به جزییات پیاده‌سازی اعتماد و اتکا می‌کنند.

نهایت چنین اتفاقی ما را به سوی مفهومی هدایت می‌کند که در محاوره به آن «قانون رابط‌های ضمنی یا غیرشفاف» (The Law of Implicit Interfaces)‌ گفته می‌شود: با فرض وجود تعداد کافی از استفاده‌کنندگان، چیزی به نام پیاده‌سازی خصوصی (private implementation) وجود ندارد [پیاده‌سازی خصوصی به این معناست که استفاده‌کننده هیچ اطلاعی از نحوه و روش پیاده‌سازی داخلی سیستم ندارند].

گزیده:
وقتی داشتم این کد رو می‌نوشتم فقط من و خدا می‌فهمیدیم من دارم چه کار می‌کنم. الان دیگه فقط خدا می‌دونه! 😀
ناشناس


https://t.me/bibalan_com
https://bibalan.com/?p=4652
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
  • 👍 10
  • ❤ 4
  • 🤔 3
More from @bibalan_com
  1. Sep 30, 2026هزینه‌ی RAG رو کی پرداخت می‌کنید؟ هر دستیار هوش مصنوعی که از بر اسناد و مدارک به پرسش‌های…
  2. Sep 9, 2026روح من، جا مانده در باران! https://t.me/bibalan_com
  3. Sep 5, 2026کی دست‌‌یار کیه؟ به ابزارهایی مانند Claude Code, Cursor, GitHub Copilot می‌گویم دستیار. ول…
  4. Aug 8, 2026وقتی هوش مصنوعی، حافظه‌ی شما را می‌دزدد بگذارید یک آزمایش کوتاه انجام بدیم! آیا می‌تونید ی…
  5. Jul 25, 2026فرایند تک‌ نفره (Process of One) در سال ۱۹۹۵، واتس هامفری (Watts Humphrey)-معروف به پدر کی…
  6. Jul 19, 2026دست‌یار هوش مصنوعی شما خسته نشده، پر شده اگر هر روز برای برنامه‌نویسی از هوش مصنوعی استفاد…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →