زمستان ۱۳۹۴: دوره تحلیل نیازمندی‌ها

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

 

 

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

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

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

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

راهکار یک: از الگوهای طراحی (design pattern) استفاده کنید
اگر می خواهید کدی بنویسید که به راحتی قطعه‌بندی (چانک‌شده)‌ شده باشد، از الگوهای طراحی استفاده کنید. یافته‌های والتر تیچی (Walter Tichy)، استاد علوم کامپیوتر در موسسه فناوری کارلسروهه‌ی آلمان به صورت اتفاقی ارتباط بین قطعه‌بندی کدها با الگوهای طراحی را مورد بررسی قرار داده است. او به دنبال بررسی الگوهای طراحی بود و به ویژه علاقه داشت تا بررسی کند که الگوهای طراحی تا چه میزان می‌تواند هنگام نگهداری کد (افزودن ویژگی جدید یا رفع خطا) (maintenance) به برنامه‌نویسان کمک می‌کند.

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

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

راهکار دو: توضیح (comment) بنویسید
آیا باید برای کد، توضیح (کامنت)‌ بنویسیم یا کد باید “خود بیان” (document itself) باشد؟ این پرسش یکی از پرسش‌های چالش‌برانگیز در دنیای برنامه‌نویسان است که نظرات متفاوت و متضادی درباره‌ی آن وجود دارد. محققان به این پرسش پرداخته‌اند و به یافته‌های جالبی رسیده‌اند.

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

مارتا الیزابت کرازبی (Martha Elizabeth Crosby)، محقق دانشگاه هاوایی، مطالعاتی روی روش کدخوانی برنامه‌نویسان و نقش توضیحات همراه کد در کدخوانی انجام داده است. کار کرازبی نشان داد که برنامه‌نویسان مبتدی بیشتر از برنامه‌نویسان باتجربه و حرفه‌ای‌ به توضیحات کد توجه می‌کنند. یافته‌های کرازبی نشان می‌دهد افزودن توضیحات به کد می‌تواند روش خوبی برای کمک به برنامه‌نویسان تازه‌کار برای فهمیدن کد باشد.

پایان‌نامه کویین فن ( Quiyin Fan) در سال 2010 در دانشگاه مریلند با عنوان “The Effects of Beacons, Comments, and Tasks on Program Comprehension Process in Software Maintenance,” نشان داد که توسعه‌دهندگان هنگام خواندن کد، وابستگی شدیدی به توضیحات کد دارند. به ویژه توضیحات کلانی مانند “این تابع یک درخت دودویی را چاپ می‌کند” می‌تواند به برنامه‌نویسان کمک کند تا قطعات بزرگتر کد را تکه‌تکه کنند و بفهمند. از سوی دیگر، توضیحات جزیی مانند “یکی به n اضافه می‌کنیم” پس از خطی که متغیر n را یکی افزایش داده است (n = n+1)،‌ نه تنها کمکی به خواندن و فهم کد نمی‌کند بلکه فرایند قطعه‌بندی (چانک‌سازی) را دچار اختلال و کندی می‌کند.

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

گزیده:

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

سخنرانی علمی تورینگ: یادگیری عمیق و هوش مصنوعی

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

به تازگی نوشته‌ای از جاشوا بنجو (Yoshua Bengio)،‌ یان لی‌کو (Yann LeCun) و جفری هینتن (Geoffrey Hinton) در بخش «Turing Lecture» نشریه C-ACM با عنوان Deep Learning for AI منتشر شده که مطالعه‌ی آن برای من بسیار آموزنده بود.

بنجو، لی‌کو و هینتن در سال ۲۰۱۸ جایزه تورینگ (معادل نوبل کامپیوتر)‌ را به خاطر کشف‌‌شان که شبکه‌های عصبی عمیق (deep neural networks ) را به یکی از تاثیرگذارترین موضوعات محاسبات و زندگی بشری تبدیل کرد دریافت کردند.

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

از جمله چالش‌های اشاره شده در این نوشته می‌توان به:
– چالش یادگیری با حداقل یا بدون نظارت خارجی (Little or no external supervision)
– چالش نمونه‌های آزمایشی (test examples) که توزیع (distribution) متفاوتی با توزیع داده‌های آموزشی (training examples ) دارند
– چالش استفاده از یادگیری عمیق برای کارهایی که انسان به صورت گام به گام و طی یک مجموعه از گام‌ها یاد می‌گیرد. به این گونه کارها سیستم شماره ۲ گفته می‌شود. برای اطلاعات بیشتر به کتاب «تفکر سریع- تفکر آهسته» از دنیل کانه‌من مراجعه بفرمایید.

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

گزیده:

“Our intelligence is what makes us human, and AI is an extension of that quality.” Yann LeCun

مغز برنامه‌نویس: حافظه‌ی نمادین (۳)

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

شما کد بیشتری نسبت به کدی که خواندید می‌‌بینید
قبل از آن که اطلاعات وارد حافظه‌ی کوتاه‌مدت شوند، وارد مرحله‌ای از پردازش می‌شوند که به آن حافظه‌ی حسی (sensory memory) گفته می‌شود. اگر حافظه‌ی بلندمدت مانند دیسک سخت (hard disk) و حافظه‌ی کوتاه‌مدت مانند حافظه‌ی دسترسی تصادفی ( RAM) باشد، حافظه‌ی حسی مانند بافر ورودی-خروجی (I/O Buffer) است.

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

حافظه‌ی نمادین و کد
همان طور که گفته شد هر آن چه می‌خوانیم ابتدا در حافظه‌ی نمادین ذخیره می‌شود. اما لزوما هر چه در حافظه‌ی نمادین ذخیره می‌شود توسط حافظه‌ی کوتاه‌مدت پردازش نمی‌شود،‌ در نتیجه وقتی که کدی را با جزییات می‌خوانید ناچارید تصمیم بگیرید که چه چیزی را پردازش کنید و چه چیزی را پردازش نکنید. چنین انتخابی آگاهانه اتفاق نمی‌افتد. و این بدان معناست که از نظر تئوری شما می‌توانید اطلاعات بیشتری درباره‌ی کد را نسبت به آن چه در حافظه‌ی کوتاه‌مدت‌تان پردازش می‌شود، به یاد بیاورید.
به کمک این یافته درباره‌ی حافظه‌ی نمادینُ می‌توان اثربخشی خواندن کد را افزایش داد: ابتدا مدت کوتاهی به کد نگاه کنید و سپس به آنچه دیدید فکر کنید. این تکنیک “کد در یک نگاه” (code at a glance) به شما کمک می‌کند تا تصویری ابتدایی از کد به دست آورید.

در آزمایش دیگری از برنامه‌نویسان مبتدی،‌ متوسط و خبره خواسته شد تا ۲۱ کلمه‌ی کلیدی در زبان الگول را که به آنها آموزش داده شده بود بنویسند. محققان با این آزمایش توانستند بین یادآوری افراد و شیوه‌ی که آنها بین کلمات ارتباطات ایجاد می‌کنند به یافته‌هایی جدیدی برسند. نتایج مطالعه نشان داد که روش گروه‌بندی کلمات کلیدی توسط افراد مبتدی با خبرگان تفاوت دارد. به عنوان مثال، افراد مبتدی اغلب از جملات به عنوان کمک‌ برای حفظ کردن استفاده می‌کنند مثلا “TRUE IS REAL THEN FALSE”. ولی افراد خبره از دانش قبلی خود در زمینه برنامه‌نویسی برای گروه‌بندی کلمات استفاده می‌کنند مثلا آنها “TRUE, FALSE” را “IF, THEN, ELSE” ترکیب می‌کنند. این مطالعه دوباره تأیید کرد که روش فکر کردن خبرگان به کد با افراد مبتدی متفاوت است.

گزیده:
یکی از مزایای داشتن حافظه‌ی بد این است که افراد می‌توانند از این که دارند چیزهای خوب و خوشایند را برای اولین بار تجربه می‌کنند، چندین و چند بار لذت ببرند. 🙂
فردریش نیچه

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

مغز برنامه‌نویس: کدخوانی نصرت! (۲)

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

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

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

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

دلیل دوم این است که اندازه‌ و ظرفیت حافظه‌ی کوتاه‌مدت بسیار محدود است. جرج میلر اعتقاد داشت که اندازه‌ی حافظه‌ی کوتاه‌مدت برابر عدد ۷ به‌علاوه-منهای ۲ است (یعنی حافظه‌ی کوتاه‌مدت بین ۵ تا ۹ جای خالی دارد). تحقیقات اخیر نشان می‌دهد که ظرفیت حافظه‌ی کوتاه‌مدت ما از این هم کمتر است و عددی بین ۲ تا ۶ است.

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

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

 

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

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

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

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

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


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

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

برنامه‌نویسان خبره کد را بهتر از برنامه‌نویسان مبتدی به یاد می‌آورند.
در سال ۱۹۸۱ کاترین مک‌کیتان در آزمایشگاه بل تلاش کرد آزمایش گروث را با برنامه‌نویسان تکرار کند. او ۵۴ برنامه‌نویس خبره، متوسط و مبتدی را انتخاب کرد و ۳۰ خط از یک برنامه را که با زبان الگول نوشته شده بود به آنها نشان داد. برنامه‌نویسان ۲ دقیقه وقت داشتند تا کد را بخوانند. بعد از آن باید کد را تا جایی که یادشان مانده بود بازنویسی کنند.

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

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

مغز برنامه‌نویس‌: سردرگمی و گیجی (۱)

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

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

البته گیجی و سردرگمی اگر برای مدت کوتاهی طول بکشد مشکلی ایجاد نمی‌کند و موضوع مهمی نیست. اما هیچ‌کس نمی‌خواهد برای مدت طولانی و بیش از حد در گیجی و سردرگمی بماند؛

گیج‌شدن موقع کدنویسی می‌تواند به سه دلیل در مغز یک برنامه‌نویس ایجاد شود:
– کمبود دانش (lack of knowledge)
– نداشتن دسترسی آسان به اطلاعات (lack of information)
– کمبود قدرت پردازش (lack of processing power)

هنگام خواندن یا نوشتن کد، سه فرایند شناختی (cognitive processes)‌ درگیر می‌شوند:
– فرایند نخست، فرایند بازیابی اطلاعات از حافظه‌ی بلندمدت (long-term memory) است، به عنوان مثال معنی کلیدواژه‌های زبان از این حافظه استخراج می‌شود.
– فرایند دوم، فرایند بازیابی اطلاعات از حافظه‌ی کوتاه‌مدت (short-term memory) است. اطلاعات مربوط به برنامه‌‌ای که روی آن کار می‌‌کنید در حافظه‌ی کوتاه‌مدت شما ذخیره می‌شود. نام متدها یا متغیرهای برنامه بخشی از این اطلاعات هستند.
– فرایند سوم درگیر حافظه‌ی فعال (working memory) است. در اینجاست که پردازش کد اتفاق می‌افتد. به عنوان مثال موقعی که اجرای کدی را به صورت ذهنی دنبال می‌کنیم (trace) ، این فرایند شناختی درگیر می‌شود.

هر سه فرایند شناختی هنگام خواندن کد فعال هستند و البته مکمل یکدیگر نیز هستند. به عنوان مثال، اگر حافظه‌ی کوتاه‌مدت شما با نام متغیری مانند n روبه‌رو شود، مغز شما حافظه‌ی بلندمدت را برای یافتن برنامه‌های مشابه و مرتبطی که در گذشته دیده‌اید جستجو می‌کند. یا هنگامی که به کلمه‌ای مبهم برمی‌خورید، حافظه‌ی فعال شما به کار می‌افتد و مغز شما سعی می‌کند در این زمینه معنی مناسب را تعیین کند.

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

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

سواد مالی

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

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

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

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

چو دخلت نیست خرج آهسته‌تر کن که می‌گویند ملاحان سرودی
اگر باران به کوهستان نبارد به سالی دجله گردد خشک رودی

عقل و ادب پیش گیر و لهو و لعب بگذار که چون نعمت سپری شود سختی بری و پشیمانی خوری.»

امور مالی شخصی (Personal Finance):
امور مالی شخصی، کاربردی از مبانی علم مالی در تصمیم‌گیری‌های پولی یک فرد یا یک خانواده است. این موضوع به چگونگی درآمدزایی، بودجه‌بندی، پس‌انداز و خرج کردن منابع مالی توسط افراد یا خانواده‌ها با در نظر گرفتن ریسک‌ها و رخدادها در زندگی آینده، می‌پردازد. [ویکی پدیا]. همان طور که از تعریف هم برمی‌آید این حوزه «کاربردی» است از «علم مالی» و در نتیجه مانند هر «کاربرد» دیگری نیازمند یادگیری و تجربه است. پیشنهاد می‌کنم اگر تاکنون آن را نیاموخته‌اید، با یک عزم عالی و برنامه‌ای مناسب، آن را هر چه زودتر بیاموزید.

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

آدرس گفتگو در یوتیوب:‌ اینجا
آدرس گفتگو در آپارات:‌ اینجا

گزیده:
شما ناچارید بر پول‌ خود کنترل داشته باشید وگرنه فقدان آن تا ابد شما را کنترل خواهد کرد. دیو رمزی

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