باشد که باز بینم دیدار آشنا را

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

 

به از این چه شادمانی که تو جانی و جهانی
چه غمست عاشقان را که جهان بقا ندارد

بی‌بالان، بهمن ۱۴۰۰، ژانویه ۲۰۲۲

زبان برنامه‌نویسی کربن

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

پیش‌گفتار:
فکر نمی‌کنم شما با زبان برنامه‌نویسی «کربن» آشنایی داشته باشید. می‌خواهم داستان آشنایی خودم با زبان برنامه‌نویسی کربن را برای شما تعریف کنم.

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

برای آموزش برنامه‌نویسی در آن زمان از زبان Pascal و C-Plus-Plus استفاده می‌شد. آن موقع اینترنتی وجود نداشت که بتوانید برنامه‌نویسی یاد بگیرید و پاسخ سوال‌هایتان را پیدا کنید. به ناچار مهم‌ترین گزینه‌های یادگیری یک زبان برنامه‌نویسی، کتاب بود و دوستان‌تان.

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

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

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

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

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

ما زبان را ننگریم و قال را
ما روان را بنگریم و حال را

 

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

گزیده:
مهم‌تر از همه‌ی دلایل، تفاوت دیدگاه فرصتی است برای یادگیری. تری ویلیام

مغز برنامه‌نویس: دسته‌بندی بیکن‌ها (۶)

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

دسته‌بندی بیکن‌ها:
ما معمولاً چراغ‌های راهنما یا بیکن‌ها را به دو دسته تقسیم می‌کنیم: بیکن‌های ساده (simple beacons) و بیکن‌های مرکب (compound beacons).

بیکن‌های ساده، عناصر نوشتاری کد هستند که نیازی به توضیح ندارند مانند نام متغیرهایی که به درستی انتخاب شده‌اند. در کد پایتون قبلی، root و tree بیکن‌های ساده هستند. در برخی از کدها، عملگرهایی مانند +، >، و && و عبارات ساختاری مانند if و else را می توان بیکن‌های ساده در نظر گرفت، زیرا پردازش و فهمیدن آنها کار ساده‌ای است و می توانند به خواننده کمک کنند تا عملکرد کد را به تنهایی کشف کند.

بیکن‌های مرکب ساختارهایی بزرگ‌تری هستند که از بیکن‌های ساده تشکیل شده‌اند. بیکن‌های مرکب برای تابع‌ها که از بیکن‌های ساده تشکیل شده‌اند، معنای لغوی می‌سازند. در کد پایتون قبلی، self.left و self.right با هم یک بیکن مرکب تشکیل می‌دهند. آنها به تنهایی اطلاعات زیادی درباره‌ی کد ارائه نمی‌دهند، اما وقتی در کنار هم قرار می‌گیرند به ما دید بهتری از کد می‌دهند. اجزای کد هم‌چنین می‌توانند به عنوان بیکن‌های ترکیبی عمل کنند. به عنوان مثال، یک حلقه for می‌تواند یک بیکن مرکب باشد زیرا حاوی متغیر حلقه، مقدار اولیه‌ی آن، مقدار اضافه‌شونده در هر تکرار و مقادیر مرزی آن است.

بیکن‌ها می‌توانند اشکال مختلفی داشته باشند. قبلاً دیدیم که نام متغیرها و کلاس‌ها می‌توانند نقش بیکن را بازی کنند و حتی سایر شناسه‌ها مانند نام متدها نیز می‌توانند مانند بیکن عمل کنند. علاوه بر نام‌ها، ساختارهای برنامه‌نویسی خاص مانند جا‌به‌جایی مقدار دو متغیر (swap) یا مقداردهی اولیه (initialization) یک لیست خالی نیز می‌توانند بیکن باشند.

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

نکته: هر زمان که لحظه‌ای مکث کردید و گفتید “آها، فهمیدم” و در آن لحظه درک بهتری از عملکرد کد پیدا کردید، توقف کنید و آنچه را که شما را به این نتیجه رسانده است یادداشت کنید. این عامل می‌تواند کامنت، نام متغیر، نام متد یا حتی مقدار تغییریافته‌ی یک متغیر باشد. همه این موارد می‌توانند بیکن یا فانوس راهنمای کد باشند.

منابع:
کتاب «مغز برنامه‌نویس» از انتشارات منینگ

گزیده:
«اگر خواهی بر قول تو کار کنند، برقول خویش کار کن.» قابوس‌نامه

یک تاکتیک موثر برای اتمام کارهای ناتمام

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

به تجربه پی برده‌ام:

اگر میخواهم کارهای عقب افتاده‌ام را تمام کنم، بهتر است به جای برنامه‌ریزی آنها برای کاری که دوست ندارم مهلت (ددلاین) تعیین کنم! 🙂

 

مغز برنامه‌نویس: چگونه کد چانک‌شده بنویسیم (۵)

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

چگونه کد قطعه‌بندی شده یا چانک‌شده (chunkable code) بنویسیم؟ — ادامه

راهکار سه: از فانوس‌های راهنما استفاده کنید
پیش‌گفتار
:
اجازه دهید ابتدا معنی بیکن (beacon) را با هم مرور کنیم. در سایت farsi123.com معنی بیکن به قرار زیر است:

۱- آتشی که برای مخابره برفراز تپه یا برج و غیره روشن می‌کردند
۲- آتش (یا نور) راهنما، آتش (یا نور) آگهساز
۳- فانوس دریایی، فار، مناره‌البحر، دریابرج
۴- (فرستنده‌ی رادیویی که برای راهنمایی هواپیما درمه یا شب نشان پراکنی می‌کند) ایستگاه هدایت
۵- (شخص) رهبر، رهنما، منور کننده
من از واژه‌ی «فانوس راهنما» استفاده می‌کنم ولی مطمئن نیستم که پیشنهاد مناسبی برای آن باشد.
ادامه:
آخرین کاری که می‌توانید برای آسان‌تر کردن فرایند قطعه‌بندی (چانک‌ کردن)‌ کد انجام دهید، گنجاندن «فانوس‌های راهنما» است. »فانوس‌های راهنما» بخش‌هایی از برنامه است که به برنامه‌نویس کمک می‌کند تا بفهمد برنامه چه کاری انجام می‌دهد. می‌توانید به «فانوس راهنما» را یک خط از برنامه یا حتی بخشی از آن در نظر بگیرید که وقتی چشم شما به آن می‌افتد به خودتان می‌گویید: “آها، فهمیدم!.”
فانوس‌های راهنما معمولاً نشان می‌دهند که یک قطعه کد حاوی ساختار داده، الگوریتم‌ یا رویکرد خاصی است. به عنوان نمونه، کد پایتون زیر را ببینید که یک درخت دودویی (باینری) را پیمایش می‌کند.
این کد پایتون حاوی چندین فانوس راهنما است که خواننده می‌تواند به کمک آنها بفهمد که کد از درخت دودویی به عنوان ساختار داده استفاده می‌کند:
– توضیحات (کامنت) که در آنها از کلمه “درخت” (tree) استفاده شده است.
– متغیرهایی به نام ریشه (root) و درخت (tree)
– فیلدهایی به نام چپ و راست (left, right)
– متنی که به درخت اشاره می‌کند (“Contents of the tree are”)
فانوس‌های راهنما ابزار بسیار مهمی در زمینه‌ی یادآوری و نشانه‌یابی در طول فرایند درک و فهمیدن کد هستند. آنها معمولا برای برنامه‌نویسان مانند محرک‌های ذهنی عمل می‌کنند تا فرضیه‌های ذهنی خود درباره‌ی کد را تأیید یا رد کنند. به عنوان مثال، در ابتدای خواندن کد پایتون قبلی احتمالا هیچ ایده‌ای ندارید که این کد چه کاری انجام می‌دهد. اما وقتی اولین توضیح را می‌خوانید و چشم‌تان به کلاس Node بیفتد، ناخودآگاه حدس می‌زنید که این کد به بحث درخت‌ها (tree) ارتباط دارد. سپس با دیدن فیلدهای چپ و راست (left, right)، حدس شما درباره‌ی کد تقویت می‌شود.
ما معمولاً چراغ‌های راهنما را به دو دسته تقسیم می‌کنیم: چراغ‌های راهنمای ساده (simple beacons) و چراغ‌های راهنمای مرکب (compound beacons).
منابع:
کتاب «مغز برنامه‌نویس» از انتشارات منینگ

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

شوک‌های ذهنی! (۱)

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

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

نمونه ۱:
در درس فیزیک در بحث قانون گازها گفته‌ می‌شد که با فرض ثابت بودن دما،‌ اگر فشار گاز را افزایش دهیم، حجم آن کاهش پیدا می‌کند. در نتیجه فشار گاز و حجم آن با یکدیگر رابطه غیرمستقیم دارند، افزایش یکی به کاهش دیگری منجر می‌شود.

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

بعدها به این نتیجه رسیدم که واقعا این گونه نیست. این اتفاق زمانی افتاد که داشتم کتابی در زمینه‌ی مدیریت پروژه می‌خواندم. شما نمی‌توانید با افزایش قطعیت،‌ عدم قطعیت (شرایط غیرقطعی) موجود را کاهش بدهید! (فکر کنم شما هم دچار شوک ذهنی شدید 🙂 ).

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

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

قدیمی‌ترین مدرسه روستایی ایران کجاست؟

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

به نقل از همشهری آنلاین:
آمار بالای باسوادی در گیلان بی‌شک مرهون تاریخ دیرپای راه‌اندازی مدرسه روستایی به سبک نوین و همگانی است؛ مدرسه‌ای که برای نحستین بار در سال ۱۳۰۴ شروع به کار کرد و حالا ۹۶ ساله شده است.

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

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

این مدرسه در حال حاضر با نام مدرسه محمد باقر صدر شناخته می‌شود.

گزیده:
«هرگاه به مدرسه قدم می‌گذارم، با مشاهده چهره‌های کثیف و تکیده، موهای ژولیده، و برق چشمانِ این کودکان فقیر، دستخوش ناآرامی و انزجار می‌شوم و همان حالتی به‌من دست می‌دهد که بارها از دیدن شراب‌خواران مست، بر من مستولی شده‌است. ای خدای بزرگ! چگونه می‌توانم آن‌ها را نجات دهم؟ نمی‌دانم به کدامین یک کمک کنم. من آموزش و پرورش را فقط برای توده‌ها می‌خواهم و نه کسی دیگر، مگر بتوانم پوشکین‌ها و لومونسف‌های آینده را از غرق‌شدن رهائی بخشم.»
لئو تولستوی

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