פייסבוק מאיצים את PHP

פייסבוק הודיעה על השקה של פרוייקט חדש שנקרא היפ-הופ שנועד להאיץ את זמן הריצה של PHP – השפה שמניעה את האתר החברתי הפופולרי.

HipHop_logo_white-300x170למי שלא מכיר, PHP היא שפה דינאמית לכתיבת אתרי אינטרנט המפותחת כיום ע”י חברת Zend הישראלית ונחשבת לאחת השפות הפופולריות לבניית אתרים. הצורך בהאצת זמן הריצה של שפה כמו PHP נובע מהאופן בו שפת תכנות דינאמית כמו PHP, פייתון ורובי מתורגמת לשפת מכונה (השפה שמחשבים מבינים) בהשוואה לשפות תכנות מהודרות כמו ++C וג’אווה. בשפה מהודרת, קוד המקור מתורגם לשפת מכונה פעם אחת בתהליך ההידור ולאחר מכן ניתן להריצו כקוד שהמחשב מבין ללא הגבלה. בשפת תכנות דינאמית קוד המקור מתורגם לשפת מכונה בכל פעם שמריצים את הקוד, מה שכמובן הופך את תהליך הרצת הקוד לאיטי בהשוואה לשפה מהודרת (המחשב צריך לתרגם אוסף הוראות בשפה אחת לאוסף הוראות בשפה אחרת כל פעם מחדש) אך מאיץ בהרבה את תהליך הפיתוח מכיוון שאין צורך בשלב ההידור לפני שמריצים את הקוד. בהכללה נוכל להגיד ששימוש בשפה דינאמית מאיץ את תהליך הפיתוח על חשבון זמן הרצת הקוד בעוד ששימוש בשפה מהודרת מאיץ את זמן הרצת הקוד על חשבון זמן הפיתוח, ולכן ברוב המקרים שפות דינאמיות הן בחירה טבעית לפיתוח יישומים אינטרנטיים בהם עלויות פיתוח נמוכות חשובות יותר מזמני הרצת קוד נמוכים.

באתרים בעלי נפחי תעבורה גבוהים נהוג להשתמש במנגנוני ייעול שונים כמו cache והידור קוד חלקי על-מנת להוריד עומס מהשרתים ולייעל את זמני הרצת הקוד המניע את האתר, אולם בפייסבוק הגיעו לנקודה בה השימוש במנגנונים אלו אינו מספיק, הן בשל נפחי התעבורה הגבוהים במיוחד והן בשל העובדה שרוב העמודים הנצפים בפייסבוק ייחודיים עבור כל משתמש, מה שמונע שימוש יעיל במנגנוני cache. הפיתרון המתבקש במקרה זה הוא להמיר חלקים הקוד המקור של האתר לשפה מהודרת, כמו ++C ובכך לייעל בהרבה את זמן הרצתם ולהוריד עומס משרתי האתר, אך לפיתרון זה חיסרון משמעותי מכיוון שהוא מצריך מעבר לשימוש בשפת תכנות אחרת ולכן גיוס עובדים או הכשרה מקצועית ועלויות פיתוח ותחזוק קוד נוספות.

פייסבוק מצאו דרך מקורית “לרקוד בשתי החתונות” – במקום לכתוב חלק מהקוד האתר שלהם ב ++C הם כתבו תוכנה שיודעת לקחת קוד PHP, לתרגמו לקוד ++C ולהדרו לשפת מכונה. הכירו בבקשה את היפ-הופ.

‎בשל הדמיון בתחביר של PHP ו ++C ובשל העובדה שרוב הקוד ביישום נתון הוא למעשה אוסף של לולאות, תנאים ופונקציות, ניתן, בקלות יחסית, לתרגם את התחביר הדינאמי של PHP לתחביר הסטטי של ++C, ובכך להרוויח שיפור ביצועים משמעותי, תוך הקרבה מועטה של תמיכה בחלק מהפונקציונליות של שפה דינאמית (כמו שימוש ב eval) לה אין מקבילה סטטית הולמת (המונחים דינאמי וסטטי מתייחסים לאופן קביעת סוגי משתנים בקוד – בעת הרצה או לפני הרצה, שהוא אחד ההבדלים היסודיים בין שפות דינאמיות לשפות מהודרות).

‎אם נעצור לרגע ונחשוב על כך הרי שנודה כולנו שהרעיון גאוני בפשטותו – המפתחים של פייסבוק יכולים להמשיך לכתוב ב PHP את הקוד של האתר, אך תודות להיפ-הופ, הקוד עובר תהליך תרגום ל ++C והידור לשפת מכונה ורץ על השרתים בצורה מיטבית וטבעית ללא מגבלות הביצועים הנ”ל של שפה דינאמית. אכן צדקו חכמנו כשאמרו שהצורך הוא אבי ההמצאה.

‎כיאה לעשור השני של העת החברתית, פייסבוק הודיעו שהם ישחררו את קוד המקור של היפ-הופ כך שיוכלו מתכנתי PHP באשר הם להנות מפרי עמלם של הראשונים ולייעל את יישומיהם המקוונים פי כמה וכמה מונים. ובנימה אישית אוסיף שלדעתי החידוש המהותי ביותר בהיפ-הופ הוא שכעת (אולי) יש שוב סיבה לבחור ב PHP כשפה ראויה לבנות את האתר הבא שלכם, כמובן בהנחה שאתם צופים תעבורה של 400 מיליון משתמשים בחודש.

‎עוד מידע על היפ-הופ ניתן למצוא בבלוג המפתחים של פייסבוק.

Avatar

זהר ארד

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

הגב

11 תגובות על "פייסבוק מאיצים את PHP"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
שגיא אישה
Guest

אחלה ידיעה, אם כי הצורך באמת נוגע בעיקר באתרים בעלי מאסה עצומה של גולשים (350 מיליון משתמשים בפייסבוק) וכיו”ב.

יובל
Guest

באמת קראתי כמה מאמרים בחודש האחרון על כתיבת תוכנת שרת מראש ב-C++ על מנת שתרוץ מהר יותר. אבל כמו שנאמר, להעביר את קוד הPHP לC++ הוא גאוני בפשטותו

מבחינתי (מתכנת C++), זה כייף לראות שהכישורים שלי יכולים לשמש גם ב-WEB, כי ת’כלס, למה לא לכתוב ישר קוד שרת ב-C++ ולגשת אליו כאל command line?

astupidog
Guest

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

roadsend וphc בעצם עושים כמעט אותה פעולה – מקמפלים קוד php לקוד c ומשם לקוד מכונה.

שי
Guest

זה הלינק לבלוג המפתחים
http://developers.facebook.com/news.php?blog=1&story=358

זהר ארד
Guest

הכוונה ב”רעיון המקורי” היתה לגישה שפייסבוק אימצה להמרה של PHP ל ++C ומשם להידור הקוד.

אינני מכיר את יכולותיהם של Roadsend ו PHC לעומק אבל לפחות לגבי Roadsend ההבדל הוא ש Roadsend למעשה מימוש של PHP כלומר הוא נפרד מפרוייקט PHP (למרות שלפי הכתוב הוא שומר את תחביר זהה(.

אהבתי של גישתם של פייסבוק לפתרון הבעיה בכך שהם בחרו להשאר עם הטכנולוגיה הקיימת שלהם ופשוט לגשר על הפער עם ++C בצורה הטובה ביותר שהם מצאו.

הקיוסקאי
Guest

לא יודע,
נשמע לי כמו להגיע מתל אביב לרעננה דרך רבת עמון…

אתם רוצים ביצועים ב++C? תכתבו מראש ב++C..

אולי לא הבנתי פה משהו – אשמח להבהרות.

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

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

יש משהו כזה בסביבה?

אשמח לתגובות :)

משה קפלן
Guest

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

משה

רמי
Guest

נשמע רעיון גאוני. השאלה היא האם ZEND יאמצו את הפתרון שלהם בליבה.

astupidog
Guest

hip hop כמו roadsend שניהם נפרדים מפרויקט php – הם מבצעים ‘קומפילציה’ של php לשפה אחרת. שניהם תואמים לשפת php אבל הם לא משתמשים במהדר של php.

ההבדל היחד בינהם הוא שroadsend עובר דרך שפת c וhiphop דרך שפת c++

גיל ידין
Guest

מדהים…אבל לא הבנתי האם זה היה קשור לצ”אט או לא.
כלומר – מי שלא משתמש בצ’אט גם היה חשוף לפירצה?
האם כדי לפרוץ היה צריך לפצוח איתך בצ’אט קודם?
האם הפירצה הזאת הייתה קיימת מאז ומעולם ורק עכשיו עלו עליה??

שחר
Guest

אני חושב אין ממש אפשרות להריץ אתר אשר נבנה ב #C על גבי שרת לינוקסי מכיוון שדרוש רכיב השרת של מיקרוסופט בשביל זה. להריץ מונו ייתן רק את שכבת ה .NET על גבי לינוקס מה שלדעתי (ואני לא סגור על זה ב100%) לא ייתן את מבוקשך.

wpDiscuz

תגיות לכתבה: