מאמא היא שפת תכנות לימודית[1][2] לבניית משחקים ואנימציות בתלת ממד. מאמא נבנתה במטרה לאפשר לתלמידי בתי"ס יסודיים ותיכוניים ללמוד פיתוח תוכנה באופן פשוט, קל ומהנה.
(This product includes software developed by Carnegie Mellon University)
מאמא היא שפת תכנות וסביבת פיתוח המיועדת לסייע לתלמידים בצעדיהם הראשונים בעולם התכנות. מאמא מאפשרת לתלמידים לתכנת ללא הקשיים הקיימים בדרך כלל בסביבות תכנות רגילות, כגון הצורך בהגדרת טיפוסים, טיפול בשגיאות תחביר, טיפול בשגיאות זמן ריצה, וכו'. בסביבת הפיתוח הנוכחית הוחלף קידוד התכנית ועריכתה ב"גרור והשלך": כדי להכניס הוראות - משפטי בקרה ("אם", "אחרת", לולאת "לכל"), קריאת/כתיבת משתנים, קריאות לפונקציות - מבצעים גרירה שלהם לתוך איזור העריכה. באופן דומה, מאמא מספקת גם מנגנון טבעי ואינטראקטיבי לטיפול באירועים, מנגנון הכרחי בפיתוח משחקים.
בעוד מאמא היא שפת פיתוח מונחית עצמים (Object Oriented) אמיתית, הכוללת תמיכה בעקרונות עצמים כגון כימוס (Encapsulation), פולימורפיזם והימשכות (Persistency), סביבת הפיתוח הגרפית בנויה לתמוך בעיקר בתכנות מבוסס עצמים (Object-based Programming). סביבת הפיתוח מספקת תמיכה בכימוס ובהימשכות, אך לא בירושה ובפולימורפיזם. ההחלטה אם ללמד פולימורפיזם כבר בשלבי הלימוד הראשונים בתכנות צריכה להתבצע על ידי המדריך או הגוף החינוכי האחראי על תכנית הלימוד. בכל אופן, ניתן לבנות ולהריץ תכניות מונחות עצמים היישר במאמא, על ידי עריכה טקסטואלית שלהן והרצתן כתכניות מאמא עצמאיות.
בניית אנימציות ומשחקים במאמא מחולקת לשני שלבים עיקריים:
בניית הבמה - יצירת הרקע והכנסת עצמים ודמויות שיהיו זמינים לקוד התכנית. שלב זה מבוצע בדרך כלל באופן אינטראקטיבי על ידי גרירת עצמים מספריית העצמים לתוך חלון העולם, אם כי חלקים מסוימים משלב זה ניתנים לביצוע גם על ידי הוראות התכנית.
עריכת התכנית - בניית התכנית על ידי עורך התכנית תוך גרירת הוראות לתוך איזור העורך וקביעת פרמטרים שונים.
בהתאם לכך, סביבת הפיתוח הגרפית כוללת שני מצבי עריכה בסיסיים: מצב עריכת במה ומצב עריכת תכנית. במצב עריכת במה (המתקבל על ידי לחיצה על הכפתור "+" שבתחתית חלון העולם) חלון העולם מוגדל, בחלון התחתון מוצגת ספריית העצמים לגרירה ושיבוץ בבמה והחלון השמאלי כולל פקדי עזר לעריכת הבמה, בעוד שבמצב עריכת התכנית (ברירת המחדל) החלון התחתון הוא חלון עריכת הוראות התכנית והחלון השמאלי הוא חלון עריכת האירועים בתכנית. הבמה, העצמים והאירועים הקיימים בקובץ העבודה הנוכחי נקראים עולם. עולם ניתן להרצה, לשינוי ולשמירה כקובץ. בכל רגע נתון, קיים עולם יחיד בסביבת הפיתוח, העולם הנוכחי. אפשר לפתוח עולמות דוגמא על ידי בחירה בתפריט 'קובץ' ואחר כך 'פתח', ולבחור מספריית הדוגמאות קובץ כלשהו.
עצם במאמא יכול להכיל נתונים ופעולות. הנתונים נקראים תכונות והפעולות נקראות מתודות. כמוסכמה בסביבת הפיתוח, מתודות נקראות פונקציות כאשר הן מחזירות ערך. מפרט שלם של העצמים, המתודות והפונקציות התקניים בסביבת הפיתוח נמצא כאן. עצם עשוי להיות מורכב מתתי חלקים. עץ העצמים הנמצא בצד הימני עליון בסביבת הפיתוח מציג את העצמים הקיימים כרגע בעולם. בחלון זה ניתן לבחור בעצם מסויים ולפתוח אותו על ידי הקשה על הסימן "+" שלצידו - תתי החלקים שלו יוצגו בצורה היררכית.
שפת התכנות מאמא
אחד המחסומים בפני הוראת מקצועות תכנות בגיל צעיר בביה"ס הוא שפתה של שפת התכנות - אנגלית. מלים שמורות בשפה, שמות עצמים/משתנים/מתודות, הודעות שגיאה של המהדר, עזרה, ממשקי משתמש - כל אלה כתובים בדרך כלל בשפה האנגלית ומציבים בפני הלומד הצעיר מכשול שפה כפול. מאמא היא שפת תכנות עברית פשוטה שפותחה על ידינו במטרה לאפשר לתלמידים צעירים ללמוד לתכנת ללא מחסום שפה. מאמא היא שפת תכנות עילית מונחית עצמים, הכוללת יכולות פרגמטיות ודינמיות.
לפני תחילת ההתקנה, יש לוודא שהמחשב אליו מבוצעת ההתקנה הוא בעל דרישות הסף הבאות:
מערכת הפעלה Windows XP / Vista / 2000 / ME
זכרון מינימום: 512MB
לאחר הורדת התוכנה, יש להריץ את תכנית ההתקנה ולעקוב אחר ההוראות המוצגות.
עזרה/תיעוד
מערכת העזרה כוללת מדריך למתחיל, מערכי הדרכה אינטראקטיביים, תכניות דוגמא, מפרט של השפה ושל סביבת הפיתוח ופורום להחלפת שאלות/תשובות/רעיונות.
מדריך למתחיל
מערכת מאמא היא מערכת המקיפה מגוון של נושאים: ממשק משתמש עשיר, אנימציית תלת ממד, שפת תכנות מונחית עצמים, ספריית עצמים ועוד. בכדי להשתלט על מורכבות זו, מומלץ לגשת באופן שיטתי ללימוד הסביבה והשפה:
כשלב ראשון, מומלץ להתנסות במאמא כמשתמש: מיד עם הרצת מאמא לראשונה ניתן לפתוח עולמות דוגמא מתוך דיאלוג האתחול ולהריץ אותם. כדאי להתבונן בעולמות בזמן הריצה, לנסות לשים לב לחלונות השונים שבסביבת הפיתוח, לנסות לבחור עצמים, להתבונן בפרטיהם, וכו'.
בשלב הבא, קיימים מערכי הדרכה אינטראקטיביים הכוללים לימוד קל בנושאים שונים: החל מהרצת עולמות קיימים, ביצוע שינויים במתודות/אירועים שלהם וכלה ביצירת עולמות. מומלץ לעבור על מערכי ההדרכה על פי סדרם המספרי.
להבנת עקרונות האנימציה, מומלץ לקרוא ולבצע את המדריך לאנימציה בסיסית. מדריך זה מספק עזרה מצוינת למתכנת המתחיל במאמא.
למתקדמים קיים מדריך מתקדם - אגדת קופים . מדריך זה מספק הבנה מעמיקה של היישום וחלוקתו למודולים, הבנה טובה יותר של שפת התכנות, אנימציה מתקדמת ועבודה עם המצלמה.
תכניות הדוגמה העשירות שבספרית הדוגמאות מספקות מידע רב ערך נוסף (למעשה חלק מערכות ההדרכה מבוססות על דוגמאות אלו או על גרסה בסיסית שלהן).
המפרט המצורף מספק עזרה מידית להכרת מרכיבים תקניים: עצמים, מתודות, פונקציות, אירועים, שדות וכו'.
פורום מאמא הוא מקור נוסף למידע רב ערך: ניתן לשאול שאלות או לספק תשובות, ניתן להחליף קבצי עצמים וקבצי עולמות מעניינים וכן ניתן להעלות רעיונות בכל נושא שהוא.
מערכי הדרכה אינטראקטיביים
מערכי ההדרכה האינטראקטיביים מספקים דרך מהירה ופשוטה ללמוד את עקרונות מאמא וסביבת הפיתוח. בכדי להפעיל מערך הדרכה יש לבחור בתפריט 'קובץ'-> 'פתח', ומהדיאלוג המוצג לבחור במערך הדרכה מתוך מערכי ההדרכה המוצעים. יש לשים לב לכך שמערכי ההדרכה ממוספרים באופן עולה על פי נושאי הלימוד, מומלץ לעקוב אחר סדר זה. כל מערך שיעור מנחה את הלומד באופן אינטראקטיבי, צעד אחר צעד, בבניית עולמות ותכניות.
לשאלות בנושאים נוספים ולקריאת חילופי רעיונות כדאי לגשת לפורום מאמא.
למדריך
מאמא נבנתה מלכתחילה ככלי שרת בהוראת מדעי המחשב, וככזו, מלבד היותה מתאימה לתלמידים צעירים ובוגרים כשפת תכנות ראשונה, היא גם כוללת כלי עזר חשובים למדריך.
סגנון התכנות הכללי
קיימים שני סגנונות תכנות עיקריים בסביבת הפיתוח:
סגנון מאמא - סגנון תכנות בדומה לשפות תכנות מודרניות: שמות עצמים, משתנים ומתודות הם ללא רווחים, סוגריים תוחמים את רשימת הפרמטרים בהגדרת מתודה ובקריאה לה. זהו הסגנון המומלץ על ידינו למרבית המקרים, הואיל והוא מפנים מושגים תכנותיים חשובים כגון שמות משתנים וקריאה לפונקציות כפי שהם מקובלים כיום בשפות תכנות מודרניות.
סגנון אליס - סגנון פשוט: שמות עצמים, משתנים ומתודות יכולים להכיל רווחים, אין צורך בסוגריים לתחימת הפרמטרים בהגדרת מתודה ובקריאה לה. סגנון זה מומלץ כאשר התלמידים הם צעירים מאוד, או כשלב מקדים לפני מעבר לסגנון מאמא - כדי לספק "נחיתה רכה" בשלב הראשון.
לדוגמא, אם נתון עצם בשם 'מוקי', והוא כולל את המתודה 'לך', ניתן להפעיל אותה כך: סגנון אליס:
מוקי.לך10, שמאלה
סגנון מאמא:
מוקי.לך(10, שמאלה)
ניתן לבחור את הסגנון המתאים מהתפריט 'עריכה'/'העדפות' (יש להפעיל את מאמא מחדש לעדכון הסגנון החדש). בחירת הסגנון גם היא החלטה חשובה שצריך לקחת הגורם האחראי לתכנית הלימוד, תוך התאמה לגילאי התלמידים ולרמת הידע שלהם. סגנון אליס פשוט יותר להבנה, ולכן מומלץ עבור תלמידים צעירים בשלבי הלימוד הראשוניים. בשלב מאוחר יותר, סגנון מאמא מתאים יותר להפנמת סגנונות תכנות מודרניים.
(למורים המעוניינים לעבוד עם סגנון "אליס", ניתן לקבל כאן את המפרט ואת תכניות הדוגמא בסגנון זה).
בניית מערכי הדרכה אינטראקטיביים
כמדריך, באפשרותך ליצור מערכי הדרכה אינטראקטיביים לשימוש תלמידיך. זוהי דרך נוחה ויעילה ללימוד, ומועדפת בדרך כלל על תלמידים מאשר בניית תכנית על פי הוראות ידניות. במערכי הדרכה אלו באפשרותך לקבוע בכל שלב מה מוצג לתלמיד ומה התלמיד מתבקש לבצע בכל שלב, כך שמעבר לשלב הבא מותנה בסיום השלב הקודם בהצלחה. במשך כל הפעלת ערכת ההדרכה מוצג היישום דרך מסך זכוכית כהה המונע גישה לממשק המשתמש בכללותו ומאפשר גישה רק למרכיבים שהוגדרו בערכת ההדרכה. הקלק כאן לעזרה בנושא שימוש בעורך מערכי ההדרכה.
↑ משרד החינוך התרבות והספורט, המינהל למדע וטכנולוגיה הפיקוח על הוראת מדעי המחשב, המזכירות הפדגוגית, המנהל הפדגוגי האגף לתכניות לימודים, (1999). תכנית לימודים במקצוע מדעי המחשב לחטיבה העליונה בבתי הספר הממלכתי והממלכתי דתי. http://www.csit.org.il/NCCS/TestProg/Mavo.html
לקריאה נוספת
Tucker, A., Deek, F., Jones, J., McCowan. D., Stephenson, C., & Verno, A. ACM K–12 Task Force (2003). A Model Curriculum for K-12 Computer Science. Final Report of the ACM K-12 Task Force Curriculum Committee. Retrieved February 20, 2007. http://www.csta.acm.org/Curriculum/sub/CurrFiles/K-12ModelCurr2ndEd.pdf
IFIP – Unesco (1998). Technical committee3 (TC3) – ICT and Education. Retrieved March 16, 2007. http://www.ifip-tc3.net
"Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers", Kelleher, C. and Pausch, R., ACM Comput. Surv. 37, 2 (2005)
Gurbiel, E., Hardt-Olejniczak, G., & Kolczyk, E. Schollmeyer, M. (1996). Computer programming in high school vs. college. Proceedings of the SIGCSE 1996 Conference, Philadelphia, PA, USA, 378–382.
Hazzan, O., & Lapidot, T. (2004). The practicum in computer science education: Bridging gaps between theoretical knowledge and actual performance, inroads – the SIGCSE Bulletin, 36(4), 47-51.
Hazzan, O., Adams, E., Loftsson, H., & Young, A. (2003). International perspective of women and computer science, Proceedings of SIGCSE 2003 - The 34th Technical Symposium on Computer Science Education, Reno, Nevada, USA, 45-46.
"Making Computer Games and Design Thinking: A Review of Current Software and Strategies", Hayes, E. and Games, A., Games and Culture (2008). 3: 309
Graham, S., & Latulipe, C. (2003). CS Girls Rock: Sparking interest in computer science and debunking the stereotypes, Proceedings of the SIGCSE 2003 Conference, Reno, Nevada, USA, 322–326.
Guindon, R., Curtis, B., & Krasner, H. (1987). A Model of cognitive processes in software design: An analysis of breakdowns in early design activities by individuals. Technical Report No. STP-283-87. Austin, TX: Microelectronics and Computer Technology Corporation.
Henderson, P. H., De Palma, O., Almstrum, V. L., Hazzan, O., & Potter Kihlstrom, K. (2002). Women, mathematics and computer science, Proceedings of the 33rd Technical Symposium on Computer Science Education SIGCSE 2002, Covington, Northern Kentucky - The Southern Side of Cincinnati, USA, 131-134.
Kim, J., & Lerch, F. J. (1992). Towards a model of cognitive process in logical design: Comparing object-oriented and traditional functional decomposition software methodologies. Proceedings of the SIGCHI Conference on Human Factors in Computer Systems, 489-498, Monterey, California.