הפשטה כמושג מרכזי בהוראת מדעי המחשב: סקר ספרות

מבוא

כתיבה ועריכה: ד"ר ברוריה הברמן

כל החומרים עומדים לרשותכם וניתן להשתמש בהם להוראה ללא תשלום.

שימו לב: לא ניתן לעשות בחומר הזה כל שימוש מסחרי ללא רשות בכתב מראש מיוצרי החומרים.

 

הפשטה כמושג מרכזי במדעי המחשב

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

הפשטה מוכרת זמן רב כעיקרון יסודי וחיוני בפתרון בעיות במדעי המחשב ובפיתוח תוכנה. לדעת Denning (1989) מושג ההפשטה הוא אחד משלושת העקרונות המרכזיים בתחום המחשבים, בצד התיאוריה והתיכון. הפשטה נוגעת ליכולת לעשות שימוש ביחסים שבין אובייקטים בכדי לעשות השלכה לדברים מוחשיים בעולם (Denning et al.,1989). Aho ו- Ullman  מתארים את מדעי המחשב כמדע ההפשטה- יצירת המודל לחשיבה על בעיה ותכנון הטכניקה ההולמת לפתרונה (Aho & Ullman,1995). Astrachan מזכיר  רמות של הפשטה כמושג חוזר במדעי המחשב בצד מודלים קונספטואליים ופורמליים, יעלות וסיבוכיות (Astrachan, 1997).

לדעת Hoare (1986) פקודה אבסטרקטית היא פקודה המפרטת את התכונות הכלליות של התנהגותו הרצויה של המחשב מבלי לפרט במדוייק איך התנהגות זו מושגת.

 

במדעי המחשב מתייחסים לשני סוגי הפשטה:

א. הפשטת נתונים (data abstraction)- העוסקת בהפרדה של תכונות לוגיות של מידע מפרטי מימושן (Dale & Walker, 1996). בהקשר זה מוצג העקרון של ארגון מידע במבנים ובכלל זה שימוש ברשומות ומערכים המאפשרים גישה נוחה לנתונים. בנוסף מוצגים טיפוסי נתונים מופשטים שונים וממשקיהם כגון: רשימה, מחסנית, תור ועץ בינארי, ככלים חיוניים בהפשטת נתונים המאפשרים הסתרת האופן בו מאורגנים הנתונים בתכנית.

ב. הפשטת פעולות (procedural abstraction) -  עוסקת בהפרדת תכונות לוגיות של פעולה מפרטי מימושן. אחת הדרכים לתרגל הפשטת פעולות היא לתרגל פירוק בעיות ופיתוח אלגוריתמים, באמצעות פיתוח עיצוב מלמעלה למטה (top- down design) ושימוש בגישת "צעד אחר צעד" – עידון הדרגתי (stepwise refinment). Leron מתאר את ההפשטה הפרוצדורלית במונחים של מחסומי הפשטה מטאפוריים: "תכנות ברמה הולמת של הפשטה פירושו בחירת הפעולות העיקריות המתאימות לבעיה. [...] הימנעות זו, מעיסוק בפרטי הרמה הנמוכה בזמן שחושבים על הבעיה שיש לפתור, יוצרת מחסום הפשטה מטאפורי המחלק את משימת התכנות לשתי משימות כמעט בלתי תלויות ביניהן: מעל למחסום אנו עוסקים בפתרון הבעיה המקורית במונחים של הפעולות העיקריות המופשטות שבחרנו; ומתחת, אנו עוסקים בפרטי המימוש של פעולות עיקריות אלו" (Leron,1987, p. 16-17). אכן, להפשטה פרוצדורלית יש יתרון בהפחתת המורכבות של בעיה נתונה ע"י חלוקתה לתת- בעיות קטנות יותר, שאולי גם כן יחולקו לתת- בעיות. בכל רמה של פירוק, אין צורך לדאוג איך המשימה תושג ברמה הנמוכה יותר. יתר על כן, מתכנתים אינם צריכים לדאוג, כאשר הם משתמשים בפרוצדורה מסוימת, לכל הפרטים הנוגעים לאופן שבו היא מבצעת את חישוביה; הם רק צריכים להבין את התיאור שלה (specification) ומה היא מחשבת, וכן לדעת איך לקרוא לה. גם במקרה של בעיות פשוטות, יש הגיון באיתור רמות הפשטה בהגדרת הבעיות, ולעצב תכניות המשקפות רמות הפשטה אלו. קל יותר למתכנת להתמודד בנפרד עם רמות ההפשטה השונות ולהתרכז באחת אחר השנייה, וכך להימנע מטעויות. מלבד ההתמודדות הנאותה עם מורכבות הבעיה, להפשטה פרוצדורלית יש יתרון בבניית "קופסאות שחורות" שניתן לעשות בהן שימוש חוזר ולממשן בצורה טובה יותר.

 

שילוב הפשטה כמושג מרכזי בתכניות לימודים במדעי המחשב

מאחר והפשטה היא אחד ממושגי המפתח היסודיים בתכנות, היא שולבה בתכניות לימודים של מדעי המחשב. Denning ושותפיו מציגים שלוש פרדיגמות ראשיות: תיאוריה, הפשטה ועיצוב, המהוות צירים מרכזיים חותכי דיסציפלינת ה- Computing. הם מתייחסים להפשטה כעקרון משותף לשני התחומים הבאים: (1) תחום מדעי המחשב, המתמקד בניתוח והפשטה, ו- (2) תחום הנדסת מחשבים, המתמקד בהפשטה ועיצוב (Denning et al., 1989).

כוח המשימה שפיתח את תכנית הלימודים  CC2001 Curricula טען כי תלמידי מדעי המחשב צריכים ללמוד לשלב תיאוריה ותרגול, להכיר בחשיבותה של הפשטה, ולהוקיר את ערכו של עיצוב (תיכון) טוב כעקרונות עיקריים של התחום (CC2001 Computer Science Final Report, 2001, p. 12).

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

חוקרים מסכימים שמומחים ומתחילים מגלים הבדלים בסגנונות התכנות שלהם, במיוחד בהקשר של פתרון בעיות, יכולות הפשטה והכללה. לפי Linn ו- Clancy (1992) מומחים מארגנים את הידע שלהם במבנים קונספטואלים שהם בהיבט נרחב יותר מתחביר, ארגון המאפשר להם שימוש חוזר בתבניות שאינן תלויות בשפת תכנות מסוימת. Fleury (1993) מצאה שמתחילים שונים ממומחים בהרגלי התכנות שלהם בהקשר של פיתוח ותחזוקה של מערכות ארוכות-טווח. Ye ו- Salvendy (1996) מצאו שלמומחים יש ידע תכנותי ברמת הפשטה גבוהה יותר מאשר למתחילים. Hoadley ועמיתיו (1996) מצאו שאותם תלמידים שיכלו לייצר סיכומי קוד מופשטים, העדיפו לעשות שימוש חוזר בקוד מאשר לשכפל קוד.   

לימוד הולם של ההפשטה למתחילים עשוי להעשיר את הכלים לפתרון בעיות, כך שאנשי חינוך בודאי מסכימים שיש להציג לתלמידי מדעי המחשב את עקרונות ההפשטה בהדרגה, החל מהשלבים המוקדמים ללימודיהם   (Dale & Walker, 1996; Evans, 1996; Astrachan, 1997; Marion, 1999, Bucci et al., 2001). לדוגמה, Marrion (1999) הציע כי תלמידי CS1 (מקביל ל- יסודות 1 ויסודות 2) צריכים להתחיל להבין הפשטה ואת תפקידה בהתמודדות עם מורכבות תכנה, מאחר והפשטה הינה כלי חשוב, בו פותר הבעיה משתמש, על מנת להתמודד עם מורכבותה. בפרט הפשטת פעולות היא כלי עזר בעיצוב פתרון מלמעלה-למטה (top-down design).

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

 Koppelman (2001) טען כי הפשטה צריכה להילמד במפורש לתלמידים מתחילים באמצעות הצגה והמחשה של העיקרון על בסיס תכניות פשוטות. Bucci ושותפיו סברו כי לימוד הפשטה לפי גישה המבוססת על מודלים מתמטיים והגדרות פורמליות עשויה לתרום ליכולת התלמידים לחשוב בזהירות ובדקדקנות על התנהגות התכנית. הם ממליצים על הצגת הפשטה והסתרת מידע כהיבטים משלימים לגישה של הסתרת הפרטים של המערכת תוך סיפוק "סיפור כיסוי" פשוט המסביר את ההיבטים בהם מתעניינים  במערכת זו ((Bucci et al., 2001.

Evans (1996) מציע גישה פדגוגית להצגת CS1 תוך הדגשת עקרונות יסוד, שאחד מהם הוא הפשטה אשר הינה מושג חוזר במדעי המחשב. הוא ממליץ להדגיש את גישת PITL (programming-in-the-large) להקניית רמה מערכתית, ובמקביל לספק כלים לעבודה ב"קטן" – PITS (programming-in-the-small) המאפשרים לטפל בפרטי מימוש, ומקנים יכולות טכניות. לדעתו, גישה פדגוגית זו מקנה לתלמידים ראיה רחבה יותר של תכנות ופתרון בעיות, ומפתחת כישורים של הפשטה  בצד תיכון.

שימוש בהפשטה עשוי גם לתרום להבנת נושאים מתקדמים כגון רקורסיה. לדוגמה,  Sooriamurthy (2001) טוען כי המפתח להבנת רקורסיה הוא התמקדות בהפשטה של פונקציות רקורסיביות. הוא פיתח גישה תבניתית שעוצבה במטרה להכיר לתלמידים את השלבים השונים בניסוח פתרון רקורסיבי. בדומה, Ginat ו- Shifroni (1999) טוענים שדגש על גישה דקלרטיבית להוראת רקורסיה, ודגש על התייחסות לרמה המופשטת של פירוק בעיה, עשויים לשפר כתיבה של תכניות רקורסיביות.

 

שילוב הפשטה בתכנית הלימודים לתיכון בארץ

בתחילת שנות ה- 90 פותחה בישראל תכנית לימודים חדשה למדעי המחשב בתיכון. התכנית מציגה את העקרונות והשיטות לפתרון בעיות ללא קשר למחשב מסוים או לשפת תכנות מסוימת, בצד יישומם בשפות ופרדיגמות שונות  (Gal-Ezer et al., 1995; Gal-Ezer, Harel, 1999). אחד המושגים המרכזיים הנלמדים בתכנית הלימודים הוא מושג ההפשטה.

הפשטה נלמדת לאורך כל יחידות הלימוד בתכנית ומוצגת בשתי רמות: הפשטת פעולות (procedural abstraction) והפשטת נתונים (data abstraction).

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

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

יחידת "עיצוב תכנה" מציגה עקרונות כגון הסתרת מידע, מודולריות, יעילות, שימוש חוזר בקוד והפשטה. יחידת לימוד זו חושפת את התלמידים למגוון של היבטים בעיצוב ותיכון מערכות תכנה דרך השימוש בטיפוסי נתונים מופשטים. אחת המטרות העיקריות של יחידה זו היא לפתח מיומנויות חשיבה מופשטת ודרכים לפתור בעיות Gal-Ezer et al., 1995; Gal-Ezer & Harel, 1999)) ולכן שימוש בקוד מוגדר מראש והפשטה משרתים כקוים מנחים לאורך כל היחידה, במקום תכנות ממשי (Gal-Ezer & Zeldes, 2000). היחידה מתרכזת בהיבטים התיאורטיים היסודיים של מבני נתונים, ומציגה בהרחבה את שילובו של טיפוס הנתונים המופשט בפיתוח מערכות תכנה. ליתר דיוק, היחידה מציגה עקרונות כגון הפשטת פעולות, הפשטת נתונים, הסתרת מידע, מודולריות, יעילות ושימוש חוזר בקוד. עקרונות הפשטת הנתונים מוצגים במסגרת יחידת הלימוד עיצוב תכנה משלוש נקודות מבט שונות: הגדרה, יישום ושימוש. עקרונות של טיפוס הנתונים המופשט כגון הפשטת פעולות, הפשטת נתונים, הסתרת מידע, מודולריות, יעילות ושימוש חוזר בקוד נידונים גם כן במסגרת יחידה זו.  התלמידים לומדים ומתרגלים את ההגדרות, הייצוג, היישום והשימוש של טיפוסי נתונים מופשטים כגון: רשימה, מחסנית, תור ועץ בינארי. הם לומדים להגדיר טיפוס נתונים מופשט חדש, לעצב לו ממשק לפי מפרט נתון, ולחבר יחידות ספריה המבצעות את המפרט הנדרש בסביבת התכנות הנתונה. התלמידים גם מתרגלים שימוש בטיפוסי נתונים מופשטים לצורך פתרון בעיות.

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

 

קשיי מתחילים בביצוע הפשטה

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

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

לימוד תכנות הוא משימה מורכבת הנערכת בשני צירים: הציר התיאורטי המופשט, המתייחס למושגים ועקרונות של מדעי המחשב ותכנות, וציר היישום, המתייחס לשפת תכנות ולסביבת העבודה, המשמשים ליישום העקרונות הנלמדים (הרמה התיאורטית המופשטת). ניתן לבצע את המעבר בין שני הצירים לסירוגין. למשל, אחת הדרכים לביצוע כזה: מושג או רעיון חדש מוצג תחילה בכיתה, ומיושם מיד לאחר מכן בפעילות מעבדה, ושוב דנים בו ברמת הכיתה, וחוזר חלילה. וכך, צריך התלמיד המתחיל להתמודד עם הבנה ותפקוד בשני המישורים בו זמנית. שיטה המבוססת על עקרון זה, המכונה שיטת ה"רוכסן" הומלצה להוראת תכנית הלימודים החדשה במדעי המחשב בארץ (Gal-Ezer, Yehudai, Harel & Beeri, 1995, Gal-Ezer & Harel 1999). צורת לימוד זו אמורה, בין השאר, לחזק את יכולת ההפשטה ואת ההבחנה בין תיאוריה ויישום אצל הלומד. אך הניסיון מראה כי תלמידים מתחילים הלומדים בשיטה זו מתקשים בהבנת מושגים ועקרונות בסיסיים הקשורים בתכנות (Haberman & Kolikant, 2001), בו בזמן שעליהם להתמודד עם הכרת שפת תכנות וסביבת העבודה בה הם מיישמים את העקרונות הנלמדים על ידי כתיבה והרצה של תכניות במחשב. לעתים, גם קשה להם להבחין בין עקרונות שאינם תלויים בשפה תכנות זו או אחרת, לבין היבטים טכניים הקשורים לסביבת העבודה.

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

 

ישנן סיבות שונות לקשיים אלו, ביניהן:

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

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

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

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

 

Haberman ו- Gindi (2004) ערכו מחקר גישוש בקרב תלמידי מדעי המחשב בתיכון שמטרתו לבדוק האם לימוד פרדיגמת התכנות הלוגי בנוסף לפרדיגמת התכנות הפרוצדוראלי תורמת להבנה ויישום של עקרונות הפשטת פעולות. בפרט, המטרה היתה לבדוק האם תלמידים שלמדו את שתי הפרדיגמות מבינים ומיישמים עקרון של הפשטת פעולות בפיתוח וניתוח אלגוריתמים בתכנות פרוצדורלי, טוב יותר מעמיתיהם שלמדו תכנות פרוצדורלי בלבד. אוכלוסיית המחקר נחלקה לשתי קבוצות: בקבוצה הראשונה תלמידים שלמדו את יחידת הבחירה של התכנות הלוגי ובקבוצה השנייה תלמידים שלא למדו יחידה זו ומכירים רק את פרדיגמת התכנות הפרוצדוראלי. המחקר בדק את שיטות העבודה של התלמידים ואת רמות ההפשטה בהן נעשה שימוש ע"י כל אחת מן הקבוצות. הממצאים הראו לכאורה על הבדל בין התלמידים שמכירים תכנות לוגי לבין אלו שלא, כאשר לתלמידי תכנות לוגי יש יכולת הפשטה גבוהה יותר הבאה לידי ביטוי הן בניתוח והן בפיתוח אלגוריתמים. יחד עם זאת, יש להביע הסתייגות מהכללת ממצאי מחקר גישוש זה, שכן אוכלוסיית המחקר הייתה קטנה. בנוסף, כל התלמידים שנדגמו למדו עיצוב תכנה (מכורח הנסיבות – זמינות של אוכלוסיה) מה שתרם מן הסתם ליכולת ההפשטה שלהם.

 

חזרה לעמוד הראשי