;

محیط‌های آموزش برنامه‌نویسی

مقدّمه

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

برای کسی مثل من که برای صرفاّ علاقه‌ی شخصی خودش دلش می‌خواست وارد دنیای برنامه‌نویسی شود؛آن هم با پایتون؛ دانستن الگوریتم‌های مختلف مرتّب‌سازی اولویّت نبود. هر چند که اگر می‌خواستم زبان‌های سطح پایین را یاد بگیرم؛ باید چنین چیزهایی را یاد می‌گرفتم. حتّی بدتر این که وقتی که می‌خواستم چندتایی دانش آموز دوره‌ی اوّل متوسطه را که علاقه‌مند به برنامه‌نویسی را با این دنیا آشنا کنم، نوشتن برنامه‌ی «سلام دنیا!» و یا برنامه‌ای که اسمش را بخواند و بعد بگوید «سلام آقای …» برایشان چندان جذّاب نبود. به نظرم یک سری خلاء دانشی و محتوایی این وسط وجود داشت که قبل از هر آموزشی باید پر می‌شد. یعنی، دقیقاً مفاهیمی مثل ترتیب اولویّت عملگر‌های ریاضی، متغیّر‌ها، تفاوت انتساب و برابری، و … . این موارد در بیشتر محتواهای برنامه‌نویسی نه تنها پوشش داده نمی‌شد؛ بلکه، فرض بر این بود که مخاطب از قبل با آن‌ها آشناست، در حالی که برای بعضی‌ها احتمالاً این طوری نبوده.

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

ایده‌ی اوّلیّه

کارِل ربات

تصویر ریچارد پتیس

تا آن‌جایی که دیدم کارل ربات اوّلین محیط آموزش کد نویسی بوده که در سال ۱۹۸۱ ریچارد پَتیس؛ استاد برنامه‌نویسی دانشگاه کالیفرنیا، آن را ساخته است. در اصل، این محیط آموزشی، یک زبان برنامه‌نویسی رویه‌ای بود که برای ساخت آن از دستور زبان پاسکال الهام گرفته شده بود.

برای این محیط ۵ تا دستور پایه‌‌ای تعریف شده بود:

  • move
  • turnLeft
  • putBeeper
  • pickBeeper
  • turnOff

از آن‌جایی که محیط‌هایی بعدی از جمله رورپل و ریبرگ از این محیط ایده گرفته‌اند؛ این محیط‌ها هم مثل محیط کارل ربات شامل یک محیط بود که به یک سری خیابان‌ها و کوچه‌ها تقسیم بندی شده بود. در اصل این کوچه‌ و خیابان‌ها همان محور‌های x و y صفحه‌ی مختصات محیط بودند. بر عکس زبان‌هایی مثل C در آن دوره، کارل این امکان را داشت که مقدارهای بولین (بله/خیر) را بفهمد. با این ۵ دستور اصلی، فراگیر‌های برنامه‌نویسی دستور‌های بعدی و بیشتری را تعریف و با آن‌ها ربات را برای حل مسائل راه‌اندازی می‌کردند. این محیط پایه‌ای شد برای ساخت محیط‌های دیگر با زبان‌های برنامه‌نویسی و انسانی دیگر.

++Karel

تصویر محیط کارل ربات

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

محیط‌های دهه‌ی ۹۰ تا اوایل ۲۰۱۰

از ایده‌ی اوّلیه‌ی کارل ربات برای ایجاد محیط‌های آموزش برنامه‌نویسی برای زبان‌های مختلفی استفاده شد از جمله‌:

  • rbKarel محیطی بود که برای آموزش REALbasic استفاده ‌می‌شد. با این تفاوت که دستور زبان مورد استفاده برای بخش شرط‌ها و حلقه‌ها همان دستورهای BASIC بود.
  • یک نمونه‌ مشابه کارل محیط امیل ربات بود که که در آن ربات با صفحه کلید یا دستور‌های برنامه‌نویسی در یک محیط سه بعدی به حرکت در می‌آمد که در آن انواع مختلفی از اشیاء از دیوار و پنجره گرفته تا آب و علف وجود داشت.
  • Guido van Robot یا به اختصار gvr محیط مشابهی بود که در سال ۲۰۰۱ جف اِلکنِر به همراه چند نفر دیگر با ایده گرفتن از «کارل ربات» این بار برای پایتون ساختند. با این همه‌ پروژه‌ی gvr تا حدود زیادی به دستورها و سیستم «کارل ربات» شبیه ماند.
  • در سال ۲۰۰۴ آندره روبرج پروژه‌ی ruple را شروع کرد که مشابه سیستم GvR بود. در عین شبیه بودن دستور و ساختار دو پروژه به هم، rurple بهبود‌های زیادی از نظر را از نظر گرافیکی داشت.
  • چند سال بعد پروژه‌ی rurple-NG ساخته شد، چون به عقیده‌ی سازنده با همه‌ی بهبودها جدا از این که محیط رورپل و در‌س‌‌های آن ناقص بودند؛ هنوز هم از نظر منطقی و طرّاحی برنامه ایراد داشتند و کمی دور از واقعیّت بودند. با این همه، به نظر من این نسخه‌ی بهبود یافته نتوانست مثل چیزی که آندره روبرج ساخته بود موفّق باشد. دلیل آن هم نداشتن درس‌های متناسب با رابط کاربری جدید بود. هر چند که تمرین‌های این محیط در این وبگاه موجود است
  • آندره روبرج در سال‌های بعد با محیط ریبرگ را برای اجرا در مرورگر با استفاده از برایتون بازنویسی کرد. این بازنویسی همراه شد با درس‌های بیشتر و جدیدتر.

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

محیط‌های دهه‌ی گذشته

در سال‌های ۲۰۰۹ به بعد تا زمان حاضر محیط‌های آموزش برنامه‌نویسی هم در دنیای وب گسترش یافته و هم در دنیای موبایل. نکته‌ی جالب این که برخی محیط‌ها مانند RoboMind، CodeHS، اسکوییک، ماما، آلیس و … شبیه‌سازی محیط سه‌بعدی کامل برای اجرا کد‌هاست. صد البتّه این محیط‌ها به نسبت محیطی مانند ریبرگ جذاّب‌تر هستند. ولی برای پروژه‌هایی مانند ریبرگ ساخته‌ی ارتش‌های تک نفره در زمان فراغت هستند و به رایگان در اختیار قرار می‌گیرند، انتظار بیش از این نمی‌توان داشت.

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

خلاصه و نتیجه

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

منابع و مجوّز استفاده

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

در دست تکمیل …

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *