כמה דעות לא מקובלות על שפות תכנות

כמה דעות לא מקובלות על שפות תכנות

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

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

עד היום אני חושב ששפת C היא אחת הפשוטות בעולם, עם כל זה שלמדתי עוד לא מעט שפות.

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

אז באו כמה מתכנתים שלא אהבו את זה שעולם התכנות מתקדם ממש מהר.

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

הם שווקו אותה כשפה קלה מאוד לתכנות.

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

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

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

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

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

 

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

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

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

 

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

לחץ כאן לתגובה
פיתוח מערכת: אורי קוטנר