دلم برای نوشتن تنگ شده

  • یوسف مهرداد بی‌بالان

دیرزمانی است که چیزی ننوشته‏ام. پايان سال، فشار كار و هزار بهانه ديگر براي ننوشتن.

از خانم كراري هم خيلي ممنون هستم كه سري به وبلاگ زدند. برايشان در آزمون ورودي دانشگاه آرزوي مؤفقيت دارم.

براي همه عزيزان سال خوبي را آرزو مي‏كنم. اميدوارم سالي بهتر از سالهاي گذشته در پيش داشته باشيد.

تعطيلات خوش بگذرد.

مقالاتي در مورد الگوهاي طراحي(Design Patterns)

  • یوسف مهرداد بی‌بالان

يك سري از مقالات نشريه شيءگرايي در مورد الگوهای طراحی (Design Patterns) را در زير آورده‏ام. مطالعه آنها را توصيه مي‏كنم.
مقالات را به صورت یکجا از اینجا دریافت نمایید.

الگو چيست؟
تأليف و ترجمه: حميده مطهريان
در اين مقاله به اختصار به تعريف الگوي نرم‏افزاري پرداخته شده است.

تاريخچه الگوهاي طراحي
تأليف و ترجمه: صباالسادات بزرگي
مفهوم الگو براي نخستين بار توسط يك مهندس معمار به نام كريستوفر الكساندر جهت بيان وقايع و ساختارهاي معماري شهري استفاده شد. پس از آن كه اين مفهوم به دنياي مهندسي نرم‏افزار وارد شد، به عنوان شاخه‏اي مستقل و پركاربرد در آن شناخته شد.
در اين مقاله، تاريخچه اين تحول آورده شده است.

الگوهای طراحی، لزوم، کاربرد و مثال
تأليف و ترجمه: یوسف مهرداد بی‏بالان

دسته‏بندي الگوهاي طراحي
تأليف و ترجمه: صباالسادات بزرگي، نيوشا قريشي، علي‏رضا خيرخواه
از آن جايي كه تعداد الگوهاي طراحي بسيار زياد است، لذا نيازمند روشي براي سازماندهي و دسته بندي آنها هستيم. اين مقاله سعي دارد، دسته‏بندي از الگوها جهت آشنايي سريع‏تر خواننده ارائه دهد.
در اين مقاله علاوه بر دسته‏بندي الگوهاي طراحي به بررسي اجمالي همراه با ارائه كد نمونه مهم‏ترين الگوهاي طراحي پرداخته شده است.

الگوي طراحي سازگارساز
تأليف و ترجمه: نيوشا قريشي
الگوي طراحي سازگارساز يكي از 23 الگوي طراحي GOF است. اين الگو از جمله الگوهاي ساختاري است كه هم در حوزه كلاسها و هم در حوزه اشياء استفاده مي‏شود. الگوي سازگارساز واسط يك كلاس را به واسط كلاس ديگري به گونه‏اي تبديل مي‏كند كه مورد انتظار مشتري باشد. الگوي سازگارساز امكان همكاري را براي آن دسته از كلاس‏هايي كه به دليل داشتن واسط‏هاي ناسازگار نمي‏توانستند با يكديگر كار كنند، فراهم مي‏كند. در اين مقاله به معرفي الگوي سازگارساز با توجه به قالب GOF پرداخته شده است.

مثالهايي از کاربرد الگوي طراحي سازگارساز
تأليف و ترجمه: نيوشا قريشي، يوسف مهرداد بي‏بالان
پس از بيان مفاهيم كلي و ارائه دسته‏بندي الگوها، جهت واضح شدن بحث به ارائه مثالهاي شهودي از كاربردهاي مختلف الگوها مي‏پردازيم كه قطعا” به درك بهتر مفهوم كمك مي‏نمايد.

معرفي کتابهاي مرتبط با الگوهاي طراحي
تأليف و ترجمه: حميده مطهريان
کتاب‏های گوناگونی در زمينة الگوهای طراحی به چاپ رسيده است که هر يک ويژگی‏های مخصوص به خود را دارد، در اين قسمت سعی شده است که از ميان اين کتابها، آن دسته از کتابهايي که از همه کامل‏تر و جامع‏تر هستند و هم چنين کتابهای مرتبط با آنها معرفی شده و در اختيار علاقمندان قرار گيرد.

روزی روزگاری مهندس نرم‏افزار خوبي بود كه …

  • یوسف مهرداد بی‌بالان

كتاب Object-Oriented Reengineering Patterns از Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz در نوع خود كتاب جالبي است. در مقدمه اين كتاب داستان خيالي را تعريف شده و پس از آن ديدگاه نويسندگان آن در مورد مهندسي نرم‏افزار بيان شده است. آوردن مقدمه كتاب از آن جهت مفيد دانستم كه در آن به چند مورد خيلي مهم اشاره شده است كه در حالي كه اشاره به ماهيت مهندسي نرم‏افزار و تفاوت ماهوي آن با ساير گرايشهاي مهندسي دارد، در عين حال بيانگر موضوع بسيار مهمي است: راه حلهاي ما هنوز جواب مسئله‏اي كه با آن روبرو هستيم، نيست(كمي آهسته، كسي نشنود). اين مسئله چيزي نيست جز تغيير و پيچيدگي.

A Fairy Tale

Once upon a time there was a Good Software Engineer whose Customers knew exactly what they wanted. The Good Software Engineer worked very hard to design the Perfect System that would solve all the Customers’ problems now and for decades. When the Perfect System was designed, implemented and finally deployed, the Customers were very happy indeed. The Maintainer of the System had very little to do to keep the Perfect System up and running, and the Customers and the Maintainer lived happily ever after.

Why isn’t real life more like this fairy tale?

Could it be because there are no Good Software Engineers? Could it be because the Users don’t really know what they want? Or is it because the Perfect System doesn’t exist?

Maybe there is a bit of truth in all of these observations, but the real reasons probably have more to do with certain fundamental laws of software evolution identified several years ago by Manny Lehman and Les Belady. The two most striking of these laws are [Lehm85a]:

  • The Law of Continuing Change: The Law of Continuing Change — A program that is used in a real-world environment must change, or become progressively less useful in that environment.
  • The Law of Increasing Complexity: As a program evolves, it becomes more complex, and extra resources are needed to preserve and simplify its structure.

In other words, we are kidding ourselves if we think that we can know all the requirements and build the perfect system. The best we can hope for is to build a useful system that will survive long enough for it to be asked to do something new.

مایکروسافت، گوگل یا یاهو

  • یوسف مهرداد بی‌بالان

اینکه در شرکتهای بزرگ دنیا چگونه کار می‏کنند، براي من هميشه جذاب بوده است، از آن جهت كه مي‏توان از روش كارشان الگوبرداري كرد و سعي كرد چرخ را دوباره اختراع نكنيم. يكي از موضوعاتي كه با دوستان خارج از كشور هميشه مورد بحث و بررسي قرار مي‏دهيم، همين نكته است.

داستان يك كارورز از مايكروسافت، گوگل و ياهو را مطالعه كنيد. نكات جالب و جذاب زيادي در آن بيان شده است.

http://tastyresearch.wordpress.com/work-stories

كرم ضد آفتاب بماليد: سخن راني كورت ونه گات در مراسم فارغ التحصيلي سال 1997 دانشگاهM.I.T

  • یوسف مهرداد بی‌بالان

نمی‏دانم مطلب زیر را کدام یک از دوستانم برایم فرستاده است. نمی‏دانم مرجع اصلی مطلب زیر کجاست. ولی خواندنش خالی از لطف نیست.

كورت ونه گات، يكي از دوست داشتني‏ترين نويسنده‏هاي زنده دنيا است. او سال 1922 در اينديانا پوليس آمريكا به دنيا آمده است. اگرچه خيلي‏ها او را يك نويسنده داستان‏هاي علمي تخيلي به شمار مي‏آورند، رمان‏هاي او عموما” خيلي فراتر از يك قصه علمي تخيلي معمولي است. نگاه انتقادي ونه گات نسبت به جامعه مدرن به خصوص جامعه امريكا به همراه طنزي كه استادانه در لابه لاي كلمات و جمله‏هايش استفاده مي‏كند، از او نويسنده‏اي دقيق و تيزبين ساخته است.

مشهورترين كتابي كه از ونه گات به فارسي ترجمه شده سلاخ خانه شماره پنج است. شب مادر، اسلپ استيك، گهواره گربه و مجمع الجزاير گالاپاگوس هم از جمله رمان‏هايي است كه مي‏توانيد در بازار از او پيدا كنيد.

خانم ها و آقايان فارغ التحصيل! كرم ضد آفتاب بماليد.
اگر مي‏خواستم براي آينده شما فقط يك نصيحت بكنم، راه ماليدن كرم ضد آفتاب را توضيح مي‏دادم. خواص و آثار مفيد درازمدت كرم ضد آفتاب توسط دانشمندان ثابت شده است. در حالي كه ساير نصايح من هيچ پايه و اساس قابل اعتمادي جز تجربه‏هاي پرپيچ و خم شخص خودم ندارد. اينك اين نصايح را خدمتتان عرض مي‏كنم.
قدر نيرو و زيبايي جواني‏تان را بدانيد، ولي اگر هم ندانستيد، ولش. روزي قدر نيرو و زيبايي جواني‏تان را خواهيد دانست كه طراوت آن روبه افول مي‏گذارد، اما باور كنيد تا بيست سال ديگر به عكس‏هاي جواني خودتان نگاه خواهيد كرد و به ياد مي‏آوريد چه امكاناتي در اختيارتان بوده و چقدر فوق‏العاده بوده‏ايد.
آن طوركه تصور مي‏كنيد چاق نيستيد.
نگران آينده نباشيد. اگر هم دلتان مي‏خواهد نگران باشيد، فقط بدانيد كه نگراني همان اندازه مؤثر است كه جويدن آدامس بادكنكي درحل يك مساله جبر.
مشكلات اساسي زندگي شما، بي‏ترديد چيزهايي خواهند بود كه هرگز به مخيله نگران شما خطور هم نكرده‏اند. از همان نوعي كه ساعت چهار بعدازظهر يك روز سه‏شنبه عاطل و باطل ناگهان ديد انسان را كور مي‏كند.
هر روز يكي از كارهايي را كه از آن وحشت داريد انجام بدهيد.
آواز بخوانيد.
با دل ديگران بي‏رحم نباشيد و با كساني كه با دل شما بي‏رحم بوده‏اند سر نكنيد.
نخ دندان به كار ببريد.
عمرتان را با حسادت تلف نكنيد. گاهي شما جلو هستيد و گاهي عقب، مسابقه طولاني است و سر آخر خودتان هستيد كه داريد با خودتان مسابقه مي‏دهيد.
تعريف‏هايي را كه از شما مي‏شود به خاطر بسپاريد. ناسزاها را فراموش كنيد. اگر موفق به انجام اين كار شديد راهش را به من هم نشان بدهيد.
نامه‏هاي عاشقانه قديمي تان را حفظ كنيد. صورت حساب هاي بانكي گذشته را دور بيندازيد.
نرمش كنيد. بدنتان را هر قدر كه مي‏توانيد كش بياوريد. اگر نمي‏دانيد مي‏خواهيد با زندگي‏تان چه كنيد، احساس گناه نكنيد. جالب‏ترين افرادي را كه در زندگي شناخته‏ام در بيست و دو سالگي نمي‏دانسته‏اند مي‏خواهند با زندگي‏شان چه كنند.
برخي از جالب‏ترين چهل ساله‏هايي را هم كه مي‏شناسم هنوز نمي‏دانند.
تا مي‏توانيد كلسيم بخوريد. با زانوهايتان مهربان باشيد. وقتي قدرت زانوهاي خود را از دست داديد كمبودشان را به شدت حس خواهيد كرد.
ممكن است ازدواج كنيد، ممكن است نكنيد، ممكن است صاحب فرزند شويد، ممكن است نشويد، ممكن است در چهل سالگي طلاق بگيريد، احتمال هم دارد كه در هفتاد و پنجمين سالگرد ازدواجتان رقصكي هم بكنيد. هر چه مي‏كنيد نه زياد به خودتان بگيريد، نه زياد خودتان را سرزنش كنيد. انتخاب هاي شما بر پايه احتمال پنجاه درصد بوده است، همان طور كه مال همه بود.
از بدنتان لذت ببريد و از آن چه ديگران درباره آن مي‏انديشند وحشت نداشته باشيد. اين بهترين ابزاري است كه در سراسر عمر خواهيد داشت.
از خواندن مجلات مربوط به زيبايي پرهيز كنيد. تنها خاصيت آنها اين است كه به شما بقبولانند زشتيد.
دستورالعمل‏ها را بخوانيد، حتي اگر از آن ها پيروي نمي‏كنيد.
در شناخت پدر و مادر خود بكوشيد. هيچ كس نمي‏داند كي آن ها را براي هميشه از دست خواهد داد.
با خواهران و برادران خود مهربان باشيد، آن ها بهترين رابط شما با گذشته هستند و به ظن قوي، كساني كه بيش از هر كس ديگري در آينده به شما خواهند رسيد.

به ياد داشته باشيد كه دوستان مي‏آيند و مي‏روند ولي آن تك و توك دوستان جاني خود را حفظ كنيد. براي پل زدن ميان اختلاف‏هاي جغرافيايي و روشهاي زندگي سخت بكوشيد، زيرا هر چه بيشتر از عمر شما بگذرد، بيشتر پي مي‏بريد كه به افرادي كه در جواني مي‏شناختيد محتاجيد.
سفر كنيد.
برخي حقايق لاينفك را بپذيريد: قيمت‏ها صعود مي كنند، سياست مداران كلك مي‏زنند، شما هم پير مي‏شويد. و آن گاه كه شديد، در تخيلاتتان به ياد مي‏آوريد كه وقتي جوان بوديد قيمت‏ها مناسب بودند، سياست‏مداران شريف بودند، و بچه‏ها به بزرگترهايشان احترام مي‏گذاشتند.
به بزرگترها احترام بگذاريد.
توقع نداشته باشيد كه كس ديگري نان آور شما باشد. ممكن است حساب پس‏اندازي داشته باشيد، شايد هم همسر ثروتمندي نصيب تان شده باشد، ولي هيچ گاه نمي‏توانيد پيش‏بيني كنيد كه كدام خالي مي‏شود يا جا خالي مي‏دهد.
خيلي به موهايتان ور نرويد، وگرنه وقتي چهل سالتان شد شبيه موهاي هشتاد ساله‏ها مي‏شود.
دقت كنيد كه نصايح چه كسي را مي‏پذيريد، اما با كساني كه آنها را صادر مي‏كنند بردبار باشيد. نصيحت، گونه ديگر غم غربت است. ارايه آن روشي است براي بازيافت گذشته از ميان تل زباله‏ها، گردگيري آن، و ماله كشيدن بر روي زشتي‏هايش و مصرف دوباره آن به قيمت بالاتر از آن چه ارزش دارد.
اگر نخواستيد توصيه‏هايم را گوش كنيد، نكنيد. اما حرفم را در مورد كرم ضد آفتاب بپذيريد.

افول برنامه‏نویسی شیءگرا

  • یوسف مهرداد بی‌بالان

مقاله جالبی در سه قسمت از Karsten Wagner مطالعه کردم که در نقد برنامه‏نویسی شیءگرا و بیان دلایلی در افول آن بود.
خواندن این مقاله را به شما توصیه می‏کنم.
OOP is dead – Part 1
OOP is dead – Part 2

OOP is dead – Part 3

اگر فرصت کردید، نظرتان را در اینجا یادداشت کنید تا در مورد آن مباحثه‏ای داشته باشیم.

رابطه معماري نرم‏افزار و آبگوشت

  • یوسف مهرداد بی‌بالان

يكي از نكات مهمي كه در مفهوم معماري نرم‏افزار وجود دارد اين مطلب كه معماري در يك كلام، اثبات كردن راه‏حلي است كه شما براي نرم‏افزار ارائه كرده‏ايد با توجه به معيارهاي كيفي كه با مشتري توافق كرده‏ايد. داشتم اين مطلب را براي بچه‏ها در كلاس توضيح مي‏دادم و در نظرم بود كه به شكلي كاري كنم كه اين مطلب در ذهنشان ماندگار شود. به ياد واقعه‏اي افتادم كه يكي از نزديكان تعريف كرده بود.

موضوع از اين قرار بود كه عده‏اي جايي مهمان بودند و غذا هم آبگوشت بود. موقع كوبيدن گوشت، نخود و لوبياي آبگوشت كه صاحب‏خانه مشغولش بود. گفتگوي زير رخ داد:

-مهمان: چقدر حرفه‏اي گوشت كوبيده را مي‏كوبي؟

-ميزبان: لطف داريد. تازه اين كه چيزي نيست. مي‏تونم بدون اين كه سرم را حركت دهم، گوشت كوبيده را بكوبم. شما مي‏توني اين كار رو بكوني؟

– مهمان: بله كه مي‏توانم.

ميزبان: خوب بفرما ثابت كن.

البته مهمان اين كار را نكرد. ولي واقعيتش اين بود كه اين كلكي بود كه ميزبان براي خلاصي از دست كوبيدن گوشت كوبيده به ذهنش رسیده بود.

با گفتن اين داستان همه زدند زير خنده و واقعاً هم خنده‏دار بود. با اين داستان ياد استاد عزيز و دوست‏داشتني آقاي روحاني رانكوهي افتادم كه هميشه با اين روشها به ما ياد مي‏داد كه كنه مطلب چيست. خداوند يار و نگهدارش باشد.

بله واقعيت همين است. اگر مطمئن هستيد كه راه حلي كه ارائه كرده‏ايد، جواب مي‏دهد، ثابتش كنيد. اين تلاش شما همان چيزي است معماري مبناگفته مي‏شود.(در بيان ساده و عاميانه)

در حاشیه: صحبت از آبگوشت كه مي‏شود ياد دوستان و همكاران خوبم آقايان مهندس روح‏الله رستمي، احمد زارعي، محمد باكويي وآرش فرزين در شركت نبراس انفورماتيك مي‏افتم كه به ديزي‏سرايي در خيابان ولي‏عصر مي‏رفيتم و نهار ديزي مي‏خورديم.

جاي همه شما خالي.

برای خروج از جستجو کلید ESC را بفشارید