Terminal1999
New member
התחלה של סיפור מד"ב
פירסמתי פה כבר קצת בעבר. הנה משהו קטן, קצת פילוסופיה, קצת דיבור-חנונים.. טוב אאתם כבר תראו: --------------------------------------------------------------------- - "איזה קוד הכי קל לפרוץ?" - "לא יודע..." - "כזה שמכונה עשתה. למה?" - "מממ, בגלל שהיא מכונה?" - "כן, אבל למה?" - "לא יודע..." - "בגלל שמכונות חושבות בדפוסים קבועים. אין להן אינטואיציה. או למעשה, אין להן את היכולת לשבור את הדפוסים שהן מכירות. בעצם מה שמבדיל אותן מאיתנו זה שהן לא מסוגלות לאמץ דפוסים חדשים, או ללמוד דפוסים חדשים שהן מזהות. ברגע שזה יקרה – הלך עלינו". לקחתי לגימה מהקפוצ'ינו. - "אתה רוצה להגיד לי שכל קוד שמכונה יצרה אפשר לפרוץ?" - "או כן. זה הרבה יותר קל מקוד שכתב בנאדם. בני-אדם, לצערם הרב, מסתמכים הרבה מאוד על האינטואיציה שלהם, וככה הדפוסים שלהם נשארים קבועים. ככה יוצא שרוב הקוד שנכתב בעולם, הן ע"י מכונות והן ע"י בני-אדם הוא בר-פריצה לחלוטין. מעט מאוד מתכנתים יודעים לא להדבק לדפוס אחד של כתיבה." - "מה זאת אומרת לא להדבק לדפוס?" - "תראה, יש גבולות מסויימים. למשל, שפת תכנות יכולה לעשות הכל בתחום הפונקציות שמרכיבות אותה. אם אין פונקציה בשפה מסויימת שכותבת טקסט למסך – לא משנה כמה חזק יהיה המתכנת – הוא לא יצליח לכתוב למסך. אבל, כפי שידוע לך, שפות התכנות שואפות להשיג מקסימום גיוון לפונקציות שלהן, ככה שכיום... כבר אין גבולות." - "כן, אבל איך זה קשור לדפוסי-כתיבה?" - "ככה. כתיבת-קוד הם הדרך שבה המתכנת מביע את היצירתיות שלו. אם הוא מאוד יצירתי, הקוד שלו יהיה מאוד מגוון, והוא יעשה שימוש בהרבה מאוד מהפונקציות שעומדות לרשותו. ואם הוא מבריק, הוא יעשה שימוש מושכל וחסכוני בהן. דפוס-כתיבה היא הדרך שבה המתכנת בוחר ליישם איזה תפקיד של התוכנה שלו. למשל, שוב, אם הוא רוצה להשיג משהו למסך הוא יבנה פונקציה שמציגה משהו למסך, ובכל מקום בתכנה שהוא ירצה להציג משהו למסך הוא יקרא לאותה הפונקציה – להלן דפוס-פעולה. פאטרן." - "ולמה זה רע? זה לא אמור להיות ממש יעיל "למחזר" פונקציות ככה?" - "לא אמרתי שזה רע... זה פשוט... אנושי." - "למה אתה מתכוון?" - "זה כל-כך אנושי, לנסות לחסוך על חשבון אבטחה. נניח היית נתקל בתוכנה שאין בה אופציה להציג למסך, אבל בכל מקום שיש צורך להציג למסך המתכנת יישם את האפשרות הזו בדרך שונה. הקוד יהיה כל-כך מסובך, שלפרוץ אותו יהיה ממש עבודה קשה." - "רגע, אז כמה שהקוד שובר יותר דפוסים הוא יותר קשה לפריצה?" - "בדיוק. בגלל זה הקוד הכי קל לפריצה הוא קוד של מכונה. כי בני-אדם, לא משנה כמה אטומים וקונפורמיסטים הם יהיו, הם חייבים לשבור איזה דפוס פה ושם, זה מה שמבדיל אותם מהמכונות. בעוד שמכונה, תישאר תמיד טיפשה, אלא אם נלמד אותה ללמוד." - "אוקיי, ואיך אנחנו יכולים לעשות את זה?" - "ניקח למשל מכונה שיודעת להסתכל על כביש ולהגיד מה עומס תנועת המכוניות. ננתח אותה קצת ונראה שיש בה קוד שיודע לזהות מכונית בגלל הצורה הפחות-או-יותר קבועה של מכונית, ויודע להגיד כמה זמן לוקח לה לעבור מנקודה אחת לשנייה, ביחס ליתר שעות היממה וכך לדרג את העומס הנוכחי בכביש-" - "די טיפשה המכונה הזו..." - "כן. עכשיו נגיד שלא היינו אומרים לה איך מכונית נראית, אלא היינו אומרים לה איך לזהות עצם, לקרוא לו בשם מסויים, ולקלוט כל מיני פרמטרים עליו כמו מה המהירות שלו או מה הצורה שלו וכו'. לא היה לוקח לה הרבה זמן עד שהיא היתה יכולה למדוד כמה זמן לוקח לזחל שפירית לחצות מטר של כביש, ומה הסיכויים שלו להצליח בזה בהתייחס לעומס המכוניות. למעשה לימדנו את המכונה לקלוט דפוסים חדשים שהיא לא מכירה ולקטלג אותם – בדיוק איך שהמוח שלנו עובד." - "מממ. מפחיד" - "או כן, זאת רק ההתחלה. אם היינו נותנים למכונה גם איזושהיא אופציה מכנית, כמו זרוע הידראולית, בקרוב מאוד היא היתה לומדת איך לשדרג את עצמה, אבל בעיקר איך לגרום לעצמה ללמוד יותר חומר - מהר יותר." - "הממ, מסוכן... טוב עכשיו אני רוצה לדעת למה קראת לי לכאן." - "בניתי קוד-אינטואיטיבי." - "מ'זתומרת?" - "קוד שיודע לקרוא ולכתוב קוד." - "רגע, בזבזת עכשיו 5 דקות בלהסביר לי כמה זה מסוכן ועכשיו אתה אומר שבנית אחד כזה?!" - "כן." - "למה?" - "ת'אמת, לא יודע. תמיד חשבתי שזה יהיה הסופר-אתגר שלי. לבנות את המוח הממוחשב הראשון. טוב, מה אתה בפאניקה. כרגע הקוד בערך בן שלושה ימים, יקח לו כ"כ הרבה זמן עד שהוא יתחיל להבין מה קורה סביבו, ועד אז כבר נוכל מזמן לסגור אותו." - "איפה שמת אותו?" - "בבית. במחשב בלי גישה לאינטרנט. פחדתי שאולי הוא יבין את פרוטוקול TCP/IP ופשוט ילך לאיבוד באינטרנט, ובחיים אני לא אמצא אותו." - "ונתת לו הרשאות כתיבה?" - "בוודאי, אחרת איך הוא ילמד את עצמו דברים חדשים?" - "ואיך אתה מתקשר איתו?" - "אפשר לדבר איתו דרך המיקרופון. תאמין לי, אם לקח לו בערך 30 שניות להבין את הטלנובלה שהייתה בטלוויזיה שהיא בכלל בספרדית, אתה תוכל לדבר איתו חופשי." - "והוא יוכל להחזיר לי דיבור?" - "המממ, בוא נראה אם הוא הבין איך להשתמש ברמקולים כבר." יצאנו מבית הקפה.
פירסמתי פה כבר קצת בעבר. הנה משהו קטן, קצת פילוסופיה, קצת דיבור-חנונים.. טוב אאתם כבר תראו: --------------------------------------------------------------------- - "איזה קוד הכי קל לפרוץ?" - "לא יודע..." - "כזה שמכונה עשתה. למה?" - "מממ, בגלל שהיא מכונה?" - "כן, אבל למה?" - "לא יודע..." - "בגלל שמכונות חושבות בדפוסים קבועים. אין להן אינטואיציה. או למעשה, אין להן את היכולת לשבור את הדפוסים שהן מכירות. בעצם מה שמבדיל אותן מאיתנו זה שהן לא מסוגלות לאמץ דפוסים חדשים, או ללמוד דפוסים חדשים שהן מזהות. ברגע שזה יקרה – הלך עלינו". לקחתי לגימה מהקפוצ'ינו. - "אתה רוצה להגיד לי שכל קוד שמכונה יצרה אפשר לפרוץ?" - "או כן. זה הרבה יותר קל מקוד שכתב בנאדם. בני-אדם, לצערם הרב, מסתמכים הרבה מאוד על האינטואיציה שלהם, וככה הדפוסים שלהם נשארים קבועים. ככה יוצא שרוב הקוד שנכתב בעולם, הן ע"י מכונות והן ע"י בני-אדם הוא בר-פריצה לחלוטין. מעט מאוד מתכנתים יודעים לא להדבק לדפוס אחד של כתיבה." - "מה זאת אומרת לא להדבק לדפוס?" - "תראה, יש גבולות מסויימים. למשל, שפת תכנות יכולה לעשות הכל בתחום הפונקציות שמרכיבות אותה. אם אין פונקציה בשפה מסויימת שכותבת טקסט למסך – לא משנה כמה חזק יהיה המתכנת – הוא לא יצליח לכתוב למסך. אבל, כפי שידוע לך, שפות התכנות שואפות להשיג מקסימום גיוון לפונקציות שלהן, ככה שכיום... כבר אין גבולות." - "כן, אבל איך זה קשור לדפוסי-כתיבה?" - "ככה. כתיבת-קוד הם הדרך שבה המתכנת מביע את היצירתיות שלו. אם הוא מאוד יצירתי, הקוד שלו יהיה מאוד מגוון, והוא יעשה שימוש בהרבה מאוד מהפונקציות שעומדות לרשותו. ואם הוא מבריק, הוא יעשה שימוש מושכל וחסכוני בהן. דפוס-כתיבה היא הדרך שבה המתכנת בוחר ליישם איזה תפקיד של התוכנה שלו. למשל, שוב, אם הוא רוצה להשיג משהו למסך הוא יבנה פונקציה שמציגה משהו למסך, ובכל מקום בתכנה שהוא ירצה להציג משהו למסך הוא יקרא לאותה הפונקציה – להלן דפוס-פעולה. פאטרן." - "ולמה זה רע? זה לא אמור להיות ממש יעיל "למחזר" פונקציות ככה?" - "לא אמרתי שזה רע... זה פשוט... אנושי." - "למה אתה מתכוון?" - "זה כל-כך אנושי, לנסות לחסוך על חשבון אבטחה. נניח היית נתקל בתוכנה שאין בה אופציה להציג למסך, אבל בכל מקום שיש צורך להציג למסך המתכנת יישם את האפשרות הזו בדרך שונה. הקוד יהיה כל-כך מסובך, שלפרוץ אותו יהיה ממש עבודה קשה." - "רגע, אז כמה שהקוד שובר יותר דפוסים הוא יותר קשה לפריצה?" - "בדיוק. בגלל זה הקוד הכי קל לפריצה הוא קוד של מכונה. כי בני-אדם, לא משנה כמה אטומים וקונפורמיסטים הם יהיו, הם חייבים לשבור איזה דפוס פה ושם, זה מה שמבדיל אותם מהמכונות. בעוד שמכונה, תישאר תמיד טיפשה, אלא אם נלמד אותה ללמוד." - "אוקיי, ואיך אנחנו יכולים לעשות את זה?" - "ניקח למשל מכונה שיודעת להסתכל על כביש ולהגיד מה עומס תנועת המכוניות. ננתח אותה קצת ונראה שיש בה קוד שיודע לזהות מכונית בגלל הצורה הפחות-או-יותר קבועה של מכונית, ויודע להגיד כמה זמן לוקח לה לעבור מנקודה אחת לשנייה, ביחס ליתר שעות היממה וכך לדרג את העומס הנוכחי בכביש-" - "די טיפשה המכונה הזו..." - "כן. עכשיו נגיד שלא היינו אומרים לה איך מכונית נראית, אלא היינו אומרים לה איך לזהות עצם, לקרוא לו בשם מסויים, ולקלוט כל מיני פרמטרים עליו כמו מה המהירות שלו או מה הצורה שלו וכו'. לא היה לוקח לה הרבה זמן עד שהיא היתה יכולה למדוד כמה זמן לוקח לזחל שפירית לחצות מטר של כביש, ומה הסיכויים שלו להצליח בזה בהתייחס לעומס המכוניות. למעשה לימדנו את המכונה לקלוט דפוסים חדשים שהיא לא מכירה ולקטלג אותם – בדיוק איך שהמוח שלנו עובד." - "מממ. מפחיד" - "או כן, זאת רק ההתחלה. אם היינו נותנים למכונה גם איזושהיא אופציה מכנית, כמו זרוע הידראולית, בקרוב מאוד היא היתה לומדת איך לשדרג את עצמה, אבל בעיקר איך לגרום לעצמה ללמוד יותר חומר - מהר יותר." - "הממ, מסוכן... טוב עכשיו אני רוצה לדעת למה קראת לי לכאן." - "בניתי קוד-אינטואיטיבי." - "מ'זתומרת?" - "קוד שיודע לקרוא ולכתוב קוד." - "רגע, בזבזת עכשיו 5 דקות בלהסביר לי כמה זה מסוכן ועכשיו אתה אומר שבנית אחד כזה?!" - "כן." - "למה?" - "ת'אמת, לא יודע. תמיד חשבתי שזה יהיה הסופר-אתגר שלי. לבנות את המוח הממוחשב הראשון. טוב, מה אתה בפאניקה. כרגע הקוד בערך בן שלושה ימים, יקח לו כ"כ הרבה זמן עד שהוא יתחיל להבין מה קורה סביבו, ועד אז כבר נוכל מזמן לסגור אותו." - "איפה שמת אותו?" - "בבית. במחשב בלי גישה לאינטרנט. פחדתי שאולי הוא יבין את פרוטוקול TCP/IP ופשוט ילך לאיבוד באינטרנט, ובחיים אני לא אמצא אותו." - "ונתת לו הרשאות כתיבה?" - "בוודאי, אחרת איך הוא ילמד את עצמו דברים חדשים?" - "ואיך אתה מתקשר איתו?" - "אפשר לדבר איתו דרך המיקרופון. תאמין לי, אם לקח לו בערך 30 שניות להבין את הטלנובלה שהייתה בטלוויזיה שהיא בכלל בספרדית, אתה תוכל לדבר איתו חופשי." - "והוא יוכל להחזיר לי דיבור?" - "המממ, בוא נראה אם הוא הבין איך להשתמש ברמקולים כבר." יצאנו מבית הקפה.