» «
לוגיקה
מה הקשר בין הפילוסופיה היוונית והמחשב של זמננו?



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

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

מקור המילה "לוגיקה" מהמילה היוונית "לוגוס", ביוונית סיבה, טיעון, או מחשבה.


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

http://youtu.be/Qq-fPLUycgE?t=26s
קורט גדל
מי המתמטיקאי שהראה את חוסר השלמות של המתמטיקה?



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

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


הנה סרטון קצר על תיאוריית חוסר השלמות של גדל:

http://youtu.be/xjT6x8yZvpY


וקורט גדל, מי שכונה הלוגיקן הגדול ביותר מאז אריסטו:

http://youtu.be/B2DY8WvSOLU?t=21s
פרדוקס
מה זה פרדוקס?



פרדוקס (Paradox) הוא טענה שסותרת את עצמה, אמת שכוללת סתירה.

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

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

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

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

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

המילה פרדוקס באה מיוונית: para = מעבר למשהו ו-doxa = אמונה, דעה. בפילוסופיה יש לא מעט פרדוקסים מפורסמים (כמה מהם ניתן למצוא באאוריקה בתגית "פרדוקסים").


הנה הסבר מושג הפרדוקס:

http://youtu.be/tye7vejSY7k
פרדוקס השקרן
מהו פרדוקס השקרן?



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

פרדוקס השקרן מציג משפט כמו "המשפט הזה הוא שקר". אבל האם המשפט הוא אכן שקר? - אם המשפט הוא שקר הרי שהמשפט אמת. אבל אם הוא אמת הרי שהוא שקר..

הסתירה הפנימית שבמשפט לא מאפשרת לנו לקבוע האם המשפט הוא אמת או שקר. זהו הפרדוקס של השקרן.


הנה דרך יצירתית להציג את הפרדוכס:

http://youtu.be/7t4z-CL9N7k


שקרן נחשף ב"מסע בין כוכבים":

http://youtu.be/wlMegqgGORY

לוגיקה

דדוקציה ואינדוקציה
מה הן אינדוקציה ודדוקציה?



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

דדוקציה (Deduction), המסיקה ממקרה אחד ואינדוקציה (Induction) - המסיקה מכל המקרים.


אבל מה פשר המושגים דדוקציה ואינדוקציה - הבה נסביר אותן:

#דדוקציה - אם א' וב' אז ג'
דדוקציה היא הסקת מסקנות שנובעת מכמה הנחות מוסכמות. אם הסכמת להנחה א' והסכמת להנחה ב' - משתיהן נובעת המסקנה ג'.

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

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


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

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

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


משמע, דדוקציה ואינדוקציה הם שתי צורות שונות להסקה של מסקנות. הראשון מתייחס להסקת מסקנות ממקרה אחד והשני - ללמידה מכל המקרים. אינדוקציה קל לזכור, כי מכל המקרים אנו נכנסים פנימה (כלומר In של האינדוקציה).


הנה הבלש הספרותי שרלוק הולמס - אלוף הדדוקציה (מתורגם):

https://youtu.be/I8992A5oAWM


ואינדוקציה ומשהו שלא תמיד פשוט בה (עברית):

https://youtu.be/d_kpVz9A9Jg
פרדוקס הסבא
מה מראה פרדוקס הסבא? ומה הקשר לרצח?



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

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

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


הנה פרדוקס הסבא:

http://youtu.be/Y6RjjaEy59I


“פרדוקס הרצח” הוא פרדוקס דומה שבו המדען הורג את עצמו ולכן לא יהיה מי שיהרוג אותו:

http://youtu.be/UJNhLDwj6kI


ומה היה קורה אם הייתם נוסעים בזמן כדי להרוג את היטלר התינוק?

https://youtu.be/hJn8iUe6rwY
פילוסופיה
מהי הפילוסופיה?



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

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

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

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

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

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


מהי הפילוסופיה:

https://youtu.be/zhnglxhzh7Y


למה כדאי ללמוד אותה (עברית):

https://youtu.be/8Bjt6FMTIkU


על החשיבה הביקורתית שהיא כה חשובה בפילוסופיה:

https://youtu.be/vNDYUlxNIAA


בחיוך על מובטל שרוצה לעבוד במקצוע הפילוסופי שלו (עברית):

https://youtu.be/H8zrBtK_V_E


וסרטון נהדר שמסביר מהי פילוסופיה (מתורגם):

https://youtu.be/1A_CAkYt3GY?long=yes
דילמת האסיר
מהי דילמת האסיר?



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

הנה הדוגמה:

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

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

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



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

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


הנה דילמת האסיר (מתורגם):

https://youtu.be/t9Lo2fgxWHw


דילמת האסיר מוסברת:

https://youtu.be/emyi4z-O0ls


ועם מעט חיוך, מה קורה כשנכנסים עם הדילמה של האסיר ל... שירותים (עברית):

https://youtu.be/G-jSgLRD_kg


הפרדוקסים של זנון
מהו פרדוקס הדיכוטומיה של זנון?



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

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

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


הנה הבעיה שהציב זנון ופתרון פרדוקס הדיכוטומיה (מתורגם):

http://youtu.be/EfqVnj-sgcc?t=14s
למה כדאי ללמוד תכנות?



תכנות (Programming) הוא כתיבת קוד לתוכנה, או למה שאנו מכנים "תוכנות". בתכנות בונה המתכנת את התוכנה. לתכנות משתמש המתכנת בשפות תוכנה שונות.

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

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

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

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


הנה מה שבתי הספר, וזה חמור - לא מלמדים ילדים (מתורגם):

https://youtu.be/nKIu9yen5nc


התכנות משנה את העולם (עברית):

https://youtu.be/6_RFZr9mWvc


הסברים לטוב שבתכנות (בעברית):

https://youtu.be/hyCqL_lLDOQ
מהי פונקציה בתכנות?



מכירים את זה שאתם עושים שוב ושוב, כל יום או כל כמה שעות את אותה פעולה וזה נראה לכם לא הגיוני?

גם מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם למשל משתמשים בלולאות (Loops). אבל יש מרכיב שחוסך עוד יותר עבודה וכתיבת קוד מיותר. כי מתכנתים אוהבים לשמור את הקוד שלהם DRY, קיצור של "don’t repeat yourself".

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


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

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

מדהים לא?

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

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

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


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


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

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


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

סוף טוב הכל טוב!

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


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

איך זה עובד?

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

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

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

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

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

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

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

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

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

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


הנה סרטון שמסביר את הפונקציה בפשטות:

https://youtu.be/3JIZ40yuZL0?end=2m40s


הפונקציה לתלמידי תכנות שפת פייתון (עברית):

https://youtu.be/o0wyYsNbJeY


והסבר הפונקציות ב-javascript (עברית):

https://youtu.be/c7mqY6QtdQQ
מהי רקורסיה?



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

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

רוצים דוגמה:
"אם הבנת מהי רקורסיה, חזור אל הדף ממנו הגעת. אם לא – קרא בדף זה מהי רקורסיה".

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

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

לרוב נותנים לרקורסיה כזו את הדוגמה של חישוב n-עצרת במתמטיקה (=מכפלת 1 כפול 2 כפול 3… עד כפול n).

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


הנה סרטון שמדגים איך רקורסיה עובדת כשעושים בעזרתה גרפיקה ממוחשבת:

http://youtu.be/ghZKKaZkzrE


כניסה פנימה לפרקטל - צורה גרפית שנקראת "משולש סירפינסקי" שנבנתה בפונקציה רקורסיבית:

http://youtu.be/P5EkdJRtF-4


והסבר למתכנתים (עברית):

https://youtu.be/B19qH3XFnxY?long=yes


אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

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

אלפי נושאים, תמונות וסרטונים, מפתיעים, מסקרנים וממוקדים.

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

בואו לגלות, לחקור, ולקבל השראה!

אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

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