הרשמה אונליין
על המרכזכל מה שקורה

מה הקשר בין שיטות ממשל לתכנות?

יחד עם הרצון והתכניות הממשלתיות להגדיל את מספר הסטודנטים שלומדים את מקצועות ההנדסה ומדעי המחשב השונים, הולכת וצוברת תאוצה לאחרונה גם התפיסה כי חשיפה לתכנות בגילאים צעירים תעזור לפתח את מיומנות התכנות בקרב הציבור בכללותו, וכך תגדיל את כמות המתכנתים שיעמדו לרשות המשק הישראלי.

אני חושש שזו תקווה נאיבית, שלא תתממש. לעניות דעתי, מי שיש לו את הכישורים האינטלקטואליים המתאימים, יוכל ללמוד את המיומנות הטכנית של תכנות תוך מספר חודשים, גם אם כל חייו הוא לא נחשף למחשב, ולהפך: גם מי שילמד תכנות מהגן ועד כיתה י"ב, אולם לא ניחן בצורת החשיבה הנדרשת, בין יירתע מלתכנת, לבין יתכנת ברמה לכל היותר בינונית.

אדגים את דברי. לפני כשלושים שנה לימדתי את הקורס מבוא למדעי המחשב בחוג למדעי המחשב באוניברסיטה העברית. בשיעור הראשון של הקורס הייתי צריך להסביר לסטודנטים את מבנה המקלדת, בפרט את תפקידו של מקש ה: Enter. זה לא מנע ממני ללמדם בדיוק את אותה כמות חומר שגם כיום לומדים בקורס הזה (גם אם בשפות תכנות שונות). דוגמה נוספת, לפני כמעט עשר שנים לימדתי את אותו קורס קבוצה של חרדים, שחלקם נחשפו לראשונה למחשבים אך כשנה לפני כן, במסגרת לימודי מכינה, אולם היו בעלי יכולות הנדסיות גבוהות. הישגיהם של הסטודנטים בסוף הקורס לא נפלו מאלה של סטודנטים מהציבור הכללי.

מנגד: עת לימדתי קורס תכנות סטודנטים למדעי החיים שנטיותיהם ההנדסיות היו מוגבלות, הסטודנטים התקשו מאוד להבין את הרציונל שבתכנות, לרכוש את צורת החשיבה, ולהתקדם מעבר לתכניות מאוד בסיסיות, גם עת שבקורס הושקעו ארבע שעות לימוד שבועיות.

לכן, לדעתי, באם המטרה שלנו היא להגדיל את מספר הסטודנטים הפוטנציאלים בתחומי המחשב השונים, יש לפתח, ככל האפשר במערכת החינוך הפורמלית, את הכישורים שיהפכו מישהו לכזה שיוכל ללמוד תכנות בנקל. איני סבור יש להקנות לתלמידים את מיומנות התכנות פר סה.

סטודנטים מהחוג למדעי המחשב במכללה האקדמית הדסה

מה הם כישורים אלה? ראשית, באופן לא כ"כ מפתיע, מתכנת טוב כדאי שיהיה מסודר בעבודתו, כישור מאוד כללי, אך רלוונטי. שנית, עת אני מסתכל על הסטודנטים שלי, משך עשרות שנים, אני חושב שאצל חלקם 'החשיבה הפורמלית', כפי שקרא לה פיאז'ה, וטען שהיא מתפתחת רק בגיל ההתבגרות, אם בכלל, אינה די מפותחת.

חשיבה פורמלית, בין, היתר, מאפשרת לאדם לתכנן סדרת ניסויים, שידגימו מה הם הגורמים שיוצרים תופעה כלשהי. אסביר את דברי בהקשר התכנותי: כל מי שעוסק בתכנות יודע שחלק ניכר מזמנו משקיע המתכנת באיתור ותיקון ליקויים בתכנית (debugging). כדי לאתר את הליקויים, למעשה, יש לבצע ניסוי מבוקר, שיאפיין בצורה מדויקת באיזה נסיבות חלה התקלה, וכך 'ישים עליה אצבע'. תהליך זה הוא תהליך שיש לבצע כניסוי מדעי לכל דבר: בו כל פעם משנים מעט תנאי אחד, ובודקים את התוצאה: האם התקלה חלה או לא? עד 'שמזככים' את התנאים המדויקים, הבסיסיים ביותר, בהם חלה התקלה.

מי שהחשיבה הפורמלית שלו לא בשלה, יתקשה מאוד לתכנן את סדרת הניסויים הדרושה, וייכשל במציאת התקלה. טיפוח החשיבה הפורמלית היא מטרה מאוד כללית, ומאוד מועילה באופן כללי לאדם בעולם טכנולוגי (גם לכזה שצריך לכוונן את מערכת החדר החכם שלו, כך שהיא תפעל לשביעות רצונו המלאה). תכנות יכול לעזור לפתח חשיבה זאת אך, יש דרכים אחרות לפתח אותה. למשל: דיון פילוסופי בצורות שלטון שונות, מגבלותיהן, יתרונותיהן וחסרונותיהן. מנגד, אם נאמין לפיאז'ה, קשה לצפות מתלמיד בבית-ספר יסודי להיות מסוגל להפעיל חשיבה פורמלית, ובפרט לאתר באגים בתכניות מחשב, גם אם הוא ילמד תכנות מגיל צעיר, שעות רבות בשבוע.

לקריאת הכתבה שהופיעה באתר "כלכליסט" (12.10.18)

*ד"ר יורם ביברמן הוא ראש החוג למדעי המחשב במכללה האקדמית הדסה ירושלים.