ארכיון
"הוא טוב כל עוד הוא עובד", מבט פרגמטי על טיבן של תיאוריות מדעיות
האדם החושב תמיד שאף להסביר את העולם, כלומר לנסח בעזרת חוקים ותובנות את אשר חווה, לחזות את הנולד ולשלוט בעתידו (ולעיתים גם בעתידם של אחרים). החל באריסטו שניסח חוקי תנועה, דרך גלילאו וניוטון שהפריכו אותם (עקרון ההתמדה) וניסחו את חוקי המכאניקה ('הקלאסית') המוכרים לנו היום, וכלה במדענים העובדים על התורות הפיסיקליות של ימינו (תורת היחסות, מכאניקת הקוונטים ועוד).
בהתבוננות נוספת מתגלה לכאורה דפוס מדאיג, שהרי גם המכאניקה הניוטונית הופרכה ותורת היחסות ומכאניקת הקוונטים החליפו אותה. מסתבר למשל שהמכאניקה הניוטונית אינה אלא מקרה פרטי וצפויה להניב תחזיות נכונות רק במקרה של מהירויות הנמוכות בהרבה ממהירות האור. אך האם זה סוף הסיפור? האם המדע נידון לכישלון בניסיונו לתאר את הטבע או שאנו פשוט עוד לא מצאנו את התורה המלאה? האם יום אחד נוכל לנסח את התאוריה של הכול (The Theory of Everything), או לרשום משוואה שתתחיל במפץ הגדול ותחזה כל רגע מאוחר יותר? האם התיאוריות של היום הם רק עניין חולף ואם כן, האם אנו צריכים לדאוג מכך? התשובה לדעתי היא כן ולא, כפי שאפרט בהמשך.
ציור של גלילאו גליליי, המקור לתמונה: ויקיפדיה.
כדי להעמיק ברעיון התיאוריה הפיסיקלית עלינו תחילה לשאול כיצד בכלל נבנית תיאוריה כזאת. תיאוריה או מודל חדש יכולים להיוולד כהסבר לניסוי שתוצאותיו אינן תואמות את המודל הקיים. לחלופין, לפעמים זהו הניסוי שבא לבדוק תיאוריה חדשה ולעמת אותה עם המציאות. אנסה להדגים זאת בעזרת נושא הקרוב לליבי – המוליכים למחצה. בשנת 1947 הוצג במעבדות בל הטרנזיסטור הראשון שזיכה את ממציאיו בפרס נובל בפיסיקה תשע שנים לאחר מכן. ב-1958 הוצג המעגל המשולב הראשון ומאז הטכנולוגיה שועטת קדימה ללא מעצורים. שבבי הסיליקון נמצאים (כמעט) בכל מקום. בכל פעם שאתם משתמשים במחשב כדי להתעדכן מה חדש שם באינטרנט אתם משתמשים בשבבי סיליקון (שהוא מוליך למחצה).
התמונה המפורסמת מ-1948 במעבדות בל של בראטיין, שוקלי ובארדין ממציאי הטרנזיסטור. השלושה זכו בפרס הנובל לפיזיקה בשנת 1956. המקור לתמונה: ויקיפדיה.
אז מהו מוליך למחצה? ראשית נסביר מהם מוליכים ומבודדים, כאשר נתמקד בגבישים. מוליך (למשל מתכת) הוא חומר שבו תמיד יש אלקטרונים פנויים להולכה חשמלית. לעומת זאת חומר גבישי מבודד הוא חומר בו קיים מחסום אנרגטי גדול המונע מאלקטרונים להשתתף בהולכה. אלה כמובן אינן ההגדרות הפיסיקליות המדויקות, אך הן מספיקות עבור הנקודה שאני אנסה להבהיר.
מוליכים למחצה הם בעצם מבודדים שהמחסום האנרגטי בהם קטן מספיק כך שהאנרגיה התרמית (כלומר – חום) בטמפרטורה יום-יומית רגילה תגרום להם להוליך במידה מסוימת. כמו כן, על ידי החדרת אטומים זרים מסוג מסוים למוליכים למחצה אנו יכולים לגרום לעלייה חדה במוליכות החשמלית שלהם. כך קיבלנו חומרים שניתן לשלוט באופן מדויק במוליכות שלהם, וזה מה שהופך אותם לחשובים כל כך בתעשיית השבבים. זאת בניגוד למוליכים ומבודדים שההולכה החשמלית בהם או נמוכה או גבוהה מידי ותלויה בטמפרטורה במידה רבה.
כעת נרצה לבנות מודל פיסיקלי לתיאור ההולכה בחומרים אלה. ראשית אנו משתמשים בעקרונות אחת התיאוריות הקלאסיות בפיסיקה, הפיסיקה הסטטיסטית, לנסח את ההתנהגות של חלקיקי גז. לאחר מכן אנו מניחים שאלקטרונים במתכת מתנהגים כחלקיקי גז עד כדי תיקונים הנובעים מתורת הקוונטים (חוק האיסור של פאולי, חישוב ספקטרום האנרגיה של האלקטרונים). יש לשים לב שכאן כבר מעורבבים יחדיו עקרונות פיסיקליים קלאסיים וקוונטיים. כעת נשתמש במודל הזה לתיאור המוליכים למחצה עם תיקון, אד הוק, נוסף הקשור להוספת המחסום האנרגטי של האלקטרונים בדרך להולכה חשמלית. בעזרת המשוואות שקיבלנו נוכל לחשב כמה אלקטרונים פנויים להולכה בפיסת מוליך למחצה כתלות בפרמטרים שונים. כעת נוכל להשתמש במודל הולכה קלאסי ולמצוא מה ההולכה החשמלית הצפויה במעגל שניבנה בעזרתו.
המודל שהוצג מכיל קירובים רבים וסלט של רעיונות מודבקים מתחומי פיסיקה שונים. קשה להאמין שהוא מתאר את הטבע בצורה נאמנה. עם זאת, באופן בלתי נתפס, הוא חוזה בצורה מדויקת את תוצאות הניסויים כבר עשרות שנים ונמצא בשימוש במחקר ובתעשייה עד ימים אלה. המחשב שלכם עובד, לא?
אז מה ניתן ללמוד מכל זה? אני מגדיר את הגישה שלי לנושא כסופר-פרגמטית. עבורי כל תיאוריה שמצליחה לחזות בעקביות את תוצאותיהם של ניסויים רלוונטיים, וניתן בעזרתה להגיע לקידום ממשי של המדע מקובלת עלי. ומה יהיה כאשר נמצא ניסוי שעבורו התיאוריה אינה עובדת? נחזור לשולחן העבודה ונכתוב אחת חדשה. מודל הוא טוב כל עוד הוא עובד.
רגע, רגע, אבל מה עם האמת? האם המודל שניסחנו הוא האמת? לטעמי השאלות האלה אינן פרגמטיות כלל, ולכן מחוץ לתחום השיפוט שלי.
————————————————————————
הרשימה פורסמה במקור באתר שפינוזה זצ"ל לפני כשנתיים-שלוש. למעשה זאת הרשימה הראשונה שכתבתי אי פעם. עקב ביטולו של אתר שפינוזה, ומכיוון שאני עדיין אוהב אותה החלטתי לערוך את הרשימה מחדש ולהעלות אותה כאן בבלוג.
מה עם החצי השני? – איך גוזרים פונקציה חצי פעם, ולמה זה משנה
הרשימה הבאה נכתבה בשיתוף עם דר' אמיר סגל. כן, כן, ההוא מהזה.
———————————————————————————————-
בשנת 1695 שאל המתמטיקאי המרקיז דה לופיטל את עמיתו גוטפריד וילהלם לייבניץ: "מה יתקבל אם נבצע את פעולת הגזירה חצי פעם?"
התגובה של לייבניץ הייתה: " פרדוקס שביום מן הימים יניב תוצאות מעניינות".
בואו וננסה להבין על מה דיברו השניים, והאם התגשמה תחזיתו של לייבניץ. אתם אולי יודעים איפה אנחנו מתחילים, אבל לא בטוח שאתם יכולים לנחש היכן נסיים.
נגזרת 101
נפתח בהעלאת זיכרונות מבית הספר: רכבת יצאה מהתחנה בחיפה והגיעה כעבור 60 דקות לתחנה בתל-אביב לאחר שעברה 100 קילומטרים. מה הייתה מהירותה של הרכבת? עצרו רגע לפני שאתם עונים, מכיוון ש- 100 קמ"ש היא רק המהירות הממוצעת של הרכבת. מתוך הנתונים בשאלה לא ניתן לדעת מה הייתה מהירותה של הרכבת בכל רגע ורגע במהלך נסיעתה, אלא אם היא הייתה קבועה לאורך כל הנסיעה.
תמונה 1: רכבת נוסעים דו-קומתית מכיוון פתח-תקווה לת"א. המקור: ויקיפדיה.
מהי בכלל מהירות? מהירות הרכבת היא קצב השינוי במיקומה ביחס לנקודת ייחוס כלשהיא. אם קצב שינוי מיקומה של הרכבת גדול אז היא נוסעת מהר, ולהפך, אם הרכבת נוסעת לאט, מיקומה אינו משתנה במידה רבה בזמן נתון. אך מהו אותו זמן נתון? כדי לקבל את המהירות בכל רגע ורגע נצטרך לקחת זמנים יותר ויותר קצרים.
סביב שנת 1666 ניסחו אייזיק ניוטון ולייבניץ, פחות או יותר במקביל, את החשבון הדיפרנציאלי והאינטגרלי (הויכוח ביניהם אודות הבכורה הוא נושא לרשימה נפרדת). במסגרת זו הוגדרה הנגזרת, שהיא מושג מתמטי חשוב שבו עושים שימוש בכל תחומי המדע.
אם נביט על גרף המתאר פונקציה מסוימת ונסמן בו שתי נקודות, ניתן לשאול מהו המרחק בין הנקודות על הציר האופקי ומה המרחק בין הנקודות על הציר האנכי. היחס בין המרחקים נותן את השיפוע הממוצע של הגרף בין שתי הנקודות (ראו איור 2א). בגבול שבו המרחק בין הנקודות שואף לאפס (איור 2ב), היחס נותן את השיפוע המקומי של המשיק לגרף (איור 2ג), וזוהי הנגזרת. הסבר פורמלי ניתן לקרא כאן.
איור 2: הנגזרת היא השיפוע של המשיק בנקודה ומתקבלת בגבול ש-h שואף לאפס. המקור: ויקיפדיה.
כעת נניח שהגרף מתאר את מיקום הרכבת כתלות בזמן. השיפוע של הגרף בכל נקודה מציין את השינוי במיקום ליחידת זמן, כלומר את קצב השינוי במיקום הרכבת. מכאן שתוצאת הנגזרת של הגרף היא מהירות הרכבת בכל נקודת זמן. ומה יקרה אם נגזור את פונקצית המיקום פעמיים? נקבל את קצב השינוי של קצב השינוי במיקום, כלומר את קצב השינוי במהירות, כלומר את תאוצת הרכבת.
ומה יקרה אם נגזור פעם וחצי, או חצי פעם?
מההבט הגאומטרי זה עלול להשמע כמו קישקוש מוחלט, אבל כמו בדוגמאות אחרות במתמטיקה, מעבר מחשיבה גאומטרית לחשיבה אלגברית עלול לפתוח אפיקים חדשים.
נגזרות מסדר לא שלם
מסתבר שהרבה מתמטיקאים מפורסמים דנו בשאלה המוזרה הזו (החבר'ה הטובים פורייה, אוילר, לפלס, רימן, ליוביל ועוד). קיימות כיום מספר הגדרות של נגזרות מסדר שאינו שלם, ואני אציג את אחת מהן באיור הבא עלינו לטובה. בשלב זה אין מנוס ממעט מתמטיקה, ולכן מי שמתמטיקה דווקא אינה באה עליו לטובה, יכול לדלג בקלילות לקטע הבא. הוא אינו תלוי בניסוח המתמטי.
קופסא 3: אחת הדרכים להגדיר נגזרת מסדר לא שלם.
אז למה זה טוב?
דיפוזיה היא תהליך של פיזור חומר במורד מפל ריכוזים, מריכוז גבוה לנמוך, עד להגעה לשוויון ריכוזים. ברמת החלקיק הבודד הדיפוזיה היא תהליך של תנועה בעלת מרכיב אקראי. דמיינו אדם שיכור הצועד (על קו ישר) לפעמים קדימה ולפעמים אחורה באופן אקראי (ראו איור 4). לאחר זמן מסוים, המרחק הממוצע של השיכור מנקודת המוצא יהיה פרופורציונלי לשורש ריבועי של הזמן בו הלך (כה אמרה המתמטיקה…). זהו מאפיין של דיפוזיה רגילה. בטבע ישנן מספר רב של מערכות שבהן נצפתה דיפוזיה מסוג זה (למשל תנועה בראונית), אך יש גם מערכות חריגות בהן התלות שונה משורש הזמן (לדוגמא מערכות פרקטליות). במערכות אלה מתקיימת דיפוזיה אנומלית.
איור 4: הילוך שיכור. המרחק מנקודת ההתחלה של השיכור כפונקציה של הזמן עבור שמונה שיכורים שונים. המקור לתמונה: ויקיפדיה, לשם הועלתה ע"י המשתמש Morn.
המודל שמתאר דיפוזיה אנומלית הינו הרחבה של מודל מהלך השיכור. במודל המורחב השיכור מתחכם: בכל צעד הוא בוחר איזה מרחק לעבור מתוך קבוצה של מרחקים אפשריים (התפלגות), ולאחר מכן הוא בוחר כמה זמן להמתין עד לצעד הבא מתוך התפלגות זמנים. עבור התפלגות מסוגים מסוימים תתקבל דיפוזיה אנומלית (למשל התפלגות בעלת זנב ארוך מאוד, דעיכה לפי חוק חזקה).
אז איך כל זה קשור לנגזרות?
דיפוזיה רגילה ניתנת לתיאור ע"י משוואה הכוללת נגזרות מסדר ראשון ושני. דיפוזיות אנומליות לעומת זאת ניתנות לתיאור ע"י משוואה הכוללת נגזרות מסדר לא שלם (סדר הנגזרת תלוי בחוק החזקה של דעיכת ההתפלגויות). כלומר כדי לפתור מערכות שבהן ישנה דיפוזיה אנומלית אנחנו צריכים לדעת לחשב נגזרות מסדר לא שלם.
בשנים האחרונות זכתה הדיפוזיה האנומלית לתשומת לב רבה כאשר נמצאו מערכות פיזיקליות רבות שבהן היא מככבת בתפקיד ראשי. אחת הדוגמאות המעניינות היא דיפוזיה במערכות חלקיקים צפופות כגון דיפוזיה של חלבונים בתוך התא. (וכהערת אגב, פרופ' יוסף קלפטר המכהן בימים אלה כנשיא אוניברסיטת תל אביב הוא אחד המומחים בתחום הדיפוזיה האנומלית).
אז התחלנו ברכבות, ואז למדנו לגזור אותן פעם, פעמיים ואז חצי פעם. ניתחנו את תנועתם של שיכורים במימד אחד, ולבסוף הגענו לדיפוזיה ולתנועת חלבונים בתוך תאים. "תוצאות מעניינות" לפי דעתי. לייבניץ צדק.
אז מה עושים שם באוניברסיטה? פרק 13: איך להשתפר בדמקה בשלושה צעדים פשוטים – על תכנות גנטי
נפגשתי עם עמית בן-בסט כדי לשאול אותו מה עושים שם באוניברסיטה.
עמית הוא סטודנט לתואר שלישי במחלקה למדעי המחשב באוניברסיטת בן-גוריון שבנגב. הוא מבצע את עבודת הדוקטורט שלו בקבוצה של פרופ' משה זִיפֶּר, וחוקר שימוש בתכנות גנטי לפיתוח שחקנים במשחקי לוח. בזמנו הפנוי עמית כותב באתר ארגון הספקנים הישראלי, ומרצה פה ושם בנושאי מדע פופולרי.
עמית, אז מה אתם עושים שם?
קבוצת המחקר שלנו עוסקת במגוון נושאים הקשורים לאלגוריתמים אבולוציוניים שהוא תחום במדעי המחשב ששייך לבינה מלאכותית. הכוונה באלגוריתמים אבולוציוניים היא יצירת סימולציה מופשטת של תהליך אבולוציה בברירה טבעית במחשב כדי לייצר פתרונות טובים יותר לבעיות. אני עובד בתת-תחום שנקרא תכנות גנטי.
איך עובד תכנות גנטי?
הצעד הראשון הוא לייצר אוכלוסיה התחלתית של תוכנות שפותרות בעיה מסוימת, למשל איך לשחק טוב משחק לוח. האסטרטגיה שלנו היא בדרך כלל לשפר בתהליך אבולוציה רק חלק של התוכנה שנמצא בתוך מעטפת שאינה משתנה. החלק שעובר את תהליך האבולוציה הוא מה שמבדיל בין הפרטים באוכלוסיה.
תוכל לתת דוגמא?
כן, קח למשל את משחק הדמקה. חלק התוכנה שאנחנו משפרים באבולוציה הוא זה שמזהה את מצב הלוח ומחזיר מספר. 'מצב הלוח' מתאר מצב חוקי יחיד של המשחק, ובדמקה יוגדר על ידי מספר, סוג ומיקום הכלים על הלוח, ומי הבא בתור לשחק. תוכנת המעטפת תהיה אלגוריתם חיפוש כלשהוא.
איור 1: למקרה שהגעתם מהחלל החיצון, לוח דמקה מוכן למשחק. האיור להמחשה בלבד! המקור: ויקיפדיה.
איך התוכנה מגדירה שחקן?
על ידי הגדרת אסטרטגיית המשחק שלו. אותו שחקן יכול להשתמש בתוכנה כדי לבדוק את המצב בו הוא נמצא כרגע, ולהשוות אותו בדמיונו הממוחשב למצבים הנובעים מכל המהלכים החוקיים האפשריים. אותו שחקן יכול כעת לבחור את המצב שקיבל את הציון הטוב ביותר. אם נרצה שחקן טוב יותר, נוכל לדרוש ממנו לבצע בדיקות גם עבור מספר מהלכים קדימה. המחיר הוא זמן ריצה, והוא גדל באופן מעריכי.
תוכל לתת דוגמא להבדלים באוכלוסיה?
כן, למשל תוכנה אחת באוכלוסיה יכולה לנקד מצב לוח על ידי ההפרש בין מספר הכלים של שני השחקנים. אם ההפרש גדל לטובתי, אני מרוצה כי כנראה אכלתי כלי של היריב. תוכנה אחרת באוכלוסיה יכולה לנקד מצב לוח על פי אותו עיקרון אך להוסיף סייג שמלך שווה יותר בספירה.
התוכנות האלה בנויות במבנה נתונים שנקרא עץ GP, ומורכבות מאלמנטים שונים בצורה מודולרית (ראו איור 2). את האוכלוסיה ההתחלתית של לפחות מאה תוכנות או עצים אנחנו מפיקים באקראי באמצעות תוכנה שכתבנו למטרה זאת.
איור 2: ביטוי אריתמטי המיוצג על ידי מבנה נתונים בצורת עץ. המקור: ויקיפדיה.
איך קובעים את זהות התוכנות הטובות ביותר?
כפי שקלישאת הכדורגל אומרת, הטבלה לא משקרת. כדי לקבוע מי הן התוכנות המוצלחות (בעגה ה-fitness) אנחנו מקיימים טורניר בין הפרטים באוכלוסיה. התוכנות מקבלות נקודה עבור כל ניצחון, וחצי נקודה על תוצאת תיקו. ככל שתוכנה נמצאת במקום גבוה יותר בטבלה, כך סיכוייה להיבחר לדור הבא גבוהים יותר. לדוגמא, אם יש לנו אוכלוסיה של מאה פרטים, אנחנו נבחר מאה פרטים שירכיבו את הדור הבא. כל תוכנה יכולה להיבחר יותר מפעם אחת, ולכן התוכנות במיקום גבוה בטבלה יבחרו מספר רב של פעמים על חשבון תוכנות במיקום נמוך. ממאה התוכנות שנבחרו בסוף התהליך ניצור את הדור הבא.
למה אתה מתכוון? איך מיוצר הדור הבא?
ישנן שתי פעולות העוקבות אחרי תהליך הסלקציה ומטרתן לייצר שינוי באוכלוסיה. פעולה אחת נקראת מוטציה ובה נבחר באקראי תת-עץ מתוך העץ השלם המייצג את השחקן. אותו תת-עץ מוחלף בתת-עץ חדש. דוגמא למוטציה יכולה להיות החלפת תת-העץ x/11 מאיור 2, לתת-עץ שמבטא למשל x-5 (ראו איור 3). אנחנו בדרך כלל קובעים את הסיכוי למוטציה בעץ כך שבערך עשירית מהעצים יעברו מוטציה.
איור 3: העץ מאיור 2 לפני ואחרי מוטציה.
הפעולה השניה נקראת קרוס-אובר (crossover) והיא מדמה רבייה מינית. אנחנו בוחרים שני עצים, ובתוך כל עץ בוחרים באקראי תת עץ. כעת אנחנו מבצעים אחת משתי האפשריות הבאות: מחליפים בין שני תתי-העצים, או מחליפים את תת-העץ בעץ שהצליח פחות טוב בטורניר בתת-העץ מהעץ שהצליח יותר.
אחרי שלבי המוטציה והקרוס-אובר, מתקבלת אוכלוסיה המורכבת ממאה פרטים חדשים שנקראים דור 1 (האוכלוסיה ההתחלתית נקראת דור 0). לקבלת דור 2 נחזור על התהליך: ליגה, סלקציה ורבייה (מוטציה וקרוס-אובר), וכך הלאה עד למספר דורות שנקבע מראש (ראו איור 4). את רמת השחקנים נקבע אובייקטיבית על ידי משחק נגד שחקן חיצוני שאנחנו כתבנו ללא אלגוריתם תכנות גנטי. סוף התהליך הוא חיפוש השחקן הטוב ביותר בכל הדורות.
איור 4: תרשים זרימה המתאר את תהליך התכנות הגנטי.
אז מה עם הדמקה?
אחד הדברים הראשונים שעשיתי בעזרת תכנות גנטי היה לכתוב שחקן למשחק דמקה הפוכה, וזאת מבלי להיות מומחה גדול במשחק. נתתי לאבולוציה לעשות את העבודה במקומי. בהמשך הראיתי שניתן להשתמש בתהליך גם לדמקה רגילה ומשחקים נוספים. התכנות הגנטי אפשר לי לכתוב שחקנים מוצלחים למשחקים שונים ללא צורך בהשקעת מאמץ רב נוסף על זה שכבר השקעתי.
נשמע נפלא, האם יש פה 'אבל' איפשהו?
תראה, יש להבין שאנחנו מאוד מוגבלים במספר המהלכים קדימה שאנחנו מאפשרים לשחקנים לחשב. עבור מספר גדול של מהלכים לא נוכל לסיים את הטורנירים של תהליך הסלקציה בזמן סביר מכיוון שזמן הריצה גדל, כאמור, באופן מעריכי. ניתן גם להראות שאם ייצרנו שחקן בתהליך אבולוציה שבו היתה בדיקה של מספר מסוים של מהלכים קדימה, לא נוכל לשפר משמעותית את איכותו בצורה פשוטה על ידי הגדלת מספר הצעדים קדימה שהוא בודק. כלומר המוצר הסופי אופטימלי לתנאים בהם הוא נוצר.
אז מה עושים?
מנסים להתחכם. נניח שבמצב לוח מסוים כל מהלך קדימה מוביל לעשר אפשריות פעולה. במידה ונבדוק רק חמש מהן עבור כל מהלך, נוכל להרשות לעצמנו לבדוק יותר מהלכים קדימה. כדי לבחור את חמש האפשריות הטובות מבין העשר נוכל להשתמש בשחקן שרואה רק מהלך אחד קדימה. תהליך זה נקרא בעגה המקצועית pruning, כלומר גיזום. במהלך המחקר הצלחנו להראות שבעקבות הגיזום אנחנו מרוויחים פעמיים. ראשית, השחקנים האלה טובים יותר, ושנית ניתן לשפר אותם ישירות על ידי הקטנת הגיזום, למשל בדוגמא כאן לבחור שבע אפשריות מתוך עשר במקום חמש, ללא תהליך אבולוציה נוסף.
כיצד היית מסכם את היתרונות של השיטה?
התכנות הגנטי מאפשר ללמוד ולהשתפר במשחק, מבלי בעצם לדעת עליו דבר מלבד למהלכים הבסיסיים. השיטה היא גנרית ומותאמת בקלות לבעיות שונות, והיא יכולה להצליח גם בפתרון בעיות שבהן ההיגיון האנושי אינו מהווה יתרון.
——————————————————————
אני אשמח להפגש ולשוחח עם כל תלמיד מחקר (אולי אתם?) שמוכן להשתתף ולספר לי קצת על מה הוא עושה (והכול במחיר של שיחה לא יותר מידי ארוכה). תוכלו ליצור איתי קשר דרך טופס יצירת קשר.
זה הזמן לספר לכולם מה אתם עושים, אולי הפעם הם גם יבינו