ב-Online
 
 
 
 
 
 
 
לפרק את הבייט 
איזו שפת תכנות הכי טובה? 
 
  צילום: מתוך ``נפוליאון דיינמייט``    
לפרק את הבייט |
 

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

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

לדייק בשאלה

 
יש שתי שאלות דומות שקשורות לשאלה הנ"ל, אך בהחלט לא זהות וכדאי להתייחס אליהן בנפרד. ראשית, מהי שפת התכנות הראשונה שכדאי ללמוד? אם מדובר על גילאים צעירים מאד, רצוי לא לייאש את הילדים ולהתחיל במשהו פשוט יחסית שנותן תוצאות מהר, ורצוי שיהיה גם ויזואלי מאד (זוכרים את הצב של LOGO?). אבל אם אתם קוראים את הכתבה הזו סביר להניח שאתם כבר בגיל המתאים למשהו רציני יותר. כאן יש כבר שתי גישות.
 
 
הראשונה טוענת שאין טעם להסתבך, וכדאי ללמוד את השפות הכי עדכניות, שלמדו מהשגיאות של קודמותיהן והן כמעט תמיד פשוטות וברורות מהן. הדוגמה הנפוצה מתייחסת לתהליך שנקרא "איסוף זבל" (Garbage Collection): במהלך התוכנית אנחנו מקצים נתחים מזיכרון המחשב למשתנים ולמידע, ובשפות "מהדור הקודם" היינו צריכים גם לדאוג לפנות אותם בעצמנו בתום השימוש. בשפות חדשות יותר, כמו Java או C#, יש מנגנונים שעוקבים אחר הקצאות הזיכרון ומשחררים אותן אוטומטית בתום השימוש. סביר להניח שגם שפות עתידיות לא יחזרו לשיטות הישנות והמסורבלות, אז בשביל מה ללמוד אותן? הגישה הנגדית טוענת את ההיפך הגמור: שהצורך לבצע דברים ידנית מלמד שיטות עבודה נכונות, תשומת לב לפרטים וכל שאר הכישורים ההכרחיים לתכנות איכותי.

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

השיקול התעסוקתי

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

בחזרה לשאלה המקורית

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

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


 
רוצים לפתח למחשבי על? לכו ללמוד פורטראן. Cray Jaguar
 רוצים לפתח למחשבי על? לכו ללמוד פורטראן. Cray Jaguar 
 

הקשר הספיידרמני

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

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


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

שפת Delphi, אם לא ניטפל לקטנות, מקבילה מבחינת הביצועים ל-++C. הקוד שלה קריא ומסודר יותר ובמובנים רבים היא גם שומרת על המתכנת מפני הטעויות של עצמו. אך היא נדירה יחסית בשוק, וקניינית: מי שרוצה לתכנת ב-Delphi מתחייב לחברה אחת בלבד שמפיקה את סביבות הפיתוח הרשמיות, שמתאימות בעיקר ל-Windows. את הפרויקט החינמי המקביל שמנסה לשמור על הקצב, Lazarus בשילוב עם Free Pascal, עוד פחות אנשים מכירים. אפרופו, Skype נכתבה ב-Delphi.
 
צעירה, תזזיתית ומגניבה. Python
 צעירה, תזזיתית ומגניבה. Python 
 צילום: www.wearpython.com 
 
שפות אחרות וצעירות, כגון Java או Python, מותאמות יותר לעולם התזזיתי של התכנות המודרני, ומאפשרות יותר גמישות וקלות בעבודה עם אובייקטים מורכבים. שפת Python במיוחד צוברת קהל מעריצים נלהב בזכות הפשטות הבהירה שלה ויכולתה לבצע בקלות פעולות מסוימות, שהיו דורשות במקרה הטוב המון מאמץ בשפות "מסורתיות". אלא שליכולות האלה יש מחיר: השפות האלה איטיות ובזבזניות יותר כשיורדים לרמה הבסיסית של עיבוד נתונים וניהול זיכרון. אם אתם רוצים לכתוב תוכנה לעיבוד כבד של צליל, וידאו או תמונה, או יישום עתיר חישובים אחר, כנראה שאלה לא יהיו השפות שתבחרו.
 

אז מה התשובה?

יש עוד עשרות שפות תכנות שנמצאות בשימוש, לחלקן – כמו Fortran שהזכרנו – יש יכולות מיוחדות שהופכות אותן למתאימות יותר מאחרות ליישומים ספציפיים. אך התשובה לשאלה המקורית הולכת ומתבהרת לנוכח תהליך אחר שמתרחש באיטיות, כמעט מאחורי הקלעים: האחדה של סטנדרטים שמאפשרת שילוב קודים משפות שונות. כבר עכשיו קיימות סביבות פיתוח, שיכולות לנהל קטעי קוד שנכתבו במספר שפות גבוהות שונות ולשלב ביניהם לכדי תוכנה אחת, בצורה ישירה יותר מאשר קובצי DLL ושאר פתרונות ביניים. ככל שמגמה זו תתרחב, ניתן יהיה לנצל את היתרונות של כל שפה בהתאם לתת-המשימה הרלוונטית, ואז התשובה לשאלה "איזו שפת תכנות הכי טובה?" תהיה, בפשטות: "כולן".
 
בשבוע הבא נחפש את שפת התכנות הגרועה ביותר - ולא, זו לא ויז'ואל בייסיק.
 
 
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 
תגובות
הוסף תגובה0 תגובות
הוספת תגובה
מאת
 
נושא
 
תוכן
 
 
 
 
תודה! תגובתך התקבלה.
התגובה תתפרסם בכפוף לתנאי האתר.
 
 
 
 
 

כל הזכויות שמורות 2011 © נענע 10 בע"מ
 
 
 
 
כל הזכויות שמורות © Nana10 בע"מ
Video powered by