Dennis Ritchie passed away

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

Dear all C/C++ programmers and Friends
Hello

The Tech World Losses Another Pioneer. Dennis M. Ritchie, the pioneer of programming, the creator of the C programming language the ancestor of C++, Java and C#, the co-creator of UNIX and Plan 9 operating systems and the inventor of Inferno operating system passed away yesterday after a long illness.
A giant has fallen. It’s really hard to measure the impacts of his woks in our life. Rest in Peace DMR. Your creations live on. You have changed the history of technology and improved the lives of millions.

I’m pretty sure, the dead are happy now , specially Steve Jobs 🙁

#include
#define NO_LIMIT 1000000000

int main()
{
int i;
for (i = 0; i < NO_LIMIT; ++i)
printf(“Rest In Peace Dennisn”);

return 0; /* never return */
}

$ cc rest_in_peace.c
$ ./a.out
$ shutdown 0 # never return

Saeed Amrollahi
www.saeedamrollahi.com

لذت کامپیوتر

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

مقدمه:
ورود اغلب ما به رشته کامپیوتر به دلیل لذت بردن از موجود ناشناخته‌ای بود که روز به روز کاربردش وسیع‌تر می‌شد.
وقتی برنامه لذت نقاشی را می‌دیدم، واقعاً لذت می‌بردم. لذت از این که مجری برنامه چقدر از کارش لذت می‌برد و به زیبایی این لذت را به شما منتقل می‌کند. همان لحظه دوست داشتم که ابزار نقاشی را بردارم و شروع کنم به خلق دنیایی که دوست می‌داشتم.
وقتی موضوعِ علاقه و عشق درونی به ابزار معاش تبدیل می‌شود، یادتان می‌رود که قرار بوده از آن لذت ببرید. لذت بردن حلقه گم‌شده‌ای می‌شود که کم‌کم به فراموشی سپرده می‌شود، انگار هیچ وقت وجود نداشته است. دردسرهای امرار معاش نیز – مسائل متعدد تولید، استقرار و نگهداری نرم‌افزار، مشتریان، حقوق و جبران خدمات نیروی انسانی- این موضوع را روز به روز تشدید می‌کند.
موضوع اصلی:
از قدیم گفته‌اند که کوزه‌گر همیشه از کوزه شکسته آب می‌خورد! نرم‌افزار می‌نویسیم برای دیگران ولی خود از آن لذت نمی‌بریم!
چند وقت پیش یکی از نوجوانان فامیل گفت که برایم متن آهنگهای خارجی را دانلود کن تا به یادگیری زبان انگلیسی‌ام کمک کند. فلانی گفته است که این کار خیلی تأثیر دارد! به هر حال یکی از خدمات متخصصان کامپیوتر در خانواده، ارائه خدمات مهمی از این دست است هر چقدر سعی کردم که بقبولانم که سواد و تجربه‌ام به اندازه‌ای نیست که بتوانم این کار را انجام دهم، میسر نیفتاد! در نتیجه مجبور به ارائه خدمت شدم و آن هم خدمات رایگان. برای مفرح شدن موضوع، تصور کردم اگر قرار بود این مسأله را خودم حل کنم چگونه آن را انجام می‌دادم. راه حل باید سادگی لازم برای استفاده کاربر عادی و غیرمتخصص را می‌داشت و بدون حضورم قابل انجام می‌بود. به‌علاوه باید می‌توانست برای آهنگ‌هایی که نام و خواننده آنها نیز مشخص نبود، پاسخ‌گو باشد. مسیر انجام، نتیجه کار و لذت آن جالب‌تر از آنی بود که تصور می‌کردم.
پرسش دشوار: شما چه کارهایی در حوزه تخصصی خود انجام می‌دهید که از آن لذت می‌برید؟

پانوشت:
یکی از دوستان می‌گفت دلیل این که کوزه‌گر از کوزه شکسته آب می‌خورد، این است که کوزه‌های سالم را می‌فروشد!

گزیده:
غزلی در نتوانستن
از دست‌های گرمِ تو
کودکانِ توأمانِ آغوشِ خویش
سخن‌ها می‌توانم گفت
غمِ نان اگر بگذارد.

نغمه در نغمه درافکنده
ای مسیحِ مادر، ای خورشید!
از مهربانیِ بی‌دریغِ جانت
با چنگِ تمامی‌ناپذیرِ تو سرودها می‌توانم کرد
غمِ نان اگر بگذارد.

رنگ‌ها در رنگ‌ها دویده،
از رنگین‌کمانِ بهاریِ تو
که سراپرده در این باغِ خزان رسیده برافراشته است
نقش‌ها می‌تواند زد
غمِ نان اگر بگذارد.

چشمه‌ساری در دل و
آبشاری در کف،
آفتابی در نگاه و
فرشته‌یی در پیراهن،
از انسانی که تویی
قصه‌ها می‌توانم کرد
غمِ نان اگر بگذارد.

احمد شاملو، ۱۳ دیِ ۱۳۴۳

استیو جابز – نوشته‌ای از گریدی بوچ

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

This generation, this world, was graced with the brilliance of Steve Jobs, a man of integrity who irreversibly changed the nature of computing for the good. His passion for simplicity, elegance, and beauty – even in the invisible – was and is an inspiration for all software developers.

Quote:
Almost everything – all external expectations, all pride, all fear of embarrassment or failure – these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.
Steve Jobs

Reference: Grady Booch Blog

Obama:
There may be no greater tribute to Steve’s success than the fact that much of the world learned of his passing on a device he invented

چرا پذیرفتن بدیهیات چنین دشوار است؟

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

چند وقت پیش در شماره 109 ماهنامه «گزیده مدیریت» مقاله‌ای از آقای پراهالاد و ترجمه آقای دکتر قدمی با عنوان «چرا پذیرفتن بدیهیات چنین دشوار است؟» را مطالعه کردم:
«هر چه شرکت‌ها مؤفق‌تر می‌شوند، تشخیص زمان تغییر برایشان دشوارتر می‌شود. همه می‌دانیم بسیاری از صنایع از جمله صنعت سرگرمی، تعلیم و تربیت، انتشارات و خدمات مالی به سوی فردایی بسیار متفاوت‌تر حرکت می‌کنند، اما رهبران امروز بازار، آخرین نفراتی خواهند بود که خود را متحول می‌سازند، حتا اگر بفهمند برای بقا باید چنین کنند. چرا شرکت‌ها رویارویی با بدیهیات را چنین دشوار می‌یابند؟
یک دلیل می‌تواند این باشد که شرکت‌ها و بنگاه‌های مؤفق در گذر زمان ایدئولوژی‌های کسب‌وکاری مشخص (مانند راه تویوتا و راه زیراکس) ایجاد می‌کنند… این عوامل مؤفقیت اغلب به جزم‌اندیشی‌ها تبدیل می‌شوند و هیچ کس آن‌ها را به چالش نمی‌کشد.
مدیران عامل سازمان‌ها می‌توانند با پرسش سوالات زیر از مدیران ارشد سازمان، گاوهای مقدس را تشخیص دهند:
…..
مبنای تجربیات تیم مدیران ارشد سازمان چیست؟ آیا در رأس سازمان تنوع وجود دارد؟
به چه مهارتهایی درسازمان ارج می‌نهیم؟ چه شکاف‌ها و اختلافات مهارتی در حال شکل‌گرفتن است؟….

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

بر این باورم که چنین «گاوهای مقدسی» در شرکت‌ها و تیم‌های تولید نرم‌افزار وجود دارد و هر چه عمر و مؤفقیت‌های شرکتی افزایش یابد، تعداد و قدرت آنها نیز بیشتر می‌شود. گاوهای مقدسی که کسی را یارای به چالش کشیدن و نقد آنها نیست.
چند وقتی است که دنبال «گاوهای مقدس» شخصی‌ام هستم. آنانی که منحنی فراموشی باید برای آنها طی شود.

آیا می‌توانید نمونه‌هایی از گاوهای مقدس را برشمرید؟
آیا گاوهای مقدس خودتان را می‌شناسید؟

گزیده:
یک: باید اذهان ما براى برخورد با مسائل آینده آماده شود تا این که از تجربه گذشته انباشته شود.
جان دیوئی

دو: همیشه بهترین راه را برای پیمودن می‌بینیم اما فقط راهی را می‌پیماییم که به آن عادت کرده‌ایم.
پائولو کوئلیو

تجزیه-ترکیب

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

یک سیستم سپرده­‌های بانکی را در نظر بگیرید. ویژگی زیر فوق­‌العاده جذاب خواهد بود:
«هر گونه واریز یا برداشت از حساب با پیامک به صاحب حساب اطلاع داده شود.»

از آن جا که محاسبه و واریز سود عملیاتی است که منابع سیستم را به شدت مصرف می­‌کند، در صورت انجام آن در زمان استفاده از سیستم توسط کاربران (کاربران شعبه، مشتریان عابربانک، کارمندان ستاد بانک، …)، سیستم کند و باعث نارضایتی استفاده­‌کنندگان خواهد شد. از این رو پیشنهاد می­‌شود که:
«محاسبه و واریز سود در ساعت کم­‌کار سیستم –نیمه شب- انجام شود.»

حال این دو مورد را در سیستم سپرده بانکی با هم ترکیب کنید. نتیجه آن چه خواهد شد:
نیمه شب خواب هستی، تازه هم به خواب رفته­‌ای، صبح هم قرار است در جلسه مهمی شرکت کنی، صدای تلفن همراه از خواب بیدارت می­‌کند که پیامکی دریافت شد. سراسیمه از خواب بیدار می­‌شوی که چه خبر مهمی شده که فرستنده این ساعت از شب پیامک ارسال کرده است. تلفن همراه را نگاه می­‌کنی: «واریز مبلغ هزارتومان سود علی­‌الحساب به حساب … در بانک …. ». تلفن را خاموش می­‌کنی.

با خود فکر می­‌کنی آیا همکاری که این نرم­‌افزار را نوشته به این موضوع هم فکر کرده که ممکن است کسی را در نیمه شبی مشوش کند. شاید هم آن همکار عزیز فکر کرده سود واریزی به اندازه­‌ای عدد بزرگی است که صاحب حساب با دیدن آن شاد می­‌شود و دوباره خوشحال به خواب می­‌رود.

امیدوارم که همکار ایرانی­‌ام نگوید که مشکل من نبوده، مشکل مشتری بوده که یادش رفته تلفن همراهش را خاموش کند یا در وضعیت بی­‌صدا قرار دهد. امیدوارم این را هم نگوید که مشکل مشتری بوده که حسابش موجودی میلیاردی ندارد!

در تحلیل و طراحی سیستم‌های اطلاعاتی، تصور و بررسی همه سناریوهایی که در زمان اجرای سیستم رخ خواهد داد، دشوار و شاید غیرممکن است. شاید به همین خاطر است که سیستم‌هایی که سالها در حال استفاده هستند، به ناگاه دچار اشکالاتی می­‌شوند که همه را متعجب می­‌کنند. اشکالاتی که به دلیل اجرا نشدن سناریوهایی از سیستم، مخفی مانده­‌اند.

آیا راهی وجود دارد که بتوان این گونه مسائل را شناسایی کرد؟

گزیده:
تجزیه‌ات خیلی خوب بود، ترکیبت مشکل شرعی دارد. یک روحانی
(امیدوارم داستانش را شنیده باشید)

developer and user

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

developer: I’ll need to konw your requirements before I start to design the software.

user: OK.

developer: First of all, what are you trying to accomplish?

user: I’m trying to make you desgin my software.

developer: I mean what are you trying to accomplish with the software?

user:I won’t know what I can accomplish until you tell me what the software can do.

developer: Try to get this concept through your thick skull: The software can do whatever I design it to do!

user: Can you design it to tell you my requirements?

Reference: cs.uwaterloo.ca

Quote:
We have to stop optimizing for programmers and start optimizing for users. Jeff Atwoo
Reference:comp.nus.edu.sg

Why Projects Fail From A Technical and Process Viewpoint

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

The article claims that “Most cases of failure that I have seen have been in two categories: imagination and process,” quoting Grady Booch, chief scientist of software engineering at IBM Research. These include:

  • Requirements failures
  • Failure to verify/validate requirements
  • Failure to adhere to architecture
  • Lack of risk management
  • Lack of lessons learned
  • Communication breakdown

Reference:http://www.galorath.com

گزیده:

Software is the invisible thread and hardware is the loom on which computing weaves its fabric, a fabric that we have now draped across all of life.
Grady Booch

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