השאירו פרטים ואנו נחזור בהקדם!

שפת C

לעיתים קרובות מהנדסים / מפתחים שואלים אותי  – "בשביל מה לי ללמוד שפת C כיום בעידן של C++ וJava?" אני מקבל הערות כגון: "שפת C היא שפת תכנות ישנה, כבר לא משתמשים בה, שפת C היא Obsolete" וכדומה.

בכתבה זו אתייחס בקצרה לנושאים הבאים:

  • האם גם כיום בעידן של שפות עיליות אשר תומכות בפיתוח ׁ( OOP ( Object Oriented Programmingׁ ׁכגון C++ או C# .Net קיים עדיין שימוש בשפת C?
  • לאילו מטרות משתמשים בשפה זו?
  • האם כדאי ללמוד שפת c?

אז בשביל מה באמת יש צורך בשפת C?

אז תחילה קצת שיעור בהיסטוריה, שפת 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.

קהל היעד לשפת C

היות ושפה זאת מיועדת כיום במיוחד ל Low Level Programming, אני ממליץ להלן:

  • מהנדסים / הנדסאים בתחום החומרה והאלקטרוניקה – בראש ובראשונה אשר יצטרכו בנוסף לתכנון ובניית הכרטיס גם להשמיש אותו, הכוונה ל Boot loading Booting Development Testing וכו'.
  • מהנדסים / הנדסאים בתחום התוכנה לרבות בוגרים במדעי מחשב – אשר מיועדים לעבוד במערכות משובצות מחשב (Embedded Systems) עם או בלי מערכות הפעלה.
  • אקדמאים מתחומי ההנדסה המעוניינים לבצע הסבה מקצועית.
  • מנהלי / מפתחי בדיקות – פיתוח כלים אוטומטיים לבדיקות מערכות Embedded .
 

נשמח לייעץ, ללוות ולענות על כל השאלות

© כל הזכויות שמורות Real Time Group