בשנת 1978 נחשפו בידי שני מפענחים של ה-CIA מספר צילומי אוויר אחדים מתקופת מלחמת העולם השנייה שנעשו על ידי בעלות הברית. בין הצילומים ניתן להבחין במחנה בירקנאו, שצולם בדרך אגב.
שירות הביון הבריטי התחקה אחר המידע שנשלח לברלין ועלה עליו, וכך הגיע לידיו מידע רב על פעילות הצבא הנאצי, הוורמאכט. בשנת 2001 התגלה מסמך נדיר שנשמר קרוב ל-58 שנים בשירות הביון הבריטי. המסמך קרוי "מברק הפלה" על שם קצין בכיר בצבא הנאצי בשם הרמן הפלה ששלח לברלין ב-18 בינואר 1943 מידע מדויק על מספר הקורבנות שנספו בשנת 1942 בשלושת מחנות ההשמדה של מבצע ריינהרד: בלז'ץ, סוביבור וטרבלינקה, וכן במחנה מיידנק, שבאותה שנה הוסבו חלקים ממנו להשמדת המונים.
המספרים שמסר הרמן הפלה הם: בלז'ץ: 434,508 קורבנות, סוביבור: 101,370 קורבנות, טרבלינקה: 713,555 קורבנות, ומיידנק: 24,733 קורבנות. לא ניתן לדעת אם מספרים אלו כוללים גם רבבות רבות של יהודים שנספו במהלך הנסיעה למחנות. על פי הערכות, קרוב ל-25% מכלל המובלים להשמדה הגיעו למחנות מתים, בגלל תנאי הנסיעה הקשים בקרונות הבקר שבהם נדחסו. נתונים אלו קרובים לאומדנים שהיו מקובלים ביד ושם ובקרב חוקרי השואה עד לגילויו של מסמך זה.
מברק הפלה משמש ראיה מוחצת כנגד טיעוניהם של מכחישי השואה. גילויו גם מהווה ראיה לכך שבידי בעלות הברית אכן היה מידע על השמדת המוני יהודים כאשר הייתה בעיצומה באירופה, אך הן לא פעלו להפסקתה. מידע זה שהתווסף על מחקרים שנערכו על מספר קורבנות מחנות ההשמדה הנוספים: חלמנו ואושוויץ אמנם מפחית בכמה רבבות את מספר הקורבנות בכל אחד מן המחנות מהאומדן שהיה מקובל, אך אינו מפחית את האומדן הכללי של נספי השואה שנע סביב שישה מיליון.
ככל הנראה נבע אי ההתקפה של בעלות הברית מבעיות טכניות של חוסר דיוק בפצצות באותם ימים וצורת המבנה של המחנות. כמו כן, העדיפו הצבאות להתמקד במאמץ המלחמתי, ולא הסכימו להפנות ציוד וכלים כדי לפגוע במחנות ההשמדה. ישנם חוקרים הטוענים כי סיבה נוספת לאי התקיפה היא חוסר רצונן של בעלות הברית לגל פליטים שיציף את מדינותיהם, אם ינצלו אסירי המחנות.
אומדנים של הקורבנות.
מסמך הפלה שפורסם בשנת 2000 ובו מצוינים מספרי הקורבנות בארבעת מחנות מבצע ריינהרד בשנת 1942 המעיט במעט את האומדנים שהיו מקובלים עד אז ונכתבו באנציקלופדיית השואה שהוצאה על ידי יד ושם ב-1990.
מחנה מיידנק השתייך אף הוא לרשת המחנות הנ"ל ובו נמשכה ההשמדה עד יולי 1944, אז שחרר הצבא הסובייטי את המחנה. מספר הקורבנות היהודים בו כנראה הגיע ל-60,000 מתוך 200,000 קורבנות.
ששת מחנות ההשמדה העיקריים הוקמו על ידי הגרמנים על אדמת פולין:
מחנה השמדה נוסף הוקם על ידי משטר האוסטאשה בקרואטיה:
מחנות השמדה קטנים כללו את:
חוק המשיכה האוניברסלי
פרולוג (שפת תכנות)
פרולוג (באנגלית: Prolog) היא שפת תכנות לוגית שפותחה במקור לכתיבת יישומי בינה מלאכותית. השפה היא שלמה טיורינג (Turing-Complete), כלומר ניתן לממש באמצעותה כל מה שאפשר לממש בשפות התכנות הנפוצות. שמה נגזר מצירוף המילים "תכנות בלוגיקה" (באנגלית: PROgramming LOGic).
השפה פותחה על ידי אלן קולמר (Alain Colmerauer ) באוניברסיטת אקס-מרסיי והוכנסה לשימוש בשנת 1972.
בעבר תלו בפרולוג תקוות גדולות והיו שחשבו שהיא מסמלת את הכוון העתידי של שפות התכנות. כיום אפשר לומר שהתקוות לא התממשו ופרולוג, אלגנטית ומעניינת ככל שתהיה, נותרה שפה אקדמית בלבד.
מאפייני השפה.
בניגוד לשפות התכנות הנפוצות, תכנות בפרולוג איננו כתיבה של סדרת הוראות לביצוע.
הרצה של תוכנית פרולוג היא הגדרת עובדות וכללים והצגת שאילתות לגביהם. מבחינה זו, יש קשר הדוק בין פרולוג לבסיסי נתונים. לפרולוג יש מנגנון הוכחה פנימי שנועד להשיב על שאילתות מורכבות. לב מנגנון ההוכחה הוא אלגוריתם להאחדה של תבניות (unification).
בנוסף, כולל מנגנון ההוכחה אלגוריתם פשוט של גישוש נסוג (Backtracking).
הקוד של פרולוג מבוצע בדרך כלל על ידי מפרש ולא עובר הידור. עובדה זו, בנוסף לעובדה שמנגנון ההוכחה איננו יעיל בדרך כלל, גורמים לתוכניות פרולוג לעבוד לאט יחסית.
תכנות בפרולוג מורכב משני סוגי הצהרות: עובדות וכללים.
עובדה עשויה להיות מוגדרת ביטוי פשוט (אטום):
.summer
שאפשר להתייחס אליו כאל הטענה "עכשיו קיץ". עובדות יכולות גם להגדיר יחס על איבר בודד (פרדיקט), כגון
.male(yoni)
.tall(yoni)
שמגדירים את המשתנה yoni להיות "זכר" ו"גבוה". או על מספר איברים ואז תגדיר יחסים, כגון:
.love(yoni, rotem)
שמגדיר שיוני "אוהב את" רותם. יש לשים לב שאף אחת מהמילים tall, love, yoni, rotem, איננה מוגדרת בשפה עצמה, ומשמעותן מתקבלת מהמשך השימוש במשתנים אלו.
סוג שני של הצהרות בשפה הוא כלל. למשל
.love(rotem, X) :- male(X), love(X, rotem)
שמגדירה שרותם אוהבת מישהו (X כאן הוא משתנה, כמו כל מילה שמתחילה באות גדולה) אם X זכר וגם X אוהב את רותם.
נגדיר כעת כלל נוסף:
.married(X,Y) :- summer, love(X,Y), love(Y,X)
כלל זה אומר ש-X ו-Y "נשואים" אם "עכשיו קיץ" וגם X "אוהב את" Y וגם Y "אוהב את" X.
לאחר שמגדירים עובדות וכללים, ניתן לשאול שאלות על מאגר הנתונים שבנינו. מי נשואים?
.-? married(X,Y)
והמפרש יגיב
X = yoni
Y = rotem
בגלל המבנה התיאורי, היכולת לנסח חוקים בצורה מופשטת ומנגנון ההוכחה המובנה, תוכניות פרולוג נוטות להיות קצרות ואלגנטיות מאד.
פרולוג מעצם טבעה היא שפה רקורסיבית - אימות השאילתה מתבצע באמצעות קריאות מקוננות חוזרות ונשנות על סט החוקים הנתון עד למסקנה החד משמעית בדבר נכונות השאילתה (במקרה של שאילתת נכונות), או עד גמר איסוף כל הפתרונות האפשריים (במקרה של שאילתה פתוחה השולחת פרמטרים למילוי).
כל תוכנית פרולוג היא למעשה אוסף של פסוקים לוגיים הידועים כפסוקי הורן (Horn Clauses).
אחד הנושאים המעניינים בהתפתחות שפת הפרולוג שהיווה מקור לוויכוחים אקדמיים מרים, הוא ההוספה של הגיזומים (Cut - תחביר: סימן קריאה !) לתחביר השפה.
ה-Cut, מצד אחד, מאפשר הגדלת יעילות הריצה בצורה משמעותית, על ידי כך שהמתכנת מגדיר לאינטרפרטר לא לבצע גישוש נסוג במקרים מסוימים, שבהם המתכנת יודע שהגישוש אינו רצוי מבחינתו או נידון להכשל; ומהצד השני, פוגם בצורה משמעותית בתחביר הדקלרטיבי של השפה, ומקרב אותה לשפות הפרוצדורליות (לדוגמה, הסדר שבו מוגדרים הפרדיקטים משפיע על תוצאות הריצה, תופעה שכמובן אין לה מקום בשפה דקלרטיבית אמיתית). בפרט, cut היא פקודה ולא הצהרה, ולכן היא שייכת לפרדיגמה האימפרטיבית בדומה לשפות סטנדרטיות יותר.
שפת הלוויין דטלוג מוגדרת כתת-שפה (חלקית ממש) של פרולוג, אשר מצד אחד יותר מצומצמת מפרולוג, אבל מצד שני היא דקלרטיבית אמיתית, ואינה תומכת בגיזומים.
בדטלוג גם אין פונקציות ומנגנון ההסקה שלה הוא מטה-מעלה, בניגוד לפרולוג שהיא מעלה-מטה. דטלוג משמשת בעיקר למסדי-נתונים לוגיים בתחומי הבינה העסקית.
מימושים.
למחשבים אישיים התפרסם Turbo Prolog ו-Amzi! פרולוג, שניהם כוללים מהדר לפרולוג.
כמו כן קיימת הרחבה גרפית ותמיכה בשפה העברית לאמזי פרולוג OW Prolog.
מבנה נתונים
במדעי המחשב, מבנה נתונים הוא דרך לאחסון נתונים במחשב, כך שניתן יהיה להשתמש בנתונים באופן יעיל. האחסון הוא בזיכרון המחשב או בטבלאות בבסיסי נתונים. מבני נתונים מספקים הפשטה מסוימת של המציאות. מקובל מגוון רחב של מבני נתונים, שכל אחד מהם מאפשר אלגוריתם יעיל לבעיה מסוימת של אחסון נתונים ואחזורם. פעמים רבות, בחירת מבנה הנתונים הנאות היא שלב חשוב בעיצוב התוכנית. בתכנות מונחה עצמים מיוחסת חשיבות מיוחדת לתמיכה במבני נתונים.
יש להבחין בין מבנה נתונים לבין מבנה נתונים מופשט (ADT - abstract data type). מבנה נתונים מופשט מגדיר ממשק והוא חסר מימוש, ויכולים להיות מבני נתונים אחדים שמממשים את הממשק שהוא מציע. לדוגמה, מחסנית היא מבנה נתונים מופשט, שמערך ורשימה מקושרת הם מימושים אפשריים שונים שלו.
העיסוק במבני נתונים הוא חלק מהתפתחותם של מדעי המחשב בחצי השני של המאה העשרים.
שיקולים בבחירת מבנה נתונים.
בחירת מבנה נתונים מתאים יכולה לכלול מספר שיקולים וכרוכה לעיתים בלבטים. השיקולים העיקריים הם צריכת הזיכרון ומהירות הביצוע. לכל מימוש של מבנה נתונים יש פעולות שאותן הוא מבצע מהר יחסית ופעולות איטיות יותר. בחירת מבנה נתונים נובעת, לכן, מהשכיחות היחסית המוערכת בין הפעולות השונות. לעיתים יש חשיבות מרבית לזמן הביצוע הממוצע ולעיתים לזמן הביצוע הגרוע ביותר.
לדוגמה, לעיתים קרובות עולה התלבטות לגבי שמירה של סדרת נתונים ברשימה מקושרת או במערך דינמי. לרשימה יש יתרון בהוספת איבר חדש בין איברים קיימים ברשימה. למערך יש יתרון בגישה מהירה לאיבר שרירותי. הבחירה בין שני מבני הנתונים מתבססת בדרך כלל על השכיחות המצופה של הפעולות הללו.
מיון (אלגוריתם)
מיון הוא אלגוריתם לסידור נתונים על פי ערכי מפתח, למשל סידור רשימה של אנשים לפי שם המשפחה שלהם. ישנן דרכים רבות למיין ערכים. דרכים אשר שונות זו מזו ברמת הפשטות, היעילות והמהירות שלהן.
מבחינים בשני סוגי מיון: מיון עולה (הערך הקטן ביותר ראשון) ומיון יורד (הערך הגדול ביותר ראשון). (ניתן לבצע מיון בטבלה הבאה לפי כל אחד מהשדות על ידי לחיצה על כותרת השדה)
מיון נחוץ מאוד כאשר עוסקים בעיבוד מידע בבסיסי נתונים, דבר שמפשט ומייעל עבודה עם נתונים ובכללה איתור תוכן, פעילות בין טבלאות ופעילויות אריתמטיות. כך בדרך כלל בבסיסי נתונים שדה חשוב לפעילות מכל סוג, יכלל באינדקס שהוא שדה ממוין, וכל תוכן שיוכנס לתוכו ימוין אוטומטית מאחרי הקלעים.