زبانهای برنامه نویسی مخصوص کودکان
آیا تا به حال اندیشیدهاید که کودکان ما چگونه باید با علم کامپیوتر آشنا شوند؟ چیزی بیش از توانایی انجام بازیهای کامپیوتری؟ دنیای آینده دنیای دیجیتال و کامپیوتر است. دنیای فناوری، دنیای اطلاعات. دنیایی که در آن اشخاصی در صدر قدرت خواهند بود که توانایی استفاده از این تکنولوژی را داشته باشند. اما چگونه باید این علم را به کودکان خود بیاموزیم؟ واضح است که برای آموختن نحوه استفاده بهتر از هر وسیلهای باید از چگونگی عملکرد آن اطلاع داشته باشیم. کامپیوترها به وسیله برنامه و نرم افزارها وظایف خود را انجام میدهند. بنابراین شاید یک راه حل خوب آموزش برنامه نویسی به کودکانمان باشد. شاید آنها هرگز برنامه نویسی را به عنوان شغل آینده خود انتخاب نکنند، اما برای درک چگونگی عملکرد یک کامپیوتر، اینکه کامپیوتر چیزی بیش از یک دستگاه کند ذهن نیست که تنها کاری که میتواند انجام دهد اجرا کردن دستوراتی است که انسانها برایش تعریف میکنند، یکی از بهترین انتخابها آموختن برنامه نویسی به کودکان میباشد.
اما سوال اصلی این است که «کدام زبان؟» زبانهای سطح پایین برای یادگیری نحوه عملکرد یک کامپیوتر بسیار مناسب هستند. اگر شخصی چنین زبانی را فرا گیرد علاوه بر درک بهتر از کامپیوتر، به درک بهتری از زبانهای برنامه نویسی خواهد رسید. پس آیا زبانی همانند اسمبلی برای آموزش به کودکان مناسب است؟ واقعیت این است که کودکان باید از کاری که انجام میدهند لذت ببرند تا به ادامه دادن آن تشویق شوند. برنامه نویسی با زبان اسمبلی با وجود ساده بودن و داشتن دستورات کم، برای آموزش برنامه نویسی به کودکان مناسب نیست. چرا که نمیتوان کارهای جذابی همانند ساختن بازیهای کوچک و ساده را به راحتی با آن انجام داد. بنابراین آیا زبانهای سطح بالاتری همانند جاوا یا پایتون انتخاب مناسبتری است؟ با استفاده از چنین زبانهایی نیز کودک قبل از اینکه توانایی نوشتن برنامهای کاربردی و جالب را بدست بیاورد باید به سطح بالایی از توانایی برسد. توجه داشته باشید که حتی اگر کودک شما بخواهد در آینده برنامه نویس شود نیز باید ابتدا مفاهیم اولیه را به خوبی درک کرده باشد که این امر نیز بدون احساس لذت از بازی با کد میسر نخواهد شد.
خوشبختانه زبانهای برنامه نویسی متعددی برای این منظور پدید آمدهاند. این زبانها علاوه بر سادگی آموزش و داشتن قابلیتهای یک زبان سطح بالا، دارای محیطی گرافیکی میباشند. بنابراین کودکان میتوانند نتیجه کار خود را به صورت گرافیکی و در همان لحظهای که خطوط کد را مینویسند مشاهده کنند. به این ترتیب محیطی جذاب برای کودکان فراهم میآید تا از یادگیری برنامه نویسی لذت ببرند. هر چند این زبانها هرگز برای نرم افزارهای کاربردی در دنیای واقعی به کار نخواهند رفت، اما برای آموزش مفاهیم برنامه نویسی کامپیوتر به کودکان بسیار مناسب میباشند. در این مقاله تعدادی از این زبانها و محیطهای برنامهنویسی موجود برای آنها معرفی خواهند شد. البته تعداد این زبانها بیشتر از آن است که در یک مقاله برسی شود. زبانهای معرفی شده در اینجا بر اساس تجربیات شخصی نگارنده بهترینها است. و البته تمام آنها به غیر از یکی، آزاد هستند.
برای یادگیری نحوه عملکرد یک کامپیوتر و همچنین زبانهای برنامه نویسی، استفاده از نرم افزارهای آزاد اجتناب ناپذیر است. چرا که برای یادگیری بهتر، کودکان باید کارهای انجام شده تـوسط دیگران را مشاهده کنند و از آنها سرمشق گیرند. از طرفی دیگر، مدارس نیز میتوانند با استفاده از نرم افزار آزاد علاوه بر کاهش هزینهها (حتی در کشورهای توسعه یافته نیز مدارس با کمبود بودجه مواجه هستند) فرهنگ به اشتراک گذاری نرم افزار و دانش را از همان کودکی به فرزندان ما بیاموزند. بـرای بحث بیشتر در مورد لزوم استفاده از نرم افزار آزاد در مدارس شما را به مقاله ریچارد استالمن ارجاع میدهیم.
محیطهای برنامه نویسی معرفی شده در این مقاله، به غیر از Scratch، آزاد هستند. هر چند محیط برنامه نویسی scratch آزاد نیست، اما روح همکاری و به اشتراک گذاری نرم افزار در آن وجود دارد. چرا که برای منتشر کردن پروژههای نوشته شده در این محیط، کد آن نـیـز بـاید الزاما منتشر گردد. بنابراین با وجود عدم آزاد بودن، scratch به عنوان یکی از محیطهای برنامه نویسی خوب در این مقاله معرفی شده است. انتخاب نوع زبان به پارامترهای زیادی از جمله سیستم عامل مورد پشتیبانی، اجازهنامه نرم افزار، قیمت آن و همچنین شخصیت کودک شما بستگی دارد. بنابراین انتخاب را به عهده خودتان میگذاریم. لازم به ذکر است که هر چند تعدادی از این زبانهای برنامه نویسی ترجمه نیز شدهاند، ولی تا کنون زبان فارسی مورد پشتیبانی آنها نبوده است. بنابراین کودک شما باید تا حدی با زبان انگلیسی یا حداقل خواندن حروف و اعداد آن آشنایی داشته باشد. که البته این امر با توجه به کاربرد گسترده زبان انگلیسی در زندگی امروز، میتواند در آینده برای کودک شما مفید باشد.
Logo
زبان لوگو در سال ۱۹۶۷ با هدف آموزش پدید آمد. لوگو ساختاری همانند Lisp دارد و میتوانید آن را Lisp بدون پرانتز در نظر بگیرید. لوگو در حالت بصری لاکپشتی است که مدادی به دست دارد. برنامه نویس با نوشتن دستورات نحوه حرکت این لاکپشت را کنترل کرده و میتواند اشکال مختلفی را پدید آورد. استفاده از لاکپشت به دلایل تاریخی صورت میگیرد. در سال ۱۹۶۹ موسسه تحقیقات و فناوری ماساچوست (MIT) رباتی به شکل لاکپشت طراحی کرد که به وسیله زبان لوگو کنترل و هدایت میشد. لوگو از آن زمان تا به حال تغییر چندانی نکرده است. البته به دلیل نبود استاندارد مشخصی برای این زبان، انواع گوناگونی از آن با دستورالعملهای تا حدودی متفاوت وجود دارد. تا سال ۲۰۰۷ بیش از ۱۷۰ پیاده سازی مختلف از این زبان پدید آمده است.
یکی از محیطهای برنامه نویسی خوب برای این زبان که با هدف آموزش برنامه نویسی به کودکان طراحی شده است، Kturtle میباشد. Kturtle بخشی از بسته آموزشی محیط گرافیکی KDE بوده و با مجوز GPL منتشر میگردد. یکی از قابلیتهای خوب Kturtle توانایی ترجمه پذیری آن به زبانهای مختلف است. به این ترتیب با ترجمه دستورات به زبان مادری برنامهنویس، استفاده از آن سادهتر میشود. البته زبان برنامهنویسی Kturtle که اسکریپت لاکپشت نامیده میشود کاملا زبان لوگو نیست و بر پایه آن ساخته شده است و زبان بسیار مناسبی برای آموزش به کودکان میباشد. شکل ۱ محیط Kturtle را بعد از اجرای یک قطعه کد نمایش میدهد. برای اطلاعات بیشتر میتوانید به سایت رسمی Kturtle مراجعه کنید.
Scratch
زبان برنامهنویسی Scratch اولین بار در اوایل سال ۲۰۰۷ پدیدار شد. با وجود عمر کوتاه آن، این زبان توانسته است طرفداران بسیاری پیدا کند. در حال حاضر بیش از ۶۸۰۰۰ نفر به عضویت وب سایت رسمی آن در امدهاند و در حدود ۷۴۰۰۰ پروژه به این زبان نوشته شده و بر روی وب سایت آن منتشر شده است. این افراد از سرتاسر جهان عضو این پروژه شدهاند. بنابراین scratch به زبانهای زیادی ترجمه شده است. در حال حاضر این زبان در مدارس بسیاری در سرتاسر جهان به عنوان اولین زبان برنامه نویسی تدریس میگردد.
scratch توسط تیم کوچکی از محققان در آزمایشگاه MIT Media طراحی شد. هدف این پروژه توسعه زبانی است که بتواند به عنوان اولین زبان برنامه نویسی به یک شخص آموزش داده شود. بنابراین برای آموزش به کودکان و نوجوانان زبان بسیار مناسبی است. کودکان با استفاده از scratch میتوانند به سادگی بازیهای ویدئویی، موسیقی و یا انیمیشن بسازند.
یکی از قابلیتهای scratch توانایی ترکیب پروژههای مختلف و اشیاء ساخته شده به وسیلهی آن برای بوجود آوردن پروژههای جدید میباشد. شعار scratch «تخیل کن-برنامه بنویس-به اشتراک بگذار» است. به اشتراک گذاری برنامهها بخش مهمی از پروژه است. چرا که کودکان میتوانند علاوه بر مشاهده کار دیگر افراد، از پروژههای آنها به عنوان بخشی از برنامهی خود استفاده کنند. تنها روشی که شما میتوانید برنامه خود را در اختیار دیگران قرار دهید، منتشر کردن کد منبع آن است. برنامههای نوشته شده به زبان scratch میتوانند مستقیما از درون خود IDE به وب سایت رسمی آن ارسال شوند. همچنین یک applet به زبان جاوا با نام scratch player وجود دارد که میتواند برنامههای scratch را تقریبا در تمام مرورگرهای وب اجرا کند.
در حال حاضر شما میتوانید IDE این زبان را به رایگان از وب سایت رسمی آن دریافت کنید، یا در وب سایت آن به صورت آنلاین و بدون دانلود کردن چیزی، از scratch استفاده کنید. شکل ۲ محیط scratch را که در سیستم عامل MacOSX اجرا شده است، نمایش میدهد. همچنین کتاب بسیار خوبی در زمینه آموزش این زبان از پروژه کتاب ویکی قابل دریافت است.
Etoys
ایده اولیه Etoys توسط آلن کی (Alan Kay) مطرح شد و هم اکنون کل پروژه نیز توسط او هدایت میشود و اسکات والاس (Scott Wallace) نیز توسعه دهنده اصلی آن است. Etoys تاثیر زیادی بر روی پروژه scratch به جا گذاشته است.
Etoys محیطی دوستانه برای کودکان فراهم میآورد تا بتوانند از کار با کامپیوتر خود لذت ببرند. Etoys تنها یک محیط برنامهنویسی برای کودکان نیست، بلکه یک Desktop کامل به وجود میآورد که بر روی اکثر پلات فرمها قابل اجرا است. از آنجایی که این نرمافزار متنباز است، بسیاری از بخشهای آن توسط کاربران نهایی (کودکان و نوجوانان) به وجود آمدهاند. Etoys محیطی چند رسانهای همراه با زبان اسکریپت نویسی قوی، که توانایی پشتیبانی از برنامه نویسی شیء گرا را دارا میباشد، به همراه اشیاء بسیاری همانند گرافیکهای دوبعدی، سه بعدی، صوت، انیمیشن و حتی صفحات وب پدید آورده که تمامی آنها توسط کاربران نرمافزار به وجود آمدهاند. یکی از قابلیتهای منحصر به فرد Etoys توانایی به اشتراک گزاری نرمافزارها و پروژههای نوشته شده با آن به صورت Real-Time از طریق اینترنت میباشد که به کودکان این اجازه را میدهد تا با همکاری یکدیگر پروژهای را تکمیل و به اتمام برسانند. در حال حاضر Etoys در بسیاری از کشورها از جمله ایالات متحده آمریکا، کشورهای اروپایی، برزیل، کلمبیا، ژاپن، کره، هند و کشورهای دیگر استفاده میگردد. مستندات آموزشی و راهنماهای زیادی برای کودکان و آموزگاران وجود دارد. آموزشها و مثالهای متنوع بسیاری در سایت رسمی، و همچنین در وب سایت پروژه «هر کودک، یک لپتاپ» قابل دسترسی است.
Alice
آلیس زبان برنامه نویسی متنباز و شیء گرا است که به همراه IDE ارائه میشود و تحت نسخهای از اجازه نامهی BSD منتشر میگردد. آلیس بر اساس جاوا توسعه پیدا کرده است و محیطی سه بعدی را پدید میآورد که کاربران میتوانند به وسیله Drag-And-Drop به سادگی اشیاء سه بعدی و انیمیشن پدید آورند. هدف اصلی آلیس مقابله با سه مشکل اساسی است که در اغلب زبانهای آموزشی وجود دارد: ۱) اکثر زبانها برای به وجود آوردن کدهای قابل استفاده پدید آمدهاند که خود موجب به وجود آمدن پیچیدگی میشود. اما آلیس منحصرا بر روی آموزش برنامهنویسی تمرکز داشته است. ۲) آلیس کاملا با IDE خود پیوند خورده است. بنابراین نیازی به حفظ کردن گرامر زبان نیست. هر چند که از برنامه نویسی شیء گرا و بر اساس رویداد پشتیبانی میکند. ۳) آلیس علاوه بر آنکه محیطی برای آموزش برنامه نویسی برای نوجوانان پدید میآورد، میتواند به عنوان یک ابزار داستان سرا برای سرگمی کودکان نیز استفاده شود. به این معنی که کودکان کوچکتر نیز میتوانند به وسیله Drag-And-Drop داستانهایی با گرافیک سه بعدی پدید آورند.
در حال حاضر نسخه سوم آلیس توسط Electronic Arts در حال توسعه است و از مدلهای گرافیکی بازی محبوب The Sims 2 در آن استفاده خواهد شد. در اواخر ۲۰۰۸ نسخه آلفا آن و در سال ۲۰۰۹ نیز اولین نسخه بتا منتشر خواهد شد.
آلیس قابلیت اجرا بر روی ویندوز، MacOSX و گنو/لینوکس را دارا میباشد. برای اطلاعات کاملتر میتوانید به وبسایت رسمی آلیس مراجعه کنید.
BASIC-256
نام قبلی این پروژه kidBASIC (بیسیک کودکان) بود که به منظور جلوگیری از تشابه اسمی با پروژه دیگری به همین نام، به BASIC-256 تغییر نام داد. این زبان بر پایه زبان بیسیک توسعه یافته و همراه محیط گرافیکی ارائه میشود که به کودکان این اجازه را میدهد تا با استفاده از دستورات آن، اشکالی را ترسیم نمایند. همچنین از دستورات ساختاری، همانند If/Then، for/next و روالها پشتیبانی میکند تا کودکان بتوانند اصول پایه برنامه نویسی را فرا گیرند. BASIC-256 نرم افزاری آزاد بوده و تحت اجازه نامه GPL منتشر میگردد.
توسعه دهندگان BASIC-256 بر این اعتقاد هستند که برای آموزش اصول پایه کامپیوتر به کودکان، باید از زبانهای سطح پایین استفاده نمود و بعد از زبان اسمبلی، زبان بیسیک پایینترین سطح را دارا بوده و برای آموزش به کودکان ایدهآل است. بنابراین این پروژه با اضافه کردن محیط گرافیکی به این زبان، آن را برای کودکان جذابتر نموده است. در وب سایت رسمی پروژه بحث جالبی در خصوص چرایی استفاده از این زبان وجود دارد که مطالعهٔ آن خالی از لطف نخواهد بود. همچنین آموزشهای کاملی را میتوانید در وب سایت آن پیدا کنید. شکل ۳ محیط این نرم افزار را درحین اجرای یک کد نمونه نمایش میدهد.