با ترجمه و اقتباس از مقاله آقای برت ویکتور - Learnable Programming
موضوع اصلی این سری از مطالب در خصوص نحوه یادگیری یک زبان برنامه نویسی و درک کد های برنامه است . اینکه با چه روشی میتوان برنامه نویسی را به دیگران آموزش
داد و محیط و زبان برنامه نویسی باید دارای چه خصوصیاتی
باشد . ایده اصلی Learnable programmingاز
آقای برت ویکتور می باشد که این مطلب سعی میکند همراه با ترجمه ، تفکرات ذهنی
نویسنده را نیز بیان کند .
موضوعات مطرح شده در این سری از مطالب ، در محیط آنلاین
آموزشی آکادمی خان و براساس زبان برنامه نویسی جاوا اسکریپت ( js ) و Processing نوشته شده که
دارای ویژگی مثل live coding می باشد که به محض نوشته شدن کد ، خروجی آن قابل مشاهده میباشد .
برنامه نویسی
برنامه نویسی یعنی فکر کردن ، نه فقط مهارت نوشتن کد . ما در
برنامه نویسی یه پروسه فکری را ایجاد کرده و به آن می پردازیم و سعی میکنیم مشکلات
را در این پروسه حل کنیم . به عنوان مثال ، صرف
یادگیری حلقه for یادگیری برنامه نویسی نیست و مثل این می ماند که بخواهیم با
یادگیری نحوه استفاده از مداد ، طراحی را یاد بگیریم. در برنامه نویسی سعی می کنیم با بررسی مساله یک حالت مفهومی را ایجاد کنیم تا پاسخگویی تمام ورودی ها و خروجی های کاربر قرار بگیرد .
دیدن نتایج
همه ما آنچه را بتوانیم ببینیم بهتر درک میکنیم . در برنامه
نویسی نیز یادگیرنده باید بتواند نتایج برنامه ای را که مینویسد ببیند . اینجا
مقصود از نتایج خروجی برنامه نیست ، بلکه امکانی است برای یادگیرنده تا بتواند یک
خروجی از هر خط کدی که مینویسد ببیند و درک کند این قطعه از کد چه کاری انجام
خواهد داد و الزاما نیاز نیست منتظر خروجی کل برنامه در پایان کار باشد. هدف کلی
یک سیستم برنامه نویسی :
تشویق و ترغیب یادگیرنده در استفاده از روش های قدرتمند فکر
کردن
ایجاد امکان دیدن و فهمیدن جزئیات برنامه به یک یادگیرنده
آلن پرلیز ( Alan Perlis ) میگوید : " برای اینکه یک برنامه را بفهمید
باید خود را جای انسان و ماشین قرار دهید و مثل انها فکر کنید "
این یک اشتباه بزرگ است . دقیقا چیزی که برنامه نویسی را
سخت و غیر قابل اطمینان میکند . یک انسان هرگز نمیتواند مثل یک ماشین فکر کنید ،
نحوه فکر کردن یک انسان بسیار با ماشین متفاوت است و ما برای فکر کردن نیاز به
تجسم داریم در حالی که ماشین از روش های موجود استفاده میکند . حال سوال این است
که پس چطور باید برنامه نویسی را به دیگران آموزش دهیم . ما سیستم برنامه نویسی را
طوری تغییر میدهیم تا قابل فهمیدن توسط انسان باشد .
سیستم برنامه نویسی
هر سیستم برنامه نویسی دو بخش دارد . یک بخش آن محیط برنامه نویسی است که روی کامپیوتر نصب میشود و محیطی را برای کار کردن برنامه نویس ایجاد میکند و یک بخش نیز زبان برنامه نویسی است که روی مغز برنامه نویس نصب میشود . و با استفاده از ان با کامپیوتر ارتباط برقرار می کند . باید هر دو بخش سیستم برنامه نویسی براساس اصولی طراحی شود که قابلیت یادگیری داشته باشد . یعنی همان شعار Learnable-Programming که سیستمی را برای برنامه نویسی ترسیم خواهد کرد که ، یادگیرنده در جایگاه خود به عنوان یک انسان و از دیدگاه خود برنامه را تحلیل کرده و بسازد .
یک محیط برنامه نویسی قابل یادگیری باید به یادگیرنده اجاز دهد :
- کلمات را بخواند ( read the vocabulary ) - کلمات چه معنایی میدهند ؟
- جریان داده را دنبال کند ( follow the flow ) - چه اتفاقی چه موقع می افتد ؟
- وضعیت ها را مشاهده کند ( see the state ) - کامپیوتر چطور فکر میکند ؟
- با واکنش نشان داد بسازد ( create by reacting ) - از نقطه ای شروع کرده و بسازد
- بصورت مفهومی بسازد ( create by abstracting ) - ابتدا پیاده سازی کرده و سپس تعمیم دهد
یک زبان برنامه نویسی نیز باید شامل موارد زیر باشد :
- هویت و استعاره ( identity and metaphor ) - چطور باید جهان کامپیوتر را با جهان خودمان ارتباط دهیم ؟
- تجزیه ( decomposition ) - چطور باید ایده های خود را به تکه های قابل فهم تجزیه کنم ؟
- ترکیب دوباره ( recomposition ) - چطور باید تکه های ذهنی را بهم بچسبانم ؟
- قابلیت خوانایی ( readability ) - این کلمات چه معنایی میدهند ؟
سعی خواهم کرد در سری های بعدی مطالب هر بخش از ویژگی های محیط و زبان برنامه نویسی را که در بالا لیست شده بصورت مجزا توضیح دهم