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



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

בעידן המודרני סיפקה הלוגיקה, באמצעים שונים, את היסודות למדעי המחשב. הקשר שבין התחומים ניכר כבר ביכולת לבטא ולבצע פעולות לוגיות באמצעות שפה בינארית המבוססת על 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
דדוקציה ואינדוקציה
מה הן אינדוקציה ודדוקציה?



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

מצד אחד יש אִינְדּוּקְצִיָּה (Induction), המסיקה ממקרה אחד אל הכלל.

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

הדֵּדוּקְצְיָה (Deduction), לעומתה, מאפשרת הסקת מסקנה מכל המקרים אל המקרה הבודד, כלומר מהכלל אל הפרט, למקרה בודד.


הבה נדגים זאת...


#אִינְדּוּקְצִיָּה - אם משהו קרה תמיד, הוא יקרה שוב...
נניח שאני חוקר ובתצפיות שונות גיליתי שהשמש זרחה - גם היום, גם אתמול וגם לפני שבוע ושבועיים. מאוסף המקרים הפרטיים הללו אוכל להסיק שהשמש תמיד תזרח. גם מחר ומחרתיים.

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

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

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

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

איך זוכרים אינדוקציה? - אפשר לזכור זאת כ-in out, מהפנים החוצה - מהמקרה הבודד לכלל.


אז מה פשר המושג ההפוך או לפחות השונה דֵּדוּקְצְיָה? - הבה נסביר אותו:

#דדוקציה - אם תמיד אז...
דֵּדוּקְצְיָה היא הסקת מסקנות מן הכלל אל הפרט. משתמשים בה בהנחות יסוד ועקרונות כלליים על מנת לגזור מהם מסקנות פרטיות.

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

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

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

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


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

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

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

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


#סיכום
דֵּדוּקְצְיָה ואִינְדּוּקְצִיָּה הן שתי צורות שונות להסקת מסקנות. האינדוקציה מתייחסת ללמידה ממקרים בודדים על הכלל או למציאת חוקיות, שתשפיע על ההתנהגות או המחשבות שלנו. הדדוקציה מתייחסת להסקת מסקנות מחוקיות מסוימת לגבי המקרה הבודד.

אינדוקציה מאוד קל לזכור, כי מהמקרים הבודדים אנו יוצאים לכלל (כלומר, מתחילים מה-in שבתחילת האינדוקציה, אל ה-out של הכלל).

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


הנה האינדוקציה לעומת הדדוקציה:

https://youtu.be/iRcNQkWNWNk


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

https://youtu.be/I8992A5oAWM


והבעיה הקטנה בזה שהאינדוקציה מבוססת על הניסיון שלנו ולא על חוקיות מלאה (עברית):

https://youtu.be/d_kpVz9A9Jg

לוגיקה

פרדוקס השקרן
מהו פרדוקס השקרן?



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

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

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


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

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


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

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



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

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

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


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

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
הפרדוקסים של זנון
מהו פרדוקס הדיכוטומיה של זנון?



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

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

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


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

http://youtu.be/EfqVnj-sgcc?t=14s


דילמת האסיר
מהי דילמת האסיר?



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

הנה הדוגמה:

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

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

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



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

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


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

https://youtu.be/t9Lo2fgxWHw


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

https://youtu.be/emyi4z-O0ls


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

https://youtu.be/G-jSgLRD_kg
למה כדאי ללמוד תכנות?



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

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

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

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

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


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


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

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


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

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

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

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

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

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

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