פרדיגמת תכנות

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

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

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

דוגמה לפרדיגמת תכנות נפוצה היא תכנות מונחה-עצמים.

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

הפרדיגמה והשפות
כשם שקבוצות שונות בתחום הנדסת התוכנה מעודדות מתודולוגיות פיתוח שונות, שפות תכנות שונות מעודדות פרדיגמות תכנות שונות. יש שפות המעוצבות לתמוך בפרדיגמה מסוימת אחת, כגון Smalltalk ו-Java התומכות בתכנות מונחה-עצמים, לעומת Haskell התומכת בתכנות פונקציונלי. אחרות, כגון C++‎ ופייתון, תומכות בפרדיגמות מרובות, ומאפשרות למתכנת לבחור ביניהן או לשלב מספר פרדיגמות לפי הצורך.

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

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

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

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

תכנות