אבסטרקציה (מדעי המחשב)
ויקיפדיה האנציקלופדיה encyclopedia
במדעי המחשב, אבסטרקציה (מאנגלית Abstraction ובעברית: הפשטה) היא תהליך שבאמצעותו נתונים והוראות מוגדרים על ידי הצגה דומה למשמעות הסמנטית שלהם, תוך הסתרת פרטי המימוש שלהם.
מטרת האבסטרקציה להציג רק את הפרטים הרלוונטיים לנקודת המבט הנוכחית, על ידי הקטנת כמות הפרטים ו"הוצאה החוצה" של הטיפול בהם, כך שהמתכנת יוכל להתמקד רק בכמות מוגבלת של רעיונות בפרק זמן נתון.
יש לבצע הבחנה בין אבסטרקציה לבין מודולריות, בעוד מודולריות אחראית על פירוק לגורמים של הפתרון, אבסטרקציה אחראית על חיבור נתונים של הנושא עצמו לעניין מסוים. לדוגמה, כשבבית משפט לפני מתן עדות, משביעים את העד לומר את האמת, רק את האמת ואת כל האמת, המשפט ׳את כל האמת׳ מחביא בתוכו הגנה מפני אבסטרקציה. אנו משביעים את העד לספר הכול, ללא ביצוע חיבור של נתונים לעניין מסוים בלבד.
מערכת יכולה להיות מורכבת מכמה שכבות אבסטרקציה, שכל אחת מהן חושפת את המתכנת למשמעויות וכמויות שונות של פרטים. לדוגמה, שכבות אבסטרקציה נמוכות (low-level) חושפות את פרטי החומרה של המחשב, עליה רצה התוכנה, בעוד ששכבות גבוהות (high-level) מטפלות בלוגיקה העסקית של התוכנה.
רעיון האבסטרקציה במדעי המחשב החל כאנלוגיה לאבסטרקציה במתמטיקה, שם טכניקת האבסטרקציה מסתמכת על הגדרות מתמטיות, מה שהופך אותה לגישה טכנית יותר לעומת הרעיון הכללי של אבסטרקציה בפילוסופיה. לדוגמה, בשפות תכנות, מספר הוא אותו רעיון (concept) כפי שהוא מוגדר במתמטיקה. פרטי המימוש יכולים להשתנות בהתאם לסוג החומרה והתוכנה, אבל זה לא מהווה מגבלה מכיוון שרעיון המספרים במחשבים תמיד מתבסס על אותו רעיון מתמטי.
בתכנות, אבסטרקציה יכולה להיות מיושמת לשליטה (control) או לנתונים (data): אבסטרקציית שליטה היא אבסטרקציה של הפעולות ואילו אבסטרקציית נתונים עוסקת בהפשטה של מבני נתונים (ראו: מבנה נתונים מופשט).
- אבסטרקציית שליטה עושה שימוש בשגרות ורעיונות דומים לצורך בקרת זרימה.
- אבסטרקציית נתונים מאפשרת להעניק משמעות ליחידות נתונים בסיסיות (ביטים). לדוגמה, זהו המניע הבסיסי מאחורי השימוש בטיפוסי נתונים.
ניתן לראות באובייקטים (בתכנות מונחה-עצמים) כניסיון לשלב בין אבסטרקציית שליטה ואבסטרקציית נתונים.
אותה הגדרה אבסטרקטית יכולה לשמש כממשק משותף עבור משפחה של אובייקטים אשר חולקים את אותה משמעות, אבל ממומשים בדרכים שונות וכוללים התנהגות שונה. מנגנון הירושה בתכנות מונחה-עצמים יכול לשמש לצורך הגדרת מחלקה אבסטרקטית המגדירה את הממשק המשותף.
ההמלצה שמתכנתים ירבו להשתמש באבסטרקציות כאשר ניתן לעשות זאת על מנת למנוע כפילויות בקוד המקור ידועה כ"עיקרון האבסטרקציה" (abstraction principle). הדרישה ששפת תכנות תספק את האבסטרקציות הנדרשות גם היא נקראת באותו שם.