stanford-oval/wikipedia huggingface dataset:
פולימורפיזם (מדעי המחשב)
הרעיון הבסיסי

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

פולימורפיזם בצורתו הבסיסית ביותר קיים בכל שפת תכנות עילית. כאשר כותבים ביטויים כגון (4 + 4) או (5.3 + 2.1), אנו מנצלים את העובדה שאופרטור החיבור מועמס - כלומר, בעל משמעות כפולה - גם לטיפוס המשמש למספרים שלמים כמו 4, וגם לטיפוס המשמש לייצוג מספרים ממשיים כמו 2.1; זאת, אף על פי שהייצוג של מספרים אלו כביטים בשפת המכונה שונה לחלוטין בין מספרים שלמים למספרים ממשיים, ולכן גם פקודות המכונה המורות למעבד לבצע את פעולת החיבור תהיינה שונות; כל זה שקוף למתכנת, ולכן מקל על עבודתו.
פולימורפיזם אד-הוק > המרה (Coercion)

שפת C מאפשרת צורה מוגבלת מאוד של פולימורפיזם, נוסף על העמסה בסיסית של אופרטורים אריתמטיים: בשפה מוגדרת המרה אוטומטית מכל טיפוס של מצביע אל הטיפוס הגנרי *void, ובחזרה. מנגנון זה מנוצל על ידי פונקציות כגון פונקציית הספרייה הסטנדרטית qsort המשמשת למיון מערך, המקבלת מערך של מצביעים וממיינת אותו, תוך התייחסות אל כל המצביעים במערך כ-*void. טכניקה זו מאפשרת לבצע כל פעולה, אך היא איננה גמישה, ומצריכה מידע מפורש מהמתכנת בקשר לגודל של משתנים מהטיפוס שמועבר בפועל - מידע שאמור להימצא בידי המהדר בזמן הידור התוכנית, ולכן דורשת עבודה מיותרת. שפות אחרות, כגון שפת פסקל, לעיתים אינן מאפשרות אפילו גנריות בסיסית כזאת.
פולימורפיזם פרמטרי > שפת C

ניתן לבצע פולימורפיזם בעזרת פקודות מאקרו, שמבצעות החלפה של טקסט מסוים בתוכנית בטקסט אחר, לפני ההידור. לדוגמה, המאקרו הבא בשפת C :
#define min(x,y) ( ((x) < (y)) ? (x) : (y) )
מדמה פונקציה שמחזירה את המינימום מבין הביטויים המועברים אליה, ומתאימה לכל טיפוס עליו מוגדרת פעולת ההשוואה ">" (פעולה שבפני עצמה מועמסת, בדומה לאופרטור החיבור, ולכן פולימורפית). עם זאת, למאקרו כזה ישנם חסרונות רבים לעומת פונקציה אמיתית: לא מתבצעת בדיקת טיפוסים, ביטוי עם תוצאת לוואי עלול לבצע אותה מספר פעמים, ולהחזיר תוצאה לא צפויה, ועוד.
פולימורפיזם פרמטרי > שפת ++C

בשפת ++C‏, פולימורפיזם פרמטרי ממומש בזמן הידור, תוך שימוש בתבניות (templates):
template <typename T>
T max(T x, T y)
{
 return x < y ? y : x;
}
התבנית הזאת מגדירה משפחה של פונקציות max המקבלות שני איברים מסוג כלשהו, ומספר איברים ראשונים, ומחזירות את הגדול מביניהם. הדרישות היחידות על הטיפוס של המערך הן שניתן לבצע השוואה בין שני איברים באמצעות האופרטור '>', ושניתן לבצע העתקה של איבר. לכן ניתן להעביר כפרמטרים שני ערכים מטיפוס int, או double, או של מחלקה שהגדיר המשתמש ושמממשת את האופרטור '>'.
במקרה זה, בכל קריאה לפונקציה max יבדוק המהדר אם כבר הוגדרה פונקציה כזאת עבור הטיפוס המסוים המופיע בקריאה, ואם לא הוא ייצור פונקציה חדשה שהיא מופע של התבנית שהגדרנו.
ספריית התבניות התקנית של שפת ++C היא דוגמה לתכנות גנרי, ומבוססת ברובה על פולימורפיזם פרמטרי ושימוש בתבניות.
שפת עדה מאפשרת אף היא תכנות גנרי באופן דומה לתבניות של ++C.
פולימורפיזם פרמטרי > שפת ML

בשפת ML, התומכת בפולימורפיזם מלא ומתוחכם, הדבר מתבצע כך: המתכנת כותב פונקציה, למשל פונקציה שהופכת רשימה, בדרך הטבעית לו, ללא הצהרה על הטיפוס אותו הפונקציה מקבלת. המהדר של השפה מסיק לבד, על פי הביטויים המשמשים בפונקציה, אילו טיפוסים ניתן להעביר אליה. טיפוסים אלה עשויים להיות קונקרטיים, כגון int שהוא מספר שלם, או גנריים, ואז הם יסומנו בתג ושם, למשל a' - זה בעצם "משתנה טיפוס" (type variable). המנגנון ידרוש עקביות: אם פונקציה מקבל שני ארגומנטים מטיפוס a', ניתן להעביר אליה שני משתנים שהם מספר שלם או שני משתנים שהם מספר ממשי, אך לעולם לא משתנה אחד ממשי ואחד שלם, כיוון ששני הארגומנטים חייבים להיות מאותו טיפוס.
דוגמה לפונקציה פולימורפית בשפת ML:
fun f x = [x,x,x];
פונקציה זאת מקבל ערך x מכל טיפוס שהוא, ומחזירה רשימה של שלושה איברים שערכם x. הטיפוס של הפונקציה הוא "פונקציה מטיפוס a אל רשימה של a". בניגוד לתבניות של שפת ++C פונקציה פולימורפית היא פונקציה לכל דבר.
גם שפת Haskell תומכת בפולימורפיזם פרמטרי באופן דומה, ואף נרחב יותר.
פולימורפיזם פרמטרי > שפת ג'אווה

בשפות ג'אווה יש מתודות גנריות (החל מגרסה 7 ואילך), אך בדומה למחלקות גנריות בג'אווה, המידע לגבי הטיפוסים משמש רק לבדיקה בזמן קומפילציה ואיננו קיים בזמן ריצה, כך שזהו למעשה פולימורפיזם של הכלה (תת-טיפוסים) הנבדק בזמן הידור.
פולימורפיזם פרמטרי > שפת #C

בשפת C# ישנן מתודות גנריות.
פולימורפיזם של תת-טיפוסים

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

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

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

פולימורפיזם יכול להיות ממומש בזמן ריצה או בזמן הידור. ב- C++‎ ממומש פולימורפיזם של זמן ריצה על ידי מצביע מסוג מופשט, המצביע לאובייקט קונקרטי. הקוד הבא מדגים איך ניתן לעשות זאת:
class Car {...};

 class Bus: public Car{...};

 class PrivateCar: public Car{...};
void changeWheel(Car *p) {
 p->stop();
 p->placeJack();
 p->lift();
 ...
 }
int main() {
 Car* array[3];
 array[0]=new Bus();
 array[1]=new PrivateCar();
 array[2]=new Bus();
 for(int i=0;i<3; ++i)
 changeWheel(array[i]);
 }
בדוגמה זו, הפונקציה changeWheel משתמשת במנגנון הפולימורפיזם על מנת לתאר את אופן החלפת הגלגל במכונית כלשהי.
הפונקציה מקבלת מצביע למכונית כללית. למעשה מדובר בסוג מסוים של מכונית, מכונית ספציפית, אבל changeWheel מתייחסת אליה פשוט כמכונית ומבצעת עליה רק פעולות שאפשר לעשות על כל מכונית. כאשר changeWheel תבקש ממכונית לעשות פעולה מסוימת, המכונית תבצע את הפעולה באופן ייחודי לה. ניתן לראות שהממשק למכונית מוגדר על ידי ההתייחסות המופשטת (המצביע למכונית כללית) ואילו הפעולה שתתבצע למעשה מוגדרת על ידי הטיפוס הספציפי (סוג המכונית).
כל הדברים הללו מתאימים לאופן שבו אנו משתמשים באבסטרקציה בחיי היום יום. נחשוב לדוגמה על המשפט: "בחדר ההמתנה צריך לשים מספר כיסאות בשביל שהלקוחות לא יצטרכו לחכות בעמידה". המשפט משתמש במושג המופשט "כיסא". יש המון סוגי כיסאות אבל המשפט מתייחס רק לתכונה המשותפת של כולם: כיסא מאפשר לשבת. כאשר המשפט ייושם, ייבחרו סוגים ספציפיים של כיסאות. אולי יהיו להם ארבע רגליים ואולי שלוש, אבל בכל מקרה הם יאפשרו ללקוחות להמתין בישיבה.
גם בדוגמה זו השתמשנו בהתייחסות מופשטת, התנסחנו באופן כללי שאיננו תלוי בסוג הספציפי ולבסוף ראינו איך הטענות הכלליות מקבלות משמעות ספציפית בהתאם לסוג שבו מדובר.
הפעלת אלגוריתם כללי על מבנה נתונים הטרוגני ניתנת לביצוע על ידי פולימורפיזם בזמן ריצה ולא ניתנת לביצוע על ידי פולימורפיזם בזמן הידור. לדוגמה מערך המכוניות שהופיע בדוגמה הראשונה, מכיל מכוניות מסוגים שונים, כלומר מדובר במערך הטרוגני ולא הומוגני. בדוגמת הקוד השנייה היינו יכולים להפעיל את הפונקציה הפולימורפית רק על מערך הומוגני של מכוניות.
פולימורפיזם של תת-טיפוסים > מימוש פולימורפיזם על ידי המהדר

נתבונן שוב בקטע הקוד המממש פולימורפיזם בזמן ריצה:
void changeWheel(Car *p) {
 p->stop();
 p->placeJack();
 p->lift();
 ...
}
נשאלת השאלה כיצד מתורגם קטע זה לשפת מכונה. לדוגמה הפעלת הפונקציה stop:
p->stop();
בניגוד להפעלת פונקציה רגילה, בזמן ההידור לא ידוע איזה קוד יש להפעיל. האם מדובר ב -() Bus::stop ,ב -() PrivateCar::stop
או אולי פונקציית stop של טיפוס אחר.
התשובה לשאלה זו מתבררת רק בזמן ריצה, כאשר ידוע על איזה טיפוס ספציפי מצביע p.
הקומפיילר, אם כן, צריך לייצר קוד הקורא לפונקציה מסוימת בהתאם לטיפוס האובייקט שמוצבע על ידי p באותו הרגע. כדי לייצר קוד כזה, יש להתייחס לקוד הנמצא בכתובת משתנה. במילים אחרות יש להשתמש במושג של מצביע לפונקציה.
הקוד הבא מדגים איך אפשר לממש פולימורפיזם בשפת C, שפה שלא תומכת בפולימורפיזם באופן מובנה:
#include <malloc.h>
 #include <stdio.h>

 typedef void (*fun_t)(void);

 typedef struct Car {
 fun_t stop;
 /* fun_t placeJack, lift, ... */
 } Car;

 Car* createCar(fun_t stopFunction) {/*fun_t placeJackFunction, fun_t liftFunction,...*/
 Car *p = (Car*)malloc(sizeof(Car));
 p->stop = stopFunction;
 /* p->placeJack = placeJackFunction; p->lift = ... */
 return p;
 }

 void busStop() { printf("Stopping the bus...\n"); }
 /* void busPlaceJack() {...} void busLift() {...} ... */
 Car* createBus() { return createCar(busStop); }

 void privateStop() { printf("Stopping the private car...\n"); }
 /* void privatePlaceJack() {...} void privateLift() {...} ... */
 Car* createPrivate() { return createCar(privateStop); }

 void changeWheel(Car *car) {
 car->stop();
 /* car->placeJack(); car->lift();... */
 }

 int main() {
 Car *p1 = createBus(), *p2 = createPrivate();
 changeWheel(p1);
 changeWheel(p2);
 /* free memory .. */
 return 0;
 }
הדוגמה האחרונה פשטנית במקצת. היא מתחמקת מבעיות טכניות שונות המופיעות באובייקטים פחות מנוונים מאלה שבדוגמה. בנוסף, ניתן לראות שהשיטה המוצגת בדוגמה, בזבזנית בזיכרון. עבור כל אובייקט (מכונית) יש לשמור מספר מצביעים לפונקציות כמספר הפונקציות שיש למכונית. אותם מצביעים לפונקציות יכולים להוות את רוב הזיכרון הדרוש לאחסון האובייקט. בזבוז הזיכרון נובע מהעובדה, שאוסף הפונקציות עליהם מצביע האובייקט הוא מאפיין של ה - class ולא של האובייקט הספציפי. לדוגמה, לכל האובייקטים מסוג Bus יהיו בדיוק אותם ערכים בכל מצביעי הפונקציות שלהם.
בגלל העובדה שמדובר בעצם במידע של ה-class, הגיוני לצמצם את כל מצביעי הפונקציות למצביע יחיד שיפנה למקום בו נמצאת כל האינפורמציה של ה-class. האינפורמציה הזו יכולה להיות פשוט מערך של מצביעים לפונקציות - אותם מצביעים שתוארו בדוגמה והוו שדות באובייקט.
הרעיון שתואר הוא באמת השיטה המקובלת לממש פולימורפיזם של זמן ריצה. אותו מערך פונקציות נקרא virtual table ואותו שדה יחיד המצביע עליה נקרא virtual table pointer.
כפי שניתן לראות בתמונה, כל אובייקט מסוג Car או מסוג היורש מ-Car, מחזיק מצביע לטבלה ייעודית לאותו סוג. הטבלה מחזיקה מצביעים לפונקציות. הקוד
p1.placeJack()
יתורגם לקוד הדומה לקוד הבא:
p1.m_vtbl_ptr[2]()
כפי שניתן לראות, קיימת כאן הסתמכות על העובדה שהפונקציה placeJack נמצאת תמיד באותו אינדקס, בכל הטבלאות הווירטואליות (במקרה זה - 2).
פולימורפיזם של תת-טיפוסים > מחיר פולימורפיזם הממומש על ידי virtual table

מבחינת זיכרון, כאשר ל-Class יש לפחות פונקציה פולימורפית (וירטואלית) אחת, כל אובייקט מסוגו (ומסוג יורשיו) יכיל מצביע virtual table pointer. עבור אובייקטים גדולים הדבר עשוי להיות זניח אבל עבור אובייקטים קטנים, במיוחד אם יש מופעים רבים שלהם, הדבר עלול להיות משמעותי.
מבחינת זמן הריצה המחיר הוא מעבר אחד דרך תא של מערך הטבלה הווירטואלית. בדרך כלל הדבר מתורגם לפקודות בודדות בשפת מכונה (במקרים רבים - פקודה בודדת). לרוב, התשלום בזמן הריצה הוא זניח אבל במקרים בהם הפונקציה הווירטואלית קצרה מאוד והיא נקראת מספר רב של פעמים - המחיר עלול להיות משמעותי.
באופן כללי, השימוש בפונקציות פולימורפיות נחשב לטכניקה יעילה.
לקריאה נוספת

John C. Mitchell, Concepts In Programming Languages, Cambridge University Press, 2003 פרק 6
David A. Watt, Programming Language Concepts and Paradigms, פרק 7
הערות שוליים

↑  (Generic Methods (C# Programming Guide, באתר מיקרוסופט
קורק סיטי

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

ליגת העל האירית: 3
1992/93, 2005, 2017
הגביע האירי: 4
1998, 2007, 2016, 2017
פרסום הנס

על הנסים לפורים, המכיל את סיפור מגילת אסתר בתמצית
על הנסים לחנוכה, מציג את נס פך השמן
במקור הדין, הדלקת נרות חנוכה צריכה להיות בחלון הפונה לרשות הרבים כדי לפרסם את הנס
חנוכייה דולקת לצד החלון למען פרסום הנס
פִּרְסוּם הַנֵּס, או בשמו התלמודי פִּרְסוּמֵי נִיסָּא, הוא מושג הלכתי המאפיין מצוות שנתקנו לשם פרסום נסים היסטוריים שאירעו לעם ישראל.
חשיבות פרסומי ניסא

במסכת שבת דנה הגמרא במי שיש לו כסף מספיק לקידוש או להדלקת נר חנוכה אך לא לשניהם. שואלת הגמרא:
”נר חנוכה וקידוש היום – מהו? קידוש היום עדיף, דתדיר? או דילמא נר חנוכה עדיף, משום פרסומי ניסא?” (תלמוד בבלי, מסכת שבת, דף כ"ג, עמוד ב'.) 
הגמרא אומרת שיש להעדיף את הדלקת נר חנוכה משום "פרסום הנס" ששייך בו.
מצוות פרסום הנס

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

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

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

↑  הרב אליעזר מלמד - פניני הלכה
↑  תלמוד בבלי, מסכת ברכות, דף י"ד, עמוד א'.
↑  תלמוד בבלי, מסכת שבת, דף כ"ד, עמוד א'.
↑  תלמוד בבלי, מסכת פסחים, דף קי"ב, עמוד א'.
↑  פרי מגדים.
↑  משנה ברורה תרפז יא.
↑  מגיד משנה, הלכות חנוכה, פרק ד', הלכה י"ב.
↑  שולחן ערוך, אורח חיים, סימן תע"ב, סעיף י"ג, על פי תלמוד בבלי, מסכת פסחים, דף צ"ט, עמוד ב' ופירוש הרשב"ם שם ד"ה ואפילו (ב).
↑  משנה תורה לרמב"ם, ספר זמנים, הלכות מגילה וחנוכה, פרק ד', הלכה י"ב.
↑  ספר זכריה, פרק ד'. ראו תלמוד בבלי, מסכת מגילה, דף ל"א, עמוד א'; משנה תורה לרמב"ם, ספר אהבה, הלכות תפילה וברכת כהנים, פרק י"ג, הלכה י"ז; שולחן ערוך, אורח חיים, סימן תרפ"ד, סעיף ב'.
↑  תוספות, מסכת שבת, דף כ"ג, עמוד ב' דיבור המתחיל הדר; אור זרוע, חלק ב, סימן תשצ"ד; מרדכי, מסכת שבת, סימן תתל"א; שולחן ערוך, אורח חיים, סימן תרפ"ד, סעיף ג'.
↑  תוספות, מסכת שבת, דף כ"ג, עמוד ב' דיבור המתחיל הדר; אור זרוע, חלק ב, סימן תשצ"ד.
↑  תלמוד בבלי, מסכת שבת, דף כ"ב, עמוד א'; משנה תורה לרמב"ם, ספר זמנים, הלכות מגילה וחנוכה, פרק ד', הלכה ז'; שולחן ערוך, אורח חיים, סימן תרע"א, סעיף ו'.
↑  פירוש רש"י לתלמוד, מסכת שבת, דף כ"ב, עמוד א', ד"ה פסולה.
↑  תלמוד בבלי, מסכת מגילה, דף י"ז, עמוד א'; שולחן ערוך, אורח חיים, סימן תר"צ, סעיף ט'.
↑  בית הבחירה למאירי, מסכת מגילה, דף י"ז עמוד א',
↑  שולחן ערוך, אורח חיים, סימן תר"צ, סעיף ח'.
↑  ארחות חיים, חלק א', הלכות מגילה ופורים, אות כ"ד; שולחן ערוך, אורח חיים, סימן תר"צ, סעיף י"ז.
↑  שולחן ערוך, אורח חיים, סימן תר"צ, סעיף י"ח,
↑  משנה ברורה, סימן תר"צ, סעיף קטן ס"א
| פורים |
| --- | --- | --- |
| מצוות החג | מקרא מגילה • מתנות לאביונים • משלוח מנות • סעודת פורים ושתיית יין בפורים • פרסום הנס |  |
| מנהגים | משנכנס אדר מרבין בשמחה • זכר למחצית השקל • אוזן המן • התחפשות  • רעשן • בובת המן |  |
| מגילת אסתר | אישים במגילה: אחשוורוש • ושתי • המן • עשרת בני המן • זרש • בגתן ותרש • מרדכי היהודי • אסתר • חרבונה • אבגתא • התך • הגי תוספות למגילת אסתר • חלום מרדכי • תרגומי מגילת אסתר לארמית • היעדרותו של אלוהים ממגילת אסתר • מדרש אבא גוריון |  |
| תפילות ופיוטים | למנצח על אילת השחר • על הנסים • אשר הניא • ויאהב אומן ("קרובץ לפורים") • מי כמוך ואין כמוך • קוראי מגילה |  |
| שירים | ליהודים הייתה אורה ושמחה וששון ויקר • חג פורים (שיר) • אני פורים • ליצן קטן נחמד • תן כתף • ככלות ייני • רשימת שירים ופיוטים לפורים • פיוטים ושירים נוספים |  |
| שמחת פורים | פורים שפיל • רב פורים • עדלאידע • ליל שיכורים • פרודיות לפורים |  |
| מאכלים | אוזן המן • פזואלוס • פלודן • קרפלך • מקרוט • ספרא (מאפה) |  |
| שונות | עיר מוקפת חומה מימות יהושע בן נון • בן עיר שהלך לכרך ובן כרך שהלך לעיר • פורים משולש • פורים קטן • תענית אסתר • פרשת זכור • מצוות זכירת מעשה עמלק • מחיית זכר עמלק • מסכת מגילה • סעודת אסתר • פורים שני • קבר אסתר ומרדכי |  |
חגי ישראל ומועדיו
הבהרה:  המידע בוויקיפדיה נועד להעשרה בלבד ואין לראות בו פסיקה הלכתית.
חנוכיית חוצות חשמלית מול ארמון קרלסרוהה. חנוכייה חשמלית, לפי רוב הדעות אינה כשרה להדלקה, אך כשהיא בחוצות, יש בה מעלה בכך שמפרסמת את הנס ברבים.
קונור אוברסט

| --- | --- |

 לידה:  15 בפברואר 1980 (בן 44) ארצות הברית אומהה, נברסקה, ארצות הברית
 מוקד פעילות:  ארצות הברית 
 תקופת הפעילות:  מ-1992
 מקום לימודים:  אוניברסיטת נברסקה באומהה 
 סוגה:  זמר-יוצר   אינדי רוק   פולק רוק
 שפה מועדפת:  אנגלית 
 כלי נגינה:  גיטרה, כלי מקלדת, תוף, כלי הקשה, פסנתר, גיטרה בס, קלידים מוזיקליים 
 חברת תקליטים:  תקליטי סאדל קריק
 www.thisisbrighteyes.com
 פרופיל ב-IMDb
 
קונור מולן אוברסט (באנגלית: Conor Mullen Oberst; נולד ב-15 בפברואר 1980) הוא זמר-יוצר אמריקאי, הידוע בעיקר כחבר הלהקה ברייט אייז. בעברו אוברסט היה גם חבר בלהקות נוספות, בהן קומנדר ונוס (Commander Venus), דספרסידוס (Desaparecidos) ופארק אבניו (.Park Ave).
"סאדל קריק" ו"טים לאב"

אוברסט הוא אחד מחבריה המייסדים של חברת התקליטים העצמאית סאדל קריק, המפיצה להקות שונות, בהן קרסיב (Cursive), דספרסידוס (Desaparecidos), הפיינט (The Faint), ריילו קיילי (Rilo Kiley), ברייט אייז.
אוברסט ייסד את חברת התקליטים טים לאב (Team Love). מטרת הקמת החברה הייתה, במילותיו,
כדי לעשות דברים שונים, או קטנים יותר, שלא יכולנו לעשות בסאדל קריק
כגון אלבומי הסולו של טילי והוול (Tilly and the Wall) והזמרת ג'ני לואיס יחד עם התאומות ווטסון (The Watson Twins).
השפעות

אוברסט נמשך למוזיקה מגיל צעיר מאוד, והושפע רבות מאהבתו של אחיו ללהקה הקיור. אוברסט צוטט כשאמר שאוסף הסינגלים הראשון של הקיור, Staring at the Sea, היה האלבום הראשון אותו קנה, וכמו כן הוא אחד האלבומים המועדפים עליו.
אני חושב שזה היה בכיתה ג'... קניתי את הקלטת בחנות תקליטים מקומית בשם Homer's in Omaha. פשוט אהבתי את קולו של רוברט סמית. זה פשוט נשמע טוב.
אוברסט הושפע רבות מהמוזיקאים המקומיים דייב דונדרו וסיימון ג'וינר. ג'וינר כתב את השיר "Burn Rubber", אשר להקתו של אוברסט, ברייט אייז, ביצעה לו גרסת כיסוי שיצאה כסינגל בשם "Take It Easy (Love Nothing)". ג'וינר ואוברסט נהגו לעשות סיבובי הופעות קטנים, בעיקר בסופי שבוע, מכיוון שלג'וינר יש משפחה.
בנוסף, אוברסט הושפע רבות מתחיית הפולק של שנות ה-60 ומאמנים כגון ניל יאנג, לאונרד כהן, וזמרת הקאנטרי אמילו האריס. באחת מהופעותיו חידש אוברסט יחד עם ג'ים ג'יימס ומ. וורד את שירו של ניל יאנג "Out on the Weekend". כמו כן, הריס שרה בכמה מן השירים באלבומה של ברייט אייז, I'm Wide Awake, It's Morning. אוברסט מושפע גם מן המוזיקאי אליוט סמית', ואף מבצע גרסת כיסוי של שירו "The Biggest Lie" בהופעותיו.
קונוס האור

קונוס האור המייצג מרחב דו-ממדי עם ממד נוסף של זמן.
בתורת היחסות הפרטית, קונוס האור (או: חרוט האור) הוא המשטח המתאר את תנועתה בזמן של קרן אור במרחב-זמן (מרחב מינקובסקי). את התנועה הארבע-ממדית הזו ניתן לדמיין בשלושה ממדים, אם בוחרים בשני הצירים האופקיים לייצג שניים מתוך שלושת ממדי המרחב, ובציר האנכי לייצג את ממד הזמן.
את קונוס האור בונים כדלקמן: אם  p הוא אירוע המייצג שליחת הבזק (פעימת) אור בזמן  \,t_{0}, כל האירועים שההבזק יכול להגיע אליהם מ- p מרכיבים את החלק העליון בקונוס האור של  p, ואילו האירועים אשר יכולים לשלוח הבזק אור שיגיע אל  p מרכיבים את החלק התחתון של  p (ראו איור).
בהינתן אירוע  E, קונוס האור מסווג את כל האירועים במרחב-זמן ל-5 קטגוריות נפרדות:
אירועים בעבר של קונוס האור של  E, על שפת קונוס העבר.
אירועים בעתיד של קונוס האור של  E, על שפת קונוס העתיד.
אירועים בתוך העבר של קונוס האור של  E, שהם אירועים אשר יכולים לפלוט חלקיק חומרי (שנע במהירות נמוכה ממהירות האור) ולהשפיע על  E.
אירועים בתוך העתיד של קונוס האור של  E, אשר יכולים להיות מושפעים מחלקיק חומרי הנפלט מ- E.
אירועים מחוץ לקונוס האור של  E, אשר אינם יכולים להשפיע או להיות מושפעים מ- E.
אם משתמשים ביחידות בהן מהירות האור בריק היא 1, למשל: מודדים את המרחב בשניות-אור ואת הזמן בשניות, שיפוע הקונוס יהיה 45°, משום שאור עובר בריק מרחק של שניית-אור אחת בשנייה. מאחר שהיחסות הפרטית דורשת כי מהירות האור תהיה זהה בכל מערכת ייחוס אינרציאלית, כל הצופים חייבים למצוא את אותה זווית של 45° עבור קונוסי האור שלהם. תכונה זו מובטחת באמצעות טרנספורמציית לורנץ.
שני אירועים במרחב-זמן שנמצאים מחוץ לקונוס האור אינם יכולים להיות קשורים בקשר סיבתי, כלומר אף אחד מהם אינו יכול להיות הסיבה של האחר. למעשה, לא ניתן כלל לצפות באירוע אחד מהנקודה במרחב-זמן בה התרחש האירוע האחר.
ראו גם

דיאגרמות מינקובסקי
משוואת הגלים
לקריאה נוספת

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

פרטיזן בלגרד (בסרבית-קירילית: Фудбалски клуб Партизан Београдн) היא קבוצת כדורגל סרבית מעיר הבירה בלגרד, המשחקת בליגת העל הסרבית. המועדון הוא אחד משני המועדונים הגדולים בעיר, ואחד המועדונים המצליחים והמעוטרים בתולדות סרביה ויוגוסלביה, עם 27 אליפויות.
היריבה הגדולה ביותר של המועדון היא הכוכב האדום בלגרד, והמשחקים ביניהם מכונים הדרבי של בלגרד או "הדרבי הנצחי", ולרוב מלווים באלימות.