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



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

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

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

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

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


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


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

https://youtu.be/nKIu9yen5nc


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

https://youtu.be/6_RFZr9mWvc


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

https://youtu.be/hyCqL_lLDOQ
Hello World
מה הרעיון ב"Hello World"?



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

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

כמובן שניתן לכתוב כתכנית ראשונה בלימוד תכנות כל ביטוי אחר, אבל כתיבת הביטוי "hello world" הפכה כבר מזמן למסורת בלימודי תכנות.

מסורת התכנית הראשונה עם הודעת בדיקה של "Hello World" נולדה כתןצאה מחיקוי של תכנית דוגמה, שהופיעה לראשונה בספרם של בריאן קרניגהאן ודניס ריצ'י "The C Programming Language".

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


הנה תוכנית "hello world" בשפת פייתון (עברית):

https://youtu.be/rmmRRg_IcgA


ובשפת סי שארפ C#(עברית):

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



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

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

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

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

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

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

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

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


להיכרות עם עולם התיכנות היכנסו לתגית "תכנות".


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

https://youtu.be/tSysNQFUf2g


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

https://youtu.be/CIRGjwYgdT4


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

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


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

https://youtu.be/MWuPuu2c1Y8?long=yes
קוד פתוח
מהי ההיסטוריה של הקוד הפתוח?



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



מתכנתים (Coders) או מפתחים (Developers) הם אנשים שיודעים לכתוב קוד תוכנה. קוד התוכנה הוא תכנית מחשב שמפעילה את המחשב ומבצעת משימות.

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

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

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


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

http://youtu.be/iAyfMSmxKoQ


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

https://youtu.be/HluANRwPyNo


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

https://youtu.be/S5S9LIT-hdc


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

http://youtu.be/QdVFvsCWXrA
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
ניפוי שגיאות באמצעות ברווז גומי
איך מנפים שגיאות באמצעות ברווז גומי?



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

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

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

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

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


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

https://youtu.be/SJC5DAfCrHY


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

https://youtu.be/huOPVqztPdc


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

https://youtu.be/m4_depGYVkM


רקורסיה
מהי רקורסיה?



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

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

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

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

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

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

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


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

http://youtu.be/ghZKKaZkzrE


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

http://youtu.be/P5EkdJRtF-4


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

https://youtu.be/B19qH3XFnxY?long=yes
מי חשב שבאג אלפיים יהיה אסון חסר-תקדים?



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

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

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

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


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

http://youtu.be/x6HyPJpzaHg


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

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



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

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

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


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

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

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


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

http://youtu.be/BMkOBNZHcIs
מה היתרון הגדול של שפת ג'אווה סקריפט?



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

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

במקור פיתח אותה מתכנת בשם ברנדן אייך (Brendan Eich), שכתב את השפה ופיתח את הגרסה הראשונה שלה כשפת תכנות ב-10 ימים בלבד. אייך, אגב, הוא מי שהקים את פרויקט מוזילה ולימים הפך גם למנכ"ל אחד הדפדפנים השווים - דפדפן הקוד הפתוח Brave. באותם ימים, אגב, היא נקראה LiveScript. בשנים שאחרי כן היא זכתה להמון שמות, ביניהם ECMAscript, Jscript ועוד.

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

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

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

לא פלא שרבים בתעשייה ממליצים למתחילים ללמוד תכנות להתחיל באחת משתי השפות - פייתון או ג'אווה סקריפט. בעוד פייתון מיועדת לשימושים מגוונים, רבים לומדים Javascript במטרה להפוך למפתחי front-end ו/או back-end.

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

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

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


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

https://youtu.be/w5dnqy-_MQM


קורס מלא של שפת ג'אווה סקריפט (עברית):

https://youtu.be/fplM3uWr_8Y


היכרות עם שפת ג'אווה סקריפט באנגלית:

https://youtu.be/c-I5S_zTwAc


וקורס באורך מלא של תכנות בשפת Javascript :

https://youtu.be/W6NZfCO5SIk?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/Tm0U2VxFd8Q


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

https://youtu.be/4IRLvYOZD8A


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

https://youtu.be/XwWyTts06tU


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

https://youtu.be/dZM45mfJQ40
מהו המחשב בתוך מקלדת?



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

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

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

אבל למחשב הזה יש מטרה נסתרת ודי טובה. כמו מחשבים ביתיים משנות ה-80, שאותם היא הזכירה, דוגמת BBC Micro או ZX Spectrum, גם Pi 400 נועדה לפתות ילדים ובני נוער לקנות מחשב שיגרום להם להתעניין בתכנות ועם השנים להפוך למתכנתים". או כמו שסיפר פעם מייסד רספברי פיי, אבן אפטון, לאתר The Verge - שבילדותו התפתה לקנות מחשב מיקרו של BBC ולפתע הוא גילה שהפך להיות מהנדס תוכנה...


הנה מקלדת ה-Pi 400 עם מחשב הרספברי פיי המובנה:

https://youtu.be/0E9qZNk9D_M


היכרות עם המקלדת שכוללת הכל:

https://youtu.be/OqpylxLhw98


בלוגרים מעולם הלינוקס מתפייטים:

https://youtu.be/rLsXTOHJUMs


הפרטים:

https://youtu.be/JTk0x3IXhjo


וההסבר:

https://youtu.be/xt-QVoZ682o


מהן שפות תכנות?



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

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

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

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

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

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

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

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

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

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


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

https://youtu.be/ur7o0dAUDTg


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

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
איזה מחשב נוצר להרכבה?



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



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

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

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

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

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

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

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

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

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


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

https://youtu.be/GbBI7LSijnM


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

https://youtu.be/Wchru8alhaE


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

https://youtu.be/aYjGXzktatA
מה תרמו תוכנת הייפרקארד ושפת הייפרטוק לעולם?
מיהו ממציא המחשב המודרני אלן טיורינג?
איך יכול נול אריגה לתרום לעולם המחשבים?
מהי שפת לוגו עם גרפיקת הצב?
מהו הקומפיילר שממיר שפה טבעית לקוד בינארי במחשב?


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

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

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

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

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

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

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