یادگیری بی‌نام!

  • یوسف مهرداد

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

حالا فرض کنید که شما نمی‌دانید که فانکشنی به نام groupby وجود دارد. ولی می‌دانید که ابتدا باید یک لیست از دانشجویان را گروه‌بندی کنید. به کمک جستجوی گوگل یا چت‌ جی‌پی‌تی پرسش خودتان را می‌پرسید و به کمک پاسخ‌های آنها متوجه می‌شوید که فانکشنی برای همین کار وجود دارد و بقیه ماجرا. اینجا شما می‌دانید که نمی‌دانید. صورت مساله را می‌دانید ولی پاسخ را نمی‌دانید. ولی پاسخ دریافتی با دانش شما هم‌خوانی دارد و برای شما قابل هضم است.

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

خوب چه باید کرد؟

پاسخ درست و کامل این پرسش را من نمی‌دانم. در اینجا فقط می‌خواهم یکی از تجربیات شخصی‌ام را بازگو کنم. امیدوارم برای شما هم مفید باشد! اگر برای شما مقدور هست لطفا تجربه‌های خودتان را با من در میان بگذارید.

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

این تجربه خوشایند باعث شد آن را در حوزه‌ی فنی نیز تکرار کنم. با این تفاوت که به جای انتخاب بخش‌های کتاب ورد، ویدیوی سخنرانی یا نوشته‌های افراد سرشناس را به صورت تصادفی انتخاب می‌‌کردم.

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

با این وجود نباید فراموش کنیم که:
چه دانم‌های بسیار است لیکن من نمی‌دانم
که خوردم از دهان بندی در آن دریا کفی افیون

https://bibalan.com/?p=4499
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

بهشت راه نرفته!

  • یوسف مهرداد

در تصمیم‌گیری‌ها به ویژه در تصمیم‌گیری‌های فنی، گاهی پیش می‌آید که شما بین دو راهی یا چندراهی تصمیم‌گیری گیر می‌کنید. از آنجا که نمی‌توانید همه‌ی آن راه‌ها را انتخاب کنید، به ناچار یکی را به عنوان تصمیم نهایی انتخاب می‌کنید.

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

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

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

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

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

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

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

در برخی فرهنگ‌ها به افراد توصیه می‌کنند که «تصمیم‌تان را بگیرید و با نتایج و عواقب آن رو به رو شوید!». شاید این بهترین توصیه‌ای است که در این زمینه برای خودم دارم. «تصمیم بگیرم» و به جای آن که اجازه دهم سوهان «بهشت‌ راه‌های نرفته» مغز و روانم را آرام آرام تخریب کند، با «نتایج تصمیم‌»‌های فنی‌ام رو به رو شوم.

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

https://bibalan.com/?p=4486
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

نوروز ۱۴۰۳

  • یوسف مهرداد

سال نوی همگی مبارک!

برای‌تان بهترین‌ها را آرزومندم.
شاد باشید و تندرست

حافظ منشین بی‌ مِی و معشوق زمانی
که‌ ایّامِ گل و یاسمن و عیدِ صیام است

https://bibalan.com/?p=4490
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

فناوری و بیلی‌ها

  • یوسف مهرداد

پیش‌گفتار:

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

گاهی اندیشیدن به «عادی»های کنونی مرا را دچار حیرت می‌کند. پرواز هواپیمای غول آسا چندین هزار تنی در آسمان و حرکت و گرمی خودروی سواری در دمای منفی ۵۰ درجه تنها بخش کوچکی از آن است.

داستان اردک‌های گم‌شده:

در دوره‌ی کودکی‌ و نوجوانی‌ام مثل اکثر خانواده‌ها در بی‌بالان، ما هم مرغ، خروس و اردک داشتیم. در کنار استفاده از تخم‌ مرغ و تخم اردک، آنها یکی از منابع اصلی تامین گوشت خانواده‌ها بودند. تا یادم نرفته برای‌تان بگویم که ما به اردک می‌گوییم «بیلی»!

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

در این بین به ویژه پاییز و زمستان و روزهای بارانی گاهی پیش می‌آمد که یکی از اردک‌ها با بقیه اردک‌ها به خانه بر نمی‌گشت. ممکن بود حیوان زبان بسته اشتباهی با اردک‌های همسایه به خانه‌ی یکی از همسایه‌‌ها رفته باشد، ممکن بود جایی در بیجار گرفتار شده باشد (مثلا پایش به نخی یا طنابی گیر کرده باشد) و یا این که طعمه روباه و شغالی شده باشد. فرایند پیدا کردن اردک‌های برنگشته به خانه هم این بود که باید می‌رفتید خانه‌ی همسایه‌ها و از آنها می‌پرسیدید که آیا اردک غریبه‌ای همراه اردک‌های شما آمده یا نه. اگر خوش‌شانس بودید فرایند با رفتن به خانه‌ی یکی از همسایه‌ها پایان می‌یافت. وگرنه ادامه‌ی فرایند این گونه بود که باید می‌رفتید بیجار و دنبال اردک گم‌شده می‌گشتید. بیجار هم که یک متر و دو متر نبود! در آن غروب بارانی و تاریک، پیدا کردن اردک گم‌شده بیشتر به شانس و اقبال بستگی داشت تا تلاش شما!
برای من دشوارترین بخش ماموریت «به دنبال بیلی در بیجار» حس ناخوشایند «از دست دادن یک آشنا» بود.

فناوری و بیلی‌ها!

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

گزیده:

«خاطره، تنها بهشتی است که نمی‌توانند ما را از آن طرد کنند.» ژان پل

https://bibalan.com/?p=4480
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

دستیار کتابخوانی

  • یوسف مهرداد

سرعت پیشرفت یادگیری ماشین به ویژه بخش مدل‌های زبانی بزرگ (LLM) مانند ChatGPT به اندازه‌ای است که هر لحظه باید منتظر نوآوری و فناوری نوظهوری باشید. امکانات این مدل‌ها امکان حل مسا‌له‌هایی را فراهم می‌کنند که تا همین چند وقت پیش امیدی به حل آنها نبود.

در این نوشته می‌خواهم به دو مورد از آنها که جنبه شخصی دارد اشاره کنم.

۱) مورد کاربرد یک: حافظه‌یار

وقتی یک کتاب طولانی فنی به ویژه کتابی که موضوع آن برایم تازگی داشت می‌خواندم وقتی به مطلبی می‌رسیدم که نیاز به یادآوری دقیق مطالب بخش‌های گذشته کتاب داشت دچار مشکل می‌شدم. یکی از دلایل آن، نداشتن وقت کافی و زیاد بود مطالب کتاب بود و البته حافظه نه چندان خوب! بارها برایم پیش می‌آمد که سوالاتی شبیه اینها را از خود می‌پرسیدم: «این با اون یکی چه فرقی می‌کنه؟» و «تعریف این چه بود». تنها راه این بود با فشار دادن دکمه کنترل+اف به دنبال کلمه‌ای بگردم تا با خوش‌شانسی بتوانم بخشی را پیدا کنم که پاسخ پرسش‌هایم در آن بود. درباره‌اش توضیح داده شده بود.

حالا با پیشرفت‌های شگرف یادگیری ماشین و مدل‌های زبانی بزرگ (LLM) حل این مساله‌ ساده‌تر شده. چند وقت پیش برای نمایش توانایی LLM ها به چند تن از دوستانم، برنامه‌ای نوشتم که هنگام خواندن کتاب مانند دست‌یار کمک می‌کرد تا مطالب قبلی را به یاد بیاورم.

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

Question: what is the role of messaging grid?
Answer: The role of the messaging grid is to manage input requests and session state within the virtualized middleware of a space-based architecture….
Reference: software-architecture: page 214.

۲) مورد کاربرد دو: کتاب‌خوان یار

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

Question: Explain a front controller?
Answer: A front controller is a domain service within a choreography architecture that not only handles domain behavior but

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

گزیده:
یک پیشرفت مهم در یادگیری ماشین می‌تواند اثر و ارزشی معادل با ده برابر مایکروسافت ایجاد کند. بیل گیتس

https://bibalan.com/?p=4472
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

غیرمستقیم زندگی کنید!

  • یوسف مهرداد

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

If you want to go in one direction, the best route may involve going in another.

این جمله بیانگر مفهوم «غیرمستفیم» یا ‘obliquity’ است: مفهومی که با ظاهر متناقض و پارادکسی‌اش بیان می‌کند که بسیاری از اهداف وقتی به صورت غیرمستقیم دنبال شوند احتمال این که محقق شوند بیشتر است.

چه برای پیروزی در نبردهای سرنوشت‌ساز و چه برای تحقق اهداف فروش، تاریخ نشان داده که رویکردهای غیرمستقیم (obliquity) مو‌فق‌تر بوده‌اند به ویژه در حوزه‌های بسیار دشوار.

جان کی (John Kay) اقتصاددان برجسته این نظریه‌اش را برای بسیاری از حوزه‌ها از کسب‌و‌کارهای بین‌المللی گرفته تا برنامه‌ریزی شهری، از فوتبال گرفته تا مدیریت مهار آتش‌سوزی جنگل‌ها استفاده کرده است.

او نشان می‌دهد که چرا پرسودترین شرکت‌ها همیشه آنهایی نیستند که لزوما به دنبال سود هستند، و چرا ثروت‌مندترین افراد چه زن و چه مرد، مادی‌گراترین افراد نیستند، و چرا خوشحال‌ترین افراد لزوما آنهایی نیستند که تمرکزشان خوشحال بودن است.

کتاب جان کی از مشاهدات محقق حوزه‌ی داروسازی سر جیمز بلک (Sir James Black) الهام گرفته است. سر جیمز بلک برنده‌ی جایزه نوبل ۱۹۸۸ در جایی گفته:
«من به همکارانم می‌گفتم که اگر می‌خواهید پول در بیاورید راه‌های بسیار آسان‌تری نسبت به تحقیقات دارویی وجود دارد. اوه! چقدر من در اشتباه بودم! به نظر می‌رسد هم در کسب‌وکار و هم در علم، وقتی سرگرم انجام کاری هستید، احتمال موفقیت شما در رسیدن به دستاورد دیگری [که مد نظر شما نبود] بیشتر است. من به این پدیده، اصل «غیرمستقیم» می‌گویم.»

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

پ.ن.
بر این باورم که بسیاری از تفکرات دنیای کسب‌وکار را می‌توان در حوزه‌ی فردی نیز به کار گفت!

گزیده:
به جز دو دوره بین ۱۲ تا ۱۴ سالگی برای یادگیری موسیقی و بین ۱۴ تا ۱۶ سالگی برای یادگیری ریاضیات، تمام دوران تحصیل‌ام را به جای مطالعه‌ مشغول رویاپردازی بودم. … تحت تاثیر برادر بزرگ‌ترم تصمیم گرفتم پزشکی بخوانم… و برای اولین بار، لذت جایگزین کردن مطالعه‌ی سخت و منظم را به جای شادی ناشی از خیال‌بافی و رویاپردازی چشیدم!
سر جیمز بلک

https://bibalan.com/?p=4456
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

پوسته‌ی بیشتر – تخم‌مرغ کمتر

  • یوسف مهرداد

جان بنتلی (Jon Bentley) که ستونی با نام Programming Pearls در نشریه Communications of the ACM داشت در سال ۱۹۸۶ به برنامه‌نویسی ادیبانه (literate programming) علاقه‌مند شد و از دونالد کنوث (Donald Knuth) خواست تا به عنوان نویسنده‌ی مهمان برنامه‌‌ای با این شیوه بنویسد و از داگ مکل‌روی (Doug McIlroy) هم خواست نقدی بر برنامه‌نویسی ادیبانه در آن ستون بنویسد.

مساله‌ای که بنتلی از کنوث خواسته بود برای آن برنامه‌‌ای بنویسد برای اکثر افراد آشناست: برنامه‌ای بنویسید که یک فایل متنی را بخواند و n کلمه‌ی پرتکرار به ترتیب و به همراه تعداد تکرار آنها چاپ کند.

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

در ادامه با متانت و با زبانی ساده، مبانی و اصول زیربنایی برنامه‌ی کنوث را نقد و ویران کرد. آن چه افراد از آن نوشته به یاد دارند این است که مکل‌روی یک کد با ۶ دستور شل یونیکس (six-command shell pipeline) نوشت که نسخه‌ی کامل و بدون خطای کد پاسکال ۱۰ صفحه‌ای کنوث بود.


۱  tr -cs A-Za-z '\n' |
۲  tr A-Z a-z |
۳  sort |
۴  uniq -c |
۵  sort -rn |
۶  sed ${1}q

مرجع: More shell, less egg

این داستان نشان‌‌دهنده‌ی توانایی ترکیب اجزای از پیش‌ساخته در مدل Pipeline (معروف به pipes and filters) است. جایی که ترکیب دستورات ساده و مستقل، ولی قابل ترکیب می‌تواند کار یک کد ۱۰ صفحه‌ای را انجام دهد.


گزیده:

Keep it simple, make it general, and make it intelligible. Douglas McIlroy

https://bibalan.com/?p=4357
یوسف مهرداد

یوسف مهرداد


کانال تلگرام

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