שפת תכנות היא אוסף של חוקים תחביריים (Syntax) שנועדו לאפשר להגדיר למחשב באופן מפורט את הפעולות שעליו לבצע במצבים שונים (כלומר על סוגי קלט שונים).
שפת התכנות במהותה נועדה לגשר בין המחשב, ששפתו, הקרויה שפת מכונה, מורכבת מרצפי סיביות - ספרות בינאריות (0/1 - Bits), לבין המתכנת שמעדיף לתקשר בצורה מילולית יותר, כמו גם לאפשר תקשורת טובה בין המתכנתים. על מנת להקל על המלאכה, שפת התכנות מציעה מבחר כלים המשמשים להפשטה, ארגון וביאור הקוד, כגון מבני בקרה (לולאות, תנאים, מתגים וכיוצא בזאת), פרוצדורות, עצמים, וכד'.
לשפת תכנות, בדומה לשפה טבעית, יש אוצר מילים משלה וכללי תחביר משלה, אך המרחק בין השתיים רב. אוצר המילים של שפת תכנות מצומצם ביותר, ואינו עולה על מאות אחדות של מילים. כללי התחביר נוקשים, וחריגה מהם מתפרשת כשגיאה.
שפת התכנות עצמה אינה מובנת ישירות על ידי המעבד, ולכן יש צורך בכלי שיתווך בין התוכנית הכתובה בשפת תכנות ובין המעבד, על מנת שיהיה ניתן להפעיל את התוכנה. הכלים המשמשים למטרה זו נחלקים לשתי קבוצות:
- מהדרים (Compilers) שהקלט להם הוא תוכנית בשפת תכנות, והפלט הוא תרגומה של התוכנית לשפת מכונה, שמוכנה לביצוע על-ידי המעבד. לדוגמא, C, Pascal וכו'.
- מפענחים (Interpreters), הקוראים את התוכנית בשפת תכנות, ומבצעים באופן מיידי את הכתוב בה. לדוגמא, Prolog, Scheme/LISP וכו'.
שפות תכנות אמנם נוצרו על-מנת להגדיר פעולות של מחשבים, אבל הן יכולות לשמש גם על-מנת לתאר אלגוריתמים (בדומה לתרשימי זרימה) או מבני נתונים (Data structure) מורכבים. מסיבה זו מתכנתים שואפים לשמור על הקוד שלהם "קריא".
בפרק זה נסקור עקרונות המבדילים בין שפות התכנות.
חשוב לקרוא פרק זה כרקע לעולם בו אנו חיים כדי להבין שאנו מכסים רק טפח קטן ממנו.