תכנות פונקציונלי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
הערך F# פנה אל האות F, זו שפה תכנות וצריך ליצור לה ערך חדש, קראתי לו בינתיים F_sharp
←‏רקע תאורטי: תיקון טעות הקלדה
תגיות: עריכה ממכשיר נייד עריכה מיישום נייד
שורה 6:
 
== רקע תאורטי ==
המבנה התאורטי עליו מתבססת הפרדיגמה הוא [[תחשיב למבדאלמדא]], בניגוד למודל [[מכונת טיורינג]] עליו מתבססת הפרדיגמה האימפרטיבית, הנפוצה יותר.
 
מודל [[מכונת טיורינג]] הוא מודל שבו יש "מכונה" מופשטת המבצעת אלגוריתם - רצף פקודות שינויי מצב; בהתאם לכך, שפות אימפרטיביות מבצעות אלגוריתם - פעולה לאחר פעולה. לעומת זאת, [[תחשיב למבדאלמדא]] עוסק בחישוב של פונקציות - בעיקר חישוב [[רקורסיה|רקורסיבי]]. הפרדיגמה הפונקציונלית רואה את הפעולה של תוכנית כ[[פונקציה]] מ[[קלט]] אל [[פלט]] - המחשב מקבל קלט מסוים, מבצע עליו חישוב ומוציא פלט. תוכנית פונקציונלית בנויה בהתאם, כרצף של הצהרות על פונקציות ומשתנים, שלאחריהם מתבצעת קריאה לפונקציה, הנעזרת בפונקציות אחרות, וכן הלאה, עד שבסופו של דבר מוחזר ערך כלשהו, והוא ערך הפלט - תוצאת החישוב (בהקשר זה פלט איננו הדפסה אל המסך, המדפסת, או כל רכיב חומרה אחר).
 
הוכח כי המודלים הללו שקולים, ולכן אין הבדל מבחינת כוח החישוב בין שפות התומכות בפרדיגמה הפונקציונלית לבין שפות אימפרטיביות טהורות (כגון שפת C). עם זאת, עשויים להיות הבדלים ניכרים בהיבט של נוחות ההבעה של חישובים מסוימים מול חישובים אחרים, קריאות, עקביות מתמטית, יעילות המימוש וכן הלאה.