אבסטרקציית שליטה (control abstraction) היא אחד השירותים המרכזיים שמספקות שפות תכנות. מחשבים מסוגלים להבין רק פעולות ברמה הנמוכה ביותר, כדוגמת העברת מספר ביטים ממקום אחד בזיכרון למקום אחר ולהפיק את הסכום של שני רצפים של ביטים. שפות תכנות מאפשרות לבצע פעולות כאלה ברמה גבוהה יותר. בתור דוגמה, נסתכל על הביטוי הבא הכתוב בתחביר דמוי-פסקל (שפת תכנות עילית):
לבן אדם זה נראה כחישוב מובן ופשוט למדי ("אחד ועוד שתיים שווה שלוש, כפול חמש שווה חמש עשרה"). לעומת זאת, השלבים ברמה הנמוכה (low-level) אשר נדרשים כדי לבצע את החישוב הנ"ל, להחזיר את הערך "15" ולבצע השמה של ערך זה למשתנה "a", הם למעשה די עדינים ומורכבים. יש להמיר את הערכים לייצוג בינארי (בדרך כלל משימה הרבה יותר מורכבת ממה שאנשים עשויים לשער) ולפרק את החישובים (על ידי מהדר או מפרש) להוראות בשפת סף (שוב, פעולות הרבה פחות אינטואיטיביות עבור המתכנת: פעולות כגון הזזה שמאלה של אוגר בינארי, או הוספה של המשלים הבינארי של אוגר אחד לתוכן של אוגר שני, הן פשוט לא הצורה שבה בני אדם חושבים על הפעולות האריתמטיות האבסטרקטיות של חיבור או כפל). ולבסוף, פעולת ההשמה של הערך המתקבל, "15", למשתנה המסומל בתווית "a", כך שמאוחר יותר ניתן יהיה להשתמש ב-"a", כוללת שלבים נוספים "מאחורי הקלעים", של מציאת התווית של המשתנה ושל תוצאת החישוב בזיכרון הפיזי או הוירטואלי, אחסון של הייצוג הבינארי של "15" באותו מקום בזיכרון, וכו'.
ללא אבסטרקציית שליטה, בכל פעם שמתכנת ירצה לבצע פעולה פשוטה כמו חיבור או כפל של שני מספרים ולשמור את התוצאה במשתנה, הוא ייאלץ לפרט ידנית את כל השלבים ברמה הבינארית של האוגרים. לעבודה כפולה כזאת יש שתי השלכות שליליות משמעותיות:
תכנות מובנה.
תכנות מובנה (structured programming) עוסק בפירוק משימות תוכנה מורכבות ליחידות קטנות יותר הכוללות ממשקים ברורים לבקרת זרימה בין הרכיבים, מה שמביא להורדת רמת המורכבות והפוטנציאל לשגיאות.
בתוכנית פשוטה, המטרה היא להבטיח שללולאות יהיו נקודות יציאה ברורות, וכאשר ניתן, שתהיה נקודת יציאה יחידה מתוך פונקציות ופרוצדורות. במערכות מורכבות יותר, המטרה היא לפרק משימות מורכבות להרבה מודולים נפרדים. שיטת עבודה כזאת מאפשרת לבודד את פרטי המימוש של רכיב מסוים ומגוון המתודות הפנימיות שלו מיתר הרכיבים. תכנות מונחה-עצמים מאמץ ומרחיב רעיון זה.
אבסטרקציית נתונים.
אבסטרקציית נתונים (data abstraction) כופה הפרדה ברורה בין תכונות אבסטרקטיות של טיפוסי נתונים לפרטים הקונקרטיים (concrete) אודות המימוש שלהם. התכונות האבסטרקטיות הן אלה שניתן לראותן בקוד הלקוח אשר עושה שימוש בטיפוס הנתונים - הממשק לאותו טיפוס נתונים. לעומת זאת, המימוש הקונקרטי נשמר פרטי לגמרי (מוסתר מהמשתמש), והוא אף יכול להשתנות, לדוגמה כדי להכניס שיפורי יעילות שנעשים עם הזמן. הרעיון הוא ששינויים כאלה לא אמורים להשפיע על קוד הלקוח, מאחר שהם לא כוללים שום שינוי להתנהגות האבסטרקטית (הממשק).
לדוגמה, ניתן להגדיר מבנה נתונים מופשט בשם "טבלת חיפוש", אשר משייך באופן ייחודי ערכים (values) למפתחות (keys), ומאפשר לאחזר ערך על ידי ציון המפתח המתאים לו. ניתן לממש טבלת חיפוש כזאת בדרכים שונות: כטבלת גיבוב, עץ חיפוש בינארי, או אפילו כרשימה ליניארית פשוטה של זוגות מסוג [מפתח:ערך]. מנקודת המבט של קוד הלקוח שיעשה שימוש במבנה הנתונים, התכונות האבסטרקטיות של טיפוס הנתונים הן זהות בכל אחד מהמימושים.
כמובן שעל מנת שכל זה יעבוד, יש לדאוג לנכונות פרטי הממשק מלכתחילה, מאחר שלכל שינוי מאוחר יותר עשויה להיות השפעה גדולה על קוד הלקוח. אחת הדרכים להסתכל על כך היא שהממשק מהווה "חוזה" בין טיפוס הנתונים לבין קוד הלקוח לגבי ההתנהגות המוסכמת; כל מה שאינו מוגדר בחוזה עלול להשתנות מאוחר יותר ללא הודעה מוקדמת.
אבסטרקציה בתכנות מונחה-עצמים.
בתכנות מונחה-עצמים, אבסטרקציה מאפשרת הגדרת אובייקטים (עצמים) המהווים "שחקנים" אשר יכולים לבצע עבודה, לדווח אודות המצב שלהם ולשנות אותו, ו"לתקשר" עם אובייקטים אחרים במערכת. בבסיס האבסטרקציה בתכנות מונחה-עצמים עומד מושג ה"כימוס" אשר מתייחס להסתרת פרטי המצב (לדוגמה, הערך של משתני המחלקה) של האובייקט, ולהרחבת רעיון "טיפוס הנתונים" כפי שהיה בשימוש בשפות תכנות מוקדמות יותר, על מנת לקשור חזק גם "התנהגות" (פונקציות) לנתונים.
כאשר מכניסים אבסטרקציה גם להגדרת הפעולות, כך שניתן להחליף בין אובייקטים מטיפוסים שונים, זה נקרא פולימורפיזם. כאשר אבסטרקציה משמשת בכיוון ההפוך, בתוך טיפוסים או מחלקות, על מנת ליצור מבנה המפשט מערכות יחסים מורכבות, זה נקרא האצלה (delegation) או ירושה (inheritance).
שפות התכנות ++C ו-Java אף מכילות מילים שמורות (keywords) ייעודיות להצהרה על אבסטרקציה: משמעות ההצהרות codice_2 (ב-++C) ו-codice_3 (ב-Java) היא שזוהי אחריות המתכנת לממש את המתודות במחלקה שיורשת מהמחלקה האבסטרקטית.
שכבות אבסטרקציה.
כסדרה של שכבות אבסטרקציה (מלמטה למעלה): חומרה, קושחה, אסמבלר, ליבה, מערכת הפעלה ויישומים
במדעי המחשב נפוץ השימוש ב"שכבות" או "רמות" של אבסטרקציה, שם כל רמה מייצגת מודל שונה של אותו המידע ותהליכים, אבל משתמשת במערכת ביטויים, אובייקטים והרכבים ייחודיים אשר תקפים רק לתחום (domain) מסוים. כל רמה אבסטרקטית ו"גבוהה" יותר יחסית, נבנית על גבי רמה יחסית "נמוכה" ו"ממשית" (concrete) יותר, אשר נוטה לספק ייצוג פרטני ("גרנולרי") יותר ויותר.
לדוגמה, שערים לוגיים נבנים על גבי מעגלים אלקטרוניים; ייצוג בינארי נבנה על גבי שערים לוגיים; שפת מכונה נבנית על גבי ייצוג בינארי; שפות תכנות על גבי שפת מכונה; מערכות הפעלה ויישומים על גבי שפות תכנות. כל רמה מגולמת בשכבה שתחתיה, אבל לא נקבעת על ידה, מה שהופך אותה במידה מסוימת לשפת תיאור העומדת בפני עצמה.
ארכיטקטורה רב-שכבתית.
היכולת ליצור עיצוב המסתמך על שכבות שונות של אבסטרקציה מאפשרת:
ארכיטקטורה רב-שכבתית מחלקת את הטיפול במשימות השונות של היישום לחלקים נפרדים (שכבות). זוהי טכניקה בעיצוב תוכנה, חומרה ותקשורת נתונים, בה רכיבי המערכת או הרשת מופרדים לשכבות כך שניתן יהיה לבצע שינויים באחת מהשכבות מבלי להשפיע על יתר השכבות.
שלמה לוטן
שלמה לוטן (נולד ב-1968) הוא היסטוריון המתמחה בחקר המסדרים הצבאיים בממלכת הצלבנים. מומחה לתקופה הצלבנית בארץ ישראל, ותולדות המסדר הטבטוני. עמית מחקר במרכז רנרט לחקר ירושלים במחלקה ללימודי ארץ ישראל וארכאולוגיה באוניברסיטת בר-אילן.
מחקריו.
מחקריו עוסקים בלימוד התקופה הצלבנית, ובעיקר בהתמקדות ביצירה הייחודית שנוצרה ברחבי ממלכת ירושלים – המסדרים הצבאיים. היו אלה לוחמים – נזירים אשר שימשו כצבא המילואים של הממלכה, בעלי נחלות, מקימי מבצרים ותורמים לרווחתה של הממלכה ולסעד הרפואי שניתן לתושביה ולצליינים שביקרו בה.
מחקריו מתמקדים בעיקר במסדר הגרמנים – מסדר הטבטונים אשר נוסד בשטחה של הממלכה בשנת 1198 ושרד בה עד לנפילתה בשנת 1291. עיקר פעילותם של הטבטונים אירעה בשטחי הגליל העליון בתחום נחלתם באזור מעיליא וג'דין, ובאתר הידוע כמטה מסדרם, מבצר מונפור שעובר מעל נחל כזיב.
בסיסם של הטבטונים היווה מוקד להתפשטותם של הטבטונים אל אתרים רבים ברחבי אירופה ובעיקר אל מרכזם המפורסם בפרוסיה (צפונה של פולין) במקום בו נלחמו מלחמת חורמה בכופרים באמונה הנוצרית בימי הביניים. מחקרים אלה מהווים נדבך נוסף בהבנת תקופה מורכבת זו בתולדות ממלכת הצלבנים בארץ ישראל בימי הביניים.
תיאור מחקריו.
עבודת הדוקטור שלו נכתבה על תולדות המסדרים הצבאיים בתקופה הצלבנית בארץ ישראל, ובעיקר על תולדות המסדר הטבטוני, המסדר הגרמני אשר נוסד בעיר עכו בשנת 1198. בהמשך התבסס המסדר במאחזים רבים ברחבי אירופה ובעיקר בחלקה הצפוני בגרמניה, פרוסיה ולטביה. הדוקטורט יצא בשנת 2012 כספר.
מחקריו נוגעים לתולדותיה של ממלכת ירושלים, ירושלים בתקופה הצלבנית, ומבצרים צלבניים: מבצר עתלית, מונפור ומבצר יחיעם.
מאמרים נבחרים.
מאמרים בכתבי עת.
pp. 555-566
יואן אלכסנדרו
יואן אלכסנדרו (ברומנית: Ioan Alexandru, שמו בלידה יון שאנדור Ion Şandor; 25 בדצמבר 1941 טופה מיקה, מחוז קלוז' - 16 בספטמבר 2000 בון, גרמניה) היה משורר, מסאי, מתרגם, פילולוג ופוליטיקאי רומני. נחשב למשורר הדתי החשוב ביותר של רומניה שלאחר מלחמת העולם השנייה ובעיני מבקרים אחדים - לאחד ממשמיכי הזרם ה"אוטוכטוניסטי" לקח חלק במהפכה הרומנית (1989) ואחריה היה ממקימי המפלגה הנוצרית דמוקרטית לאומית של האיכרים וסגן יושב הראש שלה. כיהן כחבר בבית הנבחרים ובסנאט הרומני.
רקע משפחתי ושנות לימודיו.
יואן אלכסנדרו נולד בטרנסילבניה, בכפר טופה מיקה (בהונגרית - פוסטה-טופה) במחוז קלוז', בשנת 1941, בימי הסיפוח מחדש של האזור להונגריה בהתאם לתכתיב וינה. כפרו שוכן בין יערות עצי אלון בגבעות המקדימות את ההרים המערביים של טרנסילבניה. הוריו היו האיכרים יואן שאנדור וולריה לבית קוזאר. במשפחתו נולדו דורות רבים של זמרי כנסייה אורתודוקסים..
אחרי שנות בית הספר העממי בכפרו למד בגימנסיה בכפר סן מיכאי הסמוך. בשנים 1962-1958 למד בבית הספר התיכון "גאורגה באריציו" בעיר קלוז' ובשנת 1962 התקבל לפקולטה לשפה ולספרות רומנית באוניברסיטת קלוז'. כעבור שנתיים המשיך את הלימודים באוניברסיטת בוקרשט. כסטודנט הצטיין בכישוריו הספרותיים ונחשב לאחת מתקוות השירה רומנית.