לעיתים קרובות מהנדסים / מפתחים שואלים אותי – "בשביל מה לי ללמוד שפת C כיום בעידן של C++ וJava?" אני מקבל הערות כגון: "שפת C היא שפת תכנות ישנה, כבר לא משתמשים בה, שפת C היא Obsolete" וכדומה.
בכתבה זו אתייחס בקצרה לנושאים הבאים:
אז תחילה קצת שיעור בהיסטוריה, שפת C הומצאה לקראת סוף שנות ה 60 (69 - 73) מתוך שפה שנקראת דאז שפת B בחברת Labs Bell ע"י Dennis Ritchie כחלק אינטגרלי מפיתוח מערכת ההפעלה UNIX.
שפת C נתמכת כיום ע"י כלל מערכות ההפעלה ל PC וכן מערכות Embedded כגון Windows Linux ועוד.
השימוש העיקרי בשפת C כיום מתבטא בפיתוח ובדיקות מערכות משובצות מחשב (Embedded Systems), בין אם הן מערכות Embedded המבוססות מערכת הפעלה כגון RTOS Embedded Linux Vxworks Psos ThreadX או פיתוח ללא מערכות הפעלה – Bare Board BareMetal הכוונה לפיתוח ישירות על החומרה .
הפיתוח בשפת C מאוד יעיל, מאפשר גישה ישירה לחומרה (CPU Registersׁׂ), דוגמא טובה לכך הינה מערכת הפעלה Linux, כידוע הגרעין של מערכת הפעלה הנ"ל ה – Linux Kernel מבוסס כולו על פיתוח בשפת C, כמובן שזה כולל את כל ה – Networking Stack ,Kernel Device Drivers ,File Systems ועוד.
יתרון נוסף של שפת C מתבטא במהירות שלה, לאחר שמקמפלים קובץ מקור בשפת C נוצר קובץ Object הכולל סדרת פקודות מעבד (CPU opcodes) המותאמות למעבד המיועד ומאפשרות גישה ישירה לכל חלקי החומרה.
בשנים האחרונות נכנס C++ כמתחרה לא קטן ל C, האמת שכל קוד בשפת C נתמך ע"י מהדרים של C++, שפת ++C בעצם מבוססת על שפת C. בשנים האחרונות חברות הייטק מסודרות מעדיפות להשתמש ב ++C לצורך אפליקציות High-level ויוצרות שכבת HAL (Hardware Abstraction Layer) שמתחתיו הגישה לחומרה (Device Drivers) ממומשים בשפת C, מניסיוני רוב הסטארטאפים, מפאת הזמן, עדיין מעדיפים Quick and dirty.
היות ושפה זאת מיועדת כיום במיוחד ל Low Level Programming, אני ממליץ להלן:
נשמח לייעץ, ללוות ולענות על כל השאלות