مغز برنامهنویس: کدخوانی نصرت! (۲)
اهمیت تندخوانی کد
خواندن و فهمیدن کد، بخش بزرگی از زندگی برنامهنویسان است . بزرگی این بخش بیشتر از چیزی است که تصور میکنید. تحقیقات نشان دادهاند که تقریبا ۶۰ درصد زمان برنامهنویسان صرف خواندن و فهمیدن کد میشود تا نوشتن آن. خواندن کد به دلایل مختلفی انجام میشود از پیدا کردن دلیل بروز خطا بگیرید تا فهم کلی سیستم. دلیل کدخوانی هر چه باشد، همهی آنها در یک موضوع با هم اشتراک دارند و آن این است که هدف شما پیدا کردن اطلاعات مشخصی در کد است. از جمله این اطلاعات میتوان به یافتن محل مناسب برای پیادهسازی ویژگی جدید، محل وقوع خطا یا فهمیدن روش پیادهسازی یک متد موجود است.
با بهبود مهارت خود در یافتن سریع اطلاعات، میتوانید تعداد دفعات مراجعه به کد را کاهش دهید. همچنین مهارت بیشتر در خواندن و فهمیدن کد باعث کاهش زمان یافتن اطلاعات نیز میشود که معمولا با بالا و پایین کردن کد همراه است. زمان صرفهجوییشده میتواند صرف رفع خطا یا افزودن ویژگی جدید به سیستم گردد که در نهایت از شما برنامهنویس کاراتر و اثربخشتری خواهد ساخت.
چرا فهمیدن یک کد ناآشنا دشوار است؟
دلیل اول آن است که حافظهی کوتاهمدت که نقش اصلی در خواندن و فهمیدن لحظهای را دارد، نمیتواند بیش از ۳۰ ثانیه اطلاعات را نگهدارد و به ناچار آن را به حافظهی بلندمدت منتقل میکند وگرنه اطلاعات فراموش خواهد شد.
دلیل دوم این است که اندازه و ظرفیت حافظهی کوتاهمدت بسیار محدود است. جرج میلر اعتقاد داشت که اندازهی حافظهی کوتاهمدت برابر عدد ۷ بهعلاوه-منهای ۲ است (یعنی حافظهی کوتاهمدت بین ۵ تا ۹ جای خالی دارد). تحقیقات اخیر نشان میدهد که ظرفیت حافظهی کوتاهمدت ما از این هم کمتر است و عددی بین ۲ تا ۶ است.
متاسفانه دانشمندان هنوز راهی برای افزایش ظرفیت حافظهی کوتاهمدت انسان پیدا نکردهاند. برای مقابله با این مساله، حافظهی کوتاهمدت با حافظهی بلندمدت همکاری میکند. واقعا عجیب است که آدمی با وجود این ناتوانی چه کارهای شگفتانگیزی میتواند انجام دهد.
غلبه بر محدودیت ظرفیت حافظه
یک) قدرت قطعهها یا چانکها
چانک اولین بار توسط ریاضیدان آلمانی آدریان گروث معرفی شد. او که به شطرنج بسیار علاقهمند بود دنبال این پرسش بود که چرا یک سری از شطرنجبازان در تمام عمرشان شطرنجباز متوسطی باقی میمانند و چرا عدهای دیگر به شطرنجبازان حرفهای و خبره تبدیل میشوند.
او با آزمایشی که با دو گروه شطرنجباز خبره و شطرنجباز متوسط انجام داد به این نتیجه رسید که شطرنجبازان خبره جا و چینش مهرهها در بازی را بهتر به یاد میآورند و دلیل آن را به این موضوع ارتباط داد که حافظهی کوتاهمدت آنها بزرگتر و جادارتر است. او در این آزمایش صفحهی شطرنج و مهرهها را برای لحظاتی به شطرنجبازان نشان میداد و بعد از آنها میخواست که آن چه دیدهاند را به خاطر بیاورند.
او از نتایج آزمایش اول متقاعد نشد و این بار آزمایش دیگری را ترتیب داد. در این آزمایش هر دو گروه امتیاز مشابه و البته خیلی پایینی کسب کردند. در آزمایش دوم، او مهرهها را به صورت کاملا تصادفی به صورتی که مانند الگوهای شناختهشده و آشنای شطرنج نباشد، چیده بود.
او پی برد که تفاوت مهمی بین شطرنجبازان خبره و متوسط وجود دارد. شطرنجبازان متوسط جای تکتک مهرهها را به حافظه میسپرند مثلا شاه در خانه ایکس و رخ در خانه ایگرگ. در حالی که شطرنجبازان خبره از اطلاعات حافظهی بلندمدت خود استفاده میکردند. برای مثال گشایش سیسیلی با این تفاوت که اسب در خانه ایکس. به خاطر سپردن محل مهرهها با این شیوه فقط در صورتی امکانپذیر است که در حافظهی بلندمدت شما مفهوم « گشایش سیسیلی» ذخیره شده باشد.
بعضی از شطرنجبازان خبره مهرهها را به کمک بازیهای قبلی خود، بازیهای معروف یا بازیهایی که تماشا کرده بودند به یاد میآوردند. مثلا بازی کاسپارف و آناند در نیویورک در سال ۱۹۹۵. بدیهی است که برای این شیوهی به خاطرسپاری باید اطلاعاتی در حافظهی بلندمدت شما ذخیره شده باشد. شطرنجبازان متوسط که سعی میکنند محل تکتک مهرهها را به خاطر بسپارند خیلی زود با این مساله رو به رو میشوند که فضای کافی در حافظهی کوتاهمدت خود پیدا نمیکنند و به زبان عامیانه، حافظهشان پر میشود.
https://tinyurl.com/h97t46ps
دکتر گروث این گروهها یا قطعات اطلاعاتی را که افراد، اطلاعات را به کمک آنها با هم ترکیب و نگهداری میکنند، چانک یا قطعهی اطلاعاتی نامید.او «گشایش سیسیلی« را یک چانک در نظر گرفت. نکته جالب در مورد چانکها این است که که آنها میتوانند فقط در یکی از جاهای خالی حافظهی کوتاهمدت جا شود (به یاد داشته باشید که حداکثر ۶ جای خالی وجود دارد).
کتاب «مغز برنامهنویس» از انتشارات منینگ
https://t.me/bibalan_com
Post #225
406