Learnable Programming چیست و چه مزایایی برای برنامه نویسان دارد؟

Bret Victor یک متخصص تجربه ی کاربری و برنامه نویس حرفه ای است که مدت زمانی هم در شرکت اپل مشغول به کار بوده است اما امروزه وی را بیشتر به خاطر ایده ی Learnable Programming یا «راستش معادلی برای آن در زبان فارسی نیست!» در دنیای برنامه نویسی می شناسند (مشاهده ی سایت برد ویکتور.) به طور کلی، Bret بر این باور است که محیط های برنامه نویسی جدیدی می بایست خلق کرد که از آن طریق برنامه نویسان بتوانند با شرایط متفاوتی اقدام به برنامه نویسی کنند. پس از مطرح شدن ایده ی Learnable Programming هم یکسری اپلیکیشن های برنامه نویسی به بازار عرضه شدند که از آن جمله می‌توان به Alive و Light Table اشاره کرد که به صورت کاملاً عملی، این ایده ی نوین را پیاده‌سازی کرده اند. در این مقاله با سکان آکادمی همراه باشید تا بیشتر با این مفهوم آشنا شوید.

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

- ترغیب برنامه نویسان به روش‌های فکر کردن حرفه‌ای
- توانمندسازی برنامه نویسان در جهت مشاهده ی خروجی کدهای خود در لحظه

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

از جمله مزایای یک سبک جدید برنامه نویسی می‌توان به موارد زیر اشاره کرد:

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

برخی مشکلات Learnable Programming
اگرچه این رویکرد جدید دارای مزایای بسیاری است اما این در حالی است که نقاط ضعفی هم دارد. به عنوان یکی از اصلی‌ترین چالش های یک رویکرد نوین می‌توان به این مسأله اشاره کرد که در اینجا تمرکز روی خروجی دو بعدی است. در پاسخ به این سئوال که مشکل خروجی 2D یا دو بعدی چیست؟ بایستی گفت که «همه چیز را خیلی ساده جلوه می دهد!» و این در حالی است که خیلی از نرم افزارها به این سادگی که ما فکر می کنیم نیستند.

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

چالش دیگر توابعی است که آرگومان های ورودی پیچیده‌ای برای اجرا نیاز دارند و در اینجا است که Learnable Programming باز هم کم می آورد.

function myFunction() {
    var person = Person();
    person.Name = "Josh Varty"
    person.Address = "123 Code Connect Street, Waterloo ON"
    var result = DoTaxes(person);
}

به طور مثال، در قطعه کد بالا، این رویکرد جدید برنامه نویسی از کجا متوجه خواهد شد که person چیست؟ حال اگر کانستراکتور داشته باشیم اوضاع چگونه خواهد شد؟ اگر تابع ما به اشیاء دیگری برای اجرا نیاز داشته باشد چه؟ حال اگر این شیئ فقط از طریق داده‌های دیتابیس ایجاد شود چطور؟ و بسیاری چالش دیگر …

این‌ها سؤالاتی که تحقیقات صورت گرفته در Learnable Programming آن‌ها را نادیده گرفته اند اما امیدواریم که به زودی پاسخی برای این چالش ها پیدا شوند. نظر شما چیست؟ آیا شما هم با این سبک برنامه نویسی بهتر یاد می گیرید یا ترجیح می دهید که به روش سنتی به یادگیری این حرفه بپردازید؟ نظرات خود را با سایر کاربران به اشتراک بگذارید.

Working toward Bret Victor's "Learnable Programming"

0


بهزاد مرادی

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






  • حامد ارغوان در تاریخ: 1394/06/03

    مثلا برنامه نویسیِ قابل یادگیری :))

از طریق این فرم، می توانید بدون ثبت نام نظر دهید و یا اگر قبلا ثبت نام کرده اید، با ورود ناحیه ی کاربری می توانید علاوه بر ثبت نظر، به مدیریت نظرات خود نیز بپردازید.
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)
(فیلد اجباری)