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

ההפשטה היא מפתח לקורס המבוא CS1

פ. ספרג, ס. סאשצ'נסקי

Sprauge, P. Schahczenski, C. (2001). Abstraction the key to CS1.  Journal of Computing in Small Colleges, 17(3), 211-218.   

 

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

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

 

תקציר

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

 

השוואה בין הפשטה בפרדיגמה פרוצדורלית ופרדיגמה מונחית עצמים

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

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

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

המחברים מציגים שלשה יתרונות להטמעת עקרון ההפשטה בפרדיגמה מונחית עצמים:

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

 

הוראה ממוקדת הפשטה לעומת הוראה ממוקדת תחביר

המחברים גורסים בדעה ששפת תכנות היא אמצעי להוראת תכנות במובן שהיא מאפשרת יישום ותרגול וקבלת משוב ישיר ומידי מ"המכונה". יחד עם זאת, הכרת שפת התכנות אינה יכולה להיות יעד מרכזי. בחירת שפת Pascal להוראה בסוף שנות ה-70 ותחילת שנות ה-80 ממחישה את הגישה שהשפה צריכה להיות מתאימה מבחינת המאפיינים הפדגוגיים להעברת עקרונות, ואין לבחור בשפה רק בגלל שהיא מקובלת בתעשייה. בדומה, בחירת Java להוראת CS1 נובעת בגלל יתרונותיה ההוראתיים וללא קשר לשימוש בתעשייה.

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

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

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

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

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

 

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

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

 

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