שפת התכנות המתוקה בעולם
היום התפרסמה בכלכליסט כתבה שלי על סקראץ', סביבת פיתוח תוכנה לילדים שמלמדים עכשיו גם בבתי ספר בישראל. בכתבה הייתי צריכה להיות מאוזנת ומעונבת, אבל בבלוג שלי אני יכולה לכתוב את דעתי האמיתית על התוכנה, כדלהלן:
סקוויייייייייייייייייייייי זה כזה חמוווווווווווווווווווווד!!1
רגע של נוסטלגיה: כשהייתי קטנה והתחלתי ללמוד בייסיק מהחוברות הזכורות לטוב של "מחשבת", גיליתי כמה דברים.
1. תכנות זה קסם. מדמיינים משהו, מוצאים את המילים הנכונות, אומרים אותן, ואז זה קורה.
2. אתגרים בתכנות הם מסוג החידות שהכי כיף לפתור, כי לפתרון תמיד יש הגיון פנימי מושלם.
3. כל תוכנה שכותבים היא צעצוע שאפשר לשחק איתו לנצח — להוסיף דברים, להוריד דברים, לשנות את הצבע של הרקע. וגם כשעוברים הלאה אפשר לחזור ולשלב את התוכנה הקודמת בצעצוע החדש.
בקיצור, זה היה תחביב מאוד יצירתי ומספק, ונדמה לי שילדים היום, עם כל ההתערות שלהם בטכנולוגיה, לומדים הרבה פחות לתכנת. בגדול זו התפתחות היסטורית מובנת וטבעית: באייטיז, גם מערכת ההפעלה של המיינסטרים היתה כמו היתה שלדה גלויה של מכונית, שכל משתמש הכי קז'ואלי בה היה צריך לדעת לחזק את הברגים. היום יש הרבה יותר שכבות של ריפוד וקפיצים מסביב, ממשקים גרפיים והפשטה. עוד הבדל הוא שבאייטיז, עם קצת ידע בתכנות יכולת ליצור תוכנות שמזכירות את התוכנות המסחריות. היום המרחק בין תוכנה שילד יכול לכתוב את הקוד שלה בעצמו לבין המשחקים שהוא רגיל לצרוך הוא די ענק.
אבל אם עדיין רוצים לאפשר לילדים לתכנת, יש דרכים לעשות את זה, בעיקר אם מוותרים על הקונספט של הקלדת שורות קוד כמשהו קדוש (הרי גם Print "Hello, World!" מייצג די הרבה הפשטה מהאפסים והאחדות של המכונה).
כאן נכנסת סקראץ'. התוכנה מזכירה קצת את סביבת הפיתוח של פלאש, למי שמכיר — שמים אובייקטים מצוירים בחלון ואז מוסיפים להם קוד שיגיד להם מה לעשות. זה כבר טוב, כי הילד מגיע ישר לרמה שהוא מתעסק בגרפיקה ובווידאו. בנוסף, כאן לא צריך לכתוב את הקוד, הוא מופיע בצד בתור שורה של בלוקים. צריך לגרור אותם ולסדר אותם בסדר הנכון.
שימו לב שעם כל הגרפיות החייכנית הזו, זו לא לומדה שמדמה תכנות. זו באמת סביבת פיתוח. אין הגנה אמהית על הילד מפני המציאות האכזרית של הלוגיקה. הספרייטים המצוירים על המסך לא מנחשים לאן הילד התכוון שהם יילכו. הוא צריך ללמוד להכיר סדרה של פקודות, וגם אם/אז, לולאות, משתנים ופונקציות, ולהחליט כל פעם אילו מהם נדרשים באיזה סדר כדי שהתוכנה תבצע את מה שצריך לבצע כרגע. אם התוכנה מתנהגת בצורה שונה ממה שהוא התכוון אליה, הוא צריך לבדוק בעצמו איפה הוא עשה משהו לא נכון ולתקן את זה.
רק מה, יותר קל לבנות תוכנה כשלא צריך להסתבך עם האיות והדקדוק, בעיקר אם אתה בכיתה ב'. בנוסף, העיצוב הגרפי של הבלוקים עוזר כשהוא נותן רמזים למבנה הלוגי של התוכנה, כמו מין שילוב בין שורות קוד לתרשים זרימה. הלולאות, למשל, "מחבקות" את כל הפקודות שכלולות בתוכן.
בין השאר זה יכול להיות מבוא מוצלח לתכנות בכל שפה אחרת. כשילד שיודע לבנות פרויקטים בסקראץ', יהיה הרבה יותר קל להסביר לו מה זה פונקציה, מערך או תכנות מונחה אובייקטים. זה קצת כמו שיטות Immersion ללימוד שפה זרה — קודם מדברים, שומעים וקוראים, אחר כך לומדים את אוצר המילים והדקדוק.
וזה בקוד פתוח. ויש גרסה עברית לגמרי. וגם יש רשת חברתית כזו שהילדים מעלים אליה את התוכנות שעשו ומגיבים זה לזה.
יכול להיות שבתור צאצאית לשושלת ארוכה של מורים, הגנים שלי מכריחים אותי להתלהב מקונספט חינוכי שמבוצע בצורה מצוינת. אבל באמת, זה יופי של דבר.



8.06.09, 20:59: תגובה מאת גורו יאיא
הקישור לאתר העיברי לא עובד (לפחות, לא עובד לי). הוא קיים בכלל?
8.06.09, 22:40: תגובה מאת דורה (אתר)
תיקנתי.
25.10.09, 13:32: תגובה מאת זיו רייך
גם אני ניסיתי ולא הצלחתי
8.06.09, 21:16: תגובה מאת בנימין (אתר)
לא מכיר את סקראץ'. אבל השפה שכנראה משכה לכל זה היתה "תמלילוגו" האלילה והצב האלמותי שלה. אין ולא תהיה שפה כמותה, מבחינתי. אני מעדיף לכתוב בה כמעט כל דבר על פני ה-C שאנחנו חורשים בה בטכניון, למשל.
8.06.09, 22:56: תגובה מאת תומר (אתר)
נראה מגניב. למה אין גירסה ללינוקס?
9.06.09, 9:24: תגובה מאת דורה (אתר)
למה לעזאזל אתה שואל אותי?
האמת, אני בטוחה שיש גרסת לינוקס, כי זה מחולק עם ה-OLPC.
9.06.09, 13:17: תגובה מאת תומר (אתר)
אני לא בטוח שזה מגיע עם OLPC. אפילו לא ראיתי שזה מגיע עם קוד המקור.
אגב, את זוכרת את "איציק" מהחוברות של מחשבת?
9.06.09, 17:07: תגובה מאת יוני בראל (אתר)
ה-OLPC (או בשמו המסחרי XO-1), הגיע עם סביבת למידה מאוד דומה, אבל לא עם סקראץ', והיא היתה הרבה פחות אלגנטית, ממה שאני זוכר.
ממה שאני רואה, זה לא מופץ ברשיון חופשי, דבר תמוה בהתחשב במנטליות הפתוחה של MIT, open courseware וכו'. מצד שני, זה MIT. לפעמים הם עושים שטויות כאלה.
אני חושב שזה בגלל הגורמים שמספקים את התשתית המחקרית, והתמיכה הכספית לסקראץ'
9.06.09, 17:08: תגובה מאת יוני בראל (אתר)
ואני היחיד שתוהה מה יקרה אם אני אושיב את האחיין שלי מול הדבר הזה? האם הוא יהיה הסטארטאפיסט המפורסם של המשפחה?
את כל התקוות.
כולן.
אחת אחת. יוסי בניון ג'ובס אני אעשה ממנו.
9.06.09, 21:21: תגובה מאת דורה (אתר) | [לא ניתן להגיב לתגובה זו]
9.06.09, 21:19: תגובה מאת דורה (אתר)
הנה גרסת לינוקס נסיונית:
http://info.scratch.mit.edu/Linux_installer
והנה קוד המקור:
http://info.scratch.mit.edu/Source_Code
הרשיון מפרט כמה הגבלות על השימוש, בעיקר במטרה לא לבלבל בין הפיתוח הרשמי של MIT לבין פיתוחים אחרים.
10.06.09, 8:37: תגובה מאת תומר (אתר)
אני חייב לציין שהיה חסר לי קומפיילר, או לפחות סביבת הרצה שלא תכריח את הצופים להתקין את האפליקציה כולה (ולראות את קוד המקור של הילד המחונן).
10.06.09, 9:43: תגובה מאת דורה (אתר) | [לא ניתן להגיב לתגובה זו]
גם לי היה חסר. אבל יש player באתר של סקראץ', שהמטרה שלו היא להציג פרויקטים באתר של סקראץ' ולאפשר לאנשים לאמבד אותם באתרים אחרים. אפשר להתחכם ולהוריד אותו למחשב:
http://scratch.mit.edu/forums/viewtopic.php?pid=763#p763
9.06.09, 6:44: תגובה מאת אלעד-וו (אתר)
קראתי את מה שכתבת על תכנות בתחילת הפוסט, ויש לי רק דבר אחד להגיד: דורה קישינבסקי, אני אווווהב אותך!!!
9.06.09, 9:25: תגובה מאת דורה (אתר)
Oh yeah! Talk programming to me, baby!
9.06.09, 9:12: תגובה מאת יואב (אתר)
האמת, מבחינת החוויה זה מזכיר לי לימוד לוגו בקייטנה בתור ילד. גם שם יש אלמנטים ויזואלים, כמובן, רק שצריך טיפה יותר להפעיל את הדימיון ולראות את ה"צב" שבמשולש הזה… אבל גם שם, יש משהו מעורר באופן שבו כתיבה יוצרת מציאות.
9.06.09, 10:16: תגובה מאת שי (אתר)
אני לא בטוח שאני מסכים עם האנלוגיה ל־Immersion, במיוחד בעקבות הביקורת ששמעתי עליה מאדם שזהו עיסוקו. כשלומדים כך שפה, הוסבר לי, מפתחים רהיטות בשפה, אבל לא שימוש (תחביר דקדוק וכו') תקין בה.
אחרי ההסבר הזה, אני הייתי מצמיד את האנלוגיה הזו לרוב תוכניות הלימוד מהאייטיז, כולל מחשבת המיתולוגית, שהתעכבו על לימוד התחביר של שפת התכנות, ועברו במהירות על המשמעות. אולי כי זה קל הרבה יותר. בשתי מילים, תכנות זה בניה של תהליכים דטרמינסטיים. והקשר בין להריץ תוכנית שמציגה "Hello World" (או משחק פקמן) לתכנות הוא כמו הקשר בין הסתכלות בטלסקופ לאסטרונומיה, אם לשאול אנלוגיה מאדסחר דייקסטרה, מנוחתו עדן.
דווקא באייטיז כשהיה דגש על התחביר (כי לא היה GUI), רוב הילדים שלמדו לתכנת היו בעיקר בעלי חוש טכני, שהצליחו ללמוד את התחביר, ונעצרו שם. זה מספיק בשביל לשחק עם המחשב, ואפילו בשביל קריירה בהיי־טק, אבל זה כבר מזמן לא שוס גדול.
ב־MIT ובאוניברסטיאות אחרות היה נהוג ללמד את הקורס הבסיסי בחוג למדעי המחשב בעזרת הספר Structure and Interpretation of Computer Programs. זה ספר ששבר על ברכיו דורות של סטודנטים, בעיקר כאלו בעלי חוש טכני. בפרק הראשון הוא מלמד את כל התחביר של השפה, ואז שובר את הסטודנטים כשהוא מנסה ללמד כיצד להשתמש בו כדי לפתור בעיות (בפרק החמישי כותבים קומפיילר).
כלומר עם סקראץ' אפשר ללמד כמו שצריך, ונדמה לי שד"ר צוקרמן מבין זאת. כמעט לא צריך להסביר להם את התחביר, ונשאר רק ללמד אותם את הרעיון. נראה לי שזה משהו שהרבה יותר קל ללמוד בכיתה גימ"ל.
אלא שאני מנחש שכל הכוונות הטובות ימוסמסו בדרך על ידי מורים גרועים שמבינים רק בטלסקופים. כי מערכת החינוך מעדיפה תשומות מדידות, כמו ציונים, על פני תלמידים שבאמת לומדים משהו (שזה קשה לכמת, ועוד יותר קשה ללמד. בטח עם הנפל של פרחות שממלאות את המכללות לחינוך)
9.06.09, 10:17: תגובה מאת שי (אתר)
בפסקה השניה, התכוונתי לארבע מילים (בניה של תהליכים דטרמינסטיים). עם הקוראות והקוראים הסליחה.
9.06.09, 11:00: תגובה מאת ת'
אל תשכח שהתחביר של סקים הוא זניח. יכול להיות שהוא שובר את הסטודנטים שצריכים לספור סוגריים.
9.06.09, 11:28: תגובה מאת שי (אתר)
אם אתה מתכוון ל"פחות ערך, קטן, זעיר, מבוטל, אפסי", אז כן, התחביר של Scheme הוא באמת מינמלי. זה גם השיקול שבגינו בחרו בה ל־SICP (אם זכרוני אינו בוגד בי כהרגלו, אז זה אפילו מצויין בהקדמה).
9.06.09, 21:10: תגובה מאת דורה (אתר)
רגע, אז מה מלמדים כשמלמדים תכנות "באמת"? קח בחשבון שאתה מדבר למישהי בלי רקע אקדמי בתחום. במסגרת הרבע-תואר שלי במדעי המחשב הספקתי ללכת לכמה שיעורים בקורס "מבוא לתכנות" ולהיבהל מהעובדה שלא היה שם שום זכר לתחביב הישן והאהוב שלי, אלא קפצו ישר לנושאים משמימים כמו סיבוכיות. לא יכולתי להתמודד עם זה בגיל 21 ולא הייתי ממליצה על תוכנה שמעוללת את זה לילדים חפים מפשע.
מהתחקיר שלי על סקראץ' שעשיתי לצורך הכתבה, הבנתי שהיוצרים של השפה לא ראו את לימוד התכנות כמטרה. הם חוזרים שוב ושוב על זה שהמטרה היא לא להוציא סטארטאפיסטים קטנים. הם רצו לתת לילדים ערימה של בלוקים, ללמד אותם איך משתמשים בכל אחד ולהשאיר אותם לשחק עם זה. בקיצור, לספק לילדים משהו כמו החוויה שלי שתיארתי בתחילת הפוסט. ואגב, חולקת על דעתך, אני חושבת שהחוברות של מחשבת היו בנויות נפלא, עם הדגש על "ללכלך את הידיים" ועם המבנה המגרה של שאלה-תשובה ואתגר-פתרון.
9.06.09, 18:35: תגובה מאת זרוב (אתר)
וואו! אדיר! אם רק הייתי משחקת עם תוכנה כזאת כמה שנים אחורה, זה היה יכול לעזור לי לקלוט טוב יותר את הג'אווה סקריפט שמנסים ללמד אותנו עכשיו בשנקר כשאנחנו קשישים.
11.06.09, 22:39: תגובה מאת פילה (אתר)
כשאני לימדתי חטיבה בשנה שעברה, עשיתי את זה עם Phrogram, שהיא גרסה מתקדמת של KPL. גם היא מיועדת לבניית משחקים, אבל היא שפה של ממש, עם שורות פקודה ונקודה-פסיק. אפילו עם OOP אם ממש רוצים להתפרע. אמנם לא ידעתי על קיומה של סקראץ', אבל במחשבה אחורה, אני חושבת שלילדים גדולים יותר (בכל זאת, כיתה ח') משהו שבאמת נראה כמו שפת תכנות כבר היה נכון יותר. לאוניברסיטת ת"א יש פרוייקט התנדבות הוראת מדעי המחשב, והשנה הם מלמדים בסקראץ', אבל זה נורא תלוי בגיל וברקע, אני חושבת.
(בלע, אני לא קוהרנטית מדי כרגע.)
14.06.09, 10:40: תגובה מאת אמיתי גת
מזמין אותך לכנס "מפתחים צעירים" ביום חמישי הקרוב שבו יוצגו תוצרים של תחרות שנתית של פיתוח משחקים. מצ"ב קישור לגלריה של תוצרי הסקראץ' גילאי הילדים ד' עד ו'
http://scratch.mit.edu/galleries/view/50172
14.06.09, 10:40: תגובה מאת אמיתי גת
במכון הטכנולוגי חולון בין השעות 16:30 עד 19:00
6.08.09, 1:44: תגובה מאת תומר (אתר)
פוסט מדהים.
6.08.09, 6:40: תגובה מאת דורה
הסמקתי!