תוכנה או תוכנת מחשב (באנגלית: Software) היא בהגדרה כללית שורת קוד אחת או יותר במסמך השמורה בזיכרון מידע במערכת מחשב ומורה למחשב איך לעבוד (איך לעבד מידע) בהקשר נתון בעת ריצתה.
באופן כללי, בעת ריצת תוכנה גם ניתן לשלוט על עבודתה או "לכוון" את עבודתה בעזרת פקודות בממשק משתמש.
המונח תוכנה מגיע מן השורש "תוכן".
סוגי תוכנות
- מערכת הפעלה
- מחשבון
- תוכנת עריכת טקסט: עורך טקסט פשוט, עורך קוד, עורך טקסט עשיר וכדומה
- דפדפן ווב (Web Browser): תוכנה דרכה ניתן לגלוש באינטנרט
- תוכנת שרת: תוכנה אשר "נותנת שירות" שהינו תעבורת מידע בין מחשבים
- תוכנת קליינט: תוכנה דרכה ניתן לתקשר עם תוכנת שרת במחשב מרוחק (המחובר עם המחשב שלנו ברשת, כמו רשת האינטרנט)
- משחק מחשב
- סקריפט: אני מגדיר "סקריפט" כתוכנה קצרה, המורכבת לרוב (כך מניסיוני) מקוד מקור של לא יותר מ-100 שורות לקובץ (חלק מהשורות יכולות להיות ריקות אך הספירה נעצרת ב-100) וכוללת לרוב בין קובץ בודד לבין עשרה קבצים.
כתיבת סקריפטים מכונה "סקריפטינג".
קיימות שפות מחשב ייעודיות לכתיבת סקריפטים (סקריפטינג) כגון שפת Bash או שפת Powershell וכן גם שפת JavaScript.
באופן כללי, מטרת סקריפטים היא אוטומציה לתהליך שאחרת היה יכול להתבצע פעם אחר פעם באופן "ידני", כמו למשל התקנת תוכנות והתאמה (קונפיגורציה) של תוכנות. - ועוד מגוון תוכנות מוגדרות
הרצת תוכנה
בעת הרצת קוד תוכנה מצד מחשב, יפעל המחשב לפי קוד זה כך שניתן יהיה להשתמש בתוכנה שהוא מהווה ולקבל דרכה פלט;
פלט יכול להיות תוכן על מסך (במקרה של מערכת מחשב המציגה פלט על מסך) ו\או פעולה מרחבית (מכנית) מסוימת כמו במקרה של רובוט.
בכל הנוגע לפלט על מסך, אפשר שפלט זה יכלול שדה קלט אחד או יותר שיאפשרו לנו להשיג פלט נוסף מן התוכנה לפי רצוננו ולפי מגבלות התוכנה עצמה.
קלט שהזנו למערכת למטרת פיתוח תוכנה, כתוב בשפת מחשב אחת לפחות.
תוכן שהוזן כקלט בעת פיתוח תוכנה מהווה קוד מקור (או קימפול שלו) שנשמר בזיכרון מידע במערכת מחשב ושנריץ הוא התוכן שמבסס את הפלט (שימוש בתוכנה); על כן עם הרצת מסמך אחד או יותר שמכיל קוד תוכנה כזה, נקבל פלט בצורות שונות, כגון:
- מידע (ללא ממשק משתמש או עם ממשק משתמש דוגמת שדות קלט) או לחלופין סביבת מציאות מדומה על מסך המחשב
- פעולה של מערכת מחשב שתלויה בתוכנה; למשל, פעולה שמבצע רובוט לפי תוכנה וגורמת לשינוי במרחב בהתאם לחומרה אקסוגנית שלו; כלומר, חומרה שאיננה חלק בסיסי ממערכת המחשב שלו
חומרת מערכת מחשב עשויה לכלול בתוכה תוכנה קושחתית (קושחה) עיקרית הצרובה בה (כמו BIOS) וכן תוכנה קושחתית משנית המבוססת על תוכנה זו (כמו מערכת הפעלה שהיא קושחה, אם כי בדרך כלל מערכת הפעלה איננה קושחה ויש למשתמש חופש לבחור איזו מערכת הפעלה להתקין).
חבילת תוכנה
חבילת תכונה או ערימת תוכנה או סטאק (באנגלית, לרוב software bundle או software stack) אני מגדיר כקבוצה של שתי תוכנות או יותר ששילובן יחדיו או האינטראקציה ביניהן גורם למימוש של רעיון מסוים בהקשר מסוים, ככלל במטרה לפתור בעיה מסוימת (דרך תוכנה).
דוגמה בולטת לחבילת תוכנה היא סביבת שרתים המורכבת מחבילת תוכנות שרת; מערכת הפעלה תואמת, שרת ווב, שרת בסיס נתונים, שרת שפת התנהגות (שהוא תוכנת שפת ההתנהגות בעצמה ודוגמה תהיה PHP), שרת אימייל וכדומה. דוגמה נוספת היא חבילת תוכנות דרייברים במערכת הפעלה אשר מאפשרים הפעלה ושימוש נאות בחומרה דרך מערכת ההפעלה של המחשב, למשל כדי שנוכל להריץ בו תוכנה מסוימת ובזה גם משחק מחשב מסוים שאלמלא דרייברים אלה לא יכלנו להריץ או לא להריץ ביעילות (מערכת ההפעלה לא הייתה מזהה או לא הייתה מזהה היטב את החומרה הדרושה להרצה תקינה של המשחק).
הערות כלליות
- ריצת תוכנה פירושו להורות למחשב לפעול לפיה או לחלופין לעבד אותה.