Node.js לעומת PHP: מאבק אפי על שיתוף המוחות של המפתחים

זו עלילה הוליוודית קלאסית: הקרב בין שני חברים ותיקים שהלכו זה לזה. לעתים קרובות החיכוך מתחיל כאשר חבר אחד מעורר עניין במה שהיה תמיד התחום הבלתי נאמר של חבר אחר. בגרסת שפת התכנות של הסרט הזה, ההקדמה של Node.js היא שהופכת את פליק החברים למשחק טינה: PHP ו- JavaScript.

בימים ההם השותפות הייתה פשוטה. JavaScript טיפל בפרטים הקטנים בדפדפן, בעוד ש- PHP ניהלה את כל המשימות בצד השרת בין יציאה 80 ל- MySQL. זה היה איחוד משמח שממשיך לתמוך בחלקים מכריעים רבים באינטרנט. בין וורדפרס, דרופל ופייסבוק, אנשים בקושי יכולים ללכת דקה באינטרנט בלי להיתקל ב- PHP.

ואז גילה איזה ילד חכם שהוא יכול להריץ JavaScript על השרת. לפתע, לא היה צורך להשתמש ב- PHP כדי לבנות את הדור הבא של ערימות השרתים. שפה אחת הייתה כל מה שנדרש כדי לבנות את Node.js ואת המסגרות הפועלות על הלקוח. "JavaScript בכל מקום" הפך למנטרה עבור חלקם.

מאז אותה גילוי, JavaScript התפוצץ. מפתחי Node.js יכולים כעת לבחור בין אוסף הולך ומתרחב של מסגרות ופיגומים מצוינים: React, Vue, Express, Angular, Meteor ועוד. הרשימה ארוכה והבעיה הגדולה ביותר היא בחירה בין אפשרויות מצוינות.

יש המתבוננים בתנופה של Node.js כהוכחה לכך ש- JavaScript מנצח באופן מכריע, ויש הרבה נתונים גולמיים כדי לחזק את ההשקפה הזו. GitHub מדווח כי JavaScript היא השפה הפופולרית ביותר באוסף המאגרים שלה, וגם בן הדוד הנשיק של JavaScript, TypeScript, גדל במהירות. רבים מהפרויקטים המגניבים ביותר כתובים ב- JavaScript ורבים מההאשטגים הפופולריים ביותר מתייחסים אליו. בינתיים, PHP חלפה מהמקום השלישי למקום הרביעי בדירוג זה והיא כנראה החליקה עוד יותר בספירת ההודעות לעיתונות, הפצת מוצרים ורגעים אחרים המשווקים בכבדות.

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

המהדר המהיר והמתוחכם של PHP מספק תשובות מהר מתמיד בזכות אותן טכניקות חכמות שהניעו את מהפכת Node.js. כעת PHP 7.2 ו- HHVM מציעים רבים מאותם אופטימיזציות חכמות תוך כדי טיסה שהביאו V8 ל- Chrome ו- Node.js. לא רק זאת, אלא ל- HHVM יש האק, ניב PHP חכם המציע תמיכה מלאה בתכונות תכנות מתוחכמות כגון למבדות, גנריות ואוספים. אז אם אתה זקוק לתכונות אלה, אינך צריך לחפש ערימה מלאה יותר.

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

איפה PHP מנצח: ערבוב קוד עם תוכן

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

איפה צומת מנצח: הפרדת חששות

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

איפה PHP מנצח: בסיס קוד עמוק

האינטרנט מלא בקוד PHP. הפלטפורמות הפופולריות ביותר לבניית אתרים (WordPress, Drupal, Joomla) כתובות ב- PHP. לא רק הפלטפורמות קוד פתוח, אלא גם רוב התוספים שלהם. יש קוד PHP בכל מקום, והוא ממתין לך להוריד, לשנות ולהשתמש לצרכיך.

איפה צומת זוכה: תכונות מודרניות יותר

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

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

ולמרות ש- JavaScript מכיל הרבה ייחודיות קטנטנות שמשגעות את חלקם, לרוב זו שפה מודרנית שמציעה תחביר מודרני וכמה תכונות שימושיות כמו סגירות. אתה יכול להגדיר מחדש ולהרחיב אותו בקלות, מה שמאפשר ספריות חזקות כמו jQuery. אתה יכול להעביר פונקציות כמו אובייקטים. למה להגביל את עצמך?

איפה PHP זוכה: פשטות (סוג של)

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

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

איפה צומת זוכה: עשרות אפשרויות שפה

אם משתמשי PHP שמחים לקבל גישה להאק, עליהם לשקול לעבור לעולם ה- Node.js מכיוון שניתן לחבר בין שפות עיקריות רבות להפעלה ב- JavaScript. ישנן אפשרויות ידועות כמו Java, C # או Lisp ועשרות אחרות כמו Scala, OCaml ו- Haskell. יש אפילו מתנות לאוהבי הנוסטלגיה של BASIC או פסקל. רשימת השפות המתאספות לג'אווה סקריפט מאת ג'רמי אשכנאס היא מקיפה למדי. בנוסף בני דודים של JavaScript כמו TypeScript ו- CoffeeScript מציעים גישות מעט שונות ומשופרות לאותו המשחק.

איפה PHP זוכה: אין צורך באפליקציית לקוח

כל הדיבורים על שימוש באותה שפה בדפדפן ובשרת הם נחמדים, אבל מה אם אינך צריך להשתמש בשפה כלשהי בדפדפן? מה אם אתה שולח את הנתונים בצורה של HTML? מה אם אתה בונה אתר ספרטי וסטטי כדי לספק את מה שנדרש ללא בלינג האינטראקטיבי? הדפדפן מקפיץ אותו, ואין כאבי ראש או תקלות הנגרמות על ידי אישור שגוי של שרשורי JavaScript המנסים ליצור דף בדפדפן משני עשרות שיחות שירות אינטרנט. HTML טהור עובד לעתים קרובות יותר מכל דבר אחר, ו- PHP מותאם ליצור אותו. למה לטרוח עם JavaScript בדפדפן? בנה הכל בשרת והימנע מעומס יתר על הדפדפן הקטן בטלפון הקטן.

איפה צומת מנצח: שיחות שירות דקות יותר משיחות PHP בשומן HTML

בעוד שאפליקציות אינטרנט HTML5 משוגעות AJAX יכולות להכיל יותר מדי חלקים נעים, אבל הן מגניבות ויעילות מאוד. ברגע שקוד ה- JavaScript נמצא במטמון הדפדפן, הדבר היחיד שעובר לאורך החוטים הוא הנתונים החדשים. אין המון סימון HTML, ואין נסיעות חוזרות להורדת הדף כולו. רק הנתונים השתנו. אם אתה מוכן להשקיע זמן כדי ליצור אפליקציית אינטרנט חלקה בצד הדפדפן, יש תמורה גדולה. Node.js מותאם במיוחד כדי לספק את הנתונים ורק את הנתונים באמצעות שירותי אינטרנט. אם האפליקציה שלך מורכבת ועשירה בנתונים, היא בסיס טוב למסירה יעילה.

איפה PHP מנצח: SQL

PHP נבנה כדי להתקיים יחד עם MySQL וריאציותיו הרבות, כמו MariaDB. אם MySQL לא בדיוק מתאים, ישנם מאגרי SQL נהדרים אחרים של אורקל ומיקרוסופט. הקוד שלך יכול לעבור בכמה שינויים בשאילתות שלך. עולם ה- SQL העצום אינו מסתיים בגבולותיו. חלק מהקודים היציבים והמפותחים ביותר יתממשקו עם מסד נתונים של SQL, כלומר כל הכוח הזה יכול גם להיות משולב בקלות בפרויקט PHP. זו אולי לא משפחה מושלמת ומאושרת, אבל זו משפחה גדולה. לא זו בלבד, אלא שלעיתים מתחלף עולם מסדי הנתונים ככל שמפתחים מוצאים דרכים להוסיף יותר מודיעין למאגר, כך שלא תצטרכו לעבוד קשה.

איפה Node.js זוכה: JSON

אם אתה חייב לקבל גישה ל- SQL, ל- Node.js יש ספריות לעשות זאת. עם זאת, Node.js מדבר גם על JSON, לשון הפרנקה לאינטראקציה עם רבים ממאגרי המידע האחרונים של NoSQL. זה לא אומר שאתה לא יכול להשיג ספריות JSON עבור מחסנית ה- PHP שלך, אבל יש משהו נוזל בפשטות העבודה עם JSON בעת שימוש ב- JavaScript. זהו תחביר אחד מדפדפן לשרת אינטרנט למסד נתונים. המעי הגס והסוגריים המתולתלים עובדים באותה צורה בכל מקום. זה לבד יחסוך ממך שעות של תסכול.

איפה PHP מנצח: מהירות קידוד

עבור רוב המפתחים, כתיבת PHP לאפליקציות אינטרנט מרגישה מהירה יותר: ללא מהדרים, ללא פריסה, ללא קבצי JAR או מעבדים מקדימים - פשוט העורך המועדף עליך וכמה קבצי PHP בספריה. הקילומטראז 'שלך ישתנה, אך בכל מה שקשור לדפוק פרויקט במהירות, PHP הוא כלי טוב לשימוש.

איפה Node.js מנצח: מהירות היישום

כתיבת קוד JavaScript מעט קשה יותר כאשר אתה סופר סוגריים וסוגריים מתולתלים, אך כאשר זה נעשה, קוד Node.js שלך יכול לעוף. מנגנון ההתקשרות הוא מבריק מכיוון שהוא חוסך ממך ללהטט בחוטים. הליבה בנויה היטב ונועדה לעשות את כל זה בשבילך. האם זה לא מה שכולם רוצים?

איפה PHP מנצח: תחרות

הקרב על ליבם ומוחם של מפתחי PHP עדיין מתפתח. צוות HHVM וצוות Zend עובדים קשה כדי לספק קוד מהיר לכולם. אמות מידה עצמאיות מופיעות, וכולם דוחפים את בסיסי הקוד לקצה. זה רק אומר ביצועים טובים יותר.

איפה Node.js מנצח: סולידריות

האם אתה באמת רוצה שני בסיסי קוד שונים? בטח, תחרות עוזרת, אבל הפיצול מגיע בקרוב. מה קורה כשהקוד שלך פועל רק על אחד מהשניים? התחרות לא עושה טוב אם אתה צריך להשקיע שבועות או חודשים בשכתוב הקוד שלך. בעוד ש- Node.js חווה התפצלות משלו לפני כמה שנים, עם השקת ה- io.js, היקום של Node.js התאחד מאז, והעניק לו סוג של סולידריות שפתית שמפתחי PHP עשויים להשתוקק אליו בקרוב.

איפה PHP מנצח: אפליקציות בסיסיות

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

את התגובה החוזרת נגד אי שפיות הרוקוקו ניתן למצוא בצוותים הבונים מחוללי אתרים סטטיים (463 בכתיבה זו) ובדפי אינטרנט מוסרים בפורמט AMP. PHP הוא בחירה טבעית עבור כל צוות שרוצה לרכז את המודיעין בשרת כדי שהלקוח לא יהיה עמוס מדי.

איפה מנצח Node.js: עושר

לודוויג מיס ואן דר רוה, אדריכל הבניינים, אמר פעם "פחות זה יותר." רוברט ונטורי, אדריכל אחר, הגיע והשיב: "פחות זה משעמם." לטלפונים החכמים יש יותר כוח מאשר בחדר מלא במחשבי Cray. בשולחן העבודה יש ​​כרטיסי מסך עם מספר מאווררים כדי לשמור על קור רוח במהלך כל העיבוד. מדוע עלינו לפשט את הקוד שלנו ולחיות כמו קורבן מתקופת הדיכאון ברומן של שטיינבק? תחיה את זה. אתרים גדולים וחלקלקים מלאי קוד JavaScript מושכים את העין, דרמטיים ובעיקר מהנים. בטוח שזה סוג של מגונה לבזבז רוחב פס רב על כמה פיסות נתונים, אך רוחב הפס מעולם לא היה זול יותר. תחיה קצת!

איפה שניהם מנצחים: ללא ראש

המילה "ללא ראש" מתייחסת לקוד ה- PHP הפועל בשרת. לאחרונה כמה מיישומי ה- PHP המובילים כמו דרופל הציצו על פני המעבר ונפלאו נדהמים מממשקי המשתמש המתוחכמים שנבנו על ידי מסגרות JavaScript כמו React, Angular או Vue. במקום לנסות להתחרות בהם, הם מוותרים על השליטה בלקוח ומתרכזים במשימה טובה עם ה- back-end בשרת.

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

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

איפה שניהם מנצחים: מיקרו-שירותים וללא שרתים

המיקרו-שירות העולה או הפרדיגמות ללא שרתים מציעות דרך לקוד JavaScript ו- PHP לחיות יחד עם השרת ולהסתדר. שני הפתרונות מפצלים את העבודה לעשרות שירותים או פונקציות קטנות יותר ואלה יכולים לפעול באופן עצמאי ולהישאר בנתיבים שלהם. חלקים מסוימים, בדרך כלל החלקים הוותיקים והיציבים ביותר של האפליקציה, יכולים להריץ PHP. החלקים האחרים, לרוב החלקים החדשים יותר, ייכתבו ב- Node.js. השפה של POSTאו GETיכולה להיות הלשון פרנקה שמאחדת את כולם.