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

תקציר מאמר

Bucci, P. Heym, W., Long, T. J., Weide, B. W. (2002).

Algorithms and Object-Oriented Programming: Bridging the Gap.

הוכן ע"י ממי גוטביר

החומרים שלפניכם הוכנו על ידי משתתפי סמינר קיץ למורים מובילים תשס"ד.

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

 

תקציר המאמר:

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

 

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

 

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

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

פרדיגמה שלישית זו אמורה לגשר על הפער בין שתי הפרדיגמות הראשונות.

 

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

 

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

 

סיכום :

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

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

 

ניתן לקרוא את המאמר המקורי כאן

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