اهمیت تندخوانی کد
خواندن و فهمیدن کد، بخش بزرگی از زندگی برنامهنویسان است . بزرگی این بخش بیشتر از چیزی است که تصور میکنید. تحقیقات نشان دادهاند که تقریبا ۶۰ درصد زمان برنامهنویسان صرف خواندن و فهمیدن کد میشود تا نوشتن آن. خواندن کد به دلایل مختلفی انجام میشود از پیدا کردن دلیل بروز خطا بگیرید تا فهم کلی سیستم. دلیل کدخوانی هر چه باشد، همهی آنها در یک موضوع با هم اشتراک دارند و آن این است که هدف شما پیدا کردن اطلاعات مشخصی در کد است. از جمله این اطلاعات میتوان به یافتن محل مناسب برای پیادهسازی ویژگی جدید، محل وقوع خطا یا فهمیدن روش پیادهسازی یک متد موجود است.
با بهبود مهارت خود در یافتن سریع اطلاعات، میتوانید تعداد دفعات مراجعه به کد را کاهش دهید. همچنین مهارت بیشتر در خواندن و فهمیدن کد باعث کاهش زمان یافتن اطلاعات نیز میشود که معمولا با بالا و پایین کردن کد همراه است. زمان صرفهجوییشده میتواند صرف رفع خطا یا افزودن ویژگی جدید به سیستم گردد که در نهایت از شما برنامهنویس کاراتر و اثربخشتری خواهد ساخت.
چرا فهمیدن یک کد ناآشنا دشوار است؟
دلیل اول آن است که حافظهی کوتاهمدت که نقش اصلی در خواندن و فهمیدن لحظهای را دارد، نمیتواند بیش از ۳۰ ثانیه اطلاعات را نگهدارد و به ناچار آن را به حافظهی بلندمدت منتقل میکند وگرنه اطلاعات فراموش خواهد شد.
دلیل دوم این است که اندازه و ظرفیت حافظهی کوتاهمدت بسیار محدود است. جرج میلر اعتقاد داشت که اندازهی حافظهی کوتاهمدت برابر عدد ۷ بهعلاوه-منهای ۲ است (یعنی حافظهی کوتاهمدت بین ۵ تا ۹ جای خالی دارد). تحقیقات اخیر نشان میدهد که ظرفیت حافظهی کوتاهمدت ما از این هم کمتر است و عددی بین ۲ تا ۶ است.
متاسفانه دانشمندان هنوز راهی برای افزایش ظرفیت حافظهی کوتاهمدت انسان پیدا نکردهاند. برای مقابله با این مساله، حافظهی کوتاهمدت با حافظهی بلندمدت همکاری میکند. واقعا عجیب است که آدمی با وجود این ناتوانی چه کارهای شگفتانگیزی میتواند انجام دهد.
غلبه بر محدودیت ظرفیت حافظه
یک) قدرت قطعهها یا چانکها
چانک اولین بار توسط ریاضیدان آلمانی آدریان گروث معرفی شد. او که به شطرنج بسیار علاقهمند بود دنبال این پرسش بود که چرا یک سری از شطرنجبازان در تمام عمرشان شطرنجباز متوسطی باقی میمانند و چرا عدهای دیگر شطرنجبازان به شطرنجبازان حرفهای و خبره تبدیل میشوند.
او با آزمایشی که با دو گروه شطرنجباز خبره و شطرنجباز متوسط انجام داد به این نتیجه رسید که شطرنجبازان خبره جا و چینش مهرهها در بازی را بهتر به یاد میآورند و دلیل آن را به این موضوع ارتباط داد که حافظهی کوتاهمدت آنها بزرگتر و جادارتر است. او در این آزمایش صفحهی شطرنج و مهرهها را برای لحظاتی به شطرنجبازان نشان میداد و بعد از آنها میخواست که آن چه دیدهاند را به خاطر بیاورند.
او از نتایج آزمایش اول متقاعد نشد و این بار آزمایش دیگری را ترتیب داد. در این آزمایش هر دو گروه امتیاز مشابه و البته خیلی پایینی کسب کردند. در آزمایش دوم، او مهرهها را به صورت کاملا تصادفی به صورتی که مانند الگوهای شناختهشده و آشنای شطرنج نباشد، چیده بود.
او پی برد که تفاوت مهمی بین شطرنجبازان خبره و متوسط وجود دارد. شطرنجبازان متوسط جای تکتک مهرهها را به حافظه میسپرند مثلا شاه در خانه ایکس و رخ در خانه ایگرگ. در حالی که شطرنجبازان خبره از اطلاعات حافظهی بلندمدت خود استفاده میکردند. برای مثال گشایش سیسیلی با این تفاوت که اسب در خانه ایکس.
به خاطر سپردن محل مهرهها با این شیوه فقط در صورتی امکانپذیر است که در حافظهی بلندمدت شما مفهوم « گشایش سیسیلی» ذخیره شده باشد.
بعضی از شطرنجبازان خبره مهرهها را به کمک بازیهای قبلی خود، بازیهای معروف یا بازیهایی که تماشا کرده بودند به یاد میآوردند. مثلا بازی کاسپارف و آناندا در نیورک در سال ۱۹۹۵. بدیهی است که برای این شیوهی به خاطرسپاری چینش مهرهها باید اطلاعاتی در حافظهی بلندمدت شما ذخیره شده باشد. شطرنجبازان متوسط که سعی میکنند محل تکتک مهرهها را به خاطر بسپارند خیلی زود با این مساله رو به رو میشوند که فضای کافی در حافظهی کوتاهمدت خود پیدا نمیکنند و به زبان عامیانه، حافظهشان پر میشود.
دکتر گروث این گروهها یا قطعات اطلاعاتی را که افراد، اطلاعات را به کمک آنها با هم ترکیب و نگهداری میکنند، چانک یا قطعهی اطلاعاتی نامید.او «گشایش سیسیلی« را یک چانک در نظر گرفت. نکته جالب در مورد چانکها این است که که آنها میتوانند فقط در یکی از جاهای خالی حافظهی کوتاهمدت جا شود (به یاد داشته باشید که حداکثر ۶ جای خالی وجود دارد).
او فهمید که چرا در آزمایش دوم که مهرهها به شکل تصادفی و بدون شباهت به هیچ چینش معروفی قرار داده شده بود، هر دو گروهِ شطرنجبازان، خبرهها و متوسطها نتایج خوبی کسب نکردند. او فهمید که شطرنجبازان خبره نمیتوانستند از حافظهی بلندمدت خود برای به خاطر سپاری مکان مهرهها استفاده کنند زیرا چینش بازی با هیچ بازی شناختهشدهای شباهت نداشت.
برنامهنویسان خبره کد را بهتر از برنامهنویسان مبتدی به یاد میآورند.
در سال ۱۹۸۱ کاترین مککیتان در آزمایشگاه بل تلاش کرد آزمایش گروث را با برنامهنویسان تکرار کند. او ۵۴ برنامهنویس خبره، متوسط و مبتدی را انتخاب کرد و ۳۰ خط از یک برنامه را که با زبان الگول نوشته شده بود به آنها نشان داد. برنامهنویسان ۲ دقیقه وقت داشتند تا کد را بخوانند. بعد از آن باید کد را تا جایی که یادشان مانده بود بازنویسی کنند.
نتایج آزمایش مککیتان با نتایج آزمایش اول گروث یکسان بود. یعنی برنامهنویسان خبره تعداد خطهای بیشتری را درست نوشته بودند و بعد برنامهنویسان متوسط و در آخر هم برنامهنویسان مبتندی.
منابع:
منبع: کتاب «مغز برنامهنویس» از انتشارات منینگ
عکس از اینجا
دیدگاهتان را بنویسید