כלכלת שוק שבוי

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

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

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

אני לא יודע אם יש מה לעשות נגד זה, אבל בתור התחלה צריך לזהות שזה מה שקורה.

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

Java singleton – the next generation

סינגלטון הוא אחד התבניות הנפוצות בתוכנה.
בגדול, סינגלטון הוא אובייקט יחיד מסוג מסויים במערכת, שכולל פונקציה סטטית שמאפשרת גישה נוחה לאובייקט מכל מקום במערכת.
למשל, אם יש אובייקט שמטפל בשליחת אימיילים, סביר שהוא יהיה סינגלטון כי אין ברוב התוכנות משמעות לכמה אובייקטים שיטפלו בשליחת אימיילים.
בדרך כלל כותבים סינגלטון ככה:
[code lang="java"]
public class EmailSender
{
private static EmailSender s_instance;

private EmailSender(){} // private constructor

public static synchronized EmailSender getInstance()
{
if (s_instance == null)
s_instance = new EmailSender();
return s_instance;
}

public void sendEmail(String recepient, String subject, String text)
{
// …
}
}
[/code]
כדי להשתמש בסינגלטון ככה:
[code lang="java"]
EmailSender.getInstance().sendEmail(…);
[/code]
כמה דברים לשים אליהם לב:
* יש בנאי פרטי, כדי למנוע מכל מני גורמים "לא מוסמכים" לאתחל עותק משל עצמם של הסינגלטון.
* הפונקציה getInstance צריכה להיות מסונכרנת כדי למנוע מצב שבו שני ת'רדים שונים ניגשים במקביל לפונקציה וגורמים לאיתחול של שני אובייקטים במקום אחד.

עד כאן, טרויאלי לכל מי שכתב תוכנה בג'אווה.
הפוסט הזה הוא על דרך אלטרנטיבית לכתיבת סינגלטון, והרי היא:
[code lang="java"]
public enum EmailSender
{
instance;

public void sendEmail(String recepient, String subject, String text)
{
// …
}
}
[/code]
אפשר להשתמש בenum עם קבוע בודד, ולמרבה ההפתעה אפשר להכניס פונקציות ומשתנים בהגדרה של הenum.
מותר גם (אבל לא חייבים) להגדיר בנאי פרטי.
השפה מונעת את בעיית הגישה מכמה ת'רדים, וכן אין בכלל קונספט של איתחול יזום של enum.
כדי להשתמש בסינגלטון ככה:
[code lang="java"]
EmailSender.instance.sendEmail(…);
[/code]
אלגנטי, לא?