שפת תכנות

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

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

מאפייני שפות התכנות

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

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

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

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

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

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

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