המונח "תכנות" מפנה לכאן. אם הכוונה למשמעות אחרת, ראו תכנות (פירושונים).

|  |
| --- |
| 
**עיינו גם בפורטל**

**פורטל התוכנה** הוא שער לערכים הקשורים לעולם התוכנה. הפורטל סוקר את היסטוריית התכנות, התוכנות, המתכנתים, וכיוצא בכך.
 |

תכנות מחשבים
כיתוב - תכנות זה כמו שירה. האם כתיבת תוכניות מחשב היא אמנות, אומנות או הנדסה?
**תִּכְנוּת מחשבים** (לרוב מכונה בקצרה **תִּכְנוּת**, או לעיתים **קִידּוּד**) הוא תהליך הכתיבה, הבדיקה והתחזוקה של קוד המקור של תוכנית מחשב. מלאכת התכנות נעשית בשפת תכנות מתאימה, הנבחרת בהתאם לאופי התוכנית הנכתבת ובהתאם למקובל במסגרת מקום העבודה או הפרויקט שבמסגרתו נכתבת התוכנית. כתיבת קוד המקור מתבססת לרוב על הרחבתו של קוד מקור קיים, אם כי במקרים רבים קוד המקור הנכתב הוא חדש לחלוטין. מטרתו של המתכנת בכתיבה היא יצירת תוכנית מחשב המתנהגת באופן המבוקש. לתהליך התכנות נדרשים ידע ומומחיות בנושאים רבים, לרבות ידע בתחום היישום, אלגוריתמיקה ולוגיקה.

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

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

שלבים נפוצים בפתוח תוכנה
------------------------

תהליך פיתוחה של תוכנית חדשה כולל כמה שלבים:

1. זיהוי הצורך בתוכנית לשם ביצועה של משימה מסוימת.
2. עיצוב התוכנית ובחירת שפת התכנות לכתיבתה.
3. כתיבת התוכנית בשפת התכנות שנבחרה.
4. ניפוי שגיאות: איתור טעויות שנעשו במהלך כתיבת התוכנית, ותיקון טעויות אלה.
5. אינטגרציה: שילוב התוכנית עם יתר התוכניות המרכיבות את מוצר התוכנה שלו נועדה התוכנית.
6. הטמעה: העברת התוכנית למשתמשיה והדרכתם בשימוש בה.

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

סוף חייה של התוכנית הוא בשלב הגריטה בה היא מוצאת משימוש. במקרים רבים נעשה שימוש בחלקים מהתוכנה לשם יצירת תוכנה חדשה. שימוש כזה מכונה לעיתים "קניבליזם".

פרדיגמות לפיתוח תוכנה
---------------------

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

* תכנות מובנה
* תכנות פרוצדורלי
* תכנות פונקציונלי
* תכנות מונחה-אירועים
* תכנות מונחה-עצמים
* תכנות מוכוון היבטים

תוכנית Hello World
------------------

 ערך מורחב – **תוכנית Hello world**  

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

ראו גם
------

* הנדסת תוכנה
* תוכנה - מונחים
* שפת תכנות

קישורים חיצוניים
----------------

| מיזמי קרן ויקימדיה |
| --- |
| ויקימילון ערך מילוני בוויקימילון: **תכנות** |
| ויקיציטוט ציטוטים בוויקיציטוט: **תכנות מחשבים** |
| ויקיספר ספר לימוד בוויקיספר: **תכנות** |
| ויקישיתוף תמונות ומדיה בוויקישיתוף: **תכנות מחשבים** |

* טכניקות תכנות ישנות אליהן לא תתגעגעו, באתר TheMarker‏, 11 במאי 2009
* תכנות מחשבים, דף שער בספרייה הלאומית

הערות שוליים
------------

1. ↑  Paul Graham (2003). Hackers and Painters

| מחזור פיתוח תוכנה |
| --- |
| 

|  |
| --- |
| ניתוח • אפיון • עיצוב • תכנות • תחזוקה |

 |

| תחומים במדעי המחשב |
| --- |
| יסודות מתמטים | לוגיקה מתמטית • תורת הקבוצות • תורת המספרים • תורת הגרפים • תורת הטיפוסים • תורת הקטגוריות • אנליזה נומרית • תורת האינפורמציה |
| תורת החישוביות | תורת האוטומטים • תורת הרקורסיה • תורת הסיבוכיות • מחשוב קוונטי |
| אלגוריתמים ומבנה נתונים | אנליזה של אלגוריתמים • גאומטריה חישובית |
| שפות תכנות ומהדרים | מפרש • פרדיגמת תכנות (תכנות פרוצדורלי • תכנות מונחה עצמים • תכנות פונקציונלי • תכנות לוגי) |
| חישוב מבוזר ועיבוד מקבילי | עיבוד מקבילי • מחשוב סריגי • בקרת מקביליות |
| הנדסת תוכנה | ניתוח מערכות מידע • עיצוב תוכנה • תכנות מחשבים • שיטות פורמליות • בדיקות תוכנה • מתודולוגיית פיתוח תוכנה |
| תקשורת | ניתוב • טופולוגיית רשת • קריפטוגרפיה |
| מסד נתונים | מסד נתונים יחסי • SQL • תנועה • אינדקסים • כריית מידע • CAP theorem |
| בינה מלאכותית | חשיבה אוטומטית • בלשנות חישובית • ראייה ממוחשבת • עיבוד שפה טבעית • בינה חישובית • מערכת מומחה • למידה חישובית • רובוטיקה |
| גרפיקה | הדמיה ממוחשבת • הנפשה ממוחשבת • עיבוד תמונה |
| שפות פורמליות | שפה רגולרית • שפה חסרת הקשר • שפה תלוית הקשר • ההיררכיה של חומסקי |
| שימושים במדע | ביואינפורמטיקה • מדעים קוגניטיביים • כימיה חישובית • פיזיקה חישובית • אנליזה נומרית |

|  |  |
| --- | --- |
| בקרת זהויות עריכת הנתון בוויקינתונים | 
* NLI: 987007538691605171
* BNE: XX526555
* BnF: cb11932648m (data)
* GND: 4076370-5
* LCCN: sh85107310
* NDL: 00569223
* NKC: ph115891

 |