» «
תיכנות
למה כדאי ללמוד תכנות?



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

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

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

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

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


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

https://youtu.be/nKIu9yen5nc


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

https://youtu.be/6_RFZr9mWvc


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

https://youtu.be/hyCqL_lLDOQ
תכנות
מה זה תיכנות?



אם שאלתם את עצמכם פעם מה זה תִּכְנוּת (Programming או Coding) הרי שאתם לא לבד.

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

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

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

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

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

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

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


הנה עולם התיכנות:

https://youtu.be/dU1xS07N-FA?long=yes


ובעולם הפיתוח לא מעט רואים הבדל בין מתכנת programmer למקודד, coder:

https://youtu.be/CIRGjwYgdT4
מתכנת
איך עובד המתכנת?



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

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

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


הנה מתכנתים בחברות סטרטאפ שעובדים ביחד (עברית):

http://youtu.be/iAyfMSmxKoQ


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

https://youtu.be/HluANRwPyNo


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

https://youtu.be/S5S9LIT-hdc


וכמה חשוב הוא קוד תוכנה:

http://youtu.be/QdVFvsCWXrA
קוד פתוח
מהי ההיסטוריה של הקוד הפתוח?



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

#פתיחות במקום היררכיה
כל מי שרוצה להשתתף בפיתוח מוזמן ובכיף.

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

#איכות תוצר גבוהה
שמושגת תודות לשיתוף מפתחים רבים.

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

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

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

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

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

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

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

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

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


הנה תולדות הקוד הפתוח (עברית):

https://youtu.be/akAcajhnKzM


יש גם אי-הבנות בנושא הקוד הפתוח (עברית):

https://youtu.be/zmgIvBcHVH0


המכונית הראשונה בקוד פתוח מוצגת ב-2007:

https://youtu.be/JD7LJ6wGkJg


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

http://youtu.be/ZDVC_pF9HaA


ופיתוח הביטקוין החופשי והשימושים שעושים בו (עברית):

https://youtu.be/g-k8lZ_eabY

תיכנות

קוד פתוח
מה זה קוד פתוח?



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

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

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

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

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

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

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


הנה הסבר של מושג הקוד הפתוח (עברית):

https://youtu.be/akAcajhnKzM


שיתוף הפעולה הגלובלי שמדגים את הקוד הפתוח:

https://youtu.be/yVpbFMhOAwE


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

https://youtu.be/Pj_tLugpz8g


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

https://youtu.be/zmgIvBcHVH0


הנה רובוט שפותח בקוד פתוח והודפס במדפסת תלת-מימד:

https://youtu.be/H4Z09edx52E


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

http://youtu.be/Oo-cIGVaOYE


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

https://youtu.be/EGd5DngPQnM
ניפוי שגיאות באמצעות ברווז גומי
איך מנפים שגיאות באמצעות ברווז גומי?



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

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

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

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

השיטה נקראת גם "מבחן ברווז הגומי" או "בִּירווּז", על משקל תכנות. היא יעילה ותורמת גם לתיעוד יעיל של התוכנה או המכשיר, לצורך כתיבת חוברת למשתמש או להוראתה. בדיקת שגיאות תוך היעזרות בברווז גומי מקבילה לבדיקה של הקוד על ידי עמיתים (שיטה שנקראת "Code Review") ולשיטה שבה מסביר המתכנת את הקוד למתכנת עמית (Software Walkthrough).


הנה סרטון על הבירווז - ניפוי השגיאות בעזרת ברווז גומי:

https://youtu.be/SJC5DAfCrHY


סיפור הניפוי של השגיאות באמצעות ברווז הגומי:

https://youtu.be/huOPVqztPdc


כך מנפים את השגיאות בעזרת ברווז גומי:

https://youtu.be/m4_depGYVkM
CodeMonkey (משחק תכנות)
מהן סביבות לימוד התכנות לילדים?



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

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

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

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


האתר קוד מונקי המיועד לגיל בית ספר יסודי, מכיתה ג' ומעלה:

https://youtu.be/fXcPjdNKJdY


ומדריך ילד שמלמד:

https://youtu.be/PZFqt3KCRdk


הנה סביבת לימוד התכנות עם האובייקטים סקרץ' (Scratch) שמתאימה גם לגיל הרך:

https://youtu.be/CCaBCMADwls


וסביבת הלימוד Tynker המתחרה בה ושולטת גם בחומרה ובשפת Java Script:

https://youtu.be/XIC9tY-zkXE
רקורסיה
מהי רקורסיה?



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

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

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

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

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

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

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


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

http://youtu.be/ghZKKaZkzrE


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

http://youtu.be/P5EkdJRtF-4


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

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


באג 2000
מי חשב שבאג אלפיים יהיה אסון חסר-תקדים?



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

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

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

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


הנה פרסומת שממחישה את החשש ממה שיקרה בגלל באג 2000:

http://youtu.be/x6HyPJpzaHg


ואנשים שלא נראה שחששו ממנו:

https://youtu.be/VvRcOD_RvYU
מהם מגדלי האנוי?



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

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

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


ישנם כללים להעברה:

א. בכל שלב תעבור רק דיסקית אחת מקום.

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


הנה דרך לפתרון של חידת מגדלי האנוי:

http://youtu.be/BMkOBNZHcIs
מהן שפות תכנות?



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

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

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

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

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

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

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

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

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

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


הכוח והיופי שבתכנות (מתורגם):

https://youtu.be/crw_U-UgvcY


על המצאת שפת התכנות:

https://youtu.be/Wchru8alhaE


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

https://youtu.be/7Baq_Xw4azM


שפות התכנות הפופולריות ב-50 שנה האחרונות ועד היום:

https://youtu.be/Og847HVwRSI


ההיסטוריה של שפות התכנות:

https://youtu.be/mhpslN-OD_o?long=yes


וקורס מלא לשפת פייתון הפופולרית, קלה ומצליחה מאוד (מתורגם):

https://youtu.be/rfscVS0vtbw?long=yes
מה למתכנתים ולביצי פסחא?



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

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

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

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

נסו דוגמה לאיסטר אג בגוגל תרגום:
הדביקו בגוגל טרנסלייט את הרצף הבא:
pv zk pv pv zk pv zk kz zk pv pv pv zk pv zk zk pzk pzk pvzkpkzvpvzk kkkkkk bsch
ואז בחרו תרגום מגרמנית לגרמנית ולחצו על אייקון הרמקול הקטן שישמיע את התוצאה.


הנה ביצי הפסחא הגדולות של משחקי המחשב:

https://youtu.be/sirz0TnTje4
מהו משולש סירפינסקי?



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

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


הנה משולש סרפינסקי שלא נגמר, להדגמת הרקורסיה הפשוטה:

http://youtu.be/QsMvoui5WlQ?t=10s


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

https://youtu.be/0C75vRVL5lE


סרטון בגרפיקת מחשב של "משולש סירפינסקי" שנבנה ברקורסיה בתלת-מימד:

http://youtu.be/P5EkdJRtF-4


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

http://youtu.be/z8ZWlUamNPI


וכך יוצרים פרקטלים כמו משולש סרפינסקי:

http://youtu.be/XwWyTts06tU?t=1m22s
מהו רספברי פיי המחשב האישי הזול בעולם?



אם היינו אומרים לכם שיש מחשב שעולה בסביבות 100 שקלים בלבד למחשב חדש, הייתם מאמינים?

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

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

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


הנה מחשב הרספברי פיי:

http://youtu.be/e0wkVVVLvR8


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

http://youtu.be/XBRkErt6VXU


מחשב להרכבה לילדים שמתבסס על רספברי (מתורגם):

http://youtu.be/n5VVNmVqF6Y


הנה מחשב זעיר למשחקי מחשב שפותח בעזרת הפיי:

http://youtu.be/5npkz0xY1fo
איפה יש פרקטלים בטבע?



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

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

אז אומרים לכם שכל כך הרבה פרקטלים יש בטבע ואפשר לראותם כמעט בכל מקום. אבל איפה זה בדיוק בכל מקום?

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

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

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

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


הנה הסבר הפרקטלים שבטבע:

https://youtu.be/tfETupNxwIo


שלל פרקטלים טבעיים:

https://youtu.be/4IRLvYOZD8A


עוד פרקטלים בטבע:

https://youtu.be/XwWyTts06tU


ואובייקטים טבעיים שהם פרקטלים:

https://youtu.be/dZM45mfJQ40
מה תרמה תוכנת הייפרקארד לעולם?



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

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

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

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

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

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

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


הנה תוכנת הייפרקארד:

https://youtu.be/tx_WCIAM4bA


Stack שפותח בהייפרקארד ומאפשר לשוטט בבית ולחפש אלמנטים:

https://youtu.be/f2ft1uovxaQ


אפילו את תוכנת ההקלטה של הייפרקרד כתבו בהייפרקרד:

https://youtu.be/nkBb-ZqyU18


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

https://youtu.be/roT9DhDPI9k


סרט תיעודי על הייפרקארד והמהפכה שעשתה:

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


וסרט ארוך על תוכנת הייפרכארד:

https://youtu.be/v9o5Ld8hpug?long=yes
מהי שפת מכונה, השפה הבינארית שהמחשב מבין?



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

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

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

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

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

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

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

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


הנה שפת המכונה וכיצד אנו מתקשרים איתה דרך שפות תכנות עיליות:

https://youtu.be/GbBI7LSijnM


על האישה שפיתחה את שפת התכנות הראשונה, שפת Cobol:

https://youtu.be/Wchru8alhaE


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

https://youtu.be/aYjGXzktatA


מהי גרפיקת הצב של שפת התכנות לוגו?


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

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

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

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

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

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


הנה שפת התכנות הלימודית לוגו:

https://youtu.be/g6kmVHfMQvY


ילדי שנות השמונים "פוקדים" על הצב בתכנית בשפת לוגו:

https://youtu.be/dDc3Uhl0qXw


כך כותבים תכניות פשוטות בשפת לוגו (עברית):

https://youtu.be/uzvFNDO2lPA


והרצאה על אמנות שיוצרים עם קוד, שיטת יצירה שהמרצה התאהב בה בעזרת שפת לוגו בשנות ה-80:

https://youtu.be/6avJHaC3C2U?long=yes
איזה מחשב נוצר להרכבה?



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

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

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


הנה מחשב ה-Kano לילדים (הפעילו תרגום):

http://youtu.be/n5VVNmVqF6Y


הנה הרכבת מחשב ה-Kano:

http://youtu.be/iNc6NRX2JG4


הנה אב שמעיד על השימוש במחשב הקאנו עם ילדיו:

http://youtu.be/C0-IbSEBNGU
מהם הרובוטים ואיך הם נכנסים לחיינו?



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

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

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

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

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


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

https://youtu.be/7KEtTKYR800


הדגמת טד מעולה ומתורגמת על הרובוטים ועל העתיד איתם (מתורגם):

https://youtu.be/FJJe8PXEUhk


הסבר באנגלית על הרובוטים:

http://youtu.be/8wHJjLMnikU?t=11s


ההיסטוריה של הרובוטים ותולדות הרובוטים:

https://youtu.be/2GxbXcPGhDg


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

https://youtu.be/7qUJRUA0wm0?t=17s


סרט תיעודי על עולם הרובוטיקה והעתיד עם רובוטים:

https://youtu.be/8VvYu1fWyxA?long=yes


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

https://youtu.be/RnmUb65B1ag?t=1m19s&end=13m07s?long=yes
מיהו ממציא המחשב המודרני אלן טיורינג?



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

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


הנה כתבת טלוויזיה על אלן טיורינג (עברית):

http://youtu.be/oW8EbAkfPcc


המחשב הראשון שפיתח טיורינג:

http://youtu.be/36Ykw1l_KWs


קדימון לסרט על אלן טיורינג (מתורגם):

https://youtu.be/xqW9PKxooUo


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

http://youtu.be/088kCjk1EvI?t=1m?long=yes
איך יכול נול אריגה לתרום לעולם המחשבים?
מהו טרנס-הומניזם?
מהו תכנות מונחה עצמים?
מהי השיטה הבינארית?
האם בעתיד נוכל לחיות לנצח?


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

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

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

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

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

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

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