TGViewer
سماموس: نوشته‌های یوسف مهرداد بی‌بالان سماموس: نوشته‌های یوسف مهرداد بی‌بالان @bibalan_com · 298 subscribers
Post #206 160
الگوی ایجاد نرم‌افزار: تجزیه – ترکیب!
پیش‌گفتار
:
مدتی است که با خود می‌اندیشم تجربیات‌م را در حوزه‌ی نرم‌افزار در اینجا بنویسم، هم ماندگار خواهد شد و هم شاید به دوستی کمک کند. نمی‌دانم “الگوی ایجاد نرم‌افزار” عبارت مناسبی هست یا نه، ولی تا یافتن عبارت مناسب‌تر از آن استفاده خواهم کرد.

داستانی از عبید زاکانی:
گویند؛
روزی “مطربی” نزد “مرحوم کرباسی” که از علمای “عهد فتحعلی شاه” بود آمد و حکم شرع را در مورد “رقصیدن” پرسید.
کرباسی با عصبانیت جواب داد:
“عملی است مذموم و فعلی است حرام.”
مطرب پرسید: “حضرت آقا، اگر من دست راستم را بجنبانم حرام است؟”
مرحوم کرباسی گفت: “خیر!”
مطرب پرسید: “اگر دست چپم را بجنبانم؟!”
مرحوم کرباسی گفت: “خیر!”
سپس مطرب از “حکم شرعی” در مورد تکان دادن پای راست و چپ پرسید و هر بار مرحوم کرباسی گفتند: “خیر” ایرادی ندارد. اصولا دست و پا برای “جنبانده شدن” خلق گشته اند.
مطرب که منتظر این فرصت بود از جای خود بلند شد و در مقابل دیدگان بهت زده مرحوم کرباسی و حاضران مجلس “شروع به رقصیدن کرد” و گفت: “حضرت آقا، رقص همان تکان دادن دست ها و پاهاست که فرمودید حرام نیست.
مرحوم کرباسی در جواب گفت: “مفرداتش” خوب است…
ولی “مرده شوی ترکیبش را ببرد”
به این معنی که تک تک امور به تنهایی خوب هستند اما مجموعشان فعل حرام است و به درد نمی خورد.
منبع: اینجا

مفردات نرم‌افزاری:
یکی از روش‌های حل مساله این است که مساله را به قسمت‌های کوچک‌تری تقسیم کنید و بعد از حل هر قسمت که انتظار می‌رود پیچیدگی کمتری داشته باشد، از ترکیب‌ راه‌کارها به پاسخ اصلی برسید. برای نمونه در طراحی الگوریتم، الگوریتم را به چند گام تقسیم می‌کنیم و هر یک از گام‌ها را به تعدادی زیرگام‌. بعد از آن که جزییات هر زیرگام نهایی شد، آنها را با یک فرایند معکوس، سر هم می‌کنیم تا به الگوریتم نهایی دست پیدا کنیم. مثلا برای تولید و چاپ اعداد اول (به گونه‌ای که چاپ آنها نیز بر مبنای یک الگوی خاص باشد)، مساله را به دو گام تولید اعداد اول و چاپ اعداد تولیدشده تقسیم می‌کنیم. بعد از حل هر دو گام، از سر هم شدن آنها، کل مساله حل می‌شود. در این شرایط هر بخش پاسخ ما به تنهایی فوق‌العاده است و به خوبی کار می‌کند.

بعضی اوقات نیز به ناچار هر گام از مساله با یک تکنولوژی خاص انجام می‌شود. مثلا شما برای ایجاد اعداد اول تصمیم می‌گیرید که از یک کتابخانه موجود استفاده کنید. هم‌چنین فرض کنید که برای چاپ اعداد هم از کتابخانه‌ی دیگری استفاده می‌نمایید. دو گام/بخش راهکار شما به صورت جداگانه به خوبی کار می‌کنند.

ترکیب‌های نرم‌افزاری:
نکته اینجاست که وقتی پاسخ تک‌تک اجزا (گام‌های الگوریتم یا زیربخش‌ها) را پیدا می‌کنید، هنگام سرهم‌بندی این اجزا با این واقعیت مواجه می‌شوید که این راهکارها قابل تجمیع در یک راهکار جامع و اصلی نیستند. به عبارت دیگر فرایند تجمیع که فرایندِ عکس فرایند تجزیه است، وقتی روی زیرراهکارها پیاده می‌شود، یا ‌انجام‌پذیر نیست و یا در صورت انجام‌پذیری، موجود تجمیع‌شده پاسخ مساله‌ی اصلی نیست. این اتفاق به ویژه وقتی گام‌ها/اجزا با تکنولوژی‌های متفاوت و به صورت جداگانه پیش‌ برده می‌شوند، بسیار بیشتر به چشم می‌خورد.

اینجاست که عبید زاکانی جلوی شما ظاهر می‌شود و با صدای بلند برای‌تان می‌خواند: تجزیه‌اش خوب بود، ولی مرده‌شور ترکیب‌ش را ببرد!

برای این که ذهن‌مان به هم نزدیک شود اجازه بدهید مثالی بیان کنم. نمی‌دانم تا حالا رادیو یا ضبط‌ یا کامپیوترهای قدیمی را باز کرده‌اید یا خیر. یکی از بستگان جوان ما عادت داشت که وقتی رادیوی خانه‌شان خراب می‌شد، آن را با آچار و پیچ‌گوشتی باز می‌کرد و بعد از ساعت‌ها کار مهندسی فشرده و طاقت‌فرسا 🙂 ، وقتی می‌خواست رادیو را دوباره سرهم کند یک سری قطعه و یک عالمه پیچ اضافه می‌آورد. به عبارت ساده فرایند سرهم‌بندی مطابق با فرایند جداسازی پیش نمی‌رفت. البته این فامیل ما همیشه می‌گفت که کارخانه‌ی سازنده‌ی رادیو این تجهیزات را به عنوان قطعات یدکی و اضافی در رادیو قرار داده است. 🙂

امیدوارم تجزیه و ترکیب‌هایتان فوق‌العاده باشد.

گزیده:
یک برنامه‌نویس بد به راحتی می‌تواند دو شغل جدید در هر سال ایجاد کند. 🙂
دیوید پرناس

https://www.bibalan.com/?p=3590

https://t.me/bibalan_com
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
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 →