پندهای استاد فو
https://lifebits.ir/unix-koans/
نوشتارهای این بخش ترجمهای است از نوشته بسیار زیبای اریک ریموند با نام ریشههای بی ریشه که یونیکس را نه به عنوان یک سیستمعامل که به عنوان یک فلسفه و یک طریقت معرفی میکند. این داستانها و نکات از زبان یک استاد خیالی یونیکس به نام «فو» نقل میشود.
استاد فو و ده هزار خط کد
روزی استاد Foo به برنامهنویسی که برای دیدار استاد آمده بود گفت: «طبیعت یونیکسی که در یک خط اسکریپت Shell نهفته است، از ده هزار خط C بیشتر است.»
برنامهنویس؛ مغرور از استادی خویش در C؛ پاسخ داد: «چگونه چنین چیزی ممکن است؟ C زبانی است که هستی هسته یونیکس بر آن بنا نهاده شده است!»
استاد Foo گفت: «چنین است. اما باز، طبیعت یونیکسی که در یک خط اسکریپت Shell نهفته است، از ده هزار خط C بیشتر است.»
برنامهنویس شگفتزدهتر از پیش گفت: «اما تنها از طریق زبان C است که ما نیز میتوانیم درخشش اندیشه استاد Ritchi را درک کنیم. از طریق C است که میتوانیم با ماشین و سیستمعامل یکی شده و به کارایی فوق تصوری برسیم.»
استاد Foo پاسخ داد: «هر آنچه گفتی صحیح است و لیکن هنوز طبیعت یونیکسی که در یک خط اسکریپت Shell نهفته است، از ده هزار خط C بیشتر است.»
برنامهنویس با تمسخر به استاد نگریست و راه خویش در پیش گرفت. اما استاد به شاگردش Nubi؛ که یک خط اسکریپت Shell بر تختهای در همان نزدیکی نوشته بود؛ اشاره کرد و صدا زد: «استاد برنامهنویس! چنین Pipelineی را تصور کن که به زبان خالص C پیاده شود. آیا بیش از ده هزار خط نخواهد شد؟»
برنامهنویس به آنچه Nubi نوشته بود نگریست، سری تکان داد و در آخر پذیرفت که اینگونه خواهد بود.
و Nubi پرسید: «و چه مقدار زمان لازم خواهد بود تا این برنامه پیادهسازی و اشکالزدایی گردد؟»
برنامهنویس پاسخ داد: «زمان بسیاری صرف خواهد شد، ولی، تنها یک ابله چنین زمانی صرف آن خواهد کرد، حال آنکه کارهای ارزشمند بسیاری در انتظار انجام شدن هستند.»
استاد Foo چنین گفت:
«و کدام بهتر طبیعت یونیکس را درک کرده است؟ آنکه ده هزار خط کد مینویسد یا آنکه بیهودگی این کار را درک کرده و با ننوشتن کد شایستگی خویش را اثبات میکند؟»
و با شنیدن این سخنان برنامهنویس به روشنایی رسید.
استاد فو و جوجه نفوذگر
استاد Foo و شاگردانش در حال صرف صبحانه بودند که غریبهای از ناکجا آباد به دیدار استاد آمد.
غریبه گفت: «میگن خیلی خفنی!! هرچی بلدی به ما هم یاد بده! ممنون.»
شاگردان استاد شگفتزده از لحن ناصواب غریبه به یکدیگر نگریستند.
استاد فقط لبخندی زد و گفت: «پس میخواهی طریقت یونیکس را بیاموزی؟»
غریبه پاسخ داد: «دلم میخواد یه نفوذگر باحال بشم و بتونم سیستم همه رو بترکونم!!»
استاد Foo پاسخ داد: «آموزشهای من از این دست نیستند.»
غریبه با آشفتگی گفت : «هی پیری؛ تو فقط الکی ادعا میکنی. اگر چیزی بلد بودی یاد ما هم میدادی.»
استاد Foo گفت: «راهی هست که ممکن است تو را به سرمنزل خرد رهنمون شود.»
استاد IP آدرسی را روی تکه کاغذی نوشت؛ آن را به غریبه داد و گفت: «نفوذ به این سیستم چندان برایت مشکل نخواهد بود، چون نگهبانانش بیکفایت و ناکارآمدند. برو و چون بازگشتی آنچه یافتی برای ما بگو.»
غریبه ادای احترام کرد و رفت و استاد غذایش را تمام کرد. روزها و ماهها گذشتند و غریبه دیگر فراموش شده بود.
سالها بعد غریبه از ناکجاآباد بازگشت و گفت: «لعنت بر شما باد. من به آن سیستم نفوذ کردم و چنانکه گفتید بسیار آسان بود. اما FBI مرا دستگیر و روانه زندان کرد.»
استاد Foo گغت: «بسیار خوب. اکنون آماده درس بعدی شدهای.»
سپس IP آدرس دیگری را بر روی کاغذ نوشت و به غریبه داد.
غریبه فریاد زد: «دیوانه شدهاید؟ بعد از دردسرهایی که کشیدهام دیگر هرگز به هیچ سیستمی نفوذ نخواهم کرد!»
استاد Foo لبخندی زد و گفت:
«و اینجا؛ آغاز دانش و خرد است.»
و با شنیدن این سخنان غریبه به روشنایی رسید.
مباحثه در باب دو مسیر
استاد Foo به مریدانش تعلیم میداد:
« جزیی از آیین دارما وجود دارد که در این سخن استاد اعظم McIlory تجسم یافته است. سعی کن یک چیز را درست انجام دهی. این سخن اشاره و تاکیدی دارد بر نرمافزارهای یونیکس که رفتاری ساده و استوار دارند و مشخصاتی که به سادگی میتوانند در ذهن استفاده کننده درک شده و توسط سایر برنامهنویسان به کار روند.»
«اما جزیی دیگر از آیین دارما نیز وجود دارد که در این سخن استاد Thompson تجسم یافته است. هنگام تردید، کورکورانه از نیرویت استفاده کن. همچنین میتوان آن را در سوتراهای مختلف دید که تاکید میکنند انجام دادن نود درصد کاردر حال حاضر بهتر از انجام صد در صد آن در آینده است. اینها بر قدرت و پایداری و سادگی پیادهسازیها تاکید میکند.»
«اکنون به من بگویید: کدام برنامه طبیعت یونیکس را در خود خواهد داشت؟»
پس از لختی سکوت Nubi چنین گفت:
«استاد، این آموزهها ممکن است ضد و نقیض باشند!»
«پیادهسازی ساده برنامهها معمولا فاقد منطق و الگو برای کنترل موارد حاشیهای نظیر آزادسازی منابع، اشکال در بستن پنجرهای بلااستفاده و یا خطای زمانی در تراکنشهای نیمهتمام خواهد بود.»
«وقتی چنین مواردی رخ دهند رفتار برنامه نامناسب و غیرمنطقی خواهد بود. و به یقین این طریقت یونیکس نخواهد بود!»
استاد Foo به نشانه موافقت سر تکان داد.
«از سوی دیگر تلاش برای پیشبینی و پوشش دادن این موارد حاشیهای و تضمین سادگی تشریح برنامه، در واقع کدی خواهند ساخت که بسیار پیچیده و شکننده خواهد بود و احتمالا دچار باگ شده و هرگز توزیع نخواهد شد. و به یقین این نیز طریقت یونیکس نخواهد بود!»
استاد Foo به نشانه موافقت سر تکان داد.
Nubi پرسید: «پس با این وصف طریقت صحیح دارما چه خواهد بود؟»
استاد چنین گفت:
«آن زمان که عقاب به پرواز درآید، آیا لحظهای را که پا بر زمین داشته است فراموش خواهد کرد؟ آن زمان که ببر بر طعمه خویش فرود آید، لحظات پرش خویش را از یاد خواهد برد؟ سه کیلو VAX!»
با شنیدن این سخنان Nubi به روشنایی رسید.
استاد فو و متدولوژیست
زمانی که استاد Foo و شاگردش Nubi به زیارت مکانهای مقدس رفته بودند، عادت استاد چنین بود که شبانگاه در شهر یا روستایی که در آن اقامت گزیده بودند، جلسه موعظه عمومی برپا میداشت و در آن به نصیحت دوستداران تازه یونیکس میپرداخت.
در یکی از همین ایام متدولوژیستی در میان شنوندگان بود.
استاد Foo گفت: «اگر شما مدام کدهای خود را برای یافتن نقاط حساس بررسی نکنید؛ شبیه ماهیگیری خواهید بود که تورش را در دریاچهای خالی میگستراند.»
مشاور متدولوژی پرسید: «بنابراین آیا درست نخواهد بود که بگوییم؛ اگر شما بصورت دائم بازدهی خود را در ضمن مدیریت منابع اندازهگیری نکنید، همانند ماهیگیری خواهید بود که تورش را در دریاچهای خالی میگستراند؟»
استاد پاسخ داد: «زمانی ماهیگیری را دیدم که تور از دستانش رها شد و در دریاچه زیر پایش افتاد. و او مدت مدیدی کف قایق را در جستجوی تورش میکاوید!»
متدولوژیست پرسید: «اما اگر تور او در دریاچه افتاده بود، چرا داخل قایقش را جستجو میکرد؟»
استاد Foo پاسخ داد:
«چون او شنا کردن نمیدانست!»
و با شنیدن این سخنان متدولوژیست به روشنایی رسید.
مباحثه در باب رابط گرافیکی کاربر
شبی استاد Foo و مریدش Nubi در محفلی از برنامهنویسان که برای آموختن از یکدیگر گرد آمده بودند، حضور پیدا کردند. برنامهنویسی از Nubi پرسید که او استادش به کدام مکتب تعلق دارند؟ آن هنگام که شنید آنان از پیروان طریقت بزرگ یونیکس هستند؛ شروع به استهزا نمود.
و با تمسخر گفت: «ابزارهای خط فرمان یونیکس بیهوده و کهنهاند. سیستمعاملهای نوین که طراحی مناسبی دارند، همه کارها را از طریق رابط گرافیکی کاربر انجام میدهند.»
استاد Foo سخن نگفت. اما به ماه اشاره کرد. سگی که در نزدیکی بود به اشاره استاد پارس کرد.
برنامهنویس گفت: «چه میگویید؟ متوجه منظورتان نشدم!»
استاد Foo خاموش ماند و به تصویر بودا و سپس به پنجره اشاره نمود.
برنامهنویس پرسید: «چه میخواهید بگویید؟»
استاد Foo ابتدا به سر برنامهنویس و سپس به یک تکه سنگ اشاره نمود.
برنامهنویس دوباره نالید: «چرا نمیتوانید منظورتان را واضح بیان کنید؟»
استاد Foo متفکرانه چهره در هم کشید. دوبار به بینی برنامهنویس ضربه زد و او را در سطل زبالهای که همان نزدیکی بود انداخت.
هنگامی که برنامهنویس میکوشید آلودگی از تن خویش بزداید، سگی که از آنجا میگذشت، پیشاب خود بر او ریخت.
در این لحظه برنامهنویس به روشنایی رسید.
استاد فو و برنامه نویس کهنه کار
برنامهنویسی باتجربه از دنیای یونیکس که از خرد استاد Foo سخنها شنیده بود، برای راهنمایی به زیارت وی آمد. سه بار تعظیم کرده، به استاد نزدیک شد و گفت:
«استاد Foo، به سختی دچار مشکل شدهام. در دوران جوانی من، آنان که پیرو طریقت بزرگ یونیکس بودند، نرمافزارهای ساده و دست نخورده نظیر ed و mailx را به کار میبردند. امروز آنان به vim و mutt روی آوردهاند. ترسم از آن است که فردا به سراغ KMail و Evolution روند و یونیکس نیز به سرنوشت ویندوز گرفتار آید. بادکرده و درهم پیچیده و پوشیده از GUI.»
استاد Foo پاسخ داد: «اما برای طراحی یک پوستر از چه نرمافزاری استفاده خواهی کرد؟»
برنامهنویس پاسخ داد: «من . . . هیچگاه چنین کاری نکردهام. لیکن اطمینان دارم که میتوانم با استفاده از LaTeX یا pic به طریقت صحیح یونیکس و بدون GUI این کار را انجام دهم.»
آنگاه استاد Foo فرمود:
«کدام یک به آن سوی رودخانه خواهد رسید؟ آنکه رویای یک قایق در سرخویش میپرورد، یا آنکه تا پل بعدی راه میپیماید؟»
با شنیدن این سخنان برنامهنویس به روشنایی رسید.
استاد فو و ابزارهای پوسته
تازهواردی در دنیای یونیکس به نزد استاد Foo آمده و گفت: «من سردرگم شدهام. آیا این طریقت یونیکس نیست که هر برنامه باید بر یک موضوع تمرکز کرده و آن را به درستی به انجام رساند؟»
استاد Foo سر تکان داد.
تازهوارد افزود: «آیا این نیز طریقت یونیکس نیست که چرخ نباید دوباره اختراع شود؟»
استاد Foo دوباره سر تکان داد.
او دوباره پرسید: «پس چرا این همه ابزار با قابلیتهای مشابه برای واژهپردازی وجود دارد؟ sed یا awk و یا Perl؟ با کدام یک میتوان طریقت یونیکس را بهتر آزمود؟»
استاد Foo از تازهوارد پرسید: «اگر فایلی متنی داشته باشی، و بخواهی نسخهای از آن تکثیر کنی که برخی کلماتش با جملههای مورد نظر تو عوض شده باشند از چه ابزاری استفاده خواهی کرد؟»
تازهوارد چهره در هم کشید و گفت: «regexهای Perl برای چنین کار سادهای بیش از حد سنگیناند. من از awk چیزی نمیدانم ولی در چند هفته اخیر کدهایی با sed نوشتهام. چون اکنون تجربه اندکی با sed دارم آن را ترجیح خواهم داد. اما اگر این کار تنها یک بار باید انجام شود و نه به تکرار، یک ویرایشگر متن کافی خواهد بود.»
استاد Foo سر تکان داده و چنین گفت:
«وقتی گرسنهای، غذا بخور. وقتی تشنهای، آب بنوش. وقتی خستهای، لختی بخواب!»
با شنیدن این سخنان تازهوارد به روشنایی رسید.
استاد فو و تازه کار سردرگم
تازهکاری بود که در خدمت استاد چیزهای بسیاری آموخته بود اما احساس میکرد که در این میان گمشدهای هست. پس از مراقبه و تمرکز فراوان روی تردیدهایش در خود این شهامت را دید که برای گرفتن پاسخ به نزد استاد رود.
پرسید: «استاد Foo، چرا کاربران یونیکس از برنامههای آنتیویروس استفاده نمیکنند؟ یا از برنامه های Defrag؟ یا برنامه های ضد بدافزار؟»
استاد Foo با لبخند پاسخ داد: «زمانی که خانهات درست و استوار بنا شده باشد؛ برای نگه داشتن سقف احتیاجی به افزودن ستون نیست!»
تازه کار پاسخ داد: «با این همه آیا بهتر نخواهد بود که برای اطمینان بیشتر از این ابزارها استفاده کنیم؟»
استاد Foo گلولهای نخ از کناری برداشت و شروع به پیچیدن نخ دور پاهای تازه کار کرد.
تازه کار شگفتزده پرسید: «چه میکنید؟»
استاد Foo به سادگی پاسخ داد:
«بند کفشهایت را میبندم!»
و با شنیدن این سخنان تازهکار به روشنایی رسید.
مباحثه در باب بازگشت به ویندوز
شاگردی چنین گفت: «ما آموختهایم که یونیکس تنها یک سیستم عامل نیست٬ بلکه روشی برای نزدیک شدن به مسایل و حل آنهاست.»
استاد Foo به تایید سر تکان داد.
شاگرد چنین ادامه داد: «پس طریقت بزرگ یونیکس میتواند به سایر سیستم عاملها نیز اعمال شود؟»
استاد Foo لختی ساکت ماند و چنین گفت: «در هر سیستم عامل راهی برای رسیدن به طریقت بزرگ وجود دارد٬ به شرطی که بتوان آن را یافت.»
شاگرد ادامه داد: «در مورد ویندوز چه؟ این سیستم عامل از ابتدا بر روی بسیاری از کامپیوترها نصب شده است. و اگرچه غالب ابزارهایش بسیار ابتدایی و ناکارآمد هستند٬ اما استفاده از آنها برای تازهکاران ساده است. به یقین کاربران ویندوز هم میتوانند از فلسفه یونیکس بهرهمند شوند.»
استاد Foo دوباره سر تکان داد.
شاگرد پرسید: «چگونه خواهد بود اگر ره یافتگان طریقت یونیکس به دنیای ویندوز بازگردند؟»
استاد Foo گفت: «برای بازگشت به ویندوز اما٬ فقط باید آن را بوت کنید.»
شاگرد با سردرگمی چنین گفت: «استاد Foo ٬ اگر این چنین ساده است٬ پس چرا هنوز بستههای انحصاری و خراب زیادی در ویندوز وجود دارد؟ نرمافزار خوب و کارآمد باید به همراه GUI و رنگهای جذاب نیز ممکن باشد. اما شواهد کمی از وجود آن در دست است. چه بر سر ره یافتگانی که به ویندوز بازگشتهاند آمده است؟»
استاد Foo پاسخ داد:
«آیینه شکسته دیگر هرگز انعکاسی نخواهد داشت ٬ گلهای از شاخه جدا شده هرگز به شاخهها باز نخواهند گشت.»
با شنیدن این سخنان همه حاضران به روشنایی رسیدند.
استاد فو و متعصب یونیکسی
فردی از هواخواهان متعصب یونیکس که از دانش استاد Foo در طریقت بزرگ سخنها شنیده بود٬ برای گرفتن پند به نزد استاد آمد. استاد Foo به او چنین گفت:
«هنگامی که استاد اعظم Thompson یونیکس را اختراع کرد خود آن را درک نکرد. پس آن هنگام که آن را درک نمود دیگر آن را اختراع نکرد.»
«هنگامی که استاد اعظم McIlory سیستم pipe را اختراع نمود٬ میدانست که این سیستم نرمافزار را دگرگون خواهد کرد٬ اما نمیدانست که اندیشهها را هم دگرگون خواهد کرد.»
«هنگامی که استاد اعظم Ritchie زبان C را اختراع نمود، برنامهنویسان را به جهنمی از سرریز بافر، خرابی heap و باگهای پوینترهای فراموش شده محکوم کرد.»
«به درستی که استادان اعظم همه کور و نادان بودند.»
متعصب که سخت از سخنان استاد خشمگین بود به اعتراض گفت:
«این رهیافتگان٬ ما را به طریقت بزرگ یونیکس رهنمون شدند. اگر آنها را به سخره بگیریم٬ شایستگی خویش از دست داده و در زندگی بعدی در قالب هیولا و یا مهندس MCSE متولد خواهیم شد.»
استاد Foo چنین پرسید: «آیا هیچگاه کدهای تو پالوده و بی عیب بودهاند؟»
متعصب پاسخ داد: «هرگز٬ کدهای هیچ کس چنین نخواهد بود!»
استاد Foo چنین گفت:
«خرد استادان اعظم در این بود که میدانستند که نادانند.»
با شنیدن این سخنان متعصب به روشنایی رسید.
مباحثه در باب طبیعت یونیکس
شاگردی به استاد Foo گفت: «به ما گفته شده است که شرکتی به نام SCO مالکیت واقعی یونیکس را در اختیار دارد.»
استاد Foo سر تکان داد.
شاگرد ادامه داد: «همچنین به ما گفته شده است که شرکتی به نام OpenGroup مالکیت واقعی یونیکس را در اختیار دارد.»
استاد Foo سر تکان داد.
شاگرد پرسید: «چگونه چنین چیزی ممکن است؟»
استاد Foo پاسخ داد: «به یقین SCO مالک حقیقی کدهای یونیکس است، ولی کد یونیکس خود یونیکس نیست. به یقین OpenGroup مالک حقیقی نام یونیکس است، ولی نام یونیکس خود یونیکس نیست.»
شاگرد پرسید: «پس با این وصف طبیعت یونیکس چیست؟»
استاد Foo پاسخ داد:
«کد نیست. نام نیست. ایده نیست. هیچ چیز نیست. مدام تغییر میکند و در عین حال بدون تغییر است. طبیعت یونیکس ساده و خالی است. و چون ساده و خالی است از توفان هم نیرومندتر است. بر اساس قانون طبیعت حرکت میکند، بیرحمانه در ذهن برنامهنویس از هم باز شده و گسترش مییابد. طرحها و ایدهها را شبیه خود میکند. همه نرمافزارهایی که میخواهند با آن رقابت کنند باید شبیه آن شوند. خالی، خالی، عمیقا خالی و تماما تهی. آری!»
و با شنیدن این سخنان شاگرد به روشنایی رسید.
استاد فو و MCSE
روزی مدیر سیستمی مشهور از دنیای ویندوز برای کسب معرفت به نزد استاد Foo آمد و چنین آغاز کرد: «شنیدهام که شما جادوگری توانمند در دنیای یونیکس هستید. آمدهام تا رازهایمان را تبادل کرده و بر دانش خویش بیافزاییم.»
استاد Foo گفت: «چه نیکوست که به جستجوی دانش آمدهای! اما در طریقت یونیکس رازی نهفته نیست!»
مدیر سیستم با درماندگی پرسید: «اما چنین گفته میشود که شما استادی هستید از دنیای یونیکس و واقف بر تمام اسرار درونی سیستمها! همانگونه که من در دنیای ویندوز خبرهام. من MCSE دارم، و همینطور بسیاری مدارک دیگر که در دنیا چندان معمول نیستند. من حتی گمنامترین کلیدهای رجیستری را چون کف دست میشناسم. توان شرح همه چیز را درباره API ویندوز دارم. بله، حتی رازهایی که ساکنان Redmond نیز کموبیش از یاد بردهاند. حال بگویید کدام دانش و معرفت مخفی است که به شما چنین قدرتی داده است؟»
استاد Foo پاسخ داد: «من هیچ ندارم. هیچ چیز مخفی نیست، هیچ چیز آشکار نیست!»
مدیر سیستم که به خشم آمده بود گفت: «بسیار خوب، اگر شما رازی در دل ندارید، پس به من بگویید چه باید بدانم تا هم تراز شما در طریقت یونیکس قدرتمند گردم؟»
استاد Foo چنین گفت:
«مثال آنکه راز را با دانش اشتباه بگیرد همانند کسی است که در جستجوی نور؛ چنان شمع را در مشت گیرد که دست خویش سوزانده و شمع را خاموش کند.»
با شنیدن این سخنان مدیر سیستم به روشنایی رسید.
استاد فو و کاربر نهایی
یکی دیگر از اوقاتی که استاد Foo به موعظه همگانی میپرداخت، کاربری نهایی که داستانها از خرد استاد شنیده بود برای شنیدن پند و موعظه به نزد استاد آمد.
سه بار به استاد Foo تعظیم نموده و چنین گفت: «میخواهم طریقت بزرگ یونیکس را بیاموزم، لیکن ابزارهای خط فرمان مرا گیج و سردرگم میکنند.»
گروهی از شاگردان تازه کاری که به تماشا ایستاده بودند، شروع به استهزا نموده و او را ابله و بیانگیزه نامیدند و گفتند که طریقت بزرگ یونیکس تنها از آن افراد باهوش و سختکوش است.
استاد به نشانه سکوت دست فراز آورده و پر مدعاترین آنان را به نزد خویش، در جایگاهی که با کاربر نهایی نشسته بودند، فراخواند.
استاد Foo چنین پرسید: «برایمان از کدهایی که نوشتهای و از طرحهایی که به سرانجام رساندهای سخن بگو!»
شاگرد تازه کار خواست به لکنت پاسخی دهد اما خاموش ماند.
استاد Foo رو به کاربر نهایی کرده و پرسید: «بگو از برای چه به دنبال این طریقت آمدهای؟»
کاربر نهایی پاسخ داد: «من از هرچه نرمافزار در اطراف خویش میبینم ناخرسندم. کاراییشان قابل اعتماد نیست، چشم از دیدنشان و دست از کار با آنها خشنود نمیگردد. شنیدهام که طریقت یونیکس اگرچه سختتر اما برتر است. اکنون آمدهام تا از بند آزاد شده و خیالات را کنار گذارم.»
استاد Foo پرسید: «و حرفه تو چیست که اینگونه با نرمافزار سر و کار یافتهای؟»
کاربر نهایی پاسخ داد: «حرفه من ساختمان سازیست. بسیاری از عمارتهای این شهر تحت نظارت و هدایت من بنا شدهاند.»
استاد Foo دوباره روی به شاگرد خویش نموده و چنین گفت:
«گربه خانگی گرچه ممکن است رفتار ببر را تقلید کند، لیکن نالهاش هرگز تبدیل به غرش نخواهد شد.»
با شنیدن این سخنان شاگرد تازه کار به روشنایی رسید.
استاد فو و نابغه برنامهنویسی
مدتها بود که داستانهایی از برنامهنویسی اعجابانگیز و بااستعداد به گوش استاد Foo و شاگردانش میرسید. مردی جوان که تمام سرزمینها را در نوردیده، شاهکارهایی در هنر کدنویسی از خود برجای گذاشته و همه آنانی که جرات همآوردی با مهارتهای او را به خود راه داده بودند، شکست داده و خوار کرده بود.
سرانجام این نابغه برنامهنویسی به دیدار استاد Foo آمد. استاد به گرمی از وی استقبال کرده و او را به نوشیدن چای دعوت نمود. برنامهنویس، با ادبی در خور استاد، پذیرفت و انگیزه این بازدید را بیان کرد.
او گفت: «من به سراغ شما آمدهام تا طراحی و کدهای آخرین پروژهام را بازبینی کنید. به واسطه پیچیدگیهای فراتر از معمولاش، کسی را نمیشناسم که یارای درک آن را داشته باشد. تنها استادی خردمند چون شما روشنبینی لازم را در اختیار دارد!» و در حین گفتن جمله آخر به استاد تعظیم کرد.
استاد Foo در جواب مودبانه تعظیمی کرد و به بررسی کدهای نابغه برنامهنویس پرداخت. پس از لختی، چشم از صفحه نمایش برداشته و چنین گفت: «در نگاه اول این کد بسیار تاثیرگذار است. در طراحی از ظرافت خاصی برخوردار است و از الگوریتمهای اصیلی بهره میبرد که حاصل نبوغ فراوان است. به نظر میرسد به گونهای هنرمندانه پیادهسازی شده که احتمال بروز خطا را کاهش دهد.»
نابغه برنامهنویس از چنین ستایشهایی به وجد آمده بود که استاد Foo ادامه داد: «هرچند من در آن یک ایراد بزرگ میبینم!»
نابغه گفت:«ایراد؟ چه ایرادی؟»
استاد Foo گفت: «خواندن این کد سخت است. کامنتهای اندکی دارد و ثابتهایش تعریف نشدهاند. در هیچ کجایش توصیفی روایی از معماری یا ساختار داده درونی آن به چشم من نیامد. چنین مشکلاتی به شدت از همکاری شما با سایر برنامهنویسان ممانعت خواهد کرد!»
برنامهنویس نابغه با تکبر نیمخیز شده و گفت: «من در طلب همکاری دیگر برنامهنویسان نیستم! هر زمان اندیشیدم کسی را یافتهام که مهارتهایش در حد و اندازه من است، سرخورده و ناامید گشتهام. از این روست که به تنهایی کار میکنم.»
استاد Foo گفت: «اما حتی هکرهایی که به تنهایی کار میکنند، با دیگران همکاری دارند و باید همواره با آنها ارتباط داشته باشند تا مبادا کارشان مغشوش شده و از دست برود.»
برنامهنویس نابغه پرسید: «از کدام دیگران سخن میگویید؟»
و استاد Foo چنین پاسخ داد:
«تمام خودهای آیندهات.»
و با شنیدن این سخنان نابغه برنامهنویسی به روشنایی رسید.
استاد فو و طراح سختافزار
زمانی استاد Foo به همراه مریدان ارشدش برای حضور در یک گردهمآیی به سفر رفته بودند. طراح سختافزاری استاد را مخاطب قرار داده و چنین گفت:
«شایع شده است که شما برنامهنویسی بلندمرتبه هستید. در هر سال چند خط کد مینویسید؟»
استاد Foo پاسخ او را با یک پرسش داد: «شما هر سال چند اینچ مربع مدارهای سیلیکونی طراحی میکنید؟ »
طراح سختافزار پاسخ داد: «چرا میپرسید؟ ما طراحان سختافزار هیچگاه کارمان را با چنین شیوهای اندازه نمیگیریم!»
استاد Foo دوباره پرسید: «و چرا این کار را نمیکنید؟»
طراح سختافزار پاسخ داد: «اگر ما چنین کاری میکردیم، ممکن بود وسوسه شویم که تراشهها را آنچنان بزرگ طراحی کنیم که قابل تولید نباشند! یا حتی اگر تولید شوند، پیچیدگی زایدالوصف آنها باعث شود که ایجاد بردارهای آزمون مناسب برای آنها ناممکن گردد!»
استاد Foo لبخندی زد و به طراح سختافزار تعظیم نمود.
در این لحظه طراح سختافزار به روشنایی رسید.
استاد فو و جنگ ویرایشگرها ( در آخرین ویرایش زبان اصلی این قسمت حذف شده است : وحید)
در بامدادی که میتوانست آغاز روزی آرام را رقم بزند، فریادهایی از سر اضطراب مراقبه استاد Foo را برهم ریخت.
استاد Foo چون دید که این سروصداها، نالههای یکی از تازهکاران است، به سوی او رفت و پرسید: «مشکل تو چیست؟»
تازهکار پاسخ داد: «من در میان این همه ابزار سردرگم و گیج شدهام. هر روز باید با ویرایشگرهای متفاوتی کار کنم، چرا که نه Emacs، نه vi و نه هیچ کدام دیگر از این همه ویرایشگر موجود همه قابلیتهایی که میخواهم را ندارند!»
استاد Foo سر تکان داده و چنین پرسید: «کسی که در طریقت بزرگ به استادی رسیده باشد، چگونه بر چنین دشواری فایق خواهد آمد؟»
شاگرد لختی درنگ کرده و به تفکر پرداخت و چنین پاسخ داد: «خب، مشخص است. من بهترین ویرایشگر تمام دوران را خواهم نوشت. ویرایشگری که همه کارهایی که میخواهم را انجام دهد. ویرایشگری که همه کارهایی که دیگران میخواهند را نیز انجام خواهد داد. به این ترتیب دنیا جای بهتری خواهد بود چرا که…»
نطق تازهکار همان لحظه و در اثر اصابت چوبدستی استاد به فرق سرش ناتمام ماند.
او در حالی که سر خویش را میمالید ناله کرد: «چه شد استاد؟ مگر چه خطایی از من سر زد؟»
استاد Foo چنین پاسخ داد:
«ابله! آیا فکر میکنی من حاضرم کار با یک ویرایشگر دیگر را هم یاد بگیرم؟»
و با شنیدن این سخنان تازهکار به روشنایی رسید.