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

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

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

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

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

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

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

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

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net