DAVID מלאן: ברוכים השבים, כולם. אז אתמול, אתם ודאי זוכרים כי התמקדנו בנושאים אלה כאן. אז היו לנו ארבעה על topics-- פרטיות, אבטחה, וחברה; טכנולוגיות אינטרנט; מחשוב ענן; ובסופו של דבר, פיתוח אינטרנט. האם מישהו יש את רוחב פס או הזמן כדי לצפות קצת ג'ון אוליבר אמש? זה בעצם די משעשע, אם לא קצת מפחיד. כל שאלות על כלום עשינו אתמול? כל הבהרות? כל השאלות שאתה רוצה לעשות בטוח שאנחנו נוגעים היום בצורה כלשהי? אז נקי צפחה. אז מה על סדר היום היום? אז אני חושב שנתחיל היום במבט על מה בדרך כלל המכונה thinking-- חישובית ב את הסיכון oversimplifying, לחשוב כמו מחשב, אולי לחשוב כמו מהנדס, ומנסה להתחיל לארגן את המחשבות שלך או לתת לך תחושה טובה יותר של במה זה כרוך למעשה מצווה מחשב לעשות משהו בדרך של תכנות. ואנחנו נשמור אותו יפה רמה גבוהה, פחות או יותר אנגלית, אבל לנסות להשתמש של מוכר דוגמאות למסד איך היית הולך על פתרון בעיות. ואנחנו נהיה לבקר כמה CS נושאים, כמו הפשטה, שעלה זוג פעמים אתמול, אלגוריתמים, ולאחר מכן ייצוג. וכאן נתחיל היום בעוד רגע. ואז נצטרך ותסתכלו תכנות. ניקח מבט על כמה בונת יסוד שבה אתה יכול להיות מוכר ואולי אפילו למצוא די אינטואיטיבי. נחפש, למעשה, בכל תכנות מדגם בסביבה שהיא מאוד נגישה, שובבה מאוד, ואכן ממוקד לגילאי 12 ומעלה. אנחנו נשקיע כמה דקות שם ואז לקחת את הדברים לרמה נמוכה ולמעשה לדבר על כמה מבני האלגוריתמים ונתונים, כביכול, כי מתכנתי משתמשים בדרך כלל כדי לפתור בעיות הרבה יותר ביעילות רבה יותר מאשר אולי אתה להיות מסוגל לעשות בלעדיהם לגמרי. ואז אחרי ארוחת הצהריים, ניקח מבט ב ערימות טכנולוגיה, וזה רק דרך מפוארת של באומרו אוספים של טכנולוגיות שיהיה אפשר להשתמש כדי לפתור בעיה כלשהי. ונדברנו על האלפבית מרק של שפות קיימות today-- Java ו- Python ו- C ++ ו- PHP ו רובה וכל מיני דברים אחרים. "ניקח בקצרה מבט דפוסי עיצוב. מתכנתים, לאורך זמן, יש מתודולוגיות אמצו כי נוטה לעזור להם לפתור בעיות ביתר קלות. כאשר אתה מתחיל לראות את עצמך כותב סוג של קוד אותו שוב ושוב, אנשים למסד אלה חזרות ומייחסים להם שמות ולאחר מכן להשתמש בהם לקדם אותם, בסופו של דבר. ונדברנו קצת על אסטרטגיות ניידות, כמו מה זה אומר בעצם לעשות אפליקציה לנייד או אתר אינטרנט להתקנים ניידים. האם אתה עושה את זה עבור אנדרואיד? האם אתה עושה את זה עבור iOS? האם אתה עושה את זה בשביל שני אלה? ומהם יחסי הגומלין? ואז סוף סוף, ניקח תכנות אינטרנט מראה, אשר הוא מונח קיבוצי באמת המתאר בכל עת אתה כותב תוכנה זה התכוונתי לרוץ באינטרנט, אם בטלפונים או מחשבים שולחניים או מחשבים ניידים. ניקח מבט קצר על מסדי נתונים ואת העיצוב בהם, ולו רק משום שכמעט כל יישום מבוסס אינטרנט מעניין יש בימים אלה איזשהו מסד הנתונים. שאם לא כן, רק להיות תוכן סטטי. ובסיס נתונים מאפשר לך לבצע שינויים לאורך זמן, אם את עצמך או ממשתמשים. ואנו רואים איך אתה ילך על עיצוב מסד נתונים ואת הסוג של ז'רגון שעלול לצוץ ב מהנדס של דיון על לוח לבן כאשר למעשה ביישום אפליקציה בפעם הראשונה. נדבר בקצרה על APIs, שירותים שימושיים כי אתה יכול להשתמש בו כדי לעמוד על כתפי אחרים, בין חברות או יחידים, ולפתור שלך בעיות משל יותר מהר. ואז נצטרך להשתכשך אולי קצת עם JavaScript, שפת תכנות המשמשת הן בדפדפנים בימים אלה, אלא גם בשרתים. ואולי, נחלקנו שוב, בפעם מתירה, חלק הידיים על שאנו דברים באינטרנט עשה אתמול ולשלב את שני יחד לפני נתפזר. אז עם ש-- מה ahead-- הוא יש משהו חסר, כי אתה רוצה לוודא שאנחנו להכניס ולגעת על בשלב כלשהו. אם זה עולה במוחנו, להעלות את זה לפני זמן רב. אבל למה אנחנו לא מתחילים עם להסתכל חשיבה חישובית. ותנו לי להציע כי חשיבה חישובית היא, שוב, סוג של תיאור הרמה הגבוהה של מה מדען מחשב עלול לעשות. ואכן, בואו נתחיל עם שלושה מרכיבים עלול לעבור למצב חשיבה חישובית. זוהי רק דרך אחת לתאר את זה. יכולנו בהחלט להגדיר זה בכל מספר דרכים. אבל הרשו לי להעלות, למען היום, כי בעיות העולם, כל הבעיות של העולם, כאשר ניגש אליו מדען מחשבים יכולים ניתן לראות בהם מה נעשה תשומות שיחה, אשר צריך להימאס לתוך מה אנחנו נתקשר אלגוריתמים, אשר לאחר מכן להניב תפוקות. במילים אחרות, כל עולם תביעה לי פתרון בעיות ניתן מזוקקים לתוך שלושת מרכיבים אלה. אז מה אני מתכוון תשומות? תשומות הן בדיוק מה שאתה מסר על מנת לפתור. למשל, הנה בעית הספר ישנה. אם יש לי ספר טלפונים פה אני רוצה לחפש משהו לתוכו, זה הקלט שלי. יש לי 1,000 בערך דפים בספר טלפון. זהו הקלט לבעיה שלי. ואני רוצה למצוא משהו כמו מייק סמית, ולפיכך ידיד שם שמספר בתקווה בפנקס הכתובות זה. זהו עוד לפני ימיו של התא טלפונים, אז אני לא יכול פשוט לחפש אותו. אז אני צריך לעשות את זה ישן חיפוש ספר ולמעשה תשומות אלה בציפייה לתשובה כלשהי. והתשובה כי הוא רק הולך שיקרא את הפלט. אז הקלט הוא בספר הטלפונים. האלגוריתם הוא מה ערכה של השלבים אני משתמש כדי למצוא מייק סמית. והפלט הוא, בתקווה, מייק מספר הטלפון של סמית. וזה יהיה אז פשוט נציג של כמעט כל בעיה כדי איתך הן תשומות ריקות ורוצה לייצר תפוקות. אז לפני שאנחנו רואים את התהליך שבאמצעותו אנו יכולים לפתור את הבעיה הזאת, מציאת מייק סמית משהו כזה, הבה נבחן את הראשון התשומות והתפוקות last--. מבחינה פיזית, כמובן, הקלט כאן חבורה שלמה של נייר מודבקת יחד בצורה של ספר טלפונים. אבל מחשבים, מחשבים ניידים course-- ומחשבים שולחניים ואפילו טלפונים אלה days-- אלה מכשירים אלקטרוניים. ובסוף היום, מה הקלט רק למחשב? ובכן, זה משהו כמו כבל חשמל זה כאן. אני מחבר אותו לתוך הקיר, אני מקבל זרם של אלקטרונים, אשר מאפשר לי להפעיל את המכונה. או אולי אלה האלקטרונים הם נוצר בדרך של הסוללה שלי. אבל בסוף היום, כי זה הדבר היחיד הולך לתוך הנייד שלי. וכך הרבה מעניין חומר הוא בסופו של דבר יוצא, אם בדרך של המדפסת או המסך או audially וכדומה. אז אם כל מה שיש לנו כמו שלנו קלט יסוד למחשב חשמל הוא, כל כך פשוט אלקטרונים הולכים פנימה או החוצה, אז איך אנחנו יכולים להשתמש קלט לייצג מידע שבו? במילים אחרות, איך אנחנו מקבלים מתוך זרם החשמל פשוט המייצגים בפועל מספרים או אותיות בפועל או תמונות בפועל על המסך או סרטים או הודעות דואר אלקטרוני בפועל או כל מספר של אלה מושגים לרמה גבוהה יותר, אם תרצה, כי בבית בסופו של יום איכשהו צריך להיות מאוחסן זה מכשיר מכאני אלקטרוני באמצעות אלה ingredients-- פשוט רק האלקטרונים נכנסים ויוצאים? אז זה היה נראה כי, בצורה הפשוטה ביותר, הסוג של מדינות היחיד יש לי בעולמי, כך כדי speak-- תנאים ב בעולם-- שלי הוא משני יש לי האלקטרונים זורמים, חשמל זורם, או שאני עושה not-- הלאה, לסירוגין. ובואו למסד לסירוגין, כמדען ייתכן שמחשב, עם רק 1 ו -0. בואו פשוט לתאר כמה שרירותי אך עקבי במספר אליו. 1 אומר על, 0 פירושו הנחה. לחלופין, ייתכן גם רואה בכך אמצעי נכון על ואמצעי שווא. אתה יכול גם לעשות שחור לבן או אדום וכחול. אתה רק צריך שני מתארים. וגם מדעני מחשב היו בדרך כלל פשוט להשתמש 0 ו -1. אז אם זה המצב, האלפבית שלי רק הוא מורכב של של ו 1 0, איך יכולתי אולי להגיע אפילו מספר 2 במחשב, שלא לדבר על מספר 3 או מכתב של האלפבית או תמונה או סרט? איך אנחנו מעין bootstrap על עצמנו מפני העיקרון הבסיסי הזה של 0 ו -1 ולמעשה לייצג משהו יותר מעניין? ובכן, בואו נגיד את השאלה הזאת בהמתנה לרגע ולשקול משהו בתקווה מוכרת, אפילו אם לא ממש חשבתי על זה בכל פרט ל -10, 20, 30, 40, 50 יותר שנים. זה מה? איך היית לבטא את זה? לא שאלה מכשילה. מספר, אבל מה זה? 1, 2, 3, או 123. ואני אהבתי איך שאמרת 1, 2, 3, משום שזו אחת הדרכים של הצפייה בו. 1, 2, 3, זה רצף של שלושה סימנים. זה תמונות שאנחנו עכשיו יש מילים. ואם אתה סוג של לקרוא את כולם יחד, אדם טיפוסי באנגלית יאמר 123. וזה סוג של רעיון ברמה גבוה יותר, מרגיש כמו מספר סביר גדול. אבל איך נגיע לשם? ובכן, זה עשוי לקחת קצת זמן מאז אתה כבר חשבת על זה ככה, אבל בחזרה בתקופתי, אני סוג של למד זאת כמו הטור של 1, 10 של טור, ואת הטור של 100. אז כפי Lakisa אומר, זה 1, 2, 3, אבל זה גם 123. אבל איך אנחנו מקבלים מ לשעבר לאחרון? ובכן, אתה בדרך כלל היה עושה של עמודה 100, יש לי 1. אז זה כמו להגיד 100 פעמים 1. ואז ב של עמודה 10, יש לי 2. אז זה כמו להגיד 10 פעמים 2. בשנות ה עמודה 1, יש לי 3. אז זה כמו להגיד 1 פעמים 3. ואם אני מוסיף את הדברים האלה יחד, זה, כמובן, 100 הוא בתוספת 10 פלוס 3. והו, זה למה אני מקבל את זה רעיון רמה גבוה יותר של 123. זה פשוט בסיסי במתמטיקה, לפיה אלה יש סימנים משקולות אליהם, אם אתה יהיה, מציין מיקום או ערכי עמודה. וברגע שאני להכפיל הכל החוצה, אני מקבל את המספר הזה. אז כמה מכם יודעים איך לדבר binary-- 0 ו 1's-- כמו מחשב? בסדר, מושלם, אף אחד, או אף אחד מכם לא חושב שאתה עושה. אבל אני טוען שאתה בעצם יודע את זה כבר. אנחנו פשוט צריכים מעין לצבוט המודל המנטלי שלנו קצת. אבל התהליך הוא בדיוק אותו הדבר. תן לי לעזוב את זה שם למעלה במקום לנתץ זה לרגע. בעולם של מחשבים, יש לנו רק 0 ו -1. וכך הדבר זה הולך להשתנות הוא מה? ובכן, בעולם האנושי שלי, שיטה עשרונית, משמעות dec 10, יש לי כמה ספרות לרשותי? 10, נכון? 0 עד 9, כמובן. ובגלל זה יש לנו את מקום של 10 ואת של מקום 100. איפה זה בא? ובכן, זה הוא 10 בחזקה של 0. זהו 10 בחזקה של 1, 10 על כוחו של 2, וכן הלאה. אתה רק הולך ומתרבה העמודות שלך ב -10, להתחיל עם רק 1 בתוך אחד הימני ביותר כאן. אז בעולם של מחשבים, אם אתה רק יש binary-- משמעות דו 2-- או 0 ו -1, אנחנו רק באמת צריך לשנות הבסיס של מתמטיקה זה. אז במילים אחרות, עכשיו אנחנו פשוט יש בעמודה של 1 ו לעזאזל-- איפה זה going-- בעמודה של 2, הטור של 4, ואולי מעבר. למה זה? ובכן, זה הוא 2 הכח 0-th. זהו 2 1. זהו 2 אל 2, וכן הלאה. אז ואילו כאן, יש לנו 1, 10 של, 100 של, 1000 של, 10,000, 100,000 של, 1 מ', וכן הלאה, כאן יש לנו 1, 2, 4, 8, 16, 32, 64. אתה רק הולך ומתרבה על ידי 2, במקום הולך ומתרבה ב -10. אז עכשיו, אם המטרה ב יד היא לייצג מספרים באמצעות של 0 ו -1 בלבד, הבה נבחן איך נגיע לשם. זה, כמובן, הוא הדפוס 0 0 0, אבל מה מספר מושגית הוא מייצג? ובכן, 4 פעמים 0 בתוספת 2 פעמים 0 פלוס 1 פעמים 0, בואו להוסיף אותם ביחד. 4 פעמים 0 הן, כמובן, 0, בתוספת 2 פעמים 0 הן, כמובן, 0 בתוספת 1 פעמים 0 הוא, כמובן, 0. אז אה, זה מייצג את בני אדם מספר כפי שאנו יודעים 0. ובכן, עכשיו, בואו מאוד קדימה מהר מהר. אם אני במקום לא מייצג 0 0 0, אבל בואו נעשה 1 0 1, שעשוי להיות איך Lakisa, קודם לכן, פשוט מבטאים את זה 1 0 1. אבל עכשיו, איך אנחנו לוקחים אותו גבוה מיישר את המספר שאנו בני אדם אולי יודעים? אז מה הוא מספר זה? זה 5, מספר כפי שאנו יודעים 5. ובכן, מדוע זה כך? ובכן, אנחנו יכולים באמת סוג של ללכת דרך אותו בשיטתיות 4 פעמים 1, 2 פעמים 0, 1 פעמים 1. להוסיף אותם יחד, כך זה 4 פלוס 0 ו -1. וזה, אכן, 5. אז זה מתחיל להיות קצת משעמם עכשיו עושה את החישוב שוב ושוב. אבל התהליך הוא בדיוק אותו הדבר. הדבר היחיד שיש לו השתנה בעולמנו הוא העמודות שלנו הן 1, 2, 4, 8, 16, וכן הלאה, במקום 1, 10, 100, 1,000. וזה רק בגלל האלפבית שלנו יש התכווץ מ -0 עד 9 כדי רק 0 ל -1. אז כמו חידון קצת פה, איך היה אתם מייצגים את המספר 7 ב בינארי? 0? ובכן, 0, אתה מתכוון 0 0 0? תגיד את זה שוב, קארינה. מושלם. למה זה? זה ביעילות 4 פלוס 2 פלוס 1. כל כך טוב. איך אפשר לייצג קצת another-- מה לגבי מספר 2? קרוב, אבל אחורה. אז מה זה? האם 4 פלוס 1, אז זה 5 שוב. אז what's-- אני מצטער, קארינה? 0 1 0. 0 1 0 יהיו 2, כי שוב, אפילו אם זה סוג של לא לקפוץ החוצה אליך, פשוט לעשות את המתמטיקה. 4 פעמים 0, 0, 2 פעמים 1 הוא 2, 1 פעמים 0 הוא 0. אז זהו המספר שאנחנו יודעים כמו 2. מה דעתך על המספר 8? Hm? טוֹב. אז אנחנו סוג של צריכים מציינים מיקום אחר. אנחנו צריכים 1 0 0 0. וזה נכון מהסוג שלנו של שיטה עשרונית ספר ישן. איך אתם מייצגים את המספר 1,000? ובכן, היית נראה סוג של במצב רגיש, אם מבקשים ממך לייצג את המספר 1,000, כי גם אם אתה נותן לעצמך כמו 9 של אלה, 9 מהם, 0 של אלה, המהווה את המספר הגדול ביותר שאתה יש, אתה לא ממש קולט 1,000. אז אם אתם 1,000, אתה רק צריך עוד עמדה, כך שאתה יכול לעשות 1 0 0 0, ergo את המספר 1,000. אז עכשיו, בואו למפות מסוג זה דיון מושגים חזרה לחומרה, שם שוב, הקלט היה רק כבל חשמל הקטן הזה, החשמל נכנס זורם החוצה. וכך בשביל זה להיות ממופה מכאן לשם, טוב, מה אנחנו באמת צריכים? ובכן, אתה יכול לחשוב על להיות בתוך של מחשב, חבורה שלמה של נורות, אם אתה. הם באמת נקראים טרנזיסטורים. וטרנזיסטורים הם רק בורר כי גם יכול להיות מופעל או כבוי. אז אתה יכול לחשוב על טרנזיסטור זה על חשמל המאפשר זרימה טרנזיסטור זה בתור לעצור חשמל זורם. ובמקום לקחת מעל האורות כאן, למה לא אני עושה דברים סגנון לימודים חדש. אז זה יכול להיות 1, פנס להיות על, רק בקושי אף. וזה יכול להיות 0, ועכשיו זה מעל. אז באמצעות התקן פיזי זה, אני עכשיו יכול לייצג את מערכת בינארית. אני רק צריך שתי מדינות. זה לא משנה מה צבע זה או מה זה. כל מה שמשנה זה שיש לי מדינה אחת על לבין מדינה אחרת מחוץ. זאת באמצעות הטלפון שלי כאן, איך אני לייצג את המספר כפי שאנו יודעים 0? או במילים באופן שקול, מה מספר אני מייצג עכשיו? 0, כיוון שהמכשיר כבוי. ואם אני עושה את זה? ועכשיו, איך אני מייצג את המספר 2? האם אני יכול לשאול בטלפון כאן, כפי שעשינו אתמול? אז בואו נראה, כך שאם אני רוצה לייצג מספר 2, הוא זה מספר 2? לא. מה מספר אני בטעות המייצג כאן? זהו למעשה מספר 3. אז איזה מהם אני רוצה לכבות? הטלפון השחור or-- היטב, אם they're-- טלפון שחור או בטלפון הלבן? הטלפון הלבן. אז אם אני מכבה הזה ואנחנו קו זה עד לכאן, יש לנו 1 במקומו של 2 ו 0 בתחילת המקום של 1. וכך אני עכשיו המייצג את המספר 2. וזה, כמובן, יהיה המספר 3, כי עכשיו הן של האורות האלה על. ואני אפסיק כאן, אבל זה מתקבל על הדעת אם אני רוצה לייצג את מספר 4 או 8 ומעלה, אני הולך צריך יותר טלפונים. אבל זה כל מה שקורה. אז אם אי פעם שמעו את זה בתוך לזה-- להודות מחשב שאתם-- הוא מיליוני טרנזיסטורים, זה רק מיליוני מתגים קטנטנים. והם לא אור נורה להדליק ולכבות, אבל הם גם מאפשרים חשמל לזרום איפשהו או לעצור אותו. וכך יש שלך שני states-- או לבטל, או ביטול. אז אנחנו נראה עכשיו צריך יכולת זו כדי לייצג את המושג הזה היינו רוצים בחומרה בפועל. אבל כל מה שיש לנו כרגע היא היכולת כדי לייצג מספרים זה היה נראה. אז איך אנחנו הולכים על המייצג אותיות האלפבית, אשר מרגיש כמו סוג של תכונה הבאה שאתה תרצה להוסיף מחשב מודרני ברגע שיש לך מספרים? ואכן, אם אתה חושב על זה, מבחינה היסטורית, מחשבים הוכנסו באמת לשרת כמו מחשבונים מספריים. אבל כמובן, אלה ימים, הם עושים הרבה יותר. גם כאשר הם אתחול, אתה בדרך כלל רואה מילה אחת או יותר. אז איך אתם מייצגים מילים, אם כל מה שאתה צריך הוא, שוב, חשמל בסוף של יום, או באופן שקול 0 ו -1? כֵּן. כן, אני מתכוון, אנחנו סוג של עשו זה אתמול בצורה כלשהי, שם בשלב כלשהו, אני חושב שאני באופן שרירותי אמר כי, אם אנחנו רוצים לייצג את אות A, נוכל פשוט קוראים לזה 1. זה היה בהקשר של קריפטוגרפיה, איפה אנחנו פשוט צריכים איזשהו קוד, איזשהו מיפוי. אז אולי יהיה מיוצג בתור 1, ו- B ייוצג בתור 2, ו- Z ייוצג כמו 26, למשל. ואז האזהרה היחידה היא שאם אני הולך לקודד אותיות המיילים שלי או הודעות הטקסט שלי כמספרים, כולכם חייב להסכים להשתמש אותה קבוצה של מוסכמות. ואכן, בעולם עשה בדיוק את זה. קיימת מערכת בעולם ASCII שנקרא, תקן אמריקאי קוד עבור מחלף מידע, וזה פשוט החלטה כמה שנים לפני שבני האדם עשה את זה החליט כי הולך להיות שווה, לא 1, 2, ו -26, וכן הלאה forth-- זה קצת different-- אבל 65, 66, 67. ואני מוכן להרים את תרשים בעוד רגע. אבל הוא שרירותי. אבל זה לא משנה שזה שרירותי. העולם חייב רק להיות עקבי. עכשיו, ולאחרונה, יש משהו להשתכלל Unicode שנקרא, משום של סוג בעולם של הבינה, לאחר המצאת מחשבים, כי יש יותר טוב 256 וסמלים בעולם כי אולי נרצה לייצג, במיוחד כאשר אתה להציג בשפות אסיאתיות symbologies אחרים כי צריך יותר אקספרסיביות ממה שאתה יכול להתאים את הגרסה המוקדמת של קוד זה, אשר נקרא ASCII. אז Unicode למעשה מאפשר לך להשתמש יותר ספרות 0 ו 2. בפרט, אתה שומר שמיעה בתי מילה בחברה ואפילו סתם אתמול. וגם בייט הוא מה שוב? מה בייט? זה רק 8 סיבי. אז מה זה באמת אומר? ובכן, זה אומר, קודם לכן, כשהיינו מדברים על בינארית הייתי משתמש באופן שרירותי שלושה ביטים כשהיינו מדברים על binary-- המקום של 1, המקום של 2, ו -4 של place-- היטב, בייט רק אומר שאתה מדבר לא ביחידות של שלוש אבל ארבע, חמש, שש, שבע ושמונה, אשר נותן לנו מקום של 8, 16 של, 32 של, 64 של, ו 128 של. במילים אחרות, קצת לא הכל כי שימושית יחידת המידה, כי זה בדיוק כמו קטנטן אחד פיסת מידע, או ביטול. אז לפני כמה שנים, העולם פשוט החליט זה מעט יותר נוח לדבר במונחים של בתים, שמונה דברים בו זמנית. וכך וכך נולד הרעיון של בתים. וכך יש לנו שמונה ביטים כאן. ומתברר גם עבור דומים סיבות, העולם החליטו שנים לפני כי לייצג מכתב ASCII, אתה הולך להשתמש ביחידות של 8 סיביות. אז גם אם אתם לא צריך שרבים, אתה תמיד הולך להשתמש 8 ביט מייצגים אות של האלף בית. וזה נוח, כי אז אם אתה הודעה על כך יש 0 0 0 1 1 1 1 0 ואחריו 1 1 1 0 1 0 אחר 0 1, כך שאם אתה מקבל 16 ביטים, העולם יכול רק להניח כי 8 אחד האות הראשונה והשני 8 הם עוד מכתב. לא משנה כמה יש. רק חשוב לה כולנו עקבי כשאנחנו לפרש ביטים אלה. וזה סתם במקרה. זה אומר משהו, אבל לא עשיתי זאת באמת לחשוב על מה זה אומר. אז זה שקר לבן קטן. במקור, ASCII משמש למעשה רק 7 סיביות. ואת קצת השמיני הוא קרא ASCII המורחבת. אבל הנקודה היא, בסופו של דבר, אותו הדבר. העולם בכלל טופל על 8 סיביות. אז זה היה נראה קצת מגבילים, כי אני יכול רק מייצג הון, B הון באמצעות Z. ההון אבל אכן לא, אם אני הולך עם-- יש כמה מקורות מידע באינטרנט, למשל, asciitable.com, זה הולך להיות קצת מוחץ בהתחלה. אבל אציין מה שחשוב כאן. זה פשוט קורה להיות-- ויהיה לי walk-- בוא נראה, אם אני הולך כאן. הנה, ב עשרוני טור, מספר 65. ועל מכתב בעמודה הימנית אופי, Chr, הוא אות א ואתה יכול להתעלם, לעת עתה, הכל באמצע. זהו הקסדצימלי, אוקטלי, ו קוד HTML. לאתר זה פשוט מנסה לזרוק הרבה מידע עליך בבת אחת. אבל כולנו אכפת הוא עשרוני ובעמודה אופי. אז על פי ההיגיון הזה, מה הוא מספר שהעולם חליטה מייצגת קטן להקליד? כן, 97. ורק כדי לבלבל פוטנציאל מעט, מה מספרם העולם החליט תייצג את מספר 1? נכון, כי 49 אנחנו--, נראה כאן, למטה בצד ימין למטה. עכשיו, מה שאני מתכוון לעשות את זה? אז מתברר כי במערכות מחשב, יש בדרך כלל הבדל מהותי בין מספר ומעניקים לו אופי. מספר זה הדבר שאנחנו למד התבגרות כאשר היינו צעירים סופר בבית הספר היסודי. זה דברים שאתה לספור עם. אבל אופי הוא רק צורה, גליף, אם אפשר לומר כך, על המסך. עכשיו, אנחנו, בני אדם כאילו רואים משהו שנראה כמו זה. ואנחנו אומרים, אה, כי הוא המספר 2. אבל לא, זה רק סמל שנראה כמו מה שאנחנו יודעים כמספר 2. וכך יש זה הבחנה יסודית בין מספרים ותווים בפועל. זהו מספר. אבל בדרך כלל, ב בהקשר של מחשב, אם אתה במקום לראות משהו כמו quoted-- זה ואתה לא תמיד צריך לראות את זה מצוטט, אבל למען discussion-- אם אתה רואה ציטוטים סביב המספר, זה עכשיו דמות. אז זה מספר 2 מתחת מכסה המנוע הפנימי של מחשב ייוצג עם דפוס ביטים המייצגים את המספר 50 לפי התרשים באינטרנט. עם זאת, אם מחשב רק רואה את זה, זה ייוצג עם דפוס של קצת 0 0 0 0 0 0 1 0. בעוד, הדמות הזאת הייתה בעצם להיות מיוצג as-- ועכשיו, קיבלתי לחשוב harder-- כל כך מעט זה אופי יהיה מיוצג עם 0 0 1-- מה אני צריך לעשות כאן? 0 0 1 1 0 0 1 0. איך עשיתי את זה? ובכן זהו המספר 50, אם אתה להכפיל את זה באמצעות עמודות אלה, זהו המספר 2, וכן הלאה זו הסיבה שיש דיכוטומיה זו. וזה רק טיזר עכשיו עבור תכונות כי קיימים בשפות תכנות כי נצטרך לגעת בקצרה מאוחר יותר היום. בשפות תכנות, יש לך בדרך כלל, אבל לא תמיד, דברים קוראים סוגי נתונים שונים. במילים אחרות, programmer-- כאשר הוא או היא כותבת, מתכנת מקבל להחליט במה פורמט לאחסון הנתונים שלו או שלה. אתה יכול לאחסן נתונים כמו מספרים גולמיים, כמו מספר 2. או שאתה יכול לאחסן אותם כמו מחרוזות, או רצפים של תווים כי היית לבטא בדרך כלל עם ציטוטים בשפת התכנות שלך. אתה יכול לקבל דברים שנקרא-- אני לפישוט יתר קורא להם numbers-- אמת, כך מספרים הם לא מספרים שלמים כמו מספר 2, אבל מספרים כמו 4.56. אז מספרים ממשיים יכולים גם יש נקודות עשרוניות, ככה שזה לא שונה יסוד פיסת המידע במחשב. ואז אתה יכול אפילו סוגי נתונים אחרים עדיין. אז זה רק טיזר באמת של הפשוט של החלטות עיצוב כי מתכנת אולי להפוך מתחת למכסה המנוע. אז שאלות עדיין? אז בואו ננסה לעשות זה קצת יותר אמיתי. חומרה זו אינה כל כך הרבה בשימוש יותר. אבל כמעט כל אחד בחדר הזה כנראה גדלתי עם ועדיין משתמש כוננים קשיחים בדרך כלשהי. למרות שרוב המחשבים הניידים שלנו כבר לא יש מכשירים שפועלים ככה, במקום מחשבים ניידים היום בדרך כלל יש כונני מצב מוצק ללא חלקים נעים. וזה נוטה להיות יקר יותר, למרבה הצער, אבל קצת יותר מהר ו לזה-- היטב, לעתים קרובות, הרבה יותר מהר, וזה אחת הסיבות. וגם זה לא לייצר חום באותה מידה. זה יכול להיות קטן יותר, כך שזה בדרך כלל נטו חיובי. אבל זה מאפשר לנו למפות קצת יותר קונקרטי מה אנחנו מדברים על על ספרות 0 ו 1 של רמה עכשיו למכשיר פיזי. זה דבר אחד בשבילי לדבר על 0 ו -1 במונחים של הטלפון שלי או מופשט במונחים של הבוררים להיות לסירוגין. אבל מה עם כוננים קשיחים? המחשבים הניידים שלך, אם יש לך גרסה ישנה יותר אחד, או במחשב השולחני, או בהחלט בשרתים היום, שבו אתה צריך כוננים קשיחים שיש טרה-בתים של שטח, 4 טרה-בייט של שטח, גם מה זה אומר? כונן קשיח עם 1 טרה של אמצעי שטח יש 1 טריליון בייטים בתוכו איכשהו, או באופן שקול 8 טריליון ביטים בפנים. 1 טרה תהיה 8 terabits או 1 טריליון ביטים, אשר המשמעות היא שאם יש לך קשה כונן, אתה צריך איכשהו או אחר טריליון 0 של ובתוך של 1 ממנו. ואם אנחנו פשוט נסתכל לעבר תמונה שרירותית של כונן קשיח נציג, זה מה קשה כונן עשוי בדרך כלל להיראות בפנים. זה גם זה סוג של כמו שחקן הפטיפון הישן אבל בדרך כלל עם רשומים מרובה בפנים, אז כדי speak-- מרובה מגשים, כפי שהם קראו, דיסקים עגולים מתכת, ו אז ראש קריאה קטן, הרבה כמו הפטיפון ישן. וזה ראש הקריאה נע הלוך ושוב ואיכשהו קורא את הקטעים. ומה על מגשים אלה, אפילו אף אנו, בני האדם לא יכול לראות אותם, גם במציאות או בתמונה הזאת, יש חלקיקים מגנטיים קטנטנים. וגם אם יש לך זמן שכח כיצד פועל חשמל, חלקיק מגנטי כי הגישה אישומים בדרך כלל יש סוף צפוני ודרומי end-- כך מצפון ומדרום. וכך העולם רק החליט לפני כמה זמן כי, אם פרוטוקול מגנטי בעצם מיושר כזה, צפון-דרום, בואו לקרוא לזה 1. אם זה במקום דרום-צפון, בואו פשוט קוראים לזה 0. וכך אם יש לך בבית לרשותכם טריליון קטנטן מגנטי particles-- ובתקווה, את כושר ההמצאה של החומרה כדי להעיף סובבים כפי שאתה רואה fit-- אם אתה רוצה מייצג חבורה שלמה של ספרות 0, אתה רק צריך 8 חלקיקים מגנטיים כל מיושר כזה. ואם אתה רוצה לייצג שמונה 1 של, אתה פשוט צריך 8 חלקיקים מגנטיים מיושרים גב אל גב אל גב כזה. מה שאני מתכוון לעשות על ידי חלקיקים מגנטיים? למען האמת, אחרי כל השנים האלה, את דבר שעדיין מגיע לדעתי הבחור הוא זה, אם אתה גדלתי עם הדבר הזה. זהו little-- עבור לאותם unfamiliar-- צעצוע ילדות קטן יש אדם ללא שיער זה כאן כי יש את כל שחור קטנטן אלה חלקיקים מגנטיים שמגיעים עם זה. ושימוש כי מקל אדום, וזה רק מגנט, אתה יכול סוג של לתת לו שפם או גבות או שיער או כל דבר עליו. אז למעשה, אם אנחנו זום ב, למשל, זה הוא סוג של משחק אתה יכול לשחק עם Wooly וילי. וזו רק לומר, אלה הם הרבה חלקיקים מגנטיים גדולים מ הם למעשה על כונן קשיח, ו הרבה פחות חלקיקים מגנטיים. אבל בואו ממש לראות אז אם יש לך חלקיקים מגנטיים זעירים בתוך כונן קשיח, איך אתה יכול למעשה להשתמש בהם כדי לייצג נתונים. [הפעלת סרטון] -The כונן קשיח הוא שם המחשב חנויות ביותר של נתונים וקבועים. כדי לעשות זאת, הנתונים נוסע מ RAM יחד עם אותות תוכנה המספרות את כונן קשיח איך לאחסן נתונים. מעגלי הכונן הקשיחים לתרגם אלה אותות לתוך תנודות מתח. אלה, בתורם, לשלוט על הכונן הקשיח של נעים parts-- חלק מרגש כמה חלקים שנשארו המחשב המודרני. חלק האותות לשלוט מנוע, אשר מסתובב מגשי מצופי מתכת. הנתונים שלך הם למעשה המאוחסנים מגשים אלה. אותות אחרים להזיז את ראשי הקריאה / כתיבה לקרוא או לכתוב נתונים על המגשים. מכונות זה כל כך מדויק כי שערת אדם לא יכול אפילו לעבור בין הראשים ספינינג מגשים. ובכל זאת, זה כל עובד במהירויות נהדרות. [סוף PLAYBACK] ואתם יכולים לראות את בזנבה של וידאו, יש בדרך כלל מגשים מרובים. וכך שראש הקריאה לא רק קורא את הדף. זה כמו סוג של שלוש או ארבעה או יותר ראש קריאה כי צעד כזה, קריאת נתונים בו זמנית. אז יש הרבה מורכבות מעין העיתוי כי מעורב כונן קשיח. והדבר מסתובב באמת לתקן מהר, כך שאין הרבה מורכבות. אבל בואו להתקרב קצת עמוק לראות היכן הם חלקיקים מגנטיים אלה ואיך אנחנו מתאספים לעברם. [הפעלת סרטון] מבט של 'תן על מה שאנחנו פשוט ראיתי בהילוך איטי. כאשר דופק קצר של חשמל נשלח קריאה / כתיבת הראש, זה מדליק אלקטרומגנטיים זעירים לשבריר של שנייה. המגנט יוצר שדה, אשר משנה הקוטביות של זעיר החלק של חלקיקי מתכת ואיזה מעיל אחד של משטח מגש. סדרת דפוס של אלה זעירים אזורים טעונים עד בדיסק מייצג סיבית בודדת של נתונים מערכת מספר בינארי שמוצגת מחשבים. עכשיו, אם הזרם נשלח אחד דרך ראש הקריאה / כתיבה, באזור מקוטב בכיוון אחד. אם הזרם נשלח בכיוון ההפוך, הקיטוב מתהפך. איך אתה משיג את הנתונים מהדיסק הקשיח? בואו נהפוך את התהליך. אז זה החלקיקים על דיסק לקבל את הזרם בראש הקריאה / כתיבה נעימה. להרכיב מ' אלה מגזרים ממוגנטים, ויש לך קובץ. עכשיו, את החלקים של קובץ בודד עשויים להיות פזורים בכל רחבי מגשים של כונן, כמו סוג של בלגן ניירות על השולחן שלך. אז קובץ מיוחד נוסף שומר אחר שבו הכל. האם לא היית רוצה שיהיה לך משהו כזה? [סוף PLAYBACK] אז להיות רמז שם, אולי, הוא נושא מאתמול של מחיקה. כשמוחקים קובץ, אתמול אמרנו כי מחשב בעצם עושה מה, בעת גרירת משהו אל סל המיחזור או אשפתון? זה פשוט שוכח אותו. אבל של של ו 1 0, החלקיקים המגנטיים המבט הזה כמו אדום וכחול דברים כאן, או הזרועות כאן, הם עדיין שם על הכונן הקשיח. וכך קיימת software-- ביזרי "תמול נורטון ועוד יותר מודרני software-- כי רק יסרוק את הכונן הקשיח כולו מחפש בכלל 0 ו -1 האלה, כי זה מתברר שרוב קובץ formats-- מסמכי Word, Excel, תמונות, וידאו files-- כל יש מסוימים דפוסים נפוצים ביניהם. כל קובץ וידאו להיות של וידאו שונה, אבל הראשון מספר ביטים הנם בדרך כלל אחידים. או את הקטעים האחרונים הם בדרך כלל זהים. וכך בהסתברות גבוהה, אתה יכול לחפש דפוסים אלה. וגם אם הקובץ נשכח, אתה יכול לומר בהסתברות גבוהה, אבל זה נראה כמו מסמך Word, מאפשר לשחזר אותה ובטל לשכוח את זה, אם אתה. וכך זה איך אתה יכול לשחזר הנתונים גם היה בטעות נמחק או נמחק או בכוונה נמחק מכל מטרות. לעומת זאת, למחיקה מאובטחת עושה מה בהקשר של תמונה כזאת? בדיוק, גורם להם כל אקראיים. אז זה סוג של מהלכי חלק אותם למטה, חלקם עד, משאיר כמה מהם ללא שינוי, בדרך כלל עושה רעש אקראי מתוך זה, או רק אולי עושה כל אותם 0 או כולם 1 של. וזה גם יכול בדרך כלל לשפשף את הנתונים שלך משם. אז בואו נחזור עכשיו לנושא של חשיבה חישובית, לפיה יש לנו את תשומות הנוסחה. ואלגוריתמים נותנים אתה פלט בסופו של דבר. אנו מתמקדים כעת על תשומות פלטים, כי עכשיו, אני טענה שיש לנו עוד דרך של מייצג תשומות ותפוקות. אנחנו פשוט הולכים להשתמש בינארי. ולא משנה מה שאנחנו רוצה לייצג היום, בין אם זה מספר או מכתב או אלף ממנו בספר טלפונים תמונות או סרטים או, בסוף היום, זה כל 0 ו -1. ואני טוען כי, למרות זה הוא עולם פשוט ספר רק עם 0 של ו -1, אנו יכולים לבנות את עצמנו. וראינו דוגמא אחת כי עם אותיות עד כה. אז בואו להתמקד מעתה ואילך זה מרכיב באמצע, אלגוריתם. ובואו לחזור זה דוגמא מייק סמית. אז בספר הטלפון הזה, אשר יש להודות, אנחנו לא משתמשים כל כך הרבה יותר, יש בעיה שצריך לפתור. אנחנו רוצים למצוא מישהו כמו מייק סמית. ומה אם יורשה לי לעשות כדי למצוא מייק? ובכן, אני יכול פשוט לפתוח את זה הספר, להתחיל בעמוד הראשון, ולהבין, הו, אני במקטע A. מייק לא שם. אני צריך את סעיף S עבור סמית. אז פשוט לשמור על הפיכת עמוד אחד בכל פעם. הרשו לי להעמיד פנים שכל זה דפים לבנים לא דפי זהב, ומכיוון שאנחנו לא הולכים למצוא מייק בדפי זהב בכל מקרה. אבל אני הדפים הלבנים. ועכשיו, אני בקטע B. אני עדיין לא מצאתי אותו. אז אני ממשיך לסובב את עמוד אחד בכל פעם. זהו אלגוריתם. זהו אוסף של הוראות לפתרון בעיה כלשהי. במילים אחרות, להסתכל דף, אם מייק לא על זה, להפוך דף, וחוזר שוב ושוב ושוב, באופן אידיאלי מביט למטה כפי שאתה עושה את זה. אז הוא אלגוריתם זה, תהליך זה, נכון? מצטער. לא, אני שומע כמה nos. בסדר, אבל זה אז-- כן, זה בהחלט מייגע. כאילו, אנחנו נהיה כאן כל היום אם אני להמשיך לחפש מייק במהירות זו. אבל הרשו לי לטעון שזה נכון. זה טיפשי, אבל זה נכון. בסוף היום, כל עוד זה אולי לקחת, אני אמצא מייק אם הוא נמצא שם ואני שם לב. ואני בסופו של דבר להגיע לדף שלו. ואם אני מקבל יותר מדי, אם אני מקבל את חלק T, אז אני יכול לייעל מעט ופשוט לומר, HM, הכל נעשה. אני אפילו לא צריך לבזבז זמן ללכת נחירות. אבל זה מאוד גישה ליניארית, אם אתה יהיה, שמאלה לימין מעין מאוד גישה, בקו ישר. שלה נכון, אבל איטי. אז אני זוכר מבית הספר היסודי, למיין של אופטימיזציה של תלמיד כיתה א ', שם למדתי איך לספור לא על ידי אלה אלא על ידי twos-- כך 2, 4, 6. זהו, הרבה יותר קשה לעשות, אבל בתיאוריה, זה 8 faster--, 10, 12, 14, וכן הלאה. מה דעתכם על זה אלגוריתם? האם זה יעיל יותר? האם זה יותר מהר? קהל: זה יעיל. DAVID מלאן: כן, אז זה def-- זה פעמים מהר ממש כמו, בהנחה שאני אל תבינו מעד באצבעותי. זה פי שניים יותר מהר, כי אני מפנה דרך השנייה דפים בבת אחת במקום אחד, אבל זה פוטנציאל נכון, כי מה פתאום? קהל: אתה מדלג כמה. DAVID מלאן: נכון, מה אם מייק קורה אולי כדי להיות sandwiched-- כשאני מאוחר יותר בספר הטלפונים, מייק קורה להיות דחוק בין שני עמודים אלה, ואני פשוט לדלג על זה בעיניים עצומות. אז אנחנו צריכים לתקן מעט שם. לאחר שנלחץ בסעיף T, אני אי אפשר פשוט לומר בביטחון, לא מצאנו מייק סמית. אני כנראה צריך לחזור על עקבותי. או למעשה, ברגע שאני להגיע למישהו בשם S-N, במקום S-M עבור סמית, מיד, אני יכול להכפיל בחזרה, כי אולי הוא היה בעמוד הקודם. אבל אני לא צריך לחזור על עקבותי כה. בתיאוריה, אם אני עושה את זה בצד ימין זמן, אני פשוט לחזור עמוד אחד. אז זה מוסיף רק צעד אחד נוסף. אז עברתי במהירות כפולה, אבל זה עלה לי דף אחד נוסף. אבל זה מרגיש כמו ניצחון נטו. אבל זה לא כך רוב האנשים חדר זה יפתור את הבעיה. מה היה אדם טיפוסי, אולי בשנים לעשות לפני, כדי למצוא מייק סמית? כן, לא מצאתי מייק. מה אני עושה? אז להתקרב מעט יותר, אבל אני עושה יודע-- מה נכון לגבי ספר טלפונים? קהל: זה רציף. DAVID מלאן: זה רציף. זה אלף-בית. וכך אם אני בקטע M, מייק הוא בבירור בצד ימין, אני ממש יכול לקרוע הבעיה half-- זה בדרך כלל קל יותר מאשר דמעה ש-- הבעיה לשתיים לזרוק אותו, כך עכשיו, יש לי בעיה כי זה כבר לא 1,000 pages-- כי היה קשה, כי אני חושב שאני ממש קרע בספר הטלפון הזה הבאה-- לא 1,000 עמודים, אך 500. אז הבעיה היא פשוטו כמשמעו חצי כמו גדול. וזה די משכנע, כי עם האלגוריתמים הקודמים שלי, גרסה 1 ו -2, אני רק עושה את הבעיה עמוד אחד קטן, שני עמודים קטנים בכל פעם. ואילו עכשיו, אני עשיתי את זה 500 דפים קטנים בבת אחת. אוקיי, אז עכשיו, כרים מציעים כי אני הולך החצי הימני. אז אני הולך בערך לאמצע, פלוס מינוס. ואם עשיתי את זה באופן מתמטי, אוכל ללכת ישר לאמצע. ועכשיו, אני מבין, הו, אני בקטע T. אני ממש לא ללכת רחוק מדי. אבל אני יכול, שוב, לקרוע את הבעיה לשניים, לזרוק אותו. הבתים שלי לא גדול. זה רק, מה, 256 עמודים או 250 דפים, פחות או יותר עכשיו. אבל זה עדיין הרבה יותר מעמוד אחד או שני עמודים. אז עכשיו, אני הולך בערך לאמצע. הו, לא הלכתי די רחוק מספיק עכשיו. אז אני חוזר ואומר, חזור, חזור, חוזר, עד שאני מקווה נשאר עם דף אחד בלבד. אז שמזמין את השאלה, אם אני התחיל עם בערך 1,000 עמודים, כמה צעדים לקח לי עם גירסה 1 של האלגוריתם שלי? ובכן, אם מייק הוא ב- S סעיף, במקרה הגרוע, זה די קרוב סוף האלף. אז אם את ספר הטלפונים יש 1,000 דפים, אני אמצא מייק בתוך -1,000 עמודים, פחות או יותר. אולי זה כמו 800 או משהו כזה, אבל זה די קרוב ל -1,000. הואיל ובמקרה השני אלגוריתם, כמה דף פונה מקסימאלי יכול אף אני דורשים למצוא מייק סמית? יש 1,000 דפים, אבל אני עושה אותם שניים בכל פעם. בסדר, אז מקסימום כמו 500ish, כי אם אני עובר את ספר הטלפונים כולו, ובנקודה זו, אם אני יכול להפסיק. אבל אני יכול לגלח כמה ידי רק עוצר ליד סעיף T. אבל זה ב במקרה הגרוע 500 עמודים. אז כמה פעמים אני יכול לחלק 1,00o עמודים בספר טלפונים לשתיים שוב ושוב again-- מ 1,000 500 כדי 250 ל 125? כמה זמן לפני שפגעתי עמוד אחד? כן, זה בערך 10. בהתאם עיגול וכאלה, זה כ -10 עמודים צורכים סכו להיות מופעל או ספרי טלפונים צריכים להיות קרועים. אז זה די חזק. התחלנו עם בעיה 1,000 עמודים בכל שלושת הסיפורים האלה. אבל בסופו של האלגוריתם הראשון, זה דף לקח לי, במקרה הגרוע ביותר, 1,000 פנה למצוא מייק. אלגוריתם שנית, 500 דפים למצוא מייק. אלגוריתם שלישי, 10 עמודים כדי למצוא מייק. וזה אפילו יותר עוצמה כשחושבים על סוג של תרחיש הפוך. נניח שחברת הטלפון הבא שנה אולי ממזג שתי עיירות יחד, ואת ספר הטלפונים הוא פתאום זה עבה, במקום שזו, כך 2,000 עמודים במקום 1,000. ובכן, האלגוריתם הראשון שלי מחפש מייק סמית בספר הטלפון 2,000 עמודים, במקרה גרוע יותר, זה הולך לקחת דף כמה פונה בשנה הבאה? ספר טלפונים הוא 2,000 עמודים, ולכן-- היטב, לא אחת יותר. אם את ספר הטלפונים הוא בעובי כפול ב האלגוריתם הראשון, האלגוריתם הראשון, 2,000, נכון? במקרה הגרוע ביותר, מייק הוא באמת לסגור עד סוף הספר, אז זה 2,000 פניות הדף. אלגוריתם שנית הולך לפי בזוגות, כמו -1,000 עמודים. אבל מה לגבי השלישי שלי ו האלגוריתם האחרון? אם חברת הטלפון מכפילה את מספר עמודים בין 1,000 ל -2,000, כמה פעמים עוד צריך אני קורע ספר זה בחצי למצוא מייק? קהל: רק אחד. DAVID מלאן: רק אחת יותר, כי עם קרע עמוד אחד, אני ממש יכול לחלק ומשול, אם תרצו, הבעיה כי נטילה וחצי ביס מסיבי ממנו. וכך זה הוא דוגמה יעילות לטעון אלגוריתם שבה כולנו מעין אינטואיטיבי מוכר. אבל זה בדיוק כמו נכון כמו אלגוריתמים האחרים שלי עם זה לצבוט עבור האלגוריתם השני, אבל זה כל כך הרבה יותר יעיל. ואכן, מה זה מחשב מדען, או בתורו מתכנת, בדרך כלל יעשה בעת הכתיבה הקוד הוא מנסה להבין, בסדר, אני לא רוצה שלי התוכנית רק כדי להיות נכון, אני גם רוצה שזה יהיה יעיל ולפתור בעיות גם. דמיינו בעולם האמיתי היום, כמו אינדקסים Google, חיפושים כמו מיליארדי דפים, לדמיין אם הם השתמש האלגוריתם הראשון למצוא חתולים בקרב מיליארד pages-- הסתכלות העמוד הראשון באתר שלהם, השני, השלישי, רק מחפש עבור חתול, מחפש חתול. וזה לא רע בכלל להאט זה היה נראה. הם במקום יכולים להשתמש במשהו חיפוש בינארי שנקרא, אשר אין הוא coincidence-- דו משמעות שני, אנחנו ממשיכים להתחלק משהו 2, ב half-- הם יכולים להשתמש בחיפוש בינארי ואולי למצוא חתולים אפילו מהר יותר, או מה שזה לא יהיה שאתה מחפש. ולמען האמת, יש אפילו אלגוריתמים להשתכלל כי לעשות הרבה יותר מסתם חלוקת דברים לשניים כדי למצוא מידע במהירות. ונדברנו קצת לגבי כל אותם אחרי ארוחת הצהריים היום. אז תנו לי רק לנסות לייצג את. אנחנו לא צריכים להיכנס כל מתמטיקה או מספרים אמיתיים. אנחנו יכולים לדבר על זה באופן מופשט. אבל תן לי רק להציע, אם אתה היו שקועים בדיון החברה עם המהנדסים מציע אלגוריתם זה ואתה מנסה לעשות להחלטה שקולה, כי אולי מהנדס אומר לך, אתה יודע מה, אני יכול לממש חיפוש ליניארי כשתי דקות. זה עד כדי כך קל. חיפוש בינארי הוא לא מפואר, אבל זה הולך לקחת לי כמו 10 דקות, כך 5 פעמים, כל עוד. יש מסחר כאן, אפילו במונחים להחליט אילו תוכנות לכתוב. האם אתה כותב אלגוריתם פשוט, אשר רק ייקח לך שתי דקות? או שמא אתה מבלה יותר זמן, 10 דקות, כתיבת האלגוריתם להשתכלל? כיצד אתם מחליטים על שאלות מסוג זה? או שאתה יכול לעשות את זה קצת יותר אמיתי. אני אומר הבוס שלי זה הולך לקחת גם לי שבוע או 10 שבועות ליישם את תוכנה בדרך זו, כיצד אתם מחליטים אילו אלגוריתם-אור ירוק? כרים? קהל: הקהל, אני מניח. DAVID מלאן: הקהל. למה אתה מתכוון על ידי הקהל? קהל: אם זה הולך כדי להיות בשימוש על ידי משתמשים מי [לא ברור] על ידי משתמשים [לא ברור]. אבל אם זה משהו שאתה רק עושה בעצמך כדי להקל על בעיה, [לא ברור] מהר. DAVID מלאן: כן, היא מהירה מלוכלך היא דרך טובה לתאר את זה. למעשה, אם אתה המתאר חלק גדול מזמני באוניברסיטה, לפיה פעמים רבות, כתבתי קוד רע במודע ולכן-- לפחות, ככה אני רציונליזציה it-- במודע כך, כי אף על פי שאני כותב קוד כי היה איטי יחסית לביצוע, הצלחתי לכתוב את הקוד עצמו דקות די מהר, הוצאות רק או שעות לא ימים. ומתברר, אני מדי פעם הייתי זקוק לשינה. אז גם אם הקוד שלי צריך לעבור 8 שעות כדי לרוץ, גם זה בסדר, אני פשוט אלך לישון בזמן שהוא פועל. אז בזמנו, חשבתי שזה היה מאוד חכם, למרות שאני כנראה עבד דרך עבודת הדוקטורט שלי מאוד לאט. אולם גם ההפך של זה כי, אם הייתי כותב תוכנה עבור אנשים אחרים חשוב יותר ממני, גם, שיש להם לחכות 8 שעות לחזור תוצאות החיפוש שלהם לא כל היא משכנעת. וכך לבלות זמן רב יותר מלפנים לכתוב תוכנה כי הוא יותר יעיל, יותר כמו האלגוריתם השלישי שלנו, כנראה מיטיב עם המשתמשים לאורך זמן. אז זה באמת תלוי מעל הזמן כיצד אותן העלויות מסתכמות. אם אתה הולך לכתוב תוכנה להשתמש בו פעם אחת, כנראה יכול גם לעשות מהיר ומלוכלך, כמו שאומרים. פשוט לזרוק את זה יחד. זהו קוד זה מביך אתה, זה כל כך רע, אבל זה עושה את העבודה כראוי, למרות שזה לא יעיל. לעומת זאת, אתה מבלה יותר זמן על משהו, לקבל את זה בדיוק כמו שצריך. ואז מופחת על פני זמן, עלות upfront כי זמן הוא כנראה כדאי, אם אתה שומר אופטימיזציה עבור המקרה הנפוץ. ואכן, זה נושא ב מדע תכנות, או מחשב יותר בדרך כלל, מנסה לייעל לא במקרה הנדיר אבל case-- המשותף מה פעולה עומד לקרות שוב ושוב? אם אתה הולך להיות מיליארדים משתמשים המחפשים באתר האינטרנט שלך, אתה כנראה צריך לבלות את התוספת שבועות מלפנים כתיבת תוכנה טובה יותר, כך שכל המשתמשים שלך ליהנות. עכשיו, בואו ננסה לתפוס זה קצת באופן ציורי, אבל לא כל כך הרבה מבחינה מספרית. אז הנה רק תרשים בית ספר ישן. ותן לי לומר שזו הפעם. וזה לא משנה איזה-- למעשה, לא, לא הפעם. בואו נשים את זה על הציר השני. נניח כי זוהי הפעם, וזה גודל הבעיה. ומדען מחשב אולי בדרך כלל קוראים זה רק n. n הוא כמו Go-למשתנה שלנו, שבו n הוא מספר, מספר n, וזה מספר מה תשומות יש לך. אז במקרה הזה, n הוא מספר עמודים. אז אולי זה יהיה 1,000 במקרה אנחנו רק אמרנו. אז זמן יכול להיות כל יחידת המידה. אולי, זה שני. אולי, זה ימים. אולי, זה כמו פניות הדף. לא משנה. לא משנה מה אתה רוצה לספור, כי יהיה זמן או לעלות באופן שקול. אז עם זה מאוד ראשון אלגוריתם, אם אני, למשל, היה ספר טלפון 1,000 עמודים, אני הולך לצייר נקודה שם, כי אם זה 1,000 עמודים, זה לקח דף כ -1,000 פניות, פלוס מינוס. ואז אם יש לי ספר טלפונים 2,000 עמודים, ואני הולך לצייר שני dot כאן, כי עבור 2,000 עמודים, זה כמו 2,000 שניות דף או פונה או מה שלא יהיה. וכך כאשר שאמרתי קודם, זה סוג של קשר ליניארי, זה היה בכוונה, כי רציתי מאוחר יותר on-- תקין now-- למתוח קו. זהו סוג של ישר יחסי קו. שיפוע הדרך 1/1, אם תרצו. בינתיים, האלגוריתם השני אמר, אם יש לך 1,000 עמודים ואתה השתמשת באלגוריתם השני, שם ספרתי של 2, מפנה שני עמודים בכל פעם, אני צריך לצייר נקודה מתחת או מעל הנקודה המקורית שלי? קהל: להלן. DAVID מלאן: להלן, כי כפי שראינו, זה לוקח פחות זמן, חצי זמן רב. כך שהנקודה צריכה להיות חצי גבוה ככל השני. ואותו עסקה לכאן, נקודה זו כנראה צריך להיות בערך שם. וכך האלגוריתם השני שלי, באופן דומה, יש קשר ליניארי עם הזמן. ואנחנו יכולים לצייר אותו ככזה. אז עכשיו, השלישי ואחרון האלגוריתם הוא קצת יותר קשה לצייר. אבל באופן אינטואיטיבי, אם יש לי 1,000 דפים עם האלגוריתם השלישי שלי, זה צריך לקחת לי רק כמו 10 צעדים. ואם יש לי 2,000 עמודים עם האלגוריתם השלישי שלי, זה צריך לקחת לי לא 10 צעדים, אבל 11, רק עוד אחד. אז אנחנו רק בקושי הולכים לראות את זה. ומתברר, אם אני להתמקד על זה, אני הולך להגזים עבור השפעה, בצורת קו שבסופו של דבר, לא הוא ישר line-- כי, אכן אם היו, זה היה נראה יותר כמו נוספות-- זה בעצם קו מעוקל כי, אם אנחנו הגדלה, הולך להיראות הרבה יותר ככה. It-- טוב, בסדר, להתעלם החלק הזה. זה היה העט שלי הולך של זווית. זהו קו מעוקל כי הוא תמיד הגדלה, תמיד, תמיד, תמיד הגדלה, אבל רק בקושי. וכך, במשך הזמן, יש לך יחסים זה יותר ככה. זה כמעט נראה ישר. אבל פעם זה כל כך לאט גובר. אבל כמעט כל הנקודות יחד שלך ציר x, ציר אופקי, זה נמוך יותר מאשר אלו קווים אחרים. אז זה יכול להיות מערכת יחסים n, לפיו אם יש לך דפי n, לוקח אותך n שנייה. זו יכולה להיות מערכת יחסים n / 2. אתה צריך דפי n, זה לוקח אתה n / 2 שניות, חצי ממספר. וזו לוגריתמים הקשר, אשר אם אתה זוכר, להתחבר בסיס 2 של לוכדת n סוג זה של צמיחה, אם אפשר לומר כך. אז זהו סוג של קדוש הגביע בין שלושת אלה כאן, כי זה פשוט כל כך הרבה יותר מורכב ביותר, אבל ללא ספק יותר ליישם. יש שאלות? ובכן תן לי לעשות את זה, תן לי לפתוח חלון טקסט רק כדי שנוכל לנסות למסד משהו כאן. אז תן לי ללכת קדימה עכשיו ליישם אלגוריתם זה למציאת מייק סמית בקוד, אם תרצה, קוד פסאודו קוד. אני לא הולך להשתמש Java או C ++. אני רק הולך להשתמש מעין אנגלית-כמו תחביר, אשר אנו יקרא פסאודו קוד קוד באופן כללי. הנה, יש לי חלון ריק. ואני אומר בשלב 1 של מאוד האלגוריתם הראשון הוא להרים ספר טלפונים. שלב 2 הוא ספר פתוח בעמוד הראשון. שלב 3 יהיה להסתכל דף עבור מייק סמית. אם בעמוד, קוראים מייק. דף בתורו אחר ועבור לשלב 3. בוצע, נניח. וכך זה לא ממש מושלם, אשר נראינו בעוד רגע. אבל הבה נבחן מה מושגים כבר הציג כאן. אז על שלבים 1 ו -2 ו -3 הם פעלים פחות או יותר. הם הצהרות, actions-- לעשות זאת. וכך בתוך התכנות שפה, היינו עושים זאת בדרך כלל קוראים להם דוחות או פונקציות או נהלים, קורא להם כל מיני דברים. אבל הם רק actions-- לעשות זאת. שלב 4 הוא שונה במהותו, כי זה סוג של שואל שאלה. זה אומר שאנחנו סוג של ב מזלג בכביש. אם מייק נמצא בדף, לקרוא לו, כך פונים שמאלה, אם תרצו. ואם לא, לחזור כמה אחרים page-- או ליתר דיוק, סליחה, לחזור כמה צעד אחר, אשר גורם איזשהו מבנה looping. ואנחנו עושים את זה שוב ושוב ושוב. ולמעשה, אתה יודע מה? כֵּן. אחר אם בסוף להפסיק ספר. אז אנחנו צריכים סוג של שליש מצב, כי אתה לא יכול כל הזמן מדליק את מודעת עמוד nauseum, כי בסופו של דבר, אני יהיה פגע בסופו של הספר. וזה באג בתוכנית עשוי להיות לא מצפה תרחיש. ואז רק עכשיו הבנתי, אה, רגע רגע, אני צריך תסריט שלישי. אם אני מתוך דפים, אני באמת צריך פשוט להפסיק. אחרת, זה לא מוגדר. מה יקרה אם אני אמשיך אומר להפוך את הדף ולחזור, זה כאשר מחשבים להקפיא או לקרוס, כאשר אתה מכה כמה מצב בלתי צפוי כאלה. עכשיו, מה לגבי מייק algorithm-- השלישי של סמית להרים את ספר הטלפונים, ספר פתוח הראשון-- כדי לא, לא בעמוד הראשון הפעם, כדי middle-- הו, ובכן, זה להיות האלגוריתם השני. בואו פשוט לדלג השלישי. קהל: הו, אני מצטער. DAVID מלאן: זה בסדר גמור. בואו פשוט לדלג פתוח third-- כדי באמצע ועכשיו לחפש מייק סמית. אם בעמוד, קוראים מייק. ואז מה אנחנו רוצים לומר כאן? אחר מה? אנחנו יכולים לבטא את זה בכל מספר דרכים. אין תשובה נכונה. בסדר, אם לא שוב, אבל אנחנו צריכים להיות-- אישור, אנחנו רוצים לחלק לשתיים, אבל אנחנו רוצים ללכת שמאלה או ללכת נכון? איך אפשר לבטא את הרעיון הזה? ובכן, במקרה של מייק, כן, זה הוגן. אבל בסדר, אז זה בעצם נקודה טובה. זה בסדר. נצטרך להמשיך עם ההיגיון הזה. כך-- קהל: פחות ממחצית. DAVID מלאן: כן. אז אחר אם הדף הוא, נגיד, פחות מ סמית, בצד שמאל של סמית, שאז-- בוא נראה, הוא זה הולך לסבך? אחר אם הדף מגיע לפני סמית, קרע וזרק, לזרוק איזה חצי? קהל: חשבתי זה היה [לא ברור]. DAVID מלאן: אני שומע שתי תשובות. קהל: שמאל. DAVID מלאן: מניח את הדעת, לזרוק משם נותר וחצי, כפי Lakisa אמר מוקדם יותר, שמאל חצי, אז אני סוג של רוצה פשוט ללכת עם-- אני הולך ימינה. או באופן שקול, ועשיתי קצת קצת בלגן של התחילה כאן, אני רוצה ביעילות עבור לשלב 2 שוב, שם פתוח middle-- או open-- כן, בואו נגיד, עמודים באמצע. וזה פותר את זה. זה כבר לא ספר. זה רק מחצית ספר, כך פתוחים עמודים באמצע. else-- היו כמעט שם. שלב 6, אחר אם הדף מגיע אחרי סמית, קרע וזרק, לזרוק חצי מייד, ולאחר מכן עבור לשלב 2. עוד ניטש, תרחיש רביעי אם אין לנו דפים עזבו לפנות. כדי שנוכל לנקות זה. ואנחנו צריכים לנקות זה. זהו קוד מאוד פסאודו קוד, אם אתה יהיה, תיאור ברמה מאוד גבוהה. אבל זה בדרך כלל לבטא את הרעיון. וגם, שוב, בתרחיש זה, אנו יש את הרעיון של מצב, סניף, מזלג בכביש, מה שהופך decision-- אם זה, ללכת בדרך זו, אחר אם, ללכת בדרך זו, אחר אם, ללכת ככה. וזה נפוץ מאוד טכניקת תכנות להחליט לאיזה כיוון ללכת, אם אפשר לומר כך. ויש לנו גם איזשהו של looping מבנה, שבו אנחנו עושים משהו שוב ושוב. עכשיו, מתברר, הרבה כמו בדוגמה זו, להיות סופר מדויק חשוב. אבל אנחנו גם לא ראינו משהו כי אנחנו כל הזמן קוראים הפשטה. מה זה אומר להרים ספר טלפונים? אנחנו פשוט סוג של לקיחת כמובן מאליו בחדר הזה יש כי שכמה משמעות סמנטית. כולנו פשוט סוג של יודע, הו, טוב, להרים את ספר הטלפונים. מה זה באמת אומר? ובכן, זה באמת אומר להאריך יד, רוכן, מושיט אצבעות, לצבוט הספר בין האצבעות, מזדקף, מושך ביד כלפיך. ויכולנו להיות באמת מקפיד על זה, באמת להיות סופר מדויק על מה שאני עושה. אבל את כל השלבים האלה ביחד הם מה זה אומר להרים ספר טלפונים. וכך קודם לכן, כאשר אמרתי, כל של שתי הצהרות הבאות הראשונות ניתן לחשוב עליו כעל להמשיך או פונקציה, באמת הוא מייצג את מה שאנחנו להמשיך לקרוא הפשטה. זה כמו גבוה ברמה המושגית תיאור של בעיה כי למעשה זה כרוך לא מעט צעדים. וכך זה גם הוא חוזר לנושא בתכנות, לפיה אני יכול לכתוב תוכנית תוך שימוש בתחביר כמו זה- pick_up_phone_book (). ואז מבחינה תחבירית, אני הולך לגנוב משהו מרוב שפות תכנות. עכשיו, בשלב 1 נראה אפילו יותר כמו פונקציה, כמתכנת הייתי קורא לזה. זה נראה כמו קוד שמישהו נתן שם כדי ולנוכח לי להשתמש somehow-- ב אחר מילים, מה השורה הדגשתי מייצג פונקציונלי שאולי אני אפילו לא יישמתי את עצמי. מישהו מבוגר יותר, חכם יותר כבר לי להבין איך אתה להביע את הרעיון להרים ספר טלפונים. וזה כמו חמשת השלבים אני פשוט קשקש, את החלק העליון של הראש שלי. אבל הוא או היא כבר מיושמת זו, נתנה צעדים אלה מספר שם, pick_up_phone_book. ואת בסוגריים הם בדיוק מה שרוב המתכנתים לעשות בסוף הצהרות כאלה. עכשיו אני יכול לעמוד על שלו או שלה כתפיים ולעולם שוב, לחשוב על מה זה אומר להרים ספר טלפונים. אני יכול רק לומר, להרים את ספר הטלפונים. וזה בדיוק מה כולנו בני האדם עשו כאן. כשהיינו כנראה 1 בן, בן 2 שנים, היה מישהו שילמד אותנו מה זה אמור להרים ספר טלפונים. ומאז, שמנו הפשטה משם מאלו מאוד מעניינים צעדים מכאניים. ואנחנו רק יש הבנה אינטואיטיבית מה זה אומר להרים ספר טלפון. ואתה יכול להסיק כעת כדי things-- מסובך יותר לבנות בניין. כאילו, כמה אנשים, כי בעצם יש משמעות. לקבלנים, אדריכלים, כי יש משמעות כלשהי. והם היו יודעים מה לעשות, אם אמרתי, ללכת לבנות בניין. אבל רובנו בחדר לא יכול להתמודד עם זה ברמה של הפשטה. אתה צריך לספר לנו כמו ללכת לקבל את האת וללכת לקבל הבטון ולרתק את חתיכות עץ יחד וכל דבר אחר הוא מעורב בבניית בניין. וזה כי יש לנו לא טרם מתוכן להבין מה זה אומר לבנות בניין. אין לנו הפשטה. אין לנו פונקציונלי. אז מה שתראה שפות תכנות, בכלל, במיוחד בשפות מודרניות יותר, כמו Java, PHP, Ruby, Python, הם הרבה יותר בוגרים מ בשפות מבוגרות, כמו C ו- C ++ ובכל זאת אחרים. וכך הם באים עם יותר פונקציונליות מובנה. קוד נוסף כבר נכתב על ידי אנשים בעבר כי עכשיו אנחנו יכולים להתקשר או לזמן או להשתמש, כמו אני רומז בבית עם זה הדגיש קו כאן. וכך למרות שאנחנו לא מדברים על שפות תכנות כשלעצמה, רק קוד פסאודו קוד, כל רעיונות עדיין ב שהדיון. ומתברר דיוק הוא סופר חשוב, לצד הפשטה. ובואו ננסה לתקשר כי כדלקמן. אני בטעות אולי קלקלה זאת על ידי מהבהבים שקופית על המסך בטרם עת. אבל הרשה לי לשאול מתנדב אמיץ, אם לא אכפת לך לבוא. אתה רוצה להיות מול מצלמה, אם אתה בסדר עם זה. האם מישהו היה רוצה לבוא ולתת הוראות לעמיתיך כאן? רק צריך לבוא לכאן לעמוד כאן ולומר כמה מילים. ויקטוריה מחייכת ביותר והימנעות עיני ביותר. האם תהיה מוכן לבוא למעלה? בסדר. ואם כולם אל המושבים שלך יכול להוציא פיסת נייר, אם אתה. נייר מצופה בסדר. בוא סביב בדרך זו. או חלק בעיתון אתה ניתנת אתמול, סתם דף ריק נייר, אם אתה יכול. ואם אין לך בכלל, רק לשאול השכן שלך אם אתה יכול. אז לעת עתה, עבור זו דוגמה, ויקטוריה הוא הולך לשחק את התפקיד של מתכנת, מהנדס, אשר צריך לתכנת את כולכם, כמו המחשבים, כדי לעשות משהו. ואנחנו נראים מה הנחות אתה מחליט לעשות. נצטרך לראות איך מדויק הוא בוחר להיות. ואם ההפגנה הזאת הולכת מבחינה פדגוגית היטב, הרבה טעויות ייעשה, כי אנחנו נשתמש כי כהזדמנות לדיון. אבל האתגר בשבילך צריך להיות להימנע מטעויות אלו, להיות מתכנת טוב. וכך האתגר שלפנינו, אם היית רוצה ללכת לכאן, הוא מול ויקטוריה על המסך כאן-- ובתקווה, אף אחד מכם זוכר את זה כשהייתי הוקרן על המסך. ואל תסתובב סביב בכלל, כי יש מסך אחר בחדר הזה כי אני יכול לכבות. אז לא להסתובב. מול ויקטוריה הדבר כי צעקה. והתפקיד שלה כרגע הוא לספר לך את כל על פיסת נייר שלך מה לצייר. ואנו רואים, מבוססים על הוראות מילוליות בלבד, קוד מחשב, אם תרצה, עד כמה מדויק את הציורים שלך שהן-- אינם מיושמים בצורה שלך. הגיוני? קהל: כן. DAVID מלאן: מניח את הדעת, לבצע. קהל: לצייר ריבוע. [צחוק] DAVID מלאן: ולא עשויות להישאל שאלות. רק יכול לעשות מה שאומרים לך. אה, ואם יש לך שקופיות של היום לפתוח כרטיסייה, לא מסתכל על הכרטיסייה שלך. בסדר? קהל: בסדר, לצייר עיגול. Slope-- אני יכול לומר מדרון? DAVID מלאן: תלוי בך. קהל: שיפוע. ומשולש. DAVID מלאן: בסדר. ולהישאר כאן רק לרגע. ואני הולך לבוא סביב בעוד רגע. ואין צורך לשים את שמותיכם על זה. תן לי לבוא מסביב לאסוף את הציורים שלך, אם לא אכפת לך לקרוע אותם. הנה מה שקיבלנו בחזרה. אני ולהקרין אותו על המסך. אני רואה ריבוע, עיגול, מדרון, משולש. אז זה היה תשובה אחת שם. ו let's-- אופס. תודה רבה לך. הנה עוד מבחר, ואחד מאחוריו. אז כולם נראים כדי ללכוד את רוחו. תודה רבה לך. יש עוד, והנה עוד אחד. פרשנות המדרון היא קצת שונה, קצת מפותל. והכי קרוב, אם בשל סגוליות נפלא עם שעבורם ביטלת תאר, או אולי אתה סוג של ראיתי את זה לפני, זה אכן מה ויקטוריה תארה למעשה. אבל עכשיו, לאלו מכם אשר לא את זה ממש נכון, בואו להציע כמה התנגדויות כאן. אז אמרה ויקטוריה הראשונה לצייר ריבוע. ועכשיו, ניתן להניח למען היום כי כולם יודעים איך לצייר ריבוע. אבל זה לא לגמרי ברור, נכון? אחרת איך אתה יכול להיות צייר ריבוע, או איפה עשוי להיות מעט מן העמימות כאן עבור המחשב? קהל: מיקום וגדל. DAVID מלאן: מיקום, נכון? כולכם היה נייר של צורה כלשהי, בדרך כלל מלבנים, אבל מעט בגדלים שונים. אבל אתה בהחלט יכול היה נמשך, אם אתה רוצה, ריבוע ענק, אולי ריבוע קטנטן. אולי, זה היה מסובב. אני לא חושב שראינו את זה. אבל זה היה יכול להיות יותר יהלומים כמו אבל עדיין, בכל זאת, מתמטי ריבוע. אז זה היה לטעון מעורפל. ואז היא אמרה, לצייר עיגול. כמה מכם באמת שלפו אותו ליד זה, וזה לא בלתי סביר, מכיוון שבני אדם נוטים לחשוב או לקרוא מימין לשמאל ברוב השפות, כך לא ניחוש רע. אבל זה מעגל יכול להיות כבר בתוך הריבוע, יכול להיות סביב הכיכר, יכול היה להיות במקום אחר על הסדין, כך ניתן לטעון מעורפל. סלופ שאולי היה ואולי לוקח את החירויות ביותר מילולי עם מה זה אומר. וכמה מכם לפרש זה כקו מפותל או בקו ישר או משהו דומה. ואז משולש, כמו כן, יכל כבר אוריינטציה בכל מספר דרכים. אז בקיצור, אפילו עם משהו תעיף ואת אומר לעצמך, וואו, כל כך יכול פשוט, ילד לצייר זה, גם לא באמת, אלא אם כן אתה סופר, סופר משכנע ולספר את המחשב בדיוק מה לעשות. אז אם היינו יכולים, אם אתה צריך עוד דף נייר, בואו לנסות את זה פעם נוספת. ואני הולך לתת ויקטוריה אחד דוגמא אחרת על המסך כאן. ושוב, לא להסתובב ואינו להסתכל שקופיות. ואני אתן לה רגע לחשוב על איך לתאר את זה. אל תתנו להם לראות את הפחד בעיניים שלך. [צחוק] ושוב, מינוף הפעם כמה מזנונים אלה ולנסות להשיג כמעט כולם לפחות את התשובה הנכונה. קהל: בסדר, לקחת פיסת נייר, להסתכל באמצע אותה פיסת נייר. באמצע החתיכה נייר, לצייר קוביה. [צחוק] DAVID מלאן: מה למדנו? היינו כל כך קרובים. אישור, לחזור אם אתה יכול, לכולם. קהל: באמצע של פיסת נייר, לצייר אובייקט, שנראה כמו קוביה. DAVID מלאן: מניח את הדעת, זה כל מה שאתה מקבל עם מה לעבוד. הרשו לי להיות אנליטיים ולא כל כך הרבה קריטי, אבל כדי להפוך את הטענה כי ויקטוריה בהחלט נראה חשיבה מאוד פשטות ברמה גבוהה, אשר אינו בלתי סביר. כי אחרת, כולנו היינו להיות די מתפקד, אם היינו צריכים להיות אי פעם כל כך מדויק בכל דבר שאנו עושים בעולם. אבל אומר ללכת ואני middle-- חשבנו שאנחנו על מסלול כל כך טוב שם, כמו ללכת באמצע מאוד של הדף, ולאחר מכן לצייר קוביה. אז היא חושבת פשטות, כי היא עדיין צופה מה על המסך כפי שאכן קובייה. אבל יש כל כך הרבה הזדמנויות לפרשנות שם. ואכן, יש כל כך הרבה דרכים אחרות אתה יכול להביע כך, ובזאת אני אציע בעוד רגע. אז הנה יש לנו בגלגול אחד של אחד picture-- whoops-- בגלגול של התמונה, כך שלושה מעט ממדי אליו, וזה נחמד. הנה עוד אחד, שבו יש לך את אותו דבר, למרות שזה סוג של קובייה פתוחה. חלק מהאנשים לקחו את זה קצת יותר שטוח, דו-ממדי. וזה בסדר. אז הנה, אכן ב במרכז הנייר. אחד זה אני חושב יהיה לך כמו, כי אם אנחנו הולכים כאן, זה מה שהיא תיארה. אז עכשיו, הרשו לי להעלות כמה אחר נוכל לתאר את המצב הזה. חזרה היום, אחד מהנושאים היותר דרכים נפוצות יותר ללמוד תכנות היה לכתוב קוד, כותב שורות של הוראות, ששלט קצת צב על המסך. לוגו גרסאות אחרות של זה היה השם של השפה. ואת הצב חי בעולם. אז נניח מלבני זה החלל הוא עולמו. ואתה תתחיל ידי assuming-- לי לא ממש יודעים איך לצייר צב, אז בואו נעשה את זה ככה. ואז יש לו קליפה ואז אולי כמה מטרים. אז ייתכן שיהיה זה קצת דמות על המסך. ומושא זה שפת תכנות היה להשכיח הצב ללכת למעלה, למטה, שמאלה, ימינה וכדי הניח מידו את העט או להרים את העט שלו, אז הוא באמת יכול לצייר על המסך בעולם מלבני שטוח מאוד זה. אז איפה חשבתי שאולי ישתתפו, ואיפה כדאי לשקול צלילה עד נפש כאשר תיאר הוראות באופן כללי יותר, אני טוען, מוכנס שלך העט של middle-- ואנו להיפטר צב, כי אני לא באמת יכול לשמור על ציור אותו היטב. ועכשיו, איך יכולת אחרת אני אומר לצייר קוביה? ובכן, אנחנו יכולים לומר משהו כמו תיקו צפונית קו אלכסוני, למשל, או בזווית של 45 מעלות כלפי מעלה. וזה אולי מצליח לי כאן. ואני די רחוק קובייה. אבל עכשיו, אני יכול להגיד משהו כמו להסתובב 90 מעלות שמאלה למתוח קו של מערב שווה באורכם. ואני יכול להמשיך עם בכיוונים דומים. וזה לא הולך להיות קל. ולמען האמת, היינו כנראה כאן כבר חמש דקות. אבל אולי היינו לפשוט משהו, בסוף היום, בסופו להיות קובייה, אבל אנחנו צלל בתוך שההפשטה כדי לעשות את זה בשעה כזאת נמוכה רמה שאתה לא יכול באמת לראות את מה שאתה עושה עד שלם העניין הוא בעצם שם על הדף. וכך זה עיקרון כללי, שוב, הרעיון programming-- זה הפשטה. זה כל כך נפלא עצמה, כי שוב, היא רק אמרה, לצייר קוביה, אשר כל לנו פחות או יותר היה תגרוק מהר מאוד. היינו רק להבין, בסדר, לצייר קוביה. אנחנו אולי לא יודעים את הכיוון, כדי שנוכל להיות קצת יותר מדויק, אבל אנחנו יכולים בדרך כלל לדמיין או יודע מה היא קובייה. וזה שימושי, כי אם בכל פעם שאתה התיישב כמתכנת ב במקלדת כדי לכתוב קוד, אם אתה צריך לחשוב על כזה רמה נמוכה, אף אחד מאיתנו לעולם לא לעשות כלום. ובוודאי, אף אחד מאיתנו לא היה ליהנות התהליך של כתיבת קוד. זה יהיה כמו כתיבת 0 ו -1, אשר בכנות לא היה כל כך מזמן בני האדם היו כתיבת קוד ב 0 ו -1. ואנחנו מהר מאוד ניגשנו עם אלה languages-- רמה גבוהה יותר C ++ ו- Java ועוד. אז בואו ננסה את זה שוב רק כדי להעיף את השולחנות, כך שכל אחד מאיתנו יש הזדמנות לחשוב פחות או יותר באותו אופן. האם נוכל לקבל מתנדב אחד יותר זה זמן לבוא ללוח ולצייר, לא לדקלם? כן, בסדר. הבן, יעלה לכאן. וגם, בן, במקרה זה, ברגע שאתה להתמודד עם הלוח, לא מביט שמאלה, לא נראה טוב. רק לעשות מה שלך עמיתים כאן לספר לכם. ובשביל כל אחד אחר בחדר, אתה עכשיו הם מתכנת. הוא המחשב. והתמונה בחרתי כאן מראש הוא זה אחד כאן. הם פשוט- שהם חושבים של בדיחה מצחיקה זה הכל. אז האם אין מישהו רוצה לנדב את ההוראה הראשונה או בהצהרה שמן הראוי עט של פקודה בן? ואנחנו נעשה את זה ביחד, אולי הוראה אחת מכל אדם. אני מצטער? קהל: צייר עיגול. DAVID מלאן: צייר עיגול הוא הדבר הראשון ששמעתי. קהל: Top Up. DAVID מלאן: Top Up. או.קיי, אפשר שתוכל למחוק, לבטל. ועכשיו, מישהו אחר. דן, האם אתה יכול להיות נוח להציע את ההוראה הבאה? קהל: בטח, לצייר במרכז של החלק התחתון של המעגל, עם small-- קצת בחלל קטן מזה, לצייר קו ישר למטה עד שלוש רבעי הדרך למטה הלוח בזווית קלה שמאלה. DAVID מלאן: טוב. קהל: זווית קלה. DAVID מלאן: בטל, הבקרה-Z. בסדר. אנדרו, אתה רוצה להציע את ההוראה הבאה? קהל: בטח. מעומק הקו, angle-- קלה נוספת whoops-- אולי כשליש של אורך [לא ברור], בזווית קלה כלפי מטה כמו שלישי של האורך של [לא ברור]. אז כן, מנקודה זו, למתוח קו שליש של האורך הקודם קו עוד יותר שמאלה. DAVID מלאן: זה בסדר? קו ישר, זה בסדר? אישור, אוליבייה, אתה רוצה להציע את הבא? קהל: [לא ברור] מן התחתון של העיגול, [לא ברור]. צייר בצד הימני של [לא ברור] סנטימטרים. [צחוק] DAVID מלאן: אני חושב שאתה הולך צריך להמיר זה אינץ 'כאן. קהל: עצור. [צחוק] DAVID מלאן: אישור. [? ערה,?] אתה רוצה להציע את הבא? קהל: צייר [לא ברור] את [לא ברור] העליון זהה. [לא ברור] מעגל, לצייר אל [לא ברור] ולהסיק [לא ברור]. DAVID מלאן: בסדר, אין יותר לבטל. בואו לעשות אחד או שתיים הוראות נוספות. כריס, אתה רוצה להציע אחד? קהל: בתחתית המעגל, [לא ברור] לצייר טפטוף קו שווה מטה שמאלה [לא ברור]. DAVID מלאן: אישור. אנדרו? אנחנו did-- כרים? קהל: החל מ בקו הימין, סוף קו השמאל, בתחתית, אתה הולך ללכת ימינה על אורך זהה לזה קו אתה על, ציור הזכות [לא ברור]. [לא ברור] מעלות, כך [לא ברור] מעלות בצד ימין. DAVID מלאן: בסדר. בואו נעצור. אין להסתובב עדיין. בואו נעצור, ובואו לנסות ניסיון אחד אחר לפני שאנחנו חושפים לבן מה הוא היה ציור. אתה יכול לטרוף את בן כן-- או בעצם, לא, בואו פשוט לתת לך עוד לוח, אפילו טוב יותר. אז האם מישהו עכשיו רוצה לקחת יותר של הגישה שויקטוריה לקחה קודם לכן, שבו אנחנו מדברים הפשטה ברמה גבוהה יותר וב רק משפט או שתיים לתאר בן מה לצייר בלי נכנס העשבים, כביכול, בשעה זו ברמה נמוכה יותר? ויקטוריה. [צחוק] קהל: צייר דמות של האיש המהלך. והרגליים וזרועותיו צריך להיות בצד ימין. DAVID מלאן: אישור, זה כל מה שאתה מקבל. בסדר. למה אנחנו לא לגלות בן מה שהוא עשה. אז במחיאות כפיים. זה היה אולי הקשה ביותר. אז למרות שאנחנו מדברים במונחים מטופשים למדי על רק ציור תמונות, אני מקווה שאתה יכול באמת להעריך את מידת אקספרסיביות שעשויים להיות דרושים כדי לספר מחשב מה לעשות. ואכן, העובדה שבן הצליח למשוך כל כך מהר מעין צוואה היא באמצעות שפה, אולי ברמה גבוהה יותר גרסה אנגלית, המאפשרת לו רק להשתמש במילים, או לשמוע את המילים מן ויקטוריה, המאפשרים לו אלה abstractions-- פשוט לצייר דמות הליכה אל יש כן-- דברים מהסוג כמה משמעות סמנטית אליו כי הוא לא כמעט כמובן מאליו, כשבקושי הספקת אומר, לשים את העט שלך למטה, לצייר בצד ימין, לצייר שמאלה. וכך זה גם מאוד נפוץ בתכנות. זה יהיה אמר להיות כמו שפה ברמה נמוכה מאוד, תכנות ב 0 ו -1 אם תרצה. וזה יהיה ברמה גבוהה יותר שפת תכנות ב- Java, או משהו כזה. קצת של פשטנות, אבל זה סוג של כמו רגשי מרגיש שאתה מרגיש כאשר באמצעות סוג של דבר זה או אחר. קצת תסכול כאן על ידי הצורך עבור דיוק כזה, אך ההזדמנות להיות רופף יותר עם הפרשנות כאן. אבל כמובן, באגים יכול להתעורר כתוצאה מכך. אם תרצה ב home-- אנחנו לא תעשה את זה ב class-- אבל אם אתה רוצה להביא הביתה אחד זה, חשבתי היינו לצלול לתוך זה. אז אם אתה רוצה לשחק זה משחק עם אחרים משמעותיים שלך או ילדים או משהו דומה, אתה עשוי ליהנות גם לזה. אז בואו נלך ותביט אחרון דבר כאן חשיבה חישובית. וזה מביא אותנו אל ג'ון אוליבר, לא עבור קליפ שאולי ראית אמש, אלא סוגיה מסוימת אחרונה. כמה חודשים אחורה, פולקסווגן די לקח קצת נ"מ מה הסיבה, אם אתה יודע? מה הם עשו להסתבך עבור? כן, אז emissions-- הוא ניסו להכות את פליטת בדיקות על ידי כך שהוא נתקל שלהם מכוניות מזהמות את הסביבה פחות כאשר מכוניותיהם הנבדקת ולזהם את הסביבה יותר אם המכוניות הן לא נבדקו. ומה יותר ויותר מעניין בעולם, כפי שאתה יכול להיות מוסק מדיונים על כמו-- מה הוא it-- CarPlay, התוכנה של אפל עבור מכוניות ואת העובדה שרבים מאיתנו יותר ויותר יש מסכי מגע במכוניות שלנו, יש כמות מפחידה תוכנה בחיי אנשים מכוניות היום, אשר בכנות פותחת פחית שלמה של תולעים כאשר מדובר אבטחה וסיכונים פיזיים. אבל היום, בואו להתמקד רק מה מעורב כתיבת תוכנה שאולי שחק המערכת. עבור ההגדרה של הבעיה, עבור מי שאינו מכיר, בואו נסתכל ג'ון אוליבר. ובשביל מי שמכיר הבעיה, בואו נסתכל על זה בתוך עדשת כיף באמצעות ג'ון אוליבר גם כן. אז תן לי פגעתי לשחק על זה, אני חושב, הקדמה של שלוש דקות. לעזאזל. [הפעלת סרטון] -Cars-- DAVID מלאן: ברור, ב- YouTube, זה-- - --המשך תווים החכמים ביותר הסרטים מהיר ועצבני. השבוע, יצרנית גרמנית פולקסווגן מצאה את עצמה באמצע שערורייה של פרופורציות פליליות פוטנציאלי. -Volkswagen הוא מרענן מיליארדים בקנסות, תביעה פלילית למנהלים שלה, כמו החברה מתנצלת חבלול 11 מיליון מכוניות לסייע לה לנצח בדיקות פליטה. מודלי דיזל -Certain תוכננו עם תוכנה מתוחכמת השתמש במידע, כולל העמדה של ההגה ברכב ההיגוי מהירות, כדי לקבוע את המכונית הייתה עובר בדיקות פליטה. תחת כי נסיבות, המנוע יפחית את פליטות רעילות. אבל המכונית הייתה מבוימת כדי לעקוף שכאשר היה מונע את זה. פליטות עלו 10 עד 40 פעמים מעל רמות EPA מקובלות. -Wow, 10 עד 40 פעמים יותר מאשר EPA מאפשר. זה הדבר הגרוע ביותר פולקסווגן לא עשה, משהו שאתה יכול להגיד אם אתה מעולם לא שמעת על מלחמת העולם השנייה. אבל אולי הסימן המובהק ביותר של איך הרבה צרות פולקסווגן נמצא, הוא שאנשים שעומדים מאוד העליון הגביר למטה. המנכ"ל התפטר ביום רביעי לאחר ערבול לעשות בקרת נזקים, ואמר שהוא מצטער אינסופי, יכולת נשמע נהדר עד שהתברר הוא היה רק ​​10% מצטער אבל אלתר פיו באופן מלאכותי לנפח sorriness שלו. ובינתיים, בארה"ב של פולקסווגן הראשי הייתה התנצלות משלו. תנים נבהיר זה, החברה שלנו הייתה לא הגונה. ובמילים הגרמנית שלי, אנחנו פישלו לגמרי. 'כן, אבל דפוק לגמרי עד לא יצירות גרמניות. ואת השפה הגרמנית יש הרבה ביטויים יפים לתאר מצבים בדיוק כמו זה, ככזה [גרמנית], שפירושו בקירוב, העצב שמגיע מן השקרים שקשורים לעסק או [גרמנית], המתרגמת כמו מבייש אבא אלה הקשורות ענני בנזין. זו שפה יפה. זה פשוט מפרש את הלשון. ודרך אגב, בעוד האיש הזה התנצלות אולי נשמעת כנה, ראוי לציין שהוא היה נואם בעל השקה רשמי של 2016 פולקסווגן פאסאט, כלומר זמן קצר לאחר אומר מצטער, הוא אמר את זה. , תודה רבה לך שבאת. תהנה בערב. עד הבא הוא לני קרביץ. [מוסיקה מתנגנת] "או-קיי, בסדר, שהסתיים שלך התנצלות עם עד הבא לני קרביץ לא לצרוח חרטה מפוכחת. הוא צורח, שאלנו בון ג'ובי, והוא אמר שלא. יש המותג של פולקסווגן ניזוקו קשות. ולמען האמת, מודעות חדשות שלהם הקמפיין לא עוזר בדיוק. - [גרמנית], אנחנו ב פולקסווגן רוצים להתנצל על מרמה אותך עם כלי הרכב שלנו. [סוף PLAYBACK] DAVID מלאן: אז זה היה בדרך עקיפה זה-- sorry-- זה היה דרך עקיפה מציג בעיה בסיסית בתוכנה, אשר היא שאתה צריך לזהות תנאים מסוימים. וכך השאלה שעל הפרק כאן הוא, איך מכונית פוטנציאלית, כפי שהיא מתבצעת תוכנה על ידי מתכנתים אלה, לזהות שזה שנבדק בעצם? אז להיות סופר ברור, מה הם עושים היה, בסביבות שבהן המתכנתים הבינו הרכב היה להיות נבדקו, הם איכשהו עשו המכונית פולטת פליטות פחות, פחות פליטות, כך פחות אדים רעילים וכאלה. אבל כאשר זה בדרך כלל נהיגה על הכביש, זה היה פשוט פולט כמו הרבה זיהום כפי שהוא רצה. אז איך אפשר לכתוב את פסאודו קוד עבור אלגוריתם זה? איך נוכל לכתוב את פסאודו קוד עבור התוכנה פועלת במכונית? אני מתכוון, על קצה המזלג, זה שחין עד משהו כזה. אם נבדק, פולט פחות. אחר פולט יותר. אבל זה קצת מדי ברמה גבוהה, נכון? בואו ננסה לצלול על מה זה הפשטה של ​​להיות אמצעי נבדק. במילים אחרות, גם אם אתה לא יודע כלום על מכוניות, איזה סוג של שאלות אולי אתה שואל על מנת לקבוע אם אתה נבדק, אם אתה במכונית? אילו מאפיינים עלול להיות להציג אם מכונית נבדקת? ציוד בדיקה: קהל. DAVID מלאן: ציוד בדיקה. אז אם ציוד בדיקה סמוך, ולאחר מכן פולט פחות. אז יכולתי לדמיין ביישום כי עם איזה מצלמות או לגילוי מה שמסביבך. ותנו לי להציע, כי פשוט מרגיש מסובך מדי למעשה יש נוסף חומרה בדיוק למטרה זו. קהל: אם אתה הפרק, אם מכסה המנוע שלך פתוח. DAVID מלאן: בפארק או מכסה מנוע פתוח, אז זה טוב. קהל: והפעלת מכונית. DAVID מלאן: אז זה קצת concrete-- ומכונית ריצה יותר. אז זה יהיה בשילוב של תנאים שונים מעט, אם תרצה. אז אם המכונית בפארק, ואפילו אם כי זה דבר מאוד מכני בדרך כלל, יכולתי לדמיין כתיבת תוכנה, במיוחד כי יש לעתים קרובות שם אור בימים אלה, יכולתי לדמיין שיש להיות תוכנה שיכול שאילתא המחלף או מה לא, אתה בפארק, הם לך כונן, אתה בכיוון ההפוך. ואני יכול לחזור לענות זה גם כן אם בכלל מיני שאלות אלה. וכך אני גם יכול כנראה לענות שאלה כמו, הוא מכסה המנוע הפתוח. אולי, יש איזשהו חיישן או זה מחזיר לי 1 או 0, אמת או שקר, מכסה המנוע פתוח. ואז המכונית פועל, יכולתי לזהות שאיכשהו באמצעות מה המנגנון? כמו, המכונית פועלת, אני יכולתי לזהות שזה על, יכולתי לזהות איכשהו כי המכונית נעה? קהל: RPMs. DAVID מלאן: כן, אז יש תמיד כי מחט כי אומר לך כמה סיבובים לדקה הגלגלים דקים חווים. וכך יכולתי להסתכל על זה. ואם זה לא 0, כי כנראה פירושו הרכב נע. אבל אנחנו צריכים להיות קצת זהיר שם, משום-- בואו נפשט את זה- אם אמרנו, אם המכונית פועל, אנחנו לא רוצים רק פולטים פחות, אנחנו רוצים אם המכונית פועלת וזה נבדק. אז יש כמה אחרים מרכיב אנשים העלו את ההשערה שהתוכנה עושה, כי נעדר את קוד המקור בפועל, אתה יכול להסיק מעין רק מן השפעות פיזיות של המכונית על מה אולי מתרחש מתחת למכסה המנוע בתוכנה. אז אם מכונית פועלת ואולי, תניח, גלגלים אחוריים לא זזו, אולי זה מעיד של מבחן כלשהו? מה אני רומז כאן? כן, אולי, זה על אחד דברי רולר אלה, שם כמו הגלגלים פונים בחלק הקדמי או האחורי, תלוי אם הגלגל הקדמי זה או כונן גלגל אחורי, כך שחצי הגלגלים הם נעים, אבל השניים האחרים הם לא, אשר מצב מוזר הוא בעולם האמיתי. אם אתה נוהג על כביש, כי לא צריך לקרות. אבל אם אתה בתוך מחסן על איזה מערכת רולר, שעלול לקרות אכן. אני חושב שאנשים כמו כן הציעו שאולי, אם המכונית פועלת והיגוי גלגל לא זז, כי מדי עלול להיות אות, כי זה סביר כמו ישר בכביש. אבל גם אז, האדם הוא כנראה הזזתו קצת או ספק במשך כמה שניות. או הקורס של דקות, הסיכויים הם שזה לא הולך להיות מקובע ב בדיוק באותה תנוחה. אז במילים אחרות, אנחנו יכול לקחת חיסור, אתה נבדק, ו לשבור את הפונקציונליות לתוך החומרים המרכיבים הללו. וזה באמת מה פולקסווגן מהנדסים איכשהו עשו. הם כתבו תוכנה במודעת לזהות אם המכונית נבדקת, ולכן פולט פחות, אחר פולטים בדרך הרגילה. והבעיה גם כאן, היא שתוכנות לא משהו שאתה באמת יכול לראות אלא אם כן יש לך את קוד המקור מה שנקרא. אז יש שני סוגים שונים של code-- לפחות שני סוגים שונים קוד בעולם. יש משהו שנקרא מקור קוד, וזה לא שונה בהרבה ממה אנחנו כבר כותבים, קוד מקור. זה קוד פתוח שנכתב ב- שפה נקראת פסאודו קוד, וזה רק משהו באנגלית דמוי. אין הגדרה פורמלית של זה. אבל C, ו- Java, C ++, אלה הם בכל השפות רשמית כי, כאשר אתה כותב אותם, מה אתה צריך הוא קוד מקור קובץ טקסט המכיל. אבל יש גם משהו העולם בשם קוד מכונה. וקוד מכונה, למרבה הצער, הוא רק 0 ו -1. אז קוד המכונה הוא מה מכונה להבין, כמובן. קוד המקור הוא מה שבני האדם מבינים. ובאופן כללי, אבל לא תמיד, יש תוכנית כי מתכנת משתמש שלוקח מקור קוד והופך אותו קוד מכונה. ותוכנית הוא בדרך כלל נקרא מהדר. אז הקלט שלך הוא קוד המקור, הפלט הוא קוד מכונה, ואת המהדר הוא חתיכה תוכנה שעושה את התהליך הזה. אז זה בעצם ממפה יפה התשומות, האלגוריתמים, הפלטים שלנו. אבל זה בגלגול מאוד ספציפי כך, כלומר כי, גם אם אתה הבעלים של אחד פולקסווגן מכוניות כי הוא אשם זה, זה לא כאילו אתה יכול פשוט לפתוח את מכסה המנוע או לפתוח את המדריך למשתמש או להסתכל את קוד המקור, מפני שבאותו הזמן הוא מגיע במכונית שלך בחנייה שלכם, זה כבר היה מומר 0 ו -1. וזה מאוד קשה, לא בלתי אפשרי, אבל מאוד קשה ללקט כמעט כלום מ רק מסתכל היסוד של ספרות 0 ו -1. אז אתה יכול להבין את זה, בסופו של דבר, אם אתה מבין כיצד מכונה operates-- אינטל inside-- אם אתה מבין ארכיטקטורת אינטל, אבל זה מאוד זמן רב. וגם שם, אתה עלול לא להיות מסוגל לראות הכל שהקוד יכול לעשות בפועל. שאלות בנושא זה או זה סוג של תהליך כללי יותר? ולמעשה, אנחנו יכולים לקשור את הדיון הזה לדיון של אתמול של אפל. זה גם הסיבה מדוע ה- FBI לא יכול סתם ללכת ולחפש את הטלפון החשוד ולמצוא את שורות קוד, עבור למשל, המאפשר את הסיסמה או לאפשר בסופו של דבר עיכוב 80 מילי-שניות. "כי עד שזה ב- iPhone של הבחור, זה כבר היה המרה ל 0 ו -1. ובכן, בואו נעצור פה כדי שלנו להסתכל חשיבה חישובית. למה שלא ניקח הפסקה של 15 דקות. וכאשר אנו חוזרים, אנחנו נעלה תסתכל על תכנות עצמו ולהתחיל למפות כמה מושגים אלה ברמה גבוהה אל בפועל, אם שובבה, שפת תכנות.