[השמעת מוסיקה] SPEAKER 1: זה CS50 ו זה הסוף של שבוע שבע. היום הוא אולי שבו אנחנו באמת מלמד אותך שפות. אנחנו הצגנו בכמה מהעבר השבועות HTML ו- CSS, אף אחת מהן הם שפות תכנות. ואכן, למרות שאנחנו לא מסתכל על כמעט כל התגים HTML שמגיע עם וכמעט כל של הנכסים שמגיע עם CSS, זה סוג שלו ל- HTML ו- CSS. אנחנו פשוט כלל תתחיל בהנחה שאתה להבין את הרעיונות הכלליים תגים, ותכונות, ונשלחו דפים מהלקוח לשרת. כי היום אנחנו מתחילים להסתכל על שפת תכנות אחרת, PHP. אנחנו הולכים לעשות את זה סופר מהיר. אנחנו לא הולכים ללמד אותך PHP כשלעצמה, הרבה כמו שאנחנו לא שואפים ללמד אותך C, תכנות כשלעצמה, אלא. ואכן, אחד מ מטרות קורס זה לא ללמד אותך C, או HTML, CSS או, או PHP, או כל מספר אחר מילים באז או ראשי תיבות, אלא מדעי המחשב ואיך לתכנת במהותו. ואכן, היום אנחנו מתחילים לקחת גלגלי עזר אלה את כל נוסף על ידי לטוס דרך ב שפה נקראת PHP, כדלקמן. הנה מה שפה זה נראית כמו. מתברר שאין צורך ב פונקציה העיקרית בתכנית נכתבה בשפה הנקראת PHP. כך שכבר נשמע קצת יותר פשוט מ C, שבה אנו מכירים. מסתבר שאם אתה רוצה להצהיר על משתנה, אתה עושה את זה כמעט זהה לג אבל יש הבדל אחד ברור כאן כאשר אני מצהיר מחרוזת, או אולי שני הבדלים. מה נראה שונה? קהל: סימן הדולר. SPEAKER 1: כן, יש דולר חתימה, שמעולם לא ראו קודם. ומה חסר? כן? קהל: [לא ברור] 1 SPEAKER: כן, אין סוג נתונים. אז מתברר שזה מה שאנחנו PHP קורא שפת הקלדה באופן רופף, שבו C הוא מסוג חזק. באופן רופף הקליד רק אומר ש ישנם סוגים שונים נתונים, יש מחרוזות, וints, וצוף. אבל נתוני המחשב שיצא. אתה מתכנת האנושי לא צריך להבין את זה. אז כל מה שאתה צריך לעשות להכריז משתנה הוא סימן דולר, על שם משתנה, ולאחר מכן, למשל, ציטוט סוף ציטוט, שלום עולם. ובכן זה מה ש מצב נראה כמו ב- PHP. כל הבדלים? מס ' אז מתברר אלה הם זהים. וייתכן שיש להם פחות סניפי סניפים או יותר, אבל תור התחביר בדיוק אותו הדבר. ביטויי בוליאני יכול להיות הורה יחד. ביטויים בוליאנית ניתן anded יחד. עדיין יש לך מתגים. גם אם אתה לא השתמשת אלה, אלה קיימים בC והם פונקציונלי שווה ערך ב- PHP. ואכן, ב- PHP הם קצת יותר חזק. ב- C, אתה יכול רק להשוות מסוים סוגים כמו ints ותווי נתונים, ואילו בPHP אתה באמת יכול להשוות מחרוזות להצמיח נוצות מלאה מבלי לדאוג מצביעים וכדומה. אז הנה ללולאה. זוהי רק פסאודו קוד קוד, אם תרצה. אבל מבחינה מבנית זה זהה לג הנה תוך לולאה, פסאודו קוד therefore-- זהה לג הנה לעשות בזמן loop-- זהה. וכך יש סוג של כאן דפוס שבו זה יש כמה תחבירי אחרות תכונות שאנחנו אכן הולכים לראות. למעשה, כאן הוא נחמד דרך ב- PHP לפי, אם אתה רוצה לחזר על מערך, ואתה לא רוצה לקפוץ דרך חישוקים נפשיים ותחביריים של בעל int i שווה 0, אני פחות מ n, i בתוספת plus-- ש רק הרבה תחביר מעצבן. אתה יכול לומר קצת יותר יפה ורהוט היום לכל מספרים כמספר, שבו במקרה זה מספרי סימן דולר, אני מניח, זה כמו מספרי מערך נקרא. ואז אני מניח שמספר, יחיד, הולך להיות משתנה. ומה יהיה PHP לעשות בשבילי כמו שאני לחזר על לולאה זו היא, בכל איטרציה, זה הולך לעדכן את המספר משתנה ל להיות אלמנט ה- i במספרים, בלשון רבים. אז זה רק מטפל בכל זה בשבילי. אין סוגריים מרובעים, לא סימן דולר, לא חצי -נקודתיים. זה רק קצת יותר פשוט. ובכן, אם אתה רוצה מערך, מתברר לך יכול לעשות משהו די דומה ל ג התחביר הוא קצת שונה. אבל הנה מערך נקרא דולר חתם מספרים. ואני משתמש, ב- PHP, כיכר סוגריים, מתברר. ואנחנו הולכים לראות אותם שוב בJavaScript-- עדיין שפה אחרת. רק אני משתמש בסימון הסוגר מרובע יש רשימה מופרדת בפסיקים של מספרים שלמים, במקרה זה. אבל זה נותן לי מערך. אבל אפילו יותר חזק ב- PHP, יש לנו גם מה הם בדרך כלל נקרא מערכים אסוציאטיביים. והרבה שפות יש לי אלה, כמו גם. הדבר על מערכי C הוא שהמדדים למערך, הדבר ש להשתמש בסוגריים מרובעים שדרכו אתה ניגש לאלמנטים, חייב להיות מה? קהל: [לא ברור] 1 מרצה: הם צריכים להיות מספרים או מספרים שלמים, במיוחד מנקודת האפס בעד. ובכן, ב- PHP, ו, מתברר את, בשפות אחרות, אתה יכול להתחיל ליש לי מדדים שאינם מספריים. אבל הם בעצם מילות או ביטויים, כך שבמקום מנסה להיזכר בו משהו הוא, או מאוחסן בי משתנה, למעשה אתה יכול להשתמש במילה ואומר לראות-- אתה יכול להגיד מילה כמו זה. אז ציטוט סימן דולר הוא שמו של משתנה כאן. זהו תחביר פאנקי קצת זה שיוך שני ערך מפתח זוגות למשתנה זה. באופן ספציפי, זה נותן לי מערך שהוא באורך 2. אבל האינדקסים אינם 0 ו -1. המדדים הם ציטוט סוף ציטוט סמל ומחיר סוף ציטוט ציטוט. ואת הערכים של מדדים אלה, בהתאמה, הוא FB לפייסבוק ו$ 79.53, כאשר אני תימשך בדק מחיר לכך. מה הכוונה? ובכן, זה אומר ש במקום כתיבת קוד כמו זה, שבו נהג לעשות משהו כמו דולר sign-- או לייתר דיוק, בC אני אפילו לא היה סימן דולר. אני הייתי עושה משהו כמו ציטוטים ולאחר מכן אני הייתי עושה את הסוגר אני לקבל בכמה באופן שרירותי מבחינה מספרית צמוד ערך. החל מהיום ב- PHP, אם אתה רוצה לקבל בכמה ערך, אנחנו סוג של יש יותר הבעה סמנטית. רק דרך מפוארת של אומר שאנחנו יכולים רק לקרוא לדברים מה שהם. ואם אתה רוצה לקבל בסמל משהו, עכשיו אתה ממש לעשות לצטט סמל סוף ציטוט בסוגריים מרובעים במקום מספר בלבד. אז זה נחמד נוחות. וזה סוג שלו לעת עתה. יש צרורות תכונות אחרות ב- PHP. ואכן, PHP מגיע עם כיור מטבח פתגמי. עשרות, מאות פונקציות מגיעים עם PHP-- כל כך הרבה יותר מאשר הגיע עם ג וזה לא נועד ל להציף אלא לעזור אתה מבין שאנחנו לא כבר לא צריך לכתוב קוד זה סוג של כאן למטה מושגית. עכשיו אנחנו יכולים פשוט להתחיל מנצלים הרבה יותר תכונות מתקדמות שיש לי שפות כמו PHP. אז אנחנו לא צריכים לדאוג הזיז דברים בזיכרון. אנחנו לא צריכים לדאוג malloc וכל אלה ברמה נמוכה יותר, פרטים רבי עוצמה שתוכל להתמודד עם, אם לא במאבק עם, pset5, אבל אתה יכול להתחיל בקרוב לקחת כמובן מאליו. למעשה, בואו לכתוב סופר תכנית פשוטה ב- PHP, כדלקמן. אני הולך ללכת ראש בCS50 IDE כאן, ומה שאני הולך לעשות הוא ליצור קובץ חדש, שמאוד פשוט הוא הולך להיקרא שלום PHP נקודה. אז במקום נקודת ג, זה הולך להיות נקרא הנקודה PHP. ולאחר מכן בקובץ זה, אני יכול להתחיל להקליד. אבל מתברר ש דבר אחד אני צריך לדעת הוא שכל קובץ PHP באופן כללי, צריך להתחיל עם כמה תחביר מיוחד. דומה ברוחו ל- HTML, אבל שוב, PHP היא שפת תכנות, לא שפת סימון. אז כל קובץ, וזה סוג של טיפשים מחפש אני מודה. הסוגר פתוח, סימן שאלה, PHP. וזה רק הדרך של השפה אומר, היי, מחשב כאן מגיע חלק קוד כתוב בשפה PHP בשם. ואז ממש בסוף של הקובץ שלך, אתה עושה סוג של סוג של ההפך. אתה לא כותב PHP שוב, אתה רק לעשות סימן שאלה, תושבת זווית. ואז כל דבר שאתה מכניס שני התגים הללו, כביכול, יהיה, או צריך להיות, קוד PHP. אז בואו נעשה משהו סופר פשוט. אני הולך קדימה ולעשות הדפסה def, שלום העולם, n הלוכסן, לחסוך. ועכשיו בהפקודה, אני הולך לעשות, לעשות hello-- לא, אני הולך לעשות, נקודה לקצץ שלום. לא, קו נטוי נקודה, HM. אז משהו שונה. ואכן, זה הבדל עיקרי בין PHP ושפות כמו C ג הייתה מה שנקרא בשפת הידור. מה זה אומר עבור C להידור? מה הייתה המשמעות? כן. קהל: נכתב אותו לקוד מכונה כך שזה יכול להיות מנוהל על ידי המחשב. 1 SPEAKER: בדיוק. אנחנו צריכים קודם להמיר אותו ל מה שנקרא קוד מכונה, אפסים ואחדים, לפני שזה באמת יהיה הפעלה והבין על ידי המחשב. על ידי אינטל בפנים. על ידי המעבד הפנימי של המחשב. PHP, לעומת זאת, הוא מה שנקרא שפה פירשה, ש אומר שאתה לא לקמפל את זה לאפסים ואחדים, קוד מחשב, אתה במקום להשאיר אותו כקוד מקור. ואתה במקום להעביר אותו כקלט לתכנית, מתורגמן שמישהו כתב אחר לפני שנים שמבין את זה שורה אחרת שורה, דמות לאופי. אז במילים אחרות, בני אדם בחוץ כתבו תכנית שתיראה בשורת הקוד שלך על ידי קו, ולהבין מה המחשב צריך לעשות, בלי להמיר אותו ישירות לאפסים ואחדים. אז אם הוא רואה ללולאה, פרשן זה מה שנקרא הולך להיות כמו, בסדר, אני צריך לעשות משהו שוב ושוב ושוב. מה אני אמור לעשות? תן לי להסתכל על השורה הבאה. תן לי להסתכל על השורה הבאה. וזה באמת מפרש את זה שורה אחר שורה. אז כדי לבצע את זה, אני לא משתמש באיפור. אני לא משתמש בקו נטוי נקודה במקרה זה. אני במקום לעשות PHP, שהוא השם של תכנית, מוכר גם בשם מתורגמן, זה מותקן מראש בCS50 IDE, ועכשיו אני צריך לעבור קו טיעון הפקודה, ש די פשוט השם קובץ שאני רוצה לפרש. או יותר כבדרך אגב, שאני רוצה לרוץ. ואם אני Enter, יש לנו את זה. שלום עולם. עכשיו מתברר ש def הדפסה המשומש במכוון כדי לגשר עלינו מפני C ל- PHP. רוב מתכנתי PHP, כפי שתראה, אפילו לא טורח באמצעות def הדפסה. הם פשוט להשתמש בפונקציה בשם הדפסה, שC לא היה. ואז אם אני להפעיל מחדש את זה עכשיו, זה באמת מתנהג תפקודי זהה. אני לא יכול להשתמש של אחוזים ואני אחוזים וכן הלאה, אבל יש דרכים אחרות ב- PHP לעשות את זה. אבל זה רק ל אומר שבחינה תחבירית, מלבד כמה דברים מוזרים עד עליון, וכמה דמויות מוזרות למטה בתחתית, המושגים עכשיו תכנות בשפה אחרת זה הולך להיות בדיוק אותו הדבר. למעשה, בואו נעשה דוגמא אחת אחרת. אז אני הולך קדימה וסגור את הקובץ. תן לי ליצור עוד אחד ש אני אתקשר תנאי 1 הנקודה PHP. אז לא אפס, כי מה שעשיתי היה הסתכלתי אחורה לפני כמה שבועות, היו לנו קובץ בשם תנאי הנקודה ג 1 ומה מה שעשיתי היה להמיר אותו בי ראש, וכאן על נייר, ובקרוב על המהלך של אתר, שורה אחרת שורה לתוך PHP. אז בגרסת C, שעשינו משהו כמו מחרוזת של מקבל מקבל מחרוזת. אז זה קצת שונה לעשות את זה ב- PHP. במקום זאת, אני פשוט הולך לעשות, או לייתר דיוק, אני n int עלול לעשות מקבל מקבל int, בדוגמא זו קודם לכן. אז במקום ש, אני הולך לעשות n מקבל לקרוא קו, הייתי רוצה שלם, אנא. אז זה רק הפקודה שלי. וכך מתברר, ו הייתי רק יודע שזה שמקרא או ראיתי את הפונקציה לפני, לקרוא שורות של פונקציה ב PHP לוקח טענה שהיא הפקודה לאדם, ומטרתה בחיים הוא לקרוא שורת טקסט שהוא או היא סוגים ב. ואז הוא מאחסן ש טקסט לn משתנה. ועכשיו אולי אני רוצה לעשות משהו כמו שאני עשיתי לפני שבועות, בשבוע כמו אחד מהכיתה. אם n הוא גדול יותר מ אפס, אז, אני הולך ללוות תחביר שרק ראינו, def הדפסה, בחרת מספר חיובי, n קו נטוי. אחר אם n שווה שווה אפס, אני הולכים קדימה ואומרים, def הדפסה, בחרת אפס n קו נטוי. אחר, המקרה כאן צריך כמובן להיות, def הדפסה, בחרת מספר שלילי. ואנחנו בהחלט יכולים ליישם ההיגיון של הדבר הזה בחבורה של שונה דרכים, אבל הנקודה כאן היא שבחינה תחבירית, בקושי שום דבר חדש. זה רק סימן הדולר ו פונקציה חדשה וקו לקרוא. אבל ביסודו, מה חדש עכשיו הוא שאני מפרש את זה. אני מעביר את זה כקלט לתכנית אחרת. אז אם אני רוצה להפעיל את זה, אם אני לא עשיתי את כל טעויות, אני הולך להפעיל PHP, של תנאי 1 הנקודה PHP, הזן, אני הולך להקליד את המספר 50, ובואו נניח לעת עתה זה עובד. בגלל ההיגיון הוא אותו חומר כשבוע אחד. בסדר, אז זה די משעמם, נכון? אנחנו יכולים לעשות את זה בכל מספר השפות. בואו לעשות משהו בדרך חזקה יותר. בואו בעיה לסיים להגדיר חמש. אז אני הולך קדימה ולעשות את זה. אני הולך ליצור קובץ נקרא מילון הנקודה PHP, ונוטה כפי שאתה יכול להיות כדי לטרוף את המון הערות, ההערות רק יעזרו לי שלך אם מותר לך ליישם בעיות להגדיר חמישה ב- PHP. אבל אנחנו תראו כמה מהר עכשיו אנחנו יכול ליישם אותו סט הבעיה. אז ב- PHP נקודת מילון, אני הולך להניח שיש כבר קובץ בעולם שנקרא איות. ואכן, עשיתי את זה מראש, ואנחנו לא הולכים בקו הזה על ידי קו, אבל אם אתה סקרן רוצה מאוחר יותר ובאמת לעטוף את דעתך סביב הבדלים בין ג ו- PHP, ממש להשוות את הקובץ הזה, איות, מקוד המקור של היום שנפרסם מאוחר יותר היום, נגד קבוצת p חמש מאית הנקודה ג שאנחנו נותנים לך, וזה כמעט באותו קו על ידי קו. יש עוד כמה סימני דולר. כמה פונקציות קצת שונה. אבל זה דרך נחמדה מסוג של לראות איך לך לתרגם משפה אחת לאחרת. וזה קו כמעט זהה לקו. אבל אני הולך להניח ש קיים, ומה שאני הולך לעשות כאן הוא מנסה לפוצץ אותך אכפת לי ידי מחדש של השלמות של בעיה להגדיר חמש דרך מהר יותר ממה שאתה כבר עושה עד כה. כך למשל, אני הולך ראשון להצהיר על משתנה גלובלי שנקרא גודל, ולהגדיר אותו שווה לאפס. עכשיו זה לא הרבה חיסכון. סיכויים מיושמים גודל פחות או יותר אותו הדבר, או רמז רמז, יהיה הלילה או מחר, רק באמצעות משתנה גלובלי שנקראו גודל, והגדרת אותו שווה לאפס. זה לא במיוחד ספוילר המדהים. אז מה היו הנתונים שלך מבנים של בחירה, אלה מכם שצללו ב ולקרוא את המפרט, מבני נתונים מה רובכם כבר משתמשים? שולחן או חשיש לנסות, אולי כמה גרסאות שלה. אז יישום שולחן חשיש לפחות, הוא סוג של הרבה שורות קוד, נכון? ולא כולם יכול להיות פונקציונלי בנקודה בשבוע זה, אבל זה בסדר. משום ב- PHP, אם אני רוצה שולחן חשיש, עשה. נכון? כך שמשתנה שיש לי רק מוצהר הוא ברור נקרא שולחן סימן דולר, להקדמה לפני. אבל אני באמת רק רוצה, ב סופו של היום, מערך. אבל לא באינדקס מספרי מערך, כי זה כמו שבוע שני דברים, כשדיברנו על מערכים. אני רוצה שולחן חשיש. אבל טבלת חשיש היא באמת רק דרך בטון לומר, אתה רוצה מערך אסוציאטיבי. אתה רוצה להיות מסוגל מפתחות לקשר עם ערכים. מפתחות עם ערכים. מה הוא מילון, באמת? ובכן זה צרור מפתחות כולה. מילות כמו תפוח, אגס, בננה ו, וכל מילות באנגלית אלה שאנחנו מוסרים לך. והערכים שאתה ביעילות הוספה למילון שלך הם או אמיתיים, או היעדר, שקר. במילים אחרות אתה מכניס חבורה של זוגות ערך מפתח שלמה, תפוח, אמיתית, אגס, אמיתית, בננה, אמיתי. כך שכאשר אתה לאחזר או לחפש את הנתונים שבטבלת החשיש שלך עם פונקצית הבדיקה שלך, אתה גם מקבל בחזרה תשובה, כן, מצאתי את זה במתחם שלי חשיש שולחן, או לא, זה לא שם, כך אתה חוזר שווא. אז כדי לעשות את זה, כל מה שאני צריך זה את הנתונים מבנה כמו שהצעתי לפני. אני רק צריך להיות מסוגל לשייך מילות כמו, ציטוט סוף ציטוט, סמל, עם ערך כמו, אמיתי. אז יש טבלת החשיש שלי. בואו בעצם להשתמש בו. אז יש כמה פונקציות אני צריך ליישם. אני הולך קדימה ולנשוך את גודל פונקציה שנקראת. זה לא לוקח ארגומנטים. אני לא צריך לטרוח עם המילה, חלל, ב- PHP. אני פשוט הולך לגודל לחזור. וכמו בצד, יש PHP פירוט minorly זה מעצבן, שבו אם משהו לא גלובלי, שיש לך לספר את הפונקציה שבה אתה משתמש זה, היי, זה משתנה גלובלי. אז, טיפשות קטין, אבל אתה צריך לעשות את זה בכל זאת. אז מה לגבי עומס? אני הולך ליישם פונקציה שנקראת עומס שלוקח בשם מילון, בדיוק כמו בבעיה להגדיר חמש. ולפני שאמשיך, שם לב שיש לי לא כבר הקלדה בדיוק אותו דבר הדברים. מה שונה כמובן בPHP על איך אתה מצהיר על פונקציה לעומת C? כן. קהל: [לא ברור] 1 SPEAKER: לא סוג תמורה. ואכן, זה המקרה, PHP ככל שזה הוקלד באופן רופף, גם קצת מרושל במובן זה. אתה לא תציין כמתכנת מה הפונקציה תחזיר. היית צריך להסתכל למעשה בקוד כדי להבין את זה. או לקרוא את התגובות או התיעוד. אז יתרונות וחסרונות של סוגים אלה של החלטות. אבל אני חייב לומר מילת המפתח, פונקציה. וכאשר אנו לומדים JavaScript בכמה שבועות אנחנו הולכים לראות את אותו הדבר שוב, אבל זה אותו הרעיון. שם הפונקציה, הטיעון שלה או טענות או היעדרה, ועכשיו כאן הוא היישום. אז אני הולך לחתוך כמה פינות רק להיות דרמטי לרגע. אבל אני הולך קדימה ואומר את זה. כך אני יכול לטעון קובץ לתוך מערך. יש פונקציה ב PHP בשם קובץ. אתה תמסור לו את השם של קובץ. זה נותן לך בחזרה מערך, בתוך שבם היא כל שורה מהקובץ. מאפס, אחד, על עד לn מינוס 1 קווים. זהו זה, נכון? אין קריאת f. אין זה גט ו. אין ים אחוזים. אין כאבי ראש. אין feof. כל דברים שבי אתה כבר נאבק אולי, עם p להגדיר ארבעה וחמש, הולך משם. אז אני פשוט לקרוא את השורות הללו ל הקובץ, ואז אתה יודע מה? אם אני רוצה לחזר על המילים האלה, אני יכול לעשות, עבור כל קווים כקו. זכור כי זה היה סוג של חכם דרך של iterating על מערך, מדד במדד, ועל כל שיחות איטרציה הקו הנוכחי, קו סימן דולר. וכאן אני הולך ו אומרים שולחן, התושבת, קו, מקבלת אמיתית. במילים אחרות, זה איך אני להכניס לתוך טבלת החשיש ב- PHP. אני אומר שולחן סימן דולר, ש הוא המערך האסוציאטיבי שלי שהיה ריק לשורת קוד למעלה. אז מדד לתוכו לא, שימוש במספר, אבל באמצעות פשוטו כמשמעו מילת המפתח שאכפת לי. אולי זה תפוח או אגס או בננה או מה, אבל במיוחד אני אינדקס לזה רוצה שהצעתי קודם לכן. אני לוקח את השם שלי מערך אסוציאטיבי, ולאחר מכן אני להשתמש סוף ציטוט ציטוט ב סוגריים מרובעים עם מחרוזת, במקום מספר אמיתי. ואז זה זה. פונקצית העומס נעשה. ברגע שסובב לולאה, שמתי הכל לשולחן החשיש. עכשיו כתב ויתור קטן, יש כמה דברים שאני צריך לעשות כדי לתקן. והגרסה אני מתכוון לכתוב באינטרנט יצטרך כל הניואנסים, אבל זה בעיקר רק הולך להיות כמה בדיקת שגיאות וכמה תיקונים קלים. אבל זה אכן התמצית של זה. אם אני עכשיו רוצה ליישם הפונקציה שנקראת לבדוק, שמצפה מילה כטענתה, איך אני יכול ללכת על עושה את זה? ובכן, אני פשוט הולך להגיד, אם בתוך השולחן שלי, במילה מיקום, אם מוגדר. אז אם יש הוא-- למעשה, אתה יודע מה? אני הולך לעשות את זה ב קצת פסאודו קוד. אבל הרעיון הוא אותו. אם זה שווה אמיתי, לחזור אמיתי. בסדר. Else-- אתה יכול לראות סוג של שם זה going-- לחזור שווא. בוצע. צ'ק נעשה. די נחמד, נכון? ואז מה זה באמת חותר? וגם זה, אני חותך כמה פינות. תראה את הגרסה מקוונת לכל הניואנסים קלים. אבל זה התמצית שלו. מדד לך מערך אסוציאטיבי, מוכר גם בשם שולחן חשיש, לראות אם יש ערך שם, אם זה מוגדר נכון, ואם כן, לחזור אמיתי. אז יש לנו נותרנו בי כל המורכבות. אז סוג של המוח נושבת, נכון? אני לא אטרח לסיים אותו עם לפרוק, כי בfact-- הו, אתה יודע מה? כן, בואו נסיים את זה עם לפרוק. לפרוק בטבלת חשיש עשוי להיראות כמו לפרוק פונקציה, לחזור. אישור אז זה לפרוק. כי אין דבר לפרוק, נכון? אין malloc. אני במפורש לא בקשתי מערכת הפעלה לכל דבר. אני רק התחלתי להשתמש משתנים. וכך זה גם הוא ביטוי של תכונות של שפות ברמה גבוהות יותר. אז שוב, רוב המונח זה אנחנו כבר עוסקים כאן למטה עם רמת סופר הנמוכה ג. אתה יכול לראות את הזיכרון של המחשב. אתה יכול לגעת בשום דבר ש רוצה בזכרון RAM של המחשב שלך, לטוב או לרע. עד כאן, אנחנו הולכים לוותר על הכח הזה. אבל אלוהים שלי, תראה איך הרבה פחות קוד שכתבתי. למעשה, אם אני לא מדבר ומדבר על ההקלדה שלי, היינו נעשה עם דוגמא זו לפני חמש דקות. אז מה המחיר ששלם? ובכן בואו נסתכל. בואו נסתכל. אני הולך קדימה ולהפעיל CS50. תן לי ללכת ראשון ל דוגמאות של היום שבי יש לי ספריית טקסטים כמו קודם. אני הולך להפעיל את הפתרון ש הוא מגיע עם הבעיה להגדיר חמש נקרא איות, שנמצא בחשבון של CS50. ואני הולך להפעיל אותו במשהו גדול כמו המלך ג'יימס התנ"ך, רק כדי שאנחנו באמת לשים את פתרונות צוות לבדיקה. עכשיו לפעמים האינטרנט של מעט איטי יותר, קצת יותר מהר, עשוי להימשך זמן מה כדי לגלול. אבל זה לקח בסך הכל 56 שניות לבדיקת איות ג'יימס המלך התנ"ך באמצעות פתרון צוות. אז די טוב. שלך יכול להיות הרבה יותר איטי, וזה לגמרי בסדר. אבל זה נכון כאן. אז זה פתרון צוות. אם אני הולך ובלנקות את גרסת PHP. ואני הולך לעשות קצת כמו דבר תכנית האפייה. אנחנו הולכים לקחת את הקוד שכתבתי מוקדם יותר, כך שזה נכון באופן מושלם. בגלל הקוד שכתבתי לא הולך להיות נכון באופן מושלם רק עכשיו. אבל אם אני מפעיל את גרסת PHP, מה אני צריך לוותר על היום? לקח לי חמש דקות ל ליישם עמ להגדיר חמש, אני טוען. מה המחיר ששלמתי? כן. קהל: מהירות. SPEAKER 1: מהירות. למה אתה מתכוון? קהל: זה הולך לקחת זמן רב יותר. 1 SPEAKER: בסדר. בוא נראה. זה הולך לקחת זמן רב יותר, לא לכתוב, אבל כדי להפעיל אותו. כן. אז בואו ננסה את זה. אז הנה אני הולך קדימה ולעשות PHP של איות, ומכיוון שהקובץ של נקרא איות. אז אני לא פועל מילון, כזכור, אני מפעיל את התכנית בשם איות. אני הולך לעבור באותו קובץ, המלך ג'יימס החמישי. זה עף על ידי. זה רק יכול להיות מהירות אינטרנט, אז אל קוראים יותר מדי לתוך זה. אבל זה מרגיש יותר בטוח. 1.26 שניות. עכשיו זה עדיין די מהר לעזאזל, נכון? והסיבה היחידה שהרגישה כמו יותר כמו שלוש, או ארבעה, או חמש שניות, זה רק בגלל ש האינטרנט היה להיות איטי. זמן המחשב בילה היה 1.26 שניות, לעומת 0.56 אני חושב. אז יותר מפי שתיים איטיים. עכשיו זה עדיין די לתקן מהר, אבל זה ביטוי של, אכן, שמחיר מדויק. בגלל שאנחנו מפרשים בשורת הקוד על ידי קו, ושPHP תכנית קריאה שלי ראש קוד למטה, משמאל לימין, יש לו לעשות יותר חשיבה. זה חייב להמיר סוג של זה בתוך עצמו למכונה המקבילה קוד על לטוס, כביכול, למרות המכניקה הם קצת שונים. במקום רק האכלה ל אינטל מעבד האפסים ואחדים גלם שהוא מבין באופן מקורי. אז בהחלט, ידיים למטה, יש לנו שילמנו מחיר. וקוד שנכתב בשפה כמו PHP נוטה להיות איטי יותר. אבל אלוהים שלי. אז עכשיו כשאני בדיקת איות שלי קובץ, אני מבלה 0.7 נוספים או אז שניות לעומת 20 שעות ליישום מהר spell checker, נכון? זה סוג של סחר מ. ואם אתה רק מתחיל עמ ' להגדיר חמש, לא יכול להיות 20 שעות. יכול להיות הרבה פחות מזה. אבל זה מסחר מחוץ, לאמיתי. ואם אתה מפעיל קוד על גדול באמת ערכות נתונים, או בחומרה אפילו מבוגרת, אלו סוגים של הבדלים בהחלט יכול להוסיף עד. כל שאלות עד כה? כן. קהל: [לא ברור] 1 SPEAKER: מצטער, יכול אתה אומר את זה עוד פעם? קהל: [לא ברור] 1 דובר: אתה מוותר על זמן. ובכן, אז כן. אתה חוסך זמן על ידי שלא יצטרך לעבד אותו, אם זה מה שאתה שואל. ואכן, בCS50, רוב התוכניות, למרות שהם עשויים להימשך זמן כדי לכתוב, הם קצרים יחסית. כמה עשרות, כמה מאות שורות של קוד, ואז הם לקמפל די מהר. אבל כשאתה מתחיל כתיבת תוכניות גדולות יותר, כמו אם אתה מיקרוסופט או שאתה גוגל ותוכניות גדולות באמת כתיבה ב- C, או C ++, או הידור דומה שפות, יכולות לקחת שניות רבות, או אפילו דקות או יותר ל לקמפל מ'שורות קוד. וגם שם, ש הבדל הולך להוסיף למעלה. ואכן, ברגע שאנחנו היום מעבר, באותו יום היום, לתכנות אינטרנט באמצעות PHP, אתה הולך למצוא את זה כל כך הרבה יותר מהנה לכתוב קוד כאשר אתה לא צריך לעשות מטופש האלה צעדים כמו שינוי למסוף שלך חלון, איפור סוג שלום, מחדש להפעיל אותו, לטעון מחדש את החלון. פשוט כל כך הרבה טיפשים צעדים מכאניים ש רק לקבל בדרך של עשייה , העבודה המהנה מעניינת. ואכן אנו לזרוק את זה עם PHP. ואנחנו יכולים לקיים אינטראקציה עם זה במהירות רבה יותר. כן. קהל: [לא ברור] SPEAKER 1: בטח. האם אני יכול להבהיר מה זה הפירוש להתפרש? כאשר אתה לקמפל שפה כמו C, הוא יורד כפי שאמרנו למכונה קוד, אפסים ואחדים. ואינטל החליטה לפני שנים ש דפוסים מסוימים של אפסים ואחדים מייצג בנוסף, או חיסור, או הדפסה, או פעולות בסיסיות אחרות. בעולם של שפה פירשה כמו PHP, או JavaScript, או Python, או רובי, או צרורות אחרים, במקום מישהו כתב interpreter-- במקרה זה, זה נקרא גם PHP, זהה ל שמו של language-- שבעצם יש לולאה גדולה בזה שסובב על כל הקווים של הקוד שאני מאכיל אותו כקלט, כמו שלום נקודת PHP, או נקודת מילון PHP. ואז אתה יכול לחשוב עליהם גדול לולאה כמו שיש הרבה תנאים. ותנאים אלה אומרים, אם אדם כתב את מילת המפתח ל, להתחיל לעשות או שלה קוד שוב ושוב. או אם האדם יש נכתב שורת קוד, אם, רק לבצעם השורה הבאה על תנאי. אז זה באמת כמו פרשנות זה במובן מסוים, קו אנושי על ידי קו, ושפשוט לוקח זמן. זה לוקח מעל. ואז זה price-- טוב אנחנו question-- לשלם. אז בואו לעשות הדגמה נוספת זה קצת יותר דרמטי. יש, הייתי אומר, אצטדיון הזה ב הסתברות של 90% של אי להחריד, אבל אתה תהיה מופתע בהסתברות של 10%. אז בכל שנה אנחנו מנסים כדי לעשות זאת, לפי ש מנסה לכתוב תכנית שעוברת בעיה להגדיר אפס, שיש לך מספרי הטלפון והגישו הרבה מידע דמוגרפי אחר, ואנחנו תכנותיים לשלוח לך הודעת טקסט. ואז טלפון של כולם מתחיל לצפצף או רוטט, וזה פשוט מדהים, כי טוב, להסתכל על מה שמחשבים יכולים לעשות. זה רק לעתים נדירות פועל כראוי נראה, בחלקם גדול כי אני בדרך כלל מקבל ברשימה שחורה על ידי Gmail או שירות אחר לבעצם מנסה לעשות את זה בקנה מידה. אבל דבר מצחיק הוא גם, מאז ש לא לכולם יש כאן היום, עובדה כיף לנו בפעם האחרונה ניסיתי את זה לפני שנתיים, אני חושב שאני כתבתי תכנית שישב בiterating לולאה על כל התלמידים בכיתה, וכל אחד מהם הודעת טקסט, וזה אמר משהו כמו, למה אתה לא בהרצאה? אוהב, בוט CS50. אין לך מושג כמה מתנצל ומייל סוג של כאב אני כבר קיבלתי בתגובה מ n מינוס 100 אנשים שלא היו כאן היום ההוא. ואפילו מצחיק story--, מביש יותר אתה יודע, בוא לשים את זה שם. זה כבר בוידאו לפני כמה שנים. אז בקרוב תוכל לראות אותי לכתוב ללולאה, לפיה זה קל מאוד לכתוב באג שב ללולאה שהפעם הראשונה כגון, דרך הלולאה, אתה לשלוח הודעת טקסט אחת. בפעם השנייה דרכי הלולאה היה צריך לשלוח את הודעת טקסט אחת נוספת, ולאחר מכן טקסט אחד יותר הודעה, ועוד אחד. אבל מתברר אם אתה עושה טעות דפוס בעת תכנות לפעמים, אתה יכול לכתוב תוכניות ששולחות אחד הודעת טקסט, ולאחר מכן שתי הודעות טקסט, אז שלוש הודעות טקסט לכולם שכבר קיבל הודעת טקסט. וכמו שאתה יודע, לעשות משהו, בתוספת משהו, בתוספת משהו, בתוספת משהו, הוא O הגדול של הרבה של הודעות טקסט, או n בריבוע, או 0.10 $ להודעת טקסט, 20,000 $. למרבה המזל אני מכה בקרה-C לפני ש קרה, אבל אני לא חייב לפחות אחד קודמיך 20 $ עבור 200 כמה הודעות טקסט מוזרות ש, לא רק הלך לטלפון שלו, אבל גם זה היה כמו להעיף טלפון ישן יותר כך שדחף את רוצה ממנו זיכרון כל טקסט אישי אחר מסר שהוא קיבל בפועל. אז יש לנו מטרה אחת היום, לא לעשות את זה. אולי להפעיל מצב טיסה. בסדר. אז בואו נלך ל תכנית כאן callled-- שאני אקרא טקסט נקודת PHP. ומראש, יש לי שני קבצים כאן. אני עשיתי את קובץ רק צוות, שיש לי כל המידע של צוות, כל השמות מהאתר האינטרנט של הקורס. ואז לעת עתה אני פשוט לשים כמה מספרים מזויפים 555-1212. אז אלה לא ממש הולכים לשום מקום. אבל שים לב לחלק הפנימי של קובץ CSV זה, שדברנו על בקצרה לפני בהקשר של קובץ IO. מה קובץ CSV? מופרד בפסיקים משתנים. וזה כמו סוג של מאוד מסד הנתונים קלים, אם תרצה. יש סוג של סוג של ארבע עמודות בקובץ זה, ויש משונן, אבל בעצם הפסיקים מייצג עמודות בקובץ. העמודה הראשונה היא TF או את שמו של CA. עמודה שנייה היא שם המשפחה שלהם. עמודה שלישית היא מספר הטלפון שלהם. והטור הרביעי הוא-- כנראה העמודה הרביעית היא כנראה מה? אוקיי, אז זה הספק שלהם. אז Verizon, Sprint או, או מה שלא. ואם שדברתי לא יפה קודם לכן, CSV. מופרד בפסיקים ערכים הוא CSV כאן. אז מה אני יכול לעשות עם זה? ובכן, זה פשוט קובץ טקסט גדול, וזה סוג של ארוך, נכון? כמו שזה הולך להיות סוג של מעצבן. וזה למרות שמתברר, שאם אני רוצה לשלוח הודעת טקסט ל, בוא אומר אלכס כאן. תן לי להיכנס לדפדפן שלי ולצאת ממצב המסך המלא רק כך אני יכול לעבור קדימה ואחורה. מתברר, בואו נראה, אם אני הולך ב כאן, ולהיכנס ל- Gmail, בסדר. אל תסתכלו על החלק הזה. רק אני זוכה לראות. כמובן Livestream יכול עדיין לראות מה אני עושה. בסדר. אז הנה הוא רק ב- Gmail עם חשבונו של ג'ון הרווארד. אז אם אני רוצה לשלוח הודעת טקסט לאלכס, אני יכול כמובן לכתוב הודעה. ומתברר, ויש לי בדק את זה עם אלכס לפני כאן, כך שאתה יכול לצרף תחום מסוים שם למספרי הטלפון של אנשים, כי קיים בעולם דברים בשם SMS לדוא"ל שערים. איזו היא דרך מפוארת של אומר את כל שלנו שיש להם טלפונים ניידים ש יש מספרי טלפון, כמובן, כנראה יש לספק שלך, סיומת מסוימת כמו ב Vtext.com להודעת טקסט ורייזון דוט, שניתן לצרף לך מספר של טלפון אישי, ולאחר מכן אתה או חברים, או ההורים שלך יכול טקסטך בכתובת מסוימת. ויש Verizon שרת, דואר אלקטרוני שרת, שעם קבלת הודעה זו, נראה בחלק המספרי ולאחר מכן משתמש מה קסם תעשייה מיוחד הם צריכים באמת לשלוח אותו מעל גלי האתר לתא הספציפי שלך טלפון. עכשיו זה נחמד כי אני לא ממש יודעים איך לשלוח הודעת טקסט או לכתוב קוד עדיין לטלפון הנייד שלי, ואתה עלול לעשות בדיוק את זה ל פרויקט גמר, אך לעת עתה כל יש לי המחשב הנייד שלי הוא כאן. אז אני רוצה לחזר על CSV ש קובץ, קו, על ידי קו, על ידי קו, על ידי קו, לתפוס כל אחד ממספרי הטלפון של צוות, והמוביל ו, בצורה האוטומטית שלהם, לשרשר, כלומר, לחבר את הטלפון מספר עם שם תחום המתאים ולאחר מכן לשלוח דואר אלקטרוני. אז זה הרבה שלבים. ומזל טוב עושה את זה בג זה סיוט של מצב כדי לפתוח קובץ, לקרוא אותו קו, על ידי קו, על ידי קו, כפי שאתה רואים, או עשוי לראות בקרוב עם בעיה להגדיר חמש, אם לא בעיה להגדיר ארבעה, ולאחר מכן ללשרשר דינמי יחד שתי מחרוזות, כי בC, לקחת שתי מחרוזות ולשלב אותם, מה אתה עושה מינימאלי צריך לעשות סביר ביותר? אתה צריך להצהיר יותר זיכרון, נכון? ולשאול, malloc, יכולים יש לי יותר זיכרון? אז אני יכול לשים את מחצית זו כאן, מחצית מזה כאן. זה פשוט כל כך הרבה שלבים. ועל ידי נקודה שאבדת עניין בהדגמה הקטנה טפשה שבו אתה עושה צפצוף הטלפון של כולם. בואו לעשות את זה סוג של PHP סגנון, לפיה אנחנו פשוט להתחיל להשתמש יותר של שכיור המטבח. והרעיונות ביסודו אותו הדבר, אבל אנחנו לא צריכים לדאוג יותר מדי הרבה על זה ברמה נמוכה יותר. אז בואו לראות איך אני יכול ללכת על עושה את זה. ורק כדי שלא לחזור על טעויות עבר, שכתבתי כמה הערות לעצמי כאן. ובואו נראה אם ​​אני יכול ללכת איתנו באמצעות כמה צעדים הבסיסיים, ואז למען הזמן אנחנו אולי לחתוך כמה פינות בסופו של הדבר. אני הולך קדימה ולעשות פתוח PHP התושבת להתחיל בקובץ זה. ואני הולך קדימה ולעשות את זה. קובץ ידית, כמו שאתה בקרוב תראה, למעשה קורא פונקציה שנקראת F פתוח. ותזכור את זה פותח קובץ. והציטוט, סוף ציטוט, r אומר מה, שוב? רק לפתוח אותו לקריאה. עכשיו בסט עמ 'ל, אתה עשית את זה. ולהתמודד יכול להיות כל דבר, פו, בר, bas, כל שם משתנה. אבל בדרך כלל מחשב מדען הייתי קורא קובץ פתוח, נותן לך ידית קובץ, משהו להיאחז כביכול. אני רק הולך לעשות כמה בדיקת שגיאות. אז אם הידית היא שקר, בדיוק כמו ב- C, אני הולך לעשות משהו כזה, לא יכל לפתוח את הקובץ, n הקו הנטוי. ואז אני פשוט הולך ללכת קדימה ויציאה. ומתברר, ב- PHP, אני לא בתוך פונקציה. אין פונקציה העיקרית כאן. אז אני לא אחזור, כשלעצמה. אני לצאת. שהוא בעצם אותו הדבר. ואני יוצא עם y אחד כנראה. אחד רק אומר שגיאה מסוג כלשהו. זה שאינו אפס, כך שזה שגיאה. בסדר, אז אם אני פה עכשיו בתכנית שלי יש לי פתח את הקובץ. אני הולך קדימה ולהכריז מערך נקרא כתובות, ובC הייתי צריך לדעת גודל של המערך מראש, נכון? או שהייתי צריך להצהיר על כך הוא מצביע, ולאחר מכן להשתמש malloc. ואז בכל פעם שאני קורא באמצעות שורה אחרת בקובץ, אני הולך צריך malloc יותר זיכרון, זיכרון יותר malloc. זה כאב בצוואר. ותודה לאל, PHP, ורובי, ופייתון, ו- JavaScript, הם יגדל המערכים שלך בשבילך באופן אוטומטי. לא עוד malloc. לא עוד ניהול זיכרון. המחשב דואג ש. אבל המחיר שאתה משלם. זה קצת איטי. ולתכנית כמו זו אנחנו לא הולכים ללב. אנחנו הולכים לשלוח 100 הודעות טקסט. למשל לא הולך להרגיש את זה. זה באמת רק מתחיל משנה השפה של בחירה שלך כאשר הנתונים שלך או את התוכניות שלך לקבל באמת, באמת גדול, כיהיה המקרה יותר עם הדברים שלנו באינטרנט מבוסס. אבל לעת עתה בואו לפרוץ קדימה. בעוד מתברר שיש פונקציה ב- C נקראת F לקבל CSV. קובץ CSV לקבל, שלוקח להגיש ידית כטענתה, וזה ממשיך אז, שורה, על ידי שורה, על ידי שורה, לקרוא ברציפות. אז זה פשוט קורא קו טקסט מהקובץ. אבל מה שיפה בפונקציה זו, זה לא רק נותן לי שורת טקסט. הוא מחפש פסיקים אלה, ומנתח את הקו. ולנתח את הקו אומר לפצל אותו על ערכים מסוימים בהקשר זה. במילים אחרות, סימן דולר השורה היא משתנה זה הולך לתת לי חבורה של מדדים. זה הולך להיות הטור ראשון בCSV שלי. זה הולך להיות שני טור, זה הולך להיות שלישי, וזה הולך להיות רביעי. משום כזכור, ו- Excel לא לשתף פעולה הפעם האחרונה שעשינו את זה, אבל אם אני מוריד צוות dot CSV. אופס, לא לשנות את השם. אם אני מוריד את נקודת צוות CSV, ולנסות לפתוח אותו, אני כבר registered-- הו אני לא עדכן את Excel מאז הפעם האחרונה. אתה רואה שבנקודת צוות CSV, יש לי ארבעה עמודים. אז כשאני קורא ב השורה הראשונה לאב כאן, שורת סימן דולר 0 היא אבי, שורת סימן דולר אחד היא יונס, שורת סימן דולר היא שתי את המספר שלה, ואז הספק של הטלפון שלה. אז זה הכל. וזה נחמד, כי אני אין לי עכשיו כדי להבין שבו כל פסיקים אלה הם למעשה. אז אני הולך קדימה ו לעשות את זה, בהתחשב בהגדרה זו, אני הולך להגיד שהשם שלה הוא במסגרת שורת אפס, כפי שהובטח. ואני הולך grab-- ו למעשה, אתה יודע מה? אני לא הולך לדאוג את שמה, במקרה זה. אני הולך לשמור את זה פשוט. אני הולך לעשות את המספר שלה הוא במסגרת שורת שתיים, אני חושב. והמוביל שלה היה שבבו? שורה שלוש, אחד מעל. כך ששום דבר חדש שם. זה רק אפס אינדקס למערך. ועכשיו, אני הולך לבצע את הפעולות הבאות. אם הספק שווה שווה AT & T-- אני רק הולך ליש loop-- אני רוצה ליצור הודעת דואר אלקטרוני כתובת שנראית כך. זה הולך להיות 617-555-1212 ב, מה זה, text.ATT.net, זה מה שאני רוצה לעשות. אז איך אני עושה את זה? אני הולך לעשות את הדברים הבאים. הכתובת שלה הולכת להיות המספר שלה, ועכשיו, תן לי ללכת קדימה ולעשות את זה. זה כמה תחביר פאנקי. אני יכול לעשות את העבודה של אחוזים, אבל אני ממש יכול פשוט לעשות את זה. אז זה דבר PHP, אבל הבה נבחן מה שאני עושה. דולרים לחתום על כתובת השמאל, רק משתנה. תן לי משתנה. אני לא צריך לציין את הסוג. PHP יהיה להבין את זה. בצד ימין, מה סוג הנתונים של שכל הדבר ב בצד ימין? נראה כמו מחרוזת, בגלל שיש כפול מצטט בשמאל הקיצוני וימין קיצוני. עכשיו יש כמה תחביר חדש פאנקי כאן. יש סוגריים המסולסלים, ומספר סימן דולר. אבל לקחת לנחש מה הוא תחביר ש כנראה אומר PHP לעשות בשבילי? כן. פשוט להכניס את הערך שם. אז לא אחוזים של. אנו יכולים להשתמש בF הדפסה, או של ו הדפסה או משהו כזה, אבל PHP והרבה שפות ברמה גבוהות יותר, אתה הולך לראות שאתה יכול לעשות את אותו הדבר מבחינה תפקודית, אולי שש דרכים שונות. ואז זה מתחיל להיות עניין של עיצוב או סגנון. אז זה רק דרך מבט סתום לומר, תן לי את כתובת הדוא"ל של, אבל התוספת במספר ב בין סוגריים המסולסלים אלה. והסוגריים המסולסלים לא יהיו בסופו של כתובת הסופית. עכשיו אנחנו יכולים לדלג על חלק מ קווים אלה למען הזמן. אז אם ספק שווה שווה אופס verHorizon--, Verizon-- אני רוצה לעשות משהו דומה מאוד, שבו מקבלת את כתובת, ציטוט, סוף ציטוט מספר, בtext.ATT.net. ואז אני יכול לעשות את אותו סוג של דבר לשאר ספקים. אבל אני פשוט אעשה את הנקודה, נקודה, נקודה לעת עתה. ועכשיו בואו נניח ש אני רוצה להוסיף מערך, לדחוף. אני רוצה להוסיף ל מערך, שנקרא כתובות. כתובת זו, כך ש להוסיף משהו למערך ב- PHP. אתה לא צריך לעשות malloc. אתה לא צריך לשנות את גודל המערך. אתה פשוט אומר מערך, דחיפה. מה אתה רוצה push-- מה מערך אתה רוצה לדחוף משהו על? כתובות. מה אתה רוצה לדחוף על כתובות? כתובת. ולמעשה, אם אתה באמת רוצה להיות חכם, כמה סוכר תחבירי לזה, אם אפשר לומר כך, שרק אומר איך אתה יכול לעשות את זה ב הדרך היפה יותר, תהיה לעשות את זה. שגם יש לו את ההשפעה של גידול מערך כתובות על ידי גודל אחד, ולאחר מכן פלופ שנוסף כתובת הדוא"ל לתוכו. כן. קהל: [לא ברור] SPEAKER 1: טעות דפוס ב אחר if-- הו, מוביל. זה בסדר. זה גם לא יאהב את הכישלון שלי ל ליישם חלק מתכנית זו מאוחר יותר. אבל תודה ללכידת. באג אחד יותר. תודה. אנחנו רוצים שזה יהיה Vtext.com. כן. בסדר. אז איפה זה משאיר אותנו? אנחנו כתבנו את הקוד כדי לפתוח את הקובץ. יש לנו לולאה ללחזר על השורות בקובץ. יש לנו קוד שמוסיף לי מערך, אחד בכל פעם, בצורה נכונה כתובת הדוא"ל של פורמט. אז כל מה שבאמת נותר הוא לשלוח דואר אלקטרוני לכל אחד מהאנשים האלה. אז אני כבר הלכתי קדימה ו הכין את עצמי כדלקמן. מה אני הולך לעשות כאן הוא-- ובואו קדימה ולדלג לחלק הקוד בפועל, שנראה כמו זה. אז הנה הוא לפני אפוי גרסה שכתבתי קודם. ושימו לב שסיימתי יישום ספרינט. סיימתי יישום T-Mobile. סיימתי יישום Virgin Mobile. ואני מתנצל מראש. יש כמה ספקים ש כמה תלמידים בכיתה יש לי שלא טרח ספירת באם המצב כאן. אז לא כל הטקסטים תצאו. אבל בואו נראה מה עוד אני צריך לעשות. אני סוגר את הקובץ, פשוט כמו בעמ להגדיר ארבעה. וזה תחביר חדש. ואנו רואים מעט קצת זה לאורך זמן, במיוחד עם p להגדיר שבעה ושמונה. אבל זה תחביר ליצירה סוג מיוחד של מבנה. מתברר שיש ספרייה ש מגיע עם PHP, דיוור PHP נקרא. מטרתה בחיים היא תכנותי לשלוח מיילים. זה מישהו אחר כתב את הקוד ש עושה את זה יותר קל לנו לשלוח מיילים, ולכן אנחנו לא צריכים לשמור הולך הלוך ושוב ל- Gmail, והדבקה בכתובות הדואר האלקטרוני של אנשים. יש חבורה שלמה של קווים כאן כי בכנות, אני פשוט סוג של העתקה ולהדביק מהתיעוד. ולמעשה, אם אתה סקרן, שעזבתי את כל של כתובות האתרים של התיעוד בקוד שאנו מתכוונים לכתוב מאוחר יותר. ושים לב שבין הדברים שאני עושה הוא, אני אומר לי ספרייה זו, להשתמש בשרת של Gmail, נכון? SMTP דיברנו בקצרה על כש היו באוניברסיטת ייל על להיות דואר פשוט פרוטוקול העברה. זה הפרוטוקול ש שרתים משמשים לשליחת דואר אלקטרוני, ויש that's-- Gmail אחד מאותם. נמל, כך הוא מספר יציאת TCP. זה בסדר גמור אם אתה לא ראה 587 לפני. רק יודע שמהתיעוד. הנה שם המשתמש שלי. אני הולך להשתמש בבוט CF50. וברגע, אני רק הולך ל הקלד את הסיסמה בפועל של בוט. ואז כאן, שים לב מה שנשאר. אני מגדיר את שלי מכתובת להיות BOT בCS50.net. אני חושב שאני לא אצטער על השליחה הודעת טקסט ל- 800 אנשים ש אומר, מתגעגע אליך, בוט CS50 האהבה, אולי למי שלא יכול לעשות את זה היום. ולאחר מכן בקו 76, מה עליי לעשות? סוג זה של מראה כמו ג אז לי שווה 0, n equals-- עכשיו לספור הוא חדש. מתברר שאם אתה רוצה לקבל מספר דברים במערך, אתה לא צריך לזכור את זה יותר. אתה פשוט יכול לשאול פונקציה שנקראת ספירה, והוא יגיד לך כמה כתובות הן במערך ש. ואז אני הולך להוסיף כתובת הדואר האלקטרוני ל. ואני יודע שזה מ באמצעות התיעוד. יש פונקצית כתובת תוספת. ועכשיו שם לב שיש היא חתיכת תחביר אחד. אנחנו ראינו את זה לפני בג דומה ברוח. אתה יכול לחשוב על סימן דולר אלקטרוני כמשתנה, שבו הוא. אבל זה struct בתוך שהם לא רק תכונות, משתנים אם תרצה. אבל מתברר שב- PHP, ש הוא תכנות מונחה עצמים שפה, כמו Java אם לקח נגמ"שים. סימן דואר דולר, אם אתה רוצה צריכה-- יש לה גם תפקידים בתוכו, או שיטות. אז זה אומר ש מיילר PHP המיוחד ספרייה, אם יש לי משתנה, אם אני רוצה לקרוא לפונקציה ש מגיע עם ספרייה ש, למטרות של היום, פשוט יודע שאתה משתמש בסימון החץ. אין סימון נקודה. זה רק על החץ. אבל זה לא מצביע. זה רק בהשאלה מהתחביר של C. אז קוראים להוסיף בתוך כתובת האובייקט של ספרייה זו או משתנה. בסדר. זהו הקו הקסום. ככה אני שולח דואר אלקטרוני. זה שווה הערך של פתיחה Gmail, להקליד אותה החוצה, ולהכות לשלוח. אבל זה הולך לשלוח במקום דוא"ל לכתובת זו, עם הגוף הזה, מבוט CS50. ועכשיו שורת מפתח. קו זה נעדר ב2,011 כמו כשאני חושב ניסיתי אחרון זה. קו שיש, כמובן, מנקה את הכתובות. אז מבחינה הגיונית, אם אני לא לנקות את כתובת לאחר כל איטרציה, הראשון דוא"ל או הודעת טקסט הולכת לאליס, השני הולך ל אליס ובוב, השלישי הולך לאליס ובוב וצ'רלי, ומכאן טעות יקרה מאוד אני עשיתי את זה שנה. אז בואו לראות. האם יש שאלות לפני שאנחנו שולחים לך את כל טקסט הודעה עם הסתברות של 10 אחוזים? יש שאלות? בסדר. בואו לי ללכת לכאן ושינוי הסיסמה למה שצריך לעבוד, צפוי לקבל ברשימה שחורה של Gmail. אז אולי הם לא כל ללכת את, שכן הם כנראה לא אוהב אותנו שולחים 800 מיילים ללולאה בבת אחת. מכיוון שזה לא התנהגות אנושית במיוחד. אה, אני הולך לשנות דבר אחד אחר. בחלק העליון, אני הולך sent-- לשנות את הקובץ לתלמידי נקודה CSV. ואני לא אפתח את זה, אבל זה קובץ CSV זהה עם לא 100 עובדים, אבל 800 תלמידים, רק מאוניברסיטת הרווארד, כי ייל יש פגרת אוקטובר שבוע. וזה נראה כמו סוג של דבר אידיוט לעשות לטקסט כולם, מדוע הם לא בכיתה על החג. זה בסדר. רק סטודנטים באוניברסיטת הרווארד היום בתוך הקובץ ש. ועכשיו בואו נחזור לחלון המסוף שלי. אני סוג של עצבים. אוקי אז עכשיו אני הולך להיכנס ל ספרייה, ו- PHP על נקודת טקסט PHP. מה דעתך על התנדבות אחד אמיצה? אז אני לא רוצה את זה עליי. אישור, בוא למעלה. מה השם שלך? מאיה: מאיה. 1 מרצה: מאיה. בואו למעלה, מאיה. בסדר. בואו אראה אם ​​זה עובד. שמתי בכתובת הדואר האלקטרוני שלי file-- מספר הטלפון שלי בקובץ, כך שאני מקווה שאני אקבל אחד גם כן. נחמד לפגוש אותך. מאיה: כמו כן. 1 דובר: אז כל מה שאתה צריך לעשות הוא על Enter כדי לשלוח 800 הודעות טקסט, אם אני לא לפשל. נחמד. יכול לקחת זמן, מבחינה סטטיסטית, עד שנגיע לדואר אלקטרוני address-- הודעת טקסט זה בחדר עכשיו. בואו נתעכב ותראו. קהל: [שורק] 1 מרצה: אה, כן. קהל: אה, תפסתי אותך. 1 דובר: ללולאות הן-- זה לא איטי בגלל PHP. זה איטי בגלל Gmail הוא חונק אותנו ולא ומאפשר לנו לשלוח יותר מ כמו דואר אלקטרוני אחת לשנייה. כל דבר? זה היה דבר קשה לי לבדוק ב בית עם רק אני וטלפון אחד שלי, כל כך. האם שאני מקווה מבוט? כן? לא? תגיד כן. לא? זה מידיד? מביך. אוקיי. די בטוח שזה עובד אף. או הו. הם black-- הו, חכו רגע. אה, אתה יודע מה? רגע אחד בבקשה. רק מאיה ואני- מיה, זה היה? מאיה: מאיה. 1 מרצה: מאיה, הולך יודע מה עשיתי לא בסדר כאן. אה, רגע, רגע. אני חושב שאני פשוט שלח 100 הודעות טקסט ל555-1212. המתנה. אני לא יכול לנצח כל שנה. אוקיי. מאיה? לתקן את זה שבלאחר ייצור. לכל הרוחות! הבא מכתובת. אישור, תעמוד על ידי. מצטער. זה כואב בכל שנה. אישור, רגע אחד. זה טוב. אני במקום הולך לעשות את זה. כתובת הדפסה. אישור, תעמוד על ידי. כתובות הדפסה, אני סוגר. כן, אני אוהב את זה. דולר sign-- אישור אני אסביר מה אני עושה ברגע, אחרי שמפעיל את זה. כל שנה. אישור, הנה זה באנו. יש לי אני פשוט- ואני לא רוצה כדי להציג את מספר הטלפון של כולם, אבל מאיה יכולה לאשר בהנהון של הראש, שהיא רואה כולם מספר טלפון בכיתה שאני הולך להעתיק ל תכנית בשם Gmail. ואם ב- Gmail, מה שאנחנו רוצים לומר? מתגעגע אליך. Love-- זה לא ממני. אני אפילו לא פגע לשלוח עדיין. אז בואו נלך קדימה ולעשות זה, אם אני יכול להתמקד ב. אוקיי. אז אני משתמש בתוכנה בשם Gmail עכשיו. אם מאיה, אתה רוצה לחץ על לחצן שלח, אנו מדמים את מה ש קוד צריך לעשות. כל דבר? [צפצופים] קהל: כן. 1 מרצה: כן? ישועה? קהל: כן. 1 מרצה: מתגעגע אליך. ואני הולך לשלוח את השאר. שלחתי את המחצית כי אני לא חושב ש Gmail יאפשר לי אלה לעבור. אז רק תזכור, היום הוא היום כי אתה למדת שאני יכול להשתמש ב- Gmail. זה היה מחריד. מחיאות כפיים גדולות למאיה. תודה. בסדר, אז. מה [צפצופים] יש לנו כמה צפצופים, כן? בסדר. עכשיו אני הולך לקבל 700 באמת מיילים אומללים חזרה מחבריו לכיתה. אז לפחות שנראה אם זה היה שווה את זה. אז מה השתבש? אני להבין מה הלכתי הלא נכון בדיעבד, אבל רק להסתכל כמה קל זה היה לעשות את זה ב- PHP. אז מה אנחנו יכולים למעשה לעשות עכשיו ש יש לנו הבעה זו של PHP. was-- שזה היה נורא. בסדר. אז זה מה שצריך הייתי לצאת. זה היה לי בדיקה הבוקר עליי טלפון, מסך בפועל של הטלפון שלי. אבל עכשיו הבה נבחן מדוע אנחנו בעצם אתה מציגים את כל הדברים האלה במקום הראשון. אז המטרה היא לא ל לכתוב תוכניות אלה ש נכתבים בשורת הפקודה, נכון? אז כתבתי פשוט שלום תכנית, שכתבתי תוכנה קטנה שעושה תנאי, ומשמש קו קריאה וכן הלאה. ובתאוריה, אני רק כתבתי תכנית ששלחה 800 הודעות טקסט, לתת או לקחת 800. והתכנית שהייתה כל עדיין לרוץ בשורת הפקודה. וזה, כמובן, הוא לא באינטרנט, נכון? המטרה עכשיו היא להתחיל להשתמש ב מה שאני טוען הוא קל יותר לשימוש שפה, מעזה לומר יותר שפה רבת עוצמה במונחים מהתכונות ש מגיע עם זה, כדי להתחיל כתיבת קוד שמייצר דפי אינטרנט. אז בפעם האחרונה ושבוע שעבר, דיברנו על HTTP ו- HTML. ומה שיפה HTML הוא שזה רק טקסט טהור. וטקסט הוא בהחלט משהו שאתה יכול להדפיס על ידי, פשוטו כמשמעו, קוראים את האותיות פונקצית f, או פונקצית ההדפסה. ואכן, זה מה שזה PHP עכשיו הולך כדי לאפשר לנו לעשות. אז בין דוגמאות ש יש בקוד המקור של היום, בנוסף לחלק מהקוד ששמתי שם לפני רגע, יש לנו תוכניות כמו זו למשל. Froshims, או Freshman ביצוע עצמי ספורט, היה למעשה אחד מהחוגים של הראשונים יש לי מעורב עם לפני שנים. והשותף שלי ואני, עם כמה ילדים אחרים בקמפוס, משמש כדי להפעיל את תכנית froshims. אני מקבל הודעות הטקסט שלי עכשיו. עכשיו כדי ש, חזרה ביום, אז זה היה 1996 או כך, לא היה אינטרנט, אבל לא היה תהליך אוכל שם לא היה אתר לfroshims. ולכן אם אתה רוצה להירשם ל כדורגל או כדורעף או מה, היית למלא את הדבר הזה נקרא פיסת נייר, והיית לחצות הרווארד חצר, והיית חלק אותו לתוך חריץ הדואר של המשגיח, ש היה בWigglesworth, אחד מהמעונות. וזה היית רשום. והוא או היא היית אז להלחין לכם דואר אלקטרוני באופן ידני, כמו ש רק עשיתי כאן עם מאיה, ואז היית ניתן לאשר כמי שהיה רשום. אז זה היה כמו נמוך תלויים פירות, כביכול. זה היה סוג של הטיפשים ש אנחנו משתמשים בנייר לזה. אני רוצה שיהיה מסוגל פשוט ללכת על אתר אינטרנט, או שיש לי תלמידי שנה א 'ללכת על אתר, להירשם לספורט, ורק להפוך הרבה דברים זה על ידי הצבת השמות והמיילים שלהם וכן הלאה לתוך מסד נתונים. ולמעשה, את הגרסה הראשונה של האתר, באמצעות HTML סופר מכוער, אולי נראה משהו כזה. זה היה למעשה, באופן אירוני, יותר מביך מחפש יותר מזה בחזרה אז. אבל השתמשתי בשפת תכנות. לא PHP, אלא בשם פרל, שהיא שפה מבוגרת, אבל דומה מאוד ברוחו. ואני פשוט לגמרי לימד את עצמי. וזה לקח לי זמן להבין את זה, שואל הרבה שאלות של חברים. אבל הרעיונות יש היו בדיוק אותו הדבר. כי מה שהיה באמת נועד PHP להוא לא חומר שורת הפקודה אנחנו פשוט שיחקנו עם, אבל לתכנות אינטרנט. זה באמת קשור בתכונתו להגדיר לאינטרנט, כדלקמן. זה froshims. ואם אני רוצה לרשום בטופס זה, זה די מכוער, בהחלט, אבל תנו לי ללכת קדימה ולהיות תלמיד פחות נוח, וכל מה שספורט עבור מתיוס, לחץ רישום. מה אני רוצה להיות מסוגל לעשות הוא שלח את הפרטים מטופס, לא לשרת של גוגל כמו שעשינו בפעם האחרונה, לגמרי רמאות באמצעות backend, אני רוצה ליישם קוד backend שלי. מה שאומר שPHP כתיבה קוד שחי בכתובת אתר ניתן להגיש שנתוני טופס ל. ולאחר מכן את הקוד שלך, נכתב ב- PHP בשרת, אז יכול להגיב שלקלט המשתמש. כמו השם שלו או שלה, או את רמת נוחות, או במעונות, ולאחר מכן לעשות עם זה משהו. במקרה זה, אני פשוט בטיפשות הדפיס אותו כטקסט, שהוא לא כל כך יפה. אבל אתה בהחלט יכול לדמיין, אם אתה יודע HTML, ובקרוב תוכל לדעת איך ליצור HTML עם F הדפסה, והדפסה, ופונקציות דומות, אתה בהחלט יכול ליצור דף אינטרנט יפה שאומר, היי דוד, אתה עכשיו רשום. אתה פחות נוח סטודנט ממתיוס, נכון? אתה פשוט יכול להשתמש בחבורה של SES% כל, או סוגריים המסולסלים וסימן דולר סימון הייתי לפני רגע, ל ליצור טקסט זה יותר ידידותי למשתמש מזה. אז בואו נסתכל על קובץ אחד זה. Froshim אפס הנקודה PHP נראה כך. כשטענתי מחדש IDE CS50, אפס froshim נראה כך. זה froshim אפס הנקודה PHP. ומה אתה שם לב על קובץ זה? קהל: [לא ברור] 1 SPEAKER: מצטער, בקול רם יותר? קהל: [לא ברור] זה מכיל ב- HTML. ולמעשה, זה הוא, כי מה שמעניין על PHP הוא שזה נועד להיות, לטוב או לרע, התערבב עם קוד ה- HTML. ואכן, למרות שזה קובץ, froshim אפס PHP נקודה, יש תגובה PHP בראש שלו, זה הכל רק HTML. אבל לעומת זאת, אם אני פותח את, בואו למשל, לרשום אפס הנקודה PHP, ש פשוט יש תגובה גדולה בחלק העליון. זה גם נראה כמעט לחלוטין כמו HTML, למעט מה? קו, מה, 21 נראה קצת מוזר. אבל שמתי לב שאני נכנסתי למצב PHP עם PHP סימן שאלת הסוגר פתוח. אז יש לי כמה דברים. ואז בסוף הקו ש כמעט יש לי, השאלה PHP סימן. וזה מה שאני מתכוון בערבוביה. אתה יכול לכתוב HTML, כי אתה פשוט רוצה השרת לירוק. אבל אם אתה רוצה לעשות משהו חלקית דינמי דרך הדף, כמו להכניס את השם שלי או מעונות או רמת נוחות, אני יכול להשתמש בפונקציה כמו r הדפסה, שהוא להדפיס רקורסיבית, שרק אומר להדפיס את המשתנה זה, עיצוב זה עם זאת אתה רוצה. זה ממש לא ל מטרות אנושיות, זה פשוט לניפוי או למטרות אבחון. אז ככה אני עשיתי את זה. אם אני במקום ללכת froshims שתי הנקודות PHP, שם לב כי הפעולה מסוג זה אינו רשום אפס הנקודה PHP כ old-- הקודם באמת היה. אבל זה רשום שתי נקודות PHP. אז בואו נסתכל איך זה אחד מתנהג קצת אחר. אם אני נכנסתי לגרסה שתי. אם כאן, אם אני נרשם כדוד, פחות נוח, ממעונות של מתיוס, להירשם. אז הפעם זה אמר, אתה רשומים, לא ממש. בואו לראות מה שעשיתי כאן. אם אני מסתכל על מרשם שתי נקודות PHP, זה יש כמה קוד PHP יותר. זה קצת נקי, למרות שהיא עדיין עוטף קצת ארוך על הקו הזה. שים לב כאן. אני להדפיס את תג ה- HTML שלי, תג הראש שלי, התג שלי הכותרת, הראש, הגוף. ואז אני מתחיל לומר דברים כמו להיכנס למצב PHP. וכך תג ש, תושבת פתוחה סימן השאלה PHP-- PHP אומר, היי, שרת, execute-- לפרש הדברים כמו PHP הבאים עד שתראה את תג הסוף. ולמרות שאתה אולי לא יודע כל PHP אחר ממה שראית עד כה, סוג שלך יכול לקרוא זה די באופן אינטואיטיבי. אם השם הוא ריק, או נוחות היא , או במעונות ריקה, מה עליי לעשות? מה אני אומר למשתמש? עליך לספק את השם שלך, נוחות, ומעונות, וכן הלאה. אחר, אני אומר לך הוא רשום, גם לא ממש. ואני אומר לא ממש כי אין בסיס הנתונים. אני לא עושה שום דבר עם נתונים. אני רק זורק אותו משם למטרות הדגמה. עכשיו אני סוג של קמצתי על קו 22. יש עוד תחביר יש, אבל סימן דולר מדגיש הודעה היא די מעניין. וזה מה שנחמד על PHP. ב- PHP, יש לך מה שנקרא כמה משתנים גלובליים סופר. הם סוג של אפילו יותר חשוב ממשתנים הגלובליים. ואלה, כל מהוונים ככזה, מגיע עם PHP. אז אם יש לך שרת שיש לו התקנת שרת אינטרנט, כמו אפאצ'י, ולהתקין את השפה תמיכה עבור PHP, פתאום אתה יכול להתחיל להשתמש אלה סופר משתנים גלובליים בקוד שלך. ומה שיפה PHP היא שאם אתה רק לכתוב קובץ שמסתיים בנקודה PHP, לשים אותו על שרת אינטרנט, ואז אתה לשלוח טופס לזה באמצעות שתג פעולה ותג טופס, שתכונת פעולה ב תג טופס, PHP והאינטרנט דמויות לגמרי איך לתפוס כל זוגות מפתח ערכם החוצה של הכתובת כמו שאלה סימן שאלה שווה חתולים, זה יהיה להבין איך q וחתולים. אם אתה שולח תמונה, או שם משתמש, או סיסמא לפייסבוק אוהבת, PHP יהיה להבין בשבילך שבו כל הנתונים שהוא. וזה פשוט ימסור אתה מערך אסוציאטיבי פוסט תחתון סימן דולר בשם, או סימן דולר מדגיש לקבל, תלוי אם אתה באמצעות הגשות גט או הודעה. וזה פשוט ימסור לך משתנה גלובלי סופר, כך שאם אתה רוצה לקבל בשם שהמשתמש שהוגש באמצעות אינטרנט ש טופס, אתה ממש פשוט לומר את השם של המשתנה הגלובלי הסופר, ציטוט, סוף ציטוט, שם. וציטוט, נוחות סוף ציטוט, וציטוט, מעונות סוף ציטוט. ואנחנו הולכים להיות מסוגלים לעשות זה ועוד כל כך הרבה עם PHP. ולמרות שזה היה מבט מערבולת בזה, אנו לצלול בשבוע הבא הרבה יותר. אנחנו נציג בסיס הנתונים כך שאתה בעצם הולך להתחיל ביישום based-- הסחר האלקטרוני שלך כמו אתר בזמן של שבוע בלבד. אז נתראה בפעם הבאה, ו מקווה שיש לך הודעות טקסט. שלום. [השמעת מוסיקה] [פתיחת דלת] SPEAKER 2: היי. SPEAKER 3: מה קורה? SPEAKER 2: מה אתה עושה? SPEAKER 3: עבודה על סט בעיה. SPEAKER 2: נחמד. כיף. [כיף] מה הן-- אה, מה אתה עושה כאן? SPEAKER 3: Just hanging out. רק עכשיו חזרתי מחדר הכושר. לא יכולתי שלא לב כאשר אנו גבוהים fived, שיש לך ידיים קשות למדי. האם אתה הולך לחדר הכושר? SPEAKER 2: מס ' מס ' 3 SPEAKER: אחי, אתה מסתכל די גדול. וזה רע, כי כולם יודעים כדור המספר 8 הוא האיש הגדול בקמפוס. כיף. SPEAKER 2: אה, לא. לא, אני חושב שאני טוב. אני חושב שאני טוב.